let modulesPath = ./modules; 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) // ( path: builtins.listToAttrs ( map (name: { name = name; value = import (path + "/${name}"); }) ( builtins.filter (name: (builtins.readDir path).${name} == "directory") ( builtins.attrNames (builtins.readDir path) ) ) ) ) modulesPath; in { flake.nixosModules = { personal = { imports = builtins.attrValues { inherit (modules) android audio bluetooth corectrl dconf disks firejail flatpak fonts printing steam sysstat virtualization ; }; }; desktop = { imports = builtins.attrValues { inherit (modules) mullvad syncthing ollama ; }; }; fallaryn = { imports = builtins.attrValues { inherit (modules) tablet ; }; }; plasma = { imports = builtins.attrValues { inherit (modules) plasma sddm ; }; }; gnome = { imports = builtins.attrValues { inherit (modules) gnome ; }; }; hyprland = { imports = builtins.attrValues { inherit (modules) hyprland ; }; }; river = { imports = builtins.attrValues { inherit (modules) river ; }; }; wayland = { imports = builtins.attrValues { inherit (modules) wayland ; }; }; server = { imports = builtins.attrValues { inherit (modules) services ; }; }; sops = { imports = builtins.attrValues { inherit (modules) sops ; }; }; shared = { imports = builtins.attrValues { inherit (modules) accounts doas environment gvfs home-manager locale nh nix rsyncd ssh system xserver ; }; }; }; }