Devbox+chezmoiで環境構築
nix で全て完結させようと思ったけど、大変だったので困るまでは Devbox + chezmoi の組み合わせで行くことにする。
Devboxのインストール
~ ❯ curl -fsSL https://get.jetify.com/devbox | bash
nixのインストール
devbox add のタイミングでインストールされるみたいだけど、以前 nix をインストール、アンインストールしてたせいで謎のエラーでハマった。ということでインストールし直した。
オフィシャル からコピペした。
~ ❯ sh <(curl --proto '=https' --tlsv1.2 -L https://nixos.org/nix/install)
chezmoiのインストール
~ ❯ devbox global add chezmoi
chezmoiのセットアップ
既に dotfiles があるため、github のユーザネームを指定。
~ ❯ chezmoi init ritarock
~/.local/share/chezmoi に dotfiles の中身がクローンされる。
dotfile群をaddしていく
この際、もう使ってない設定ファイル (fish とか) は管理しないようにする。 ひとまず、この辺を add する。
- zsh
~ ❯ chezmoi add ~/.zshrc
~ ❯ chezmoi add ~/.config/zsh
- ghostty
~ ❯ chezmoi add ~/.config/ghostty/config
- git
~ ❯ chezmoi add ~/.config/git/config
- sheldon
~ ❯ chezmoi add ~/.config/sheldon/plugins.toml
- vim
~ ❯ chezmoi add ~/.vimrc
~ ❯ chezmoi add ~/.vim/colors/molokai.vim
- tmux
~ ❯ chezmoi add ~/.tmux.conf
- starship
~ ❯ chezmoi add ~/.config/starship.toml
変更の適用
--dry-run をつければドライランできる。
~ ❯ chezmoi apply --dry-run --verbose
Devboxの設定
試しに neovim をインストールしてみる。
NixOS Search で neovim を探してみる。
~ ❯ devbox global add neovim
global にインストールしたものは ~/.local/share/devbox/global/default/devbox.json で管理される。
なので、 ~/.local/share/devbox/global/default/devbox.json を chezmoi で管理すれば良い。
global で管理されているパッケージは devbox global install で一括インストールできる。
brewからdevboxへ移行
まずは brew から削除せずに devbox でインストールしていく。
~ ❯ devbox global add jq
~ ❯ which jq
/Users/osakiryota/.local/share/devbox/global/default/.devbox/nix/profile/default/bin/jq
動作に問題なければ削除する。これを全パッケージでやる。
~ ❯ brew uninstall jq
caskの管理
nix 使えば何とかなるみたいだけどそこまで頑張りたくないので、cask に関しては brew のままでいく。
chezmoi のスクリプトを使う。
run_onchange_brew_install.sh.tmpl を作る。
run_onchange_ から始まるスクリプトは変更があったタイミングで chezmoi apply で実行される。
#!/bin/bash
brew install --cask \
brave-browser \
claude-code \
discord \
ghostty \
godot \
google-chrome \
google-japanese-ime \
mapture \
notion \
obsidian \
postman \
raycast \
renpy \
shotcut \
visual-studio-code \
zoom
最低限はこれで良さそう。あとは、PC の環境によってインストールするものの切り替えができるようになれば一旦OK。 https://github.com/ritarock/dotfiles