diff options
author | Chloe Brown <chloe.brown.00@outlook.com> | 2021-12-26 13:32:25 +0000 |
---|---|---|
committer | Chloe Brown <chloe.brown.00@outlook.com> | 2021-12-26 13:32:25 +0000 |
commit | 7050b1eeded01634c2d981c4b89ee26c9ce14530 (patch) | |
tree | 65e90179673f36725c623d29239e17590b420f59 |
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.
-rw-r--r-- | yellowsquid/services/pipewire.scm | 54 |
1 files changed, 54 insertions, 0 deletions
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."))) |