From 1f87e8f5d08c96de2f0e57452d4837be67595e80 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Sun, 18 Sep 2022 21:16:08 +0200 Subject: add simple kodi config role --- roles/kodi/config/defaults/main.yml | 27 +++++++++++++++ roles/kodi/config/tasks/main.yml | 54 ++++++++++++++++++++++++++++++ roles/kodi/config/templates/sources.xml.j2 | 14 ++++++++ 3 files changed, 95 insertions(+) create mode 100644 roles/kodi/config/defaults/main.yml create mode 100644 roles/kodi/config/tasks/main.yml create mode 100644 roles/kodi/config/templates/sources.xml.j2 (limited to 'roles/kodi') 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 @@ + +{% for source_type in ['programs', 'video', 'music', 'pictures', 'files', 'games'] %} + <{{ source_type }}> + +{% for source in kodi_config_sources[source_type] | default([]) %} + + {{ source.name }} + {{ source.path }} + true + +{% endfor %} + +{% endfor %} + -- cgit v1.2.3