class mpd { package { 'mpd': ensure => installed, } service { 'mpd': ensure => running, enable => true, hasstatus => false, pattern => '/usr/bin/mpd', require => Package['mpd'], } file { '/etc/mpd.conf': ensure => present, owner => mpd, group => audio, mode => 0640, notify => Service['mpd'], source => [ "puppet:///modules/site_mpd/$hostname.conf", "puppet:///modules/mpd/mpd.conf" ], } } class mpd::client { package { [ 'mpc', 'ncmpc', 'ncmpcpp', 'mpdtoys' ]: ensure => installed, } } class mpd::all { include mpd include mpd::client user { 'mpd': ensure => present, home => '/var/lib/mpd', shell => '/bin/false', gid => 'audio', groups => [ 'pulse', 'pulse-access' ], require => Group['mpd'], } }