To install Clan on physical machines, you need to start our custom installer image from a boot device. The minimal system will then be reachable by your setup machine and a deployment can be triggered remotely.
If you only plan to use virtual machines, you can skip this step.
nixos-anywhere relies on kexec to replace the running kernel with our custom one. This method often has compatibility issues with real hardware, especially systems with dedicated graphics cards like laptops and servers, leading to crashes and black screens.
Our custom install images are built to include essential tools like nixos-facter and support for ZFS. They're also optimized to run on systems with as little as 1 GB of RAM, ensuring efficient performance even on lower-end hardware.
Estimated time for this step: 20 minutes
A USB drive with at least 1.5GB total space (!! all data will be lost !!)
A Linux/NixOS machine with internet access to create the boot stick. You can use your setup device or any other machine for this step.
One or more physical target machines (!! all data will be lost !!)
Minimum target system requirements: 2 CPUs, 4GB RAM, 30gb HDD space, network interface
Insert your USB flash drive into the Linux computer you want to create the boot stick on.
Identify your flash drive with lsblk:
lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sdb 8:0 1 117,2G 0 disk
ββsdb1 8:1 1 117,2G 0 part /run/media/qubasa/INTENSO
nvme0n1 259:0 0 1,8T 0 disk
ββnvme0n1p1 259:1 0 512M 0 part /boot
ββnvme0n1p2 259:2 0 1,8T 0 part
ββluks-f7600028-9d83-4967-84bc-dd2f498bc486 254:0 0 1,8T 0 crypt /nix/store Ensure all partitions on the drive are unmounted. Replace sdb1 in the command below with your device identifier (like sdc1, etc.):
sudo umount /dev/sdb1 Create a Custom Installer
We recommend to build your own installer because of the following reasons:
clan flash write --flake https://git.clan.lol/clan/clan-core/archive/25.11.tar.gz \
--ssh-pubkey $HOME/.ssh/id_ed25519.pub \
--keymap us \
--language en_US.UTF-8 \
--disk main /dev/sd<X> \
flash-installer Replace $HOME/.ssh/id_ed25519.pub with a path to your SSH public key.
Replace /dev/sd<X> with the drive path you want to flash
The clan flash utility will erase the disk. Make sure to specify the correct device
SSH-Pubkey Option
To add an ssh public key into the installer image append the option:
--ssh-pubkey <pubkey_path> If you do not have an ssh key yet, you can generate one with ssh-keygen -t ed25519 command.
This ssh key will be installed into the root user.
Connect to the installer
On boot, the installer will display on-screen the IP address it received from the network.
If you need to configure Wi-Fi first, refer to the next section.
If Multicast-DNS (Avahi) is enabled on your own machine, you can also access the installer using the flash-installer.local address.
List Keymaps
You can get a list of all keymaps with the following command:
clan flash list keymapsList Languages
You can get a list of all languages with the following command:
clan flash list languagesDownload Generic Installer
For x86_64:
wget https://github.com/nix-community/nixos-images/releases/download/nixos-unstable/nixos-installer-x86_64-linux.iso For generic arm64 / aarch64 (probably does not work on raspberry pi...)
wget https://github.com/nix-community/nixos-images/releases/download/nixos-unstable/nixos-installer-aarch64-linux.iso If you don't have wget installed, you can use curl --progress-bar -OL <url> instead.
The dd utility will erase the disk. Make sure to specify the correct device (of=...)
For example if the USB device is sdb use of=/dev/sdb (on macOS it will look more like /dev/disk1)
On Linux, you can use the lsblk utility to identify the correct disko
lsblk --output NAME,ID-LINK,FSTYPE,SIZE,MOUNTPOINT On macOS use diskutil:
diskutil list Use the dd utility to write the NixOS installer image to your USB drive.
Replace /dev/sd<X> with your external drive from above.
sudo dd bs=4M conv=fsync status=progress if=./nixos-installer-x86_64-linux.iso of=/dev/sd<X> **Connect to the installer
On boot, the installer will display on-screen the IP address it received from the network.
If you need to configure Wi-Fi first, refer to the next section.
If Multicast-DNS (Avahi) is enabled on your own machine, you can also access the installer using the nixos-installer.local address.
To see if your new Clan USB boot stick works, plug it into a target device and boot from the USB drive with secure boot turned off.
For step by step instructions go to Disabling Secure Boot
If you don't have access via LAN, the installer offers support for connecting via Wi-Fi.
iwctl This will enter iwd
[iwd]# Now run the following command to connect to your Wi-Fi:
# Identify your network device.
device list
# Replace 'wlan0' with your wireless device name
# Find your Wi-Fi SSID.
station wlan0 scan
station wlan0 get-networks
# Replace your_ssid with the Wi-Fi SSID
# Connect to your network.
station wlan0 connect your_ssid
# Verify you are connected
station wlan0 show If the connection was successful, you should see something like this:
State connected
Connected network FRITZ!Box (Your router device)
IPv4 address 192.168.188.50 (Your new local ip) Press ++ctrl+d++ to exit IWD.
Press ++ctrl+d++ again to update the displayed QR code and connection information.
The installer will randomly generate a password and local addresses on boot, then run a SSH server with these preconfigured. The installer shows its deployment relevant information in two formats, a text form, as well as a QR code. This is an example of the booted installer.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β βββββββββββββββββββββββββββββ β
β βββββββββββββββββββββββββββββ # This is the QR Code (1) β
β βββ βββββ βββββββββ βββββ βββ β
β βββ β β ββββββ ββ β β βββ β
β βββ βββββ βββ βββββ βββββ βββ β
β βββββββββββββ βββββββββββββββ β
β βββββββ ββββ ββ ββββ ββββ β
β βββββββββββββββββ βββ βββββββ β
β βββ βββββ βββββ β βββ ββ ββββ β
β βββ β β β β β βββ βββ βββ β
β βββ βββββ β β β β ββ βββββ β
β βββββββββββββββββββββββββββββ β
β βββββββββββββββββββββββββββββ β
β βββββββββββββββββββββββββββββ β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β βRoot password: cheesy-capital-unwell # password (2) β β
β βLocal network addresses: β β
β βenp1s0 UP 192.168.178.169/24 metric 1024 fe80::21e:6ff:fe45:3c92/64 β β
β βenp2s0 DOWN β β
β βwlan0 DOWN # connect to wlan (3) β β
β βOnion address: 6evxy5yhzytwpnhc2vpscrbti3iktxdhpnf6yim6bbs25p4v6beemzyd.onion β β
β βMulticast DNS: nixos-installer.local β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β Press 'Ctrl-C' for console access β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ {
"pass": "cheesy-capital-unwell",
"tor": "6evxy5yhzytwpnhc2vpscrbti3iktxdhpnf6yim6bbs25p4v6beemzyd.onion",
"addrs": [
"2001:9e8:347:ca00:21e:6ff:fe45:3c92"
]
} To generate the actual QR code, that would be displayed use: echo '{"pass":"cheesy-capital-unwell","tor":"6evxy5yhzytwpnhc2vpscrbti3iktxdhpnf6yim6bbs25p4v6beemzyd.onion","addrs":["2001:9e8:347:ca00:21e:6ff:fe45:3c92"]}' | nix run nixpkgs#qrencode -- -s 2 -m 2 -t utf8For easy sharing of deployment information via QR code, we highly recommend using KDE Connect.
There are two ways to deploy your machine:
The following command will generate a hardware report with nixos-facter and writes it back into your machine folder. The --phases kexec flag makes sure we are not yet formatting anything, instead if the target system is not a NixOS machine it will use kexec to switch to a NixOS kernel.
Password
clan machines install [MACHINE] \
--update-hardware-config nixos-facter \
--phases kexec \
--target-host root@192.168.178.169
QR Code Using a JSON String or File Path: Copy the JSON string contained in the QR Code and provide its path or paste it directly:
clan machines install [MACHINE] --json [JSON] \
--update-hardware-config nixos-facter \
--phases kexec
Using an Image Containing the QR Code: Provide the path to an image file containing the QR code displayed by the installer:
clan machines install [MACHINE] --png [PATH] \
--update-hardware-config nixos-facter \
--phases kexec
If you are using our template [MACHINE] would be jon
If all your machines are physical, you can continue with disk preparations here:
Next Step (Choose Disk Format)
Alternatively, feel free to also add virtual machines into the mix during the next step!