-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdirMap.nix
More file actions
20 lines (18 loc) · 794 Bytes
/
Copy pathdirMap.nix
File metadata and controls
20 lines (18 loc) · 794 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{ lib }:
{
# Map all subdirectories of `dir` to their imported default.nix
mapHosts = dir:
lib.mapAttrs' (name: _:
lib.nameValuePair name (import (dir + "/${name}"))
) (lib.filterAttrs (n: t: t == "directory") (builtins.readDir dir));
# Map all .nix files in `dir` by applying `fn` to each file's path
mapModules = dir: fn:
lib.mapAttrs'
(name: _: lib.nameValuePair (lib.removeSuffix ".nix" name) (fn (dir + "/${name}")))
(lib.filterAttrs (n: _: lib.hasSuffix ".nix" n) (builtins.readDir dir));
# Map all .nix overlay files in `dir` to a list of overlay functions
mapOverlays = dir: args:
lib.mapAttrsToList
(name: _: import (dir + "/${name}") args)
(lib.filterAttrs (name: type: lib.hasSuffix ".nix" name) (builtins.readDir dir));
}