Drops in branded assets the v0.5.1 installer rewrite (whiptail -> gum) will consume: ASCII banner, sourceable GUM_* env-var palette matching the veilor-black KDE color scheme, and an INSTALLER.md walkthrough. The existing v0.5.0 veilor-installer script is intentionally untouched so the swap can land in a separate, focused PR. Co-authored-by: s8n-ru <279801990+s8n-ru@users.noreply.github.com> Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
4.2 KiB
veilor-os Installer
Branded TUI installer that runs on tty1 of the live ISO. Wraps the
underlying anaconda kickstart install with a single-flow user experience
similar in spirit to omarchy and archinstall.
Status (v0.5.1): TUI rewritten on top of
gum(charm.sh's Go TUI toolkit). Replaces the v0.5.0whiptailbuild, which used the Fedora-default colors and looked out of place against the rest of the branded system.
Screenshots
Placeholder — real screenshots to be captured against the v0.5.1 ISO once the gum-based installer ships and boots clean on test hardware.
| Stage | Path |
|---|---|
| Banner + menu | assets/installer/screenshots/01-menu.png (TBD) |
| Disk picker | assets/installer/screenshots/02-disk.png (TBD) |
| Confirm | assets/installer/screenshots/03-confirm.png (TBD) |
| Install spin | assets/installer/screenshots/04-spin.png (TBD) |
Boot flow
power on
└─ UEFI / GRUB
└─ live kernel + initramfs
└─ systemd → multi-user.target
└─ getty@tty1.service.d/veilor-installer.conf
└─ /usr/local/sbin/veilor-installer
├─ source assets/installer/colors.gum
├─ cat assets/installer/banner.txt
└─ gum choose <main menu>
The override at overlay/etc/systemd/system/getty@tty1.service.d/veilor-installer.conf
replaces the standard login prompt on tty1 with the installer entry point.
Other ttys (2-6) still get a normal getty for recovery use.
Main menu
| # | Option | Action |
|---|---|---|
| 1 | Install veilor-os to disk | collect answers → generate ks → anaconda |
| 2 | Try live — desktop (KDE Plasma) | systemctl isolate graphical.target |
| 3 | Try live — shell | exec /bin/bash --login |
| 4 | Reboot | systemctl reboot |
| 5 | Power off | systemctl poweroff |
Install path — questions asked
In order, the installer collects:
- Target disk (
gum chooseoverlsblkoutput — selected disk is wiped) - Hostname (
gum input, defaultveilor) - LUKS passphrase (
gum input --password, min 8 chars, full-disk encryption) - Admin password (
gum input --password, min 8 chars) - Locale (
gum choose— en_GB, en_US, de_DE, fr_FR) - Confirmation (
gum confirm— summary of choices before destructive step)
Answers are written into /run/install/veilor-generated.ks and handed off
to anaconda --kickstart=.... The kickstart inlines the LUKS passphrase
and the admin password — the file is never committed and lives only in
the live tmpfs.
Branding assets
| File | Purpose |
|---|---|
assets/installer/banner.txt |
ASCII banner shown above the menu |
assets/installer/colors.gum |
sourceable bash file of GUM_* env vars |
The palette mirrors assets/kde/veilor-black.colors:
black #000000 background, white #FFFFFF foreground, grey #686B6F
accent. No reds, no other colors. Pure monochrome.
Logs
/var/log/veilor-installer.log— installer stdout/stderr/tmp/anaconda.log— kickstart execution log
Both are tee'd to the screen during the install spin, so a failed install leaves visible breadcrumbs without forcing the user to dig.