3

I'd like to figure out the commit and date that a channel references.

For example how can determine that for the nixos2009 channel below?

sudo nix-channel --list nixos https://nixos.org/channels/nixos-20.09 nixos-2003 https://nixos.org/channels/nixos-20.03 nixos2003 https://nixos.org/channels/nixos-20.03 nixos2009 https://nixos.org/channels/nixos-20.09 unstable https://nixos.org/channels/nixpkgs-unstable 

I can see ls /nix/var/nix/profiles/per-user/root/channels-*/manifest.nix shows us the channel generations.. Which the latest channel generation has the following content:

cat /nix/var/nix/profiles/per-user/root/channels-61-link/manifest.nix | nixfmt [ { meta = { }; name = "nixos-20.09.2538.0cfd08f4881"; out = { outPath = "/nix/store/7s917s7ipvq3zmbx5g3kssldwc029r8r-nixos-20.09.2538.0cfd08f4881"; }; outPath = "/nix/store/7s917s7ipvq3zmbx5g3kssldwc029r8r-nixos-20.09.2538.0cfd08f4881"; outputs = [ "out" ]; system = "x86_64-linux"; type = "derivation"; } { meta = { }; name = "nixos-2003-20.03.3324.929768261a3"; out = { outPath = "/nix/store/zajz4gpq506g68w47pnl11k8mhz06jz0-nixos-2003-20.03.3324.929768261a3"; }; 

Potentially I can get it from the store path above like /nix/store/zajz4gpq506g68w47pnl11k8mhz06jz0-nixos-2003-20.03.3324.929768261a3 - but I'm not sure (and not sure what that "path" is called either).

Seems like an answer for this is documented here: https://discourse.nixos.org/t/how-to-see-what-commit-is-my-channel-on/4818/6?u=chrissound though that is not a programmatic way (which is what I'm looking for).

4 Answers 4

1

You can use nixos-version. Mine gives 20.03pre194293.2436c27541b (Markhor) where the last part is the commit hash. Not sure if it also works on stable, but it should.

1

For an arbitrary channel I do it this way (replace nixpkgs with your favorite channel):

$ nix-instantiate --eval -E '(import <nixpkgs> {}).lib.version' "22.11pre405560.2da64a81275" 

Note that the git commit is the last number 2da….

1
1
  1. That manifest might be a nice way.

  2. Another (also in the linked forum) is

    readlink /nix/var/nix/profiles/per-user/root/channels-1-link 
  3. And also, perhaps the easiest one:

    cat /nix/var/nix/profiles/per-user/root/channels/*/svn-revision 

    On newer versions of nix, the full git commit sha will also be in:

    /nix/var/nix/profiles/per-user/root/channels/*/.git-revision 
0

For your 'user' nix channels:

channelName="nixos2311" cat /nix/var/nix/profiles/per-user/$USER/channels/$channelName/.git-revision 

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.