Files
dotfiles/README.md
T
ddadmin 6d5ac4fb57 Add Windows support via chezmoi
- Add .chezmoiroot to preserve stow structure
- Add .chezmoiignore to exclude Linux-only packages on Windows
- Add PowerShell scripts for path conversion and skills symlinks
- Update README with Windows installation instructions
- Tested: vim, agents, codex, claude, opencode configs work on Windows
2026-02-28 00:20:30 +03:00

206 lines
7.4 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 редактора
### 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/`
## 🚀 Установка
### Ручная установка
```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
# 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
```
### Stow (рекомендуется для Linux/WSL)
```bash
# Установка stow
sudo apt install stow
# Применение конфигов
cd /path/to/dotfiles
stow bash tmux vim zed agents opencode codex claude
```
Важно: `bash` пакет кладет файлы `~/.bash_custom`, `~/.bash_functions`, `~/.bash_prompt`. Убедитесь, что ваш `~/.bashrc` содержит строку:
```bash
[ -f ~/.bash_custom ] && source ~/.bash_custom
```
### 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.
См. `.env.example` для дополнительной информации.