Abstract

After years of intending to abandon Debian because of the maintainers' lamentable decision, I've finally done it...at least on my laptop. My other machines will follow shortly. I've migrated to Void.

Why Void?

Because I...
  1. rarely use the mouse (unless I'm in FreeCAD, KiCad or Firefox)
  2. don't run "desktops,"
  3. frequently build my own software, but I appreciate not needing to, especially for core system components,
  4. am severely allergic to bloat (generally adhere to the Unix philosophy),
  5. don't run D-Bus,
  6. don't henceforth run systemd, and
  7. appreciate a waffle-thin base installation that lets me decide what to layer on the kernel
Void's package manager, incidentally, is at least as well-designed as Debian's, maybe better.

Almost minimum viable configuration...

..."almost" because I figured since I'm climbing the learning curve of a new distro, I might as well migrate from XWindows to Wayland, too. Oh, and let's switch out the bloated glibc for musl C. Yes, let's bite off multiple migrations at once. What could go wrong?

The goal incidentally was a Void installation

  1. running sway
  2. capable of running firefox-wayland
  3. and a Wayland xterm replacement (mostly for neovim).
That is my minimum usable laptop configuration.

To the default installation (base-system-0.114_2, grub-x86_64-efi-2.12_2 and friends) you get from using the void-installer I only had to xbps-install -Su ...:

  1. wayland-1.23.0_1
  2. sway-1.10_1
  3. seatd-0.9.1_1
  4. mesa-dri-24.2.8_2
  5. dumb_runtime_dir-1.0.4_1
  6. noto-fonts-ttf-2024.11.01_1
...and...
cd /etc/runit/runsvdir/default/
ln -s /etc/sv/seatd
...for sway as user to give me a GUI screen!

Early attempts to launch sway failed because neither a renderer (mesa-dri) nor fonts (noto-fonts-ttf) were available. Void's docs warned me! A few more packages got me to minimum usable laptop.

  1. firefox-132.0_1
  2. wmenu-0.1.9_1
  3. foot-1.19.0_1
  4. neovim-0.10.2_2
  5. wayclip-0.4.2_1
  6. imv-4.5.0_1
  7. wget-1.25.0_1
And xbps-install -Su ...
  1. rsync-3.3.0_1
  2. base-devel-20181003_2
  3. gdb-15.2_1
  4. man-pages-devel-6.05.01_2
  5. git-2.47.0_1
...got me most of a development system.

Sway, incidentally is every bit the drop in (Wayland) replacement for i3 that it claims to be. Love it!

WiFi

No need for ConnMan, Network Manager or WICD. Just adding a network config to to /etc/wpa_supplicant/wpa_supplicant.conf by appending wpa_passphrase' output to wpa_supplicant.conf.
 
# Default configuration file for wpa_supplicant.conf(5).

ctrl_interface=/run/wpa_supplicant
ctrl_interface_group=wheel
eapol_version=1
ap_scan=1
fast_reauth=1
update_config=1
country=US

# Add here your networks.
network={
	# This section (removed from prying eyes) was added by
	# wpa_passphrase >SSID< >password< >> wpa_supplicant.conf
}
wpa_passphrase adds the "network = {...}" block. Adding "scan_ssid=1" and "priority=10" inside the network block, too, can hasten association.

Active wpa_supplicant as a daemon by (as root)...

cd /etc/runit/runsvdir/default
ln -s /etc/sv/wpa_supplicant
Then dhclient, installed by default, will provision your WiFi device as soon as it associates with an access point and you're on the 'net.

Gotchas

Make sure your localtime is correct before using the package manager, or you may get hard-to-interpret errors related to network timing. Assuming the machine's hardware clock is set to UTC as is common, as root...
cd /etc
ln -s /usr/share/zoneinfo/US/Pacific localtime
...replacing US/Pacific with whatever your timezone is.

Provisioning a Raspberry Pi 400

The Raspberry Pi images don't contain the void-installer executables. They are ready to boot from an SD card prepped like...
xzcat image > /tmp/void-musl.img
dd bs=4M if=/tmp/void-musl.img of=/dev/sdX
sync