chezmoi で同じ内容のファイルを環境に応じて違うパスに配置する
例えば Neovim の設定ファイルは、基本的には XDG Base Directory ($HOME/.config
) に置くのだが、Windows だと %LOCALAPPDATA%
になっている、という具合に、環境によって同じファイルを違うパスに置くケースが存在する。
chezmoi は基本的に source のディレクトリ構造をそのまま配置する仕様になっているため、上記のようなことをしようとすると、同じ内容のファイルを2つ置くか、それを避けたい場合には (よっぽど短くなければ基本避けたい) 少し工夫する必要がある。
これもドキュメントにやり方が書いてある、以上。という話ではあるのだが、どうにも面倒なやり方をしているように思えたので、少し違う方法を使うことにした。
というのも、ドキュメントに従って template
を使う場合、nvim
以下の4つのファイルを配置するのに3箇所に記述する必要がある。.tmpl
は .chezmoitemplates
のファイルを参照するだけではあるが、面倒ではある。
template
ではなく include
を使うようにして、2箇所のうち片方には設定ファイルの実体、もう片方は include
するだけの .tmpl
としてあげれば、2箇所の記述のみで済ませられる。以下の例だと、dot_config
以下にはファイルの実体を置いていて、AppData
以下では dot_config
以下のファイルを include
している。
.chezmoiignore
は template
を使う場合と同様でよい。
設定を配置する2箇所の記述が非対称で美しくないという人もいるかもしれないが、個人的には記述が少ないほうがうれしいかなと思っている。好みの問題といえばそうかもしれない。