Automation scripts for installing Arch Linux with:
- LUKS on LVM
- A single ext4 root filesystem that also contains
/home - systemd-boot
- dracut
All scripts are Bash-only (#!/usr/bin/env bash) and use strict mode.
./install.sh \
--disk /dev/nvme0n1 \
--hostname my-host \
--username k \
--timezone America/ChicagoSupported flags:
--disk <path>--hostname <name>--username <name>(default:k)--timezone <tz>(default:America/Chicago)--confirm-destroy(skip typed destructive confirmation)--root-password-file <path>--user-password-file <path>--luks-passphrase-file <path>--non-interactive--dry-run
- Requires explicit destructive confirmation before disk wipe (unless
--confirm-destroyis passed). - Unmounts all target-disk partitions and disables swap for them before formatting.
- Uses deterministic partition naming for SATA/NVMe/MMC devices.
- Uses root-only secret handoff files for chroot stage and removes them on exit.
- Temporarily grants wheel
NOPASSWDfor post-install user actions and restores sudoers on exit.
From the Arch live ISO, you can launch an interactive installer wrapper with:
curl -fsSL https://raw.githubusercontent.com/kadencartwright/arch-install/main/scripts/bootstrap-live.sh | shThe bootstrap script prompts for:
- target disk, shown with stable
/dev/disk/by-id/...paths where available - hostname
- username
- timezone
- whether to install AUR packages
- whether to install dotfiles
- root password
- user password
- LUKS passphrase
It clones this repo into /tmp/arch-install, writes temporary root-only secret files, asks for a final ERASE confirmation, and then runs install.sh.
Useful overrides:
curl -fsSL https://raw.githubusercontent.com/kadencartwright/arch-install/main/scripts/bootstrap-live.sh \
| REPO_REF=main INSTALL_DIR=/tmp/arch-install shinstall-yay.shandinstall-dotfiles.shsupport ref pinning through env vars:YAY_REFDOTFILES_REFDOTMAN_REF
- If refs are not set, scripts log explicit unpinned-source warnings.