はじめに
dotfilesをchezmoiで管理しているのですが、使わなくなったファイルをソースディレクトリから削除しても、ターゲットの実ファイルはそのまま残り続けます。
複数マシンで運用していると他のマシンに使わなくなったファイルが残り続けてしまうので、.chezmoiremoveファイルを使って削除されるようにしているので、紹介します。
.chezmoiremove について
If a file called .chezmoiremove (with an optional .tmpl extension) exists in the source state then it is interpreted as a list of targets to remove. .chezmoiremove is interpreted as a template, whether or not it has a .tmpl extension.
ソース状態で「.chezmoiremove」という名前のファイル(オプションで「.tmpl」という拡張子が付いている場合もある)が存在する場合、そのファイルは削除対象のリストとして解釈されます。「.chezmoiremove」は、拡張子が「.tmpl」であるかどうかにかかわらず、テンプレートとして解釈されます。
DeepLによる日本語訳
リファレンスの説明の通り、削除対象のターゲットのリストとして解釈され、chezmoi applyのタイミングで該当するファイルが削除されます。
そのため、.chezmoiremove自体をGit管理することで、どのマシンでもchezmoi applyをするだけで削除できるようになります。
.config/alacritty/alacritty.toml
.config/zellij/config.kdl
私の運用例
.chezmoiremoveは「ファイルを管理から外すときに追記する」という性質上、つい忘れがちです。
私はdotfilesリポジトリにルールとして明文化し、ClaudeやCodexから参照できるようにしておくことで、私が忘れてもレビューでAIが指摘してくれるようにしています。
- chezmoi 管理から外すファイルは `.chezmoiremove` にも追記する
- ソースから消すだけではターゲット(ホーム)の実ファイルは残るため
さいごに
chezmoiの管理から外したファイルがローカルに残り続ける問題は、.chezmoiremoveに追記することで解消できます。