🐕

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 nixsamplelimactl shell nixos とすればよい。
環境に入らずコマンドを実行したい場合は LIMA_INSTANCE=nixsample lima コマンド のようにすることで使える。

$ LIMA_INSTANCE=nixos lima nixos-version
25.11.20250607.3e3afe5 (Xantusia)

もうちょっと詳しく

まとめると、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