diff --git a/pkgs/stdenv/generic/make-derivation.nix b/pkgs/stdenv/generic/make-derivation.nix index 8af162da7f2..74542691598 100644 --- a/pkgs/stdenv/generic/make-derivation.nix +++ b/pkgs/stdenv/generic/make-derivation.nix @@ -62,7 +62,7 @@ let f0 self super else x; in - makeDerivationExtensible (self: attrs // f self attrs)) + makeDerivationExtensible (self: attrs // (if builtins.isFunction f0 || f0?__functor then f self attrs else f0))) attrs; mkDerivationSimple = overrideAttrs: diff --git a/pkgs/test/overriding.nix b/pkgs/test/overriding.nix index 7838f637f31..f2519088f13 100644 --- a/pkgs/test/overriding.nix +++ b/pkgs/test/overriding.nix @@ -26,6 +26,11 @@ let expr = (pkgs.hello.overrideAttrs { pname = "hello-overriden"; }).pname == "hello-overriden"; expected = true; }) + ({ + name = "overriding-using-only-attrset-no-final-attrs"; + expr = ((stdenvNoCC.mkDerivation { pname = "hello-no-final-attrs"; }).overrideAttrs { pname = "hello-no-final-attrs-overridden"; }).pname == "hello-no-final-attrs-overridden"; + expected = true; + }) ]; addEntangled = origOverrideAttrs: f: