Saya mengajukan pertanyaan ini di saluran IRC, tetapi saya pikir saya akan mendokumentasikannya di sini untuk referensi saya sendiri dan orang lain.
Saya memiliki file shell.nix yang membutuhkan waktu lama untuk dibuat, khususnya sepertinya sedang membangun HUnit paket.
File shell.nix saya terlihat seperti:
{
sources ? import ./nix/sources.nix
, compiler ? "ghc865" } :
let
niv = import sources.nixpkgs {
overlays = [
(_ : _ : { niv = import sources.niv {}; })
] ;
config = {};
};
pkgs = niv.pkgs;
myHaskellPackages = pkgs.haskell.packages.${compiler}.override {
};
in
myHaskellPackages.callCabal2nix "moscoviumorange" (./.) {}
Dan sumbernya disematkan ke (dengan niv):
{
"niv": {
"branch": "master",
"description": "Easy dependency management for Nix projects",
"homepage": "https://github.com/nmattia/niv",
"owner": "nmattia",
"repo": "niv",
"rev": "88d6f20882b0422470acbcbf2d1b5f07e1d436f0",
"sha256": "0wkvz4drnglmmdrz8q1i1yr2fqizpf96k1wq2rlhd8l8x1522izq",
"type": "tarball",
"url": "https://github.com/nmattia/niv/archive/88d6f20882b0422470acbcbf2d1b5f07e1d436f0.tar.gz",
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
},
"nixpkgs": {
"branch": "nixos-19.03",
"description": "A read-only mirror of NixOS/nixpkgs tracking the released channels. Send issues and PRs to",
"homepage": "https://github.com/NixOS/nixpkgs",
"owner": "NixOS",
"repo": "nixpkgs-channels",
"rev": "775fb69ed73e7cf6b7d3dd9853a60f40e8efc340",
"sha256": "1w068b0ydw4c26mcjiwlzdfqcdk3rrwmfx4hxzgfhfwcz2nmh3if",
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs-channels/archive/775fb69ed73e7cf6b7d3dd9853a60f40e8efc340.tar.gz",
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
}
}
Mengapa nix membangun sekumpulan paket, padahal saya menganggap paket tersebut seharusnya ada di cache biner nixpkg?
Misalnya output dari nix-shell meliputi:
building '/nix/store/7011izw8f2xyvhqadrhnmapddyz61f29-HUnit-1.6.0.0.drv'...
Jawaban yang Diterima:
Kami dapat mencari paket HUnit di Hydra (untuk 19,03):
https://hydra.nixos.org/eval/1552169?filter=HUnit&compare=1551557&full=#tabs-still-fail
Sesuai dengan HUnit di atas dibangun dan akan berada di cache biner.
Kami menentukan jalur penyimpanan dari derivasi yang sedang dibangun dengan:
nix-store --query --binding out /nix/store/7011izw8f2xyvhqadrhnmapddyz61f29-HUnit-1.6.0.0.drv
/nix/store/ryr2qdms3n0qbj8d3l9pvs7ajz4dzav4-HUnit-1.6.0.0
Kita bisa bandingkan di bawah ini dengan hydra:https://hydra.nixos.org/build/103222205#tabs-details
curl https://cache.nixos.org/ryr2qdms3n0qbj8d3l9pvs7ajz4dzav4.narinfo
404
404 berarti jalur tersebut TIDAK ada dalam cache biner.
Jawabannya ternyata saya merujuk ke ghc menjadi ghc865 sementara hydra mungkin sedang membangun dengan ghc864 secara default (untuk 19,03).
Jawaban di atas berasal dari clever di #nixos Saluran IRC, terima kasih!