dotfiles/home/default.nix

49 lines
1 KiB
Nix
Raw Normal View History

2024-10-06 15:25:05 -05:00
let
2025-01-19 23:40:54 -06:00
# Recursively collect directories
collectDirs =
path:
let
content = builtins.readDir path;
subdirs = builtins.filter (name: content.${name} == "directory") (builtins.attrNames content);
buildPath = name: path + "/${name}";
# Get immediate subdirectories
thisDirs = map buildPath subdirs;
# Recursively get sub-subdirectories
subDirs = builtins.concatMap collectDirs thisDirs;
in
[ path ] ++ subDirs;
# Import directories and their default.nix files
directoryImport =
path:
2024-11-10 01:29:37 -06:00
builtins.listToAttrs (
2025-01-19 23:40:54 -06:00
map (dir: {
name = baseNameOf (toString dir);
value = import dir;
}) (collectDirs path)
2025-01-18 03:50:54 -06:00
);
2025-01-19 23:40:54 -06:00
# Create the modules attrset
modules = directoryImport ./.;
2025-01-18 03:50:54 -06:00
in
{
2024-10-06 15:25:05 -05:00
flake.homeModules = {
desktop = {
imports = builtins.attrValues {
2025-01-18 03:50:54 -06:00
inherit (modules)
2025-01-19 23:40:54 -06:00
cli
gui
2024-11-09 16:44:23 -06:00
;
};
};
2025-01-19 23:40:54 -06:00
server = {
imports = builtins.attrValues {
2025-01-18 03:50:54 -06:00
inherit (modules)
2025-01-19 23:40:54 -06:00
cli
;
};
2024-10-06 15:25:05 -05:00
};
};
}