dotfiles/home/default.nix
2025-01-24 22:56:53 -06:00

55 lines
1.2 KiB
Nix
Executable file

let
# 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:
builtins.listToAttrs (
map (dir: {
name = baseNameOf (toString dir);
value = import dir;
}) (collectDirs path)
);
# Create the modules attrset
modules = directoryImport ./.;
in
{
flake.homeModules = {
desktop = {
imports = builtins.attrValues {
inherit (modules)
cli
gui
;
};
};
laptop = {
imports = builtins.attrValues {
inherit (modules)
apps
;
};
};
server = {
imports = builtins.attrValues {
inherit (modules)
cli
;
};
};
};
}