116 lines
5.4 KiB
Markdown
116 lines
5.4 KiB
Markdown
# AGENTS.md
|
|
|
|
Инструкции для Codex при работе с этим репозиторием.
|
|
|
|
## Репозиторий
|
|
|
|
Dotfiles под управлением **chezmoi**. Исходники лежат в `~/dotfiles`, `chezmoi apply` разворачивает их в `$HOME`.
|
|
|
|
Файлы именуются по chezmoi-конвенции:
|
|
- `dot_` -> точка в имени файла или каталога: `dot_zshenv` -> `~/.zshenv`
|
|
- `private_` -> приватные права: `private_dot_ssh/` -> `~/.ssh/`
|
|
- `encrypted_*.age` -> зашифрованные секреты, расшифровываются при `chezmoi apply`
|
|
|
|
Корневые служебные файлы, не разворачиваемые в `$HOME`, описаны в `.chezmoiignore`: `README.md`, `CLAUDE.md`, `AGENTS.md`, `bootstrap.sh`, `.gitignore`, `.claude/`, `configs/`.
|
|
|
|
## Развёртывание
|
|
|
|
```bash
|
|
chezmoi apply # применить изменения
|
|
chezmoi diff # посмотреть будущие изменения
|
|
chezmoi status # краткий статус
|
|
chezmoi add ~/.some/file # начать отслеживать новый файл
|
|
chezmoi re-add # синхронизировать source после ручных правок в ~
|
|
```
|
|
|
|
На новой машине используется `bootstrap.sh`: устанавливает зависимости, создаёт `~/.ssh/sockets`, запускает `chezmoi apply --source "$DOTFILES_DIR"` и предлагает сменить shell на zsh.
|
|
|
|
## Шифрование
|
|
|
|
Age-ключ хранится вне репозитория: `~/.config/chezmoi/key.txt`.
|
|
Шаблон конфига chezmoi: `.chezmoi.toml.tmpl`.
|
|
|
|
Секреты в репозитории хранятся как `encrypted_*.age`, например:
|
|
- `dot_config/resticprofile/encrypted_pass.txt.age`
|
|
- `private_dot_ssh/encrypted_private_id_ed25519*.age`
|
|
|
|
Не расшифровывать и не коммитить plaintext-секреты.
|
|
|
|
## Структура
|
|
|
|
| Путь | Что настраивает |
|
|
|---|---|
|
|
| `dot_config/zsh/` | Zsh: модульный `.zshrc`, Powerlevel10k, конфиги в `config/*.zsh` |
|
|
| `dot_config/nvim/` | LazyVim на `lazy.nvim`, кастомные плагины в `lua/plugins/` |
|
|
| `dot_config/kitty/` | Основной терминал: Nord, FiraCode Nerd Font, opacity, startup fastfetch |
|
|
| `dot_config/alacritty/` | Запасной терминал |
|
|
| `dot_config/resticprofile/` | Профили restic/resticprofile |
|
|
| `dot_config/zed/` | Настройки Zed |
|
|
| `dot_config/micro/` | Настройки micro |
|
|
| `dot_config/fastfetch/` | Fastfetch |
|
|
| `dot_local/bin/` | Пользовательские скрипты |
|
|
| `private_dot_ssh/` | SSH-конфиг, публичные ключи, зашифрованные приватные ключи |
|
|
| `dot_codex/` | Глобальный конфиг Codex, разворачивается в `~/.codex` |
|
|
| `dot_claude/` | Глобальный конфиг Claude, разворачивается в `~/.claude` |
|
|
| `dot_gitconfig` | `~/.gitconfig` |
|
|
| `dot_gitignore_global` | `~/.gitignore_global` |
|
|
| `dot_tmux.conf`, `dot_tmux.conf.local` | tmux / oh-my-tmux |
|
|
| `dot_vimrc` | Vim |
|
|
|
|
## SSH
|
|
|
|
Основной файл: `private_dot_ssh/config`.
|
|
Дополнительные секции лежат в `private_dot_ssh/config.d/` с числовым префиксом:
|
|
- `00-globals.conf` — глобальные дефолты
|
|
- `10-local.conf` — локальная сеть
|
|
- `20-selfhost.conf` — self-hosted сервисы
|
|
- `30-corporate.conf` — рабочие хосты
|
|
- `40-proxy.conf` — proxy jump / socks
|
|
|
|
Приватные ключи зашифрованы через age. Если нужен ручной импорт, источник — self-hosted Bitwarden `pass.ada-dev.ru`.
|
|
|
|
## Zsh
|
|
|
|
`dot_zshenv` задаёт `ZDOTDIR=~/.config/zsh`.
|
|
|
|
`dot_config/zsh/dot_zshrc` загружает модули:
|
|
1. `env.zsh`
|
|
2. `options.zsh`
|
|
3. `plugins.zsh`
|
|
4. `completion.zsh`
|
|
5. `aliases.zsh`
|
|
6. `functions.zsh`
|
|
7. `keybindings.zsh`
|
|
8. `prompt.zsh`
|
|
|
|
Промпт — Powerlevel10k, конфиг: `dot_config/zsh/dot_p10k.zsh`.
|
|
Машинно-специфичные настройки: `~/.config/zsh/config/local.zsh`, вне репозитория.
|
|
|
|
## Nvim
|
|
|
|
LazyVim. Кастомные плагины:
|
|
- `dot_config/nvim/lua/plugins/colorscheme.lua` — Nord
|
|
- `dot_config/nvim/lua/plugins/langmapper.lua` — маппинги для русской раскладки ЙЦУКЕН
|
|
|
|
## Restic
|
|
|
|
Профили: `dot_config/resticprofile/profiles.yaml`.
|
|
Хранилище — Яндекс.Диск через rclone remote `yadisk`, зеркало — `cloud-pc`.
|
|
Пароль репозитория — `encrypted_pass.txt.age`, расшифровывается chezmoi.
|
|
|
|
```bash
|
|
backup-menu # интерактивное меню, алиас bm
|
|
resticprofile -n dotfiles backup
|
|
resticprofile -n dotfiles snapshots
|
|
resticprofile -n dotfiles restore latest /tmp/restore
|
|
```
|
|
|
|
На новой машине нужно один раз настроить rclone remotes `yadisk` и `cloud-pc`.
|
|
|
|
## Коммиты
|
|
|
|
`backup: YYYY-MM-DD HH:MM` — для плановых бэкапов.
|
|
Для изменений конфигов — обычные описательные сообщения.
|
|
|
|
Не добавлять Codex в co-authors без прямого запроса.
|