docs: add AGENTS.md for AI agents

This commit is contained in:
mikl 2026-07-02 21:48:36 +03:00
parent 475a103fad
commit 514090fced

135
AGENTS.md Normal file
View file

@ -0,0 +1,135 @@
# AGENTS.md
> для AI агентов, работающих с этим репозиторием
## what is this
- **declarative nix config** для нескольких хостов через nix-darwin + home-manager
- активный: **poppy** (MacBook Air M1)
- planned: **muscari** (NixOS server), **rosemary** (backup VM)
- user: `michaotic` (planned: `mikl`)
## structure
```
~/repos/nix-config/
├── flake.nix # entry point
├── flake.lock # locked deps
├── AGENTS.md # этот файл
├── garden.md # future plans, TODO, миграции
├── hosts/
│ ├── poppy/ # macbook (active daily driver)
│ │ ├── default.nix # основной конфиг
│ │ ├── apps.nix # brew casks + nix GUI пакеты
│ │ └── system.nix # macOS defaults
│ ├── muscari/ # NixOS server (planned)
│ └── common/ # shared NixOS config
├── home/ # home-manager modules
│ ├── default.nix # imports, sessionVariables
│ ├── cli.nix # CLI tools (universal)
│ ├── git.nix # git config
│ ├── ssh.nix # SSH matchBlocks
│ ├── zsh.nix # shell + aliases
│ ├── kitty.nix # terminal
│ ├── duti.nix # default apps
│ ├── pass.nix # pass + gpg-agent (только для GPG)
│ ├── syncthing.nix # p2p sync
│ ├── zoxide.nix
│ ├── bat.nix
│ ├── eza.nix
│ └── fzf.nix
└── docs/ # документация
├── structure.md # high-level overview
├── poppy.md # macbook specifics
├── muscari.md # server + k3s
├── shell.md # zsh + pure
├── terminal.md # kitty
├── ssh.md # SSH keys, FIDO2, recovery
├── apps.md # список приложений
├── cheatsheet.md # quick commands
└── bootstrap.md # manual setup guide
```
## commands
```bash
# rebuild poppy
sudo darwin-rebuild switch --flake .#poppy
# rebuild muscari
sudo nixos-rebuild switch --flake .#muscari
# validate before applying
nix flake check
# update dependencies
nix flake update
# cleanup old generations
nix-collect-garbage -d
```
## важные правила
### при работе с файлами
- **сначала показывай план**, потом делай
- **никогда** не удаляй user data (GPG, SSH ключи, pass-store)
- новые файлы в `home/` обсуждай перед созданием
- длинные изменения дроби на отдельные коммиты
### пакеты
- **CLI tools**`home/cli.nix` (universal)
- **GUI apps** через nix → `hosts/poppy/apps.nix` (use `environment.systemPackages`, NOT `home.packages`)
- **brew casks**`hosts/poppy/apps.nix` (тот же файл)
- **App Store apps** → ручная установка, в `docs/apps.md`
- **homebrew.onActivation.cleanup = "none"** (по умолчанию, безопаснее)
- `"zap"` удалит всё что не в nix config
### SSH ключи
- `home/ssh.nix` — matchBlocks для forgejo/github/sol.moe
- **не** добавляй `credential.helper` (мы ходим по SSH, не HTTPS)
- FIDO2 ключи (Ledger) — нужен `nixpkgs#libfido2` и `nixpkgs#openssh` через `nix shell`
- подробности в `docs/ssh.md`
### git workflow
- основной remote: `forgejo` (ssh://git@git.iscg.dev:2222/mikl/nix-config.git)
- **перед каждым значимым изменением** спрашивай подтверждение
- **не делай** `git push --force` без явного подтверждения
## backup и recovery
- **GPG ключ** → https://git.iscg.dev/mikl/gpg (private)
- **pass-store** → https://git.iscg.dev/mikl/pass (синхронизирован)
- **nix-config** → https://git.iscg.dev/mikl/nix-config
- **Obsidian traces** → https://git.iscg.dev/mikl/traces + Syncthing
- **Time Machine** → основной бэкап всего
## что в работе (TODO)
- sops-nix для `OPENROUTER_API_KEY`
- rosemary setup (NixOS VM)
- FIDO2 в nix-config постоянно (`libfido2`, `openssh`)
- pass-store remotes (github, git.sol.moe)
- pre-commit с alejandra
- uncomment aseprite в `hosts/poppy/apps.nix` (10-30 мин компиляции)
## новые хосты
при добавлении нового хоста:
1. создать `hosts/<name>/{default,system}.nix`
2. добавить в `flake.nix` `mkNixos` или `mkDarwin`
3. создать `docs/<name>.md` с описанием
4. обновить `garden.md`
## контекст для пользователя
- студент, hse university
- интересы: LLM/AI, it infra, self-hosted, литература
- ADHD, прокрастинация — **не отвлекай** на ненужные темы
- общается на русском и английском
- использует Telegram MCP, Forgejo MCP, SearXNG
- конфиг для macOS, учится nix
- не спеши, показывай план, спрашивай подтверждения