最近在折腾 Nix,打算在我的日常 Windows 机器上安装 NixOS,所以尝试了 NixOS-WSL。在安装过程中碰到了一些问题,于是就有了这篇记录。
启用 WSL2
对于新系统来说,可以在有管理员权限的 PowerShell 或 CMD 中运行以下命令来启用 WSL2:
wsl --install --no-distribution
手动安装
对于较早的系统来说,则需要分别启用以下可选功能:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart`
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
重启完成后,还需要安装WSL 2 内核更新包。
安装完成后,可以通过以下命令设置默认版本:
wsl --set-default-version 2
安装 NixOS-WSL
接下来就是到 NixOS-WSL 的 Release 页面下载 nixos.wsl
,并通过以下命令进行安装:
wsl --install --from-file <path-to-nixos.wsl> --location <path-to-install> --name NixOS --version 2
也可以直接双击 nixos.wsl
文件来进行安装。
如果你安装过 2.4.4 版本前的 NixOS-WSL,则可以通过 --import
来安装新版本:
wsl --import NixOS $env:USERPROFILE\NixOS <path-to-nixos.wsl> --version 2
安装完成后,可以通过以下命令查看已安装的发行版:
wsl --list --verbose
进入 NixOS-WSL:
wsl -d NixOS
设置默认的 distribution 为 NixOS:
wsl -s NixOS
更新 NixOS-WSL
在安装完成后,需要先运行一次以下命令来更新 channels,才能正常使用 nixos-rebuild
:
sudo nix-channel --update
如果使用的是 flake,则需要运行以下命令来更新:
nix flake update
Rebuild 系统配置:
sudo nixos-rebuild switch
问题记录
如果你在安装了 NixOS-WSL 后,发现 wsl -d NixOS
一直卡住不动,那么大概率你的 WSL 默认版本不是 2,可以通过以下命令来检查:
wsl --list --verbose
如果你看到 NixOS 的版本是 1,那么可以通过以下命令来设置 NixOS 的版本为 2:
wsl --set-version NixOS 2
然后应该就能正常进入 NixOS-WSL 了。