Bump the wrapper-flake nixpkgs channel in the adopt/laptop examples to nixos-26.05, and add the "Impermanence (optional)" section covering the /persist subvolume, the required "nixos" fs label, and the default persistence set. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
5.6 KiB
Install Nanuqsaurus On An Empty Partition (No Full-Disk Wipe)
This repo’s nanuqsaurus-btrfs “fresh install” path uses disko to create a brand new GPT layout (EFI + Btrfs) and therefore wipes the whole disk. If you want to install onto an existing empty partition while keeping other partitions intact, use the “wrapper flake” approach and a manual mount + nixos-install.
These steps are meant to be run from a NixOS installer ISO on the target laptop.
0) Preconditions
- Boot the installer in UEFI mode (this profile enables
systemd-boot+ EFI). - You have working network connectivity (WiFi instructions below).
- You have:
- an existing empty root partition you will format (example:
/dev/nvme0n1p6) - an existing EFI System Partition (vfat) you will mount at
/boot(example:/dev/nvme0n1p1)
- an existing empty root partition you will format (example:
Confirm UEFI:
test -d /sys/firmware/efi/efivars && echo "UEFI booted" || echo "NOT UEFI booted"
0.5) Connect To WiFi (Installer)
Most NixOS installer ISOs run NetworkManager. The easiest flow is nmtui.
- Bring up the text UI and connect:
sudo -i
nmtui
In nmtui:
- Select
Activate a connection - Pick your WiFi SSID
- Enter the password
- Exit
- Verify you have connectivity:
ping -c 1 1.1.1.1
ping -c 1 example.com
If nmtui is unavailable, try:
nmcli dev status
nmcli dev wifi list
nmcli dev wifi connect "YOUR_SSID" password "YOUR_PASSWORD"
1) Identify Your Partitions
lsblk -f
Pick stable paths if available (/dev/disk/by-id/...). In the commands below, set:
ROOT_PART= the empty partition to become/EFI_PART= the EFI System Partition (vfat) to become/boot
Example:
ROOT_PART=/dev/nvme0n1p6
EFI_PART=/dev/nvme0n1p1
2) Format The Root Partition
Warning: this destroys data on ROOT_PART.
Recommended (Btrfs with subvolumes similar to this repo’s intended layout):
mkfs.btrfs -f -L nixos "$ROOT_PART"
mount "$ROOT_PART" /mnt
btrfs subvolume create /mnt/root
btrfs subvolume create /mnt/home
btrfs subvolume create /mnt/nix
umount /mnt
mount -o subvol=root,compress=zstd "$ROOT_PART" /mnt
mkdir -p /mnt/home /mnt/nix
mount -o subvol=home,compress=zstd "$ROOT_PART" /mnt/home
mount -o subvol=nix,compress=zstd "$ROOT_PART" /mnt/nix
Alternative (ext4):
mkfs.ext4 -F -L nixos "$ROOT_PART"
mount "$ROOT_PART" /mnt
mkdir -p /mnt/nix
3) Mount EFI At /boot
mkdir -p /mnt/boot
mount "$EFI_PART" /mnt/boot
4) Generate Hardware Config
Important: do this after mounting /boot, so the EFI mount gets captured.
nixos-generate-config --root /mnt
This creates:
/mnt/etc/nixos/hardware-configuration.nix/mnt/etc/nixos/configuration.nix(we will not use this directly)
5) Create A Wrapper Flake In /etc/nixos
This repo’s nanuqsaurus profile defines an admin user and also tends to lock root by default. To avoid surprises, set your own password hashes in the wrapper flake using lib.mkForce.
If you have a Lenovo ThinkPad X13 (Intel), you can also import the nixos-hardware module for it in this wrapper flake.
- Generate SHA-512 password hashes:
nix --experimental-features "nix-command flakes" \
shell nixpkgs#mkpasswd -c mkpasswd -- -m sha-512
Run it twice if you want to set both admin and root.
- Create
/mnt/etc/nixos/flake.nix:
nano /mnt/etc/nixos/flake.nix
Paste and edit:
{
description = "Local wrapper for the nanuqsaurus profile";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-26.05";
nanuqsaurus = {
url = "git+https://codeberg.org/randogoth/nanuqsaurus.git";
inputs.nixpkgs.follows = "nixpkgs";
};
# Optional hardware profiles (recommended on laptops)
nixos-hardware = {
url = "github:NixOS/nixos-hardware";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = inputs@{ nixpkgs, nanuqsaurus, nixos-hardware, ... }: {
nixosConfigurations.nanuqsaurus = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [
./hardware-configuration.nix
# Optional: ThinkPad X13 (Intel) profile (path: lenovo/thinkpad/x13/intel)
# Remove or replace if you have different hardware.
nixos-hardware.nixosModules.lenovo-thinkpad-x13-intel
nanuqsaurus.nixosModules.nanuqsaurus
({ lib, ... }: {
networking.hostName = "nanuqsaurus";
system.stateVersion = "25.11";
nanuqsaurus.admin.username = "admin";
users.users.admin.hashedPassword = lib.mkForce "PUT_ADMIN_SHA512_HASH_HERE";
# Recommended so you can recover easily:
users.users.root.hashedPassword = lib.mkForce "PUT_ROOT_SHA512_HASH_HERE";
# Optional: require sudo password (this repo defaults to passwordless sudo)
security.sudo.wheelNeedsPassword = lib.mkForce true;
})
];
};
};
}
6) Install NixOS
NIX_CONFIG="experimental-features = nix-command flakes" \
nixos-install --root /mnt --flake /mnt/etc/nixos#nanuqsaurus
7) Reboot
reboot
If your firmware shows multiple boot options, select the systemd-boot entry for the disk containing the EFI partition.
Notes
- Secure Boot: this repo’s installer ISO expects Secure Boot off at boot; after installation you can enable Secure Boot using Lanzaboote (see
docs/secure-boot.md). - If you actually want to wipe an entire disk and let this repo handle partitioning, use
disko-installwith#nanuqsaurus-btrfs(seeREADME.mdanddocs/install-help.txt).