- pi_hifiberry_amp: the boot config lives at /boot/firmware/config.txt. - pi_sysdweb: install python3-dbus and python3-systemd from apt, which trixie ships at the versions sysdweb needs; bookworm gets the headers pip needs to build dbus-python 1.4 itself. - pi_squeezeserver: trixie images have no iptables, and so cannot have the port 80 redirect that absent.yml removes - skip that step there instead of failing. - pi_modern_shell_env, pi_slint_frontend: read facts through `ansible_facts` rather than the deprecated injected `ansible_*` variables. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
pi_slint_frontend
Builds and installs slint-frontend/ from the app repo - the native front-end that
exists because the React UI is sluggish on the kiosk. Installed alongside the web UI,
never instead of it, and the systemd unit is installed but not enabled: the device still
boots into the kiosk browser.
systemctl start musikdelfin # takes over the screen
systemctl stop musikdelfin # back to the browser underneath
or over SSH, DISPLAY=:0 /usr/local/bin/musikdelfin.
Why this builds on the device
pi_musicmouse builds the web front-end on the control machine and rsyncs dist/,
because npm output is portable and npm is not installed on the Pis. A Rust binary is
not portable, so this role has a harder choice.
The Pis run 32-bit armhf Raspbian on a 64-bit kernel - uname -m says aarch64
and dpkg --print-architecture says armhf, and the second one is the one that
matters. The target is armv7-unknown-linux-gnueabihf. Cross-compiling to it from the
control machine needs a sysroot, and the devices carry no -dev packages to build one
out of, so it would have to be reconstructed from the Debian archive - and then kept in
step with the devices' glibc forever. Spending the device's own CPU once is the smaller
liability. A rebuild only happens when the commit changes.
The same fact rules out the Skia renderer: rust-skia publishes no prebuilt binaries for
armhf, so --features kiosk would mean compiling Skia from source on a Pi. This role
builds --features desktop - winit, FemtoVG and the software renderer - and runs as an
X client in the existing session rather than taking over KMS.
SLINT_BACKEND=winit-software musikdelfin switches renderer without a rebuild, which
is the thing to try first if the GPU path misbehaves. The FemtoVG bug that makes
kiosk use Skia upstream (slint-ui/slint#11785) was reported on a Pi 5 with a 64-bit
userland, so it may well not apply here - but it is worth checking that album covers
actually appear before drawing conclusions about frame rate.
First run
Roughly 40 minutes: 570 crates on two cores. Later runs are incremental and usually
seconds. The build is niced and limited to two jobs, which bounds peak memory on
musicdolphin's 1.8 GB.