mirror of
https://github.com/fscotto/infra.git
synced 2026-09-28 03:03:49 +00:00
Remove obsolete desktop profiles
This commit is contained in:
@@ -2,11 +2,6 @@
|
||||
# Optional inventory overlay for VM tests. It is not loaded by ansible.cfg.
|
||||
all:
|
||||
children:
|
||||
platform_mint:
|
||||
hosts:
|
||||
minttest:
|
||||
ansible_connection: local
|
||||
|
||||
platform_freebsd:
|
||||
hosts:
|
||||
freebsdtest:
|
||||
@@ -14,21 +9,8 @@ all:
|
||||
|
||||
graphical_desktop:
|
||||
hosts:
|
||||
minttest:
|
||||
freebsdtest:
|
||||
|
||||
role_personal_workstation:
|
||||
hosts:
|
||||
minttest:
|
||||
|
||||
role_lab:
|
||||
hosts:
|
||||
freebsdtest:
|
||||
|
||||
desktop_cinnamon:
|
||||
hosts:
|
||||
minttest:
|
||||
|
||||
desktop_hyprland:
|
||||
desktop_niri:
|
||||
hosts:
|
||||
freebsdtest:
|
||||
|
||||
@@ -1,11 +1,5 @@
|
||||
---
|
||||
desktop_environment: minimal
|
||||
desktop_allow_display_manager_switch: false
|
||||
|
||||
desktop_display_manager_by_environment:
|
||||
minimal: emptty
|
||||
xfce: lightdm
|
||||
kde: sddm
|
||||
|
||||
desktop_sessions_enabled:
|
||||
- sway
|
||||
@@ -261,30 +255,6 @@ desktop_niri_dotfiles:
|
||||
dest: .config/niri/
|
||||
mode: preserve
|
||||
|
||||
desktop_xfce_dotfiles:
|
||||
- name: XFCE configuration
|
||||
src: .config/xfce4/
|
||||
dest: .config/xfce4/
|
||||
mode: preserve
|
||||
- name: XFCE Thunar custom actions
|
||||
src: .config/Thunar/uca.xfce.xml
|
||||
dest: .config/Thunar/uca.xml
|
||||
mode: "0644"
|
||||
- name: XFCE dark desktop background
|
||||
src: .local/share/backgrounds/xfce-dark.svg
|
||||
dest: .local/share/backgrounds/xfce-dark.svg
|
||||
mode: "0644"
|
||||
|
||||
desktop_xfce_managed_paths:
|
||||
- .config/xfce4
|
||||
- .local/share/backgrounds/xfce-dark.svg
|
||||
|
||||
xfce_theme_gtk: Yaru-blue-dark
|
||||
xfce_theme_icons: Papirus-Dark
|
||||
xfce_theme_wm: Greybird-dark
|
||||
xfce_font_ui: Liberation Sans 10
|
||||
xfce_font_monospace: Liberation Mono 11
|
||||
|
||||
desktop_flatpak_packages:
|
||||
- be.alexandervanhee.gradia
|
||||
- ch.protonmail.protonmail-bridge
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
---
|
||||
desktop_profile: cinnamon
|
||||
desktop_default_session: cinnamon
|
||||
|
||||
cinnamon_theme_gtk: Mint-Y-Dark-Aqua
|
||||
cinnamon_theme_icons: Mint-Y-Aqua
|
||||
cinnamon_font_ui: Sans 10
|
||||
cinnamon_font_monospace: Monospace 10
|
||||
|
||||
# WM-agnostic desktop dotfiles from desktop_common_dotfiles that do NOT apply to
|
||||
# Cinnamon: the autostart entry is the (removed) Protonmail mail bridge, and the
|
||||
# GTK theme script conflicts with Cinnamon's own dconf-managed theming.
|
||||
cinnamon_desktop_dotfiles_exclude:
|
||||
- XDG autostart entries
|
||||
- GTK theme setup script
|
||||
|
||||
cinnamon_dconf_settings:
|
||||
- key: /org/cinnamon/desktop/interface/gtk-theme
|
||||
value: "'{{ cinnamon_theme_gtk }}'"
|
||||
- key: /org/cinnamon/desktop/interface/icon-theme
|
||||
value: "'{{ cinnamon_theme_icons }}'"
|
||||
- key: /org/cinnamon/desktop/interface/font-name
|
||||
value: "'{{ cinnamon_font_ui }}'"
|
||||
- key: /org/cinnamon/desktop/interface/monospace-font-name
|
||||
value: "'{{ cinnamon_font_monospace }}'"
|
||||
- key: /org/cinnamon/desktop/interface/clock-use-24h
|
||||
value: "true"
|
||||
- key: /org/cinnamon/desktop/wm/preferences/button-layout
|
||||
value: "'menu:minimize,maximize,close'"
|
||||
@@ -102,13 +102,6 @@ freebsd_niri_packages:
|
||||
- wl-clipboard
|
||||
- xdg-desktop-portal-gtk
|
||||
|
||||
freebsd_lab_packages:
|
||||
- lldb
|
||||
- llvm
|
||||
- podman
|
||||
- qemu
|
||||
- smartmontools
|
||||
|
||||
freebsd_rc_conf:
|
||||
- name: dbus_enable
|
||||
value: "YES"
|
||||
|
||||
@@ -1,107 +0,0 @@
|
||||
---
|
||||
platform_profile: mint
|
||||
platform_family: debian
|
||||
platform_package_manager: apt
|
||||
platform_service_manager: systemd
|
||||
|
||||
# syncthing runs per-user via the packaged system unit template
|
||||
# (Debian/Mint ship syncthing@.service, parametrised by username).
|
||||
enabled_services:
|
||||
- "syncthing@{{ username }}.service"
|
||||
|
||||
mint_manage_flatpak: true
|
||||
mint_flatpak_remote_name: flathub
|
||||
mint_flatpak_remote_url: https://dl.flathub.org/repo/flathub.flatpakrepo
|
||||
|
||||
mint_packages_base:
|
||||
- ca-certificates
|
||||
- curl
|
||||
- flatpak
|
||||
- gpg
|
||||
- htop
|
||||
- make
|
||||
- python3-pip
|
||||
- ripgrep
|
||||
- rsync
|
||||
- shellcheck
|
||||
|
||||
mint_development_packages:
|
||||
- build-essential
|
||||
- clang
|
||||
- clang-format
|
||||
- clang-tools
|
||||
- cmake
|
||||
- gdb
|
||||
- libasan8
|
||||
- libubsan1
|
||||
- golang
|
||||
- nodejs
|
||||
- npm
|
||||
- pkg-config
|
||||
- python3-venv
|
||||
- valgrind
|
||||
|
||||
mint_desktop_common_packages:
|
||||
- croc
|
||||
- dconf-cli
|
||||
- deja-dup
|
||||
- firefox
|
||||
- fonts-liberation
|
||||
- fonts-noto-color-emoji
|
||||
- git-delta
|
||||
- gnome-keyring
|
||||
- libsecret-tools
|
||||
- mpv
|
||||
- pinentry-gnome3
|
||||
- pinentry-gtk2
|
||||
- rclone
|
||||
- syncthing
|
||||
- thunderbird
|
||||
- tmux
|
||||
- xdg-user-dirs
|
||||
- yt-dlp
|
||||
|
||||
mint_emacs_packages:
|
||||
- autoconf
|
||||
- automake
|
||||
- emacs
|
||||
- hunspell
|
||||
- hunspell-it
|
||||
- libfreetype-dev
|
||||
- libpoppler-glib-dev
|
||||
- libpoppler-private-dev
|
||||
- libtool-bin
|
||||
- libvterm-dev
|
||||
- libx11-dev
|
||||
|
||||
mint_cinnamon_packages:
|
||||
- cinnamon
|
||||
- cinnamon-control-center
|
||||
- cinnamon-screensaver
|
||||
- lightdm
|
||||
- slick-greeter
|
||||
- xdg-desktop-portal
|
||||
- xdg-desktop-portal-gtk
|
||||
|
||||
mint_personal_workstation_packages:
|
||||
- libreoffice
|
||||
- meld
|
||||
- pdfarranger
|
||||
- vim
|
||||
|
||||
mint_flatpak_packages:
|
||||
- ch.protonmail.protonmail-bridge
|
||||
- com.calibre_ebook.calibre
|
||||
- com.spotify.Client
|
||||
- org.telegram.desktop
|
||||
|
||||
# Nerd Fonts referenced by the desktop configs deployed on Mint. Debian has no
|
||||
# equivalent of Void's nerd-fonts-ttf package, so they are fetched from the
|
||||
# upstream ryanoasis/nerd-fonts release.
|
||||
mint_nerd_fonts_version: v3.3.0
|
||||
mint_nerd_fonts:
|
||||
- Hack
|
||||
- JetBrainsMono
|
||||
- Iosevka
|
||||
- UbuntuSans
|
||||
- NerdFontsSymbolsOnly
|
||||
@@ -1,11 +0,0 @@
|
||||
---
|
||||
machine_role: lab
|
||||
role_profile: lab
|
||||
role_stability: experimental
|
||||
experimental_profile: true
|
||||
|
||||
lab_workspace_directories:
|
||||
- path: "{{ user_home }}/Lab"
|
||||
mode: "0755"
|
||||
- path: "{{ user_home }}/Scratch"
|
||||
mode: "0755"
|
||||
@@ -141,45 +141,6 @@ desktop_minimal_packages:
|
||||
- xfce-polkit
|
||||
- xournalpp
|
||||
|
||||
desktop_kde_packages:
|
||||
- ark
|
||||
- dolphin
|
||||
- ffmpegthumbs
|
||||
- gwenview
|
||||
- kate
|
||||
- kde-plasma
|
||||
- kleopatra
|
||||
- konsole
|
||||
- okular
|
||||
- polkit-kde-agent
|
||||
- print-manager
|
||||
- sddm
|
||||
- skanpage
|
||||
- spectacle
|
||||
|
||||
desktop_xfce_packages:
|
||||
- blueman
|
||||
- gnome-keyring
|
||||
- greybird-themes
|
||||
- gvfs
|
||||
- gvfs-cdda
|
||||
- gvfs-mtp
|
||||
- gvfs-smb
|
||||
- lightdm
|
||||
- lightdm-gtk-greeter
|
||||
- network-manager-applet
|
||||
- papirus-icon-theme
|
||||
- seahorse
|
||||
- thunar-archive-plugin
|
||||
- xarchiver
|
||||
- xdg-desktop-portal-gtk
|
||||
- xfce4
|
||||
- xfce4-clipman-plugin
|
||||
- xfce4-pulseaudio-plugin
|
||||
- xfce4-screenshooter
|
||||
- xfce4-whiskermenu-plugin
|
||||
- xorg
|
||||
|
||||
desktop_sway_packages:
|
||||
- cliphist
|
||||
- dunst
|
||||
@@ -238,12 +199,6 @@ desktop_niri_packages:
|
||||
- xdg-desktop-portal-gtk
|
||||
- xorg-server-xwayland
|
||||
|
||||
void_lab_packages:
|
||||
- llvm
|
||||
- podman
|
||||
- qemu
|
||||
- smartmontools
|
||||
|
||||
profile_packages:
|
||||
- bash-language-server
|
||||
- bluez
|
||||
|
||||
@@ -11,9 +11,6 @@ all:
|
||||
nymph:
|
||||
ansible_connection: local
|
||||
|
||||
platform_mint:
|
||||
hosts: {}
|
||||
|
||||
platform_freebsd:
|
||||
hosts: {}
|
||||
|
||||
@@ -41,9 +38,6 @@ all:
|
||||
ikaros:
|
||||
ansible_connection: local
|
||||
|
||||
role_lab:
|
||||
hosts: {}
|
||||
|
||||
desktop_sway:
|
||||
hosts: {}
|
||||
|
||||
@@ -60,9 +54,6 @@ all:
|
||||
nymph:
|
||||
ansible_connection: local
|
||||
|
||||
desktop_cinnamon:
|
||||
hosts: {}
|
||||
|
||||
ubuntu:
|
||||
children:
|
||||
workstation_dev_wsl:
|
||||
|
||||
@@ -22,11 +22,6 @@
|
||||
if 'desktop_niri' in group_names
|
||||
else []
|
||||
)
|
||||
+ (
|
||||
(freebsd_lab_packages | default([]))
|
||||
if 'role_lab' in group_names
|
||||
else []
|
||||
)
|
||||
+ (host_packages | default([]))
|
||||
)
|
||||
| unique
|
||||
|
||||
@@ -1,88 +0,0 @@
|
||||
---
|
||||
- name: Refresh apt package cache on Linux Mint
|
||||
tags: [packages]
|
||||
ansible.builtin.apt:
|
||||
update_cache: true
|
||||
cache_valid_time: 3600
|
||||
|
||||
- name: Install packages on Linux Mint
|
||||
tags: [packages]
|
||||
ansible.builtin.apt:
|
||||
name: >-
|
||||
{{
|
||||
(
|
||||
(common_packages | default([]))
|
||||
+ (mint_packages_base | default([]))
|
||||
+ (mint_development_packages | default([]))
|
||||
+ (
|
||||
(mint_desktop_common_packages | default([]))
|
||||
if 'graphical_desktop' in group_names
|
||||
else []
|
||||
)
|
||||
+ (
|
||||
(mint_emacs_packages | default([]))
|
||||
if (
|
||||
'graphical_desktop' in group_names
|
||||
and (emacs_enabled | default(false) | bool)
|
||||
)
|
||||
else []
|
||||
)
|
||||
+ (
|
||||
(mint_cinnamon_packages | default([]))
|
||||
if 'desktop_cinnamon' in group_names
|
||||
else []
|
||||
)
|
||||
+ (
|
||||
(mint_personal_workstation_packages | default([]))
|
||||
if 'role_personal_workstation' in group_names
|
||||
else []
|
||||
)
|
||||
+ (host_packages | default([]))
|
||||
)
|
||||
| unique
|
||||
}}
|
||||
state: present
|
||||
|
||||
- name: Ensure Flathub remote is configured on Linux Mint
|
||||
tags: [packages]
|
||||
community.general.flatpak_remote:
|
||||
name: "{{ mint_flatpak_remote_name | default('flathub') }}"
|
||||
state: present
|
||||
flatpakrepo_url: "{{ mint_flatpak_remote_url | default('https://dl.flathub.org/repo/flathub.flatpakrepo') }}"
|
||||
when:
|
||||
- mint_manage_flatpak | default(true)
|
||||
- >-
|
||||
(
|
||||
(mint_flatpak_packages | default([]))
|
||||
+ (personal_workstation_flatpak_packages | default([]))
|
||||
) | length > 0
|
||||
|
||||
- name: Install Linux Mint Flatpak applications
|
||||
tags: [packages]
|
||||
community.general.flatpak:
|
||||
name: >-
|
||||
{{
|
||||
(
|
||||
(mint_flatpak_packages | default([]))
|
||||
+ (
|
||||
(personal_workstation_flatpak_packages | default([]))
|
||||
if 'role_personal_workstation' in group_names
|
||||
else []
|
||||
)
|
||||
)
|
||||
| unique
|
||||
}}
|
||||
state: present
|
||||
remote: "{{ mint_flatpak_remote_name | default('flathub') }}"
|
||||
method: system
|
||||
when:
|
||||
- mint_manage_flatpak | default(true)
|
||||
- >-
|
||||
(
|
||||
(mint_flatpak_packages | default([]))
|
||||
+ (
|
||||
(personal_workstation_flatpak_packages | default([]))
|
||||
if 'role_personal_workstation' in group_names
|
||||
else []
|
||||
)
|
||||
) | length > 0
|
||||
@@ -51,15 +51,7 @@
|
||||
ansible.builtin.set_fact:
|
||||
packages_void_selected_desktop_packages: >-
|
||||
{{
|
||||
(
|
||||
(desktop_minimal_packages | default([]))
|
||||
if (desktop_environment | default('minimal')) == 'minimal'
|
||||
else (
|
||||
(desktop_xfce_packages | default([]))
|
||||
if (desktop_environment | default('minimal')) == 'xfce'
|
||||
else (desktop_kde_packages | default([]))
|
||||
)
|
||||
)
|
||||
(desktop_minimal_packages | default([]))
|
||||
+ (
|
||||
(desktop_sway_packages | default([]))
|
||||
if (
|
||||
@@ -97,12 +89,10 @@
|
||||
+ (desktop_sway_packages | default([]))
|
||||
+ (desktop_hyprland_packages | default([]))
|
||||
+ (desktop_niri_packages | default([]))
|
||||
+ (desktop_xfce_packages | default([]))
|
||||
+ (desktop_kde_packages | default([]))
|
||||
)
|
||||
| unique
|
||||
| difference(packages_void_selected_desktop_packages)
|
||||
| difference(desktop_display_manager_by_environment.values() | list)
|
||||
| difference(['emptty'])
|
||||
}}
|
||||
|
||||
- name: Install packages on Void Linux
|
||||
@@ -118,7 +108,6 @@
|
||||
+ (desktop_common_packages | default([]))
|
||||
+ ((desktop_emacs_packages | default([])) if (emacs_enabled | default(false) | bool) else [])
|
||||
+ (packages_void_selected_desktop_packages | default([]))
|
||||
+ ((void_lab_packages | default([])) if 'role_lab' in group_names else [])
|
||||
+ (host_packages | default([]))
|
||||
)
|
||||
| unique
|
||||
@@ -129,7 +118,7 @@
|
||||
- name: Check whether the selected display manager is active
|
||||
tags: [packages, display-manager]
|
||||
ansible.builtin.stat:
|
||||
path: "/var/service/{{ desktop_display_manager_by_environment[desktop_environment | default('minimal')] }}"
|
||||
path: /var/service/emptty
|
||||
register: packages_void_selected_display_manager
|
||||
|
||||
- name: Remove packages managed by the inactive desktop environment
|
||||
@@ -140,9 +129,7 @@
|
||||
update_cache: false
|
||||
when:
|
||||
- (packages_void_inactive_desktop_packages | default([])) | length > 0
|
||||
- >-
|
||||
packages_void_selected_display_manager.stat.exists
|
||||
or (desktop_allow_display_manager_switch | default(false))
|
||||
- packages_void_selected_display_manager.stat.exists
|
||||
|
||||
- name: Remove host-absent packages on Void Linux
|
||||
tags: [packages]
|
||||
|
||||
@@ -1,231 +0,0 @@
|
||||
---
|
||||
- name: Ensure Cinnamon user config directories exist
|
||||
tags: [dotfiles, dotfiles:desktop, cinnamon]
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "0755"
|
||||
loop:
|
||||
- "{{ user_home }}/.config"
|
||||
- "{{ user_home }}/.local"
|
||||
- "{{ user_home }}/.local/share"
|
||||
- "{{ user_home }}/.local/bin"
|
||||
- "{{ user_home }}/.local/state"
|
||||
- "{{ user_home }}/.bashrc.d"
|
||||
- "{{ user_home }}/.tmux"
|
||||
- "{{ user_home }}/.tmux/bin"
|
||||
- "{{ user_home }}/.tmux/plugins"
|
||||
|
||||
- name: Apply Cinnamon dconf settings
|
||||
tags: [cinnamon]
|
||||
community.general.dconf:
|
||||
key: "{{ item.key }}"
|
||||
value: "{{ item.value }}"
|
||||
state: present
|
||||
become: true
|
||||
become_user: "{{ username }}"
|
||||
environment:
|
||||
HOME: "{{ user_home }}"
|
||||
loop: "{{ cinnamon_dconf_settings | default([]) }}"
|
||||
loop_control:
|
||||
label: "{{ item.key }}"
|
||||
|
||||
- name: Ensure Emacs config directory exists
|
||||
tags: [dotfiles, dotfiles:desktop, emacs]
|
||||
ansible.builtin.file:
|
||||
path: "{{ user_home }}/.emacs.d"
|
||||
state: directory
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "0755"
|
||||
when: emacs_enabled | default(false) | bool
|
||||
|
||||
- name: Ensure GnuPG directory exists
|
||||
tags: [dotfiles, dotfiles:desktop, git]
|
||||
ansible.builtin.file:
|
||||
path: "{{ user_home }}/.gnupg"
|
||||
state: directory
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "0700"
|
||||
|
||||
- name: Ensure private user directories exist
|
||||
tags: [dotfiles, dotfiles:desktop]
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "0700"
|
||||
loop:
|
||||
- "{{ user_home }}/.ssh"
|
||||
- "{{ user_home }}/.local/state/ssh/sockets"
|
||||
|
||||
- name: Copy Emacs desktop dotfiles
|
||||
tags: [dotfiles, dotfiles:desktop, emacs]
|
||||
ansible.builtin.copy:
|
||||
src: "{{ playbook_dir }}/../dotfiles/desktop/{{ item.src }}"
|
||||
dest: "{{ user_home }}/{{ item.dest }}"
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "{{ item.mode }}"
|
||||
loop: "{{ desktop_emacs_dotfiles | default([]) }}"
|
||||
when: emacs_enabled | default(false) | bool
|
||||
loop_control:
|
||||
label: "{{ item.dest }}"
|
||||
|
||||
- name: Copy WM-agnostic common desktop dotfiles
|
||||
tags: [dotfiles, dotfiles:desktop]
|
||||
ansible.builtin.copy:
|
||||
src: "{{ playbook_dir }}/../dotfiles/desktop/{{ item.src }}"
|
||||
dest: "{{ user_home }}/{{ item.dest }}"
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "{{ item.mode }}"
|
||||
loop: >-
|
||||
{{
|
||||
desktop_common_dotfiles
|
||||
| default([])
|
||||
| rejectattr('name', 'in', cinnamon_desktop_dotfiles_exclude | default([]))
|
||||
| list
|
||||
}}
|
||||
loop_control:
|
||||
label: "{{ item.dest }}"
|
||||
|
||||
- name: Copy gpg-agent configuration
|
||||
tags: [dotfiles, dotfiles:desktop, git]
|
||||
ansible.builtin.copy:
|
||||
src: "{{ playbook_dir }}/../dotfiles/desktop/.gnupg/gpg-agent.conf"
|
||||
dest: "{{ user_home }}/.gnupg/gpg-agent.conf"
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "0600"
|
||||
|
||||
- name: Render git configuration with private values
|
||||
tags: [dotfiles, dotfiles:desktop, git]
|
||||
ansible.builtin.template:
|
||||
src: desktop/.gitconfig.j2
|
||||
dest: "{{ user_home }}/.gitconfig"
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "0644"
|
||||
|
||||
- name: Bootstrap tmux plugin manager checkout
|
||||
tags: [dotfiles, dotfiles:desktop, tmux]
|
||||
ansible.builtin.git:
|
||||
repo: https://github.com/tmux-plugins/tpm
|
||||
dest: "{{ user_home }}/.tmux/plugins/tpm"
|
||||
version: master
|
||||
update: true
|
||||
become_user: "{{ username }}"
|
||||
environment:
|
||||
HOME: "{{ user_home }}"
|
||||
|
||||
- name: Install tmux plugins through TPM
|
||||
tags: [dotfiles, dotfiles:desktop, tmux]
|
||||
ansible.builtin.shell: |
|
||||
set -e
|
||||
tmux start-server \; set-environment -g TMUX_PLUGIN_MANAGER_PATH "{{ user_home }}/.tmux/plugins/"
|
||||
"{{ user_home }}/.tmux/plugins/tpm/bin/install_plugins"
|
||||
become_user: "{{ username }}"
|
||||
environment:
|
||||
HOME: "{{ user_home }}"
|
||||
register: cinnamon_tmux_plugin_install
|
||||
changed_when: >-
|
||||
(cinnamon_tmux_plugin_install.stdout | default('')) is search('download success') or
|
||||
(cinnamon_tmux_plugin_install.stderr | default('')) is search('download success')
|
||||
|
||||
- name: Install desktop npm packages
|
||||
tags: [packages, npm]
|
||||
community.general.npm:
|
||||
name: "{{ item.name }}"
|
||||
global: true
|
||||
state: "{{ item.state | default('present') }}"
|
||||
become: true
|
||||
loop: "{{ desktop_npm_packages | default([]) }}"
|
||||
when: desktop_npm_packages | length > 0
|
||||
loop_control:
|
||||
label: "{{ item.name }}"
|
||||
|
||||
- name: Ensure /usr/src is writable for source builds
|
||||
tags: [packages]
|
||||
ansible.builtin.file:
|
||||
path: /usr/src
|
||||
state: directory
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "0755"
|
||||
|
||||
- name: Build and install the gf debugger frontend from source
|
||||
tags: [packages]
|
||||
ansible.builtin.include_tasks:
|
||||
file: "{{ role_path }}/../profile_desktop_common/tasks/source_tool.yml"
|
||||
apply:
|
||||
tags: [packages]
|
||||
loop: >-
|
||||
{{
|
||||
desktop_source_tools
|
||||
| default([])
|
||||
| selectattr('name', 'equalto', 'gf')
|
||||
| list
|
||||
}}
|
||||
loop_control:
|
||||
loop_var: source_tool
|
||||
label: "{{ source_tool.name }}"
|
||||
|
||||
- name: Ensure Nerd Fonts base directory exists
|
||||
tags: [packages, fonts]
|
||||
ansible.builtin.file:
|
||||
path: /usr/local/share/fonts/nerd-fonts
|
||||
state: directory
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0755"
|
||||
become: true
|
||||
|
||||
- name: Ensure per-font Nerd Fonts directories exist
|
||||
tags: [packages, fonts]
|
||||
ansible.builtin.file:
|
||||
path: "/usr/local/share/fonts/nerd-fonts/{{ item }}"
|
||||
state: directory
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0755"
|
||||
become: true
|
||||
loop: "{{ mint_nerd_fonts | default([]) }}"
|
||||
|
||||
- name: Download Nerd Font archives
|
||||
tags: [packages, fonts]
|
||||
ansible.builtin.get_url:
|
||||
url: "https://github.com/ryanoasis/nerd-fonts/releases/download/{{ mint_nerd_fonts_version }}/{{ item }}.zip"
|
||||
dest: "/usr/local/share/fonts/nerd-fonts/{{ item }}.zip"
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0644"
|
||||
become: true
|
||||
loop: "{{ mint_nerd_fonts | default([]) }}"
|
||||
loop_control:
|
||||
label: "{{ item }}"
|
||||
|
||||
- name: Extract Nerd Font archives
|
||||
tags: [packages, fonts]
|
||||
ansible.builtin.unarchive:
|
||||
src: "/usr/local/share/fonts/nerd-fonts/{{ item }}.zip"
|
||||
dest: "/usr/local/share/fonts/nerd-fonts/{{ item }}"
|
||||
remote_src: true
|
||||
owner: root
|
||||
group: root
|
||||
become: true
|
||||
loop: "{{ mint_nerd_fonts | default([]) }}"
|
||||
loop_control:
|
||||
label: "{{ item }}"
|
||||
register: cinnamon_nerd_fonts_extract
|
||||
|
||||
- name: Refresh system font cache after installing Nerd Fonts
|
||||
tags: [packages, fonts]
|
||||
ansible.builtin.command: fc-cache -f
|
||||
become: true
|
||||
changed_when: false
|
||||
when: cinnamon_nerd_fonts_extract is changed
|
||||
@@ -3,18 +3,12 @@
|
||||
tags: [always]
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- (desktop_environment | default('minimal')) in ['minimal', 'xfce', 'kde']
|
||||
- >-
|
||||
(desktop_environment | default('minimal')) != 'minimal'
|
||||
or (desktop_sessions_enabled | default([]) | length > 0)
|
||||
- >-
|
||||
(desktop_environment | default('minimal')) != 'minimal'
|
||||
or (desktop_sessions_enabled | default([]) | difference(['sway', 'hyprland', 'niri']) | length == 0)
|
||||
- >-
|
||||
(desktop_environment | default('minimal')) != 'minimal'
|
||||
or desktop_default_session in (desktop_sessions_enabled | default([]))
|
||||
- (desktop_environment | default('minimal')) == 'minimal'
|
||||
- (desktop_sessions_enabled | default([]) | length > 0)
|
||||
- (desktop_sessions_enabled | default([]) | difference(['sway', 'hyprland', 'niri']) | length == 0)
|
||||
- desktop_default_session in (desktop_sessions_enabled | default([]))
|
||||
fail_msg: >-
|
||||
desktop_environment must be minimal, xfce, or kde. Minimal desktops also require
|
||||
desktop_environment must be minimal. Minimal desktops also require
|
||||
desktop_default_session to be included in desktop_sessions_enabled.
|
||||
|
||||
- name: Configure elogind to suspend on lid close
|
||||
@@ -466,14 +460,7 @@
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0644"
|
||||
when: (desktop_environment | default('minimal')) in ['minimal', 'xfce']
|
||||
|
||||
- name: Remove minimal Qt theme override for KDE
|
||||
tags: [theme]
|
||||
ansible.builtin.file:
|
||||
path: /etc/profile.d/10-qt-theme.sh
|
||||
state: absent
|
||||
when: (desktop_environment | default('minimal')) == 'kde'
|
||||
when: (desktop_environment | default('minimal')) == 'minimal'
|
||||
|
||||
- name: Ensure flathub remote is configured
|
||||
tags: [packages]
|
||||
|
||||
@@ -1,60 +0,0 @@
|
||||
---
|
||||
- name: Check whether SDDM is the active runit display manager
|
||||
tags: [packages, services, kde, display-manager]
|
||||
ansible.builtin.stat:
|
||||
path: /var/service/sddm
|
||||
register: profile_desktop_kde_sddm_service
|
||||
when: (desktop_environment | default('minimal')) == 'kde'
|
||||
|
||||
- name: Copy KDE MIME application defaults
|
||||
tags: [dotfiles, dotfiles:desktop, kde]
|
||||
ansible.builtin.copy:
|
||||
src: "{{ playbook_dir }}/../dotfiles/desktop/.config/mimeapps.kde.list"
|
||||
dest: "{{ user_home }}/.config/mimeapps.list"
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "0644"
|
||||
when: (desktop_environment | default('minimal')) == 'kde'
|
||||
|
||||
- name: Remove minimal desktop user configuration managed by Ansible
|
||||
tags: [dotfiles, dotfiles:desktop, kde]
|
||||
ansible.builtin.file:
|
||||
path: "{{ user_home }}/{{ item }}"
|
||||
state: absent
|
||||
loop: >-
|
||||
{{
|
||||
(desktop_minimal_managed_paths | default([]))
|
||||
+ (desktop_xfce_managed_paths | default([]))
|
||||
}}
|
||||
loop_control:
|
||||
label: "{{ item }}"
|
||||
when:
|
||||
- (desktop_environment | default('minimal')) == 'kde'
|
||||
- profile_desktop_kde_sddm_service.stat.exists
|
||||
|
||||
- name: Remove minimal desktop portal preferences
|
||||
tags: [packages, services, kde, portal]
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: absent
|
||||
loop:
|
||||
- /etc/xdg/xdg-desktop-portal/hyprland-portals.conf
|
||||
- /etc/xdg/xdg-desktop-portal/sway-portals.conf
|
||||
- /etc/xdg/xdg-desktop-portal/xfce-portals.conf
|
||||
when:
|
||||
- (desktop_environment | default('minimal')) == 'kde'
|
||||
- profile_desktop_kde_sddm_service.stat.exists
|
||||
|
||||
- name: Remove inactive emptty and minimal session launchers
|
||||
tags: [packages, services, kde, display-manager]
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: absent
|
||||
loop:
|
||||
- /etc/emptty
|
||||
- /etc/lightdm/lightdm.conf.d/50-xfce.conf
|
||||
- /usr/local/bin/start-hyprland-session
|
||||
- /usr/local/bin/start-sway
|
||||
when:
|
||||
- (desktop_environment | default('minimal')) == 'kde'
|
||||
- profile_desktop_kde_sddm_service.stat.exists
|
||||
@@ -1,223 +0,0 @@
|
||||
---
|
||||
- name: Inspect configured desktop display manager for XFCE cleanup gates
|
||||
tags: [always, packages, services, xfce, display-manager]
|
||||
ansible.builtin.stat:
|
||||
path: "/var/service/{{ desktop_display_manager_by_environment[desktop_environment | default('minimal')] }}"
|
||||
register: profile_desktop_xfce_selected_display_manager
|
||||
|
||||
- name: Ensure XFCE user configuration directories exist
|
||||
tags: [dotfiles, dotfiles:desktop, xfce]
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "0755"
|
||||
loop:
|
||||
- "{{ user_home }}/.config/xfce4"
|
||||
- "{{ user_home }}/.config/xfce4/terminal"
|
||||
- "{{ user_home }}/.config/xfce4/xfconf"
|
||||
- "{{ user_home }}/.config/xfce4/xfconf/xfce-perchannel-xml"
|
||||
- "{{ user_home }}/.config/Thunar"
|
||||
- "{{ user_home }}/.local/share/backgrounds"
|
||||
when: (desktop_environment | default('minimal')) == 'xfce'
|
||||
|
||||
- name: Copy XFCE desktop dotfiles
|
||||
tags: [dotfiles, dotfiles:desktop, xfce]
|
||||
ansible.builtin.copy:
|
||||
src: "{{ playbook_dir }}/../dotfiles/desktop/{{ item.src }}"
|
||||
dest: "{{ user_home }}/{{ item.dest }}"
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "{{ item.mode }}"
|
||||
loop: "{{ desktop_xfce_dotfiles | default([]) }}"
|
||||
loop_control:
|
||||
label: "{{ item.dest }}"
|
||||
when: (desktop_environment | default('minimal')) == 'xfce'
|
||||
|
||||
- name: Render XFCE themed configuration
|
||||
tags: [dotfiles, dotfiles:desktop, xfce]
|
||||
ansible.builtin.template:
|
||||
src: "{{ item.src }}"
|
||||
dest: "{{ user_home }}/{{ item.dest }}"
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "0644"
|
||||
loop:
|
||||
- src: xsettings.xml.j2
|
||||
dest: .config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml
|
||||
- src: xfwm4.xml.j2
|
||||
dest: .config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml
|
||||
- src: xfce4-desktop.xml.j2
|
||||
dest: .config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml
|
||||
- src: terminalrc.j2
|
||||
dest: .config/xfce4/terminal/terminalrc
|
||||
loop_control:
|
||||
label: "{{ item.dest }}"
|
||||
when: (desktop_environment | default('minimal')) == 'xfce'
|
||||
|
||||
- name: Copy XFCE MIME application defaults
|
||||
tags: [dotfiles, dotfiles:desktop, xfce]
|
||||
ansible.builtin.copy:
|
||||
src: "{{ playbook_dir }}/../dotfiles/desktop/.config/mimeapps.list"
|
||||
dest: "{{ user_home }}/.config/mimeapps.list"
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "0644"
|
||||
when: (desktop_environment | default('minimal')) == 'xfce'
|
||||
|
||||
- name: Make Thunderbird the XFCE mail handler
|
||||
tags: [dotfiles, dotfiles:desktop, xfce]
|
||||
community.general.ini_file:
|
||||
path: "{{ user_home }}/.config/mimeapps.list"
|
||||
section: "{{ item.section }}"
|
||||
option: x-scheme-handler/mailto
|
||||
value: "{{ item.value }}"
|
||||
no_extra_spaces: true
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "0644"
|
||||
loop:
|
||||
- section: Default Applications
|
||||
value: org.mozilla.Thunderbird.desktop
|
||||
- section: Added Associations
|
||||
value: org.mozilla.Thunderbird.desktop;
|
||||
when: (desktop_environment | default('minimal')) == 'xfce'
|
||||
|
||||
- name: Ensure LightDM configuration directories exist
|
||||
tags: [packages, services, xfce, display-manager]
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0755"
|
||||
loop:
|
||||
- /etc/lightdm
|
||||
- /etc/lightdm/lightdm.conf.d
|
||||
when: (desktop_environment | default('minimal')) == 'xfce'
|
||||
|
||||
- name: Configure LightDM for the XFCE session
|
||||
tags: [packages, services, xfce, display-manager]
|
||||
ansible.builtin.template:
|
||||
src: lightdm-xfce.conf.j2
|
||||
dest: /etc/lightdm/lightdm.conf.d/50-xfce.conf
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0644"
|
||||
register: profile_desktop_xfce_lightdm_config
|
||||
when: (desktop_environment | default('minimal')) == 'xfce'
|
||||
|
||||
- name: Configure the LightDM GTK greeter
|
||||
tags: [packages, services, xfce, display-manager]
|
||||
ansible.builtin.template:
|
||||
src: lightdm-gtk-greeter.conf.j2
|
||||
dest: /etc/lightdm/lightdm-gtk-greeter.conf
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0644"
|
||||
register: profile_desktop_xfce_lightdm_greeter_config
|
||||
when: (desktop_environment | default('minimal')) == 'xfce'
|
||||
|
||||
- name: Report deferred LightDM configuration activation
|
||||
tags: [packages, services, xfce, display-manager]
|
||||
ansible.builtin.debug:
|
||||
msg: >-
|
||||
LightDM configuration changed. Apply the display-manager switch or restart
|
||||
LightDM from a TTY or SSH session; it is not restarted automatically.
|
||||
when:
|
||||
- (desktop_environment | default('minimal')) == 'xfce'
|
||||
- >-
|
||||
profile_desktop_xfce_lightdm_config is changed
|
||||
or profile_desktop_xfce_lightdm_greeter_config is changed
|
||||
|
||||
- name: Manage gnome-keyring auth hook for LightDM
|
||||
tags: [packages, services, xfce]
|
||||
ansible.builtin.lineinfile:
|
||||
path: /etc/pam.d/lightdm
|
||||
insertafter: EOF
|
||||
line: "auth optional pam_gnome_keyring.so"
|
||||
state: present
|
||||
when: (desktop_environment | default('minimal')) == 'xfce'
|
||||
|
||||
- name: Manage gnome-keyring session hook for LightDM
|
||||
tags: [packages, services, xfce]
|
||||
ansible.builtin.lineinfile:
|
||||
path: /etc/pam.d/lightdm
|
||||
insertafter: EOF
|
||||
line: "session optional pam_gnome_keyring.so auto_start"
|
||||
state: present
|
||||
when: (desktop_environment | default('minimal')) == 'xfce'
|
||||
|
||||
- name: Ensure XFCE portal configuration directory exists
|
||||
tags: [packages, services, xfce, portal]
|
||||
ansible.builtin.file:
|
||||
path: /etc/xdg/xdg-desktop-portal
|
||||
state: directory
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0755"
|
||||
when: (desktop_environment | default('minimal')) == 'xfce'
|
||||
|
||||
- name: Configure xdg-desktop-portal preferences for XFCE
|
||||
tags: [packages, services, xfce, portal]
|
||||
ansible.builtin.copy:
|
||||
dest: /etc/xdg/xdg-desktop-portal/xfce-portals.conf
|
||||
content: |
|
||||
[preferred]
|
||||
default=gtk
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0644"
|
||||
when: (desktop_environment | default('minimal')) == 'xfce'
|
||||
|
||||
- name: Remove minimal desktop user configuration after switching to XFCE
|
||||
tags: [dotfiles, dotfiles:desktop, xfce]
|
||||
ansible.builtin.file:
|
||||
path: "{{ user_home }}/{{ item }}"
|
||||
state: absent
|
||||
loop: "{{ desktop_minimal_managed_paths | default([]) | difference(['.config/Thunar']) }}"
|
||||
loop_control:
|
||||
label: "{{ item }}"
|
||||
when:
|
||||
- (desktop_environment | default('minimal')) == 'xfce'
|
||||
- profile_desktop_xfce_selected_display_manager.stat.exists
|
||||
|
||||
- name: Remove minimal portal preferences and session launchers after switching to XFCE
|
||||
tags: [packages, services, xfce, portal, display-manager]
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: absent
|
||||
loop:
|
||||
- /etc/xdg/xdg-desktop-portal/hyprland-portals.conf
|
||||
- /etc/xdg/xdg-desktop-portal/sway-portals.conf
|
||||
- /etc/emptty
|
||||
- /usr/local/bin/start-hyprland-session
|
||||
- /usr/local/bin/start-sway
|
||||
when:
|
||||
- (desktop_environment | default('minimal')) == 'xfce'
|
||||
- profile_desktop_xfce_selected_display_manager.stat.exists
|
||||
|
||||
- name: Remove XFCE user configuration after switching to another profile
|
||||
tags: [dotfiles, dotfiles:desktop, xfce]
|
||||
ansible.builtin.file:
|
||||
path: "{{ user_home }}/{{ item }}"
|
||||
state: absent
|
||||
loop: "{{ desktop_xfce_managed_paths | default([]) }}"
|
||||
loop_control:
|
||||
label: "{{ item }}"
|
||||
when:
|
||||
- (desktop_environment | default('minimal')) != 'xfce'
|
||||
- profile_desktop_xfce_selected_display_manager.stat.exists
|
||||
|
||||
- name: Remove inactive XFCE portal and LightDM profile configuration
|
||||
tags: [packages, services, xfce, portal, display-manager]
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: absent
|
||||
loop:
|
||||
- /etc/xdg/xdg-desktop-portal/xfce-portals.conf
|
||||
- /etc/lightdm/lightdm.conf.d/50-xfce.conf
|
||||
when:
|
||||
- (desktop_environment | default('minimal')) != 'xfce'
|
||||
- profile_desktop_xfce_selected_display_manager.stat.exists
|
||||
@@ -1,7 +0,0 @@
|
||||
[greeter]
|
||||
theme-name={{ xfce_theme_gtk }}
|
||||
icon-theme-name={{ xfce_theme_icons }}
|
||||
font-name={{ xfce_font_ui }}
|
||||
background=#050505
|
||||
clock-format=%a %d %b, %H:%M
|
||||
indicators=~host;~spacer;~clock;~spacer;~session;~power
|
||||
@@ -1,3 +0,0 @@
|
||||
[Seat:*]
|
||||
greeter-session=lightdm-gtk-greeter
|
||||
user-session=xfce
|
||||
@@ -1,15 +0,0 @@
|
||||
[Configuration]
|
||||
FontName={{ xfce_font_monospace }}
|
||||
MiscUseSystemFont=FALSE
|
||||
MiscMenubarDefault=FALSE
|
||||
MiscToolbarDefault=FALSE
|
||||
MiscBordersDefault=TRUE
|
||||
ScrollingLines=10000
|
||||
BackgroundMode=TERMINAL_BACKGROUND_SOLID
|
||||
ColorForeground=#d8d8d8
|
||||
ColorBackground=#050505
|
||||
ColorCursor=#d8d8d8
|
||||
ColorSelection=#d8d8d8
|
||||
ColorSelectionUseDefault=FALSE
|
||||
ColorSelectionBackground=#3a5f7f
|
||||
ColorPalette=#050505;#8f3f3f;#5f7f5f;#8f7f3f;#3a5f7f;#6f4f7f;#3f7f7f;#d8d8d8;#777777;#bf5f5f;#7f9f7f;#af9f5f;#5f7f9f;#8f6f9f;#5f9f9f;#ffffff
|
||||
@@ -1,18 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<channel name="xfce4-desktop" version="1.0">
|
||||
<property name="backdrop" type="empty">
|
||||
<property name="screen0" type="empty">
|
||||
<property name="monitor0" type="empty">
|
||||
<property name="workspace0" type="empty">
|
||||
<property name="color-style" type="int" value="0"/>
|
||||
<property name="image-style" type="int" value="5"/>
|
||||
<property name="last-image" type="string" value="{{ user_home }}/.local/share/backgrounds/xfce-dark.svg"/>
|
||||
</property>
|
||||
</property>
|
||||
</property>
|
||||
</property>
|
||||
<property name="desktop-icons" type="empty">
|
||||
<property name="style" type="int" value="0"/>
|
||||
</property>
|
||||
</channel>
|
||||
@@ -1,21 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<channel name="xfwm4" version="1.0">
|
||||
<property name="general" type="empty">
|
||||
<property name="theme" type="string" value="{{ xfce_theme_wm }}"/>
|
||||
<property name="title_font" type="string" value="{{ xfce_font_ui }}"/>
|
||||
<property name="workspace_count" type="int" value="6"/>
|
||||
<property name="workspace_names" type="array">
|
||||
<value type="string" value="term"/>
|
||||
<value type="string" value="web"/>
|
||||
<value type="string" value="code"/>
|
||||
<value type="string" value="mail"/>
|
||||
<value type="string" value="ops"/>
|
||||
<value type="string" value="misc"/>
|
||||
</property>
|
||||
<property name="use_compositing" type="bool" value="false"/>
|
||||
<property name="click_to_focus" type="bool" value="true"/>
|
||||
<property name="focus_delay" type="int" value="250"/>
|
||||
<property name="raise_delay" type="int" value="250"/>
|
||||
</property>
|
||||
</channel>
|
||||
@@ -1,20 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<channel name="xsettings" version="1.0">
|
||||
<property name="Net" type="empty">
|
||||
<property name="ThemeName" type="string" value="{{ xfce_theme_gtk }}"/>
|
||||
<property name="IconThemeName" type="string" value="{{ xfce_theme_icons }}"/>
|
||||
</property>
|
||||
<property name="Gtk" type="empty">
|
||||
<property name="FontName" type="string" value="{{ xfce_font_ui }}"/>
|
||||
<property name="MonospaceFontName" type="string" value="{{ xfce_font_monospace }}"/>
|
||||
<property name="CursorThemeName" type="string" value="Yaru"/>
|
||||
<property name="DecorationLayout" type="string" value="menu:minimize,maximize,close"/>
|
||||
</property>
|
||||
<property name="Xft" type="empty">
|
||||
<property name="Antialias" type="int" value="1"/>
|
||||
<property name="Hinting" type="int" value="1"/>
|
||||
<property name="HintStyle" type="string" value="hintslight"/>
|
||||
<property name="RGBA" type="string" value="rgb"/>
|
||||
</property>
|
||||
</channel>
|
||||
@@ -1,12 +0,0 @@
|
||||
---
|
||||
- name: Ensure lab workspace directories exist
|
||||
tags: [dotfiles]
|
||||
ansible.builtin.file:
|
||||
path: "{{ item.path }}"
|
||||
state: directory
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "{{ item.mode }}"
|
||||
loop: "{{ lab_workspace_directories | default([]) }}"
|
||||
loop_control:
|
||||
label: "{{ item.path }}"
|
||||
@@ -15,104 +15,10 @@
|
||||
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
|
||||
- name: Enable emptty display manager for Void desktops
|
||||
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 }}"
|
||||
src: /etc/sv/emptty
|
||||
dest: /var/service/emptty
|
||||
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))
|
||||
when: "'desktop' in group_names"
|
||||
|
||||
@@ -39,39 +39,8 @@
|
||||
- profile_desktop_sway
|
||||
- profile_desktop_hyprland
|
||||
- profile_desktop_niri
|
||||
- profile_desktop_kde
|
||||
- profile_desktop_xfce
|
||||
- profile_desktop_host
|
||||
|
||||
- name: Configure lab role on Void
|
||||
hosts: platform_void:&role_lab
|
||||
become: true
|
||||
|
||||
roles:
|
||||
- profile_lab
|
||||
|
||||
- name: Configure Linux Mint platform
|
||||
hosts: platform_mint
|
||||
become: true
|
||||
|
||||
roles:
|
||||
- packages_mint
|
||||
- services_systemd
|
||||
|
||||
- name: Configure personal workstation role on Linux Mint
|
||||
hosts: platform_mint:&role_personal_workstation
|
||||
become: true
|
||||
|
||||
roles:
|
||||
- profile_personal_workstation
|
||||
|
||||
- name: Configure Cinnamon desktop on Linux Mint
|
||||
hosts: platform_mint:&desktop_cinnamon
|
||||
become: true
|
||||
|
||||
roles:
|
||||
- profile_desktop_cinnamon
|
||||
|
||||
- name: Configure FreeBSD platform
|
||||
hosts: platform_freebsd
|
||||
become: true
|
||||
@@ -80,13 +49,6 @@
|
||||
- packages_freebsd
|
||||
- services_freebsd
|
||||
|
||||
- name: Configure lab role on FreeBSD
|
||||
hosts: platform_freebsd:&role_lab
|
||||
become: true
|
||||
|
||||
roles:
|
||||
- profile_lab
|
||||
|
||||
- name: Configure Niri desktop on FreeBSD
|
||||
hosts: platform_freebsd:&desktop_niri
|
||||
become: true
|
||||
|
||||
Reference in New Issue
Block a user