Package sections: always-on + advanced menu #3

Merged
yuri merged 2 commits from feat/package-sections into main 2026-10-27 13:57:40 +01:00
Owner

Section 6 (always): ALWAYS_PACKAGES array, per-category lines — starts with Terminals (ghostty + bash completion). Add a line, get a category.

Section 7 (advanced menu): data-driven picker (ADV_CATEGORIES + ADV_ arrays). Ships Virtualisation (qemu/kvm + VirtualBox) and Browsers (firefox, chromium, google-chrome, brave — last two wire their repos). Multi-select, invalid-pick tolerance, back-navigation, skipped under --yes.

Three bugs caught by harness testing pre-ship: ${!var} array truncation (nameref fix), unbound var, --snapper=no being overridden.

Section 6 (always): ALWAYS_PACKAGES array, per-category lines — starts with Terminals (ghostty + bash completion). Add a line, get a category. Section 7 (advanced menu): data-driven picker (ADV_CATEGORIES + ADV_<Cat> arrays). Ships Virtualisation (qemu/kvm + VirtualBox) and Browsers (firefox, chromium, google-chrome, brave — last two wire their repos). Multi-select, invalid-pick tolerance, back-navigation, skipped under --yes. Three bugs caught by harness testing pre-ship: ${!var} array truncation (nameref fix), unbound var, --snapper=no being overridden.
yuri added 1 commit 2026-10-27 13:04:16 +01:00
Section 6 'Always-installed packages': ALWAYS_PACKAGES array, one line per
category (first: Terminals with ghostty + ghostty-bash-completion). Every
entry installs on every run, no questions. Add a category by adding a line.

Section 7 'Advanced optional tools': menu-driven picker, data-driven —
ADV_CATEGORIES + ADV_<Category> arrays ('id:Label:pkgs...'). Ships
Virtualisation (qemu/kvm stack, VirtualBox) and Browsers (firefox,
chromium, google-chrome, brave; the latter two wire up their repos
automatically). Multi-select with comma-separated picks, invalid picks
warned and skipped, 'x' backs out, menu is skipped under --yes so
unattended runs never hang.

Bugs found by harness testing and fixed before shipping:
- ${!var} on an array name yields only element[0]: Browsers listed one
  entry. Now uses a nameref (declare -n).
- var assignment was lost in an edit: unbound-variable crash on the menu.
- --snapper=no was overwritten by the interactive default; explicit flags
  now always win.
yuri added 1 commit 2026-10-27 13:39:30 +01:00
Root cause of the VM failures (both qemu-kvm AND VirtualBox showed 'No
match for argument: <entire list>'): picks were resolved into ONE quoted
string and passed to dnf as a single argument, so dnf searched for a
package literally named 'qemu-kvm libvirt virt-install ...'. Picks are
now word-split into separate package arguments.

Also, a failing install no longer kills the script (set -e abort): the
menu prints a red 'Installation failed' warning, notes the system is
unchanged, and drops back to the menu so another choice can be made.
Proven in harness: VBox failure (no match) followed by successful qemu
install in the same session, exit 0.
yuri merged commit fceeb57254 into main 2026-10-27 13:57:40 +01:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: yuri/fedora#3