Files
dotfiles/README.md
T
ddadminandClaude Opus 4.6 98484ad220 feat(wsl): добавлен boot-скрипт для автоматического резолва hproxy.local
- Зачем:
  - старая команда в wsl.conf дублировала записи в /etc/hosts при каждом ребуте.
  - настройка hproxy.local не была задокументирована в репозитории.
- Что:
  - создан идемпотентный скрипт scripts/setup-hproxy.sh (sed + append).
  - в install.sh добавлен интерактивный вопрос о подключении скрипта в wsl.conf.
  - в README.md добавлена документация по настройке hproxy.local (NAT и Mirror).
- Проверка:
  - cat /etc/wsl.conf, wsl --shutdown, getent hosts hproxy.local.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 11:11:03 +03:00

261 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Dotfiles
Персональные конфигурационные файлы для настройки рабочего окружения.
## 📦 Содержимое
### Bash
- **Файлы:** `bash/.bash_custom`, `bash/.bash_functions`, `bash/.bash_prompt`
- Подключение кастомных bash-файлов (функции, prompt, секреты) поверх стандартного `~/.bashrc`
- Кастомный двухстрочный prompt (подключается из `~/.bash_prompt`)
- Поддержка цветного вывода и автодополнения
### Tmux
- **Файл:** `tmux/.tmux.conf`
- Два префикса: `Ctrl+b` (стандартный) и `Ctrl+Space` (удобный)
- Визуальный стиль с синей цветовой схемой
- Vi-режим для копирования
- Горячие клавиши:
- `|` / `-` — разделение панелей
- `Alt+стрелки` — изменение размера панелей и переключение окон
- `r` — перезагрузка конфига
### Vim
- **Файл:** `vim/.vimrc`
- Минималистичная конфигурация без плагинов
- 2 пробела вместо табов (оптимально для YAML/XML)
- Поддержка мыши и подсветка поиска
- Leader key: `Space`
- `<Space>w` — сохранить
- `<Space>h` — убрать подсветку поиска
- `<Space>p` — вставка без форматирования
### Zed
- **Директория:** `zed/.config/zed/`
- Структура для конфигурации Zed редактора
### VS Code (WSL)
- **Файл:** `vscode/.vscode-server/server-env-setup`
- Поддержка `~/.vscode-server/server-env-setup` для VS Code Server в WSL
- Подгрузка `~/.env.secrets` для расширений, задач/debug и терминалов VS Code
- Автоматическая настройка прокси: если `hproxy.local` резолвится, выставляются `HTTP_PROXY`, `HTTPS_PROXY`, `ALL_PROXY` (socks5), `NO_PROXY` и их lowercase-варианты
- Режим `fail-open`: если `~/.env.secrets` отсутствует или не загружается — warning в stderr, VS Code продолжает запуск
### Opencode
- **Директория:** `opencode/.config/opencode/`
- Конфигурация AI-ассистента opencode с MCP-серверами:
- **context7** — документация библиотек
- **web-reader** — чтение веб-страниц
- **web-search-prime** — поиск в интернете
- **zread** — чтение GitHub репозиториев
- **playwright** — браузерная автоматизация
- Требует переменных окружения (см. `.env.example`)
- Скиллы берутся из общего пакета `agents/.agents/skills/` через симлинк `~/.config/opencode/skills`
### Agents (shared skills)
- **Директория:** `agents/.agents/skills/`
- Каноничное место для общих скиллов в формате `~/.agents/skills/<name>/SKILL.md`
### Codex
- **Директория:** `codex/.codex/skills/`
- Тонкие симлинки в `~/.codex/skills/` на общие skills из `~/.agents/skills/`
### Claude
- **Директория:** `claude/.claude/`
- Тонкий симлинк `~/.claude/skills` на общие skills из `~/.agents/skills/`
- **Двухуровневые настройки:**
- `settings.json` (в dotfiles, read-only) — стабильная база: permissions, statusLine
- `settings.local.json` (локальный, не в git) — машинно-специфичное: model, effortLevel
- Claude Code мержит оба файла, `settings.local.json` имеет приоритет
- `settings.json` защищён `chmod 444`, чтобы Claude Code не перезаписывал tracked файл
### Gemini
- **Директория:** `gemini/.gemini/`
- Политики для Gemini CLI: pre-approved readonly команды
## 🚀 Установка
### Автоматическая (рекомендуется)
```bash
sudo apt install stow
git clone https://github.com/ddmitry/dotfiles ~/dotfiles
cd ~/dotfiles
./install.sh
```
Скрипт `install.sh`:
- Применяет все stow пакеты
- Создаёт `~/.claude/settings.local.json` с дефолтными model/effortLevel
- Защищает `settings.json` от перезаписи (`chmod 444`)
- Автоматически добавляет подключение bash_custom в `~/.bashrc`
- В WSL предлагает настроить автоматический резолв `hproxy.local` (см. ниже)
### Stow вручную
```bash
sudo apt install stow
cd /path/to/dotfiles
stow bash tmux vim zed vscode agents opencode codex claude gemini
```
После stow добавьте в `~/.bashrc` (если не используете `install.sh`):
```bash
[ -f ~/.bash_custom ] && source ~/.bash_custom
```
Создайте локальные настройки Claude:
```bash
cat > ~/.claude/settings.local.json <<'EOF'
{
"model": "opus",
"effortLevel": "high"
}
EOF
```
### Windows (chezmoi)
Для Windows используется [chezmoi](https://www.chezmoi.io/) — кросс-платформенный менеджер dotfiles.
> 💡 **Примечание:** chezmoi также работает на Linux/WSL, но stow предпочтительнее для полной функциональности.
**⚠️ Требования:**
- Developer Mode должен быть включён (для создания симлинков)
> Settings → System → For developers → Developer Mode → On
- PowerShell 5.0+ или PowerShell Core
**Установка (два шага):**
```powershell
# 1. Установка chezmoi
winget install twpayne.chezmoi
# 2. Инициализация (клонирует репо)
chezmoi init ddmitry/dotfiles
# 3. Первое применение (подготавливает структуру)
chezmoi apply
# 4. Второе применение (копирует файлы в правильные места)
chezmoi apply
```
**Примечания:**
- После шага 4 все файлы будут на месте: `~/.vimrc`, `~/.agents/skills/`, `~/.config/opencode/`, и т.д.
- Симлинки для skills создаются автоматически только если включен Developer Mode
- Без Developer Mode AI-ассистенты будут работать с прямыми копиями skills
**Что доступно на Windows:**
- ✅ Vim
- ✅ Agents (shared skills)
- ✅ Codex (с симлинками на skills)
- ✅ Claude (с симлинками на skills)
- ✅ Opencode (с симлинками на skills)
**Что НЕ доступно на Windows:**
- ❌ Bash (Linux-only)
- ❌ Tmux (Linux-only)
- ❌ Zed (пути конфигурации отличаются)
## 🔧 Требования
### Linux/WSL
- Linux (протестировано на Ubuntu)
- Bash 4.0+
- Tmux 2.0+
- Vim 8.0+
### Windows
- Windows 10/11 с Developer Mode
- PowerShell 5.0+ или PowerShell Core
- [chezmoi](https://www.chezmoi.io/)
## 📝 Дополнительные файлы
Для полной настройки создайте:
- `~/.bash_aliases` — персональные алиасы
- `~/.env.secrets` — приватные переменные окружения (API ключи)
## 🔑 Переменные окружения
### Кастомные функции bash
Файл `bash/.bash_functions` содержит пользовательские функции (proxy_on/off, myip и др.).
При использовании `stow bash` он будет доступен как `~/.bash_functions`.
### Приватные переменные (секреты)
1. Скопируйте шаблон:
```bash
cp bash/.env.secrets.example ~/.env.secrets
```
2. Отредактируйте и добавьте API ключи:
```bash
# Context7 API (https://context7.com)
export CONTEXT7_API_KEY="your_context7_api_key_here"
# Z.AI API для LLM, поиска и чтения (https://z.ai)
export ZAI_API_KEY="your_zai_api_key_here"
```
Файл `~/.env.secrets` автоматически подгружается при старте shell.
### WSL: настройка hproxy.local
Имя `hproxy.local` используется как алиас для хоста, на котором работает прокси-сервер. Это позволяет функциям `proxy_on`/`proxy_off` и VS Code Server не зависеть от конкретного IP-адреса.
**NAT mode** (по умолчанию в WSL2) — IP шлюза меняется при каждом запуске, поэтому нужен автоматический boot-скрипт:
```bash
# Вариант 1: через install.sh (интерактивно)
./install.sh # ответьте "y" на вопрос про wsl.conf
# Вариант 2: вручную
sudo tee -a /etc/wsl.conf <<'EOF'
[boot]
command = "/path/to/dotfiles/scripts/setup-hproxy.sh"
EOF
```
После изменения `wsl.conf` перезапустите WSL: `wsl --shutdown`.
Обновить `hproxy.local` без перезапуска WSL:
```bash
sudo scripts/setup-hproxy.sh
# или
update_hproxy # интерактивная функция из .bash_functions
```
**Mirror mode** (`networkingMode=mirrored` в `.wslconfig`) — WSL разделяет сетевой стек с хостом, IP не меняется. Достаточно один раз прописать запись в Windows hosts:
```
# C:\Windows\System32\drivers\etc\hosts
192.168.1.100 hproxy.local
```
### VS Code Server в WSL
Файл `vscode/.vscode-server/server-env-setup` выполняется при каждом старте VS Code Server в WSL и делает две вещи:
1. **Загружает `~/.env.secrets`** — API ключи становятся доступны расширениям, задачам и терминалам VS Code. Если файл отсутствует или содержит ошибку, выводится warning в stderr, запуск не блокируется.
2. **Настраивает прокси** — если `hproxy.local` резолвится (через `/etc/hosts` или DNS в режиме mirror), автоматически выставляются:
- `HTTP_PROXY` / `http_proxy` → `http://hproxy.local:12334`
- `HTTPS_PROXY` / `https_proxy` → `http://hproxy.local:12334`
- `ALL_PROXY` / `all_proxy` → `socks5://hproxy.local:12334`
- `NO_PROXY` / `no_proxy` → `hproxy.local,localhost,127.0.0.1,.concept-software.ru`
После установки/обновления файла сделайте одно из действий:
- `Developer: Reload Window` в VS Code
- или `Remote-WSL: Reconnect to WSL`
Если у вас уже есть локальный `~/.vscode-server/server-env-setup`, stow может сообщить конфликт.
Тогда сохраните старую версию и примените stow повторно:
```bash
mv ~/.vscode-server/server-env-setup ~/.vscode-server/server-env-setup.bak.$(date +%Y%m%d%H%M%S)
stow -vt ~ vscode
```