From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from atuin.qyliss.net (localhost [IPv6:::1]) by atuin.qyliss.net (Postfix) with ESMTP id 462FCB7F6 for ; Sat, 19 Jul 2025 09:22:46 +0000 (UTC) Received: by atuin.qyliss.net (Postfix, from userid 993) id 23459B85C; Sat, 19 Jul 2025 09:22:42 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on atuin.qyliss.net X-Spam-Level: X-Spam-Status: No, score=-0.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DMARC_MISSING,RCVD_IN_DNSWL_LOW,SPF_HELO_PASS autolearn=unavailable autolearn_force=no version=4.0.1 Received: from fhigh-b2-smtp.messagingengine.com (fhigh-b2-smtp.messagingengine.com [202.12.124.153]) by atuin.qyliss.net (Postfix) with ESMTPS id A56CEB7EF for ; Sat, 19 Jul 2025 09:22:40 +0000 (UTC) Received: from phl-compute-01.internal (phl-compute-01.phl.internal [10.202.2.41]) by mailfhigh.stl.internal (Postfix) with ESMTP id 2F9527A0029; Sat, 19 Jul 2025 05:22:38 -0400 (EDT) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-01.internal (MEProxy); Sat, 19 Jul 2025 05:22:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alyssa.is; h=cc :content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm1; t=1752916958; x=1753003358; bh=Y5D5p37kdc kI69NO7gvmxsJj0EwOhVOuvG2qrlbAtVw=; b=Qhp8z3jM7F5GsupQdQDa59UQfu x++JQAjJJcPHKlhwAH/PVA3I9ZKOpeNoniCFGas5ADpINhs8CMgcHQCrV/zK0OSS FXIwyFh+iR1WYqfXYj3m8EtD9GlQ09D7KPe/aOV7PJuOLmPF7R8GVfMp6CpfVufV w+bApGem9EYZBxS+cL/I7kp5e4o7qhBAhkv+2QzT0m9QI9wpz3osqD43zWkRb3M8 7AZ4FkHbG7bwMil5/8Eh6tTwIWR9Ry+BvYerKNAhpgYAVVuOfJ9nLREnQrrKjnKG iU3b9dzcOoqgKyFf2vkiR4fMJvXIPxF/DLt1zG+tOJuSaSIDb+oVrMMng8DQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1752916958; x=1753003358; bh=Y5D5p37kdckI69NO7gvmxsJj0EwOhVOuvG2 qrlbAtVw=; b=jBuTlBLmQhS1sNrbAebAPw2yKo30KqckRRKBX0dxZ3fHstDeNBv 29fQqh2KuJ/3+kb5ec6ksmugUySCuo/DEEGICqBXb+ghnS6V58haXMNRMkFRzbHc zxh6CwXtxWPYol0jvblTqc5t1HHL4IFQ8OHyCg2QNdugZAj4ID1iOjcPpkIH2fOr 2e8JJovSUmjtUrqBoMUrRCGuQZSGakEr1pMTBDJvDYJa9V4jqTeZ1MMn4kpB7ZxD pSwTEV3fIVkNo/Iz4KMT3JSJPN57+nZVOxuPoX1PDY2eitUD0zCHhbysS1LKv2oI UfkCuQqDaOFfTq7x6Z8dlUNV0PO7h5b4PiA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdefgdeiheelhecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug hrpefhvffujghffffkgggtsehgtderredttdejnecuhfhrohhmpeetlhihshhsrgcutfho shhsuceohhhisegrlhihshhsrgdrihhsqeenucggtffrrghtthgvrhhnpeffudduffeuff egheeigeejtdekhfduheehfeduheelffettdekiedtgeefgfelheenucevlhhushhtvghr ufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehhihesrghlhihsshgrrdhish dpnhgspghrtghpthhtohepvddpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepuggv mhhiohgsvghnohhurhesghhmrghilhdrtghomhdprhgtphhtthhopeguvghvvghlsehsph gvtghtrhhumhdqohhsrdhorhhg X-ME-Proxy: Feedback-ID: i12284293:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sat, 19 Jul 2025 05:22:36 -0400 (EDT) Received: by sf.qyliss.net (Postfix, from userid 1000) id 463642BB63331; Sat, 19 Jul 2025 11:22:12 +0200 (CEST) From: Alyssa Ross To: Demi Marie Obenour , Spectrum OS Development Subject: Re: [PATCH v4 3/3] Run PipeWire and WirePlumber in the VMs In-Reply-To: References: <6ab772e0-62b0-430f-8d3c-0bba79a3282c@gmail.com> <25197dbe-d642-4283-80b7-be66dcc4f4eb@gmail.com> <87jz45spqi.fsf@alyssa.is> Date: Sat, 19 Jul 2025 11:22:05 +0200 Message-ID: <87h5z8r0w2.fsf@alyssa.is> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" Message-ID-Hash: H5HJJAKAM5K36BAHE3JKUFDQOQBKUDPI X-Message-ID-Hash: H5HJJAKAM5K36BAHE3JKUFDQOQBKUDPI X-MailFrom: hi@alyssa.is X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-devel.spectrum-os.org-0; header-match-devel.spectrum-os.org-1; header-match-devel.spectrum-os.org-2; header-match-devel.spectrum-os.org-3; header-match-devel.spectrum-os.org-4; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.9 Precedence: list List-Id: Patches and low-level development discussion Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Demi Marie Obenour writes: > On 7/18/25 07:27, Alyssa Ross wrote: >> Demi Marie Obenour writes: >>=20 >>> 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 >>> --- >>> >>> Notes: >>> I tested this with QEMU virtio-sound, but I am not sure if the para= mters >>> 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 ++++++++++++++++++ >>=20 >> 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. Okay, but there's still stuff that could definitely be trimmed. The comments explaining the syntax of the config file, and the default values, for example. I think they get in the way more than they help because they make the actual non-default settings very sparse. Similarly we probably don't need conditional overrides that are "only applied when running in a VM". > 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 =E2=80=98pipewire=E2=80=99= and > =E2=80=98wireplumber=E2=80=99 would be meta-packages that pull in all of = them. That's an interesting idea. I think it would probably be feasible? And wouldn't share the same maintenance concerns as lots of overrides. --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iHUEARYKAB0WIQRV/neXydHjZma5XLJbRZGEIw/wogUCaHtjvQAKCRBbRZGEIw/w on0yAQDv2C0MF8Mgbv7UymZi0hlJX6TOZ1tR7XKoQZ1cUmv7eAEAk6b5gM2r/vxN vdMeLIG3y0V1MLfnhGp3PKoqny4smQI= =4aA+ -----END PGP SIGNATURE----- --=-=-=--