diff options
author | John Ericson <John.Ericson@Obsidian.Systems> | 2018-07-07 14:28:42 -0400 |
---|---|---|
committer | John Ericson <John.Ericson@Obsidian.Systems> | 2018-07-09 16:39:37 -0400 |
commit | f27f491784cd19abca6494ae28306deeea17c613 (patch) | |
tree | f96d57d9313f310035681c0f1e2e6e0e581586e1 | |
parent | 0eb142cd46e8a46eb61fe41e1b916ffe0ec3e0ba (diff) | |
download | nixlib-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.nix | 17 | ||||
-rw-r--r-- | pkgs/top-level/splice.nix | 4 |
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; }; } |