21:30, June 24 2026
yak shavingは楽しい。
前回記事にて、
- デスクトップLinuxであることに最適化している
- デスクトップLinuxである以上何かの拍子にOSをクリーンインストールするということは発生するので、そのときのダメージを最小化するように、デフォルトに近い状態で体に合うものを使う
- ブートストラップ手段はマニュアル化してあり、だいたい30分〜1時間で元の環境を取り戻せる
- 多分これの大部分を自動化しようと思ったらNixOSなんだろうと思っているが…
みたいなことを書いた。そうしたら最近Rubyコミュニティで話題の『シンプリシティ』を読んでいたところ yadm (Yet Another Dotfiles Manager) というツールの存在を知った。これはホームディレクトリをGitレポジトリのように扱いdotfilesなどを同期することのできるツールである。また、それだけにとどまらず、dotfiles以上の設定をこなすためのBootstrapという機能があるし、センシティブな情報をGitでやりとりすることを助けるための暗号化機能もある。
そして前回記事からのUpdateとして、今の私はClaude Max 5xの課金ユーザーである。というわけで中性子星くらい重いエイアースを挙げて1いろいろ聞きながら自動化を行った。
やったことはだいたい以下である。
yadm のレポジトリの中身(念の為privateにしてあるが、中身は以下で全部)
.bashrc, .bash_logout.gitconfig.asdfrc, .tool-versions: asdf 関連ファイル
asdf でも mise でもいいので .tool-versions を仕事のレポジトリにcommitしてチームで共有して許される程度になってくれ〜〜〜〜.vimrc.xinputrc: im-configが作ったやつ。といっても変わったことはほとんど何も書いてない.config 以下
konsolerc: Konsoleの設定ファイルasdf-plugins: asdf plugin list をこれにコピーしている。bootstrap段階で asdf plugin install するためのもの。systemd/user/keybase.gui.service.d/override.conf: KeybaseはElectronアプリで、Wayland下でIMEがアプリまでたどり着かないことがあるので、そのための起動コマンドをoverrideするための設定。これも以前Claudeに作ってもらった。mozc/config1.db: Mozcの設定。HENK / MHEN に関する挙動を殺す設定を入れている。注意としてこれはバイナリファイルでありテキストでdiffが見れる性質のものではない。joplin-desktop/.gitignore: ここ以下のファイルを間違ってコミットすると厄介なことになると言われたのでgitignoreしてるfcitx5/config, fcitx5/profile: Fcitx5の設定ファイルyadm/
bootstrap: bootstrapスクリプト。実質本体encrypt: どのファイルを暗号化するかを指定するファイル.local/share/ 以下
konsole/
Linux.colorscheme: 20%の透過を足した版。default-profile.profileから参照されるdefault-profile.profile: Konsoleのデフォルトプロファイル。konsolercから参照されるyadm/archive: 暗号化されるもの。暗号化されているのはJoplinの設定ファイル.ssh 以下
config: conf.d/ を参照しろ、みたいなことを書いてるconf.d/*: 個人で管理しているサーバーのconfigが書いてある。用途別に3ファイルほど.config/yadm/encrypt で暗号化指定して暗号化してレポジトリに突っ込んでsyncするという方法は存在するが、マシンごとにssh鍵を作って要らなくなったらrevokeする、というスタイルのほうが好みbootstrap でやってることの概要
LANGUAGE= LC_ALL=C xdg-user-dirs-update --force
xdg-user-dirs-update-gtk のインストールは要らない!LC_ALL=C の指定がポイント。 LANG=C だけだと他のロケールより優先順位が低いので乗っ取られる。これのせいで今までコマンドライン版 xdg-user-dirs-update ではできてなかった。kwriteconfig6 --file kwinrc --group Plugins --key wobblywindowsEnabled false
kwriteconfig6 --file kwinrc --group Windows --key TitlebarDoubleClickCommand Minimizegit autoconf bison build-essential libssl-dev libyaml-dev libreadline-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev libgmp-dev rustc: Rubyビルド用fcitx5-mozc: 日本語入力するのでlibfuse2t64: Joplinが必要としてるdirenv: 一部プロジェクトで使う、dotfilesに書いてあるので入れないと面倒jq1password slack-desktop code google-chrome-stablekwriteconfig6 --file kwinrc --group Wayland --key InputMethod /usr/share/applications/org.fcitx.Fcitx5.desktop.config/asdf-plugins を読んでインストールするsudo apt update && sudo apt -y upgrade && sudo apt -y install yadm gh
gh auth login
https://github.com/login/device) でログインするyadm clone [email protected]:sylph01/didactic-waffle.git
yadm bootstrap
yadm decrypttailscale up
.ssh/authorized_keys にEd25519鍵を記入…というわけで操作の手数がかなり減って、40分以内にセットアップが完了するようになった。日本語入力関係の設定が安定して再現でき、アプリのインストールや最低限のログインまでやって40分なら上等で、その上でSlackのログインとかまでやって1時間程度で新しいマシンをほぼ完全に作業できる状態にできるのなら言うことがないでしょう。
~/.local/share/user-places.xbel というファイルに記述されていて、これをsyncするとUUID周りで厄介なハマり方をすることがあるので、一度削除した上でロケールに合わせて自動生成してもらうのがよいとのこと。なので全てのDolphinの窓が閉じた状態で rm ~/.local/share/user-places.xbel をしてからDolphinを起動する。LLMの力を借りてLinuxデスクトップのコーナーケースみたいなのをかなりケアできるようになってきたので実はLLM元年=Linuxデスクトップ元年だったかもしれない。いやs01氏の歴史観では2018年に即位してからずっとLinuxデスクトップ天皇の世なので…。めちゃくちゃびっくりしたのは、ThinkPad X1 CarbonのThunderboltポートの片方だけ認識が不完全みたいなバグを調査するのをClaudeに手伝ってもらってたら「このdmesgをバグレポするといいよ、Linuxカーネルメンテナのこの人が多分Thunderbolt関係やってるよ」みたいなのを名指しで挙げてきたこと。そんなことある…???
個人テンプレの一つ。Twitterで検索するとまあまあ用例出てくる。なおass(ケツ)をエイアースと発音するのはaの部分を過度に強調する場合で、一般的な米語ではエァース、イギリスではアースくらいの発音をする。 ↩