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