about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/default.nix30
-rw-r--r--pkgs/lib/call-package-scope.nix25
2 files changed, 30 insertions, 25 deletions
diff --git a/pkgs/default.nix b/pkgs/default.nix
index 8303e0a5..ce39a5bc 100644
--- a/pkgs/default.nix
+++ b/pkgs/default.nix
@@ -1,34 +1,14 @@
 { pkgs ? import (import ../nixpkgs-path.nix) {} }:
 
 let
-  inherit (pkgs.lib) callPackageWith isFunction;
+  inherit (pkgs.lib) callPackageWith;
   callPackage = callPackageWith (pkgs // self.vuizvui);
   callPackage_i686 = callPackageWith (pkgs.pkgsi686Linux // self.vuizvui);
 
-  callPackageScope = fn: let
-    f = if isFunction fn then fn else import fn;
-
-    toplevel = pkgs // self.vuizvui;
-    toplevel_i686 = pkgs.pkgsi686Linux // self.vuizvui;
-
-    autoArgs = toplevel // {
-      callPackage = callPackageWith (toplevel // super);
-      callPackage_i686 = callPackageWith (toplevel_i686 // super);
-    };
-    args = builtins.intersectAttrs (builtins.functionArgs f) autoArgs;
-
-    mkOverridable = overrideFun: origArgs: let
-      superSet = overrideFun origArgs;
-      overrideWith = newArgs: let
-        overridden = if isFunction newArgs then newArgs origArgs else newArgs;
-      in origArgs // overridden;
-    in superSet // {
-      override = newArgs: mkOverridable overrideFun (overrideWith newArgs);
-    };
-
-    super = mkOverridable f args;
-
-  in pkgs.recurseIntoAttrs super;
+  callPackageScope = import ./lib/call-package-scope.nix {
+    pkgs = pkgs // self.vuizvui;
+    pkgsi686Linux = pkgs.pkgsi686Linux // self.vuizvui;
+  };
 
   self.vuizvui = pkgs.recurseIntoAttrs {
     mkChannel = callPackage ./build-support/channel.nix { };
diff --git a/pkgs/lib/call-package-scope.nix b/pkgs/lib/call-package-scope.nix
new file mode 100644
index 00000000..75c19faf
--- /dev/null
+++ b/pkgs/lib/call-package-scope.nix
@@ -0,0 +1,25 @@
+{ pkgs, pkgsi686Linux }:
+
+fn: let
+  inherit (builtins) isFunction intersectAttrs functionArgs;
+
+  f = if isFunction fn then fn else import fn;
+
+  autoArgs = pkgs // {
+    callPackage = pkgs.lib.callPackageWith (pkgs // super);
+    callPackage_i686 = pkgs.lib.callPackageWith (pkgsi686Linux // super);
+  };
+  args = intersectAttrs (functionArgs f) autoArgs;
+
+  mkOverridable = overrideFun: origArgs: let
+    superSet = overrideFun origArgs;
+    overrideWith = newArgs: let
+      overridden = if isFunction newArgs then newArgs origArgs else newArgs;
+    in origArgs // overridden;
+  in superSet // {
+    override = newArgs: mkOverridable overrideFun (overrideWith newArgs);
+  };
+
+  super = mkOverridable f args;
+
+in pkgs.recurseIntoAttrs super