From e140d709c43ab25d993c5c78b4e01aee754b49af Mon Sep 17 00:00:00 2001 From: Silvan Mosberger Date: Thu, 5 Sep 2019 00:12:05 +0200 Subject: [PATCH] lib/makeOverridable: Abstract result overriding --- lib/customisation.nix | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/customisation.nix b/lib/customisation.nix index cb02496b81d..21bab1ab4bc 100644 --- a/lib/customisation.nix +++ b/lib/customisation.nix @@ -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;