summary refs log tree commit diff
path: root/pkgs/development/haskell-modules
diff options
context:
space:
mode:
authorPeter Simons <simons@cryp.to>2018-03-26 12:07:50 +0200
committerGitHub <noreply@github.com>2018-03-26 12:07:50 +0200
commit695897f799a236fbe11bebd9498eb12461b91ee4 (patch)
tree6f1fb3743f02b8452c3d9704e8976176c8e70f14 /pkgs/development/haskell-modules
parent83f5012c581e9811e7b1979aaab651bca1581788 (diff)
parent155dfe385eca240c31fd4deaa9e92fd77aa31225 (diff)
downloadnixlib-695897f799a236fbe11bebd9498eb12461b91ee4.tar
nixlib-695897f799a236fbe11bebd9498eb12461b91ee4.tar.gz
nixlib-695897f799a236fbe11bebd9498eb12461b91ee4.tar.bz2
nixlib-695897f799a236fbe11bebd9498eb12461b91ee4.tar.lz
nixlib-695897f799a236fbe11bebd9498eb12461b91ee4.tar.xz
nixlib-695897f799a236fbe11bebd9498eb12461b91ee4.tar.zst
nixlib-695897f799a236fbe11bebd9498eb12461b91ee4.zip
Merge pull request #37754 from ElvishJerricco/call-hackage-keep-deriver
callHackage: Keep deriver, like callCabal2nix
Diffstat (limited to 'pkgs/development/haskell-modules')
-rw-r--r--pkgs/development/haskell-modules/make-package-set.nix19
1 files changed, 15 insertions, 4 deletions
diff --git a/pkgs/development/haskell-modules/make-package-set.nix b/pkgs/development/haskell-modules/make-package-set.nix
index 9912d1bcde28..bde4f85f6784 100644
--- a/pkgs/development/haskell-modules/make-package-set.nix
+++ b/pkgs/development/haskell-modules/make-package-set.nix
@@ -136,13 +136,26 @@ let
     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 // {
 
     inherit mkDerivation callPackage haskellSrc2nix hackage2nix;
 
     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.
     callCabal2nix = name: src: args: let
@@ -155,10 +168,8 @@ in package-set { inherit pkgs stdenv callPackage; } self // {
                 then pkgs.lib.cleanSourceWith { inherit src filter; }
               else src;
       };
-    in overrideCabal (self.callPackage expr args) (orig: {
+    in overrideCabal (callPackageKeepDeriver expr args) (orig: {
          inherit src;
-         preConfigure =
-           "# Generated from ${expr}\n${orig.preConfigure or ""}";
        });
 
     # : { root : Path