dry-run と GitHub Actions でメンテしている dotfiles を mise に寄せた

はじめに 私の dotfiles では、ローカルの dry-run と GitHub Actions で、設定の変更を確認できるようにしています。dotfiles の設定適用にはスクリプトを使っていたのですが、手を入れるうちにスクリプトとテストコードが増えてきました。 そこで、シンボリックリンクの作成・解除や、パッケージ・開発ツールの導入を mise bootstrap に寄せました。 この記事では、もともとスクリプトで行っていた処理と、mise に移したあとの設定やコマンドを紹介します。 1. もともとはスクリプトで導入・解除していた dotfiles のセットアップは、PC のリプレイスなどを除けば頻繁に実行するものではありません。 そこで、ローカルでは dry-run で適用・解除の内容を確認し、GitHub Actions では自動テスト用に HOME 相当のディレクトリを用意して、一連の操作を試せるようにしていました。 当初は、複雑なことをしていなかったので、mise のようなツールを使うのはオーバーキルだと考えていました。そのため、install / uninstall といった操作に使うスクリプトを書いていました。 その後、適用前に dry-run で内容を確認したい、ローカルと CI でできるだけ同じ操作を使いたい、と要件が増えていきました。導入処理とは別に、それらを支えるスクリプトやテストコードも増え、構成が複雑になってきました。 要件が増えるたびに、実装とテストの両方を変更する必要がありました。dotfiles の設定に加えて、導入・解除の仕組みも自分でメンテすることになっていました。そこで、mise bootstrap を使って、このあたりをまとめて管理することにしました。 2. dotfiles の配置とツールの導入を mise bootstrap にまとめる mise bootstrap は、[dotfiles]、[bootstrap.packages]、[tools] などの設定をまとめて扱います。dotfiles だけを操作したい場合は mise dotfiles のコマンドを使えます。 dotfiles だけを操作するには、mise dotfiles を使えます。 2-1. シンボリックリンクの配置先を [dotfiles] に書く mise.toml の [dotfiles] に、どのファイルをどこへ配置するかを記述します。下記は一例です。 [dotfiles] # "<target>" = { source = "<リポジトリをルートとした相対パス>", mode = "<symlink/シンボリックリンクなど指定したいモード>" } "~/.dotfiles" = { source = ".", mode = "symlink" } "~/.bashrc" = { source = ".bashrc", mode = "symlink" } "~/.bash_profile" = { source = ".bash_profile", mode = "symlink" } "~/.gitconfig" = { source = ".gitconfig", mode = "symlink" } "~/.config/mise/config.toml" = { source = "mise.toml", mode = "symlink" } 各エントリに mode = "symlink" を明示して、シンボリックリンクで配置するようにしています。たとえば、~/.bashrc にはリポジトリ内の .bashrc へのリンクを作ります。リンクの作成・解除は mise に任せるので、dotfiles 側では配置先の設定をメンテすることになります。 ...

October 4, 2026 · 3 min · gkzz