4 ms·
I tend to agree. I am comfortable with writing functional programs, but I have tried and failed multiple times to grok the Nix documentation. The complexity is
by puzzledobserver 3y ago
I tend to agree.
I am comfortable with writing functional programs, but I have tried and failed multiple times to grok the Nix documentation. The complexity is not because "functional programming is hard", but because the documentation is terrible.
To get me started with Nix, the documentation needs just a few things:
1. Internal consistency: A large fraction of the documentation is spent talking about how great flakes are, with a (last time I checked) big disclaimer at the top saying that flakes are experimental. Another fraction of the documentation talks about how great declarative installations are, while the third happily uses nix-env which, on the surface, seems no different from [apt / dnf] install.
2. How to use the package manager, for dummies. The last time I tried to install NixOS, I tried to install Z3 and its Java bindings, but got completely lost with the "also install the Java bindings" part. I'd rather just spin up a Docker container with my favorite distribution, and put my trusty magic installations there.
3. How to use Nix the language, for dummies. For people wanting to understand the system better than the dummies from part 2. I remember some magic ellipsis, and remaining confused about what they're about.
4. Really what Nix the language is about, for non-dummies.
The documentation currently conflates the last three points, and is internally inconsistent. It is also not clear where users can turn to for help. And then, I install Silverblue on my machine, and for the most part it is rock solid and easy-to-use. Sure, there are some installation commands that I need to run at the beginning of time, but I can put those in a script, and there's my nearly declarative install.
- eternityforest 3y agoA big problem (With everything, not just Mix) is nested config files. Documentation says "Use this snippet" or "Add this to your configuration", but doesn't say where to add it. Sometimes you have to paste the snipped three levels of nesting deep, and the docs assume you already know the language and cns figure it out yourself. Meaning you can't use it without investing the time to learn it. But I don't wanna put too much time into it if nobody else is using it and it's not gonna be a common boring standard corporate choice that Just Works, because I'm not really a tinkerer distro person. I think Python has it right with Flat is Better Than Nested. If you need nested anything, I'd rather things be redesigned to be more high level. Failing that... more complete config examples, not just snippets, would be nice.