My NixOS development flake with configuration files for different hosts.
sudo nixos-rebuild switch --flake .#wsl-x86_64 --show-trace
sudo nixos-rebuild switch --flake github:andreifloroiu/nixos-dev#wsl-x86_64
sudo nixos-rebuild switch --flake .#wsl-aarch64 --show-trace
sudo nixos-rebuild switch --flake github:andreifloroiu/nixos-dev#wsl-aarch64
nix flake update
Perform a cleanup from time to time:
sudo nix-collect-garbage -d
sudo nixos-rebuild switch --rollback
Build without applying configuration:
nixos-rebuild build --flake .#wsl-aarch64
nixos-rebuild build --flake .#wsl-x86_64
nix build --flake .#nixosConfigurations.desktop-x86_64.config.system.build.isoImage
nix build --flake github:andreifloroiu/nixos-dev#nixosConfigurations.desktop-x86_64.config.system.build.isoImage
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 github:andreifloroiu/nixos-dev#nixosConfigurations.wsl-aarch64.config.system.build.tarballBuilder \
--extra-experimental-features nix-command --extra-experimental-features flakes \
--out-link result \
&& echo "Running result..." \
&& sudo ./result/bin/nixos-wsl-tarball-builder \
&& sudo mv nixos.wsl nixos-wsl.tar.gz \
&& sudo chown andrei:users nixos-wsl.tar.gz
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
-
Clone this repo andreifloroiu/nixos-dev.
-
cd
into it -
Build an
sd-image
for target, e.g.nix build '.#nixosConfigurations.jump-x86_64.config.system.build.sd-image'
ornix build '.#nixosConfigurations.jump-aarch64.config.system.build.sd-image'