前回は、Dev Containerを使用して開発環境を構築する方法を紹介しました。
Dev Containerを使用することで、開発環境の構築が簡単になり、環境の不一致を解消できます。
しかし、Dev Containerを使用すると、shell環境はデフォルト設定となるため、普段の開発環境と異なる場合があります。
今回は、chezmoiを使用して、Dev Containerのshell環境を構築する方法を紹介します。
chezmoiとは
chezmoiは、dotfilesを管理するためのツールです。
その前にdotfilesって何?
dotfilesとは、ユーザーの設定ファイルを格納するためのディレクトリやファイルのことを指します。ドット(.)から始まることが多いため、dotfilesと呼ばれています。
例えば、bashの設定ファイルである .bashrcや、Gitの設定ファイルである .gitconfigなどがあります。
dotfilesをGitなどのバージョン管理システムで管理することで、複数のマシンやOSで同じ設定を簡単に反映したり、変更履歴やバックアップを管理したりできます。
このときのリポジトリもdotfilesと呼ばれます。
chezmoiを使ってみる
改めて、chezmoiとは、そんなユーザー設定ファイルをまとめたdotfilesを管理するためのツールです。
chezmoiはテンプレート機能やパスワードマネージャのサポート、暗号化などの機能を備えています。
「シャイーモイ」とか「シェイモイ」とかいう風に読むそうです。執筆時のバージョンは2.40.3です。
chezmoiのインストール
chezmoiは、以下のコマンドでインストールできます。
sh -c "$(curl -fsLS git.io/chezmoi)" -- -b ~/.local/bin
上記の例では、~/.local/bin
にインストールしていますが、他のディレクトリにもインストールできます。
必要に応じてPATHを通してください。
export PATH="${HOME}/.local/bin:${PATH}"
chezmoiの初期設定
chezmoiをインストールしたら、初期設定します。
chezmoi init
上記のコマンドを実行すると、~/.local/share/chezmoi
にリポジトリが作成されます。
dotfilesを追加する
chezmoiの初期設定が完了したら、dotfilesを追加します。
例えば、.zshrcを追加する場合は、以下のようにします。
chezmoi add ~/.zshrc
ここで~/.local/share/chezmoi
を見てみると、.zshrcがdot_zshrc
という名前で追加されていることが確認できます。
$ls -a ~/.local/share/chezmoi
. .. .git dot_zshrc
dotfilesを編集する
追加されたファイルは元のファイルと同内容になっています。chezmoiの管理下にあるファイルは、chezmoi edit
コマンドで編集できます。
chezmoi edit ~/.zshrc
上記のコマンドを実行すると、エディタが起動し、ファイルを編集できます。
ここで編集した内容は、ホームディレクトリの.zshrcではなく~/.local/share/chezmoi/dot_zshrc
に反映されます。
dotfilesの差分を確認する
chezmoi diff
コマンドで、元のファイルとの差分を確認できます。
chezmoi diff
例えば、以下のような差分が表示されます。
diff --git a/.zshrc b/.zshrc
old mode 100644
new mode 100664
index 36ed0d749b2abae3d9cb0ec3b2843d1b6c7d30e0..86936b86b5c9668f993b2175b340e69f8d5d33c0
--- a/.zshrc
+++ b/.zshrc
@@ -1,6 +1,6 @@
# Set up the prompt
-PROMPT='%B%F{yellow}%~%F{cyan}$%f%b'
+PROMPT='%B%F{magenta}%~%F{blue}$%f%b'
setopt histignorealldups sharehistory
dotfilesを適用する
変更に問題がなければ、chezmoi apply
コマンドで、元のファイルに反映できます。
chezmoi apply
dotfilesをGitHubにpushする
他のマシンやDev Containerで同じ設定を使用するために、GitHubにpushします。
まずはcommitします。
chezmoi cd
git add .
git commit -m "first commit"
次に、GitHubにリポジトリを作成します。
リポジトリの作成方法はリポジトリを作成する – GitHub Docsを参照してください。
リポジトリ名はdotfiles
とします。
リポジトリを作成したら、リモートリポジトリを追加し、変更をpushします。
git remote add origin <リポジトリのURL>
git branch -M main
git push -u origin main
Visual Studio Codeでdotfilesを使用する
Dev ContainerでVisual Studio Codeを起動したときに、先ほど作成したdotfilesを使用するように設定します。Ctrl + ,
またはCommand + ,
で設定画面を開き、Dotfiles
を検索します。Dotfiles: Repository
に先ほど作成したリポジトリのユーザー名/リポジトリ名を設定します。
Dotfiles:Install Command
とDotfiles:Target Path
はデフォルトのままで問題ありません。
これで、Dev ContainerでVisual Studio Codeを起動すると、~/dotfiles
にリポジトリがクローンされた状態で起動します。
chezmoiの自動実行を設定する
このままでは、Dev Containerでchezmoiを手動実行する必要があります。
そこで、Dev Containerでchezmoiを自動実行するように設定します。Dotfiles:Install Command
の注釈を見ると、次のように書かれています。
dotfiles リポジトリを複製した後に実行するコマンド。既定では、dotfiles リポジトリのルート フォルダーにある ‘install.sh’、’install’、’bootstrap.sh’、’bootstrap’、’setup.sh’、’setup’ の最初のファイルが実行されます。
つまり、リポジトリ内にinstall.sh
を作成しておけば、Dev Containerでchezmoiを自動実行できます。
chezmoiにはinstall.sh
を自動生成する機能があるので、それを使用します。
chezmoi generate install.sh > install.sh
chmod a+x install.sh
これで、リポジトリ内にinstall.sh
が作成されました。また、chmod
により、実行権限を付与しています。
Dev Containerで実行できるように、commit、pushしましょう。
git add install.sh
git commit -m "add install.sh"
git push -u origin main
不要なファイルを除外する
GitHubでリポジトリを作成すると、設定によってはREADME.md
やLICENSE
などのファイルが自動的に作成されます。
また、先ほど作成したinstall.sh
も、Dev Containerで実行するために作成したファイルです。
これらのファイルは復元する必要がないため、除外の設定をします。.chezmoiignore
というファイルを作成し、除外するファイルを記述します。
touch .chezmoiignore
.chezmoiignore
には、必要に応じて以下のように記述します。
install.sh
LICENSE
README.md
保存したら、commit、pushを忘れずに。
Dev Containerでchezmoiを自動実行する
これで準備が整いました。Dev ContainerでVisual Studio Codeを起動し、zshを起動します。
zshの環境が反映されていることが確認できました!
まとめ
chezmoiを使ってdotfilesを管理する方法を紹介しました。chezmoiは、dotfilesの管理、適用を簡単に行えるツールです。また、Dev Containerと組み合わせることで、開発環境の構築がより簡単になります。chezmoiを使えば、どんな環境でも自分の好みに合わせた設定を反映させることができます。ぜひ、chezmoiを試してみてください!