this post was submitted on 02 May 2024
13 points (100.0% liked)

Nix / NixOS

1777 readers
1 users here now

Main links

Videos

founded 1 year ago
MODERATORS
 

Yes I know that there are workarounds for them to set to use the flake inputs but still.. I have set nixpkgs version to 23.11 stable release and that's good, but if I try to use nix shell, nix profile or even nix-env, they all seem to use the latest master/unstable branch to install the packages by default.

Just want to know why aren't they just default to use whatever is defined in flake.nix file? will it be implemented to use it by default in the near future?

Reason as to why I am asking -> This is what I am using to match nix shell and flake inputs, but as you can see they are just workarounds, plus seem to cause more errors and whatnot, plus by ideology one shouldn't need to specially define it to use some version when everything is already defined.

top 5 comments
sorted by: hot top controversial new old
[–] [email protected] 5 points 6 months ago* (last edited 6 months ago) (1 children)

It's possible (and I think advisable) to set your flake nixos config to set the system flake registry to point to the same nixpkgs revision that your flake uses. The nixos-starter-configs standard template has two lines that do this:

# Opinionated: make flake registry and nix path match flake inputs
registry = lib.mapAttrs (_: flake: {inherit flake;}) flakeInputs;
nixPath = lib.mapAttrsToList (n: _: "${n}=flake:${n}") flakeInputs;

That actually adds all of your flake inputs to the system flake registry. So for example if in addition to your nixpkgs input you also have an input you named nixpkgs-unstable then can also reference that with stuff like nix shell. For example:

nix shell nixpkgs#hello nixpkgs-unstable#cowsay
[–] [email protected] 1 points 6 months ago

Yeah that's what I am using currently but I was told that by default it follows whatever nixpkgs version is in flake.nix and doing the registry thing is an extra step to make it more systematic. For now I will keep using that.

[–] [email protected] 1 points 6 months ago* (last edited 6 months ago) (1 children)

You want to look at the registry. Run nix registry list. You'll see that nixpkgs by default points to unstable. You override this in your config. I've done that, where nixpkgs is stable and "unstable" is unstable.

EDIT: heres part of my home manager config that changes this: https://github.com/rutrum/dots/blob/master/users/modules/cli/nix.nix#L15

[–] [email protected] 1 points 6 months ago

Yeah mine also shows global flake:nixpkgs github:NixOS/nixpkgs/nixpkgs-unstable instead of what I have defined in flake.nix i.e 23.11

[–] [email protected] 1 points 6 months ago

Its solved, see the mentioned link.