Skip to content

Commit

Permalink
make makeOverridable noop for functions like a: b: c(a, b)
Browse files Browse the repository at this point in the history
svn path=/nixpkgs/trunk/; revision=23262
  • Loading branch information
urkud committed Aug 19, 2010
1 parent e16427a commit 9e4202d
Showing 1 changed file with 11 additions and 7 deletions.
18 changes: 11 additions & 7 deletions pkgs/lib/customisation.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 9e4202d

Please sign in to comment.