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!