{ 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