callHackage: Keep deriver, like callCabal2nix
This commit is contained in:
parent
275cd49731
commit
155dfe385e
@ -136,13 +136,26 @@ let
|
|||||||
src = "${component}/${name}.cabal";
|
src = "${component}/${name}.cabal";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Adds a nix file as an input to the haskell derivation it
|
||||||
|
# produces. This is useful for callHackage / callCabal2nix to
|
||||||
|
# prevent the generated default.nix from being garbage collected
|
||||||
|
# (requiring it to be frequently rebuilt), which can be an
|
||||||
|
# annoyance.
|
||||||
|
callPackageKeepDeriver = src: args:
|
||||||
|
overrideCabal (self.callPackage src args) (orig: {
|
||||||
|
preConfigure = ''
|
||||||
|
# Generated from ${src}
|
||||||
|
${orig.preConfigure or ""}
|
||||||
|
'';
|
||||||
|
});
|
||||||
|
|
||||||
in package-set { inherit pkgs stdenv callPackage; } self // {
|
in package-set { inherit pkgs stdenv callPackage; } self // {
|
||||||
|
|
||||||
inherit mkDerivation callPackage haskellSrc2nix hackage2nix;
|
inherit mkDerivation callPackage haskellSrc2nix hackage2nix;
|
||||||
|
|
||||||
inherit (haskellLib) packageSourceOverrides;
|
inherit (haskellLib) packageSourceOverrides;
|
||||||
|
|
||||||
callHackage = name: version: self.callPackage (self.hackage2nix name version);
|
callHackage = name: version: callPackageKeepDeriver (self.hackage2nix name version);
|
||||||
|
|
||||||
# Creates a Haskell package from a source package by calling cabal2nix on the source.
|
# Creates a Haskell package from a source package by calling cabal2nix on the source.
|
||||||
callCabal2nix = name: src: args: let
|
callCabal2nix = name: src: args: let
|
||||||
@ -155,10 +168,8 @@ in package-set { inherit pkgs stdenv callPackage; } self // {
|
|||||||
then pkgs.lib.cleanSourceWith { inherit src filter; }
|
then pkgs.lib.cleanSourceWith { inherit src filter; }
|
||||||
else src;
|
else src;
|
||||||
};
|
};
|
||||||
in overrideCabal (self.callPackage expr args) (orig: {
|
in overrideCabal (callPackageKeepDeriver expr args) (orig: {
|
||||||
inherit src;
|
inherit src;
|
||||||
preConfigure =
|
|
||||||
"# Generated from ${expr}\n${orig.preConfigure or ""}";
|
|
||||||
});
|
});
|
||||||
|
|
||||||
# : { root : Path
|
# : { root : Path
|
||||||
|
Loading…
Reference in New Issue
Block a user