Decisions
0016: Arch Linux base, in snapshots
Why WolOS is built on Arch Linux packages pinned to a dated snapshot.
Status: accepted. Supersedes the FreeBSD base of 0001 (fork-and-tune stays).
Context
the desktop needs current GPU drivers (Mesa, NVIDIA, virtio-gpu in VMs), native Steam and Proton, and a current kernel. A rolling base breaks the "it just works" promise; a frozen base ages.
Decision
- Base = Arch Linux packages pinned to one Arch Linux Archive date per WolOS release (
wolos-iso/profile/snapshot). pacman reads only that date (Server = https://archive.archlinux.org/repos/<date>/$repo/os/$arch). A WolOS update moves the whole system to a newer tested date; nothing rolls in between. - Kernel = only
linux-wolos, published through the[wolos]channel: github.com/wonderlandos/linux (current stable, pinned ref) +kernel/conf/wolos.configfragment + the patches inkernel/linux/patches/. Other or modified kernels may be installed with pacman; they get their own boot entry,linux-wolosstays the default. - A/B slots: btrfs root subvolumes
@wolos-a/@wolos-b(writable, so pacman works), shared@home,@var. An update snapshots the running root into the other slot, moves its pacman.conf to the new release date, runspacman -Syuthere and boots it next; user-installed packages carry over. systemd-boot entries with boot counting (+3) fall back to the previous slot, which is also the restore point. A failed update deletes the new slot. - Init = systemd. rc.d scripts become units in
image/files/usr/lib/systemd/. sysctl/pciconf/kld readers become /proc, /sys,lspci, modprobe. - Build:
wolos-iso/build.sh= mkarchiso profilewolos-iso/profile/(live + installer ISO) on any Arch host orarchlinuxcontainer. VM tests use QEMU virtio-gpu, so Hyprland runs in the VM. - Packages: pacman stays the package manager, used directly;
wolcontrols only the pinned pacman.conf, release updates and.wolapp metadata..wol= signed pacman package + WolOS metadata;[wolos]repo (apps, kernel, system) beside the pinned Arch repos; each release has a signed manifest (snapshot date, repo revision, image + sha256). - Steam and Proton are native packages (multilib). NVIDIA uses
nvidia-open.
Consequences
FreeBSD-only code (ZFS boot environments, pf, bsdinstall, pkg, wolos_qos kmod) is replaced; Host::is_freebsd paths stay compiling only while removed slice by slice. Firewall = nftables. Scheduler QoS moves to a sched_ext scheduler (follow-up).
Reference synced from wonderlandos/wolos docs/adr/0016-arch-linux-base.md.