summaryrefslogtreecommitdiff
path: root/roles/kodi
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2022-09-18 21:16:08 +0200
committerChristian Pointner <equinox@spreadspace.org>2022-09-18 21:16:08 +0200
commit1f87e8f5d08c96de2f0e57452d4837be67595e80 (patch)
tree5630ed55babc04c8d9bd6925e8813bf5a0aaffef /roles/kodi
parentkodi/standalone: systemd-user-sessions is not necessary (diff)
add simple kodi config role
Diffstat (limited to 'roles/kodi')
-rw-r--r--roles/kodi/config/defaults/main.yml27
-rw-r--r--roles/kodi/config/tasks/main.yml54
-rw-r--r--roles/kodi/config/templates/sources.xml.j214
3 files changed, 95 insertions, 0 deletions
diff --git a/roles/kodi/config/defaults/main.yml b/roles/kodi/config/defaults/main.yml
new file mode 100644
index 00000000..54e6cfa7
--- /dev/null
+++ b/roles/kodi/config/defaults/main.yml
@@ -0,0 +1,27 @@
+---
+kodi_config_nfs4_mounts: {}
+
+# kodi_config_nfs4_mounts:
+# - src: 192.0.2.0:/
+# path: /srv/files
+
+
+kodi_config_guisettings: {}
+
+# kodi_config_guisettings:
+# locale.keyboardlayouts: "German ABC|German QWERTZ"
+# locale.activekeyboardlayout: "German QWERTZ"
+# locale.country: Central Europe
+# locale.timezonecountry: Austria
+# locale.timezone: Europa Vienna
+# services.devicename: "Kodi @ {{ host_name }}"
+
+
+kodi_config_sources: {}
+
+# kodi_config_sources:
+# video:
+# - name: Series
+# path: /srv/files/series
+# - name: Movies
+# path: /srv/files/movies
diff --git a/roles/kodi/config/tasks/main.yml b/roles/kodi/config/tasks/main.yml
new file mode 100644
index 00000000..e3c6ef25
--- /dev/null
+++ b/roles/kodi/config/tasks/main.yml
@@ -0,0 +1,54 @@
+---
+ ## Kodi only supports NFSv3, however it will probably work with Kodi 20+ (https://github.com/xbmc/xbmc/pull/21659)
+- name: mount NFSv4 volumes
+ loop: "{{ kodi_config_nfs4_mounts }}"
+ loop_control:
+ label: "{{ item.src }} -> {{ item.path }}"
+ mount:
+ src: "{{ item.src }}"
+ path: "{{ item.path }}"
+ fstype: nfs4
+ opts: nodev,x-systemd.automount,nofail,ro
+ state: mounted
+
+- name: install python lxml
+ apt:
+ name: "{{ python_basename }}-lxml"
+ state: present
+
+- name: stop kodi
+ systemd:
+ name: kodi.service
+ state: stopped
+
+- name: configure guisettings.xml
+ loop: "{{ kodi_config_guisettings | dict2items }}"
+ loop_control:
+ label: "{{ item.key }} = {{ item.value }}"
+ xml:
+ path: /home/kodi/.kodi/userdata/guisettings.xml
+ xpath: '/settings/setting[@id="{{ item.key }}"]'
+ value: "{{ item.value }}"
+ pretty_print: yes
+
+- name: configure guisettings.xml
+ loop: "{{ kodi_config_guisettings | dict2items }}"
+ loop_control:
+ label: "{{ item.key }} = {{ item.value }}"
+ xml:
+ path: /home/kodi/.kodi/userdata/guisettings.xml
+ xpath: '/settings/setting[@id="{{ item.key }}"]/@default'
+ state: absent
+ pretty_print: yes
+
+- name: generate sources.xml
+ template:
+ src: sources.xml.j2
+ dest: /home/kodi/.kodi/userdata/sources.xml
+ owner: kodi
+ group: kodi
+
+- name: start kodi
+ systemd:
+ name: kodi.service
+ state: started
diff --git a/roles/kodi/config/templates/sources.xml.j2 b/roles/kodi/config/templates/sources.xml.j2
new file mode 100644
index 00000000..0ae09b74
--- /dev/null
+++ b/roles/kodi/config/templates/sources.xml.j2
@@ -0,0 +1,14 @@
+<sources>
+{% for source_type in ['programs', 'video', 'music', 'pictures', 'files', 'games'] %}
+ <{{ source_type }}>
+ <default pathversion="1"></default>
+{% for source in kodi_config_sources[source_type] | default([]) %}
+ <source>
+ <name>{{ source.name }}</name>
+ <path pathversion="1">{{ source.path }}</path>
+ <allowsharing>true</allowsharing>
+ </source>
+{% endfor %}
+ </{{ source_type }}>
+{% endfor %}
+</sources>