Why isn't Nix the 'standard' package manager?

My point is, Nix is perfectly cross-platform and reproducible. You can use it anywhere with absolute certainty that it works on everybody’s machine. Why then, is it not even considered in >90% of use cases? When you see most Unix-like OS tutorials on a certain tool, instead of

Append this into environment.systemPackages to install foo, bar and baz:


or perhaps even

Enter this command into your terminal to temporarily use foo, bar and baz:

nix shell nixpkgs#foo nixpkgs#bar nixpkgs#baz

it is something more like this

Enter this command into your terminal to install foo, bar and baz:

[dnf, apt, zypper, npm, pip, homebrew, etc] install foo bar baz

You don’t even have to understand the concepts of functional programming to install with Nix:

nix profile install nixpkgs#foo nixpkgs#bar nixpkgs#baz

So then, does anybody have an idea on why Nix isn’t the standard package manager?

  1. Nix is still not universally known. You might not even know it exists.
  2. It is conceptually different from most other package managers so learning it requires more effort. For example, you cannot just install libraries globally and expect them to work, see I installed a library but my compiler is not finding it. Why?
  3. Other package managers might just be good enough to not warrant even researching something new and weird like Nix.
  4. Or the benefits of Nix might not be that important to you.
  5. Users are familiar with installing dependencies through their package manager. You might not want to add extra friction for them to use your project.

Also documentation and installation are an order of magnitude worse than say homebrew.

Some of this is improving rapidly thankfully but if you don’t see the glaring holes, I don’t know what to say.

Also a sizable group of Nix people would argue that nix profile install is “bad” which… I mean if people inside the project can’t even get this story straight, then what do you expect new people to do?


I know that nix profile install is bad, it’s just that I would say it is more like a ‘transition’ tool, to get people into the Nix workflow while adjusting to functional concepts.