と言う話です。
いったい何をどうした話なのか
私は普段使いの PC 環境を Windows 10 Pro に戻した時から、
- Ubuntu 20.04 with nixpkgs on WSL2
と言う環境を Linux 環境として使っていました。
ただやっぱり WSL2 でも NixOS を使えんかなと言う事で、 NixOS on WSL2 と言う感じのキーワードで検索とかした結果、 実際にはちょっとだけ工夫すれば出来る、と言う事が分かったので、 今回の話はその辺りを実際にやってみた、と言う話です。
NixOS を WSL2 で使う
まず必要になるモノはこの辺りです:
nixpkgs
が使える Linux 環境- GitHub の NixOS Distribution on WSL2 と言うリポジトリの中身
wsl
コマンドが使える Windows 10 環境
で、実際のインストール作業の流れはこんな感じです:
- 上記リポジトリのスクリプトと
nixpkgs
使ってrootfs.tar.gz
を作成 - 次に
rootfs.tar.gz
を Windows 環境にコピー - そして
wsl --import NixOS %userprofile%/NixOS /path/to/rootfs.tar.gz --version 2
を実行 - 最初の NixOS 環境の起動時に
/nix/var/nix/profiles/system/activate
を実行 - そしてコンテナ下にある NixOS を使う感じで NixOS が WSL2 上で使えます
あと/etc/nixos/configuration.nix
を書く際は NixOS Container 使う感じの設定が必要だったり、
あるいは systemd
を動かすための hack を組込まないとそもそも動かせない、とか、
NixOS を WSL2 で使うための独自の設定も必要、などなど注意点はいくつか有りますが、
そこさえクリアすれば NixOS は WSL2 で動くので、
Windows 10 Pro を使いつつ NixOS on WSL2 も使いたい!
と言う要求は達成されることとなります、やったぜ!
実際やってみた感想
うん、普通に動くぞ……! コレ……!
と言うのが第一印象です。
ただ、
GUI Application を
VcXsrv
と言う Windows 向け Xorg 実装を使って NixOS on WSL2 で動かす
と言う事をした時に一つハマったことがあって、上記でリンクした、
と言うリポジトリのスクリプトを使って作れる rootfs.tar.gz
では、
NixOS の最小構成でシステムが構成されるため、
/etc/nixos/configuration.nix
において、
environment.noXLibs = false;
と言う設定が無いとそもそも Xorg を使う GUI Application がインストールが出来ません。
また他にも実用上害は無いですが、
NixOS on WSL2 では systemd
を使うために nsenter
を使うと言う hack も用いているため、
sudo su -
で root に成れなかったりもします。
あとは Windows 側で Terminal Emulator を用意するのはツラいので、 NixOS on WSL2 に mlterm をインストールして shell script 経由で mlterm を起動できる様にした、とか、 あるいは Vim8 から Neovim に乗り換えて dark-powered なプラグインを使う様にした、とか色々やってたりしますが、 その辺りはまた機会が有れば触れたいとは思ってはいます。はい。
以上
なんか久しぶりにブログを書いた気がしますが、まあ最近はそんな事をしていた、と言う話でした。はい。