summary refs log tree commit diff
diff options
context:
space:
mode:
authorAdam Joseph <adam@westernsemico.com>2023-07-27 20:56:11 -0700
committerAdam Joseph <adam@westernsemico.com>2023-07-27 21:31:59 -0700
commitcb13669b0049e795c3421987fe9367d82a0525b1 (patch)
treec20f063dd6da0e2c8d48187e5be29604c9fb926c
parent35abc090402873ed73b2df539472d5a9648850fa (diff)
downloadnixpkgs-cb13669b0049e795c3421987fe9367d82a0525b1.tar
nixpkgs-cb13669b0049e795c3421987fe9367d82a0525b1.tar.gz
nixpkgs-cb13669b0049e795c3421987fe9367d82a0525b1.tar.bz2
nixpkgs-cb13669b0049e795c3421987fe9367d82a0525b1.tar.lz
nixpkgs-cb13669b0049e795c3421987fe9367d82a0525b1.tar.xz
nixpkgs-cb13669b0049e795c3421987fe9367d82a0525b1.tar.zst
nixpkgs-cb13669b0049e795c3421987fe9367d82a0525b1.zip
lib.customisation: uncurry makeScopeWithSplicing
Deeply-curried functions are pretty error-prone in untyped languages
like Nix.  This is a particularly bad case because
`top-level/splice.nix` *also* declares a makeScopeWithSplicing, but
it takes *two fewer arguments*.

Let's switch to attrset-passing form, to provide some minimal level
of sanity-checking.
-rw-r--r--lib/customisation.nix14
-rw-r--r--pkgs/desktops/xfce/default.nix12
-rw-r--r--pkgs/development/interpreters/lua-5/default.nix9
-rw-r--r--pkgs/development/interpreters/perl/default.nix9
-rw-r--r--pkgs/development/interpreters/python/passthrufun.nix10
-rw-r--r--pkgs/development/libraries/qt-5/5.15/default.nix7
-rw-r--r--pkgs/games/steam/default.nix6
-rw-r--r--pkgs/os-specific/bsd/freebsd/default.nix13
-rw-r--r--pkgs/os-specific/bsd/netbsd/default.nix13
-rw-r--r--pkgs/top-level/all-packages.nix10
-rw-r--r--pkgs/top-level/darwin-packages.nix9
-rw-r--r--pkgs/top-level/splice.nix2
12 files changed, 62 insertions, 52 deletions
diff --git a/lib/customisation.nix b/lib/customisation.nix
index a9281b1ab69..a46913dc5bd 100644
--- a/lib/customisation.nix
+++ b/lib/customisation.nix
@@ -279,7 +279,7 @@ rec {
 
   /* Like the above, but aims to support cross compilation. It's still ugly, but
      hopefully it helps a little bit. */
-  makeScopeWithSplicing = splicePackages: newScope: otherSplices: keep: extra: f:
+  makeScopeWithSplicing = { splicePackages, newScope }: { otherSplices, keep, extra, f }:
     let
       spliced0 = splicePackages {
         pkgsBuildBuild = otherSplices.selfBuildBuild;
@@ -295,13 +295,11 @@ rec {
         callPackage = newScope spliced; # == self.newScope {};
         # N.B. the other stages of the package set spliced in are *not*
         # overridden.
-        overrideScope = g: makeScopeWithSplicing
-          splicePackages
-          newScope
-          otherSplices
-          keep
-          extra
-          (lib.fixedPoints.extends g f);
+        overrideScope = g: (makeScopeWithSplicing
+          { inherit splicePackages newScope; }
+          { inherit otherSplices keep extra;
+            f = lib.fixedPoints.extends g f;
+          });
         packages = f;
       };
     in self;
diff --git a/pkgs/desktops/xfce/default.nix b/pkgs/desktops/xfce/default.nix
index 5dc21338a72..41de05a41de 100644
--- a/pkgs/desktops/xfce/default.nix
+++ b/pkgs/desktops/xfce/default.nix
@@ -10,11 +10,10 @@ let
   extra = _spliced0: { };
 
 in
-makeScopeWithSplicing
-  (generateSplicesForMkScope "xfce")
-  keep
-  extra
-  (self:
+makeScopeWithSplicing {
+  otherSplices = generateSplicesForMkScope "xfce";
+  inherit keep extra;
+  f = (self:
     let
       inherit (self) callPackage;
     in
@@ -177,4 +176,5 @@ makeScopeWithSplicing
       thunar-bare = self.thunar.override { thunarPlugins = [ ]; }; # added 2019-11-04
 
       xfce4-hardware-monitor-plugin = throw "xfce.xfce4-hardware-monitor-plugin has been removed: abandoned by upstream and does not build"; # added 2023-01-15
-    })
+    });
+}
diff --git a/pkgs/development/interpreters/lua-5/default.nix b/pkgs/development/interpreters/lua-5/default.nix
index f4c622515d7..b0c6182cadd 100644
--- a/pkgs/development/interpreters/lua-5/default.nix
+++ b/pkgs/development/interpreters/lua-5/default.nix
@@ -46,11 +46,10 @@ let
             overriddenPackages
             overrides
           ];
