Skip to content

Commit

Permalink
Merge pull request #167947 from MatthewCroughan/mc/callLocklessFlake
Browse files Browse the repository at this point in the history
lib: add callLocklessFlake
  • Loading branch information
Artturin authored May 1, 2022
2 parents 9176178 + 3f128cc commit a5357d0
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 0 deletions.
4 changes: 4 additions & 0 deletions lib/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ let
callLibs = file: import file { lib = self; };
in {

# interacting with flakes
flakes = callLibs ./flakes.nix;

# often used, or depending on very little
trivial = callLibs ./trivial.nix;
fixedPoints = callLibs ./fixed-points.nix;
Expand Down Expand Up @@ -59,6 +62,7 @@ let
# linux kernel configuration
kernel = callLibs ./kernel.nix;

inherit (self.flakes) callLocklessFlake;
inherit (builtins) add addErrorContext attrNames concatLists
deepSeq elem elemAt filter genericClosure genList getAttr
hasAttr head isAttrs isBool isInt isList isString length
Expand Down
22 changes: 22 additions & 0 deletions lib/flakes.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{ lib }:

rec {

/* imports a flake.nix without acknowledging its lock file, useful for
referencing subflakes from a parent flake. The second argument allows
specifying the inputs of this flake.
Example:
callLocklessFlake {
path = ./directoryContainingFlake;
inputs = { inherit nixpkgs; };
}
*/
callLocklessFlake = { path, inputs ? { } }:
let
self = { outPath = path; } //
((import (path + "/flake.nix")).outputs (inputs // { self = self; }));
in
self;

}
8 changes: 8 additions & 0 deletions lib/tests/flakes/subflakeTest/flake.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
outputs = { self, subflake, callLocklessFlake }: rec {
x = (callLocklessFlake {
path = subflake;
inputs = {};
}).subflakeOutput;
};
}
5 changes: 5 additions & 0 deletions lib/tests/flakes/subflakeTest/subflake/flake.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
outputs = { self }: {
subflakeOutput = 1;
};
}
9 changes: 9 additions & 0 deletions lib/tests/misc.nix
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,15 @@ in

runTests {

# FLAKES

testCallLocklessFlake = {
expr = callLocklessFlake {
path = ./flakes/subflakeTest;
inputs = { subflake = ./flakes/subflakeTest/subflake; inherit callLocklessFlake; };
};
expected = { x = 1; outPath = ./flakes/subflakeTest; };
};

# TRIVIAL

Expand Down

0 comments on commit a5357d0

Please sign in to comment.