88 lines
2.6 KiB
Scheme
88 lines
2.6 KiB
Scheme
(define-module (home services pipewire)
|
|
#:use-module (guix gexp)
|
|
|
|
#:use-module (gnu packages linux)
|
|
#:use-module (gnu packages pulseaudio)
|
|
|
|
#:use-module (gnu home services)
|
|
#:use-module (gnu home services shepherd))
|
|
|
|
(define (home-pipewire-files-service _)
|
|
`(("alsa/asoundrc"
|
|
,(mixed-text-file
|
|
"asoundrc"
|
|
#~(string-append
|
|
"<"
|
|
#$(file-append
|
|
pipewire
|
|
"/share/alsa/alsa.conf.d/50-pipewire.conf")
|
|
">\n<"
|
|
#$(file-append
|
|
pipewire
|
|
"/share/alsa/alsa.conf.d/99-pipewire-default.conf")
|
|
">\n"
|
|
"
|
|
pcm_type.pipewire {
|
|
lib " #$(file-append
|
|
pipewire
|
|
"/lib/alsa-lib/libasound_module_pcm_pipewire.so") "
|
|
}
|
|
|
|
ctl_type.pipewire {
|
|
lib " #$(file-append
|
|
pipewire
|
|
"/lib/alsa-lib/libasound_module_ctl_pipewire.so") "
|
|
}
|
|
")))))
|
|
|
|
(define (home-pipewire-shepherd-service _)
|
|
(list
|
|
(shepherd-service
|
|
(requirement '(dbus))
|
|
(provision '(pipewire))
|
|
(stop #~(make-kill-destructor))
|
|
(start #~(make-forkexec-constructor
|
|
(list #$(file-append pipewire "/bin/pipewire")))))
|
|
(shepherd-service
|
|
(requirement '(pipewire))
|
|
(provision '(wireplumber))
|
|
(stop #~(make-kill-destructor))
|
|
(start #~(make-forkexec-constructor
|
|
(list #$(file-append wireplumber "/bin/wireplumber")))))
|
|
#;
|
|
(shepherd-service
|
|
(requirement '(pipewire))
|
|
(provision '(pipewire-media-session))
|
|
(stop #~(make-kill-destructor))
|
|
(start #~(make-forkexec-constructor
|
|
(list
|
|
#$(file-append
|
|
pipewire-media-session
|
|
"/bin/pipewire-media-session")
|
|
"-c"
|
|
#$(file-append
|
|
pipewire-media-session
|
|
"/share/pipewire/media-session.d/media-session.conf")))))
|
|
(shepherd-service
|
|
(requirement '(pipewire))
|
|
(provision '(pipewire-pulse))
|
|
(stop #~(make-kill-destructor))
|
|
(start #~(make-forkexec-constructor
|
|
(list #$(file-append pipewire "/bin/pipewire-pulse")))))))
|
|
|
|
(define-public home-pipewire-service-type
|
|
(service-type
|
|
(name 'home-pipewire)
|
|
(extensions
|
|
(list (service-extension
|
|
home-xdg-configuration-files-service-type
|
|
home-pipewire-files-service)
|
|
(service-extension
|
|
home-shepherd-service-type
|
|
home-pipewire-shepherd-service)
|
|
(service-extension
|
|
home-profile-service-type
|
|
(const (list pipewire pulseaudio)))))
|
|
(default-value #f)
|
|
(description "run pipewire and stuff")))
|