dotfiles/AGENTS.md
2025-10-22 13:38:59 +07:00

35 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Repository Guidelines
## Project Structure & Module Organization
- `flake.nix` defines shared helpers plus Darwin (`macbook-pro`) and NixOS (`dev-vm`) hosts; `flake.lock` pins inputs.
- `modules/darwin/` holds macOS system modules; `modules/nixos/` mirrors that for Linux (base `system.nix` imports `users.nix`, `network.nix`, `ssh.nix`, `containerization.nix`).
- Host overlays live under `modules/nixos/hosts/`—e.g., `dev-vm.nix` adds virtio tooling and host-only packages.
- User configuration is in `modules/home/rsydn/` with subdirectories for `programs/`, `shell/`, and `devtools/`; Darwin layers on `shell/nushell.nix` while Linux sticks to `shell/fish.nix`.
- Secrets stay in `secrets/*.sops.yaml`; decrypted files appear under `~/.config/secrets/` at activation and must not be committed.
## Build, Test & Development Commands
- `nix develop` enter the flake dev shell with `git`, `nixfmt-classic`, SOPS/Age helpers.
- `nix fmt` format all Nix sources; run before commits touching modules or overlays.
- `XDG_CACHE_HOME=$PWD/.cache nix flake check` lint and eval every host without polluting the global cache.
- `darwin-rebuild --dry-run --flake .#macbook-pro` / `darwin-rebuild switch --flake .#macbook-pro` preview or apply macOS changes.
- `nix build .#nixosConfigurations.dev-vm.config.system.build.toplevel` make sure the Linux VM evaluates and builds before switching.
## Coding Style & Naming Conventions
- Use two-space indentation, trailing commas, and lower-kebab filenames (`shell/nushell.nix`).
- Declare custom options under the `rsydn.*` namespace (e.g., `rsydn.containerization`, `rsydn.devTools`).
- Prefer declarative package toggles and shared modules over ad-hoc host tweaks; keep host-specific overrides in `hosts/`.
## Testing Guidelines
- Treat `nix flake check` as mandatory before PRs or `switch` operations.
- Capture key activation output: `darwin-rebuild --dry-run` for macOS, `nix build .#nixosConfigurations.dev-vm…` for the VM, and attach summaries in reviews.
- Co-locate regression tests with the option/module they guard using the `<option-name>.nix` pattern when practical.
## Commit & Pull Request Guidelines
- Write short, imperative subjects (`add dev-vm virtualization module`); keep each commit scoped to one change.
- In PRs, list validation steps (`nix flake check`, host-specific builds) and link related issues or TODOs.
- Provide screenshots or terminal snippets when altering shell prompts, Tailscale/SSH flows, or other UX-facing pieces.
## Security & Configuration Tips
- Age keys live at `~/.config/sops/age/keys.txt`; regenerate via Home Manager if missing.
- Access secrets by reading the managed files (`open ~/.config/secrets/openai-api-key | str trim`) and scope them with `with-env` instead of exporting globally.
- Tailscale and OpenSSH run by default on Linux; rotate auth keys regularly and audit `services.tailscale.extraUpFlags` when enabling exit nodes.