limaでNixOSを導入する
macOSで、WindowsのWSL風なインターフェースを提供する仮想マシン環境としてlimaがある。実際、ゲストVMとしてUbuntuを導入することでmacOSのWSLのように使える。しかし、NixユーザとしてはnixOSを使いたい。
GitHub Organizationのnixos-limaの成果物を使うと簡単に導入できた。
macOS上でnixを使っていない場合は、nixos-lima-config-sampleを使う。もし自分でビルドしたい場合は nixos-limaを使うと良い。
セットアップ
nixos-lima-config-sample を使う場合
nixos-lima-config-sampleにlimaのvmを作るためのリソースが揃っている。READMEに書かれている通りにすればよい。この方法はmacOSにNixを入れていなくても使える。
git clone https://github.com/nixos-lima/nixos-lima-config-sample
cd nixos-lima-config-sample
limactl start --name=nixsample --tty=false --set '.user.name = "lima"' nixos.yaml
./setup-home-manager.sh nixsample lima sample
./setup-nixos.sh nixsample lima
nixos-lima を使う場合
nixos-limaを使うとVMのディスクイメージを作ることができる。 nixos-lima-config-sampleの方にはnixos-limaでビルド済みのディスクイメージをクラウドストレージに配置したものを参照するようになっていた。
linuxのイメージをビルドするため、linux環境でビルドすることが想定されている。そのためmacOSのハードしか持たない場合は仮想環境を用意する必要がある。limaを導入していれば簡単に用意できると思うが、Nixを使って darwin.linux-builderをインストールすることでも用意できる。 nix-darwinを使っている場合、nix.linux-builder.enable
をtrueにすればnixpkgsのドキュメントにかかれているようなことも設定してくれる。注意点としてはデフォルト設定ではvmが起動したままになる。
参考 https://github.com/nix-darwin/nix-darwin/blob/master/modules/nix/linux-builder.nix
準備ができたら nixos-lima のREADMEにかかれているようにすればよい。
git clone https://github.com/nixos-lima/nixos-lima
cd nixos-lima
nix build .#packages.aarch64-linux.img
limactl start --name=nixos nixos.yaml
利用してみる
nixOS環境に入るには limactl shell nixsample
や limactl shell nixos
とすればよい。
環境に入らずコマンドを実行したい場合は LIMA_INSTANCE=nixsample lima コマンド
のようにすることで使える。
$ LIMA_INSTANCE=nixos lima nixos-version
25.11.20250607.3e3afe5 (Xantusia)
もうちょっと詳しく
- イメージを作るにはnixos-generatorsを利用している。これを使ってディスクイメージをつくっていることがわかる。
- その際に lima.nix を読ませており lima.nix はモジュール形式で書かれている。
- lima.nixでは profiles/qemu-guest.nix lima-init.nixと を読み根でいる
まとめると、qemu-guest向けのイメージをnixos-generatorsで生成し、lima-init.nixでlima.enable という設定項目を用意し、lima.nixがnixosのconfigurationを行っている構成になっている。
またnixos-lima-config-sampleのほうの setup-nixos.shやsetup-home-manager.sh は中身をみればわかるように利用するための例に過ぎず nixos-rebuildやhome-managerを使えるようにしてくれているだけである。
Discussion