# dotfiles ## Installer ISO Build a bootable NixOS ISO with the installer preinstalled: ```sh nix build .#iso ``` Write `result/iso/nixos-zfs-installer.iso` to a USB stick (for example with `dd`) or boot it in a VM. The image is the minimal NixOS installation CD with ZFS enabled and `nixos-installer` on `PATH`. SSH is enabled and the `nixos` and `root` accounts use the password `nixos`, so you can also run the installer remotely. Once booted: ```sh sudo nixos-installer ``` The ISO bundles the `.#installer-nixos` package, a variant of the binary that keeps its Nix store linkage instead of being patched for foreign distributions. ## Installer binary Build the self-contained installer executable with: ```sh nix build .#installer ``` The flake package (defined in `python/installer/package.nix`) uses the Python builder in `python/installer/build.py`, which stages only the installer modules before running PyInstaller. You can also call it directly when `pyinstaller` and `patchelf` are on `PATH`: ```sh python -m python.installer.build --output ./nixos-installer ``` Copy `result/bin/nixos-installer` to the installer USB stick and run it as root from the NixOS live environment: ```sh sudo ./nixos-installer ``` Validate the live environment first with: ```sh ./nixos-installer --check ``` Paste a value into the TUI encryption password field to enable LUKS during install, or set `ENCRYPT_KEY`: ```sh sudo env ENCRYPT_KEY='change-me' ./nixos-installer ``` The binary bundles the Python runtime and only the installer modules it imports. It still expects the NixOS installer environment to provide system install tools such as `parted`, `zfs`, `zpool`, `cryptsetup`, `nixos-generate-config`, and `nixos-install`.