diff --git a/lib/customisation.nix b/lib/customisation.nix index 37a7951896b0e..ae507807b4d9e 100644 --- a/lib/customisation.nix +++ b/lib/customisation.nix @@ -231,6 +231,7 @@ rec { } // keep self; self = f self // { newScope = scope: newScope (spliced // scope); + makeScopeWithSplicing = makeScopeWithSplicing splicePackages self.newScope; callPackage = newScope spliced; # == self.newScope {}; # N.B. the other stages of the package set spliced in are *not* # overridden. diff --git a/pkgs/development/interpreters/python/default.nix b/pkgs/development/interpreters/python/default.nix index 2f350738238e4..e8043325c2f0d 100644 --- a/pkgs/development/interpreters/python/default.nix +++ b/pkgs/development/interpreters/python/default.nix @@ -69,9 +69,7 @@ with pkgs; recursivePthLoader ; }; - in lib.makeScopeWithSplicing - pkgs.splicePackages - pkgs.newScope + in pkgs.makeScopeWithSplicing otherSplices keep (lib.extends overrides pythonPackagesFun)) diff --git a/pkgs/top-level/splice.nix b/pkgs/top-level/splice.nix index a093442d3698c..fb3c5d5317057 100644 --- a/pkgs/top-level/splice.nix +++ b/pkgs/top-level/splice.nix @@ -131,6 +131,17 @@ in newScope = extra: lib.callPackageWith (splicedPackagesWithXorg // extra); + makeScopeWithSplicing = lib.makeScopeWithSplicing splicePackages pkgs.newScope; + + topProjectedSpliced = attr: { + selfBuildBuild = pkgs.pkgsBuildBuild.${attr}; + selfBuildHost = pkgs.pkgsBuildHost.${attr}; + selfBuildTarget = pkgs.pkgsBuildTarget.${attr}; + selfHostHost = pkgs.pkgsHostHost.${attr}; + selfHostTarget = pkgs.pkgsHostTarget.${attr}; + selfTargetTarget = pkgs.pkgsTargetTarget.${attr} or {}; + }; + # Haskell package sets need this because they reimplement their own # `newScope`. __splicedPackages = splicedPackages // { recurseForDerivations = false; };