除了失败
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
处提供正确的快照。
当然,可以将 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
。)