refactor: update Pi agent configuration and devShell
- Switch model provider from zai/glm-5.1 to minimax/MiniMax-M2.7 - Add coding rules for Nix language and standard concerns - Add linting tools (statix, deadnix) to devShell - Simplify devShell configuration - Update AGENTS.md project rules
This commit is contained in:
117
AGENTS.md
117
AGENTS.md
@@ -71,6 +71,123 @@ Personal NixOS configuration managing 6 hosts (4 servers, 2 desktops) using flak
|
||||
- **master**: Bleeding edge
|
||||
- **m3ta-nixpkgs**: Custom local overlay at `path:/home/m3tam3re/p/nix/nixpkgs`
|
||||
|
||||
## CODING RULES
|
||||
|
||||
This project uses coding rules from the AGENTS repository (`inputs.agents`) plus project-specific conventions.
|
||||
|
||||
### Standard Rules (AGENTS repo)
|
||||
|
||||
| Rule | Source | Purpose |
|
||||
|------|--------|---------|
|
||||
| `languages/nix.md` | AGENTS/rules/ | Nix language conventions, flake patterns |
|
||||
| `concerns/coding-style.md` | AGENTS/rules/ | General coding principles |
|
||||
| `concerns/naming.md` | AGENTS/rules/ | Naming conventions per language |
|
||||
| `concerns/documentation.md` | AGENTS/rules/ | Documentation standards |
|
||||
| `concerns/testing.md` | AGENTS/rules/ | Testing guidelines |
|
||||
| `concerns/git-workflow.md` | AGENTS/rules/ | Commit message format, branch naming |
|
||||
| `concerns/project-structure.md` | AGENTS/rules/ | Project layout conventions |
|
||||
|
||||
### NixOS-Config Specific Rules
|
||||
|
||||
#### Project Structure
|
||||
|
||||
```
|
||||
nixos-config/
|
||||
├── flake.nix # Entry point
|
||||
├── hosts/ # Host-specific NixOS configs
|
||||
│ ├── common/ # Shared: ports, users, base config
|
||||
│ ├── m3-atlas/ # Server with Traefik hub
|
||||
│ ├── m3-helios/ # AdGuard DNS
|
||||
│ ├── m3-ares/ # Desktop (NVIDIA)
|
||||
│ └── m3-kratos/ # Desktop (AMD)
|
||||
├── home/ # Home-manager configs
|
||||
│ ├── common/ # Shared home config
|
||||
│ ├── features/ # Feature modules (cli, desktop, coding)
|
||||
│ └── m3tam3re/ # User-specific configs
|
||||
├── modules/ # Custom NixOS/HM modules
|
||||
├── overlays/ # Package overlays
|
||||
├── pkgs/ # Custom packages
|
||||
└── secrets/ # Agenix encrypted secrets
|
||||
```
|
||||
|
||||
#### Naming Conventions
|
||||
|
||||
| Type | Convention | Example |
|
||||
|------|------------|---------|
|
||||
| Hosts | mythological-names | `m3-atlas`, `m3-helios` |
|
||||
| Files | hyphen-case | `my-service.nix` |
|
||||
| Variables | camelCase | `portHelpers`, `serviceConfig` |
|
||||
| Options | m3ta.* | `config.m3ta.ports.get` |
|
||||
| Packages | lowercase-hyphen | `hyprpaper-random` |
|
||||
|
||||
#### Nix Module Pattern
|
||||
|
||||
```nix
|
||||
{ config, lib, pkgs, ... }:
|
||||
with lib; let
|
||||
cfg = config.m3ta.myModule;
|
||||
in {
|
||||
options.m3ta.myModule = {
|
||||
enable = mkEnableOption "my module";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
# Configuration here
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
#### Anti-Patterns (Never Do)
|
||||
|
||||
| Don't | Do Instead |
|
||||
|-------|------------|
|
||||
| Hardcode ports | `config.m3ta.ports.get "service"` |
|
||||
| Skip secrets.nix update | Add keys first, then `agenix -e` |
|
||||
| Containers outside web network | `--network=web --ip=10.89.0.N` |
|
||||
| Skip Traefik for public services | Configure dynamic config |
|
||||
| Bypass extraServices flags | Use feature flags properly |
|
||||
| Use `fetchTarball` | Use flake inputs |
|
||||
| Use `with pkgs;` in modules | Explicit `pkgs.package` |
|
||||
|
||||
### Formatting & Linting
|
||||
|
||||
```bash
|
||||
# Format (alejandra)
|
||||
nix fmt
|
||||
|
||||
# Lint (statix, deadnix - only in dev shell)
|
||||
nix develop
|
||||
statix check .
|
||||
deadnix .
|
||||
|
||||
# Validate flake
|
||||
nix flake check
|
||||
```
|
||||
|
||||
### Commit Conventions
|
||||
|
||||
Format: `<type>: <brief description>`
|
||||
|
||||
Types: `feat`, `fix`, `docs`, `style`, `refactor`, `chore`
|
||||
|
||||
Examples:
|
||||
- `feat: add new host m3-hermes`
|
||||
- `fix: resolve port conflict in mem0 module`
|
||||
- `docs: update AGENTS.md with new service`
|
||||
- `style: format nix files`
|
||||
- `refactor: simplify port management`
|
||||
- `chore: update nixpkgs inputs`
|
||||
|
||||
### Tools in Dev Shell
|
||||
|
||||
| Tool | Purpose |
|
||||
|------|---------|
|
||||
| `alejandra` | Nix code formatter |
|
||||
| `nixd` | Nix language server |
|
||||
| `statix` | Nix linter |
|
||||
| `deadnix` | Find dead code |
|
||||
| `agenix` | Secret management |
|
||||
|
||||
## COMMANDS
|
||||
```bash
|
||||
# Build/deploy specific host
|
||||
|
||||
Reference in New Issue
Block a user