feat: Add scripts and systemd services for SteamOS session management and game launching
This commit is contained in:
@@ -86,9 +86,34 @@
|
||||
enabled: true
|
||||
state: started
|
||||
|
||||
- name: Enable wake-on-lan on primary network interface
|
||||
- name: Determine default network interface
|
||||
ansible.builtin.set_fact:
|
||||
primary_iface: "{{ ansible_default_ipv4.interface }}"
|
||||
|
||||
- name: Get NetworkManager connection name for primary interface
|
||||
become: true
|
||||
ansible.builtin.command: ethtool -s $(ip route show default | awk '/default/ {print $5}') wol g
|
||||
ansible.builtin.command: >
|
||||
bash -lc "nmcli -t -f NAME,DEVICE,TYPE c show --active |
|
||||
awk -F: -v IF='{{ primary_iface }}' '$2==IF && $3==\"802-3-ethernet\"{print $1; exit}'"
|
||||
register: nm_conn_name
|
||||
changed_when: false
|
||||
failed_when: nm_conn_name.stdout == ""
|
||||
|
||||
- name: Ensure WOL is persistent (magic) on the NM connection
|
||||
become: true
|
||||
ansible.builtin.shell: >
|
||||
set -euo pipefail;
|
||||
cur=$(nmcli -g 802-3-ethernet.wake-on-lan connection show "{{ nm_conn_name.stdout }}" | tr -d '[:space:]');
|
||||
if [ "$cur" != "magic" ]; then
|
||||
nmcli connection modify "{{ nm_conn_name.stdout }}" 802-3-ethernet.wake-on-lan magic;
|
||||
echo changed;
|
||||
fi
|
||||
register: nm_wol_set
|
||||
changed_when: "'changed' in nm_wol_set.stdout"
|
||||
|
||||
- name: Apply WOL for current boot
|
||||
become: true
|
||||
ansible.builtin.command: "ethtool -s {{ primary_iface }} wol g"
|
||||
changed_when: false
|
||||
failed_when: false
|
||||
|
||||
@@ -146,7 +171,7 @@
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0755"
|
||||
loop: "{{ query('fileglob', 'game_station/system/*') }}"
|
||||
loop: "{{ query('fileglob', 'game_station/bin/system/*') }}"
|
||||
|
||||
- name: Create system directories
|
||||
become: true
|
||||
@@ -306,7 +331,7 @@
|
||||
owner: "{{ user_name }}"
|
||||
group: "{{ user_name }}"
|
||||
mode: "0755"
|
||||
loop: "{{ query('fileglob', 'game_station/user/*') }}"
|
||||
loop: "{{ query('fileglob', 'game_station/bin/user/*') }}"
|
||||
|
||||
- name: Write Gamescope configuration
|
||||
become: true
|
||||
@@ -332,7 +357,7 @@
|
||||
become: true
|
||||
become_user: "{{ user_name }}"
|
||||
ansible.builtin.systemd:
|
||||
name: session.service
|
||||
name: steamos.service
|
||||
enabled: true
|
||||
state: started
|
||||
scope: user
|
||||
|
||||
Reference in New Issue
Block a user