feat(desktop): systemd user scope service and timers setup

This commit is contained in:
Matthieu Bessat 2025-10-07 12:46:18 +02:00
parent ca6d364df7
commit 85f1f01fb7
2 changed files with 87 additions and 0 deletions

View file

@ -0,0 +1,51 @@
# Main task of the role to setup systemd user scope services and timer
# Expected var "user_systemd_services" and "template_dir"
- name: Setup systemd user services folder
file:
path: "{{ home }}/.config/systemd/user"
state: directory
recurse: true
- name: Setup user units file
template:
src: "{{ template_dir }}/{{ unit.name }}.service"
dest: "{{ home }}/.config/systemd/user/{{ unit.name }}.service"
loop_control:
loop_var: unit
with_items: "{{ user_systemd_services }}"
- name: Setup user timers
with_items: "{{ systemd_services.user }}"
loop_control:
loop_var: unit
when: "unit.timer is defined and unit.timer"
template:
src: "{{ template_dir }}/{{ unit.name }}.timer"
dest: "{{ home }}/.config/systemd/user/{{ unit.name }}.timer"
- name: Enable user services
with_items: "{{ user_systemd_services }}"
loop_control:
loop_var: unit
systemd_service:
daemon_reload: true
scope: user
name: "{{ unit.name }}"
state: started
enabled: true
- name: Enable user timers
with_items: "{{ systemd_services.user }}"
loop_control:
loop_var: unit
when: "unit.timer is defined and unit.timer"
systemd_service:
scope: user
name: "{{ unit.name }}.timer"
state: started
enabled: true
- name: Reload user daemon
systemd_service:
scope: user
daemon_reload: true

View file

@ -0,0 +1,36 @@
# Desktop workstation non-root setup playbook
# This playbook contains user setup for the graphical Sway desktop environment
# that doesn't require root
- hosts: workstation
gather_facts: True
vars:
home: /home/{{ user }}
tasks:
- name: "Setup systemd user services and timers"
include_role:
name: systemd_user
vars:
user_systemd_services:
- name: "cliphist"
enabled: true
- name: "kanshi"
enabled: true
- name: "gammastep"
enabled: true
- name: "swaybg"
enabled: true
# - name: "hourly_remainder"
# enabled: true
# timer: true
template_dir: "systemd/user"
- name: Read glue scripts config
ansible.builtin.slurp:
src: "glue_scripts/config.yaml"
register: glue_scripts_config_yaml
- name: Install glue scripts
ansible.builtin.include_tasks:
file: install_glue_scripts.yaml
vars:
config: "{{ (glue_scripts_config_yaml.content | b64decode | from_yaml) }}"
glue_scripts_config_yaml: "{{ lookup('file', 'desktop_glue_scripts/config.yaml') }}"