feat(dotfiles): улучшена установка и управление конфигурацией

- Зачем:
  - нужен воспроизводимый способ установки на новую машину и защита от перезаписи tracked-файлов ИИ-инструментами.
- Что:
  - добавлен install.sh: stow всех пакетов, создание settings.local.json, chmod 444 на settings.json, автопатч .bashrc.
  - claude/settings.json разделён на базовый (permissions, statusLine) и локальный (model, effortLevel в settings.local.json).
  - добавлен .concept-software.ru в NO_PROXY в server-env-setup и bash_functions.
  - README переработан: install.sh как рекомендуемый способ, документация двухуровневых настроек Claude, Developer Mode hint, расширенное описание VS Code прокси.
- Проверка:
  - git clone + ./install.sh на чистой машине.
This commit is contained in:
ddadmin committed 2026-03-14 11:31:10 +03:00
1 parent 0009270c6e
commit 984db1b6d7
5 files changed
+118 -61

No files matched your search

+47 -56
View File
@@ -38,7 +38,8 @@
- **Файл:** `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 не блокируется
- Автоматическая настройка прокси: если `hproxy.local` резолвится, выставляются `HTTP_PROXY`, `HTTPS_PROXY`, `ALL_PROXY` (socks5), `NO_PROXY` и их lowercase-варианты
- Режим `fail-open`: если `~/.env.secrets` отсутствует или не загружается — warning в stderr, VS Code продолжает запуск
### Opencode
- **Директория:** `opencode/.config/opencode/`
@@ -62,68 +63,54 @@
### 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 команды
## 🚀 Установка
### Stow (рекомендуется)
### Автоматическая (рекомендуется)
```bash
# Установка stow
sudo apt install stow
# Применение конфигов
cd /path/to/dotfiles
stow bash tmux vim zed vscode agents opencode codex claude
git clone https://github.com/ddmitry/dotfiles ~/dotfiles
cd ~/dotfiles
./install.sh
```
Важно: `bash` пакет кладет файлы `~/.bash_custom`, `~/.bash_functions`, `~/.bash_prompt`. Убедитесь, что ваш `~/.bashrc` содержит строку:
Скрипт `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
# 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
cat > ~/.claude/settings.local.json <<'EOF'
{
"model": "opus",
"effortLevel": "high"
}
EOF
```
### Windows (chezmoi)
@@ -134,6 +121,7 @@ ln -snf ~/.agents/skills ~/.claude/skills
**⚠️ Требования:**
- Developer Mode должен быть включён (для создания симлинков)
> Settings → System → For developers → Developer Mode → On
- PowerShell 5.0+ или PowerShell Core
**Установка (два шага):**
@@ -215,8 +203,15 @@ export ZAI_API_KEY="your_zai_api_key_here"
### VS Code Server в WSL
Для VS Code в WSL используется файл `~/.vscode-server/server-env-setup`.
В этом репозитории он находится в `vscode/.vscode-server/server-env-setup` и подгружает `~/.env.secrets` в окружение VS Code Server.
Файл `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
@@ -228,7 +223,3 @@ export ZAI_API_KEY="your_zai_api_key_here"
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` для дополнительной информации.