From b624aeb2dca95f26c24a8d96b425fcb0b9153f39 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Sun, 11 Sep 2022 22:49:49 +0200 Subject: add role for kodi standalone deployments --- roles/kodi/standalone/defaults/main.yml | 12 ++++ roles/kodi/standalone/handlers/main.yml | 5 ++ roles/kodi/standalone/tasks/main.yml | 80 ++++++++++++++++++++++ roles/kodi/standalone/templates/kodi.service.j2 | 19 +++++ .../standalone/templates/polkit-legacy.pkla.j2 | 4 ++ roles/kodi/standalone/templates/polkit.rules.j2 | 13 ++++ 6 files changed, 133 insertions(+) create mode 100644 roles/kodi/standalone/defaults/main.yml create mode 100644 roles/kodi/standalone/handlers/main.yml create mode 100644 roles/kodi/standalone/tasks/main.yml create mode 100644 roles/kodi/standalone/templates/kodi.service.j2 create mode 100644 roles/kodi/standalone/templates/polkit-legacy.pkla.j2 create mode 100644 roles/kodi/standalone/templates/polkit.rules.j2 (limited to 'roles/kodi') diff --git a/roles/kodi/standalone/defaults/main.yml b/roles/kodi/standalone/defaults/main.yml new file mode 100644 index 00000000..3995dc4d --- /dev/null +++ b/roles/kodi/standalone/defaults/main.yml @@ -0,0 +1,12 @@ +--- +# kodi_standalone_support_packages_extra: +# - i965-va-driver-shaders ## HW-Decode for older Intel GPU +# - intel-media-va-driver-non-free ## HW-Decode for newer Intel GPU +# - libgl1-mesa-dri ## missing dep for RaspiOS Kodi Package + +kodi_standalone_use_backports: no + +kodi_standalone_kodi_packages_extra: + #- kodi-repository-kodi ## raspios kodi package already includes this package, manually installing it breaks the install + - kodi-inputstream-adaptive + - kodi-inputstream-rtmp diff --git a/roles/kodi/standalone/handlers/main.yml b/roles/kodi/standalone/handlers/main.yml new file mode 100644 index 00000000..3880177e --- /dev/null +++ b/roles/kodi/standalone/handlers/main.yml @@ -0,0 +1,5 @@ +--- +- name: restart kodi + service: + name: kodi + state: restarted diff --git a/roles/kodi/standalone/tasks/main.yml b/roles/kodi/standalone/tasks/main.yml new file mode 100644 index 00000000..5ac653fb --- /dev/null +++ b/roles/kodi/standalone/tasks/main.yml @@ -0,0 +1,80 @@ +--- +- name: install support packages + apt: + name: + - policykit-1 + - udisks2 + - upower + - fonts-noto + - fonts-roboto + - fonts-roboto-fontface + state: present + notify: restart kodi + +- name: install extra support packages + when: kodi_standalone_support_packages_extra is defined + apt: + name: "{{ kodi_standalone_support_packages_extra }}" + state: present + notify: restart kodi + +- name: pin kodi packages to use backports + when: kodi_standalone_use_backports + copy: + content: | + Package: src:kodi {{ kodi_standalone_kodi_packages_extra | join(' ') }} + Pin: release n={{ ansible_distribution_release }}-backports + Pin-Priority: 990 + dest: /etc/apt/preferences.d/kodi-backports.pref + +- name: install kodi packages + apt: + name: "{{ ['kodi'] | union(kodi_standalone_kodi_packages_extra) }}" + state: present + notify: restart kodi + +- name: add user for kodi + user: + name: kodi + state: present + password: "!" + +- name: make sure policykit config directories exist + loop: + - /etc/polkit-1/rules.d + - /etc/polkit-1/localauthority/50-local.d + file: + path: "{{ item }}" + state: directory + +- name: install policykit configuration + loop: + - src: polkit.rules.j2 + dest: /etc/polkit-1/rules.d/kodi.rules + - src: polkit-legacy.pkla.j2 + dest: /etc/polkit-1/localauthority/50-local.d/kodi.pkla + loop_control: + label: "{{ item.dest }}" + template: + src: "{{ item.src }}" + dest: "{{ item.dest }}" + notify: restart kodi + +- name: install systemd service unit + template: + src: kodi.service.j2 + dest: /etc/systemd/system/kodi.service + notify: restart kodi + +- name: make sure kodi service unit is enabled and started + systemd: + daemon_reload: yes + name: kodi.service + state: started + enabled: yes + +- name: make sure systemd default target is set to graphical.target + file: + src: /lib/systemd/system/graphical.target + dest: /etc/systemd/system/default.target + state: link diff --git a/roles/kodi/standalone/templates/kodi.service.j2 b/roles/kodi/standalone/templates/kodi.service.j2 new file mode 100644 index 00000000..c349010e --- /dev/null +++ b/roles/kodi/standalone/templates/kodi.service.j2 @@ -0,0 +1,19 @@ +[Unit] +Description=Kodi standalone (GBM) +After=remote-fs.target systemd-user-sessions.service network-online.target nss-lookup.target sound.target bluetooth.target polkit.service upower.service mysqld.service lircd.service +Wants=network-online.target polkit.service upower.service +Conflicts=getty@tty1.service + +[Service] +User=kodi +Group=kodi +SupplementaryGroups=video render audio input +TTYPath=/dev/tty1 +ExecStart=/usr/bin/kodi --standalone +ExecStop=/usr/bin/killall --user kodi --exact --wait kodi.bin +Restart=always +StandardInput=tty +StandardOutput=journal + +[Install] +Alias=display-manager.service diff --git a/roles/kodi/standalone/templates/polkit-legacy.pkla.j2 b/roles/kodi/standalone/templates/polkit-legacy.pkla.j2 new file mode 100644 index 00000000..e1df2834 --- /dev/null +++ b/roles/kodi/standalone/templates/polkit-legacy.pkla.j2 @@ -0,0 +1,4 @@ +[Allow kodi to ] +Identity=unix-user:kodi +Action=org.freedesktop.login1.*;org.freedesktop.udisks.*;org.freedesktop.udisks2.* +ResultAny=yes diff --git a/roles/kodi/standalone/templates/polkit.rules.j2 b/roles/kodi/standalone/templates/polkit.rules.j2 new file mode 100644 index 00000000..20f01b29 --- /dev/null +++ b/roles/kodi/standalone/templates/polkit.rules.j2 @@ -0,0 +1,13 @@ +polkit.addRule(function(action, subject) { + if (subject.user == "kodi") { + if (action.id.indexOf("org.freedesktop.login1.") == 0) { + return polkit.Result.YES; + } + if (action.id.indexOf("org.freedesktop.udisks.") == 0) { + return polkit.Result.YES; + } + if (action.id.indexOf("org.freedesktop.udisks2.") == 0) { + return polkit.Result.YES; + } + } +}); -- cgit v1.2.3