diff options
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/top-level/python-packages.nix | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 6df0af982957..eb5e5459450b 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -35,7 +35,24 @@ let mkPythonDerivation = makeOverridable( callPackage ../development/interpreters/python/mk-python-derivation.nix { }); - buildPythonPackage = makeOverridable (callPackage ../development/interpreters/python/build-python-package.nix { + + # Derivations built with `buildPythonPackage` can already be overriden with `override`, `overrideAttrs`, and `overrideDerivation`. + # This function introduces `overridePythonPackage` and it overrides the call to `buildPythonPackage`. + makeOverridablePythonPackage = f: origArgs: + let + ff = f origArgs; + overrideWith = newArgs: origArgs // (if builtins.isFunction newArgs then newArgs origArgs else newArgs); + in + if builtins.isAttrs ff then (ff // { + overridePythonPackage = newArgs: makeOverridable f (overrideWith newArgs); + }) + else if builtins.isFunction ff then { + overridePythonPackage = newArgs: makeOverridable f (overrideWith newArgs); + __functor = self: ff; + } + else ff; + + buildPythonPackage = makeOverridablePythonPackage (callPackage ../development/interpreters/python/build-python-package.nix { inherit mkPythonDerivation; inherit bootstrapped-pip; flit = self.flit; |