From 665e15ee407ea3d08c80344fa1da2bad34e78650 Mon Sep 17 00:00:00 2001 From: Artturin Date: Sat, 24 Dec 2022 17:33:06 +0200 Subject: [PATCH] splice.nix: add convenience functions --- pkgs/top-level/splice.nix | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) 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; };