From 22186e76d991a47e7057d1abe23af02b52f8153b Mon Sep 17 00:00:00 2001 From: Oleg Pykhalov Date: Sun, 24 Jun 2018 13:18:53 +0300 Subject: [PATCH] services: sound: Properly handle alsa-plugins. * gnu/services/sound.scm ()[alsa-plugins]: New field. (alsa-config-file): Add this. * doc/guix.texi (Sound Services): Document this. --- doc/guix.texi | 3 +++ gnu/services/sound.scm | 31 +++++++++++++++++++++++-------- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 74c10e4bb..e5366ac6b 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -13152,6 +13152,9 @@ See below for details about @code{alsa-configuration}. Data type representing the configuration for @code{alsa-service}. @table @asis address@hidden @code{alsa-plugins} (default: @var{alsa-plugins}) address@hidden 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. diff --git a/gnu/services/sound.scm b/gnu/services/sound.scm index 5fe555e8b..2b2cabd7b 100644 --- a/gnu/services/sound.scm +++ b/gnu/services/sound.scm @@ -26,6 +26,7 @@ #: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-record-type* alsa-configuration make-alsa-configuration alsa-configuration? + (alsa-plugins alsa-configuration-alsa-plugins ; + (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-plugins pulseaudio? extra-options) + (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\" @@ -69,8 +84,8 @@ ctl.!default { fallback \"sysdefault\" } " - "") - (alsa-configuration-extra-options config)))) + "" + extra-options)))) (define (alsa-etc-service config) (list `("asound.conf" ,(alsa-config-file config)))) -- 2.17.1