グローバルナビゲーションへ

本文へ

フッターへ

お役立ち情報Blog



複数OSに対応しているchezmoiを使ってdotfilesを効率的に管理する

9月に入っても残暑が厳しいこの頃ですね。

皆さん環境構築していますか?

今回は dotfiles を管理するツールである chezmoi をご紹介します。

dotfiles とは

CUIで使用するユーザ固有のアプリケーションの設定は、ドットファイル(ファイル名が dot(.)で始まるファイル)に保存されています。複数のホスト間で同期させるために、このドットファイル群をGitなどのバージョン管理システムで管理したものをdotfilesと呼んだりします。

一度作成して以降定期的にメンテナンスしていけば、PCの買い替えや会社と個人開発用など複数のPCを使用している時などでそれぞれのPCに手動で都度設定させる必要もなくなります。

chezmoi とは

Manage your dotfiles across multiple diverse machines, securely.
The latest version of chezmoi is 2.39.0 (release notes, release history).
chezmoi helps you manage your personal configuration files (dotfiles, like ~/.gitconfig) across multiple machines.公式トップページより引用

複数のマシンにまたがるドットファイルを安全に管理します。
chezmoi の最新バージョンは 2.39.0 です(リリースノート、リリース履歴)。
chezmoi は、複数のマシンにまたがる個人の設定ファイル(~/.gitconfig のようなドットファイル)を管理するのに役立ちます。

(DeepL 翻訳)

dotfilesを管理するツールです。
Windows、Linux、Mac など複数OSに対応しているため、会社用、個人用の設定を 1 つのdotfilesで管理できます。

chezmoi のインストール方法

参照:https://www.chezmoi.io/install/

公式に OS 毎のインストール方法が記載されています。

筆者は WSL2 上の Arch Linux を使用しているので、以下のコマンドでインストールします。

pacman -S chezmoi

chezmoi の使用開始

chezmoi init

実行すると chezmoi が管理する git のローカルリポジトリが ~/.local/share/chezmoi に作成されます。

chezmoi 導入以前は、筆者は管理している dotfiles にホームディレクトリからシンボリックリンクを貼って管理していましたが、chezmoi ではシンボリックリンクとは別のアプローチで dotfiles を管理しています。

chezmoi では source state  destination state という2つの状態の概念があります。 chezmoi init で作成されたディレクトリを source directory と呼び、その状態を source state と呼びます。 source state を後述の apply コマンドを実行して、 destination directory (通常はホームディレクトリ)に適用して dotfiles の設定を反映させます。

参照:https://www.chezmoi.io/reference/concepts/

まずは手始めに .bashrc を chezmoi の source state として追加します。

# chezmoi add コマンドでdotファイルを追加すると
chezmoi add ~/.bashrc

# source directory内にdot_プリフィックスがついたファイルが作成される
~/.local/share/chezmoi/
└── dot_bashrc
 source state を更新するときは、以下のコマンドで編集します

chezmoi edit ~/.bashrc

# 直接ファイルを編集することと同義
vim ~/.local/share/chezmoi/dot_bashrc

この際、編集されるファイルは ~/.bashrc ではなく、 ~/.local/share/dot_bashrc だということに注意が必要です。
この段階では変更した設定がまだ ~/.bashrc には反映されていません。

dotfiles の適用

変更の適用前に diff を確認します。

chezmoi diff

設定を反映するには apply コマンドを使用して、変更を適用します。

chezmoi apply

chezmoi で作成した git リポジトリを GitHub などのリモートリポジトリで管理すると思います。
既存の chezmoi で管理している dotfiles からセットアップ、適用までを行う場合は

chezmoi init <remote-repository>
chezmoi apply

もしくは以下のようにセットアップと適用を1行で行うことも可能です。

chezmoi init --apply <remote-reipository>

OS による設定ファイルの違いを吸収する

会社用と個人開発用で PC の OS が違うといった時には、OS によって適用させるファイルを分岐することもできます。

# ~/.local/share/chezmoi/.chezmoiignore

{{- if (eq .chezmoi.os "darwin") }}
.bash_profile
.bashrc
{{- else }}
.Brewfile
{{- end }}

この設定では OS が Mac の時は.bashrc と.bash_profile を source state から除外し、OS が Mac の以外のときは .Brewfile を除外するといった設定です。

こうすることで複数 OS に対応した dotfiles を1つのリポジトリで簡単に管理することができるのでとても気に入っています。

まとめ

dotfiles を管理するツール chezmoi を簡単な内容ですがご紹介しました。

他にもファイルを暗号化してセキュアに扱う方法や、パスワードマネージャと連携するなど機能が豊富なので、気になる方は調べてみてはいかがでしょうか。

公式サイト

この記事を書いた人

美髭公
美髭公事業開発部 web application engineer
2013年にアーティスに入社。システムエンジニアとしてアーティスCMSを使用したWebサイトや受託システムの構築・保守に携わる。環境構築が好き。
この記事のカテゴリ

FOLLOW US

最新の情報をお届けします