mirror of
https://github.com/fscotto/infra.git
synced 2026-07-29 16:20:01 +00:00
119 lines
4.4 KiB
YAML
119 lines
4.4 KiB
YAML
---
|
|
- name: Enable base runit services
|
|
tags: [services, packages]
|
|
ansible.builtin.file:
|
|
src: "/etc/sv/{{ item }}"
|
|
dest: "/var/service/{{ item }}"
|
|
state: link
|
|
loop: "{{ enabled_services | default([]) }}"
|
|
|
|
- name: Enable host runit services
|
|
tags: [services, packages]
|
|
ansible.builtin.file:
|
|
src: "/etc/sv/{{ item }}"
|
|
dest: "/var/service/{{ item }}"
|
|
state: link
|
|
loop: "{{ host_enabled_services | default([]) }}"
|
|
|
|
- name: Define desktop display manager services
|
|
tags: [services, packages, display-manager]
|
|
ansible.builtin.set_fact:
|
|
services_runit_desktop_display_manager_service: >-
|
|
{{ desktop_display_manager_by_environment[desktop_environment | default('minimal')] }}
|
|
services_runit_inactive_display_manager_services: >-
|
|
{{
|
|
desktop_display_manager_by_environment.values()
|
|
| list
|
|
| difference([desktop_display_manager_by_environment[desktop_environment | default('minimal')]])
|
|
}}
|
|
when: "'desktop' in group_names"
|
|
|
|
- name: Inspect selected desktop display manager service
|
|
tags: [services, packages, display-manager]
|
|
ansible.builtin.stat:
|
|
path: "/var/service/{{ services_runit_desktop_display_manager_service }}"
|
|
register: services_runit_selected_display_manager_link
|
|
when: "'desktop' in group_names"
|
|
|
|
- name: Inspect inactive desktop display manager services
|
|
tags: [services, packages, display-manager]
|
|
ansible.builtin.stat:
|
|
path: "/var/service/{{ item }}"
|
|
loop: "{{ services_runit_inactive_display_manager_services }}"
|
|
loop_control:
|
|
label: "{{ item }}"
|
|
register: services_runit_inactive_display_manager_links
|
|
when: "'desktop' in group_names"
|
|
|
|
- name: Record active inactive desktop display managers
|
|
tags: [services, packages, display-manager]
|
|
ansible.builtin.set_fact:
|
|
services_runit_active_inactive_display_managers: >-
|
|
{{
|
|
services_runit_inactive_display_manager_links.results
|
|
| selectattr('stat.exists')
|
|
| map(attribute='item')
|
|
| list
|
|
}}
|
|
when: "'desktop' in group_names"
|
|
|
|
- name: Report deferred desktop display manager switch
|
|
tags: [services, packages, display-manager]
|
|
ansible.builtin.debug:
|
|
msg: >-
|
|
{{ desktop_environment }} is configured, but
|
|
{{ services_runit_active_inactive_display_managers | join(', ') }} is still active.
|
|
Re-run from a TTY or SSH session with
|
|
-e desktop_allow_display_manager_switch=true to switch safely to
|
|
{{ services_runit_desktop_display_manager_service }}.
|
|
when:
|
|
- "'desktop' in group_names"
|
|
- (services_runit_active_inactive_display_managers | length) > 0
|
|
- not (desktop_allow_display_manager_switch | default(false))
|
|
|
|
- name: Disable inactive desktop display managers
|
|
tags: [services, packages, display-manager]
|
|
ansible.builtin.file:
|
|
path: "/var/service/{{ item }}"
|
|
state: absent
|
|
loop: "{{ services_runit_active_inactive_display_managers }}"
|
|
loop_control:
|
|
label: "{{ item }}"
|
|
register: services_runit_display_manager_disabled
|
|
when:
|
|
- "'desktop' in group_names"
|
|
- (services_runit_active_inactive_display_managers | length) > 0
|
|
- desktop_allow_display_manager_switch | default(false)
|
|
|
|
- name: Enable selected desktop display manager
|
|
tags: [services, packages, display-manager]
|
|
ansible.builtin.file:
|
|
src: "/etc/sv/{{ services_runit_desktop_display_manager_service }}"
|
|
dest: "/var/service/{{ services_runit_desktop_display_manager_service }}"
|
|
state: link
|
|
register: services_runit_display_manager_enabled
|
|
when:
|
|
- "'desktop' in group_names"
|
|
- not services_runit_selected_display_manager_link.stat.exists
|
|
- >-
|
|
(services_runit_active_inactive_display_managers | length) == 0
|
|
or (desktop_allow_display_manager_switch | default(false))
|
|
|
|
- name: Remove inactive desktop display manager packages after switching
|
|
tags: [services, packages, display-manager]
|
|
community.general.xbps:
|
|
name: "{{ item }}"
|
|
state: absent
|
|
update_cache: false
|
|
loop: "{{ services_runit_inactive_display_manager_services }}"
|
|
loop_control:
|
|
label: "{{ item }}"
|
|
when:
|
|
- "'desktop' in group_names"
|
|
- >-
|
|
services_runit_selected_display_manager_link.stat.exists
|
|
or (services_runit_display_manager_enabled is defined and services_runit_display_manager_enabled is changed)
|
|
- >-
|
|
(services_runit_active_inactive_display_managers | length) == 0
|
|
or (desktop_allow_display_manager_switch | default(false))
|