Skip to content

Installing Garuda Nix

Two frontends install the same Garuda flake. Pick one.

The graphical installer keeps it simple on purpose. Pick an edition (mokka, dr460nized) and pick optional features (gaming, printing, and more). Further customization can be done after the installation is complete.

The command-line installer covers everything the GUI does, plus:

  • Presets: choose from desktop, laptop, server, or handheld.
  • Partition layouts: choose from ext4, btrfs, luks-ext4, luks-btrfs, btrfs-impermanence, luks-btrfs-impermanence, ext4-impermanence, luks-ext4-impermanence.
  • Impermanence: choosing impermanence automatically sets up either btrfs rollback or root on tmpfs.
  • Passwords: the user (--password) and root (--root-password) passwords are hashed with yescrypt and written into the generated config, so they survive impermanence and rollback.

This can either be done interactively or non-interactively.

Example:

Terminal window
sudo install-garuda-nix --edition mokka --preset desktop \
--feature gaming --feature printing \
--hostname mypc --username nico \
--disk /dev/sda --schema btrfs --install
usage: install-garuda-nix [-h] [--edition {mokka,dr460nized}] [--preset {desktop,laptop,server,handheld}]
[--feature FEATURE] [--root ROOT] [--disk DISK]
[--schema {ext4,btrfs,luks-ext4,luks-btrfs,btrfs-impermanence,luks-btrfs-impermanence,ext4-impermanence,luks-ext4-impermanence}]
[--luks-pass-file LUKS_PASS_FILE] [--yes] [--hostname HOSTNAME] [--username USERNAME]
[--fullname FULLNAME] [--no-autologin] [--timezone TIMEZONE] [--locale LOCALE]
[--xkb-layout XKB_LAYOUT] [--xkb-variant XKB_VARIANT] [--vconsole VCONSOLE]
[--bootloader {auto,systemd-boot,grub,none}] [--grub-device GRUB_DEVICE]
[--kernel {cachyos,lts,latest}] [--flake-ref FLAKE_REF] [--state-version STATE_VERSION]
[--allow-unfree | --no-allow-unfree] [--install | --no-install] [--no-bootloader] [--tui]
[--password PASSWORD] [--root-password ROOT_PASSWORD]

Common options:

  • --disk wipes and partitions the disk before installing. Without it, --root is used when mounted, otherwise the installer asks.
  • --schema sets the partitioning layout for --disk. The default is btrfs.
  • --yes skips the disk-wipe confirmation. Use it with care.
  • --bootloader is auto by default. auto uses systemd-boot on UEFI. Otherwise GRUB needs --grub-device, for example /dev/sda on BIOS installs.
  • --kernel picks cachyos, lts or latest.
  • --install and --no-install control whether nixos-install runs afterwards. It runs by default.
  • --tui forces the interactive wizard, even when all flags are given.

On any NixOS host with internet, run the installer directly from the published flake:

Terminal window
sudo nix run "git+https://gitlab.com/garuda-linux/garuda-nix.git?ref=stable#install-garuda-nix" -- \
--edition mokka --hostname mypc --username nico --install

--flake-ref defaults to that same stable ref, so the generated config already points at it. Future rebuilds are just nixos-rebuild switch --flake /etc/nixos#mypc. Pass another ref to --flake-ref to track a different branch instead.

Both installers write a flake config built from the same template. What lands in configuration.nix is controlled by the module options, for example garuda.gaming.enable and garuda.impermanence.*. Presets and features are shortcuts that flip those options on.