73 lines
1.8 KiB
Markdown
73 lines
1.8 KiB
Markdown
# installer
|
|
|
|
I have automated myself out of a job. Here's how to use the installer to create a new host:
|
|
|
|
1. Enable Secure Boot Setup Mode on the target device's UEFI menu - this will vary depending on the manufacturer
|
|
|
|
2. Boot into the installer
|
|
|
|
3. Connect to the internet with `sudo nmcli device wifi connect "<SSID>" [--ask]`
|
|
|
|
4. Run `sudo nix-install /etc/nixos -m install|repair -s -h host [-k key] [-c] [-r]"`
|
|
|
|
5. Enable Secure Boot on the device's UEFI menu.
|
|
|
|
## Reinstalling the Installer
|
|
|
|
1. Download a Minimal Live Nix ISO
|
|
|
|
- Visit the official NixOS website: [https://nixos.org/download.html](https://nixos.org/download.html).
|
|
- Download the "Minimal ISO image".
|
|
|
|
2. Burn the ISO
|
|
|
|
- On Windows, use [Rufus](https://rufus.ie) to burn the ISO to a USB drive.
|
|
|
|
- On Linux, use the `dd` command:
|
|
|
|
```bash
|
|
sudo dd if=<path-to-iso> of=/dev/sdX bs=4M status=progress
|
|
```
|
|
|
|
3. Boot into USB
|
|
|
|
4. Connect to the Internet with `wpa_supplicant`
|
|
|
|
- Identify your network interface:
|
|
|
|
```bash
|
|
ip link show | grep -E '^[0-9]+:' | awk '{print $2}' | tr -d ':'
|
|
```
|
|
|
|
- For an open network:
|
|
|
|
```bash
|
|
wpa_supplicant -i "${interface}" -c <(wpa_passphrase "${ssid}") -B
|
|
```
|
|
|
|
- For a secured network:
|
|
|
|
```bash
|
|
config=$(mktemp)
|
|
wpa_passphrase "${ssid}" "${passphrase}" > "${config}"
|
|
wpa_supplicant -i "${interface}" -c "${config}" -B
|
|
rm "${config}"
|
|
```
|
|
|
|
- Obtain an IP address:
|
|
|
|
```bash
|
|
dhcpcd
|
|
```
|
|
|
|
5. Clone the flake repository
|
|
|
|
```bash
|
|
git clone git.karaolidis.com/karaolidis/nix
|
|
cd nix
|
|
```
|
|
|
|
6. I really hope you had a backup of the keys, because you must copy them to the repository before the next step.
|
|
|
|
7. Run `nix --experimental-features "nix-command flakes" shell nixpkgs#disko nixpkgs#sbctl nixpkgs#jq -c bash hosts/common/configs/system/nix-install/install.sh . -m install -h installer -k personal -c`
|