summary refs log tree commit diff
path: root/pkgs/development/haskell-modules/make-package-set.nix
diff options
context:
space:
mode:
authorShea Levy <shea@shealevy.com>2018-03-02 09:37:02 -0500
committerShea Levy <shea@shealevy.com>2018-03-02 09:37:02 -0500
commit62a1abe20465a2fd1da08cfea3cdeedcf1913ebb (patch)
tree4b9fdab296eee6bb8a92bb717f926f7217762bb1 /pkgs/development/haskell-modules/make-package-set.nix
parent336eb53f727820e5081a48715f040d8db4e3c367 (diff)
downloadnixlib-62a1abe20465a2fd1da08cfea3cdeedcf1913ebb.tar
nixlib-62a1abe20465a2fd1da08cfea3cdeedcf1913ebb.tar.gz
nixlib-62a1abe20465a2fd1da08cfea3cdeedcf1913ebb.tar.bz2
nixlib-62a1abe20465a2fd1da08cfea3cdeedcf1913ebb.tar.lz
nixlib-62a1abe20465a2fd1da08cfea3cdeedcf1913ebb.tar.xz
nixlib-62a1abe20465a2fd1da08cfea3cdeedcf1913ebb.tar.zst
nixlib-62a1abe20465a2fd1da08cfea3cdeedcf1913ebb.zip
haskellPackages.callCabal2nix: Depend on the expression.
This ensures that as long as the package derivation is alive, its nix
expressions do not need to be regenerated.

Fixes #36190.
Diffstat (limited to 'pkgs/development/haskell-modules/make-package-set.nix')
-rw-r--r--pkgs/development/haskell-modules/make-package-set.nix24
1 files changed, 14 insertions, 10 deletions
diff --git a/pkgs/development/haskell-modules/make-package-set.nix b/pkgs/development/haskell-modules/make-package-set.nix
index 458c4eae136d..2a96c66dced5 100644
--- a/pkgs/development/haskell-modules/make-package-set.nix
+++ b/pkgs/development/haskell-modules/make-package-set.nix
@@ -145,17 +145,21 @@ in package-set { inherit pkgs stdenv callPackage; } self // {
     callHackage = name: version: self.callPackage (self.hackage2nix name version);
 
     # Creates a Haskell package from a source package by calling cabal2nix on the source.
-    callCabal2nix = name: src: args:
-      overrideCabal (self.callPackage (haskellSrc2nix {
+    callCabal2nix = name: src: args: let
+      filter = path: type:
+                 pkgs.lib.hasSuffix "${name}.cabal" path ||
+                 baseNameOf path == "package.yaml";
+      expr = haskellSrc2nix {
         inherit name;
-        src =
-          let filter = path: type:
-                pkgs.lib.hasSuffix "${name}.cabal" path ||
-                baseNameOf path == "package.yaml";
-          in if pkgs.lib.canCleanSource src
-               then pkgs.lib.cleanSourceWith { inherit src filter; }
-             else src;
-      }) args) (_: { inherit src; });
+        src = if pkgs.lib.canCleanSource src
+                then pkgs.lib.cleanSourceWith { inherit src filter; }
+              else src;
+      };
+    in overrideCabal (self.callPackage expr args) (orig: {
+         inherit src;
+         preConfigure =
+           "# Generated from ${expr}\n${orig.preConfigure or ""}";
+       });
 
     # : { root : Path
     #   , source-overrides : Defaulted (Either Path VersionNumber)