Add mpd setup
This commit is contained in:
parent
26562383cb
commit
5911d7ace4
11 changed files with 185 additions and 2 deletions
|
|
@ -1,4 +1,5 @@
|
|||
xdg_config_dir: "{{ ansible_env.HOME }}/.config"
|
||||
xdg_script_dir: "{{ ansible_env.HOME }}/.local/bin"
|
||||
|
||||
packages:
|
||||
- firefox
|
||||
|
|
|
|||
11
roles/arch/defaults/main/mpd.yml
Normal file
11
roles/arch/defaults/main/mpd.yml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
mpd_listen_address: "127.0.0.1"
|
||||
mpd_listen_port: "6600"
|
||||
|
||||
mpd_database_address: "10.8.0.1"
|
||||
mpd_database_port: "21000"
|
||||
|
||||
mpd_configuration_dir: "{{ ansible_env.HOME }}/.config/mpd"
|
||||
mpd_music_dir: "{{ ansible_env.HOME }}/music"
|
||||
mpd_playlist_dir: "{{ mpd_configuration_dir }}/playlists"
|
||||
mpd_state_path: "{{ mpd_configuration_dir }}/state"
|
||||
mpd_sticker_path: "{{ mpd_configuration_dir }}/sticker.sql"
|
||||
|
|
@ -50,8 +50,7 @@
|
|||
- include_tasks: gpg.yml # TODO
|
||||
- include_tasks: git.yml # TODO
|
||||
- include_tasks: mpv.yml
|
||||
- include_tasks: mpd.yml # TODO
|
||||
- include_tasks: nfs.yml # TODO
|
||||
- include_tasks: mpd.yml
|
||||
- include_tasks: postgres.yml # TODO
|
||||
- include_tasks: syncthing.yml # TODO depending on platform
|
||||
- include_tasks: openvpn.yml # TODO (laptop)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,88 @@
|
|||
- name: set up sudoers configuration
|
||||
become: yes
|
||||
template:
|
||||
src: "sudoers.j2"
|
||||
dest: "/etc/sudoers.d/10-sonny"
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0644"
|
||||
|
||||
- name: copy systemd configuration files
|
||||
template:
|
||||
src: "{{ item.src }}"
|
||||
dest: "{{ item.dest }}"
|
||||
loop:
|
||||
- {
|
||||
src: "mpd/service.j2",
|
||||
dest: "{{ xdg_config_dir }}/systemd/user/mpd.service",
|
||||
}
|
||||
- {
|
||||
src: "mpd/socket.j2",
|
||||
dest: "{{ xdg_config_dir }}/systemd/user/mpd.socket",
|
||||
}
|
||||
|
||||
- name: create mpd files
|
||||
file:
|
||||
path: "{{ item.path }}"
|
||||
state: "{{ item.state }}"
|
||||
loop:
|
||||
- {
|
||||
path: "{{ mpd_configuration_dir }}",
|
||||
state: "directory",
|
||||
}
|
||||
- {
|
||||
path: "{{ mpd_configuration_dir }}/playlists",
|
||||
state: "directory",
|
||||
}
|
||||
- {
|
||||
path: "{{ mpd_configuration_dir }}/log",
|
||||
state: "touch",
|
||||
}
|
||||
- {
|
||||
path: "{{ mpd_configuration_dir }}/database",
|
||||
state: "touch",
|
||||
}
|
||||
- {
|
||||
path: "{{ mpd_configuration_dir }}/sticker.sql",
|
||||
state: "touch",
|
||||
}
|
||||
- {
|
||||
path: "{{ mpd_configuration_dir }}/state",
|
||||
state: "touch",
|
||||
}
|
||||
|
||||
- name: copy configuration file
|
||||
template:
|
||||
src: "mpd/mpd.j2"
|
||||
dest: "{{ mpd_configuration_dir }}/mpd.conf"
|
||||
|
||||
- name: copy nfs connection scripts
|
||||
template:
|
||||
src: "{{ item.src }}"
|
||||
dest: "{{ item.dest }}"
|
||||
mode: "0755"
|
||||
loop:
|
||||
- {
|
||||
src: "mpd/music_mount.j2",
|
||||
dest: "{{ xdg_script_dir }}/music_mount",
|
||||
}
|
||||
- {
|
||||
src: "mpd/music_umount.j2",
|
||||
dest: "{{ xdg_script_dir }}/music_umount",
|
||||
}
|
||||
|
||||
- name: restart mpd service
|
||||
systemd:
|
||||
name: mpd.service
|
||||
state: restarted
|
||||
enabled: no
|
||||
scope: user
|
||||
when: platform == "desktop"
|
||||
|
||||
- name: enable mpd socket
|
||||
systemd:
|
||||
name: mpd.socket
|
||||
state: started
|
||||
enabled: yes
|
||||
scope: user
|
||||
when: platform == "desktop"
|
||||
44
roles/arch/templates/mpd/mpd.j2
Normal file
44
roles/arch/templates/mpd/mpd.j2
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
# {{ ansible_managed }} {{ ansible_date_time.time }} {{ ansible_date_time.date }}
|
||||
|
||||
music_directory "{{ mpd_music_dir }}"
|
||||
playlist_directory "{{ mpd_playlist_dir }}"
|
||||
state_file "{{ mpd_state_path }}"
|
||||
sticker_file "{{ mpd_sticker_path }}"
|
||||
log_level "secure"
|
||||
|
||||
bind_to_address "{{ mpd_listen_address }}"
|
||||
port "{{ mpd_listen_port }}"
|
||||
|
||||
auto_update "yes"
|
||||
filesystem_charset "UTF-8"
|
||||
|
||||
samplerate_converter "1"
|
||||
|
||||
database {
|
||||
plugin "proxy"
|
||||
host "{{ mpd_database_address }}"
|
||||
port "{{ mpd_database_port }}"
|
||||
}
|
||||
|
||||
audio_output {
|
||||
type "pulse"
|
||||
name "mpd"
|
||||
replay_gain_handler "software"
|
||||
mixer_type "hardware"
|
||||
format "96000:24:1"
|
||||
}
|
||||
|
||||
input {
|
||||
enabled "no"
|
||||
plugin "tidal"
|
||||
}
|
||||
|
||||
input {
|
||||
enabled "no"
|
||||
plugin "qobuz"
|
||||
}
|
||||
|
||||
decoder {
|
||||
plugin "wildmidi"
|
||||
enabled "no"
|
||||
}
|
||||
5
roles/arch/templates/mpd/music_mount.j2
Normal file
5
roles/arch/templates/mpd/music_mount.j2
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# {{ ansible_managed }} {{ ansible_date_time.time }} {{ ansible_date_time.date }}
|
||||
|
||||
sudo mount -t nfs -o vers=4,soft,async,proto=tcp,port=2049 10.8.0.1:/srv/nfs4/music {{ mpd_music_dir }}
|
||||
6
roles/arch/templates/mpd/music_umount.j2
Normal file
6
roles/arch/templates/mpd/music_umount.j2
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# {{ ansible_managed }} {{ ansible_date_time.time }} {{ ansible_date_time.date }}
|
||||
|
||||
pkill cantata
|
||||
sudo umount {{ mpd_music_dir }}
|
||||
14
roles/arch/templates/mpd/service.j2
Normal file
14
roles/arch/templates/mpd/service.j2
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
# {{ ansible_managed }} {{ ansible_date_time.time }} {{ ansible_date_time.date }}
|
||||
|
||||
[Unit]
|
||||
Description=Music Player Daemon
|
||||
Documentation=man:mpd(1) man:mpd.conf(5)
|
||||
|
||||
[Service]
|
||||
Type=notify
|
||||
ExecStartPre={{ xdg_script_dir }}/music_mount
|
||||
ExecStart=/usr/bin/mpd --no-daemon {{ mpd_configuration_dir }}/mpd.conf
|
||||
ExecStopPost={{ xdg_script_dir }}/music_umount
|
||||
Restart=on-failure
|
||||
RestartSec=15s
|
||||
TimeoutStopSec=3
|
||||
11
roles/arch/templates/mpd/socket.j2
Normal file
11
roles/arch/templates/mpd/socket.j2
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# {{ ansible_managed }} {{ ansible_date_time.time }} {{ ansible_date_time.date }}
|
||||
|
||||
[Socket]
|
||||
ListenStream=/run/user/1000/mpd.socket
|
||||
ListenStream={{ mpd_listen_port }}
|
||||
Backlog=5
|
||||
KeepAlive=true
|
||||
PassCredentials=true
|
||||
|
||||
[Install]
|
||||
WantedBy=sockets.target
|
||||
4
roles/arch/templates/sudoers.j2
Normal file
4
roles/arch/templates/sudoers.j2
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# {{ ansible_managed }} {{ ansible_date_time.time }} {{ ansible_date_time.date }}
|
||||
|
||||
sonny ALL=(ALL) NOPASSWD: /usr/bin/mount
|
||||
sonny ALL=(ALL) NOPASSWD: /usr/bin/umount
|
||||
Loading…
Add table
Add a link
Reference in a new issue