Skip to content

Add interactive installer, tagged releases, GRUB fixes, and docs refresh - #1

Merged
sinisterMage merged 1 commit into
mainfrom
installer
Jul 6, 2026
Merged

Add interactive installer, tagged releases, GRUB fixes, and docs refresh#1
sinisterMage merged 1 commit into
mainfrom
installer

Conversation

@sinisterMage

Copy link
Copy Markdown
Owner

Interactive installer (plain-prompt TUI, no new dependencies):

  • src/installer/install-lib.sh: shared install logic extracted from the QEMU test autoinstaller (pure helpers, prompt helpers, effectful steps), sourceable and bats-tested; both frontends share one implementation.
  • src/installer/silverblue-install: prompts for disk (type-ERASE gate), hostname/timezone/locale/keymap, bootloader, microcode, linux-firmware, network stack (none/systemd-networkd/NetworkManager), root password, and an optional wheel+sudo admin user. Installed as /usr/bin/-install; live-ISO motd points at it. UEFI-only, no LUKS/swap by design.
  • The unattended autoinstaller keeps byte-identical test behavior and becomes a thin frontend over the shared library.

Testing:

  • tests/unit/test_installer{,_prompts}.bats: 20 new unit tests.
  • tests/qemu/run.sh --interactive + harness phases drive the interactive installer over serial via SILVERBLUE-INSTALL-PROMPT markers, then boot, log in with the configured password, and verify the target (including that no test-only artifacts leak onto interactive installs).
  • Harness probes now lead with a bare Enter so GRUB menu countdowns are never cancelled into the entry editor.

GRUB fixes (pre-existing bugs exposed by the new coverage):

  • grub package now installed via pacstrap; the chroot pacman -S ran after the hermetic path disabled remote repos and always failed.
  • recordfail no longer holds the menu forever (timeout=-1 -> 10s): staged updates on headless GRUB machines used to hang at the menu.
  • GRUB rollback test exercises the health-check OnFailure path; unattended recovery from an unloadable kernel is documented as systemd-boot-only.
  • Frontends run with set -E so SILVERBLUE-INSTALL-FAIL markers and cleanup fire for failures inside library functions.

CI/releases:

  • v* tags publish ISO + SHA256SUMS to GitHub Releases (gh CLI, no new deps).
  • Manual QEMU job gains scenario (unattended/interactive/both) and bootloader (systemd-boot/grub) dispatch inputs.
  • ISO is named after DISTRO_ID instead of archlinux-*.

Docs/website: new docs/installing.md (synced to /guides/installing/), README/SECURITY/CONTRIBUTING/DERIVING/update-flow updates, Download hero action, FAQ/getting-started/comparison refreshed to reflect releases and the installer.

Interactive installer (plain-prompt TUI, no new dependencies):
- src/installer/install-lib.sh: shared install logic extracted from the
  QEMU test autoinstaller (pure helpers, prompt helpers, effectful steps),
  sourceable and bats-tested; both frontends share one implementation.
- src/installer/silverblue-install: prompts for disk (type-ERASE gate),
  hostname/timezone/locale/keymap, bootloader, microcode, linux-firmware,
  network stack (none/systemd-networkd/NetworkManager), root password, and
  an optional wheel+sudo admin user. Installed as /usr/bin/<prefix>-install;
  live-ISO motd points at it. UEFI-only, no LUKS/swap by design.
- The unattended autoinstaller keeps byte-identical test behavior and
  becomes a thin frontend over the shared library.

Testing:
- tests/unit/test_installer{,_prompts}.bats: 20 new unit tests.
- tests/qemu/run.sh --interactive + harness phases drive the interactive
  installer over serial via SILVERBLUE-INSTALL-PROMPT markers, then boot,
  log in with the configured password, and verify the target (including
  that no test-only artifacts leak onto interactive installs).
- Harness probes now lead with a bare Enter so GRUB menu countdowns are
  never cancelled into the entry editor.

GRUB fixes (pre-existing bugs exposed by the new coverage):
- grub package now installed via pacstrap; the chroot pacman -S ran after
  the hermetic path disabled remote repos and always failed.
- recordfail no longer holds the menu forever (timeout=-1 -> 10s): staged
  updates on headless GRUB machines used to hang at the menu.
- GRUB rollback test exercises the health-check OnFailure path; unattended
  recovery from an unloadable kernel is documented as systemd-boot-only.
- Frontends run with set -E so SILVERBLUE-INSTALL-FAIL markers and cleanup
  fire for failures inside library functions.

CI/releases:
- v* tags publish ISO + SHA256SUMS to GitHub Releases (gh CLI, no new deps).
- Manual QEMU job gains scenario (unattended/interactive/both) and
  bootloader (systemd-boot/grub) dispatch inputs.
- ISO is named after DISTRO_ID instead of archlinux-*.

Docs/website: new docs/installing.md (synced to /guides/installing/),
README/SECURITY/CONTRIBUTING/DERIVING/update-flow updates, Download hero
action, FAQ/getting-started/comparison refreshed to reflect releases and
the installer.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@netlify

netlify Bot commented Jul 6, 2026

Copy link
Copy Markdown

Deploy Preview for arch-silverblue ready!

Name Link
🔨 Latest commit 1ac8563
🔍 Latest deploy log https://app.netlify.com/projects/arch-silverblue/deploys/6a4ba2803b4d55000818fb07
😎 Deploy Preview https://deploy-preview-1--arch-silverblue.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@sinisterMage
sinisterMage merged commit 4b3a765 into main Jul 6, 2026
10 of 11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant