Files

5.4 KiB

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/.

Развёртывание

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.

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