]> gitweb.fluxo.info Git - puppet-mpd.git/commitdiff
Setup mpd and pulseaudio integration using tcp
authorSilvio Rhatto <rhatto@riseup.net>
Fri, 25 Mar 2016 23:46:55 +0000 (20:46 -0300)
committerSilvio Rhatto <rhatto@riseup.net>
Fri, 25 Mar 2016 23:46:55 +0000 (20:46 -0300)
files/default.pa [new file with mode: 0644]
files/pulseaudio
manifests/all.pp

diff --git a/files/default.pa b/files/default.pa
new file mode 100644 (file)
index 0000000..7a15dde
--- /dev/null
@@ -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
index 4b0e4c20b71f8084f34e55cb6258adcbd9e26d7a..7c3129a76d45007dfdd4de06a8aa4b54dda72d3a 100644 (file)
@@ -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
index 368046465a6c69aa3b29cee1ae536259fda65a15..acf81882d861fdc6a4312ac1cb78764fa8062275 100644 (file)
@@ -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" ],
+  }
 }