Lix is an independent variant of the Nix package manager, developed by a team of open-source volunteers, and maintained by and for a passionate community of users.
it can’t be overstated how important the Nix evaluator is to the Nix ecosystem; it implements the Nix language and package manager, maintains the store, has a hand in the low-level workings of every Nix tool, and is the focus of the push by Eelco and friends to commercialize Nix and keep it appealing to military-industrial interests.
all of the above is why I joined the Aux CLI SIG, which focuses on maintaining a fork of the Nix evaluator for the Aux ecosystem. but just now I saw the announcement for Lix, a Nix evaluator fork that focuses on modernizing the codebase (including gradually replacing C++ with Rust), maintaining correctness (something the upstream evaluator has been notoriously struggling with lately), and doing right by its community. I found myself nodding along to their description of the project and feeling something I haven’t felt since I read the open letter — I’m finally feeling excited for the future of the technology behind Nix.
I have no idea if Lix will become Aux’s chosen evaluator fork, though the Aux CLI SIG can help determine that collectively (and I’ll have many more details on Aux in a post later tonight). here’s what’s truly exciting though: by following Lix’s install steps and pulling auxpkgs-unstable, we can have a package ecosystem and NixOS fork that’s completely independent of the Nix community, and we can have it right now. I’m so excited by that news that I’m going to spin up a host just to give Lix+auxpkgs a try later tonight.
here’s the Aux thread about Lix; so far, there’s a lot of high-level support and excitement for using it as Aux’s evaluator.
I honestly think the big win coming out of the most recent events is framing https://github.com/nixos/nix as "CppNix". There are lots of good explanations about how each of the pieces relates to one another, but for practical purposes, many of those pieces live in one place, and now we can all call that place CppNix, which sounds...less than ideal! I think it's the thing that will make clear just how dependent the whole enterprise is on that piece, and just how tightly that piece is controlled, even if other people on the CppNix team think that something like a fork is overkill and that things are better, because they can only be so good when CppNix is the default for a bunch of things it shouldn't be. Some of those other team members have been working to make that less true, and I think that's great, but I think a lot of recent documentation improvements have managed to hide the tight coupling, even if it wasn't intentional, and this makes it absolutely clear.