nixos-anywhere-example/template
2023-10-16 18:55:46 +02:00
..
disk-configs add LUKS format arguments 2023-10-16 18:50:51 +02:00
hardware-configs add generated hardware config 2023-10-12 11:58:40 +02:00
flake.lock template/flake.lock: Update 2023-10-11 21:02:16 +02:00
flake.nix update helper script 2023-10-16 18:32:46 +02:00
install-helper.sh update helper script 2023-10-16 18:32:46 +02:00
iso.nix refactor 2023-10-12 13:01:44 +02:00
nitrokey.pub enable SSH 2023-10-12 12:04:12 +02:00
README.md update README 2023-10-16 18:55:46 +02:00

nixos-anywhere and disko

This is an example repository for nixos-anywhere and disko.

Build installer ISO with passwordless SSH

nix-build '<nixpkgs/nixos>' -A config.system.build.isoImage -I nixos-config=iso.nix
ls result/iso/

Hardware Configuration

Boot the target machine into NixOS live ISO. Then execute the following, ideally while connected via SSH:

nixos-generate-config --no-filesystems --root /mnt
cat /mnt/etc/nixos/hardware-configuration.nix

Save the output to a new file in ./hardware-configs/. In ./flake.nix replace ./hardware-configs/yodaHP.nix with it.

Note: The hardware configuration should not contain any fileSystems.<name> options as these are generated based on your disko configuration.

Installation

To run the interactive vm test run:

nix --extra-experimental-features nix-command --extra-experimental-features flakes \
  run github:numtide/nixos-anywhere -- -f '.#mysystem' --vm-test

To install on remote target machine:

# yodaHP
nix --extra-experimental-features nix-command --extra-experimental-features flakes \
  run github:numtide/nixos-anywhere -- --flake '.#mysystem' -p 22 root@192.168.178.106

To install on remote target machine and print the SSH fingerprint of the new system. If no encrypted disks are set up, the disk password can be left empty:

# yodaHP
./install-helper.sh 22 root@192.168.178.106

Updating dependencies

Recreate the lock file (i.e. update all inputs) and commit the new lock file:

nix --extra-experimental-features nix-command --extra-experimental-features flakes \
  flake update --commit-lock-file

TODOs