2.5 KiB
2.5 KiB
AGENTS.md
This file provides guidelines for AI coding agents operating within this repository.
Build, Lint, and Test Commands
- Build:
make build-usb(Builds the NixOS workshop ISO) - Local VM:
make local-vm-run(Starts local development environment with 15 containers) - Lint:
make lint(Runs markdownlint, JSON validation, and nixpkgs-fmt) - Test:
make status-cloud(Health checks for cloud infrastructure) - Deploy:
make deploy-cloud(Deploys 15 VMs to Hetzner Cloud)
Code Style Guidelines
- Imports: Organize imports alphabetically. Avoid unused imports.
- Formatting: Adhere to Nixpkgs formatting conventions. Use
nixpkgs-fmtfor consistency. - Types: Use Nix's type system rigorously. Define types explicitly where possible.
- Naming Conventions:
- Variables and functions:
camelCasefor Nix expressions - Container/server names:
lowercase(hopper, curie, lovelace, etc.) - Script names:
kebab-casefor executables
- Variables and functions:
- SSH Keys: Always use Ed25519 keys (
~/.ssh/id_ed25519.pub) - Domain: Use
codecrispi.esconsistently across all environments - Password Policy: Minimize password usage; prefer key-based authentication
- Error Handling: Handle errors explicitly. Use Nix's error reporting mechanisms.
- Commit Messages: Use conventional commit style (
type: subject). Avoid scopes like(makefile). The subject should be in lowercase.
Container Architecture
- Local VM: Creates 15 containers (192.168.100.11-25) matching production count
- Container Names: hopper, curie, lovelace, noether, hamilton, franklin, johnson, clarke, goldberg, liskov, wing, rosen, shaw, karp, rich
- Networking: Private networking with NAT for local development
- DNS: Local
.localdomain resolution for testing
Available Scripts
connect <name>- SSH into specific containercontainers- List all containers with IPslogs- Show container setup logsrecipes- Display available Co-op Cloud recipeshelp- Show command help
Development Workflow
- Use
make local-vm-runfor local development - Test with all 15 containers to match production
- Use
make build-usbfor workshop USB drives - Deploy to cloud with
make deploy-cloud
General Guidelines
- Keep code concise and readable
- Prefer declarative over imperative approaches
- Document complex logic with comments
- Test locally before cloud deployment
- Maintain feature parity between USB/VM environments where possible