From 69278069729972162dd8a58a33a2f4dd3062ca53 Mon Sep 17 00:00:00 2001 From: polyfloyd Date: Wed, 14 May 2025 23:45:03 +0200 Subject: [PATCH] music: Add the base audio server --- roles/music/defaults/main.yaml | 2 ++ roles/music/tasks/base.yaml | 42 +++++++++++++++++++++++++ roles/music/tasks/main.yaml | 5 +++ roles/music/templates/librespot.service | 3 +- roles/music/templates/mpd.conf | 2 +- 5 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 roles/music/tasks/base.yaml diff --git a/roles/music/defaults/main.yaml b/roles/music/defaults/main.yaml index 5db2f4c..40cc34e 100644 --- a/roles/music/defaults/main.yaml +++ b/roles/music/defaults/main.yaml @@ -2,4 +2,6 @@ music_audio_user: audio music_audio_group: audio music_librespot_user: librespot +music_pulse_server: /tmp/pipewire-pulse-socket + music_mqtt_mpd_volume: bitlair/music/space/volume diff --git a/roles/music/tasks/base.yaml b/roles/music/tasks/base.yaml new file mode 100644 index 0000000..a17d7d3 --- /dev/null +++ b/roles/music/tasks/base.yaml @@ -0,0 +1,42 @@ +--- +- name: Install pipewire + apt: + name: + - pipewire + - pipewire-jack + - pipewire-pulse + - pulseaudio-utils + - pulsemixer + state: present + +- name: Add audio group + group: + name: audio + system: true + +- name: Set PULSE_SERVER env var for all shells + copy: + dest: /etc/profile.d/pulse-server.sh + content: |+ + # Ansible managed + export PULSE_SERVER={{ music_pulse_server }} + +- name: Create pipewire-pulse config dir + file: + path: /etc/pipewire/pipewire-pulse.conf.d/ + state: directory + +- name: Configure system socket + ansible.builtin.copy: + dest: /etc/pipewire/pipewire-pulse.conf.d/system-socket.conf + content: |+ + # Ansible managed + context.exec = [ + { path = "/bin/chgrp" args = "{{ music_audio_group }} {{ music_pulse_server }}" } + { path = "/bin/chmod" args = "g+rwx,o-rwx {{ music_pulse_server }}" } + ] + pulse.properties = { + server.address = [ + "unix:{{ music_pulse_server }}" + ] + } diff --git a/roles/music/tasks/main.yaml b/roles/music/tasks/main.yaml index 537746a..e8105ee 100644 --- a/roles/music/tasks/main.yaml +++ b/roles/music/tasks/main.yaml @@ -1,4 +1,9 @@ --- +- name: Import base + ansible.builtin.import_tasks: + file: base.yaml + tags: + - music_base - name: Import mpd ansible.builtin.import_tasks: diff --git a/roles/music/templates/librespot.service b/roles/music/templates/librespot.service index c6d8c4a..e90c3cb 100644 --- a/roles/music/templates/librespot.service +++ b/roles/music/templates/librespot.service @@ -9,8 +9,7 @@ Type=simple Restart=always RestartSec=2s ExecStart=/opt/librespot/target/release/librespot --name Trollibox --backend pulseaudio --volume-ctrl linear -Environment="PULSE_SERVER=/tmp/pipewire-pulse-socket" -Environment="XDG_RUNTIME_DIR=/run/user/0" +Environment="PULSE_SERVER={{ music_pulse_server }}" User={{ music_librespot_user }} [Install] diff --git a/roles/music/templates/mpd.conf b/roles/music/templates/mpd.conf index efa28f7..6906e54 100644 --- a/roles/music/templates/mpd.conf +++ b/roles/music/templates/mpd.conf @@ -36,5 +36,5 @@ decoder { audio_output { type "pulse" name "Pulse" - server "/tmp/pipewire-pulse-socket" + server "{{ music_pulse_server }}" }