nix-config/AGENTS.md

131 lines
5.5 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.

# 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: `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) + zoxide, bat, eza, fzf
│ ├── git.nix # git config
│ ├── ssh.nix # SSH matchBlocks
│ ├── zsh.nix # shell + aliases
│ ├── kitty.nix # terminal
│ ├── duti.nix # default apps (macOS only)
│ ├── pass.nix # pass + gpg-agent (только для GPG)
│ └── syncthing.nix # p2p sync
└── 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
- не спеши, показывай план, спрашивай подтверждения