TL;DR: Two of the most nicest, most technically proficient people you know just got burnt out from contributing to their operating system and this is just another example of NixOS being poorly maintained.
A year since I divested from NixOS and nothing really has changed. The "flakes" design is still a garbage abstraction invented by a neo-nazi to sell to Peter Thiel and Co. The Nix language has not evolved in any meaningful way (nixpkgs is still the load bearing peg).
Nixpkgs has reached over 1 million commits and is pushing what Git can scale to and is now entirely dependent on a Microsoft GitHub enterprise subscription and a Amazon AWS S3 credits for petabytes of CI/CD.
The community still contains active MIC fascists in leadership roles alongside :vote
Europeans. empoc perspectives are treated as community fracturing.
The nix derivations abstractions has not truly caught on (due to it not even being better than containers resource wise) and flakes only makes this worse with unversioned commit hashes serving as "determinism" and "reproducibility" which have become buzzwords at this point.
I only expect this to get worse and worse as Determinate Systems (MIC ghoul company) takes over and nixpkgs collapses as an independent entity.
BTW they haven't decided on a AI/LLM policy because the steering committee and the nixpkgs core team can't agree or communicate on anything, which basically means NixOS is going to be a AI hype train project if you enjoy that.
Permutations is putting it lightly, flakes have enabled a world where two lockfiles have two different nixpkgs hashes that differ only from a security patch to something like openssl or something else low in the chain which causes a world rebuild. So if you incorporate both of those flakes then you essentially have two duplicate sets of all packages. There is no semantic versioning to flakes and each flake is essentially a snapshot of a rolling release version of 50MB+ tarball of NixOS that gets unpacked to even more).
This can be circumvented by pinning your own package base, but then you're relying on the hope that it builds with your package set and/or they have binaries available. NixOS stable existed to allow packagers to have a stable base but iirc most of time people just pinned to rolling release.
Flakes is such a bad abstraction that killed NixOS for me as now people are distributing their stuff in flakes and the shit shoveling is not going away unless you buy a proprietary version of Nix from Determinate Systems (incredibly frustrating how they aren't perma banned besides being the most obvious chuds/rug-pullers).
Being worse cruft than containers is truly an accomplishment.
Also the buildscript for bootstrapping Java in NixOS is to... download a pre-built Temurin Java to build Java. I'm not even joking.
Guix handles this by implementing a "graft" procedure that manually remaps package store paths to patched software rather than rebuilding the package again. It's "impure" but it was developed in an environment where maintainers do not have fuck you money to spend on AWS/GitHub.
NixOS leadership will never find two stones to figure out how to do this and that's just the saddest thing
just curious about this, I've only looked at nix a little bit. isn't the constant rebuilding+data duplication a problem on the local machine? why petabytes of CI/CD? what are they doing with it?
Because not only do they keep a copy of the most recent versions but also many snapshots of versions before that.
Traditional distributions deliver software via software mirrors. So updates replace the existing software in-place and so is no longer accessible (this is why "apt update" and "apt upgrade" are semantically different). Sometimes archives are kept, sometimes not.
And given that NixOS uses strictly hermetic packaging, a change in a dependent package triggers a rebuild. Traditional distributions use dynamic linking to avoid recompilation but NixOS essentially statically links all software (compiled or not) via store path.
With the genuinely fascist flakes tooling (it was invented by a neo-nazi for big tech): now users and packagers can be expected to differ by commit basis which means literally nothing can be predicted by NixOS and so the NixOS cache service keeps many, many copies of packages so as to not mess anyone up.
NixOS almost went bankrupt from their cache service (which had a bill in the tens of thousands) and is utterly reliant on a AWS sponsorship.