macOS の設定ファイルを chezmoi の symlink モードで 管理するリポジトリ。
実配置先(~/.config/wezterm/wezterm.lua など)がこのリポジトリ内のファイルへの
シンボリックリンクになる。実ファイルを編集すればリポジトリが即座に更新されるため、
変更を「取り込む」操作は不要。
ただし一部のファイルは chezmoi の仕様により実ファイルとして書き出される。
その場合はリポジトリ側を編集して chezmoi apply する向きで運用する。
配置しているファイルと、あえて管理していないファイルは
管理対象ファイル にまとめてある。
実際に配置されているものは chezmoi managed でも確認できる。
brew install chezmoi jq fzf
git clone git@github.com:topi-log/dotfiles.git ~/workspace/dotfiles~/.config/chezmoi/chezmoi.toml を手で作る。chezmoi init は使わない
(後述)。
mkdir -p ~/.config/chezmoi
cat > ~/.config/chezmoi/chezmoi.toml <<'TOML'
mode = "symlink"
sourceDir = "~/workspace/dotfiles"
[data]
# Claude Code で有効にするプラグイン
claudePlugins = { "ruby-lsp@claude-plugins-official" = true }
# Claude Code の追加マーケットプレイス
claudeMarketplaces = {}
TOML公開したくない設定(社内マーケットプレイスなど)はこの [data] に書く。
このファイルは chezmoi の管理対象外なのでリポジトリには入らない。
配置する。
chezmoi diff # 何が変わるか必ず確認する
chezmoi apply初回の chezmoi apply では、カスタム版lumenを自動ビルドし、
~/.local/bin/lumen-custom と Cmd+Shift+R のレビュー起動設定を導入する。
不足しているRust、GitHub CLI、WezTermはHomebrewでインストールする。
初回のビルドには数分かかる。実行時にRustは不要。
WezTermが使うHackGen Consoleが無い場合は、その場で導入するか聞かれる
(断ってもフォールバックフォントで動く)。
lumen本体の固定コミットと、このリポジトリに同梱したカスタマイズ差分から
構築するため、別途lumenのローカルリポジトリを用意する必要はない。
ソースとCPUアーキテクチャの記録が一致している場合、再ビルドを省略する。
手動で再確認する場合は ~/.config/scripts/install-lumen-custom を実行する。
GitHubレビューの取得には別途 gh auth login が必要。
常時ガイドの個別設定は各PCの ~/.config/lumen/review-shortcuts.json に保存される。
カスタマイズの更新方法は lumenの導入・更新 を参照。
wlay、cst、denv は ~/.config/scripts に置かれる。このディレクトリは
管理下の ~/.zprofile が PATH に追加するので、追加の設定は要らない。
chezmoi init は source 内の .chezmoi.toml.tmpl から
~/.config/chezmoi/chezmoi.toml を 上書き生成 する。このリポジトリは
public なので [data] の実際の値をテンプレートに書けず、init を実行すると
手で入れた設定が失われる。そのため設定テンプレートを置かず、config は
手管理にしている。
ローカルで動かす開発環境を登録しておき、起動状況とポートを見ながら
起動・停止する。denv で一覧が開く。
NAME PORT STATUS DIR
web-app 3000 ● up ~/workspace/web-app
admin - ○ down ~/workspace/admin
| キー | 動作 |
|---|---|
a / e / d |
環境を追加 / 変更 / 削除 |
enter |
起動中なら停止、停止中なら起動 |
l |
ログを追従表示 |
? |
ヘルプ |
a を押すと名前・ディレクトリ・起動コマンド・停止コマンドを順に聞かれる。
ポートは登録せず、起動したプロセスが実際に LISTEN しているものを表示する。
同じ操作は denv start <name> のようにコマンドでもできる。
残りのキーと詳細は denv help か denv を参照。
| やりたいこと | コマンド |
|---|---|
| 配置する | chezmoi apply |
| 配置前に差分を見る | chezmoi diff |
| 新しいファイルを管理下に入れる | chezmoi add ~/.config/foo |
| 実ファイルの変更を取り込む | chezmoi re-add <path>(テンプレートには使えない) |
| リポジトリ側を編集する | chezmoi edit <path> |
| 管理下のファイルを一覧する | chezmoi managed |
symlink で管理しているファイルは、実ファイルを編集すればそのまま
リポジトリへの編集になる。git diff で確認してコミットする。
~/.claude/settings.json はテンプレートなので symlink にならない。
Claude Code が /model や /config でこのファイルを書き換えると、
リポジトリとの差分が生まれる。chezmoi diff で気づけるので、変更を
リポジトリ側に写して chezmoi apply する。
chezmoi diff # 差分を確認
chezmoi edit ~/.claude/settings.json # ソースの .tmpl を開く
chezmoi applychezmoi re-add はテンプレートには使えない(chezmoi の仕様)。
zsh は読み込むタイミングが違う設定ファイルを持つ。役割を混ぜると設定同士が 衝突するため、次のように分けている。
| ファイル | 読まれるタイミング | 置くもの |
|---|---|---|
~/.zprofile |
ログインシェルで 1 回 | 環境変数と PATH |
~/.zshrc |
対話シェルを開くたび | エイリアス、プロンプト、補完、シェル関数 |
環境変数は export すれば子プロセスに継承されるので .zprofile で一度
設定すれば足りる。一方でエイリアスやプロンプトは継承されないため、対話シェル
ごとに .zshrc で設定し直す必要がある。
macOS の端末(Terminal.app、iTerm、wezterm)は既定でログインシェルとして
起動するため両方が読まれる。そのためどちらに書いても動いてしまうが、
VS Code の統合ターミナルのような非ログイン対話シェルでは .zshrc だけが
読まれるので、この分担を守らないと環境によって挙動が変わる。
マシンごとに導入状況が違うツール(nodenv、rbenv、PostgreSQL、Flutter、Go、 VS Code)は存在チェックを通してから設定する。入っていないマシンでは黙って スキップされるので、同じ設定ファイルをどのマシンでも使える。
.zshrc は ~/.zsh/git-completion.bash があれば git の補完に使う。この
ファイルは git 公式のもので GPL-2.0 なので、このリポジトリでは配布していない。
必要なら取得する(なくても補完以外は動く)。
mkdir -p ~/.zsh
curl -o ~/.zsh/git-completion.bash \
https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash
curl -o ~/.zsh/_git \
https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.zshプロンプトの git ブランチ表示は zsh 組み込みの vcs_info を使っているため、
外部スクリプト(git-prompt.sh)は不要。
~/.config と ~/.config/karabiner 配下は 0700。chezmoi のディレクトリの
既定は 0755 なので、そのままでは apply でパーミッションが緩む。これを防ぐため
source 側のディレクトリに private_ 接頭辞をつけている
(private_dot_config、private_karabiner など)。
~/workspace を移動・整理すると全ての symlink が切れる。
source directory がこのリポジトリの場所を指しているため。切れた場合は
~/.config/chezmoi/chezmoi.toml の sourceDir を新しいパスに書き換えて
chezmoi apply を再実行する。
- 管理対象ファイル — 配置するファイルと除外したファイル
- wezterm の設定と wlay / cst — ターミナルの設定とキーバインド
- denv — 開発環境の起動状況の一覧と起動・停止
- lumen の導入・更新 — カスタム版 lumen のビルドと差分の更新
- Claude Code グローバル指示の日本語訳