summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChloe Brown <chloe.brown.00@outlook.com>2021-12-26 13:32:25 +0000
committerChloe Brown <chloe.brown.00@outlook.com>2021-12-26 13:32:25 +0000
commit7050b1eeded01634c2d981c4b89ee26c9ce14530 (patch)
tree65e90179673f36725c623d29239e17590b420f59
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.scm54
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.")))