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

11 KiB
Raw Blame History

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 команды

🚀 Установка

Автоматическая (рекомендуется)

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 вручную

sudo apt install stow
cd /path/to/dotfiles
stow bash tmux vim zed vscode agents opencode codex claude gemini

После stow добавьте в ~/.bashrc (если не используете install.sh):

[ -f ~/.bash_custom ] && source ~/.bash_custom

Создайте локальные настройки Claude:

cat > ~/.claude/settings.local.json <<'EOF'
{
  "model": "opus",
  "effortLevel": "high"
}
EOF

Windows (chezmoi)

Для Windows используется chezmoi — кросс-платформенный менеджер dotfiles.

💡 Примечание: chezmoi также работает на Linux/WSL, но stow предпочтительнее для полной функциональности.

⚠️ Требования:

  • Developer Mode должен быть включён (для создания симлинков)

    Settings → System → For developers → Developer Mode → On

  • PowerShell 5.0+ или PowerShell Core

Установка (два шага):

# 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

📝 Дополнительные файлы

Для полной настройки создайте:

  • ~/.bash_aliases — персональные алиасы
  • ~/.env.secrets — приватные переменные окружения (API ключи)

🔑 Переменные окружения

Кастомные функции bash

Файл bash/.bash_functions содержит пользовательские функции (proxy_on/off, myip и др.). При использовании stow bash он будет доступен как ~/.bash_functions.

Приватные переменные (секреты)

  1. Скопируйте шаблон:
cp bash/.env.secrets.example ~/.env.secrets
  1. Отредактируйте и добавьте API ключи:
# 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-скрипт:

# Вариант 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:

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 повторно:

mv ~/.vscode-server/server-env-setup ~/.vscode-server/server-env-setup.bak.$(date +%Y%m%d%H%M%S)
stow -vt ~ vscode