let modulesPath = ./modules; modules = builtins.foldl' ( emptySet: importedModules: emptySet // importedModules ) {} (map (name: { "${name}" = import (modulesPath + "/${name}"); }) [ "services" ]) // builtins.foldl' ( emptySet: importedModules: emptySet // importedModules ) {} (map (name: { "${name}" = import (modulesPath + "/${name}.nix"); }) [ "accounts" "android" "audio" "bluetooth" "corectrl" "dconf" "disks" "doas" "environment" "firejail" "flatpak" "fonts" "gnome" "greetd" "gvfs" "home-manager" "locale" "network" "nix" "nur" "ollama" "plasma" "printing" "regreet" "rsyncd" "sddm" "sops" "ssh" "steam" "syncthing" "sysstat" "system" "virtualization" "xserver" ]); 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 ; }; }; }; }