Really good ciriticsms, I agree with them all. One mitigating aspect of documentation is that Nix configuration is code so you can search on GitHub and hopefully find an example of whatever you want to achieve.
I disagree a bit with the last one. Nix has some escape hatches, like FHS user environments.
The major pain point is documentation. The post is totally right about that. Nix is trying to address it with a documentation team funded by some sponsors:
I think Nix should try to document the basics much better. IMHO, the basic use cases are simple to learn. Arguably, it’s one of the easiest distros to use if you have very basic needs. And it’s very forgiving. However. it’s getting a reputation for exactly the opposite.
In this regard, there is https://snowflakeos.org, built on top of Nix, which is quite interesting.
Flakes being experimental is a huge problem for the entire nix/nixpkgs ecosystem, including documentation. Official docs will likely avoid flakes as much as possible, but they are a huge improvement in many areas and reduce some of the major pain points users run in to (eg channels). Flakes have problems, but solving the most important ones and stabilizing the schema should be the top priority of nix.
Aside: I hope we get a meta code search tool. I don’t want to rely on GitHub as the only search but the only other search engines aren’t so great at searching just code repositories. Here’s to hoping this was one of SearchHut’s goals.
I use https://search.nixos.org/ frequently - but this doesn’t help if I don’t already have some idea of what an option does, or if the option is doing something I don’t expect based on its name or documentation (which isn’t always clear anyway), or if I’m trying to use the nix command line tools to do something, or trying to import or create a custom module because the standard nixos-provided modules don’t solve my problem.
About the authors last point: With the recently released 1.4 Guix got an escape hatch into FHS-land:
Another guix shell innovation is optional emulation of the filesystem hierarchy standard (FHS). The FHS specifies locations for different file categories—/bin for essential command binaries, /lib for libraries, and so on. Guix with its store does not adhere to the FHS, which prevents users from running programs that assume FHS adherence. The new –emulate-fhs (or -F) flag of guix shell, combined with –container (-C), instructs it to create a container environment that follows the FHS.
Really good ciriticsms, I agree with them all. One mitigating aspect of documentation is that Nix configuration is code so you can search on GitHub and hopefully find an example of whatever you want to achieve.
I disagree a bit with the last one. Nix has some escape hatches, like FHS user environments.
The major pain point is documentation. The post is totally right about that. Nix is trying to address it with a documentation team funded by some sponsors:
https://discourse.nixos.org/t/documentation-team-flattening-the-learning-curve
I think Nix should try to document the basics much better. IMHO, the basic use cases are simple to learn. Arguably, it’s one of the easiest distros to use if you have very basic needs. And it’s very forgiving. However. it’s getting a reputation for exactly the opposite.
In this regard, there is https://snowflakeos.org, built on top of Nix, which is quite interesting.
afaik the funding by Tweag has ended and there is no replacement. A team still seems to be meeting though, recorded here https://discourse.nixos.org/c/dev/documentation/25
Flakes being experimental is a huge problem for the entire nix/nixpkgs ecosystem, including documentation. Official docs will likely avoid flakes as much as possible, but they are a huge improvement in many areas and reduce some of the major pain points users run in to (eg channels). Flakes have problems, but solving the most important ones and stabilizing the schema should be the top priority of nix.
According to [0], funding is now provided by https://determinate.systems
https://github.com/NixOS/nix.dev/tree/master/maintainers#funding
Aside: I hope we get a meta code search tool. I don’t want to rely on GitHub as the only search but the only other search engines aren’t so great at searching just code repositories. Here’s to hoping this was one of SearchHut’s goals.
The author’s “must search GitHub repo” argument reads like https://search.nixos.org isn’t as know as it should be.
That tells you something about available options and packages, but close to nothing about “how a service or an option works” [highlight by me]
I use https://search.nixos.org/ frequently - but this doesn’t help if I don’t already have some idea of what an option does, or if the option is doing something I don’t expect based on its name or documentation (which isn’t always clear anyway), or if I’m trying to use the
nix
command line tools to do something, or trying to import or create a custom module because the standard nixos-provided modules don’t solve my problem.About the authors last point: With the recently released 1.4 Guix got an escape hatch into FHS-land:
https://guix.gnu.org/en/blog/2022/gnu-guix-1.4.0-released/
NixOS had pkgs.buildFHSUserEnv for at least a few years. Not sure if the author is aware of it.
The article mentions it!
Oh sorry, I must have missed that while skimming.
Great article in gernal, thanks!