What it used to be:
1. The rigidness of it all, which after a while is the main point ofc. Takes getting used to, but awesomeness for servers
2. The highly specialized filesystem layout requires some tinkering when trying to “just get things to work” that is not already packaged/wrapped for nixos
3. The language is… special. An acquired taste perhaps.
4. Flakes, home-manager, experimental flags galore.
LLM’s makes short work of it all, and having a devenv.sh setup of all your projects is :chefs-kiss:
My machines are essentially solid-state devices, and it all just becomes extremely predictable and stable.
Coming from fp background, I find Nix language very sensible. Especially for something like hermetic packaging.
The primitives for packaging in nix feel exactly like what they should be. When you look at a definition, the things that piece of code could do in principle (and things you could do with it as a consumer) tend to cleanly match it's semantic purpose and its responsibilities. So a lot of things are self-documenting.