• renzev@lemmy.world
    link
    fedilink
    English
    arrow-up
    2
    ·
    1 month ago

    This (and systemd bugs) is the main reason I moved away from nixos on my homeserver. Nowadays if I want declarative configuration, I just cram everything into docker containers and write a huge docker-compose.yml for everything that I want to run. Would still recommend nixos for things that don’t require a lot of tweaking. Like if I had to set up a simple website for a small business or something. I love how you can set up SSL certificates for nginx with autorenewal just by switching it on in configuration.nix.

    • Laser
      link
      fedilink
      arrow-up
      3
      ·
      1 month ago

      I haven’t encountered systemd bugs in NixOS yet. Doesn’t mean they don’t exist - but I can’t confirm the issue.

      I run everything on NixOS nowadays and I do think that all of this makes sense, whether the implementation is the best I can’t judge.

      Just wanted to make sure my statement wasn’t a criticism on NixOS, the maintainers do a great job. It’s rather taking a jab at the “boring” statement.

      Nowadays if I want declarative configuration, I just cram everything into docker containers and write a huge docker-compose.yml for everything that I want to run.

      Docker compose is imperative though ;) (if that actually matters is up for debate) - fun fact nix allows you to build containers very easily.

      I love how you can set up SSL certificates for nginx with autorenewal just by switching it on in configuration.nix.

      How well this all goes together is really one of the strongest points of nix and NixOS. Though just for manageability, I personally wouldn’t put this into configuration.nix, but rather into a file dedicated to the respective service.

      • renzev@lemmy.world
        link
        fedilink
        English
        arrow-up
        1
        ·
        1 month ago

        Maybe I’m confused, but from what I understand, “declarative” means you tell the computer what you want the final thing to look like, and “imperative” means you tell the computer what steps to take. So Dockerfile would be imperative because it’s a set of commands that are executed in-order to create the image. Meanwhile docker-compose.yml is declarative because you say which containers are used with what options and how they’re interconnected. IDK tho, as far as I understand the definitions aren’t that rigid

        • Laser
          link
          fedilink
          arrow-up
          2
          ·
          1 month ago

          No you’re right, I mixed it up I guess.