From 7050b1eeded01634c2d981c4b89ee26c9ce14530 Mon Sep 17 00:00:00 2001 From: Chloe Brown Date: Sun, 26 Dec 2021 13:32:25 +0000 Subject: Define PipeWire home services. Introduce two new home services: `home-pipewire-service-type` and `home-wireplumber-service-type`. These run the daemons necessary to run the PipeWire multimedia service. `home-pipewire-service-type` runs the main PipeWire daemon and the PipeWire PulseAudio interface. `home-wireplumber-service-type` runs an instance of the WirePlumber session manager. --- yellowsquid/services/pipewire.scm | 54 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 yellowsquid/services/pipewire.scm diff --git a/yellowsquid/services/pipewire.scm b/yellowsquid/services/pipewire.scm new file mode 100644 index 0000000..222df28 --- /dev/null +++ b/yellowsquid/services/pipewire.scm @@ -0,0 +1,54 @@ +(define-module (yellowsquid services pipewire) + #:use-module (gnu home services) + #:use-module (gnu home services shepherd) + #:use-module (gnu packages linux) + #:use-module (gnu services) + #:use-module (guix gexp) + #:export (home-pipewire-service-type + home-wireplumber-service-type)) + +(define (home-pipewire-shepherd-service pipewire) + "Return a shepherd service for PipeWire." + (list (shepherd-service + (documentation "PipeWire PulseAudio") + (provision '(pipewire-pulse pulseaudio)) + (requirement '(pipewire pipewire-media-session)) + (start #~(make-forkexec-constructor + (list #$(file-append pipewire "/bin/pipewire-pulse")))) + (stop #~(make-kill-destructor))) + (shepherd-service + (documentation "PipeWire Multimedia Service") + (provision '(pipewire)) + (start #~(make-forkexec-constructor + (list #$(file-append pipewire "/bin/pipewire")))) + (stop #~(make-kill-destructor))))) + +(define home-pipewire-service-type + (service-type (name 'home-pipewire) + (extensions + (list (service-extension home-shepherd-service-type + home-pipewire-shepherd-service) + (service-extension home-profile-service-type + (lambda (pkg) `(,pkg))))) + (default-value pipewire-0.3) + (description "Userland PipeWire daemon."))) + +(define (home-wireplumber-shepherd-service wireplumber) + "Return a shepherd service for WirePlumber." + (list (shepherd-service + (documentation "Multimedia Service Session Manager") + (provision '(wireplumber pipewire-media-session)) + (requirement '(pipewire)) + (start #~(make-forkexec-constructor + (list #$(file-append wireplumber "/bin/wireplumber")))) + (stop #~(make-kill-destructor))))) + +(define home-wireplumber-service-type + (service-type (name 'home-wireplumber) + (extensions + (list (service-extension home-shepherd-service-type + home-wireplumber-shepherd-service) + (service-extension home-profile-service-type + (lambda (pkg) `(,pkg))))) + (default-value wireplumber) + (description "Userland WirePlumber daemon."))) -- cgit v1.2.3