如何确定 Nixos 引用了哪个提交通道?

如何确定 Nixos 引用了哪个提交通道?

我想找出频道引用的提交和日期。

例如,如何确定nixos2009下面的频道?

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

我可以看到ls /nix/var/nix/profiles/per-user/root/channels-*/manifest.nix向我们展示了频道世代。最新的频道世代有以下内容:

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";
    };

我可能可以从上面的存储路径中获取它,例如/nix/store/zajz4gpq506g68w47pnl11k8mhz06jz0-nixos-2003-20.03.3324.929768261a3- 但我不确定(也不确定该“路径”叫什么)。

似乎这里记录了这个问题的答案:https://discourse.nixos.org/t/how-to-see-what-c​​ommit-is-my-channel-on/4818/6?u=chrissound尽管这不是一种编程方式(这正是我正在寻找的方式)。

答案1

您可以使用 nixos 版本。我的给出 20.03pre194293.2436c27541b (Markhor),其中最后一部分是提交哈希。不确定它是否也可以在稳定版上运行,但应该可以。

答案2

对于任意频道,我这样做(替换nixpkgs为您最喜欢的频道):

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

请注意,git 提交是最后一个数字2da…

答案3

  1. 该清单可能是一个好方法。

  2. 另一个(也在链接的论坛中)是

    readlink /nix/var/nix/profiles/per-user/root/channels-1-link
    
  3. 而且,也许是最简单的一个:

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

    在较新版本的 nix 上,完整的 git commit sha 也将位于:

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

相关内容