From a0db9cd0766e6fbfbbdadbee4ca2fc24278331be Mon Sep 17 00:00:00 2001 From: Dmitry Date: Wed, 13 May 2026 23:04:10 +0300 Subject: [PATCH] feat: update AGENTS.md and config.toml for chezmoi integration; enhance dot_zshrc with fastfetch support --- AGENTS.md | 130 ++++++++++++++++++++++++--------------- dot_codex/config.toml | 6 ++ dot_config/zsh/dot_zshrc | 8 ++- 3 files changed, 94 insertions(+), 50 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 7731091..da2b993 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,81 +1,115 @@ # AGENTS.md -This file provides guidance to Codex (Codex.ai/code) when working with code in this repository. +Инструкции для Codex при работе с этим репозиторием. ## Репозиторий -Dotfiles под управлением **GNU Stow**. Каждый каталог верхнего уровня — это stow-пакет. `stow -t ~ /` создаёт симлинки из пакета в `$HOME`, сохраняя структуру подкаталогов. +Dotfiles под управлением **chezmoi**. Исходники лежат в `~/dotfiles`, `chezmoi apply` разворачивает их в `$HOME`. -Исключения (не разворачиваются через stow): `configs/`, `nixos/` — это утилитарные каталоги вне stow-конвенции, описаны в `.stow-local-ignore`. +Файлы именуются по chezmoi-конвенции: +- `dot_` -> точка в имени файла или каталога: `dot_zshenv` -> `~/.zshenv` +- `private_` -> приватные права: `private_dot_ssh/` -> `~/.ssh/` +- `encrypted_*.age` -> зашифрованные секреты, расшифровываются при `chezmoi apply` + +Корневые служебные файлы, не разворачиваемые в `$HOME`, описаны в `.chezmoiignore`: `README.md`, `CLAUDE.md`, `AGENTS.md`, `bootstrap.sh`, `.gitignore`, `.claude/`, `configs/`. ## Развёртывание ```bash -# Все пакеты сразу -stow -t ~ */ - -# Один пакет -stow -t ~ zsh - -# Проверить без применения (dry run) -stow -n -t ~ zsh - -# Удалить симлинки пакета -stow -D -t ~ zsh +chezmoi apply # применить изменения +chezmoi diff # посмотреть будущие изменения +chezmoi status # краткий статус +chezmoi add ~/.some/file # начать отслеживать новый файл +chezmoi re-add # синхронизировать source после ручных правок в ~ ``` -Быстрый старт на новой машине — `bootstrap.sh` (устанавливает зависимости + запускает stow + меняет shell на zsh). +На новой машине используется `bootstrap.sh`: устанавливает зависимости, создаёт `~/.ssh/sockets`, запускает `chezmoi apply --source "$DOTFILES_DIR"` и предлагает сменить shell на zsh. -## Структура пакетов +## Шифрование -| Пакет | Что настраивает | +Age-ключ хранится вне репозитория: `~/.config/chezmoi/key.txt`. +Шаблон конфига chezmoi: `.chezmoi.toml.tmpl`. + +Секреты в репозитории хранятся как `encrypted_*.age`, например: +- `dot_config/resticprofile/encrypted_pass.txt.age` +- `private_dot_ssh/encrypted_private_id_ed25519*.age` + +Не расшифровывать и не коммитить plaintext-секреты. + +## Структура + +| Путь | Что настраивает | |---|---| -| `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` | +| `dot_config/zsh/` | Zsh: модульный `.zshrc`, Powerlevel10k, конфиги в `config/*.zsh` | +| `dot_config/nvim/` | LazyVim на `lazy.nvim`, кастомные плагины в `lua/plugins/` | +| `dot_config/kitty/` | Основной терминал: Nord, FiraCode Nerd Font, opacity, startup fastfetch | +| `dot_config/alacritty/` | Запасной терминал | +| `dot_config/resticprofile/` | Профили restic/resticprofile | +| `dot_config/zed/` | Настройки Zed | +| `dot_config/micro/` | Настройки micro | +| `dot_config/fastfetch/` | Fastfetch | +| `dot_local/bin/` | Пользовательские скрипты | +| `private_dot_ssh/` | SSH-конфиг, публичные ключи, зашифрованные приватные ключи | +| `dot_codex/` | Глобальный конфиг Codex, разворачивается в `~/.codex` | +| `dot_claude/` | Глобальный конфиг Claude, разворачивается в `~/.claude` | +| `dot_gitconfig` | `~/.gitconfig` | +| `dot_gitignore_global` | `~/.gitignore_global` | +| `dot_tmux.conf`, `dot_tmux.conf.local` | tmux / oh-my-tmux | +| `dot_vimrc` | Vim | -## SSH-конфиг +## SSH -Конфиги разбиты по файлам с числовым префиксом (приоритет — чем меньше, тем раньше): +Основной файл: `private_dot_ssh/config`. +Дополнительные секции лежат в `private_dot_ssh/config.d/` с числовым префиксом: - `00-globals.conf` — глобальные дефолты - `10-local.conf` — локальная сеть - `20-selfhost.conf` — self-hosted сервисы - `30-corporate.conf` — рабочие хосты - `40-proxy.conf` — proxy jump / socks -## Zsh-конфиг +Приватные ключи зашифрованы через age. Если нужен ручной импорт, источник — self-hosted Bitwarden `pass.ada-dev.ru`. -Загрузочный порядок: `.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) +## Zsh -Машинно-специфичные настройки кладутся в `config/local.zsh` (не в репозитории). +`dot_zshenv` задаёт `ZDOTDIR=~/.config/zsh`. -## Restic-бэкапы +`dot_config/zsh/dot_zshrc` загружает модули: +1. `env.zsh` +2. `options.zsh` +3. `plugins.zsh` +4. `completion.zsh` +5. `aliases.zsh` +6. `functions.zsh` +7. `keybindings.zsh` +8. `prompt.zsh` -Профили в `restic/.config/resticprofile/profiles.yaml`. Хранилище — Яндекс.Диск через rclone remote `yadisk`. Пароль репозитория — `pass.txt` (в репозитории, не публичен). +Промпт — Powerlevel10k, конфиг: `dot_config/zsh/dot_p10k.zsh`. +Машинно-специфичные настройки: `~/.config/zsh/config/local.zsh`, вне репозитория. + +## Nvim + +LazyVim. Кастомные плагины: +- `dot_config/nvim/lua/plugins/colorscheme.lua` — Nord +- `dot_config/nvim/lua/plugins/langmapper.lua` — маппинги для русской раскладки ЙЦУКЕН + +## Restic + +Профили: `dot_config/resticprofile/profiles.yaml`. +Хранилище — Яндекс.Диск через rclone remote `yadisk`, зеркало — `cloud-pc`. +Пароль репозитория — `encrypted_pass.txt.age`, расшифровывается chezmoi. ```bash -resticprofile -n dotfiles backup # бэкап конфигов -resticprofile snapshots # список снимков -resticprofile -n dotfiles check # проверка целостности +backup-menu # интерактивное меню, алиас bm +resticprofile -n dotfiles backup +resticprofile -n dotfiles snapshots +resticprofile -n dotfiles restore latest /tmp/restore ``` +На новой машине нужно один раз настроить rclone remotes `yadisk` и `cloud-pc`. + ## Коммиты -Стиль коммитов: `backup: YYYY-MM-DD HH:MM` для плановых бэкапов. Для изменений конфигов — обычные описательные сообщения. +`backup: YYYY-MM-DD HH:MM` — для плановых бэкапов. +Для изменений конфигов — обычные описательные сообщения. + +Не добавлять Codex в co-authors без прямого запроса. diff --git a/dot_codex/config.toml b/dot_codex/config.toml index 2144243..da28c12 100644 --- a/dot_codex/config.toml +++ b/dot_codex/config.toml @@ -14,3 +14,9 @@ enabled = true [plugins."presentations@openai-primary-runtime"] enabled = true + +[projects."/home/ada/dotfiles"] +trust_level = "trusted" + +[tui.model_availability_nux] +"gpt-5.5" = 1 diff --git a/dot_config/zsh/dot_zshrc b/dot_config/zsh/dot_zshrc index 6098578..41cc2b2 100644 --- a/dot_config/zsh/dot_zshrc +++ b/dot_config/zsh/dot_zshrc @@ -2,6 +2,11 @@ # Ada's Modular ZSH Configuration # ════════════════════════════════════════════════════════════ +# ═══ Fastfetch ══════════════════════════════════════════════ +if [[ -o interactive && -z "$TMUX" && -n "$KITTY_WINDOW_ID" ]] && command -v fastfetch &>/dev/null; then + fastfetch +fi + # ═══ Powerlevel10k Instant Prompt ══════════════════════════ if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" @@ -32,8 +37,7 @@ source "${ZSH_CONFIG_DIR}/prompt.zsh" [[ -f "${ZDOTDIR}/.p10k.zsh" ]] && source "${ZDOTDIR}/.p10k.zsh" -# ═══ Fastfetch ══════════════════════════════════════════════ -[[ -z "$TMUX" && "$TERM_PROGRAM" == "kitty" ]] && fastfetch +autoload -Uz add-zsh-hook # ═══ Напоминания ════════════════════════════════════════════ # Запускаем после первого промпта, чтобы не конфликтовать с p10k instant prompt