/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:
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.