@ -1,6 +1,8 @@
let
lib = import ./default.nix ;
inherit ( builtins ) attrNames isFunction ;
in
rec {
@ -90,12 +92,28 @@ rec {
* /
callPackageWith = autoArgs : fn : args :
let
f = if builtins . isFunction fn then fn else import fn ;
f = if builtins . isFunction fn then fn else import fn ;
auto = builtins . intersectAttrs ( builtins . functionArgs f ) autoArgs ;
in makeOverridable f ( auto // args ) ;
/* A d d a t t r i b u t e s t o e a c h o u t p u t o f a d e r i v a t i o n w i t h o u t c h a n g i n g t h e d e r i v a t i o n i t s e l f */
/* L i k e c a l l P a c k a g e , b u t f o r a f u n c t i o n t h a t r e t u r n s a n a t t r i b u t e
set of derivations . The override function is added to the
individual attributes . * /
callPackagesWith = autoArgs : fn : args :
let
f = if builtins . isFunction fn then fn else import fn ;
auto = builtins . intersectAttrs ( builtins . functionArgs f ) autoArgs ;
finalArgs = auto // args ;
pkgs = f finalArgs ;
mkAttrOverridable = name : pkg : pkg // {
override = newArgs : mkAttrOverridable name ( f ( finalArgs // newArgs ) ) . ${ name } ;
} ;
in lib . mapAttrs mkAttrOverridable pkgs ;
/* A d d a t t r i b u t e s t o e a c h o u t p u t o f a d e r i v a t i o n w i t h o u t c h a n g i n g
the derivation itself . * /
addPassthru = drv : passthru :
let
outputs = drv . outputs or [ " o u t " ] ;