70 lines
2.7 KiB
YAML
70 lines
2.7 KiB
YAML
---
|
|
- name: Load desktop package definitions
|
|
ansible.builtin.include_vars:
|
|
file: desktop.yml
|
|
|
|
- name: Resolve desktop packages
|
|
vars:
|
|
_de: "{{ system_cfg.features.desktop.environment }}"
|
|
_family_pkgs: "{{ bootstrap_desktop_packages[os_family] | default({}) }}"
|
|
_de_config: "{{ _family_pkgs[_de] | default({}) }}"
|
|
_base: "{{ bootstrap_desktop_base_packages[os_family] | default([]) }}"
|
|
_requested_groups: "{{ system_cfg.features.desktop.groups | default([]) }}"
|
|
_group_pkgs: >-
|
|
{{
|
|
_requested_groups
|
|
| select('in', desktop_package_groups)
|
|
| map('extract', desktop_package_groups)
|
|
| map(attribute=os_family, default=[])
|
|
| list
|
|
| sum(start=[])
|
|
}}
|
|
ansible.builtin.set_fact:
|
|
# GNOME ships under different dnf environment groups: Fedora uses
|
|
# workstation-product-environment, enterprise RHEL/Rocky/Alma use
|
|
# graphical-server-environment ("Server with GUI").
|
|
_desktop_groups: >-
|
|
{{ ['graphical-server-environment']
|
|
if (_de == 'gnome' and os_family == 'RedHat' and os != 'fedora')
|
|
else (_de_config.groups | default([])) }}
|
|
_desktop_packages: >-
|
|
{{
|
|
((_de_config.packages | default([])) + _base + _group_pkgs)
|
|
| reject('equalto', '')
|
|
| unique
|
|
| list
|
|
}}
|
|
|
|
- name: Validate desktop environment is supported
|
|
ansible.builtin.assert:
|
|
that:
|
|
- system_cfg.features.desktop.environment in (bootstrap_desktop_packages[os_family] | default({}))
|
|
fail_msg: >-
|
|
Desktop environment '{{ system_cfg.features.desktop.environment }}'
|
|
is not defined for os_family '{{ os_family }}'.
|
|
Supported: {{ (bootstrap_desktop_packages[os_family] | default({})).keys() | join(', ') }}
|
|
quiet: true
|
|
|
|
- name: Install desktop package groups
|
|
when: _desktop_groups | length > 0
|
|
ansible.builtin.command: >-
|
|
{{ chroot_command }} dnf --releasever={{ os_version_major }}
|
|
--setopt=install_weak_deps=False group install -y {{ _desktop_groups | join(' ') }}
|
|
register: _desktop_group_result
|
|
changed_when: _desktop_group_result.rc == 0
|
|
|
|
- name: Install desktop packages
|
|
when: _desktop_packages | length > 0
|
|
vars:
|
|
_install_commands:
|
|
RedHat: >-
|
|
{{ chroot_command }} dnf --releasever={{ os_version_major }}
|
|
--setopt=install_weak_deps=False install -y {{ _desktop_packages | join(' ') }}
|
|
Debian: >-
|
|
{{ chroot_command }} apt install -y --install-recommends {{ _desktop_packages | join(' ') }}
|
|
Archlinux: >-
|
|
pacstrap /mnt {{ _desktop_packages | join(' ') }}
|
|
ansible.builtin.command: "{{ _install_commands[os_family] }}"
|
|
register: _desktop_pkg_result
|
|
changed_when: _desktop_pkg_result.rc == 0
|