-        in makeScopeWithSplicing
-          otherSplices
-          keep
-          extra
-          (lib.extends extensions luaPackagesFun))
+        in makeScopeWithSplicing {
+          inherit otherSplices keep extra;
+          f = lib.extends extensions luaPackagesFun;
+        })
         {
           overrides = packageOverrides;
           lua = self;
diff --git a/pkgs/development/interpreters/perl/default.nix b/pkgs/development/interpreters/perl/default.nix
index 3c57d8a2b69..6eb439ea4a9 100644
--- a/pkgs/development/interpreters/perl/default.nix
+++ b/pkgs/development/interpreters/perl/default.nix
@@ -36,11 +36,10 @@ let
           };
           keep = self: { };
           extra = spliced0: {};
-        in makeScopeWithSplicing
-          otherSplices
-          keep
-          extra
-          perlPackagesFun)
+        in makeScopeWithSplicing {
+          inherit otherSplices keep extra;
+          f = perlPackagesFun;
+        })
         {
           perl = self;
         };
diff --git a/pkgs/development/interpreters/python/passthrufun.nix b/pkgs/development/interpreters/python/passthrufun.nix
index aa63f354e08..a4a04164ef3 100644
--- a/pkgs/development/interpreters/python/passthrufun.nix
+++ b/pkgs/development/interpreters/python/passthrufun.nix
@@ -60,12 +60,10 @@
         overrides
       ]);
       aliases = self: super: lib.optionalAttrs config.allowAliases (import ../../../top-level/python-aliases.nix lib self super);
-    in makeScopeWithSplicing
-      otherSplices
-      keep
-      extra
-      (lib.extends (lib.composeExtensions aliases extensions) keep))
-    {
+    in makeScopeWithSplicing {
+      inherit otherSplices keep extra;
+      f = lib.extends (lib.composeExtensions aliases extensions) keep;
+    }) {
       overrides = packageOverrides;
       python = self;
     });
diff --git a/pkgs/development/libraries/qt-5/5.15/default.nix b/pkgs/development/libraries/qt-5/5.15/default.nix
index 5f829009038..45310664383 100644
--- a/pkgs/development/libraries/qt-5/5.15/default.nix
+++ b/pkgs/development/libraries/qt-5/5.15/default.nix
@@ -334,4 +334,9 @@ let
       overrideScope' = lib.warn "qt5 now uses makeScopeWithSplicing which does not have \"overrideScope'\", use \"overrideScope\"." self.overrideScope;
     };
 
-in makeScopeWithSplicing (generateSplicesForMkScope "qt5") (_: {}) (_: {}) addPackages
+in makeScopeWithSplicing {
+  otherSplices = generateSplicesForMkScope "qt5";
+  keep = _: {};
+  extra = _: {};
+  f = addPackages;
+}
diff --git a/pkgs/games/steam/default.nix b/pkgs/games/steam/default.nix
index 370f22268a9..ebd0570d351 100644
--- a/pkgs/games/steam/default.nix
+++ b/pkgs/games/steam/default.nix
@@ -34,4 +34,8 @@ let
   };
   keep = self: { };
   extra = spliced0: { };
-in makeScopeWithSplicing (generateSplicesForMkScope "steamPackages") keep extra steamPackagesFun
+in makeScopeWithSplicing {
+  otherSplices = generateSplicesForMkScope "steamPackages";
+  inherit keep extra;
+  f = steamPackagesFun;
+}
diff --git a/pkgs/os-specific/bsd/freebsd/default.nix b/pkgs/os-specific/bsd/freebsd/default.nix
index 136c9721c6b..e68b4ef87b3 100644
--- a/pkgs/os-specific/bsd/freebsd/default.nix
+++ b/pkgs/os-specific/bsd/freebsd/default.nix
@@ -66,11 +66,11 @@ let
     done
   '';
 
