From: Demi Marie Obenour <demiobenour@gmail.com>
To: Alyssa Ross <hi@alyssa.is>,
Spectrum OS Development <devel@spectrum-os.org>
Subject: Re: [PATCH v4 3/3] Run PipeWire and WirePlumber in the VMs
Date: Fri, 18 Jul 2025 13:59:25 -0400 [thread overview]
Message-ID: <fcee2298-2f77-4f6b-858c-efd9ce8a8896@gmail.com> (raw)
In-Reply-To: <87jz45spqi.fsf@alyssa.is>
[-- Attachment #1.1.1: Type: text/plain, Size: 5247 bytes --]
On 7/18/25 07:27, Alyssa Ross wrote:
> Demi Marie Obenour <demiobenour@gmail.com> writes:
>
>> WirePlumber is completely overkill as a session manager here, and
>> ideally a trivial session manager would be used instead. I did build a
>> Spectrum OS image and found that PipeWire and WirePlumber both
>> successfully started. PipeWire is configured to listen on the
>> PulseAudio socket, so PulseAudio compatibility works. This does inject
>> a large number of completely unnecessary files into the VM, notably for
>> libcamera and Bluetooth support.
>>
>> Signed-off-by: Demi Marie Obenour <demiobenour@gmail.com>
>> ---
>>
>> Notes:
>> I tested this with QEMU virtio-sound, but I am not sure if the paramters
>> are correct. In particular, the sample rate might well be wrong.
>>
>> img/app/Makefile | 28 +-
>> img/app/default.nix | 18 +
>> img/app/etc/pipewire/pipewire.conf | 291 ++++++++
>> .../etc/s6-rc/app/dependencies.d/directories | 0
>> .../app/dependencies.d/directories.license | 2 +
>> .../etc/s6-rc/app/dependencies.d/wireplumber | 0
>> .../app/dependencies.d/wireplumber.license | 2 +
>> .../etc/s6-rc/dbus/dependencies.d/directories | 0
>> .../dbus/dependencies.d/directories.license | 2 +
>> img/app/etc/s6-rc/directories/type | 1 +
>> img/app/etc/s6-rc/directories/type.license | 2 +
>> img/app/etc/s6-rc/directories/up | 11 +
>> .../s6-rc/pipewire/dependencies.d/directories | 0
>> .../dependencies.d/directories.license | 2 +
>> img/app/etc/s6-rc/pipewire/notification-fd | 1 +
>> .../s6-rc/pipewire/notification-fd.license | 2 +
>> img/app/etc/s6-rc/pipewire/run | 20 +
>> img/app/etc/s6-rc/pipewire/type | 1 +
>> img/app/etc/s6-rc/pipewire/type.license | 2 +
>> .../dependencies.d/directories | 0
>> .../dependencies.d/directories.license | 2 +
>> img/app/etc/s6-rc/wayland-proxy-virtwl/run | 11 -
>> .../etc/s6-rc/wireplumber/dependencies.d/dbus | 0
>> .../wireplumber/dependencies.d/dbus.license | 2 +
>> .../s6-rc/wireplumber/dependencies.d/pipewire | 0
>> .../dependencies.d/pipewire.license | 2 +
>> img/app/etc/s6-rc/wireplumber/run | 4 +
>> img/app/etc/s6-rc/wireplumber/type | 1 +
>> img/app/etc/s6-rc/wireplumber/type.license | 2 +
>> img/app/etc/wireplumber/wireplumber.conf | 676 ++++++++++++++++++
>
> The PipeWire and WirePlumber config files are still very big. Is it
> really not possible to make them smaller and rely on defaults where
> possible? With a whole big config like this, it's difficult to see what
> Spectrum-specific stuff is going on.
Both of these files are *smaller* than their upstream counterparts.
The main Spectrum-specific stuff is:
- Nodes are statically set up. This is because PipeWire relies on
udev to enumerate device nodes, and Spectrum VMs don't have udev.
- A lot of stuff in the upstream configuration files has been
removed. Spectrum's configs should be *smaller* than their
upstream counterparts.
Neither PipeWire nor WirePlumber has much in the way of a default
configuration. Without a configuration file, neither PipeWire nor
WirePlumber does anything useful. Overriding the defaults and
using the upstream configuration file might be possible, but it
seemed unlikely when I looked. Spectrum VMs are more like
embedded systems than the desktop systems the defaults are made
for.
I recommend not including any of the upstream configuration
files and only an allowlist of SPA plugins and PipeWire and
WirePlumber modules. Stuff like Bluetooth can also be excluded.
Just because upstream nixpkgs pulls it in as a dependency does
not mean the configuration in the VM actually needs it.
Ideally, the various plugins and modules would all be separate
build outputs with their own dependencies, and ‘pipewire’ and
‘wireplumber’ would be meta-packages that pull in all of them.
>> diff --git a/img/app/default.nix b/img/app/default.nix
>> index 740643ac41f6473cdb6f6b0fd1f5f47f4493240d..8c469ee5b9a672bf6504600b09ff1f57fb87f2d9 100644
>> --- a/img/app/default.nix
>> +++ b/img/app/default.nix
>> @@ -26,6 +26,20 @@ let
>> CONFIG_FEATURE_IP_ROUTE y
>> CONFIG_INIT n
>> CONFIG_IP y
>> + CONFIG_FACTOR n
>> + CONFIG_FOLD n
>> + CONFIG_LSSCSI n
>> + CONFIG_NANDWRITE n
>> + CONFIG_NANDDUMP n
>> + CONFIG_RAIDAUTORUN n
>> + CONFIG_RFKILL n
>> + CONFIG_UBIATTACH n
>> + CONFIG_UBIDETACH n
>> + CONFIG_UBIMKVOL n
>> + CONFIG_UBIRMVOL n
>> + CONFIG_UBIRSVOL n
>> + CONFIG_UBIUPDATEVOL n
>> + CONFIG_UBIRENAME n
>
> Do these all conflict with PipeWire/WirePlumber/PulseAudio??
Nope. This should have been a separate patch. It is purely
to save disk space and build time by excluding stuff that we
definitely have no use for.
--
Sincerely,
Demi Marie Obenour (she/her/hers)
[-- Attachment #1.1.2: OpenPGP public key --]
[-- Type: application/pgp-keys, Size: 7253 bytes --]
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2025-07-18 17:59 UTC|newest]
Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-11 2:44 [PATCH v3] Run PipeWire and WirePlumber in the VMs Demi Marie Obenour
2025-07-14 14:54 ` Alyssa Ross
2025-07-15 20:22 ` Demi Marie Obenour
2025-07-16 10:26 ` Alyssa Ross
2025-07-16 21:16 ` Demi Marie Obenour
2025-07-16 21:27 ` Demi Marie Obenour
2025-07-18 12:16 ` Alyssa Ross
2025-07-17 5:53 ` Demi Marie Obenour
2025-07-18 10:02 ` Alyssa Ross
2025-07-18 10:19 ` Alyssa Ross
2025-07-18 2:07 ` [PATCH v4 0/3] Sound support in Spectrum VMs Demi Marie Obenour
2025-07-18 2:13 ` [PATCH v4 1/3] Rebuild the root filesystem when the makefile changes Demi Marie Obenour
2025-07-18 11:14 ` Alyssa Ross
2025-07-18 2:13 ` [PATCH v4 2/3] Fix permissions on /tmp Demi Marie Obenour
2025-07-18 11:51 ` Alyssa Ross
2025-07-18 11:51 ` Alyssa Ross
2025-07-18 11:53 ` Alyssa Ross
2025-07-18 2:14 ` [PATCH v4 3/3] Run PipeWire and WirePlumber in the VMs Demi Marie Obenour
2025-07-18 11:27 ` Alyssa Ross
2025-07-18 17:59 ` Demi Marie Obenour [this message]
2025-07-19 9:22 ` Alyssa Ross
2025-07-19 20:05 ` Demi Marie Obenour
2025-07-19 8:06 ` Alyssa Ross
2025-07-19 20:03 ` Demi Marie Obenour
2025-07-19 20:07 ` Demi Marie Obenour
2025-07-20 7:50 ` Alyssa Ross
2025-07-20 17:58 ` [PATCH v5 0/8] Sound support in Spectrum VMs Demi Marie Obenour
2025-07-20 18:02 ` [PATCH v5 1/8] Revert "img/app: fix permissions on /tmp" Demi Marie Obenour
2025-07-21 9:34 ` Alyssa Ross
2025-07-20 18:03 ` [PATCH v5 2/8] img/app: Use separate service to create directories Demi Marie Obenour
2025-07-21 9:21 ` Alyssa Ross
2025-07-22 23:48 ` Demi Marie Obenour
2025-07-20 18:04 ` [PATCH v5 3/8] img/app: Fix permissions of /tmp/.X11-unix Demi Marie Obenour
2025-07-20 18:05 ` [PATCH v5 4/8] img/app: Create other X11 directories Demi Marie Obenour
2025-07-21 9:23 ` Alyssa Ross
2025-07-21 19:03 ` Demi Marie Obenour
2025-07-20 18:06 ` [PATCH v5 5/8] img/app: Be explicit about directory modes Demi Marie Obenour
2025-07-20 18:08 ` [PATCH v5 6/8] img/app: create /run/user and /run/wait very early in boot Demi Marie Obenour
2025-07-21 9:23 ` Alyssa Ross
2025-07-20 18:10 ` [PATCH v5 7/8] host/rootfs: " Demi Marie Obenour
2025-07-20 18:11 ` [PATCH v5 8/8] img/app: Run PipeWire and WirePlumber in the VMs Demi Marie Obenour
2025-07-21 9:42 ` Alyssa Ross
2025-07-21 19:09 ` Demi Marie Obenour
2025-07-26 10:11 ` Alyssa Ross
2025-07-21 19:10 ` Demi Marie Obenour
2025-07-24 22:15 ` [PATCH v6 0/5] Sound support in Spectrum VMs Demi Marie Obenour
2025-07-24 22:30 ` [PATCH v6 1/5] host/rootfs: Create /run/user and /run/wait via run-image Demi Marie Obenour
2025-07-26 10:46 ` Alyssa Ross
2025-07-24 22:32 ` [PATCH v6 2/5] img/app: " Demi Marie Obenour
2025-07-24 22:33 ` [PATCH v6 3/5] img/app: tell mount(8) to create directories Demi Marie Obenour
2025-07-26 11:20 ` Alyssa Ross
2025-07-26 11:26 ` Alyssa Ross
2025-07-24 22:35 ` [PATCH v6 4/5] img/app: Create needed directories in early boot Demi Marie Obenour
2025-07-26 10:24 ` Alyssa Ross
2025-07-27 20:13 ` Demi Marie Obenour
2025-07-24 22:36 ` [PATCH v6 5/5] img/app: Run PipeWire and WirePlumber in the VMs Demi Marie Obenour
2025-07-26 11:29 ` Alyssa Ross
2025-07-26 10:57 ` [PATCH v6 0/5] Sound support in Spectrum VMs Alyssa Ross
2025-07-28 5:57 ` [PATCH v7 0/2] " Demi Marie Obenour
2025-07-28 6:01 ` [PATCH v7 1/2] img/app: Create needed directories in early boot Demi Marie Obenour
2025-07-28 6:03 ` [PATCH v7 2/2] img/app: Run PipeWire and WirePlumber in the VMs Demi Marie Obenour
2025-07-28 6:18 ` Demi Marie Obenour
2025-07-28 23:13 ` [PATCH v8 0/2] Sound support in Spectrum VMs Demi Marie Obenour
2025-07-29 0:32 ` [PATCH v9 " Demi Marie Obenour
2025-07-29 0:33 ` [PATCH v9 1/2] img/app: Create needed directories in early boot Demi Marie Obenour
2025-07-29 12:44 ` Alyssa Ross
2025-07-29 0:33 ` [PATCH v9 2/2] img/app: Run PipeWire and WirePlumber in the VMs Demi Marie Obenour
2025-07-29 13:08 ` Alyssa Ross
2025-07-29 21:17 ` Demi Marie Obenour
2025-07-30 8:10 ` Alyssa Ross
2025-07-30 9:59 ` [PATCH v10] " Demi Marie Obenour
2025-07-31 9:12 ` Alyssa Ross
2025-07-31 9:40 ` Alyssa Ross
2025-07-31 17:06 ` [PATCH v11] " Demi Marie Obenour
2025-08-01 17:53 ` Alyssa Ross
2025-08-02 7:54 ` Alyssa Ross
2025-07-28 23:13 ` [PATCH v8 1/2] img/app: Create needed directories in early boot Demi Marie Obenour
2025-07-28 23:19 ` Demi Marie Obenour
2025-07-28 23:13 ` [PATCH v8 2/2] img/app: Run PipeWire and WirePlumber in the VMs Demi Marie Obenour
2025-07-29 12:41 ` [PATCH v7 0/2] Sound support in Spectrum VMs Alyssa Ross
2025-07-24 22:23 ` [PATCH v6 1/5] host/rootfs: Create /run/user and /run/wait via run-image Demi Marie Obenour
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=fcee2298-2f77-4f6b-858c-efd9ce8a8896@gmail.com \
--to=demiobenour@gmail.com \
--cc=devel@spectrum-os.org \
--cc=hi@alyssa.is \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://spectrum-os.org/git/crosvm
https://spectrum-os.org/git/doc
https://spectrum-os.org/git/mktuntap
https://spectrum-os.org/git/nixpkgs
https://spectrum-os.org/git/spectrum
https://spectrum-os.org/git/ucspi-vsock
https://spectrum-os.org/git/www
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).