feat(bootstrap): per-os desktop apps, KDE plasma-login-manager and DM resolution
This commit is contained in:
@@ -9,6 +9,8 @@
|
||||
_family_pkgs: "{{ bootstrap_desktop_packages[os_family] | default({}) }}"
|
||||
_de_config: "{{ _family_pkgs[_de] | default({}) }}"
|
||||
_base: "{{ bootstrap_desktop_base_packages[os_family] | default([]) }}"
|
||||
_dm: "{{ system_cfg.features.desktop.display_manager | default('') }}"
|
||||
_dm_override_pkg: "{{ (bootstrap_dm_override_packages[_dm] | default({}))[os_family] | default('') }}"
|
||||
_requested_groups: "{{ system_cfg.features.desktop.groups | default([]) }}"
|
||||
_group_pkgs: >-
|
||||
{{
|
||||
@@ -20,16 +22,10 @@
|
||||
| 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_groups: "{{ _de_config.groups | default([]) }}"
|
||||
_desktop_packages: >-
|
||||
{{
|
||||
((_de_config.packages | default([])) + _base + _group_pkgs)
|
||||
((_de_config.packages | default([])) + _base + _group_pkgs + [_dm_override_pkg])
|
||||
| reject('equalto', '')
|
||||
| unique
|
||||
| list
|
||||
@@ -61,7 +57,8 @@
|
||||
{{ 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(' ') }}
|
||||
{{ chroot_command }} env DEBIAN_FRONTEND=noninteractive
|
||||
apt install -y --install-recommends {{ _desktop_packages | join(' ') }}
|
||||
Archlinux: >-
|
||||
pacstrap /mnt {{ _desktop_packages | join(' ') }}
|
||||
ansible.builtin.command: "{{ _install_commands[os_family] }}"
|
||||
|
||||
@@ -1,16 +1,41 @@
|
||||
---
|
||||
# Per-family desktop environment package definitions.
|
||||
# Keyed by os_family -> environment -> groups (dnf group install) / packages.
|
||||
# Wayland only: gnome, kde, sway, hyprland. No X11/xorg-server, no X11-only DEs.
|
||||
# DE sets carry the session bits + the DE-specific xdg portal backend; the
|
||||
# shared base below (fonts/audio/portal core/power/viewer apps) is layered on
|
||||
# top for every DE via bootstrap_desktop_base_packages.
|
||||
|
||||
# plasma-login-manager on Arch/Fedora44+ (Plasma 6.6), else sddm.
|
||||
bootstrap_kde_login_manager: >-
|
||||
{{
|
||||
'plasma-login-manager'
|
||||
if (os == 'archlinux' or (os == 'fedora' and (os_version | int) >= 44))
|
||||
else 'sddm'
|
||||
}}
|
||||
|
||||
# Native DMs ride in each DE's package set; only explicit non-native overrides
|
||||
# need a package here. ly is Arch-only (validation rejects it elsewhere first).
|
||||
bootstrap_dm_override_packages:
|
||||
ly:
|
||||
Archlinux: ly
|
||||
|
||||
# EL = non-fedora RedHat.
|
||||
bootstrap_os_is_el: "{{ os in ['almalinux', 'rocky', 'rhel'] }}"
|
||||
bootstrap_os_is_el10: "{{ bootstrap_os_is_el | bool and (os_version | default('0') | int) >= 10 }}"
|
||||
# EL10 renames (evince->papers, eog->loupe, ppd->tuned-ppd); fira-code + mpv absent on EL.
|
||||
bootstrap_desktop_browser: "{{ 'firefox-esr' if os == 'debian' else 'firefox' }}"
|
||||
bootstrap_desktop_pdf: "{{ 'papers' if bootstrap_os_is_el10 | bool else 'evince' }}"
|
||||
bootstrap_desktop_image: "{{ 'loupe' if bootstrap_os_is_el10 | bool else 'eog' }}"
|
||||
bootstrap_desktop_power: "{{ 'tuned-ppd' if bootstrap_os_is_el10 | bool else 'power-profiles-daemon' }}"
|
||||
bootstrap_desktop_redhat_codefont: "{{ '' if bootstrap_os_is_el | bool else 'fira-code-fonts' }}"
|
||||
bootstrap_desktop_redhat_video: "{{ '' if bootstrap_os_is_el | bool else 'mpv' }}"
|
||||
|
||||
bootstrap_desktop_packages:
|
||||
RedHat:
|
||||
gnome:
|
||||
groups:
|
||||
- workstation-product-environment
|
||||
packages: []
|
||||
groups: []
|
||||
packages:
|
||||
- gnome-shell
|
||||
- gnome-control-center
|
||||
- nautilus
|
||||
- gnome-session
|
||||
- gdm
|
||||
kde:
|
||||
groups: []
|
||||
packages:
|
||||
@@ -18,7 +43,7 @@ bootstrap_desktop_packages:
|
||||
- plasma-nm
|
||||
- plasma-pa
|
||||
- plasma-systemmonitor
|
||||
- sddm
|
||||
- "{{ bootstrap_kde_login_manager }}"
|
||||
- konsole
|
||||
- dolphin
|
||||
- kate
|
||||
@@ -41,7 +66,7 @@ bootstrap_desktop_packages:
|
||||
- plasma-desktop
|
||||
- plasma-nm
|
||||
- plasma-pa
|
||||
- sddm
|
||||
- "{{ bootstrap_kde_login_manager }}"
|
||||
- konsole
|
||||
- dolphin
|
||||
- kate
|
||||
@@ -62,7 +87,7 @@ bootstrap_desktop_packages:
|
||||
- plasma-desktop
|
||||
- plasma-nm
|
||||
- plasma-pa
|
||||
- sddm
|
||||
- "{{ bootstrap_kde_login_manager }}"
|
||||
- konsole
|
||||
- dolphin
|
||||
- kate
|
||||
@@ -102,26 +127,23 @@ bootstrap_desktop_packages:
|
||||
- qt6-wayland
|
||||
- bluez
|
||||
|
||||
# Shared desktop base, installed for EVERY DE whenever desktop.enabled.
|
||||
# Fonts (noto + emoji + one nerd font), audio stack (pipewire + wireplumber +
|
||||
# pipewire-pulse), xdg portal core, power-profiles-daemon, and viewer-only base
|
||||
# apps (browser, PDF/image/video viewers). DE metas (gnome/plasma) bundle their
|
||||
# own file manager + settings, so no file manager is added here - the wlroots
|
||||
# DE sets above carry their own (nautilus).
|
||||
# Installed for EVERY DE whenever desktop.enabled. No file manager here: DE metas
|
||||
# bundle their own and the wlroots sets above carry nautilus.
|
||||
bootstrap_desktop_base_packages:
|
||||
RedHat:
|
||||
- google-noto-sans-fonts
|
||||
- google-noto-emoji-fonts
|
||||
- fira-code-fonts
|
||||
- "{{ bootstrap_desktop_redhat_codefont }}"
|
||||
- pipewire
|
||||
- wireplumber
|
||||
- pipewire-pulseaudio
|
||||
- xdg-desktop-portal
|
||||
- power-profiles-daemon
|
||||
- "{{ bootstrap_desktop_power }}"
|
||||
- bluez
|
||||
- firefox
|
||||
- evince
|
||||
- eog
|
||||
- mpv
|
||||
- "{{ bootstrap_desktop_pdf }}"
|
||||
- "{{ bootstrap_desktop_image }}"
|
||||
- "{{ bootstrap_desktop_redhat_video }}"
|
||||
Debian:
|
||||
- fonts-noto
|
||||
- fonts-noto-color-emoji
|
||||
@@ -131,7 +153,8 @@ bootstrap_desktop_base_packages:
|
||||
- pipewire-pulse
|
||||
- xdg-desktop-portal
|
||||
- power-profiles-daemon
|
||||
- firefox-esr
|
||||
- bluez
|
||||
- "{{ bootstrap_desktop_browser }}"
|
||||
- evince
|
||||
- eog
|
||||
- mpv
|
||||
@@ -144,14 +167,14 @@ bootstrap_desktop_base_packages:
|
||||
- pipewire-pulse
|
||||
- xdg-desktop-portal
|
||||
- power-profiles-daemon
|
||||
- bluez
|
||||
- firefox
|
||||
- evince
|
||||
- loupe
|
||||
- mpv
|
||||
|
||||
# Opt-in package groups, selected per host via features.desktop.groups (a list
|
||||
# of group names). _desktop.yml installs the union of the requested groups'
|
||||
# packages. Empty selection by default.
|
||||
# Opt-in groups selected per host via features.desktop.groups; the union of the
|
||||
# requested groups' packages is installed. Empty selection by default.
|
||||
desktop_package_groups:
|
||||
dev:
|
||||
RedHat:
|
||||
|
||||
Reference in New Issue
Block a user