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 { ".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 = {