-in makeScopeWithSplicing
-  (generateSplicesForMkScope "freebsd")
-  (_: {})
-  (_: {})
-  (self: let
+in makeScopeWithSplicing {
+  otherSplices = generateSplicesForMkScope "freebsd";
+  keep = _: {};
+  extra = _: {};
+  f = (self: let
     inherit (self) mkDerivation;
   in {
   inherit freebsdSrc;
@@ -898,4 +898,5 @@ in makeScopeWithSplicing
     '';
   });
 
-})
+});
+}
diff --git a/pkgs/os-specific/bsd/netbsd/default.nix b/pkgs/os-specific/bsd/netbsd/default.nix
index 6bf884d3828..6782bbf9df6 100644
--- a/pkgs/os-specific/bsd/netbsd/default.nix
+++ b/pkgs/os-specific/bsd/netbsd/default.nix
@@ -26,11 +26,11 @@ let
       else "no"}"
   ];
 
-in makeScopeWithSplicing
-  (generateSplicesForMkScope "netbsd")
-  (_: {})
-  (_: {})
-  (self: let
+in makeScopeWithSplicing {
+  otherSplices = generateSplicesForMkScope "netbsd";
+  keep = _: {};
+  extra = _: {};
+  f = (self: let
     inherit (self) mkDerivation;
   in {
 
@@ -1011,4 +1011,5 @@ in makeScopeWithSplicing
   # END MISCELLANEOUS
   #
 
-})
+});
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index f396085da5a..6047098baed 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -27232,11 +27232,11 @@ with pkgs;
 
     generatedPackages = lib.callPackageWith __splicedPackages ../servers/x11/xorg/default.nix { };
 
-    xorgPackages = makeScopeWithSplicing
-      (generateSplicesForMkScope "xorg")
-      keep
-      extra
-      (lib.extends overrides generatedPackages);
+    xorgPackages = makeScopeWithSplicing {
+      otherSplices = generateSplicesForMkScope "xorg";
+      inherit keep extra;
+      f = lib.extends overrides generatedPackages;
+    };
 
   in recurseIntoAttrs xorgPackages;
 
diff --git a/pkgs/top-level/darwin-packages.nix b/pkgs/top-level/darwin-packages.nix
index ef4240955b9..55f908db980 100644
--- a/pkgs/top-level/darwin-packages.nix
+++ b/pkgs/top-level/darwin-packages.nix
@@ -15,7 +15,11 @@ let
                                         (stdenv.targetPlatform.config + "-");
 in
 
-makeScopeWithSplicing (generateSplicesForMkScope "darwin") (_: {}) (spliced: spliced.apple_sdk.frameworks) (self: let
+makeScopeWithSplicing {
+  otherSplices = generateSplicesForMkScope "darwin";
+  keep = _: {};
+  extra = spliced: spliced.apple_sdk.frameworks;
+  f = (self: let
   inherit (self) mkDerivation callPackage;
 
   # Must use pkgs.callPackage to avoid infinite recursion.
@@ -251,4 +255,5 @@ impure-cmds // appleSourcePackages // chooseLibs // {
 
 } // lib.optionalAttrs config.allowAliases {
   builder = throw "'darwin.builder' has been changed and renamed to 'darwin.linux-builder'. The default ssh port is now 31022. Please update your configuration or override the port back to 22. See https://nixos.org/manual/nixpkgs/unstable/#sec-darwin-builder"; # added 2023-07-06
-})
+});
+}
diff --git a/pkgs/top-level/splice.nix b/pkgs/top-level/splice.nix
index 0a138947e8d..57cedb12a2f 100644
--- a/pkgs/top-level/splice.nix
+++ b/pkgs/top-level/splice.nix
@@ -144,7 +144,7 @@ in
   newScope = extra: lib.callPackageWith (splicedPackagesWithXorg // extra);
 
   # prefill 2 fields of the function for convenience
-  makeScopeWithSplicing = lib.makeScopeWithSplicing splicePackages pkgs.newScope;
+  makeScopeWithSplicing = lib.makeScopeWithSplicing { inherit splicePackages; inherit (pkgs) newScope; };
 
   # generate 'otherSplices' for 'makeScopeWithSplicing'
   generateSplicesForMkScope = attr: