主动为 Git 修订生成 Nix 哈希值

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

除了失败

nix-build
并在构建日志中查找预期的哈希值之外,在填写
hash
参数(以及其他类似的“Git forge”获取器)之前主动计算
fetchFromGitHub
的最佳方法是什么)?

fetchFromGitHub {
  owner = "OWNER";
  repo = "REPO";
  rev = "REVISION";
  hash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; # ← ?
};

假设我们已经拥有包含相同

REVISION
的存储库的可信克隆,并且我们不希望信任 Git 伪造者在
https://gitforge.example/OWNER/REPO/archive/REVISION.tar.gz
处提供正确的快照。

nix nixpkgs
1个回答
0
投票

当然,可以将 Git 修订版的内容转储到文件系统上,并让标准 Nix 实用程序计算它的哈希值:

tmpdir=$(mktemp -d)
git -C /path/to/trusted-clone.git archive REVISION | tar -C "$tmpdir" -x
nix-hash --sri --type sha256 "$tmpdir"
rm -rf "$tmpdir"

(如果启用了实验功能

nix hash path "$tmpdir"
,请替换
nix-command
。)

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