diff --git a/AGENTS.md b/AGENTS.md index 3634ee8..3a90cde 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -31,7 +31,9 @@ In this repo, `flake.nix` imports `./modules` recursively via `inputs.import-tre ## Repo Structure -- `modules/features/`: reusable features and most aspect definitions. +- `modules/capabilities/`: reusable leaf capability features and most aspect definitions. +- `modules/capabilities/services/`: reusable service capabilities, especially hosted daemons and network services. +- `modules/profiles/`: bundle features that assemble capabilities into larger profiles such as `host-base` and `workstation-base`. - `modules/hosts//default.nix`: host features that assemble NixOS aspects into `flake.modules.nixos.`. - `modules/secrets/`: secret-related features shared by hosts. - `modules/flake-parts.nix`: flake-parts entrypoint; defines systems, formatter, and `flake.nixosConfigurations`. @@ -60,7 +62,9 @@ Use **Collector Aspect** only when composition through imports or shared library ## Change Rules -- When adding a feature, add or extend aspects under `modules/features/` and let hosts opt into them explicitly. +- When adding a reusable leaf feature, add or extend aspects under `modules/capabilities/` and let profiles or hosts opt into them explicitly. +- When adding a hosted service or network daemon feature, prefer `modules/capabilities/services/`. +- When adding a bundle of existing capabilities, put it under `modules/profiles/`. - When adding a host, create `modules/hosts//default.nix` and keep host-local generated files private as `_hardware.nix`, `_disk.nix`, or similar. - When a feature needs local data or helper code, keep it inside that feature directory and prefix non-feature files with `_` when they live under `modules/`. - Do not place arbitrary non-feature `.nix` files under `modules/` unless they are intentionally private and excluded from recursive import. diff --git a/modules/features/ai.nix b/modules/capabilities/ai.nix similarity index 100% rename from modules/features/ai.nix rename to modules/capabilities/ai.nix diff --git a/modules/features/audio.nix b/modules/capabilities/audio.nix similarity index 100% rename from modules/features/audio.nix rename to modules/capabilities/audio.nix diff --git a/modules/features/bitwarden.nix b/modules/capabilities/bitwarden.nix similarity index 100% rename from modules/features/bitwarden.nix rename to modules/capabilities/bitwarden.nix diff --git a/modules/features/bluetooth.nix b/modules/capabilities/bluetooth.nix similarity index 100% rename from modules/features/bluetooth.nix rename to modules/capabilities/bluetooth.nix diff --git a/modules/features/clipboard.nix b/modules/capabilities/clipboard.nix similarity index 100% rename from modules/features/clipboard.nix rename to modules/capabilities/clipboard.nix diff --git a/modules/features/dev-tools.nix b/modules/capabilities/dev-tools.nix similarity index 100% rename from modules/features/dev-tools.nix rename to modules/capabilities/dev-tools.nix diff --git a/modules/features/email.nix b/modules/capabilities/email.nix similarity index 100% rename from modules/features/email.nix rename to modules/capabilities/email.nix diff --git a/modules/features/flatpak.nix b/modules/capabilities/flatpak.nix similarity index 100% rename from modules/features/flatpak.nix rename to modules/capabilities/flatpak.nix diff --git a/modules/features/fonts.nix b/modules/capabilities/fonts.nix similarity index 100% rename from modules/features/fonts.nix rename to modules/capabilities/fonts.nix diff --git a/modules/features/git.nix b/modules/capabilities/git.nix similarity index 100% rename from modules/features/git.nix rename to modules/capabilities/git.nix diff --git a/modules/features/laptop-power.nix b/modules/capabilities/laptop-power.nix similarity index 100% rename from modules/features/laptop-power.nix rename to modules/capabilities/laptop-power.nix diff --git a/modules/features/local-apps.nix b/modules/capabilities/local-apps.nix similarity index 100% rename from modules/features/local-apps.nix rename to modules/capabilities/local-apps.nix diff --git a/modules/features/mpv.nix b/modules/capabilities/mpv.nix similarity index 100% rename from modules/features/mpv.nix rename to modules/capabilities/mpv.nix diff --git a/modules/features/neovim/_kanagawa-theme.nix b/modules/capabilities/neovim/_kanagawa-theme.nix similarity index 100% rename from modules/features/neovim/_kanagawa-theme.nix rename to modules/capabilities/neovim/_kanagawa-theme.nix diff --git a/modules/features/neovim/default.nix b/modules/capabilities/neovim/default.nix similarity index 100% rename from modules/features/neovim/default.nix rename to modules/capabilities/neovim/default.nix diff --git a/modules/features/neovim/lua-config/init.lua b/modules/capabilities/neovim/lua-config/init.lua similarity index 100% rename from modules/features/neovim/lua-config/init.lua rename to modules/capabilities/neovim/lua-config/init.lua diff --git a/modules/features/neovim/lua-config/lua/options.lua b/modules/capabilities/neovim/lua-config/lua/options.lua similarity index 100% rename from modules/features/neovim/lua-config/lua/options.lua rename to modules/capabilities/neovim/lua-config/lua/options.lua diff --git a/modules/features/neovim/lua-config/lua/plugins/completion.lua b/modules/capabilities/neovim/lua-config/lua/plugins/completion.lua similarity index 100% rename from modules/features/neovim/lua-config/lua/plugins/completion.lua rename to modules/capabilities/neovim/lua-config/lua/plugins/completion.lua diff --git a/modules/features/neovim/lua-config/lua/plugins/core.lua b/modules/capabilities/neovim/lua-config/lua/plugins/core.lua similarity index 100% rename from modules/features/neovim/lua-config/lua/plugins/core.lua rename to modules/capabilities/neovim/lua-config/lua/plugins/core.lua diff --git a/modules/features/neovim/lua-config/lua/plugins/formatting.lua b/modules/capabilities/neovim/lua-config/lua/plugins/formatting.lua similarity index 100% rename from modules/features/neovim/lua-config/lua/plugins/formatting.lua rename to modules/capabilities/neovim/lua-config/lua/plugins/formatting.lua diff --git a/modules/features/neovim/lua-config/lua/plugins/lsp.lua b/modules/capabilities/neovim/lua-config/lua/plugins/lsp.lua similarity index 100% rename from modules/features/neovim/lua-config/lua/plugins/lsp.lua rename to modules/capabilities/neovim/lua-config/lua/plugins/lsp.lua diff --git a/modules/features/neovim/lua-config/lua/plugins/telescope.lua b/modules/capabilities/neovim/lua-config/lua/plugins/telescope.lua similarity index 100% rename from modules/features/neovim/lua-config/lua/plugins/telescope.lua rename to modules/capabilities/neovim/lua-config/lua/plugins/telescope.lua diff --git a/modules/features/neovim/lua-config/lua/plugins/treesitter.lua b/modules/capabilities/neovim/lua-config/lua/plugins/treesitter.lua similarity index 100% rename from modules/features/neovim/lua-config/lua/plugins/treesitter.lua rename to modules/capabilities/neovim/lua-config/lua/plugins/treesitter.lua diff --git a/modules/features/neovim/lua-config/lua/plugins/ui.lua b/modules/capabilities/neovim/lua-config/lua/plugins/ui.lua similarity index 100% rename from modules/features/neovim/lua-config/lua/plugins/ui.lua rename to modules/capabilities/neovim/lua-config/lua/plugins/ui.lua diff --git a/modules/features/neovim/lua-config/snippets/nix.lua b/modules/capabilities/neovim/lua-config/snippets/nix.lua similarity index 100% rename from modules/features/neovim/lua-config/snippets/nix.lua rename to modules/capabilities/neovim/lua-config/snippets/nix.lua diff --git a/modules/features/networking.nix b/modules/capabilities/networking.nix similarity index 100% rename from modules/features/networking.nix rename to modules/capabilities/networking.nix diff --git a/modules/features/nh.nix b/modules/capabilities/nh.nix similarity index 100% rename from modules/features/nh.nix rename to modules/capabilities/nh.nix diff --git a/modules/features/niri/_bindings.nix b/modules/capabilities/niri/_bindings.nix similarity index 100% rename from modules/features/niri/_bindings.nix rename to modules/capabilities/niri/_bindings.nix diff --git a/modules/features/niri/default.nix b/modules/capabilities/niri/default.nix similarity index 100% rename from modules/features/niri/default.nix rename to modules/capabilities/niri/default.nix diff --git a/modules/features/nix.nix b/modules/capabilities/nix.nix similarity index 100% rename from modules/features/nix.nix rename to modules/capabilities/nix.nix diff --git a/modules/features/_noctalia-config.nix b/modules/capabilities/noctalia/_noctalia-config.nix similarity index 100% rename from modules/features/_noctalia-config.nix rename to modules/capabilities/noctalia/_noctalia-config.nix diff --git a/modules/features/noctalia.nix b/modules/capabilities/noctalia/default.nix similarity index 100% rename from modules/features/noctalia.nix rename to modules/capabilities/noctalia/default.nix diff --git a/modules/features/pim.nix b/modules/capabilities/pim.nix similarity index 100% rename from modules/features/pim.nix rename to modules/capabilities/pim.nix diff --git a/modules/features/plymouth.nix b/modules/capabilities/plymouth.nix similarity index 100% rename from modules/features/plymouth.nix rename to modules/capabilities/plymouth.nix diff --git a/modules/features/podman.nix b/modules/capabilities/podman.nix similarity index 100% rename from modules/features/podman.nix rename to modules/capabilities/podman.nix diff --git a/modules/features/printing.nix b/modules/capabilities/printing.nix similarity index 100% rename from modules/features/printing.nix rename to modules/capabilities/printing.nix diff --git a/modules/features/qbittorrent-client.nix b/modules/capabilities/qbittorrent-client.nix similarity index 100% rename from modules/features/qbittorrent-client.nix rename to modules/capabilities/qbittorrent-client.nix diff --git a/modules/features/region-nl.nix b/modules/capabilities/region-nl.nix similarity index 100% rename from modules/features/region-nl.nix rename to modules/capabilities/region-nl.nix diff --git a/modules/features/sddm.nix b/modules/capabilities/sddm.nix similarity index 100% rename from modules/features/sddm.nix rename to modules/capabilities/sddm.nix diff --git a/modules/features/services/actual.nix b/modules/capabilities/services/actual.nix similarity index 100% rename from modules/features/services/actual.nix rename to modules/capabilities/services/actual.nix diff --git a/modules/features/services/caddy.nix b/modules/capabilities/services/caddy.nix similarity index 100% rename from modules/features/services/caddy.nix rename to modules/capabilities/services/caddy.nix diff --git a/modules/features/services/gitea.nix b/modules/capabilities/services/gitea.nix similarity index 100% rename from modules/features/services/gitea.nix rename to modules/capabilities/services/gitea.nix diff --git a/modules/features/services/openssh.nix b/modules/capabilities/services/openssh.nix similarity index 100% rename from modules/features/services/openssh.nix rename to modules/capabilities/services/openssh.nix diff --git a/modules/features/services/radicale.nix b/modules/capabilities/services/radicale.nix similarity index 100% rename from modules/features/services/radicale.nix rename to modules/capabilities/services/radicale.nix diff --git a/modules/features/services/vaultwarden.nix b/modules/capabilities/services/vaultwarden.nix similarity index 100% rename from modules/features/services/vaultwarden.nix rename to modules/capabilities/services/vaultwarden.nix diff --git a/modules/features/shell.nix b/modules/capabilities/shell.nix similarity index 100% rename from modules/features/shell.nix rename to modules/capabilities/shell.nix diff --git a/modules/features/ssh.nix b/modules/capabilities/ssh.nix similarity index 100% rename from modules/features/ssh.nix rename to modules/capabilities/ssh.nix diff --git a/modules/features/standard-boot.nix b/modules/capabilities/standard-boot.nix similarity index 100% rename from modules/features/standard-boot.nix rename to modules/capabilities/standard-boot.nix diff --git a/modules/features/steam.nix b/modules/capabilities/steam.nix similarity index 100% rename from modules/features/steam.nix rename to modules/capabilities/steam.nix diff --git a/modules/features/syncthing.nix b/modules/capabilities/syncthing.nix similarity index 100% rename from modules/features/syncthing.nix rename to modules/capabilities/syncthing.nix diff --git a/modules/features/terminal.nix b/modules/capabilities/terminal.nix similarity index 100% rename from modules/features/terminal.nix rename to modules/capabilities/terminal.nix diff --git a/modules/features/theme.nix b/modules/capabilities/theme.nix similarity index 100% rename from modules/features/theme.nix rename to modules/capabilities/theme.nix diff --git a/modules/features/vicinae.nix b/modules/capabilities/vicinae.nix similarity index 100% rename from modules/features/vicinae.nix rename to modules/capabilities/vicinae.nix diff --git a/modules/features/xdg.nix b/modules/capabilities/xdg.nix similarity index 100% rename from modules/features/xdg.nix rename to modules/capabilities/xdg.nix diff --git a/modules/features/host-base.nix b/modules/profiles/host-base.nix similarity index 100% rename from modules/features/host-base.nix rename to modules/profiles/host-base.nix diff --git a/modules/features/workstation-base.nix b/modules/profiles/workstation-base.nix similarity index 100% rename from modules/features/workstation-base.nix rename to modules/profiles/workstation-base.nix diff --git a/modules/features/sops-password.nix b/modules/secrets/sops-password.nix similarity index 100% rename from modules/features/sops-password.nix rename to modules/secrets/sops-password.nix