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,95 @@
|
||||
# CLAUDE.md
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
## Репозиторий
|
||||
|
||||
Dotfiles под управлением **chezmoi**. Исходники в `~/dotfiles`, chezmoi разворачивает их в `$HOME`.
|
||||
|
||||
Файлы именуются по chezmoi-конвенции:
|
||||
- `dot_` префикс → `.` в имени файла/папки (`dot_zshenv` → `~/.zshenv`)
|
||||
- `private_` префикс → права 700 (`private_dot_ssh/` → `~/.ssh/`)
|
||||
- `encrypted_` + суффикс `.age` → расшифровывается при apply (`encrypted_pass.txt.age` → `pass.txt`)
|
||||
|
||||
Каталог `configs/` — служебные конфиги вне chezmoi (danted, awg, telemt), не разворачиваются.
|
||||
|
||||
## Развёртывание
|
||||
|
||||
```bash
|
||||
chezmoi apply # применить изменения
|
||||
chezmoi diff # посмотреть что изменится
|
||||
chezmoi status # краткий статус
|
||||
chezmoi add ~/.some/file # начать отслеживать новый файл
|
||||
chezmoi re-add # синхронизировать source после ручных правок в ~
|
||||
```
|
||||
|
||||
На новой машине — `bootstrap.sh` (устанавливает зависимости + запускает `chezmoi apply`).
|
||||
|
||||
## Шифрование
|
||||
|
||||
age-ключ: `~/.config/chezmoi/key.txt` (вне репо, хранить в безопасном месте).
|
||||
Конфиг chezmoi: `~/.config/chezmoi/chezmoi.toml`.
|
||||
|
||||
Зашифровать файл:
|
||||
```bash
|
||||
age -r age1a7wrnp3gw725pmhgffm6kurephmad9220g057mrwgvkrr5xcws7qg5z2xk \
|
||||
-o dot_config/resticprofile/encrypted_pass.txt.age \
|
||||
dot_config/resticprofile/pass.txt
|
||||
```
|
||||
|
||||
## SSH-ключи
|
||||
|
||||
Ключи хранятся в self-hosted Bitwarden (`pass.ada-dev.ru`):
|
||||
```bash
|
||||
bw config server https://pass.ada-dev.ru
|
||||
bw login
|
||||
bw get item <название ключа> | jq -r '.sshKey.privateKey' > ~/.ssh/id_ed25519
|
||||
```
|
||||
|
||||
## SSH-конфиг
|
||||
|
||||
`private_dot_ssh/config` + `config.d/` с числовым префиксом (чем меньше — тем выше приоритет):
|
||||
- `00-globals.conf` — глобальные дефолты
|
||||
- `10-local.conf` — локальная сеть
|
||||
- `20-selfhost.conf` — self-hosted сервисы
|
||||
- `30-corporate.conf` — рабочие хосты
|
||||
- `40-proxy.conf` — proxy jump / socks
|
||||
|
||||
## Zsh-конфиг
|
||||
|
||||
`dot_config/zsh/dot_zshrc` → `~/.config/zsh/.zshrc`, загружает модули из `config/*.zsh`:
|
||||
`env.zsh` → `options.zsh` → `plugins.zsh` (zinit) → `completion.zsh` → `aliases.zsh` → `functions.zsh` → `keybindings.zsh` → `prompt.zsh`
|
||||
|
||||
Промпт — Powerlevel10k, конфиг в `dot_config/zsh/dot_p10k.zsh`.
|
||||
Машинно-специфичные настройки — `~/.config/zsh/config/local.zsh` (вне репо).
|
||||
|
||||
## Nvim
|
||||
|
||||
LazyVim на базе `lazy.nvim`. Кастомные плагины в `dot_config/nvim/lua/plugins/`:
|
||||
- `colorscheme.lua` — тема Nord (`gbprod/nord.nvim`)
|
||||
- `langmapper.lua` — дублирует маппинги для русской раскладки ЙЦУКЕН
|
||||
|
||||
## Kitty
|
||||
|
||||
Основной терминал. `dot_config/kitty/startup.conf` запускает fastfetch при старте. Nord, FiraCode Nerd Font 14pt, opacity 0.90.
|
||||
|
||||
## Restic-бэкапы
|
||||
|
||||
Профили в `dot_config/resticprofile/profiles.yaml`. Хранилище — Яндекс.Диск через rclone remote `yadisk`. Пароль репозитория — `encrypted_pass.txt.age` (расшифровывается chezmoi при apply).
|
||||
|
||||
| Профиль | Источник | Частота |
|
||||
|---|---|---|
|
||||
| `dotfiles` | `~/.dotfiles`, `~/.config`, `~/.ssh` | каждые 6 ч |
|
||||
| `projects` | `~/Documents/Projects` | каждый час |
|
||||
| `vaults` | `~/Documents/Vaults` | каждый час |
|
||||
| `files` | `~/Documents/Files` | ежедневно 02:15 |
|
||||
|
||||
```bash
|
||||
resticprofile -n dotfiles backup
|
||||
resticprofile snapshots
|
||||
resticprofile -n dotfiles restore latest /tmp/restore
|
||||
```
|
||||
|
||||
## Коммиты
|
||||
|
||||
`backup: YYYY-MM-DD HH:MM` — для плановых бэкапов; обычные описательные сообщения — для изменений конфигов.
|
||||
Reference in New Issue
Block a user