summary refs log tree commit diff
path: root/pkgs/lib/customisation.nix
diff options
context:
space:
mode:
authorYury G. Kudryashov <urkud.urkud@gmail.com>2010-08-19 22:52:53 +0000
committerYury G. Kudryashov <urkud.urkud@gmail.com>2010-08-19 22:52:53 +0000
commit9e4202d273e05c4585466385bc383581ac74d142 (patch)
treeb099b47e3ddd57482db674696812bd40f143f056 /pkgs/lib/customisation.nix
parente16427a899e6e23cc2b2aa5e50916ebc048e84a1 (diff)
downloadnixpkgs-9e4202d273e05c4585466385bc383581ac74d142.tar
nixpkgs-9e4202d273e05c4585466385bc383581ac74d142.tar.gz
nixpkgs-9e4202d273e05c4585466385bc383581ac74d142.tar.bz2
nixpkgs-9e4202d273e05c4585466385bc383581ac74d142.tar.lz
nixpkgs-9e4202d273e05c4585466385bc383581ac74d142.tar.xz
nixpkgs-9e4202d273e05c4585466385bc383581ac74d142.tar.zst
nixpkgs-9e4202d273e05c4585466385bc383581ac74d142.zip
make makeOverridable noop for functions like a: b: c(a, b)
svn path=/nixpkgs/trunk/; revision=23262
Diffstat (limited to 'pkgs/lib/customisation.nix')
-rw-r--r--pkgs/lib/customisation.nix18
1 files changed, 11 insertions, 7 deletions
diff --git a/pkgs/lib/customisation.nix b/pkgs/lib/customisation.nix
index e8946ddf743..f97b494ae92 100644
--- a/pkgs/lib/customisation.nix
+++ b/pkgs/lib/customisation.nix
@@ -49,13 +49,17 @@ rec {
   # let d = makeOverridable stdenv.mkDerivation { name = ..; buildInputs; }
   #     noBuildInputs = d.override { buildInputs = []; }
   #     additionalBuildInputs = d.override ( args : args // { buildInputs = args.buildInputs ++ [ additional ]; } )
-  makeOverridable = f: origArgs: f origArgs //
-    { override = newArgs:
-        makeOverridable f (origArgs // (if builtins.isFunction newArgs then newArgs origArgs else newArgs));
-      deepOverride = newArgs:
-        makeOverridable f (lib.overrideExisting (lib.mapAttrs (deepOverrider newArgs) origArgs) newArgs);
-      #origArgs = origArgs;
-    };
+  makeOverridable = f: origArgs:
+    let
+      ff = f origArgs;
+    in
+      if builtins.isAttrs ff then (ff //
+        { override = newArgs:
+            makeOverridable f (origArgs // (if builtins.isFunction newArgs then newArgs origArgs else newArgs));
+          deepOverride = newArgs:
+            makeOverridable f (lib.overrideExisting (lib.mapAttrs (deepOverrider newArgs) origArgs) newArgs);
+        })
+      else ff;
 
   deepOverrider = newArgs: name: x: if builtins.isAttrs x then (
     if x ? deepOverride then (x.deepOverride newArgs) else