Switching from 24.11 to unstable declaratively (without channels)

Erm, read that message again. Also maybe read this thread, and the comment in your configuration.nix that you hopefully didn’t just blindly delete: Using hashes for `stateVersion` instead of human-readable strings

You cannot, this is an inherent flaw in the design of channels.

If you want to have a fully declarative NixOS configuration, you need to stop using channels and either use flakes or niv.

Using flakes can be helpful since it also enforces pure evaluation, which means that you cannot accidentally depend on something without realizing it’s impure (e.g. importing from something included via <>, or a builtins.readFile outside your flake or such), but they’re experimental and come with a bunch of baggage. niv is fully usable today, but you still need to know what you’re doing to avoid having reproducibility holes in your configuration.

1 Like