27 lines
1.3 KiB
Markdown
27 lines
1.3 KiB
Markdown
|
|
# AGENTS.md
|
||
|
|
|
||
|
|
This document outlines the development conventions for this NixOS-based infrastructure repository.
|
||
|
|
|
||
|
|
## Build & Deployment
|
||
|
|
|
||
|
|
- **Build/Deploy:** Use `nixos-rebuild switch --flake .#<hostname>` to build and deploy the configuration for a specific host.
|
||
|
|
- **Development Shell:** Activate the development environment with `nix develop`.
|
||
|
|
|
||
|
|
## Linting & Formatting
|
||
|
|
|
||
|
|
- **Formatting:** This project uses `nixpkgs-fmt` for automatic formatting. Ensure it is run before committing changes.
|
||
|
|
- `nixpkgs-fmt .`
|
||
|
|
- **Linting:** No specific linter is configured, but adhere to standard Nix language conventions.
|
||
|
|
|
||
|
|
## Testing
|
||
|
|
|
||
|
|
- No automated testing suite is configured. Manually verify changes by deploying to a non-critical host.
|
||
|
|
|
||
|
|
## Code Style & Conventions
|
||
|
|
|
||
|
|
- **Imports:** Keep module imports clean and organized at the top of files.
|
||
|
|
- **Naming:** Follow Nix community conventions for variable and function names (e.g., `camelCase` for variables, `kebab-case` for package names).
|
||
|
|
- **Secrets:** Secrets are managed with `agenix`. Edit encrypted files with `agenix -e <file>`.
|
||
|
|
- **Modularity:** Structure configurations into logical, reusable modules under `modules/`. New modules should be registered in `modules/nixos/default.nix` to be available to all hosts.
|
||
|
|
- **Error Handling:** Ensure Nix expressions are robust and handle potential evaluation errors gracefully.
|