Although it provides its own solution to the Linux packaging problem, it's a single solution that comes with a whole load of baggage with it. It is not the panacea its proponents wants us to believe it is.
Although it provides its own solution to the Linux packaging problem, it's a single solution that comes with a whole load of baggage with it. It is not the panacea its proponents wants us to believe it is.
The fundamental idea is this: Every package is built in a "hermetic" environment that guarantees that the only inputs are the ones you have explicitly specified. Those inputs include tools, source files, compilers, build instructions etc., all specified by a hash. Those inputs themselves can then be packages build in this way, such that everything in your system forms a big Merkle tree.
This approach enables a number of excellent things - you get excellent build reproducibility, you can cache any step you want etc. A lot of the concerns you get with a more conventional system just go away.
People have objections to Nix(OS) - the language, the sporadic documentation, some of the design decisions made, the learning curve etc. But I think those (very reasonable) objections obscure the more interesting debate about the underlying approach and value.
Similar to how Git has a notorious CLI; but that doesn't invalidate the idea of DVCS (with alternative implementations in Mercurial, Bazaar, Darcs, etc.)
Because a) They're not the only ones working towards it, but they like to paint it that way and b) Their implementation is not the only correct way, and again they like to paint it that way.
The main people behind it may not feel like that, but the hype creates a very repulsive aura around the project for some of us. I just don't want to touch NixOS just because of the community and hype around it.
There are many ways to achieve this reproducibility, and the old school ways are not very behind when compared to NixOS. Some things are achieved differently, but it's perfectly achievable with Debian and RedHat packaging infrastructures.
All kidding aside, I installed NixOS (it installs like any other distro, it's just that after that you are completely lost), but it's a real paradigm shift.
I'm just hoping for Ubuntu Declarative Donkey at this point and hope someone addresses the learning curve and the specialist language and tools used. I'd hate to invest all this time and then all other distros finally respond and it was not really worth it after all. I mean it looks to me like one can just put a Yaml file at the heart of Ubuntu and make that work. At least as step 1. Why is there no response from the classic Linux vendors? There are atomic distro's yes (ie Fedora Silverblue), but no real NixOS-like product. I want my personal system to live in Git.
Maybe I should just use NixOS.
[0] https://www.jupiterbroadcasting.com/
[1] https://www.jupiterbroadcasting.com/show/linux-unplugged/
I think NixOS tends to be mentioned more often than others because it provides a lot of clean solutions to common problems. Especially when some people claim these common problems are unsolvable, but NixOS does offer some sort of solution (that of course comes with it's own set of tradeoffs, every solution does).
If someone says "It's impossible to run a popular website with client-side analytics" and you frequently hang out on popular websites without client-side analytics, wouldn't you share those examples to show that the person might not know about those and could further their understanding?
Package managers before nix simply didn’t solve the problem properly - they left behind garbage, couldn’t properly deal with multiple versions of the same package, etc. Easy way to check whether the package manager you have in mind is “sufficient” is to install the gnome group and the plasma group and remove them. How many orphan packages will you have as a result?
It is not a cult, people just like proper solutions to problems, and nix is unique in this regard.
* Works on all (most) distros * Builds the packages from sources, binaries are only a cache to speed things up. * Bonus: already has a lot of software packaged
And proprietary works in the system too, the build step can just download the binary from internet. It's not a preferred way to do it, but you don't have to build a broken system just because of few packages without source access
More seriously, people who run NixOS are, generally and historically, people who have a lot of experience with package management and people who choose their Linux distro based on the tooling rather than based on defaults.
The Nix approach is conservative in some wonderful ways that are likely to appeal to longtime Linux users who appreciate the strengths of old-school system package managers as well as the defect of those systems, which makes Nix people want to cry out in response to container-based package management:
> You don't have to go that far! You can have all these benefits but keep fine-grained library sharing! The choice between static and dynamic linking is a false dichotomy!
because if you love what's great about traditional package management, that's really exciting.
Rather than being a cult in itself, there's a crowd of very vocal fanboys similar to the RIIR stike force. Pestering people with "why don't you use $thing" is not good advocacy.
nix-env -iA nixpkgs.zoom-us
or if you prefer, nix profile install nixpkgs#zoom-us
That said, the Zoom package in Nixpkgs is (IIRC) actually extracted from the upstream Snap distribution of Zoom, and the Flatpak version of Zoom is actually the one I last used on NixOS. :)(For proprietary software like Zoom, I think Flatpak might be preferable even to many Nix users like me.)
"the nix ecosystem is like a cult. Not because it tries to be, but because the ideas are so good you cannot deny them."
/s
I think it kinda is, but in a good way.
It's the church of reproducible builds, which is a good cause.