dotfiles/modules/nixos/default.nix

104 lines
1.8 KiB
Nix
Executable file

let
collectDirs =
path:
let
content = builtins.readDir path;
subdirs = builtins.filter (name: content.${name} == "directory") (builtins.attrNames content);
buildPath = name: path + "/${name}";
thisDirs = map buildPath subdirs;
subDirs = builtins.concatMap collectDirs thisDirs;
in
[ path ] ++ subDirs;
directoryImport =
path:
builtins.listToAttrs (
map (dir: {
name = baseNameOf (toString dir);
value = import dir;
}) (collectDirs path)
);
modules = directoryImport ./.;
in
{
flake.nixosModules = {
desktop = {
imports = builtins.attrValues {
inherit (modules)
mullvad
syncthing
ollama
hypr
wayland
xserver
;
};
};
fallaryn = {
imports = builtins.attrValues {
inherit (modules)
plasma
sddm
tablet
;
};
};
laptop = {
imports = builtins.attrValues {
inherit (modules)
gnome
xserver
;
};
};
server = {
imports = builtins.attrValues {
inherit (modules)
acme
caddy
jellyfin
logrotate
mastodon
minecraft
ollama
website
postgresql
samba
vaultwarden
forgejo
;
};
};
sops = {
imports = builtins.attrValues {
inherit (modules)
sops
;
};
};
system = {
imports = builtins.attrValues {
inherit (modules)
hardware
programs
;
};
};
core = {
imports = builtins.attrValues {
inherit (modules)
core
xserver
;
};
};
};
}