callHackage: make 'all-cabal-hashes' repository overridable
This commit changes callHackage to use a deterministic version of the Hackage checkout from https://github.com/commercialhaskell/all-cabal-hashes by default. This means that packages uploaded to Hackage after today will be available to callHackage only after "pkgs/data/misc/hackage/default.nix" has been updated. People who want the previous behavior where we always had the latest version of Hackage available -- at the cost of frequent downloads from Github --, can add the following override to their "~/.nixpkgs/config.nix" file: { packageOverrides = super: { all-cabal-hashes = builtins.fetchTarball "https://github.com/commercialhaskell/all-cabal-hashes/archive/hackage.tar.gz"; }; }
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
{ pkgs, stdenv, ghc
|
||||
{ pkgs, stdenv, ghc, all-cabal-hashes
|
||||
, compilerConfig ? (self: super: {})
|
||||
, packageSetConfig ? (self: super: {})
|
||||
, overrides ? (self: super: {})
|
||||
@@ -6,14 +6,6 @@
|
||||
|
||||
let
|
||||
|
||||
allCabalFiles = stdenv.mkDerivation {
|
||||
name = "all-cabal-hashes-0";
|
||||
buildCommand = ''
|
||||
mkdir -p $out
|
||||
tar -C $out --strip-components=1 -x -f ${builtins.fetchurl "https://github.com/commercialhaskell/all-cabal-hashes/archive/hackage.tar.gz"}
|
||||
'';
|
||||
};
|
||||
|
||||
inherit (stdenv.lib) fix' extends;
|
||||
|
||||
haskellPackages = self:
|
||||
@@ -69,8 +61,8 @@ let
|
||||
installPhase = ''
|
||||
export HOME="$TMP"
|
||||
mkdir $out
|
||||
hash=$(sed -e 's/.*"SHA256":"//' -e 's/".*$//' ${allCabalFiles}/${name}/${version}/${name}.json)
|
||||
cabal2nix --compiler=${self.ghc.name} --system=${stdenv.system} --sha256=$hash ${allCabalFiles}/${name}/${version}/${name}.cabal >$out/default.nix
|
||||
hash=$(sed -e 's/.*"SHA256":"//' -e 's/".*$//' ${all-cabal-hashes}/${name}/${version}/${name}.json)
|
||||
cabal2nix --compiler=${self.ghc.name} --system=${stdenv.system} --sha256=$hash ${all-cabal-hashes}/${name}/${version}/${name}.cabal >$out/default.nix
|
||||
'';
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user