feat: Add configuration and scripts for Sunshine and Gamescope integration

This commit is contained in:
2025-10-28 00:04:17 +01:00
parent 49de842b57
commit 9fa68f3bc5
11 changed files with 207 additions and 76 deletions
+52 -45
View File
@@ -3,14 +3,14 @@
hosts: game_station
vars:
user_name: "gameuser"
gamescope_conf_dir: "/home/{{ user_name }}/.config/gamescope"
system_bin_dir: "/usr/local/bin"
user_config_dir: "/home/{{ user_name }}/.config"
user_bin_dir: "/home/{{ user_name }}/.local/bin"
systemd_user_dir: "/home/{{ user_name }}/.config/systemd/user"
systemd_system_dir: "/etc/systemd/system"
grub_cfg: "/etc/default/grub"
system_cores: "0,8"
gamescope_cores: "2-7,10-15"
general_cores: "2-7,10-15"
sunshine_cores: "1,9"
tasks:
@@ -99,27 +99,15 @@
- sddm
# System actions
- name: Create Gamescope slice
become: true
ansible.builtin.copy:
dest: "{{ systemd_system_dir }}/gamescope.slice"
owner: root
group: root
mode: "0644"
content: |
[Slice]
CPUWeight=100
AllowedCPUs={{ gamescope_cores }}
- name: Install Systemd service files
- name: Install Systemd system files
become: true
ansible.builtin.copy:
src: "{{ item }}"
dest: "/etc/systemd/system/{{ item | basename }}"
dest: "{{ systemd_system_dir }}/{{ item | basename }}"
mode: "0644"
owner: root
group: root
loop: "{{ query('fileglob', 'game_station/systemd/system/*.service') }}"
loop: "{{ query('fileglob', 'game_station/systemd/system/*') }}"
notify: Reload systemd daemon for system services
- name: Install System scripts
@@ -191,18 +179,32 @@
group: "{{ user_name }}"
mode: "0755"
loop:
- "{{ gamescope_conf_dir }}"
- "{{ user_bin_dir }}"
- "{{ systemd_user_dir }}"
- "{{ user_config_dir }}"
- "{{ user_config_dir }}/gamescope"
- "{{ user_config_dir }}/sunshine"
- "{{ user_config_dir }}/steam-rom-manager/userData"
- "/home/{{ user_name }}/.local/logs"
- "/opt/steamcmd"
- "/home/{{ user_name }}/.config/steam-rom-manager/userData"
- "/home/{{ user_name }}/.local/run"
- "/home/{{ user_name }}/Emulation"
- "/home/{{ user_name }}/Emulation/snes"
- "/home/{{ user_name }}/Emulation/psp"
- "/home/{{ user_name }}/Emulation/genesis"
- "/home/{{ user_name }}/RetroArch/shaders"
- "/home/{{ user_name }}/RetroArch/config"
- "/opt/steamcmd"
- name: Install Systemd user files
become: true
ansible.builtin.template:
src: "{{ item }}"
dest: "{{ systemd_user_dir }}/{{ item | basename }}"
owner: "{{ user_name }}"
group: "{{ user_name }}"
mode: "0644"
loop: "{{ query('fileglob', 'game_station/systemd/user/*') }}"
notify: Reload systemd daemon for user services
- name: Download steamtools
become: true
@@ -242,30 +244,6 @@
group: "{{ user_name }}"
mode: "0644"
- name: Write Gamescope configuration
become: true
ansible.builtin.copy:
dest: "{{ gamescope_conf_dir }}/gamescope.conf"
owner: "{{ user_name }}"
mode: "0644"
content: |
OUTPUT_CONNECTOR=HDMI-A-1
FRAMERATE=120
RESOLUTION={{ lookup('env', 'GAME_RESOLUTION') | default('1920x1080') }}
HDR_ENABLED={{ lookup('env', 'HDR_ENABLED') | default('false') }}
DRM_DEVICE=/dev/dri/card1
- name: Create Sunshine slice
become: true
ansible.builtin.copy:
dest: "{{ systemd_user_dir }}/sunshine.slice"
owner: "{{ user_name }}"
mode: "0644"
content: |
[Slice]
CPUWeight=100
AllowedCPUs={{ sunshine_cores }}
- name: Install User scripts
become: true
ansible.builtin.copy:
@@ -276,6 +254,29 @@
mode: "0755"
loop: "{{ query('fileglob', 'game_station/user/*') }}"
- name: Write Gamescope configuration
become: true
ansible.builtin.copy:
dest: "{{ user_config_dir }}/gamescope/gamescope.conf"
owner: "{{ user_name }}"
mode: "0644"
content: |
OUTPUT_CONNECTOR=HDMI-A-1
FRAMERATE=120
RESOLUTION={{ lookup('env', 'GAME_RESOLUTION') | default('1920x1080') }}
HDR_ENABLED={{ lookup('env', 'HDR_ENABLED') | default('false') }}
DRM_DEVICE=/dev/dri/card1
- name: Install Sunshine files
become: true
ansible.builtin.template:
src: "{{ item }}"
dest: "{{ user_config_dir }}/sunshine/{{ item | basename }}"
owner: "{{ user_name }}"
group: "{{ user_name }}"
mode: "0644"
loop: "{{ query('fileglob', 'game_station/sunshine/*') }}"
- name: Enable Gamescope session service on boot
become: true
ansible.builtin.systemd:
@@ -283,7 +284,6 @@
enabled: true
state: started
handlers:
- name: Update grub
ansible.builtin.command: grub2-mkconfig -o /boot/grub2/grub.cfg
@@ -294,3 +294,10 @@
become: true
ansible.builtin.systemd:
daemon_reload: true
- name: Reload systemd daemon for user services
become: true
become_user: "{{ user_name }}"
ansible.builtin.systemd:
daemon_reload: true
scope: user