Ok, so executing
nix-channel --add https://github.com/NixOS/nixpkgs/archive/hash-of-the-commit-to-pin.tar.gz nixos
(sudo nix-channel, if you save your channels as root), as buried in this reply Pinning nixpkgs in configuration.nix? · Issue #62832 · NixOS/nixpkgs · GitHub finally did the trick for me.
I would prefer not to have to pin the channel in this way, since I would like new nix-shell derivations to start out on the newest unstable
, even if the system itself has to lag behind a bit.
Essentially, I would prefer for the system itself to be more like a nix-shell environment. Usually tracking unstable
, but pinnable to a commit if something is broken, then updated if new features are wanted and the original reason for pinning is resolved.