summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSilvio Rhatto <rhatto@riseup.net>2016-03-25 20:46:55 -0300
committerSilvio Rhatto <rhatto@riseup.net>2016-03-25 20:46:55 -0300
commit27254e40605e89efc7e9291b7831fb3810e40e9b (patch)
tree97795fbb30462f137e46799d8ac9691718bbe6ad
parent90b13d7e973a0584b27e02bebfa92e66a42505a1 (diff)
downloadpuppet-mpd-27254e40605e89efc7e9291b7831fb3810e40e9b.tar.gz
puppet-mpd-27254e40605e89efc7e9291b7831fb3810e40e9b.tar.bz2
Setup mpd and pulseaudio integration using tcp
-rw-r--r--files/default.pa166
-rw-r--r--files/pulseaudio3
-rw-r--r--manifests/all.pp20
3 files changed, 185 insertions, 4 deletions
diff --git a/files/default.pa b/files/default.pa
new file mode 100644
index 0000000..7a15dde
--- /dev/null
+++ b/files/default.pa
@@ -0,0 +1,166 @@
+#!/usr/bin/pulseaudio -nF
+#
+# This file is part of PulseAudio.
+#
+# PulseAudio is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# PulseAudio 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 Lesser General Public License
+# along with PulseAudio; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+# This startup script is used only if PulseAudio is started per-user
+# (i.e. not in system mode)
+
+.nofail
+
+### Load something into the sample cache
+#load-sample-lazy x11-bell /usr/share/sounds/gtk-events/activate.wav
+#load-sample-lazy pulse-hotplug /usr/share/sounds/startup3.wav
+#load-sample-lazy pulse-coldplug /usr/share/sounds/startup3.wav
+#load-sample-lazy pulse-access /usr/share/sounds/generic.wav
+
+.fail
+
+### Automatically restore the volume of streams and devices
+load-module module-device-restore
+load-module module-stream-restore
+load-module module-card-restore
+
+### Automatically augment property information from .desktop files
+### stored in /usr/share/application
+load-module module-augment-properties
+
+### Should be after module-*-restore but before module-*-detect
+load-module module-switch-on-port-available
+
+### Load audio drivers statically
+### (it's probably better to not load these drivers manually, but instead
+### use module-udev-detect -- see below -- for doing this automatically)
+#load-module module-alsa-sink
+#load-module module-alsa-source device=hw:1,0
+#load-module module-oss device="/dev/dsp" sink_name=output source_name=input
+#load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input
+#load-module module-null-sink
+#load-module module-pipe-sink
+
+### Automatically load driver modules depending on the hardware available
+.ifexists module-udev-detect.so
+load-module module-udev-detect
+.else
+### Use the static hardware detection module (for systems that lack udev support)
+load-module module-detect
+.endif
+
+### Automatically connect sink and source if JACK server is present
+.ifexists module-jackdbus-detect.so
+.nofail
+load-module module-jackdbus-detect channels=2
+.fail
+.endif
+
+### Automatically load driver modules for Bluetooth hardware
+.ifexists module-bluetooth-policy.so
+load-module module-bluetooth-policy
+.endif
+
+.ifexists module-bluetooth-discover.so
+load-module module-bluetooth-discover
+.endif
+
+### Load several protocols
+.ifexists module-esound-protocol-unix.so
+load-module module-esound-protocol-unix
+.endif
+load-module module-native-protocol-unix
+
+### Network access (may be configured with paprefs, so leave this commented
+### here if you plan to use paprefs)
+#load-module module-esound-protocol-tcp
+#load-module module-native-protocol-tcp
+load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1
+#load-module module-zeroconf-publish
+
+### Load the RTP receiver module (also configured via paprefs, see above)
+#load-module module-rtp-recv
+
+### Load the RTP sender module (also configured via paprefs, see above)
+#load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=44100 sink_properties="device.description='RTP Multicast Sink'"
+#load-module module-rtp-send source=rtp.monitor
+
+### Load additional modules from GConf settings. This can be configured with the paprefs tool.
+### Please keep in mind that the modules configured by paprefs might conflict with manually
+### loaded modules.
+.ifexists module-gconf.so
+.nofail
+load-module module-gconf
+.fail
+.endif
+
+### Automatically restore the default sink/source when changed by the user
+### during runtime
+### NOTE: This should be loaded as early as possible so that subsequent modules
+### that look up the default sink/source get the right value
+load-module module-default-device-restore
+
+### Automatically move streams to the default sink if the sink they are
+### connected to dies, similar for sources
+load-module module-rescue-streams
+
+### Make sure we always have a sink around, even if it is a null sink.
+load-module module-always-sink
+
+### Honour intended role device property
+load-module module-intended-roles
+
+### Automatically suspend sinks/sources that become idle for too long
+load-module module-suspend-on-idle
+
+### If autoexit on idle is enabled we want to make sure we only quit
+### when no local session needs us anymore.
+.ifexists module-console-kit.so
+load-module module-console-kit
+.endif
+.ifexists module-systemd-login.so
+load-module module-systemd-login
+.endif
+
+### Enable positioned event sounds
+load-module module-position-event-sounds
+
+### Cork music/video streams when a phone stream is active
+load-module module-role-cork
+
+### Modules to allow autoloading of filters (such as echo cancellation)
+### on demand. module-filter-heuristics tries to determine what filters
+### make sense, and module-filter-apply does the heavy-lifting of
+### loading modules and rerouting streams.
+load-module module-filter-heuristics
+load-module module-filter-apply
+
+# X11 modules should not be started from default.pa so that one daemon
+# can be shared by multiple sessions.
+
+### Load X11 bell module
+#load-module module-x11-bell sample=bell-windowing-system
+
+### Register ourselves in the X11 session manager
+#load-module module-x11-xsmp
+
+### Publish connection data in the X11 root window
+#.ifexists module-x11-publish.so
+#.nofail
+#load-module module-x11-publish
+#.fail
+#.endif
+
+### Make some devices default
+#set-default-sink output
+#set-default-source input
diff --git a/files/pulseaudio b/files/pulseaudio
index 4b0e4c2..7c3129a 100644
--- a/files/pulseaudio
+++ b/files/pulseaudio
@@ -12,8 +12,7 @@
# is enabled. For other sessions, you can simply start PulseAudio with
# "pulseaudio --daemonize".
# 0 = don't start in system mode, 1 = start in system mode
-#PULSEAUDIO_SYSTEM_START=0
-PULSEAUDIO_SYSTEM_START=1
+PULSEAUDIO_SYSTEM_START=0
# Prevent users from dynamically loading modules into the PulseAudio sound
# server. Dynamic module loading enhances the flexibility of the PulseAudio
diff --git a/manifests/all.pp b/manifests/all.pp
index 3680464..acf8188 100644
--- a/manifests/all.pp
+++ b/manifests/all.pp
@@ -10,8 +10,8 @@ class mpd::all {
groups => [ 'audio', 'pulse', 'pulse-access' ],
}
- # Ensure pulseaudio is running systemwide so both mpd and users
- # can share audio control.
+ # In the past we ensured pulseaudio were running systemwide
+ # so both mpd and users can share audio control.
#
# This could be managed elsewhere.
file { '/etc/default/pulseaudio':
@@ -22,4 +22,20 @@ class mpd::all {
notify => Service['mpd'],
source => [ "puppet:///modules/mpd/pulseaudio" ],
}
+
+ # When run as its own user as per the wiki instructions, mpd will be unable to
+ # send sound to another user's pulseaudio server. Rather than setting up
+ # pulseaudio as a system-wide daemon, a practice strongly discouraged by
+ # upstream, you can instead configure mpd to use pulseaudio's tcp module to send
+ # sound to localhost.
+ #
+ # See https://wiki.archlinux.org/index.php/Music_Player_Daemon/Tips_and_tricks#Local_.28with_separate_mpd_user.29
+ file { '/etc/pulse/default.pa':
+ ensure => present,
+ owner => root,
+ group => root,
+ mode => 0644,
+ notify => Service['mpd'],
+ source => [ "puppet:///modules/mpd/default.pa" ],
+ }
}