diff options
author | Jan Malakhovski <oxij@oxij.org> | 2015-03-19 15:48:54 +0000 |
---|---|---|
committer | Jan Malakhovski <oxij@oxij.org> | 2015-03-26 12:43:42 +0000 |
commit | 5990cce95f562ed185f55cb9bc3f230265d2ab9d (patch) | |
tree | 22a664d7e29c8570c01131f7e1023491161de9cd /lib/customisation.nix | |
parent | 9a75c1d7c8ee19046ce67f2dc725821d2d5452fa (diff) | |
download | nixpkgs-5990cce95f562ed185f55cb9bc3f230265d2ab9d.tar nixpkgs-5990cce95f562ed185f55cb9bc3f230265d2ab9d.tar.gz nixpkgs-5990cce95f562ed185f55cb9bc3f230265d2ab9d.tar.bz2 nixpkgs-5990cce95f562ed185f55cb9bc3f230265d2ab9d.tar.lz nixpkgs-5990cce95f562ed185f55cb9bc3f230265d2ab9d.tar.xz nixpkgs-5990cce95f562ed185f55cb9bc3f230265d2ab9d.tar.zst nixpkgs-5990cce95f562ed185f55cb9bc3f230265d2ab9d.zip |
lib: cleanup a little bit, add traceIf
Diffstat (limited to 'lib/customisation.nix')
-rw-r--r-- | lib/customisation.nix | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/lib/customisation.nix b/lib/customisation.nix index 960eebfc79b..91a25055df2 100644 --- a/lib/customisation.nix +++ b/lib/customisation.nix @@ -29,8 +29,8 @@ rec { For another application, see build-support/vm, where this function is used to build arbitrary derivations inside a QEMU - virtual machine. */ - + virtual machine. + */ overrideDerivation = drv: f: let newDrv = derivation (drv.drvAttrs // (f drv)); @@ -56,18 +56,17 @@ rec { makeOverridable = f: origArgs: let ff = f origArgs; + overrideWith = newArgs: origArgs // (if builtins.isFunction newArgs then newArgs origArgs else newArgs); in if builtins.isAttrs ff then (ff // - { override = newArgs: - makeOverridable f (origArgs // (if builtins.isFunction newArgs then newArgs origArgs else newArgs)); + { override = newArgs: makeOverridable f (overrideWith newArgs); deepOverride = newArgs: makeOverridable f (lib.overrideExisting (lib.mapAttrs (deepOverrider newArgs) origArgs) newArgs); overrideDerivation = fdrv: makeOverridable (args: overrideDerivation (f args) fdrv) origArgs; }) else if builtins.isFunction ff then - { override = newArgs: - makeOverridable f (origArgs // (if builtins.isFunction newArgs then newArgs origArgs else newArgs)); + { override = newArgs: makeOverridable f (overrideWith newArgs); __functor = self: ff; deepOverride = throw "deepOverride not yet supported for functors"; overrideDerivation = throw "overrideDerivation not yet supported for functors"; @@ -102,8 +101,10 @@ rec { }; */ callPackageWith = autoArgs: fn: args: - let f = if builtins.isFunction fn then fn else import fn; in - makeOverridable f ((builtins.intersectAttrs (builtins.functionArgs f) autoArgs) // args); + let + f = if builtins.isFunction fn then fn else import fn; + auto = builtins.intersectAttrs (builtins.functionArgs f) autoArgs; + in makeOverridable f (auto // args); /* Add attributes to each output of a derivation without changing the derivation itself */ |