Skip to main content

max / alloy

Ship the Wi-Fi plugin and a supplicant, so a laptop can reach a network
Author: Max Johnson <me@maxj.phd> · 2026-09-03 19:13 UTC
Signed with PGP, not checked
Commit: fcddf61608c9c7c9c83865e0aabc24ba912d5ea8
Parent: fdfccf3
1 file changed, +25 insertions, -1 deletion
M Containerfile +25 -1
@@ -1612,6 +1612,21 @@
1612 1612 zathura zathura-pdf-mupdf \
1613 1613 # Wayland session glue
1614 1614 cliphist \
1615 + # Wi-Fi, and it is two packages because NetworkManager on Fedora does
1616 + # not do Wi-Fi by itself. The device plugin lives in
1617 + # NetworkManager-wifi and the supplicant is a separate package again;
1618 + # the base is fedora-bootc, a server base, and carries neither. Without
1619 + # them the kernel loads the driver and creates the interface, NM never
1620 + # presents it, and `nmcli device` lists loopback alone. Measured on
1621 + # fw12 2026-09-03: a laptop with working mt7xxx firmware and no way to
1622 + # reach a network, on a distro whose own description is laptop-first.
1623 + #
1624 + # Client-only, because the server profile's machines are wired by role
1625 + # (astra is the only one in evidence). If a headless box on Wi-Fi ever
1626 + # becomes a role, these move to the base block rather than being
1627 + # duplicated into the server branch.
1628 + NetworkManager-wifi \
1629 + wpa_supplicant \
1615 1630 # Lock + idle. swaylock is the adopted lock surface per
1616 1631 # docs/STACK.md#lock. A session-lock surface is graphical and
1617 1632 # cannot be a TUI, so Alloy adopts rather than authors it. The
@@ -1900,7 +1915,16 @@
1900 1915 && for theme in /usr/share/icons/Bibata-*; do \
1901 1916 [ "$theme" = "/usr/share/icons/$KEEP" ] || rm -rf "$theme"; \
1902 1917 done \
1903 - && test -d "/usr/share/icons/$KEEP"; \
1918 + && test -d "/usr/share/icons/$KEEP" \
1919 + # And the Wi-Fi plugin is really there. `dnf install` succeeding is not
1920 + # the check: what a wireless machine needs is the plugin file NM loads at
1921 + # runtime, and the failure this guards is silent by construction. Nothing
1922 + # errors, no unit fails, `alloy net` renders correctly, and the machine
1923 + # simply has no wireless device. It went unnoticed from the first image
1924 + # until 2026-09-03 because every Alloy install so far was reached over a
1925 + # wire.
1926 + && ls /usr/lib64/NetworkManager/*/libnm-device-plugin-wifi.so >/dev/null 2>&1 \
1927 + && rpm -q wpa_supplicant >/dev/null; \
1904 1928 else \
1905 1929 # The asserting else. Five sentinels, one per reason a package could
1906 1930 # have landed here anyway: sway is a direct name in the `then` branch,