/docs · Installing

Unattended installs

Every installer question answered ahead of time with environment variables.

Every question can be answered ahead of time, so only the LUKS passphrase is typed in:

variable answer
DISK the whole disk, e.g. /dev/nvme0n1 or a /dev/disk/by-id/ name
INSTALL_HOSTNAME, INSTALL_USERNAME names
INSTALL_DESKTOP plasma, gnome, niri or umbriel
NVIDIA_DRIVER none, open or legacy
KEYBOARD_LAYOUT, KEYBOARD_VARIANT, LOCALE e.g. de, nodeadkeys, de_DE.UTF-8
PROFILE full or minimal (the small install)
EXTRAS, OPENSNITCH, PASS_SSH_AGENT, FINGERPRINT true or false
PASS_SSH_VAULT the Proton Pass vault with your SSH keys; no quotes, $, backticks or backslashes
CONTROLD_RESOLVER your Control D resolver id; empty for none
APPS apps from the ephemeral-apps catalog, e.g. obsidian,glow; empty for none
SWAP_SIZE, TIMEZONE e.g. 16G, Europe/Berlin
PASSWORD_HASH the login password as a hash, from mkpasswd -m yescrypt
HARDWARE_CONFIG a hardware-configuration.nix to use instead of detecting one
CONFIRM YES skips the question that has you type the disk’s name before it’s erased
ALLOW_SAME_PARTLABELS 1 installs while another disk has partitions from an earlier Ephemeral Nix install. They have the same labels the new system boots by, so it may start the old one; normally refused
FORCE_DISK 1 allows a disk that’s in use (mounted, swap, or an open LUKS, LVM or RAID device), holds an installer image, or is part of an LVM volume group, ZFS pool or RAID array; normally refused

Pass them with sudo env, as in the install commands. Plain sudo VAR=... usually drops them.

For example, the installer without menus, from the NixOS ISO:

shell
curl -fsSL https://raw.githubusercontent.com/the-wittch/ephemeral-nixos/main/scripts/bootstrap.sh | sudo env SWAP_SIZE=4G bash -s -- /dev/vda

Without the menus, it doesn’t ask for the hostname, user, swap size or timezone, and it skips the apps. It uses nixos, nixuser, 4G and UTC unless you set them.

The screens can also be skipped with ephemeral-install --answers file.json: the same keys as settings.json, plus passphrase, password, apps, confirmDisk (the disk’s name, such as vda, as the screens make you type it) and optionally hardwareConfig. See Working on the installer.