# 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 без прямого запроса.