Files
dotfiles/README.md
T
Dmitry Dementiev 559c1caf75 fix(codex): исправлен запуск через системный идентификатор
- Зачем:
  - обновлённое приложение запрещает прямой запуск ChatGPT.exe из WindowsApps.
- Что:
  - запуск переведён на активацию пакета по AUMID.
  - добавлены параметры Chromium для подключения к hproxy.local.
  - описание ярлыка обновлено в README.
- Проверка:
  - установленный скрипт завершился с кодом 0.
  - сетевой процесс Codex подключился к 127.0.0.1:12334.
2026-07-23 22:19:55 +03:00

12 KiB
Raw Blame History

Dotfiles

Персональные конфигурации для Linux/WSL (stow) и Windows (chezmoi).

🚀 Quick start

Linux / WSL

git clone https://github.com/ddmitry/dotfiles ~/dotfiles
cd ~/dotfiles
./install.sh

install.sh применяет stow-пакеты, настраивает Claude/Opencode, подключает ~/.bash_custom в ~/.bashrc и в WSL предлагает настроить hproxy.local.

Windows

winget install --id Microsoft.PowerShell
winget install twpayne.chezmoi
# ⚠️ Перезапустить терминал, чтобы pwsh и chezmoi попали в PATH
chezmoi -S "$HOME\dotfiles\chezmoi" apply

Chezmoi использует отдельный source dir chezmoi/ внутри этого репозитория, не трогая stow/install.sh workflow.

🔧 Требования

Linux / WSL

  • Ubuntu / Debian
  • GNU stow
  • Bash 4.0+, Tmux 2.0+, Vim 8.0+

Windows

  • Windows 10/11 + Developer Mode (Settings → System → For developers)
  • PowerShell 7.x
  • chezmoi

Windows PowerShell 5.1 остаётся legacy-режимом совместимости — не форсируется в UTF-8 и не тюнится.

📦 Что включено

Linux / WSL (stow)

Пакет Что делает
bash Кастомный prompt, общие функции, подгрузка секретов
proxy-client Переносимый CLI и Bash-команды для явного запуска через прокси
tmux Два префикса (Ctrl+b, Ctrl+Space), vi-режим, split по | / -
vim Минимальный .vimrc без плагинов, 2 пробела, leader = Space
zed Конфигурация Zed редактора
vscode server-env-setup для VS Code Server в WSL: секреты + авто-прокси

install.sh дополнительно настраивает opencode (симлинки, MCP-конфиг), claude (симлинкает settings.local.json из репозитория) и подключает bash_custom.

