There are three ways for NixOS users to install packages.
Let’s take Hyprland for example:
-
Official “Stable” channel 24.11: Hyprland v45.2: Only fresh on November 30, 2024 on launch day of NixOS v24.11. As time goes by, as Hyprland issues more updates, the Hyprland package in the repo will continue to age until the next stable channel is released in May 2025. For NixOS v24.05, by the end of that channel’s release cycle in November 2024, the Hyprland package was 10+ major (not just point) releases behind. This will not do.
-
Official “Unstable” channel rolling release: Hyprland v46.2 While it may not be updated in real time, the 2 volunteer package maintainers will publish a package within a 1-2 week delay. The Hyprland upstream release sometimes takes a short while to be distributed downstream to the unstable nixpkg repo. I could live with this.
-
Flakes: The day Hyprland devs tag a release, a NixOS user can invoke a build from source with a properly scripted Flake to begin using the latest changes in real time.
Flakes are the fastest. Unstable channel updates come in with varying degrees of delays. It would depend on how on the ball the package maintainers are. Stable channels only get package updates twice a year (once in May, again in November) included as part of the NixOS release cadence development cycle. Waiting a few weeks for the unstable channel to populate with updates is reasonable for me but the stable channel just doesn’t cut it.
The warnings surrounding the possibility of Home Manager messing up a system with no rollback support is a bit disconcerting as someone starting out with Nix and NixOS like myself. I’d like to use Hyprland as close to upstream as possible without risking borking my system (at least until I learn more about the nix scripting language and am more confident with handling Flakes and using home-manager).
What is holding me back from changing my channel from stable
to unstable
is the extensive list of other packages I have installed. I don’t want to be running nightly development builds of alpha quality software. Preview releases are full of bugs for developers to experiment with. If unstable
means “nightly alpha quality builds” then I am stuck with the “stable” nixpkg channel that just gets outdated too quickly, or almost instantly in the case of Hyprland.
Is that a fair assessment? What would you people think or suggest?
And what does unstable
actually mean? How likely would it actually be to encounter breaking changes in packages published to the unstable channel?