diff options
author | Silvan Mosberger <infinisil@icloud.com> | 2019-09-05 00:12:05 +0200 |
---|---|---|
committer | Silvan Mosberger <infinisil@icloud.com> | 2019-09-05 00:56:11 +0200 |
commit | e140d709c43ab25d993c5c78b4e01aee754b49af (patch) | |
tree | 5cb75a257683c4f9237b84736daa2f11085636e2 /lib | |
parent | a75080f58ccdf7f702a1a0259e816be74143df52 (diff) | |
download | nixlib-e140d709c43ab25d993c5c78b4e01aee754b49af.tar nixlib-e140d709c43ab25d993c5c78b4e01aee754b49af.tar.gz nixlib-e140d709c43ab25d993c5c78b4e01aee754b49af.tar.bz2 nixlib-e140d709c43ab25d993c5c78b4e01aee754b49af.tar.lz nixlib-e140d709c43ab25d993c5c78b4e01aee754b49af.tar.xz nixlib-e140d709c43ab25d993c5c78b4e01aee754b49af.tar.zst nixlib-e140d709c43ab25d993c5c78b4e01aee754b49af.zip |
lib/makeOverridable: Abstract result overriding
Diffstat (limited to 'lib')
-rw-r--r-- | lib/customisation.nix | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/customisation.nix b/lib/customisation.nix index cb02496b81d8..21bab1ab4bcd 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; |