---
slug: "dotfiles-shunk031"
source_type: "readme"
source_url: "https://cdn.jsdelivr.net/gh/d-kimuson/dotfiles@main/README.md"
repo: "https://github.com/d-kimuson/dotfiles"
source_file: "README.md"
branch: "main"
---
# dotfiles

**chezmoi** と **home-manager (Nix)** ベースで構築された個人用dotfiles.

- chezmoi:
  - 設定ファイル(~/.zshrc, ...etc)をリポジトリ管理
- home-manager:
  - Nixでグローバルに追加するツールを管理

## ディレクトリ構造

```
.chezmoiroot           # chezmoi/ をソースディレクトリとして指定
chezmoi/               # chezmoi 以下が同期される設定ファイル群
  dot_agents/          # → ~/.agents
  dot_claude/          # → ~/.claude
  dot_zshrc.tmpl       # → ~/.zshrc
  private_dot_config/  # → ~/.config/
    home-manager/      # home-manager 設定
shell/                 # 共有シェルスクリプト (.zshrc から読み込み)
scripts/               # セットアップ・メンテナンス用スクリプト
config/                # $HOME 以下に同期はしない設定ファイル (starship, MCP)
```

## セットアップ

```bash
bash -c "$(curl -fsLS https://raw.githubusercontent.com/d-kimuson/dotfiles/refs/heads/main/scripts/setup.sh)"
```

上記を実行することで

1. chezmoi がインストールされ、設定が配布される
2. Nix & home-manager がインストールされる
3. home-manager によって各種ツールがインストールされる

の流れでセットアップが完了。

```bash
exec $SHELL -l
```

でシェル設定も読み込んでおく。

## メンテナンス

### 設定を反映したい

```bash
dotfiles-apply
```

chezmoi apply + home-manager switch + シェル再読み込みが実行される。

### nix 管理のツールをアップデートしたい

```bash
./scripts/update.sh
```

`mise`, `direnv`, `zed-editor` は stable pin、それ以外は主に unstable を利用している。

### 環境固有の設定を追加したい

shell/localrc.sh を追加し、環境変数等追加したい設定を記載

```bash:shell/localrc.sh
export TERM=xterm-256color
```

### 同期で管理できない設定ファイルの配布

```bash
internal-cli mcp deliver
internal-cli pi-agent deliver
internal-cli merge-config
```

- `internal-cli mcp deliver`: `config/mcp.template.json` を各種 MCP 設定へ配布
  - `~/.pi/agent/` は必要に応じて自動作成
  - `~/.claude.json`
  - `~/Library/Application Support/Claude/claude_desktop_config.json`
  - `~/.codex/config.toml`
  - `~/.pi/agent/mcp.json`

### pi-agent のマシン別設定

`config/pi-agent/` の共有設定と `internal/src/pi-agent/model-profiles.json` をベースに、git 管理しない local 設定を重ねて `~/.pi/agent/` へ配布する。

- `config/pi-agent/providers.local.json`: このマシンで利用可能な provider を `availableProviders` で指定
- `config/pi-agent/settings.json` + model profile + `config/pi-agent/settings.local.json` → `~/.pi/agent/settings.json`
- `config/pi-agent/models.json` + existing target + `config/pi-agent/models.local.json` → `~/.pi/agent/models.json`
- `config/pi-agent/agents/frontend_worker.md` + `design` profile + `config/pi-agent/agents/frontend_worker.local.json` → `~/.pi/agent/agents/frontend_worker.md`

```json:config/pi-agent/providers.local.json
{
  "availableProviders": ["opencode-go", "openai-codex"]
}
```

local 設定は top-level key 単位でマージされ、model profile から `enabledModels` / `defaultProvider` / `defaultModel` / agent ごとの `model` / `fallbackModels` / `thinking` が展開される。

`models.json` は既存の `~/.pi/agent/models.json` を保持しつつ、provider ごとの `models` を `id` で upsert する。dry-run では secret を含む可能性がある target 内容は表示しない。
