7c8a4893de
- 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)
96 lines
4.2 KiB
Markdown
96 lines
4.2 KiB
Markdown
# 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` — для плановых бэкапов; обычные описательные сообщения — для изменений конфигов.
|