Ich habe diese Frage im IRC-Kanal gestellt, dachte aber, ich dokumentiere sie hier für mich und andere als Referenz.
Ich habe eine Shell.nix-Datei, deren Erstellung sehr lange dauert, insbesondere scheint sie eine HUnit
zu erstellen Paket.
Meine Shell.nix-Datei sieht so aus:
{
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" (./.) {}
Und die Quelle ist angeheftet an (mit 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"
}
}
Warum baut nix einen Haufen Pakete, wenn ich annehme, dass sie im Binär-Cache von nixpkg sein sollten?
Zum Beispiel enthält die Ausgabe von nix-shell:
building '/nix/store/7011izw8f2xyvhqadrhnmapddyz61f29-HUnit-1.6.0.0.drv'...
Akzeptierte Antwort:
Wir können in Hydra (für 19.03) nach dem HUnit-Paket suchen:
https://hydra.nixos.org/eval/1552169?filter=HUnit&compare=1551557&full=#tabs-still-fail
Gemäß obigem HUnit
gebaut und würde sich im Binärcache befinden.
Wir ermitteln den Speicherpfad der zu erstellenden Ableitung mit:
nix-store --query --binding out /nix/store/7011izw8f2xyvhqadrhnmapddyz61f29-HUnit-1.6.0.0.drv
/nix/store/ryr2qdms3n0qbj8d3l9pvs7ajz4dzav4-HUnit-1.6.0.0
Wir können das Folgende mit Hydra vergleichen:https://hydra.nixos.org/build/103222205#tabs-details
curl https://cache.nixos.org/ryr2qdms3n0qbj8d3l9pvs7ajz4dzav4.narinfo
404
404 bedeutet, dass der Pfad NICHT im Binärcache ist.
Die Antwort stellte sich heraus, dass ich mich auf ghc
bezog um ghc865
zu sein während Hydra wahrscheinlich mit ghc864
baut standardmäßig (für 19.03).
Die obigen Antworten stammen ursprünglich von clever
im #nixos
IRC-Kanal, danke!