veilor-os/docs/INSTALLER.md
s8n 92eb82b72b
feat(installer): pre-stage gum-based UX assets for v0.5.1 (#7)
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>
2026-05-02 04:38:18 +01:00

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.0 whiptail build, 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:

  1. Target disk (gum choose over lsblk output — selected disk is wiped)
  2. Hostname (gum input, default veilor)
  3. LUKS passphrase (gum input --password, min 8 chars, full-disk encryption)
  4. Admin password (gum input --password, min 8 chars)
  5. Locale (gum choose — en_GB, en_US, de_DE, fr_FR)
  6. 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.

Credits & license

  • gum by Charm — MIT-licensed Go TUI toolkit. We dynamically exec gum at runtime; no source vendored. Distributed via the Fedora gum package.
  • veilor-installer itself is MIT-licensed (see LICENSE), matching the rest of the repo and the upstream gum project.