My NixOS development flake with configuration files for different hosts.
sudo nixos-rebuild switch --flake .#wsl-x86_64 --show-trace
Bump version up and rebuild:
nix flake update \
&& sudo nixos-rebuild switch --flake .#wsl-x86_64 --show-trace
sudo nixos-rebuild switch --flake .#wsl-aarch64 --show-trace
Bump version up and rebuild:
nix flake update \
&& sudo nixos-rebuild switch --flake .#wsl-aarch64 --show-trace
Install nix
package manager (single-user):
sh <(curl -L https://nixos.org/nix/install) --no-daemon
Follow the next instruction from install script then proceed.
Build into a result
, which is a symlink:
nix build .#nixosConfigurations.wsl-aarch64.config.system.build.tarballBuilder \
--extra-experimental-features nix-command --extra-experimental-features flakes \
--out-link result \
&& sudo ./result/bin/nixos-wsl-tarball-builder
Move resulting file to host OS user folder:
mkdir /mnt/c/Users/{{username}}/NixOS
mv nixos-wsl.tar.gz /mnt/c/Users/{{username}}/NixOS
Change to powershell
on host OS and run:
cd $env:USERPROFILE\NixOS\
wsl --import NixOS $env:USERPROFILE\NixOS\ nixos-wsl.tar.gz --version 2
To update package versions to latest:
nix flake update
Perform a cleanup from time to time:
sudo nix-collect-garbage -d