lib/makeOverridable: Abstract result overriding

This commit is contained in:
Silvan Mosberger 2019-09-05 00:12:05 +02:00
parent a75080f58c
commit e140d709c4
No known key found for this signature in database
GPG key ID: 9424360B4B85C9E7

View file

@ -71,13 +71,14 @@ rec {
# Re-call the function but with different arguments
overrideArgs = newArgs: makeOverridable f (overrideWith newArgs);
# Change the result of the function call by applying g to it
overrideResult = g: makeOverridable (args: g (f args)) origArgs;
in
if builtins.isAttrs ff then (ff // {
override = overrideArgs;
overrideDerivation = fdrv:
makeOverridable (args: overrideDerivation (f args) fdrv) origArgs;
overrideDerivation = fdrv: overrideResult (x: overrideDerivation x fdrv);
${if ff ? overrideAttrs then "overrideAttrs" else null} = fdrv:
makeOverridable (args: (f args).overrideAttrs fdrv) origArgs;
overrideResult (x: x.overrideAttrs fdrv);
})
else if lib.isFunction ff then {
override = overrideArgs;