summary refs log tree commit diff
path: root/lib/customisation.nix
diff options
context:
space:
mode:
authorSilvan Mosberger <infinisil@icloud.com>2019-09-05 00:12:05 +0200
committerSilvan Mosberger <infinisil@icloud.com>2019-09-05 00:56:11 +0200
commite140d709c43ab25d993c5c78b4e01aee754b49af (patch)
tree5cb75a257683c4f9237b84736daa2f11085636e2 /lib/customisation.nix
parenta75080f58ccdf7f702a1a0259e816be74143df52 (diff)
downloadnixpkgs-e140d709c43ab25d993c5c78b4e01aee754b49af.tar
nixpkgs-e140d709c43ab25d993c5c78b4e01aee754b49af.tar.gz
nixpkgs-e140d709c43ab25d993c5c78b4e01aee754b49af.tar.bz2
nixpkgs-e140d709c43ab25d993c5c78b4e01aee754b49af.tar.lz
nixpkgs-e140d709c43ab25d993c5c78b4e01aee754b49af.tar.xz
nixpkgs-e140d709c43ab25d993c5c78b4e01aee754b49af.tar.zst
nixpkgs-e140d709c43ab25d993c5c78b4e01aee754b49af.zip
lib/makeOverridable: Abstract result overriding
Diffstat (limited to 'lib/customisation.nix')
-rw-r--r--lib/customisation.nix7
1 files 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;