diff --git a/pkgs/development/interpreters/python/python-packages-base.nix b/pkgs/development/interpreters/python/python-packages-base.nix index 79a707981e64408..1a15449866fb519 100644 --- a/pkgs/development/interpreters/python/python-packages-base.nix +++ b/pkgs/development/interpreters/python/python-packages-base.nix @@ -17,11 +17,16 @@ let makeOverridablePythonPackage = f: origArgs: let ff = f origArgs; + args = lib.fix (lib.extends + (_: previousAttrs: { + passthru = (previousAttrs.passthru or { }) // { + overridePythonAttrs = newArgs: makeOverridablePythonPackage f (overrideWith newArgs); + }; + }) + (_: origArgs)); overrideWith = newArgs: origArgs // (if pkgs.lib.isFunction newArgs then newArgs origArgs else newArgs); in - if builtins.isAttrs ff then ff.overrideAttrs (previousAttrs: { passthru = (previousAttrs.passthru or {}) // { - overridePythonAttrs = newArgs: makeOverridablePythonPackage f (overrideWith newArgs); - };}) + if builtins.isAttrs ff then f args else if builtins.isFunction ff then { overridePythonAttrs = newArgs: makeOverridablePythonPackage f (overrideWith newArgs); __functor = self: ff;