Commit022e0ca7Recorded20 Sep 2026Repositorysigil-app

Add guix/run-wayland-game.scm: the run manifest for a game with sound

Changed
 guix/run-wayland-game.scm | 28 ++++++++++++++++++++++++++++
 guix/run-wayland.scm      |  9 ++++-----
 2 files changed, 32 insertions(+), 5 deletions(-)
Diff
guix/run-wayland-game.scmadded
@@ -0,0 +1,28 @@
+1
;; Runtime packages for a game with sound (sigil-desktop + sigil-graphics +
+2
;; sigil-audio) as a native Wayland client on Guix:
+3
;;
+4
;; guix shell --pure -m guix/run-wayland-game.scm -- ./build/release/bin/<game>
+5
;;
+6
;; run-wayland.scm's three (mesa, wayland, libxkbcommon) plus the audio
+7
;; backend library miniaudio loads first on Linux:
+8
;;
+9
;; pulseaudio libpulse.so.0, the client library; on a PipeWire desktop
+10
;; the server is pipewire-pulse, PULSE_SINK picks the sink,
+11
;; and no configuration file is needed. Adds 187 MiB to the
+12
;; closure (`guix size`: 747.5 MiB against 560.1 MiB).
+13
;;
+14
;; The smaller alternative is alsa-lib (libasound.so.2, 3 MiB more): the
+15
;; ALSA backend then goes through the machine's ALSA configuration, which
+16
;; on a PipeWire desktop means the pipewire ALSA plugin and its
+17
;; /etc/alsa/conf.d entries, not something a pure shell brings along; a
+18
;; misconfigured ALSA route can also open a hardware device directly and
+19
;; bypass PULSE_SINK. Measured here with pulseaudio only (Crash The Stack,
+20
;; 2026-09-20: window on a headless sway, stream on the worker-null sink,
+21
;; LD_LIBRARY_PATH empty). A game's NEEDED list with sigil-graphics 0.11.4
+22
;; and sigil-audio 0.12.2 is libm, libc and the loader, so nothing else is
+23
;; resolved before main.
+24
(specifications->manifest
+25
'("mesa"
+26
"wayland"
+27
"libxkbcommon"
+28
"pulseaudio"))
guix/run-wayland.scmmodified
@@ -16,11 +16,10 @@
16
;; mesa is built without glvnd, and a vendorless libGLX.so.0 on the path
17
;; makes GLFW's GLX fail with "No GLXFBConfigs returned").
18
;;
−19
;; With sigil-graphics 0.11.4 (GL loaded through sigil-desktop) a game's
−20
;; NEEDED list is libm and libc plus whatever sigil-audio links; until
−21
;; sigil-audio stops linking libasound, add alsa-lib here and set
−22
;; LD_LIBRARY_PATH=$GUIX_ENVIRONMENT/lib for that one library (NEEDED
−23
;; entries are resolved before main and the dlopen fallback cannot help).
+19
;; With sigil-graphics 0.11.4 (GL loaded through sigil-desktop) and
+20
;; sigil-audio 0.12.2 (miniaudio, backends loaded at run time) a game's
+21
;; NEEDED list is libm, libc and the loader; a game with sound adds the
+22
;; audio backend library, see run-wayland-game.scm.
23
(specifications->manifest
24
'("mesa"
25
"wayland"