Add fedora support to sunshine role

This commit is contained in:
Kenneth Benzie 2024-06-18 23:06:40 +01:00
parent 32bef2d7f3
commit 8e3375b160
3 changed files with 106 additions and 41 deletions

View File

@ -0,0 +1,43 @@
---
# FIXME: This will only work for Debian or Ubuntu but not Ubuntu derived distros
- set_fact:
assets: '{{latest.json.assets}}'
asset_name: 'sunshine-{{ ansible_distribution | lower }}-{{ ansible_distribution_version }}-amd64.deb'
- set_fact:
asset_query: '[?contains(name, `{{asset_name}}`)] | [0]'
- set_fact:
asset: '{{assets | json_query(asset_query)}}'
- name: download deb file
get_url:
url: '{{asset.browser_download_url}}'
dest: '/tmp/{{asset_name}}'
environment: '{{proxy_environment}}'
- name: install package from deb file
become: true
apt:
deb: '/tmp/{{asset_name}}'
- name: remove deb file
file:
state: absent
path: '/tmp/{{asset_name}}'
- name: fix systemd unit
become: true
copy:
path: /usr/lib/systemd/user/sunshine.service
content: |
[Unit]
Description=Sunshine is a self-hosted game stream host for Moonlight.
StartLimitIntervalSec=500
StartLimitBurst=5
[Service]
ExecStart=/usr/bin/sunshine
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=xdg-desktop-autostart.target

View File

@ -0,0 +1,56 @@
---
- assert:
that:
- ansible_distribution == "Fedora"
- assets is defined
- set_fact:
asset_name: 'sunshine-{{ ansible_distribution | lower }}-{{ ansible_distribution_version }}-amd64.rpm'
- set_fact:
asset_query: '[?contains(name, `{{asset_name}}`)] | [0]'
- set_fact:
asset: '{{assets | json_query(asset_query)}}'
- name: download rpm file
get_url:
url: '{{asset.browser_download_url}}'
dest: '/tmp/{{asset_name}}'
environment: '{{proxy_environment}}'
- name: install package from rpm file
dnf:
name: '/tmp/{{asset_name}}'
- name: remove rpm file
file:
state: absent
path: '/tmp/{{asset_name}}'
- name: create udev rules for uinput
become: true
copy:
content: |
KERNEL=="uinput", SUBSYSTEM=="misc", OPTIONS+="static_node=uinput", TAG+="uaccess"
dest: /etc/udev/rules.d/60-sunshine.rules
- name: reload udev rules for uinput
become: true
command: udevadm control --reload-rules
- name: request udev events
become: true
command: udevadm trigger
- name: add uinput module
become: true
modprobe:
name: uinput
- name: stat sunshine
stat:
path: /usr/bin/sunshine
register: sunshine
- name: enable permissions for KMS capture
become: true
command: 'setcap cap_sys_admin+p {{ sunshine.stat.lnk_source }}'

View File

@ -1,8 +1,4 @@
--- ---
- set_fact:
# TODO: Construct this out of information in ansible_facts
asset_name: sunshine-ubuntu-22.04-amd64.deb
- name: get latest version - name: get latest version
uri: uri:
url: https://api.github.com/repos/LizardByte/Sunshine/releases/latest url: https://api.github.com/repos/LizardByte/Sunshine/releases/latest
@ -11,42 +7,12 @@
- set_fact: - set_fact:
assets: '{{latest.json.assets}}' assets: '{{latest.json.assets}}'
asset_query: '[?contains(name, `{{asset_name}}`)] | [0]'
- debug: var=assets
- debug: var=asset_query
- set_fact:
asset: '{{assets | json_query(asset_query)}}'
- debug: var=asset
- name: download deb file - include_tasks: '{{ansible_os_family}}.yaml'
get_url:
url: '{{asset.browser_download_url}}'
dest: '/tmp/{{asset_name}}'
- name: install package from deb file - name: enable systemd service
become: true ansible.builtin.systemd_service:
apt: name: sunshine
deb: '/tmp/{{asset_name}}' scope: user
enabled: true
- name: remove deb file state: started
file:
state: absent
path: '/tmp/{{asset_name}}'
- name: fix systemd unit
become: true
copy:
path: /usr/lib/systemd/user/sunshine.service
content: |
[Unit]
Description=Sunshine is a self-hosted game stream host for Moonlight.
StartLimitIntervalSec=500
StartLimitBurst=5
[Service]
ExecStart=/usr/bin/sunshine
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=xdg-desktop-autostart.target