dotfiles/nixos/default.nix
2024-11-23 20:08:03 -06:00

87 lines
1.6 KiB
Nix
Executable file

let
modulesPath = ./modules;
servicePath = modulesPath + /services;
moduleImport = path: nameTransform:
builtins.listToAttrs (
map
(name: {
name = nameTransform name;
value = import (path + "/${name}");
})
(
builtins.filter
(name: (builtins.readDir path).${name} == "regular" && builtins.match ".*\\.nix$" name != null)
(builtins.attrNames (builtins.readDir path))
)
);
modules =
moduleImport modulesPath (name: builtins.replaceStrings [".nix"] [""] name)
// moduleImport servicePath (name: builtins.replaceStrings [".nix"] [""] name);
in {
flake.nixosModules = {
personal = {
imports = builtins.attrValues {
inherit
(modules)
android
audio
bluetooth
corectrl
dconf
disks
firejail
flatpak
fonts
nur
plasma
printing
sddm
steam
sysstat
virtualization
;
};
};
desktop = {
imports = builtins.attrValues {
inherit
(modules)
syncthing
ollama
;
};
};
server = {
imports = builtins.attrValues {
inherit
(modules)
services
;
};
};
shared = {
imports = builtins.attrValues {
inherit
(modules)
accounts
doas
environment
gvfs
home-manager
locale
nix
rsyncd
sops
ssh
system
xserver
;
};
};
};
}