migrate: stow → chezmoi

- restructure repo to chezmoi conventions (dot_ prefix, private_dot_ssh/)
- add nvim config (was untracked)
- encrypt restic pass.txt with age
- remove stow artifacts (.stow-local-ignore, stow package dirs)
- update bootstrap.sh to use chezmoi apply
- remove runtime files from tracking (micro buffers, zed backup)
This commit is contained in:
Dmitry
2026-05-13 18:28:01 +03:00
parent 3c680e6f68
commit 7c8a4893de
56 changed files with 789 additions and 185 deletions
+81
View File
@@ -0,0 +1,81 @@
# AGENTS.md
This file provides guidance to Codex (Codex.ai/code) when working with code in this repository.
## Репозиторий
Dotfiles под управлением **GNU Stow**. Каждый каталог верхнего уровня — это stow-пакет. `stow -t ~ <package>/` создаёт симлинки из пакета в `$HOME`, сохраняя структуру подкаталогов.
Исключения (не разворачиваются через stow): `configs/`, `nixos/` — это утилитарные каталоги вне stow-конвенции, описаны в `.stow-local-ignore`.
## Развёртывание
```bash
# Все пакеты сразу
stow -t ~ */
# Один пакет
stow -t ~ zsh
# Проверить без применения (dry run)
stow -n -t ~ zsh
# Удалить симлинки пакета
stow -D -t ~ zsh
```
Быстрый старт на новой машине — `bootstrap.sh` (устанавливает зависимости + запускает stow + меняет shell на zsh).
## Структура пакетов
| Пакет | Что настраивает |
|---|---|
| `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` |
## SSH-конфиг
Конфиги разбиты по файлам с числовым префиксом (приоритет — чем меньше, тем раньше):
- `00-globals.conf` — глобальные дефолты
- `10-local.conf` — локальная сеть
- `20-selfhost.conf` — self-hosted сервисы
- `30-corporate.conf` — рабочие хосты
- `40-proxy.conf` — proxy jump / socks
## Zsh-конфиг
Загрузочный порядок: `.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)
Машинно-специфичные настройки кладутся в `config/local.zsh` (не в репозитории).
## Restic-бэкапы
Профили в `restic/.config/resticprofile/profiles.yaml`. Хранилище — Яндекс.Диск через rclone remote `yadisk`. Пароль репозитория — `pass.txt` (в репозитории, не публичен).
```bash
resticprofile -n dotfiles backup # бэкап конфигов
resticprofile snapshots # список снимков
resticprofile -n dotfiles check # проверка целостности
```
## Коммиты
Стиль коммитов: `backup: YYYY-MM-DD HH:MM` для плановых бэкапов. Для изменений конфигов — обычные описательные сообщения.