Files
dotfiles/README.md
T
ddadmin d357e743fa feat(vscode): добавлен server-env-setup для WSL и загрузки секретов
- Зачем:
  - требуется передавать переменные из ~/.env.secrets в окружение VS Code Server в WSL.
- Что:
  - добавлен stow-пакет vscode с файлом ~/.vscode-server/server-env-setup.
  - реализована загрузка ~/.env.secrets через source в режиме fail-open с warning в stderr.
  - обновлен README: раздел VS Code (WSL), установка через stow/вручную, reconnect и обработка конфликтов.
- Проверка:
  - bash -n vscode/.vscode-server/server-env-setup.
  - stow -nvt ~ vscode.
  - запуск скрипта с валидным, отсутствующим и битым ~/.env.secrets в изолированном HOME.
2026-03-06 20:28:13 +03:00

235 lines
9.1 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
- Режим `fail-open`: при проблеме с файлом выводится warning, запуск 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/`
## 🚀 Установка
### Stow (рекомендуется)
```bash
# Установка stow
sudo apt install stow
# Применение конфигов
cd /path/to/dotfiles
stow bash tmux vim zed vscode agents opencode codex claude
```
Важно: `bash` пакет кладет файлы `~/.bash_custom`, `~/.bash_functions`, `~/.bash_prompt`. Убедитесь, что ваш `~/.bashrc` содержит строку:
```bash
[ -f ~/.bash_custom ] && source ~/.bash_custom
```
### Ручная установка
```bash
# Bash
cp bash/.bash_custom ~/.bash_custom
cp bash/.bash_functions ~/.bash_functions
cp bash/.bash_prompt ~/.bash_prompt
# Подключите кастомные настройки в ~/.bashrc (один раз)
# [ -f ~/.bash_custom ] && source ~/.bash_custom
source ~/.bashrc
# Tmux
cp tmux/.tmux.conf ~/
tmux source-file ~/.tmux.conf
# Vim
cp vim/.vimrc ~/
# Zed
mkdir -p ~/.config/zed
cp zed/.config/zed/* ~/.config/zed/ 2>/dev/null || true
# VS Code (WSL)
mkdir -p ~/.vscode-server
cp vscode/.vscode-server/server-env-setup ~/.vscode-server/server-env-setup
chmod +x ~/.vscode-server/server-env-setup
# Opencode
mkdir -p ~/.config/opencode
cp opencode/.config/opencode/* ~/.config/opencode/
# Agents (shared skills)
mkdir -p ~/.agents/skills
cp -r agents/.agents/skills/* ~/.agents/skills/
# Codex (bridge to shared skills)
mkdir -p ~/.codex/skills
ln -snf ~/.agents/skills/conventional-commits ~/.codex/skills/conventional-commits
# Claude (bridge to shared skills)
mkdir -p ~/.claude
ln -snf ~/.agents/skills ~/.claude/skills
```
### Windows (chezmoi)
Для Windows используется [chezmoi](https://www.chezmoi.io/) — кросс-платформенный менеджер dotfiles.
> 💡 **Примечание:** chezmoi также работает на Linux/WSL, но stow предпочтительнее для полной функциональности.
**⚠️ Требования:**
- Developer Mode должен быть включён (для создания симлинков)
- 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
Для VS Code в WSL используется файл `~/.vscode-server/server-env-setup`.
В этом репозитории он находится в `vscode/.vscode-server/server-env-setup` и подгружает `~/.env.secrets` в окружение VS Code Server.
После установки/обновления файла сделайте одно из действий:
- `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
```
Скрипт работает в режиме `fail-open`: если `~/.env.secrets` отсутствует или содержит ошибку, VS Code продолжит запуск, а warning появится в логах.
См. `.env.example` для дополнительной информации.