feat: update AGENTS.md and config.toml for chezmoi integration; enhance dot_zshrc with fastfetch support

This commit is contained in:
Dmitry
2026-05-13 23:04:10 +03:00
parent 07ef30e604
commit a0db9cd076
3 changed files with 94 additions and 50 deletions
+82 -48
View File
@@ -1,81 +1,115 @@
# AGENTS.md
This file provides guidance to Codex (Codex.ai/code) when working with code in this repository.
Инструкции для Codex при работе с этим репозиторием.
## Репозиторий
Dotfiles под управлением **GNU Stow**. Каждый каталог верхнего уровня — это stow-пакет. `stow -t ~ <package>/` создаёт симлинки из пакета в `$HOME`, сохраняя структуру подкаталогов.
Dotfiles под управлением **chezmoi**. Исходники лежат в `~/dotfiles`, `chezmoi apply` разворачивает их в `$HOME`.
Исключения (не разворачиваются через stow): `configs/`, `nixos/` — это утилитарные каталоги вне stow-конвенции, описаны в `.stow-local-ignore`.
Файлы именуются по 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
# Все пакеты сразу
stow -t ~ */
# Один пакет
stow -t ~ zsh
# Проверить без применения (dry run)
stow -n -t ~ zsh
# Удалить симлинки пакета
stow -D -t ~ zsh
chezmoi apply # применить изменения
chezmoi diff # посмотреть будущие изменения
chezmoi status # краткий статус
chezmoi add ~/.some/file # начать отслеживать новый файл
chezmoi re-add # синхронизировать source после ручных правок в ~
```
Быстрый старт на новой машине `bootstrap.sh` (устанавливает зависимости + запускает stow + меняет shell на zsh).
На новой машине используется `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-секреты.
## Структура
| Путь | Что настраивает |
|---|---|
| `zsh/` | Zsh: `.zshenv``ZDOTDIR=~/.config/zsh`, модульный `.zshrc` + 8 файлов в `config/` |
| `git/` | `.gitconfig`, `.gitignore_global` |
| `ssh/` | `~/.ssh/config` (Include-based) + `config.d/` с нумерованными секциями |
| `tmux/` | `.tmux.conf` (базовый) + `.tmux.conf.local` (кастомизации) |
| `nvim/` | LazyVim-конфиг с `init.lua` и `lua/config/` |
| `alacritty/` | Терминал alacritty (запасной) |
| `kitty/` | Основной терминал: Nord, вкладки, сплиты, kitty graphics protocol |
| `zed/` | Редактор Zed |
| `restic/` | Resticprofile: бэкапы на Яндекс.Диск через rclone |
| `fastfetch/` | Системный fetch |
| `micro/` | Редактор micro |
| `vim/` | `.vimrc` |
| `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-конфиг
## 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
## Zsh-конфиг
Приватные ключи зашифрованы через age. Если нужен ручной импорт, источник — self-hosted Bitwarden `pass.ada-dev.ru`.
Загрузочный порядок: `.zshenv``ZDOTDIR``.zshrc``config/*.zsh`:
1. `env.zsh` — переменные окружения
2. `options.zsh` — опции shell
3. `plugins.zsh` — плагины через zinit
4. `completion.zsh` — автодополнение
5. `aliases.zsh` — алиасы
6. `functions.zsh` — функции
7. `keybindings.zsh` — горячие клавиши
8. `prompt.zsh` — промпт (starship / p10k)
## Zsh
Машинно-специфичные настройки кладутся в `config/local.zsh` (не в репозитории).
`dot_zshenv` задаёт `ZDOTDIR=~/.config/zsh`.
## Restic-бэкапы
`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`
Профили в `restic/.config/resticprofile/profiles.yaml`. Хранилище — Яндекс.Диск через rclone remote `yadisk`. Пароль репозитория — `pass.txt` (в репозитории, не публичен).
Промпт — 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
resticprofile -n dotfiles backup # бэкап конфигов
resticprofile snapshots # список снимков
resticprofile -n dotfiles check # проверка целостности
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` для плановых бэкапов. Для изменений конфигов — обычные описательные сообщения.
`backup: YYYY-MM-DD HH:MM` для плановых бэкапов.
Для изменений конфигов — обычные описательные сообщения.
Не добавлять Codex в co-authors без прямого запроса.