123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- ;;; GNU Guix --- Functional package management for GNU
- ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
- ;;;
- ;;; This file is part of GNU Guix.
- ;;;
- ;;; GNU Guix is free software; you can redistribute it and/or modify it
- ;;; under the terms of the GNU General Public License as published by
- ;;; the Free Software Foundation; either version 3 of the License, or (at
- ;;; your option) any later version.
- ;;;
- ;;; GNU Guix is distributed in the hope that it will be useful, but
- ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
- ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- ;;; GNU General Public License for more details.
- ;;;
- ;;; You should have received a copy of the GNU General Public License
- ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
- (define-module (gnu services sound)
- #:use-module (gnu services base)
- #:use-module (gnu services configuration)
- #:use-module (gnu services shepherd)
- #:use-module (gnu services)
- #:use-module (gnu system shadow)
- #:use-module (guix gexp)
- #: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
- alsa-service-type))
- ;;; Commentary:
- ;;;
- ;;; Sound services.
- ;;;
- ;;; Code:
- ;;;
- ;;; ALSA
- ;;;
- (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
- ;; 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\"
- hint {
- show on
- description \"Default ALSA Output (currently PulseAudio Sound Server)\"
- }
- }
- ctl.!default {
- type pulse
- fallback \"sysdefault\"
- }\n\n")
- '())
- ,extra-options)))))
- (define (alsa-etc-service config)
- (list `("asound.conf" ,(alsa-config-file config))))
- (define alsa-service-type
- (service-type
- (name 'alsa)
- (extensions
- (list (service-extension etc-service-type alsa-etc-service)))
- (default-value (alsa-configuration))
- (description "Configure low-level Linux sound support, ALSA.")))
- ;;; sound.scm ends here
|