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:
@@ -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` для плановых бэкапов. Для изменений конфигов — обычные описательные сообщения.
|
||||
Reference in New Issue
Block a user