feat: Add configuration and scripts for Sunshine and Gamescope integration
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user