about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/top-level/splice.nix18
1 files changed, 18 insertions, 0 deletions
diff --git a/pkgs/top-level/splice.nix b/pkgs/top-level/splice.nix
index 4c85c7567c3e..ce536aa1fd2f 100644
--- a/pkgs/top-level/splice.nix
+++ b/pkgs/top-level/splice.nix
@@ -146,6 +146,24 @@ in
 
   newScope = extra: lib.callPackageWith (splicedPackagesWithXorg // extra);
 
+  # prefill 2 fields of the function for convenience
+  makeScopeWithSplicing = lib.makeScopeWithSplicing splicePackages pkgs.newScope;
+
+  # generate 'otherSplices' for 'makeScopeWithSplicing'
+  generateSplicesForMkScope = attr:
+    let
+      split = X: lib.splitString "." "${X}.${attr}";
+    in
+    {
+      # nulls should never be reached
+      selfBuildBuild = lib.attrByPath (split "pkgsBuildBuild") null pkgs;
+      selfBuildHost = lib.attrByPath (split "pkgsBuildHost") null pkgs;
+      selfBuildTarget = lib.attrByPath (split "pkgsBuildTarget") null pkgs;
+      selfHostHost = lib.attrByPath (split "pkgsHostHost") null pkgs;
+      selfHostTarget = lib.attrByPath (split "pkgsHostTarget") null pkgs;
+      selfTargetTarget = lib.attrByPath (split "pkgsTargetTarget") { } pkgs;
+    };
+
   # Haskell package sets need this because they reimplement their own
   # `newScope`.
   __splicedPackages = splicedPackages // { recurseForDerivations = false; };