From af479c182ff0391aefd070f5219e79d15d655c75 Mon Sep 17 00:00:00 2001 From: Will Fancher Date: Tue, 11 Jul 2017 22:27:05 -0400 Subject: Added `callPackageWithSelfWith` and `callPackageWithSelf` --- lib/customisation.nix | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'lib/customisation.nix') diff --git a/lib/customisation.nix b/lib/customisation.nix index 124e8596f49..66260c8a486 100644 --- a/lib/customisation.nix +++ b/lib/customisation.nix @@ -183,6 +183,15 @@ rec { auto = builtins.intersectAttrs (builtins.functionArgs f) autoArgs; in makeOverridable f (auto // args); + # Like `callPackageWith`, but provides the function with the `self` + # argument. `fn` is called with the new `self` whenever an override + # or extension is added. + callPackageWithSelfWith = autoArgs: fn: args: + let + f = if builtins.isFunction fn then fn else import fn; + auto = builtins.intersectAttrs (builtins.functionArgs f) autoArgs; + in makeOverridableWithSelf f (auto // args); + /* Like callPackage, but for a function that returns an attribute set of derivations. The override function is added to the -- cgit 1.4.1