52 lines
1.7 KiB
Markdown
52 lines
1.7 KiB
Markdown
# 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`.
|