Rename azos-core features/ to suites/; fold claude-memory/claude-skills into base
Bumps the azos-core submodule and updates docs/imports to match: AGENTS.md now documents the suite-grouping convention (no bare top-level modules), and claude-memory/claude-skills no longer need their own entries in home-manager/home.nix since they're folded into the base suite.
This commit is contained in:
@@ -83,7 +83,7 @@ azos/
|
||||
├── shells/ # Dev shells
|
||||
└── azos-core/ # Shared feature library (git submodule)
|
||||
├── flake.nix
|
||||
├── features/ # Shared/reusable features (auto-discovered)
|
||||
├── suites/ # Suites, each grouping related sub-features (auto-discovered)
|
||||
├── overlays/ # Core overlays
|
||||
└── _lib/ # Module schema helpers
|
||||
```
|
||||
@@ -93,7 +93,10 @@ Features are auto-discovered by `import-tree` — no central imports file. Each
|
||||
then explicitly imported in `home-manager/home.nix` via `suiteModules.homeManager.<name>`.
|
||||
|
||||
**Where to put a new feature:**
|
||||
- Shared / reusable across machines → `azos-core/features/<name>/default.nix`
|
||||
- Shared / reusable across machines → inside an existing or new suite directory,
|
||||
`azos-core/suites/<suite>/<name>/default.nix` (registering
|
||||
`config.flake.modules.homeManager.<suite>`) — never a bare file directly under
|
||||
`azos-core/suites/`; every azos-core feature belongs to a suite.
|
||||
- Machine-specific → `azos/features/<name>/default.nix`
|
||||
|
||||
## Code Style Guidelines
|
||||
@@ -125,7 +128,7 @@ All features follow this flake-parts registration pattern:
|
||||
|
||||
### Naming Conventions
|
||||
- Option paths: `azos.<module-name>.<option>`
|
||||
- Module names: kebab-case (`git-config`, `claude-memory`)
|
||||
- Module names: kebab-case (`git-config`, `station`)
|
||||
- Feature directories: kebab-case, one `default.nix` per feature
|
||||
- Variables: kebab-case
|
||||
|
||||
@@ -193,15 +196,18 @@ specialisation = {
|
||||
|
||||
## Adding New Modules
|
||||
|
||||
1. Create `features/<name>/default.nix` (machine-specific) or `azos-core/features/<name>/default.nix` (shared)
|
||||
1. Create `features/<name>/default.nix` (machine-specific) or, for shared features,
|
||||
`azos-core/suites/<suite>/<name>/default.nix` inside an existing or new suite
|
||||
(registering `config.flake.modules.homeManager.<suite>`, not a standalone module name)
|
||||
2. Use the module template above
|
||||
3. Add `suiteModules.homeManager.<name>` to the imports list in `home-manager/home.nix`
|
||||
3. Machine-specific: add `suiteModules.homeManager.<name>` to the imports list in
|
||||
`home-manager/home.nix`. Shared: no change needed if the suite is already imported.
|
||||
4. Run `nix fmt`
|
||||
|
||||
> **Submodule gotcha**: New files in `azos-core/` must be `git add`-ed inside the submodule
|
||||
> before `nix build` will see them — Nix flakes only evaluate git-tracked files.
|
||||
> ```bash
|
||||
> cd azos-core && git add features/<name>/
|
||||
> cd azos-core && git add suites/<suite>/<name>/
|
||||
> ```
|
||||
|
||||
## Claude Integration
|
||||
@@ -210,10 +216,15 @@ Claude Code is integrated with this environment via several azos-core features:
|
||||
|
||||
| Feature | Option | What it does |
|
||||
|---------|--------|--------------|
|
||||
| `azos-core/features/claude-memory` | `azos.claude-memory.enable` | Registers org-roam-mcp as a global MCP server in `~/.claude.json` |
|
||||
| `azos-core/features/claude-skills` | `azos.claude-skills.enable` | Deploys skills to `~/.claude/commands/` and content to `~/.claude/CLAUDE.md` |
|
||||
| `azos-core/suites/base/claude-memory` | `azos.claude-memory.enable` | Registers org-roam-mcp as a global MCP server in `~/.claude.json` |
|
||||
| `azos-core/suites/base/claude-skills` | `azos.claude-skills.enable` | Deploys skills to `~/.claude/commands/` and content to `~/.claude/CLAUDE.md` |
|
||||
| `azos/features/claude` | `azos.claude.enable` | Installs claude-code, auto-enables the above two |
|
||||
|
||||
Both claude-memory and claude-skills register `config.flake.modules.homeManager.base`
|
||||
(they live inside the `base` suite, since that's where agent-shell is introduced) — not
|
||||
standalone module names, so no separate `suiteModules.homeManager.*` import is needed for
|
||||
them in `home-manager/home.nix`.
|
||||
|
||||
### Adding Claude skills or standing instructions
|
||||
From any module — no need to touch azos-core:
|
||||
```nix
|
||||
@@ -223,7 +234,7 @@ azos.claude.globalMdSections.my-rule = ''
|
||||
Always do X when Y.
|
||||
'';
|
||||
```
|
||||
See `azos-core/features/claude-skills/README.md` for full documentation.
|
||||
See `azos-core/suites/base/claude-skills/README.md` for full documentation.
|
||||
|
||||
## Key Files
|
||||
|
||||
@@ -236,10 +247,10 @@ See `azos-core/features/claude-skills/README.md` for full documentation.
|
||||
| `nixos/configuration-vm.nix` | Test VM config |
|
||||
| `overlays/` | Package overlays |
|
||||
| `azos-core/` | Shared feature library (git submodule) |
|
||||
| `azos-core/features/` | Shared features (auto-discovered by import-tree) |
|
||||
| `azos-core/suites/` | Suites, each grouping related shared sub-features (auto-discovered by import-tree) |
|
||||
| `features/` | Machine-specific features (auto-discovered by import-tree) |
|
||||
| `azos-core/features/editor/emacs/config.org` | Literate Emacs config |
|
||||
| `azos-core/features/claude-skills/README.md` | Claude skills extensibility docs |
|
||||
| `azos-core/suites/editor/emacs/config.org` | Literate Emacs config |
|
||||
| `azos-core/suites/base/claude-skills/README.md` | Claude skills extensibility docs |
|
||||
|
||||
## Common Tasks
|
||||
|
||||
|
||||
Reference in New Issue
Block a user