Fiz esta pergunta no canal IRC, mas pensei em documentá-la aqui para minha própria referência, bem como para outras pessoas.
Eu tenho um arquivo shell.nix que está demorando muito para construir, em particular, parece estar construindo um HUnit
pacote.
Meu arquivo shell.nix se parece com:
{
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" (./.) {}
E a fonte está fixada em (com 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"
}
}
Por que o nix está construindo um monte de pacotes, quando eu suponho que eles deveriam estar no cache binário do nixpkg?
Por exemplo, a saída do nix-shell inclui:
building '/nix/store/7011izw8f2xyvhqadrhnmapddyz61f29-HUnit-1.6.0.0.drv'...
Podemos procurar o pacote HUnit no Hydra (para 19.03):
https://hydra.nixos.org/eval/1552169?filter=HUnit&compare=1551557&full=#tabs-still-fail
De acordo com o acima
HUnit
é construído e seria no cache binário.Determinamos o caminho de armazenamento da derivação que estava sendo construída com:
Podemos comparar o abaixo com hidra: https://hydra.nixos.org/build/103222205#tabs-details
404 significa que o caminho NÃO está no cache binário.
A resposta acabou sendo que eu estava referenciando enquanto
ghc
oghc865
hydra provavelmente está construindoghc864
por padrão (para 19.03).As respostas acima foram originalmente do
clever
canal#nixos
IRC, obrigado!