# 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` - `w` — сохранить - `h` — убрать подсветку поиска - `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//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` ### 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. ### 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 ```