Void on laptop, alpine on homeserver. Yep, checks out.
Love how the indian guy sitting meme perfectly sums up how I feel about alpine, nixos, and freebsd, even though those are completely different projects with different directions and goals. "It's boring and it just works".
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
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.
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.
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