Compare commits

..

2 commits

Author SHA1 Message Date
7d26b71505 Organizing my Pipewire mess
* Made sure that WirePlumber is installed explicitly. (Turns out that it wasn't; it just kinda... Happened to be there. But in theory, if I were to somehow end up with pipewire-media-session (Ugh!), there would be nothing telling DCli to switch back to WirePlumber.)
* Moved extra packages to a separate module (because - now that I think about it - I think I like the idea of system-packages-GuzioPadV4 being a sort of „archive”, to which I won't be appending anything anymore)
* Figured out a way to declaratively enable WirePlumber, so I removed it from the commented-out block in GuzioPadV4 host (also, gotten rid of blend-files (no longer on Blend, after all) while at it) [UPDATE: Nevermind! That declarative way will not work until DCli gets its shit together with user-hooks. Still, the error message is loud enough (and not-DCli-flow-breaking) that I think I'll stick to it for now, instead of an easy-to-miss commented-out service.]
* Maybe? fixed camera problems that I've been having on this tablet from day-one (and, now that I think about it, on my previous laptop, too - tho I just always thought it broke after I tried cleaning under the lense with a piece of paper (I thought I severed a ribbon cable or  something), but maybe it was working, after all?) by installing pipewire-libcamera.
* Explicitly declared pipewire and pipewire-audio for good measure.
2026-05-09 13:29:06 +02:00
2edadbb43f Just to be clear: this is NOT global 2026-05-09 12:45:15 +02:00
8 changed files with 53 additions and 7 deletions

View file

@ -19,6 +19,7 @@ enabled_modules:
- forgiving-power-button
- xdg-user-dirs
- atama-branding
- pipewire
# Module processing mode
# parallel: Collect and install all modules at once (faster, default)
@ -76,9 +77,7 @@ services:
# I don't think it's possible to let DCli manage both user and system services at the same time, so I'm commenting-out user services out of this for now
#services:
# enabled:
# - blend-files
# - hyprpolkitagent
# - wireplumber
# disabled: []
# scope: user

View file

@ -0,0 +1,3 @@
description: Packages needed to run the module's hook.
packages:
- bash

12
modules/pipewire/hook.sh Normal file
View file

@ -0,0 +1,12 @@
#!/bin/bash
# extra precautions until run_hooks_as_user: true is fixed
if [ -n "$SUDO_USER" ] && [ "$EUID" == 0 ]; then
exec su "$SUDO_USER" $0;
fi
systemctl --user enable wireplumber.service --now
if [ "$?" -ne 0 ]; then
echo "[WARN] You seem to be running a SystemD-less distro, so WirePlumber couldn't be started automatically. This is not that big of a deal; just start it (AS A USER SERVICE!) manually yourself, according to however your init system works.";
exit 0;
fi

View file

@ -0,0 +1,14 @@
description: Installs all Pipewire components needed for a functioning session - including Pipewire itself, support for various common audio protocols (alsa, PulseAudio, JACK), libcamera support, and WirePlumber for maintaining a Pipewire session. WirePlumber also be set to auto-start for user sessions (for whoever ran DCli) on SystemD-based distros.
package-files:
- dependencies.yaml
- packages.yaml
post_install_hook: "hook.sh" #I'd love to not need a hook for this, but it seems that service management isn't possible in DCli modules (yet?), and can only be done in the host-file or via a hook.
post_disable_hook: "unhook.sh" #No matter what I tried, I couldn't get this hook to actually trigger, so it seems to be an in-development stub that doesn't work yet (especially given how there was literally 0 documentation on this - I simply spotted it being listed in auto-generated modules). For now, the unhook script has to be run manually if you want to undo the power button setup. Nevertheless, it's listed here, so it should Just Work [TM] when DCli adds support.
run_hooks_as_user: true
hook_behavior: always #...instead of "once" because this lets your service setup be self-healing (even if you mess something up, next dcli sync will restore it); ...instead of "ask" because I don't like pestering people with RUN THIS HOOK? RUN THIS HOOK? (if anything, that makes it more likely that they will "[S]kip always", thus rendering the „self-healing” non-functional)
author: "Guzio"
version: "1.0.0"
category: "media"
tags: []
license: "MIT"
upstream_url: "https://gitdab.com/Guzio/system/src/branch/main/modules/pipewire"

View file

@ -0,0 +1,9 @@
description: Pipewire packages
packages:
- pipewire
- pipewire-audio
- pipewire-alsa
- pipewire-pulse
- pipewire-jack
- pipewire-libcamera
- wireplumber

View file

@ -0,0 +1,12 @@
#!/bin/bash
# extra precautions until run_hooks_as_user: true is fixed
if [ -n "$SUDO_USER" ] && [ "$EUID" == 0 ]; then
exec su "$SUDO_USER" $0;
fi
systemctl --user disable wireplumber.service --now
if [ "$?" -ne 0 ]; then
echo "[WARN] You seem to be running a SystemD-less distro, so WirePlumber couldn't be stopped automatically. This is not that big of a deal; just stop it (AS A USER SERVICE!) manually yourself, according to however your init system works.";
exit 0;
fi

View file

@ -41,9 +41,6 @@ packages:
- 'glm' #Needed by: Hyprgrass
- 'iio-sensor-proxy' #Command: monitor-sensors; Needed for: custom rotate scripts
- 'wl-clip-persist' #Provides the most basic fucking functionality that exists on literally every OS on Earth ever, ie. the ability to paste from clipboard after the app that copied stuff there closes. How the FUCK is this not a standard on Wayland???
- 'pipewire-alsa' #Audio won't work without it (idk what cause it to no-longer-be-autoinstalled, all I know is that it suddenly stopped working)
- 'pipewire-pulse' #Bluetooth audio won't work without it (?????? https://bbs.archlinux.org/viewtopic.php?id=304269 ??)
- 'pipewire-jack' #My pronouns are all/in
deb_packages: []
exclude: []
conflicts: []

View file

@ -1,11 +1,11 @@
description: Configures XDG directories the xdg-user-dirs package, if not configured already. Otherwise, it just installs the xdg-user-dirs package, which can still be useful for querying said dirs.
description: Configures XDG directories the xdg-user-dirs package (for whoever ran DCli), if not configured already. Otherwise, it just installs the xdg-user-dirs package, which can still be useful for querying said dirs.
package-files:
- dependencies.yaml
post_install_hook: "hook.sh"
run_hooks_as_user: true
hook_behavior: always #...instead of "once" because the XDG spec can change from time to time (eg. the recent Projects dir), and we want to make sure that the user's keeps up.; ...instead of "ask" because I don't like pestering people with RUN THIS HOOK? RUN THIS HOOK? questions; ...because running this command multiple times is safe, anyway - it only fixes/adds broken/missing entires as it encounters them instead of overwriting everything or something like that (arguably, this makes "always" safer than "once"/"ask" because it makes your config self-healing)
author: "Guzio"
version: "1.0.1"
version: "1.0.2"
category: "media"
tags: []
license: "MIT"