Void Linux!

Getting sound to work

This is a tutorial on how to make Pipewire work on Void Linux. Not sure how to structure this but here we go

What you'll need to install

xbps-install dbus pipewire wireplumber elogind turnstile psmisc

first things first: we'll have to configure turnstile

What is turnstile for?

Turnstile makes user services work on non-systemd distros such as Void. This is important for dbus and pipewire to work

in /etc/turnstile/turnstiled.conf change this option from "yes" to "no":

manage_rundir = no

then we'll have to enable dbus and turnstile system services:

ln -s /etc/sv/{dbus,turnstiled}

First part is done. Now for the second one

make sure these directories exist:

mkdir -p ~/.config/service/dbus mkdir -p ~/.config/service/pipewire mkdir -p ~/.config/pipewire/pipewire.conf.d

then link these files:

ln -s /usr/share/examples/turnstile/dbus.run ~/.config/service/dbus/run ln -s /usr/share/examples/wireplumber/10-wireplumber.conf ~/.config/pipewire/pipewire.conf.d ln -s /usr/share/examples/pipewire/20-pipewire-pulse.conf ~/.config/pipewire/pipewire.conf.d

What are these files for?

Linking the first file will make the user dbus service work. Last two are for making pipewire run correctly

Second part ends here. One more to go

now you'll have to make 2 files for the pipewire user service to work

here's the contents of the first one: ~/.config/service/pipewire/run

#!/bin/sh exec chpst -e "$TURNSTILE_ENV_DIR" pipewire

and the second one: ~/.config/service/pipewire/finish

#!/bin/sh killall pipewire wireplumber

And now you should be good to go! Althought there's still one more thing left

turnstile has a special command on Void: turnstile-update-runit-env. This command can add variables from your environment to user services. Here's an example:

turnstile-update-runit-env WAYLAND_DISPLAY DISPLAY NIRI_SOCKET XDG_CURRENT_DESKTOP XCURSOR_SIZE XCURSOR_THEME

you should make this command run after your environment starts. For example, if you're using a window manager, then put this command in its config. More variables may be needed but this should make everything work for the most part