nur-packages/callUnitRoot.nix
xeals d36de346ad
packages: convert path interpolation to concat
I have no idea what the fuck is happening here but interpolating the
path leads to the whole result being converted to a (-n invalid) store
path, but concat doesn't. The former results in realisation failing
running under `nix-build`, i.e., NUR updates.
2023-03-06 12:08:33 +11:00

16 lines
496 B
Nix

{ pkgs
, lib ? pkgs.lib
, unitDir ? "unit"
, packageFun ? "package.nix"
, root ? "${./pkgs}/${unitDir}"
}:
let
shards = lib.attrNames (builtins.readDir root);
namesForShard = shard: lib.mapAttrs'
(name: _: { inherit name; value = root + "/${shard}/${name}"; })
(builtins.readDir (root + "/${shard}"));
namesToPath = lib.foldl' lib.recursiveUpdate { } (map namesForShard shards);
units = lib.mapAttrs (_: path: pkgs.callPackage (path + "/${packageFun}") { }) namesToPath;
in
units