如何将 git 修订版注入 Nix 推导中?

问题描述 投票:0回答:1

有一些库,例如 gitrev,它允许将 git 修订版本编译为可执行文件,但在使用

nix-build http://../master
的情况下,源树中会丢失 git 元数据。

在这种情况下如何引用派生修订版以至少将其包含在 shellHook 中?

git nix
1个回答
0
投票

您可以使用

self.rev
将当前 Nix flake 的 git 版本注入到推导中。

flake.nix

{
  inputs.nixpkgs.url = "github:NixOS/nixpkgs";
  outputs = { self, nixpkgs }:
    let
      system = "x86_64-linux";
      pkgs = nixpkgs.legacyPackages.${system};
    in
    {
      devShells.${system}.default = pkgs.mkShell {
        shellHook = ''
          echo "Nix flake revision is ${self.rev or self.dirtyRev or "dirty"}"
          echo "nixpkgs revision is ${nixpkgs.rev}"
        '';
      };
    };
  nixConfig.bash-prompt-suffix = "[devshell] ";
}
$ git init
$ git add flake.nix
$ git commit -m initial
$ nix develop
Nix flake revision is 32074a3b6583d7677f3aeb3679f75c190ab62c78
nixpkgs revision is bd1cde45c77891214131cbbea5b1203e485a9d51

也可以使用其他薄片输入的修订版。从 Nix v2.17 开始,还提供了

dirtyRev
dirtyShortRev
(因此您可以删除
or "dirty"
部分),以防 git 工作目录处于修改状态。


截至 2023 年,Nix flake 已成为开发、构建和打包软件项目的事实标准。

© www.soinside.com 2019 - 2024. All rights reserved.