Commit graph

28 commits

Author SHA1 Message Date
veilor-org
1b3a64bc2a v0.6: pre-stage veilor-update + veilor-doctor CLI tools
Two user-facing commands shipped in overlay/usr/local/bin/.
Wraps dnf+flatpak update flow and read-only health diagnostic.
Uses gum if available, plain output otherwise. No kickstart wiring
yet beyond chmod — full integration in v0.6.0 release.
2026-05-02 04:13:49 +01:00
veilor-org
3328ffb460 v0.5.0-alpha: TTY1 installer (omarchy/archinstall-style)
Adds:
- overlay/usr/local/sbin/veilor-installer — bash+whiptail TUI
- overlay/etc/systemd/system/getty@tty1.service.d/veilor-installer.conf
  → replaces tty1 login with installer
- ks: newt + parted + cryptsetup + lvm2 + btrfs-progs packages
- ks: systemctl set-default multi-user.target (TTY1 lands first; user
  picks "Try live — desktop" from menu to isolate graphical.target)
- ks: chmod +x veilor-installer in chroot %post

Flow:
1. Boot ISO → TTY1 → ASCII banner + menu:
   1) Install to disk    2) Try live — desktop   3) Try live — shell
   4) Reboot             5) Power off
2. Install path: collects disk/hostname/LUKS/admin pw/locale via whiptail,
   generates /run/install/veilor-generated.ks, execs anaconda --kickstart=
3. Reboots into hardened install with full init_on_alloc/free cmdline

Known limitations (v0.5.0-alpha):
- Generated ks doesn't yet copy overlay/scripts into target (anaconda
  installs base Fedora, missing veilor branding/hardening). Fix in v0.5.1.
- whiptail = ugly. v0.5.1 swaps to gum (Go TUI) for omarchy-tier UX.
- No mid-install progress bar; anaconda runs unattended in same tty.
2026-05-02 03:20:42 +01:00
veilor-org
ebf0032559 v0.2.7: fix SDDM autostart + blank-pw login
- display-manager.service symlink: livecd-creator skips alias creation
  vs Anaconda installer; without it sddm stays inactive at graphical.target
- admin user: replace `passwd -d` with throwaway pw `veilor` + chage -d 0
  (SDDM rejects blank pw by default, breaks first-login flow)

Tested in QEMU v0.2.5: confirmed sddm enabled but inactive after boot,
and blank-pw login at SDDM returns "Login Failed".
2026-05-02 03:08:08 +01:00
veilor-org
22928b0a83 v0.2.6: drop '(Fedora 43 base)' from PRETTY_NAME; chown -R 0:0 overlay (cp -a preserved CI uid 1001 → sudo refused sudoers.d) 2026-05-02 01:08:03 +01:00
veilor-org
8515bdbe38 ks: drop init_on_alloc/init_on_free from live cmdline (5x boot time on KVM)
Live ISO stalled at dracut for 5+min on KVM with init_on_alloc=1
init_on_free=1 — kernel zeroes every page on alloc/free, brutal in
virtualized memory. Keep slab_nomerge + lockdown=integrity +
randomize_kstack + vsyscall=none for live (cheap). Re-add memory
init flags on installed system via veilor-firstboot post-install
GRUB edit (planned v0.3).
2026-05-01 23:23:35 +01:00
veilor-org
ef54a246f0 v0.2.3: os-release branding + admin user creation in %post
- kde-theme-apply.sh: search /etc/os-release.d/veilor (where overlay
  put it) before falling back to $REPO/overlay path. Rewire symlinks
  cleanly: /etc/os-release → ../usr/lib/os-release.
- Kickstart: useradd admin in chroot %post since livecd-creator skips
  the `user` directive (no installer phase). Blank pw + expired = forced
  reset at first login same as before.
2026-05-01 18:25:57 +01:00
veilor-org
3408841822 ks: %post --nochroot loosened error handling + nochroot trace log
Found via debugfs: overlay copy succeeds (veilor-power, tuned profiles,
sshd-hardening, sudoers, systemd units all present in v0.2.1 rootfs) but
`mkdir + cp assets/scripts` aborted with set -eu — leaves /usr/share/
veilor-os missing → all chroot %post scripts fail. Switch to set +e on cp
plus persist trace log to /var/log/veilor-nochroot.log for next debug.
2026-05-01 15:21:22 +01:00
veilor-org
9c6136f01f ks: %post --nochroot uses $INSTALL_ROOT (livecd-creator) — was hardcoded /mnt/sysimage
Bug confirmed by inspecting v0.2.0 ISO: rootfs symlinks /etc/os-release →
../usr/lib/os-release (stock Fedora), no /usr/share/veilor-os, no overlay
files, /var/log/veilor-install.log shows %post chroot couldn't find any
script because %post --nochroot copy targeted /mnt/sysimage (livemedia-creator
path) instead of livecd-creator's INSTALL_ROOT.
2026-05-01 11:48:30 +01:00
veilor-org
eeb54942a9 ks: switch fedora/updates repos to direct baseurl (mirrorlist 404s during CDN sync) 2026-04-30 17:24:43 +01:00
veilor-org
084582e0e5 ks: add upstream live plumbing + explicit base repo
Agent A: missing livesys-scripts + anaconda-live = lorax can't build EFI/BOOT.
Agent B: livecd-creator ignores url=, only reads repo.repoList — added
explicit repo --name=fedora to feed it the base.

