mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-11-07 15:36:20 -05:00
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:
parent
a87cb7a73b
commit
1e3861eb00
2 changed files with 27 additions and 10 deletions
|
@ -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.
|
||||
|
|
|
@ -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))))
|
||||
|
|
Loading…
Reference in a new issue