about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--lib/customisation.nix7
-rw-r--r--lib/tests/misc.nix12
2 files changed, 16 insertions, 3 deletions
diff --git a/lib/customisation.nix b/lib/customisation.nix
index ec2513021f9f..5ef4f29e6f6a 100644
--- a/lib/customisation.nix
+++ b/lib/customisation.nix
@@ -69,8 +69,8 @@ rec {
      "<pkg>.overrideDerivation" to learn about `overrideDerivation` and caveats
      related to its use.
   */
-  makeOverridable = f: origArgs:
-    let
+  makeOverridable = f: lib.setFunctionArgs
+    (origArgs: let
       result = f origArgs;
 
       # Creates a functor with the same arguments as f
@@ -95,7 +95,8 @@ rec {
         lib.setFunctionArgs result (lib.functionArgs result) // {
           override = overrideArgs;
         }
-      else result;
+      else result)
+    (lib.functionArgs f);
 
 
   /* Call the package function in the file `fn` with the required
diff --git a/lib/tests/misc.nix b/lib/tests/misc.nix
index 6527c31e49c2..2e7fda2b1f8b 100644
--- a/lib/tests/misc.nix
+++ b/lib/tests/misc.nix
@@ -43,6 +43,18 @@ in
 
 runTests {
 
+# CUSTOMIZATION
+
+  testFunctionArgsMakeOverridable = {
+    expr = functionArgs (makeOverridable ({ a, b, c ? null}: {}));
+    expected = { a = false; b = false; c = true; };
+  };
+
+  testFunctionArgsMakeOverridableOverride = {
+    expr = functionArgs (makeOverridable ({ a, b, c ? null }: {}) { a = 1; b = 2; }).override;
+    expected = { a = false; b = false; c = true; };
+  };
+
 # TRIVIAL
 
   testId = {