Windows (chezmoi)

  • PowerShell 7 profile — live-stub в ~/Documents/PowerShell/ загружает managed profile из ~/.config/powershell/profile.ps1
  • Git baseline — ~/.gitconfig с managed настройками, ~/.gitconfig.local для персональных overrides
  • Windows Terminal — идемпотентный скрипт: PS7 по умолчанию, PS 5.1 как legacy, Azure Cloud Shell скрыт
  • WezTerm — ~/.wezterm.lua как живая ссылка на wezterm/.wezterm.lua в репозитории
  • UTF-8 — chcp 65001 + Console.InputEncoding/OutputEncoding только для pwsh 7, не для PS 5.1
  • Codex Proxy shortcut — Start Menu ярлык для запуска Codex GUI с proxy-переменными
  • Claude Proxy — ярлык меню «Пуск» для запуска Claude Desktop с переменными прокси
  • Extension points — ~/.config/powershell/profile.extra.ps1 и profile.d/*.ps1 для локальных добавок

AI-инструменты (кросс-платформа)

Общие скиллы живут в agents/.agents/skills/ и расшариваются через симлинки.

Инструмент Что настраивается
Agents Каноничное хранилище скиллов: ~/.agents/skills/<name>/SKILL.md
Claude ~/.claude/skills → симлинк на agents; settings.local.json → симлинк на репозиторий (базовые permissions + statusLine); settings.json — управляется Claude Code
Opencode MCP-серверы (context7, web-reader, playwright и др.), ~/.config/opencode/skills → симлинк на agents
Codex ~/.codex/skills/ → симлинки на agents
Gemini Политики для CLI: pre-approved readonly команды

⚙️ Настройка

Секреты (.env.secrets)

cp bash/.env.secrets.example ~/.env.secrets

Содержимое — API-ключи для AI-инструментов:

export CONTEXT7_API_KEY="..."    # https://context7.com
export ZAI_API_KEY="..."         # https://z.ai

Файл подгружается при старте bash и VS Code Server. Не трекается в git.

Прокси (proxy-client)

Linux/Bash-интерфейс proxy-client поддерживает внешний прокси и управляемый пользовательский Xray. Без машинного конфига используется прежний Hiddify на hproxy.local:12334; автоматического запуска Xray и переключения между режимами нет.

Установка, выбор режима, WSL и ежедневное использование описаны рядом с пакетом. Windows PowerShell и ярлык Codex Proxy сохраняют прежнюю интеграцию с hproxy.local:12334. Ярлык запускает упакованное приложение через системный идентификатор и передаёт ему параметры Chromium --proxy-server и --proxy-bypass-list.

Claude Proxy передаёт переменные прокси и параметры Electron --proxy-server и --proxy-bypass-list, чтобы прокси применялся ко всему трафику Claude Desktop. Если Claude уже запущен обычным способом, его нужно полностью закрыть перед запуском через Claude Proxy.

Git baseline

На всех платформах фиксируются настройки для предсказуемого поведения:

Ключ Значение Зачем
core.autocrlf false Не переписывать line endings
core.eol lf Дефолт ближе к Linux/macOS
core.quotepath false Кириллица в путях читаема
core.longpaths true Длинные пути на Windows
fetch.prune true Убирать удалённые ветки
pull.ff only Защита от случайных merge commit
init.defaultBranch main —

Персональные настройки (user.name, user.email, core.editor, core.sshCommand) живут в ~/.gitconfig.local.

На Windows chezmoi при первом apply мигрирует существующий ~/.gitconfig в ~/.gitconfig.local и подставляет managed baseline. На Linux baseline задаётся вручную или через скрипты.

Проверка: git config --global --includes --list --show-origin.

Для кроссплатформенных репозиториев рекомендуется .gitattributes:

* text=auto eol=lf
*.bat text eol=crlf
*.cmd text eol=crlf

📖 Справочник

Bash-функции (~/.config/proxy-client/shell.bash)

Функция Описание
proxy_on Проверяет настроенный прокси и атомарно включает восемь переменных
proxy_off Очищает proxy-переменные
pclaude / pcodex Запуск Claude/Codex CLI через прокси с fail-fast pre-flight
myip Показывает текущий внешний IP
update_hproxy Остаётся в ~/.bash_functions и обновляет WSL NAT-алиас

PowerShell-функции (~/.config/powershell/profile.ps1)

Функция Описание
proxy_on Включает HTTP/HTTPS/SOCKS5 прокси через hproxy.local:12334
proxy_off Очищает proxy-переменные
pclaude / pcodex Запуск Claude/Codex CLI через прокси с fail-fast pre-flight
myip Показывает текущий внешний IP
Reload-Profile Перечитывает профиль без перезапуска сессии
which Get-Command -All по имени
touch Создаёт файл или обновляет LastWriteTime
mkcd Создаёт директорию и переходит в неё
open Invoke-Item — открывает путь
croot Переходит в корень текущего Git-репозитория
wt-here Новое окно Windows Terminal в текущей директории
wt-tab-here Новая вкладка в текущей директории
wt-split-here Split-pane в текущей директории

Точки расширения

Файл Назначение
~/.env.secrets API-ключи, подгружается bash и VS Code Server
~/.bash_aliases Персональные алиасы bash
~/.gitconfig.local Персональные Git-настройки (user.name, core.editor и т.д.)
~/.local/bin/start-claude-proxy.ps1 Скрипт запуска Claude Desktop для Windows с переменными прокси и параметрами Electron
~/.local/bin/start-codex-proxy.ps1 Запуск Codex для Windows через системный идентификатор с параметрами прокси
~/.config/powershell/profile.extra.ps1 Локальные дополнения к pwsh-профилю
~/.config/powershell/profile.d/*.ps1 Фрагменты, загружаемые по алфавиту
~/.claude/settings.json Управляется Claude Code: model, effortLevel, «always allow» permissions

💡 Дизайн-решения

Почему stow на Linux + chezmoi на Windows? stow проще и покрывает весь Linux/WSL workflow. chezmoi нужен на Windows, где stow недоступен и нужны run-скрипты (миграция .gitconfig, настройка Windows Terminal). Два инструмента живут рядом и не мешают друг другу: chezmoi использует отдельный source dir chezmoi/, а .chezmoiignore исключает Linux-файлы на Windows.

Почему Windows PowerShell 5.1 не трогается? Форсирование UTF-8 и изменение профиля PS 5.1 может сломать старые скрипты, .bat/.cmd и консольные утилиты. PS 7 — основной shell, PS 5.1 — режим совместимости.

Почему Claude settings.local.json — симлинк, а settings.json — нет? Claude Code перезаписывает settings.json при каждом «always allow» — этот файл принадлежит Claude Code. Базовые permissions и statusLine живут в settings.local.json, который Claude Code только читает и мержит с settings.json. Симлинк из ~/.claude/settings.local.json на файл в репозитории безопасен. Машинно-специфичные настройки (model, effortLevel) — в settings.json, управляются через Claude Code.