- 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)
4.2 KiB
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), не разворачиваются.
Развёртывание
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.
Зашифровать файл:
age -r age1a7wrnp3gw725pmhgffm6kurephmad9220g057mrwgvkrr5xcws7qg5z2xk \
-o dot_config/resticprofile/encrypted_pass.txt.age \
dot_config/resticprofile/pass.txt
SSH-ключи
Ключи хранятся в self-hosted Bitwarden (pass.ada-dev.ru):
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 |
resticprofile -n dotfiles backup
resticprofile snapshots
resticprofile -n dotfiles restore latest /tmp/restore
Коммиты
backup: YYYY-MM-DD HH:MM — для плановых бэкапов; обычные описательные сообщения — для изменений конфигов.