about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2018-07-07 14:28:42 -0400
committerJohn Ericson <John.Ericson@Obsidian.Systems>2018-07-09 16:39:37 -0400
commitf27f491784cd19abca6494ae28306deeea17c613 (patch)
treef96d57d9313f310035681c0f1e2e6e0e581586e1
parent0eb142cd46e8a46eb61fe41e1b916ffe0ec3e0ba (diff)
downloadnixlib-f27f491784cd19abca6494ae28306deeea17c613.tar
nixlib-f27f491784cd19abca6494ae28306deeea17c613.tar.gz
nixlib-f27f491784cd19abca6494ae28306deeea17c613.tar.bz2
nixlib-f27f491784cd19abca6494ae28306deeea17c613.tar.lz
nixlib-f27f491784cd19abca6494ae28306deeea17c613.tar.xz
nixlib-f27f491784cd19abca6494ae28306deeea17c613.tar.zst
nixlib-f27f491784cd19abca6494ae28306deeea17c613.zip
Haskell infra: Do callPackage splicing
-rw-r--r--pkgs/development/haskell-modules/make-package-set.nix17
-rw-r--r--pkgs/top-level/splice.nix4
2 files changed, 19 insertions, 2 deletions
diff --git a/pkgs/development/haskell-modules/make-package-set.nix b/pkgs/development/haskell-modules/make-package-set.nix
index a54967c4e45e..87ac65307aab 100644
--- a/pkgs/development/haskell-modules/make-package-set.nix
+++ b/pkgs/development/haskell-modules/make-package-set.nix
@@ -97,7 +97,20 @@ let
       };
     in stdenv.lib.makeOverridable drvScope (auto // manualArgs);
 
-  mkScope = scope: pkgs // pkgs.xorg // pkgs.gnome2 // { inherit stdenv; } // scope;
+  mkScope = scope: let
+      ps = pkgs.__splicedPackages;
+      scopeSpliced = pkgs.splicePackages {
+        pkgsBuildBuild = scope.buildHaskellPackages.buildHaskellPackages;
+        pkgsBuildHost = scope.buildHaskellPackages;
+        pkgsBuildTarget = {};
+        pkgsHostHost = {};
+        pkgsHostTarget = scope;
+        pkgsTargetTarget = {};
+      } // {
+        # Don't splice these
+        inherit (scope) ghc buildHaskellPackages;
+      };
+    in ps // ps.xorg // ps.gnome2 // { inherit stdenv; } // scopeSpliced;
   defaultScope = mkScope self;
   callPackage = drv: args: callPackageWithScope defaultScope drv args;
 
@@ -150,7 +163,7 @@ let
 
 in package-set { inherit pkgs stdenv callPackage; } self // {
 
-    inherit mkDerivation callPackage haskellSrc2nix hackage2nix;
+    inherit mkDerivation callPackage haskellSrc2nix hackage2nix buildHaskellPackages;
 
     inherit (haskellLib) packageSourceOverrides;
 
diff --git a/pkgs/top-level/splice.nix b/pkgs/top-level/splice.nix
index 9f5acd0a7de7..a9dd6c3ec0df 100644
--- a/pkgs/top-level/splice.nix
+++ b/pkgs/top-level/splice.nix
@@ -131,4 +131,8 @@ in
   callPackages = lib.callPackagesWith splicedPackages;
 
   newScope = extra: lib.callPackageWith (splicedPackages // extra);
+
+  # Haskell package sets need this because they reimplement their own
+  # `newScope`.
+  __splicedPackages = splicedPackages // { recurseForDerivations = false; };
 }