mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-29 10:23:29 +00:00
lib: add makeScope
This commit is contained in:
parent
d15e437cff
commit
f9e5745efa
@ -164,4 +164,23 @@ rec {
|
|||||||
drv' = (lib.head outputsList).value;
|
drv' = (lib.head outputsList).value;
|
||||||
in lib.deepSeq drv' drv';
|
in lib.deepSeq drv' drv';
|
||||||
|
|
||||||
|
/* Make a set of packages with a common scope. All packages called
|
||||||
|
with the provided `callPackage' will be evaluated with the same
|
||||||
|
arguments. Any package in the set may depend on any other. The
|
||||||
|
`override' function allows subsequent modification of the package
|
||||||
|
set in a consistent way, i.e. all packages in the set will be
|
||||||
|
called with the overridden packages. The package sets may be
|
||||||
|
hierarchical: the packages in the set are called with the scope
|
||||||
|
provided by `newScope' and the set provides a `newScope' attribute
|
||||||
|
which can form the parent scope for later package sets. */
|
||||||
|
makeScope = newScope: f:
|
||||||
|
let self = f self // {
|
||||||
|
newScope = scope: newScope (self // scope);
|
||||||
|
callPackage = self.newScope {};
|
||||||
|
override = g: makeScope newScope (self_:
|
||||||
|
let super = f self_;
|
||||||
|
in super // g super self_);
|
||||||
|
};
|
||||||
|
in self;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user