diff options
author | Yury G. Kudryashov <urkud.urkud@gmail.com> | 2010-08-19 22:52:53 +0000 |
---|---|---|
committer | Yury G. Kudryashov <urkud.urkud@gmail.com> | 2010-08-19 22:52:53 +0000 |
commit | 9e4202d273e05c4585466385bc383581ac74d142 (patch) | |
tree | b099b47e3ddd57482db674696812bd40f143f056 /pkgs/lib/customisation.nix | |
parent | e16427a899e6e23cc2b2aa5e50916ebc048e84a1 (diff) | |
download | nixpkgs-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.nix | 18 |
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 |