feat: update AGENTS.md and config.toml for chezmoi integration; enhance dot_zshrc with fastfetch support
This commit is contained in:
@@ -1,81 +1,115 @@
|
|||||||
# AGENTS.md
|
# 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 ~ <package>/` создаёт симлинки из пакета в `$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
|
```bash
|
||||||
# Все пакеты сразу
|
chezmoi apply # применить изменения
|
||||||
stow -t ~ */
|
chezmoi diff # посмотреть будущие изменения
|
||||||
|
chezmoi status # краткий статус
|
||||||
# Один пакет
|
chezmoi add ~/.some/file # начать отслеживать новый файл
|
||||||
stow -t ~ zsh
|
chezmoi re-add # синхронизировать source после ручных правок в ~
|
||||||
|
|
||||||
# Проверить без применения (dry run)
|
|
||||||
stow -n -t ~ zsh
|
|
||||||
|
|
||||||
# Удалить симлинки пакета
|
|
||||||
stow -D -t ~ zsh
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Быстрый старт на новой машине — `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/` |
|
| `dot_config/zsh/` | Zsh: модульный `.zshrc`, Powerlevel10k, конфиги в `config/*.zsh` |
|
||||||
| `git/` | `.gitconfig`, `.gitignore_global` |
|
| `dot_config/nvim/` | LazyVim на `lazy.nvim`, кастомные плагины в `lua/plugins/` |
|
||||||
| `ssh/` | `~/.ssh/config` (Include-based) + `config.d/` с нумерованными секциями |
|
| `dot_config/kitty/` | Основной терминал: Nord, FiraCode Nerd Font, opacity, startup fastfetch |
|
||||||
| `tmux/` | `.tmux.conf` (базовый) + `.tmux.conf.local` (кастомизации) |
|
| `dot_config/alacritty/` | Запасной терминал |
|
||||||
| `nvim/` | LazyVim-конфиг с `init.lua` и `lua/config/` |
|
| `dot_config/resticprofile/` | Профили restic/resticprofile |
|
||||||
| `alacritty/` | Терминал alacritty (запасной) |
|
| `dot_config/zed/` | Настройки Zed |
|
||||||
| `kitty/` | Основной терминал: Nord, вкладки, сплиты, kitty graphics protocol |
|
| `dot_config/micro/` | Настройки micro |
|
||||||
| `zed/` | Редактор Zed |
|
| `dot_config/fastfetch/` | Fastfetch |
|
||||||
| `restic/` | Resticprofile: бэкапы на Яндекс.Диск через rclone |
|
| `dot_local/bin/` | Пользовательские скрипты |
|
||||||
| `fastfetch/` | Системный fetch |
|
| `private_dot_ssh/` | SSH-конфиг, публичные ключи, зашифрованные приватные ключи |
|
||||||
| `micro/` | Редактор micro |
|
| `dot_codex/` | Глобальный конфиг Codex, разворачивается в `~/.codex` |
|
||||||
| `vim/` | `.vimrc` |
|
| `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` — глобальные дефолты
|
- `00-globals.conf` — глобальные дефолты
|
||||||
- `10-local.conf` — локальная сеть
|
- `10-local.conf` — локальная сеть
|
||||||
- `20-selfhost.conf` — self-hosted сервисы
|
- `20-selfhost.conf` — self-hosted сервисы
|
||||||
- `30-corporate.conf` — рабочие хосты
|
- `30-corporate.conf` — рабочие хосты
|
||||||
- `40-proxy.conf` — proxy jump / socks
|
- `40-proxy.conf` — proxy jump / socks
|
||||||
|
|
||||||
## Zsh-конфиг
|
Приватные ключи зашифрованы через age. Если нужен ручной импорт, источник — self-hosted Bitwarden `pass.ada-dev.ru`.
|
||||||
|
|
||||||
Загрузочный порядок: `.zshenv` → `ZDOTDIR` → `.zshrc` → `config/*.zsh`:
|
## 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)
|
|
||||||
|
|
||||||
Машинно-специфичные настройки кладутся в `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
|
```bash
|
||||||
resticprofile -n dotfiles backup # бэкап конфигов
|
backup-menu # интерактивное меню, алиас bm
|
||||||
resticprofile snapshots # список снимков
|
resticprofile -n dotfiles backup
|
||||||
resticprofile -n dotfiles check # проверка целостности
|
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 без прямого запроса.
|
||||||
|
|||||||
@@ -14,3 +14,9 @@ enabled = true
|
|||||||
|
|
||||||
[plugins."presentations@openai-primary-runtime"]
|
[plugins."presentations@openai-primary-runtime"]
|
||||||
enabled = true
|
enabled = true
|
||||||
|
|
||||||
|
[projects."/home/ada/dotfiles"]
|
||||||
|
trust_level = "trusted"
|
||||||
|
|
||||||
|
[tui.model_availability_nux]
|
||||||
|
"gpt-5.5" = 1
|
||||||
|
|||||||
@@ -2,6 +2,11 @@
|
|||||||
# Ada's Modular ZSH Configuration
|
# 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 ══════════════════════════
|
# ═══ Powerlevel10k Instant Prompt ══════════════════════════
|
||||||
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
|
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
|
||||||
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
|
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"
|
[[ -f "${ZDOTDIR}/.p10k.zsh" ]] && source "${ZDOTDIR}/.p10k.zsh"
|
||||||
|
|
||||||
# ═══ Fastfetch ══════════════════════════════════════════════
|
autoload -Uz add-zsh-hook
|
||||||
[[ -z "$TMUX" && "$TERM_PROGRAM" == "kitty" ]] && fastfetch
|
|
||||||
|
|
||||||
# ═══ Напоминания ════════════════════════════════════════════
|
# ═══ Напоминания ════════════════════════════════════════════
|
||||||
# Запускаем после первого промпта, чтобы не конфликтовать с p10k instant prompt
|
# Запускаем после первого промпта, чтобы не конфликтовать с p10k instant prompt
|
||||||
|
|||||||
Reference in New Issue
Block a user