- Pin the radiantwave input to tag 1.8 and add channel.appVersion; override the package version so pure builds bake 1.8 instead of RadiantWave's 0.1.0 default. - radiantwaveUpdaterModule gains a manifestFile arg; Raspberry Pi polls aarch64-manifest.json. - Launch the rotated/Android kiosk through /var/lib/radiantwave/current so the live updater actually applies. - Allow unfree in the RPi builder to match x86 and drop the impure NIXPKGS_ALLOW_UNFREE dependency.
56 lines
1.9 KiB
Nix
56 lines
1.9 KiB
Nix
{ config, pkgs, radiantwaveApp, ...}:
|
|
let
|
|
radiantApp = radiantwaveApp;
|
|
# Match configuration.nix: when the live updater is enabled, launch through
|
|
# the mutable /var/lib/radiantwave/current pointer so Android kiosks receive
|
|
# app updates instead of always running the baked baseline.
|
|
launchBin =
|
|
if config.services.radiantwaveUpdater.enable or false
|
|
then "/var/lib/radiantwave/current/bin/radiantwave"
|
|
else "${radiantApp}/bin/radiantwave";
|
|
kioskscript = pkgs.writeShellScript "kiosk-start" ''
|
|
# Wait for the Wayland display to be ready
|
|
for i in {1..10}; do
|
|
if ${pkgs.wlr-randr}/bin/wlr-randr &>/dev/null; then
|
|
break
|
|
fi
|
|
sleep 1
|
|
done
|
|
|
|
OUTPUT=$(${pkgs.wlr-randr}/bin/wlr-randr | grep -m1 '^\S' | awk '{print $1}')
|
|
echo "Rotating output: $OUTPUT" >> /tmp/kiosk.log
|
|
${pkgs.wlr-randr}/bin/wlr-randr --output "$OUTPUT" --transform 90 >> /tmp/kiosk.log 2>&1 || echo "wlr-randr failed" >> /tmp/kiosk.log
|
|
exec ${launchBin} -d -s
|
|
'';
|
|
in
|
|
{
|
|
environment.systemPackages = [ pkgs.wlr-randr];
|
|
|
|
environment.loginShellInit = pkgs.lib.mkForce ''
|
|
if [ "$(tty)" = "/dev/tty1" ]; then
|
|
export GODEBUG=netdns=cgo
|
|
export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt
|
|
for i in {1..10}; do
|
|
if ${pkgs.iputils}/bin/ping -c 1 8.8.8.8 &> /dev/null; then
|
|
break
|
|
fi
|
|
sleep 1
|
|
done
|
|
|
|
export SDL_VIDEODRIVER=wayland
|
|
export QT_QPA_PLATFORM=wayland
|
|
export XDG_SESSION_TYPE=wayland
|
|
export WLR_RENDERER=pixman
|
|
export WLR_NO_HARDWARE_CURSORS=1
|
|
|
|
# Pin system audio to 100% and unmute before launching RadiantWave
|
|
${pkgs.systemd}/bin/systemctl --user start radiantwave-audio-init.service || true
|
|
|
|
# Release the splash screen right before the compositor takes over the display
|
|
sudo -n plymouth quit --wait || true
|
|
|
|
exec dbus-run-session cage -- ${kioskscript} > /tmp/kiosk.log 2>&1
|
|
fi
|
|
'';
|
|
}
|