2026-06-02 22:08:45 +00:00
2026-06-02 21:12:22 +00:00
2026-06-02 21:36:30 +00:00
2026-06-02 22:08:45 +00:00
2026-06-02 21:36:30 +00:00

Nix Auto Installer

This repository builds a custom NixOS installer ISO that can install one of the hosts exposed by a separate NixOS flake.

The ISO is intentionally opinionated for a local environment. When the nixos user logs in, it runs /etc/auto-install.sh, asks which flake host to install, partitions /dev/sda, installs NixOS, and reboots.

Repository Layout

  • flake.nix defines the build output. The default package is an install-iso image produced with nixos-generators.
  • installer.nix defines the installer ISO configuration, including SSH, Git credentials, users, and the generated auto-install script.

Requirements

  • A machine with Nix installed and flakes enabled.
  • Network access to the configured NixOS flake repository.
  • A target machine or VM where /dev/sda is the disk you want to erase.

Build The ISO

From the repository root:

nix build

The generated ISO will be available through the result symlink.

Use The Installer

  1. Boot the generated ISO on the target machine.

  2. Log in as the nixos user, or connect over SSH if networking is available.

  3. The login shell runs /etc/auto-install.sh.

  4. Choose one of the hosts returned by:

    nix eval --json --no-use-registries --no-accept-flake-config \
      "git+https://gitea.lan.ddnsgeek.com/beatzaplenty/nixos.git#nixosConfigurations" \
      --apply builtins.attrNames
    
  5. Confirm the install when prompted.

What The Installer Does

The generated /etc/auto-install.sh script:

  1. Reads available host names from the configured flake.
  2. Prompts for the host profile to install.
  3. Asks for confirmation.
  4. Repartitions /dev/sda with an MBR layout:
    • /dev/sda1: ext4 root filesystem labeled nixos
    • /dev/sda2: swap partition labeled swap
  5. Mounts the new root filesystem at /mnt.
  6. Runs nixos-install --flake.
  7. Reboots the machine.

Configuration Notes

The installer currently assumes:

  • The flake to install is git+https://gitea.lan.ddnsgeek.com/beatzaplenty/nixos.git.
  • Install targets are exposed under #nixosConfigurations.
  • The install disk is always /dev/sda.
  • The timezone is Australia/Brisbane.
  • SSH is enabled and root login is permitted.
  • The generated ISO has both root and nixos users configured with hashed passwords.

Change these values in installer.nix before building if your environment differs.

Safety Warnings

This installer is destructive. Once confirmed, it repartitions /dev/sda without another prompt. Make sure the target disk name is correct before using the ISO on real hardware.

installer.nix currently contains embedded Git credentials, password hashes, and an SSH public key. Treat this repository and any generated ISO as sensitive. Prefer moving credentials to a safer delivery mechanism before sharing the repo or ISO.

Troubleshooting

  • If no host choices appear, confirm the target machine has network access and can reach the configured flake URL.

  • If installation fails while fetching the flake, verify the embedded Git credentials are valid.

  • If the wrong disk is being partitioned, stop immediately and update the disk paths in installer.nix.

  • If the login shell does not start the installer, run it manually:

    sudo /etc/auto-install.sh
    
S
Description
No description provided
Readme 103 KiB
Languages
Nix 100%