Both Fedora's own pipeline + livecd-creator now have what they need.
Live image plumbing in %post: enable livesys.service livesys-late.service
tmp.mount, reset machine-id.
2026-04-30 17:07:24 +01:00
veilor-org
314a24f584 ks: add grub2-efi-x64-modules + xorriso for EFI/BOOT grafting
Past grub2-mkimage. Failed at xorrisofs final ISO assembly because EFI/BOOT
dir not built — needs grub2-efi-x64-modules to compile standalone grubx64.efi.
2026-04-30 15:48:57 +01:00
veilor-org
5dea325a0c ks: add grub2-pc + grub2-pc-modules + tools-extra + syslinux + isomd5sum
CI made it through full install, configure, %post, squashfs build,
initrd rebuild — failed at final boot.iso wrap because grub2-mkimage
needed /usr/lib/grub/i386-pc/moddep.lst (BIOS legacy boot modules).
Hybrid BIOS+UEFI ISO requires both grub variants.
2026-04-30 15:07:04 +01:00
veilor-org
5f650d45d8 ks: %post --nochroot — multi-path overlay source detection (/work CI, /run/install/repo virt, kickstart-relative no-virt) 2026-04-30 14:14:07 +01:00
veilor
b3ddf7040a ks: drop veilor-firstboot/veilor-modules-lock from services line — enabled in %post after overlay 2026-04-30 13:44:51 +01:00
veilor
e1e392098f ks: add local fix-repo (file:///tmp/veilor-fix-repo) — pcre2 10.47 + selinux-policy 43.7 paired, cost=1 forces selection 2026-04-30 12:04:49 +01:00
veilor
8e851406d0 ks: includepkgs on updates repo (selinux-policy/pcre2/libselinux only) + cost=10 2026-04-30 11:16:30 +01:00
veilor
b3b5ce0b08 ks: swap install source to updates repo (base has pcre2/selinux-policy version skew) 2026-04-30 11:07:35 +01:00
veilor
10ee8d33e4 ks: updates repo cost=500 vs base default 1000 — force latest selinux-policy + pcre2 2026-04-30 10:45:58 +01:00
veilor
31c1af4aec ks: hardcode releasever=43, add --install on updates repo, add updates-testing — base ships outdated selinux-policy 2026-04-30 10:07:58 +01:00
veilor
e965b148f5 ks: SELinux permissive at build (PCRE2 mismatch); enforcing+relabel at first boot 2026-04-30 09:43:33 +01:00
veilor
238e461553 ks: keep KDE deps (cups/geoclue2/MM/PackageKit) — mask daemons at runtime instead 2026-04-30 04:31:49 +01:00
veilor
ec79dc1746 ks: keep avahi-libs/pcsc-lite — daemons disabled at runtime, libs broadly required 2026-04-30 04:24:20 +01:00
veilor
1d5147ba11 ks: simplify to live rootfs partitioning — installer ks (LUKS) split planned v0.2.1 2026-04-30 04:12:26 +01:00
veilor
3b5341c77a ks: drop text display mode — livemedia-creator forbids 2026-04-30 04:11:46 +01:00
veilor
3c2fec042f ks: add dracut-live + grub2/shim/efibootmgr — required by livemedia-creator --make-iso 2026-04-30 04:08:08 +01:00
veilor
f6a89d16f1 ks: drop removed auth cmd, collapse multiline part/logvol, drop unsupported --hash flag 2026-04-30 04:03:10 +01:00
veilor
f1b44bc218 fonts: swap DuckSans → Fira Code (Fedora fira-code-fonts, SIL OFL 1.1) 2026-04-30 03:57:17 +01:00
veilor
1822005df1 veilor-os v0.1 scaffold — kickstart + hardening + 3-mode power + DuckSans-ready KDE black theme 2026-04-30 03:43:33 +01:00