services: alsa-service-type: Fix the loading of 'pulse' plugin.

Fixes <https://bugs.gnu.org/31591>.

* gnu/services/sound.scm (<alsa-configuration>)[alsa-plugins]: New field.
(alsa-config-file): Use 'pcm_type.pulse' and 'ctl_type.pulse' to specify file
paths to the 'pulse' plugin.
* doc/guix.texi (Sound Services): Document this.

Co-authored-by: 宋文武 <iyzsong@member.fsf.org>
This commit is contained in:
Oleg Pykhalov 2018-06-24 13:18:53 +03:00 committed by 宋文武
parent a87cb7a73b
commit 1e3861eb00
No known key found for this signature in database
GPG key ID: 26525665AE727D37
2 changed files with 27 additions and 10 deletions

View file

@ -13152,6 +13152,9 @@ See below for details about @code{alsa-configuration}.
Data type representing the configuration for @code{alsa-service}.
@table @asis
@item @code{alsa-plugins} (default: @var{alsa-plugins})
@code{alsa-plugins} package to use.
@item @code{pulseaudio?} (default: @var{#t})
Whether ALSA applications should transparently be made to use the
@uref{http://www.pulseaudio.org/, PulseAudio} sound server.

View file

@ -26,6 +26,7 @@ (define-module (gnu services sound)
#:use-module (guix packages)
#:use-module (guix records)
#:use-module (guix store)
#:use-module (gnu packages linux)
#:use-module (gnu packages pulseaudio)
#:use-module (ice-9 match)
#:export (alsa-configuration
@ -44,17 +45,31 @@ (define-module (gnu services sound)
(define-record-type* <alsa-configuration>
alsa-configuration make-alsa-configuration alsa-configuration?
(alsa-plugins alsa-configuration-alsa-plugins ;<package>
(default alsa-plugins))
(pulseaudio? alsa-configuration-pulseaudio? ;boolean
(default #t))
(extra-options alsa-configuration-extra-options ;string
(default "")))
(define (alsa-config-file config)
"Return the ALSA configuration file corresponding to CONFIG."
(plain-file "asound.conf"
(string-append "# Generated by 'alsa-service'.\n\n"
(if (alsa-configuration-pulseaudio? config)
"# Use PulseAudio by default
(define alsa-config-file
;; Return the ALSA configuration file.
(match-lambda
(($ <alsa-configuration> alsa-plugins pulseaudio? extra-options)
(apply mixed-text-file "asound.conf"
`("# Generated by 'alsa-service'.\n\n"
,@(if pulseaudio?
`("# Use PulseAudio by default
pcm_type.pulse {
lib \"" ,#~(string-append #$alsa-plugins:pulseaudio
"/lib/alsa-lib/libasound_module_pcm_pulse.so") "\"
}
ctl_type.pulse {
lib \"" ,#~(string-append #$alsa-plugins:pulseaudio
"/lib/alsa-lib/libasound_module_ctl_pulse.so") "\"
}
pcm.!default {
type pulse
fallback \"sysdefault\"
@ -67,10 +82,9 @@ (define (alsa-config-file config)
ctl.!default {
type pulse
fallback \"sysdefault\"
}
"
"")
(alsa-configuration-extra-options config))))
}\n\n")
'())
,extra-options)))))
(define (alsa-etc-service config)
(list `("asound.conf" ,(alsa-config-file config))))