• Laser@feddit.org
    link
    fedilink
    arrow-up
    0
    ·
    1 month ago

    NixOS “is boring and iust works” until you want to do something fancy a module author didn’t anticipate and suddenly you find yourself defining functions that use genAttrs on some lists imported from JSON files

    • renzev@lemmy.world
      link
      fedilink
      English
      arrow-up
      0
      ·
      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@feddit.org
        link
        fedilink
        arrow-up
        0
        ·
        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
          0
          ·
          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