mirror of
https://github.com/itme-brain/nixos.git
synced 2026-03-23 16:29:42 -04:00
34 lines
873 B
Nix
34 lines
873 B
Nix
let
|
|
mkModules = dir: isRoot:
|
|
let
|
|
entries = builtins.readDir dir;
|
|
names = builtins.attrNames entries;
|
|
|
|
excludedDirs = [ "config" "scripts" ];
|
|
isSubmodule = path:
|
|
builtins.pathExists "${path}/.git" &&
|
|
builtins.readFileType "${path}/.git" == "regular";
|
|
isModuleDir = path:
|
|
builtins.pathExists path &&
|
|
builtins.readFileType path == "directory" &&
|
|
!(builtins.elem (builtins.baseNameOf path) excludedDirs) &&
|
|
!(isSubmodule path);
|
|
isModule = file: file == "default.nix";
|
|
|
|
in
|
|
builtins.concatMap (name:
|
|
let
|
|
path = "${dir}/${name}";
|
|
in
|
|
if isModuleDir path then
|
|
mkModules path false
|
|
else if isModule name && !isRoot then
|
|
[ dir ]
|
|
else
|
|
[]
|
|
) names;
|
|
|
|
in
|
|
{
|
|
imports = mkModules ./. true;
|
|
}
|