dotfilesを専用のbareリポジトリ1つで管理する
dotfiles-bareは、私のmacOS環境の設定ファイル(dotfiles)をまとめたリポジトリです。シンボリックリンクや管理ツールを使わず、gitの bare リポジトリ 1つで $HOME 直下の設定をそのままバージョン管理しています。
ソースコードはGitHub: Mekann2904/dotfiles-bareで公開しています。
なぜbareリポジトリで管理するか
dotfilesの管理には GNU Stow や chezmoi、yadm など専用ツールが多数あります。それらを導入せずとも、gitのbareリポジトリを $HOME/.dotfiles に置き、work-treeを $HOME に向ければ、シンボリックリンクを一切張らずにホームディレクトリのファイルをそのまま追跡できます。
bare方式の選定理由は、ターミナル勉強会資料「ターミナル勉強会2025」の4.3.3節でも整理しています。具体的な構築方法は「ターミナル勉強会2025」の78ページを参照してください。
日常の操作は、gitコマンドをラップしたエイリアスで行います。
alias dot='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
alias lazydot='lazygit --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'dot add ~/.zshrc && dot commit のように、普通のgitと同じ感覚で設定を更新できます。TUIで差分を見たいときは lazydot で lazygit を立ち上げます。
管理している設定
macOSをタイル型ウィンドウマネージャ環境として使うための構成です。
| 対象 | ツール | 役割 |
|---|---|---|
.zshrc / .zimrc | Zsh + Zim | シェル本体。Zimで高速に初期化 |
.vimrc | Vim | エディタ設定 |
.config/aerospace | Aerospace | タイル型ウィンドウマネージャ |
.config/kitty | Kitty | GPU描画のターミナルエミュレータ |
.config/sketchybar | Sketchybar | カスタマイズ可能なメニューバー |
.config/zsh-abbr | zsh-abbr | 展開型のエイリアス管理 |
.hammerspoon | Hammerspoon | macOSの自動化スクリプト |
新しいマシンをセットアップするときは、このリポジトリを $HOME/.dotfiles にクローンして dot checkout するだけで、シェル・エディタ・ウィンドウマネージャまわりの環境が揃うようになっている。(最近は新しい環境では見直しも含めて一から書き直すのもいいなとは思っている。今はバックアップとコミュニティに共有する側面が強い。)