about summary refs log tree commit diff
path: root/lib/customisation.nix
diff options
context:
space:
mode:
Diffstat (limited to 'lib/customisation.nix')
-rw-r--r--lib/customisation.nix7
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/customisation.nix b/lib/customisation.nix
index 1f5eb0d11e8bf..cb02496b81d8f 100644
--- a/lib/customisation.nix
+++ b/lib/customisation.nix
@@ -68,16 +68,19 @@ rec {
     let
       ff = f origArgs;
       overrideWith = newArgs: origArgs // (if lib.isFunction newArgs then newArgs origArgs else newArgs);
+
+      # Re-call the function but with different arguments
+      overrideArgs = newArgs: makeOverridable f (overrideWith newArgs);
     in
       if builtins.isAttrs ff then (ff // {
-        override = newArgs: makeOverridable f (overrideWith newArgs);
+        override = overrideArgs;
         overrideDerivation = fdrv:
           makeOverridable (args: overrideDerivation (f args) fdrv) origArgs;
         ${if ff ? overrideAttrs then "overrideAttrs" else null} = fdrv:
           makeOverridable (args: (f args).overrideAttrs fdrv) origArgs;
       })
       else if lib.isFunction ff then {
-        override = newArgs: makeOverridable f (overrideWith newArgs);
+        override = overrideArgs;
         __functor = self: ff;
         overrideDerivation = throw "overrideDerivation not yet supported for functors";
       }