mirror of
https://github.com/fscotto/infra.git
synced 2026-05-30 15:39:58 +00:00
Enhance Sway/Noctalia integration and align desktop docs
- Add canonical usb-drive-manager plugin to Noctalia (symlink from official) - Remove nm-applet and blueman packages from nymph Sway session - Run udiskie without tray (backend for automount/LUKS, UI via usb-drive-manager) - Add screenOverrides support to Noctalia bar via inventory variables - Add host_packages_absent task to packages_void role - Update desktop docs with full plugin list and config layering - Add focused validation check for Sway/Noctalia bootstrap
This commit is contained in:
@@ -39,6 +39,7 @@ Ansible-driven personal infrastructure repo for Void desktops, Linux workstation
|
|||||||
- Server: `ansible-playbook ansible/site.yml --limit prometheus --check --diff`
|
- Server: `ansible-playbook ansible/site.yml --limit prometheus --check --diff`
|
||||||
- Focused checks:
|
- Focused checks:
|
||||||
- Emacs dotfiles only: `ansible-playbook ansible/site.yml --limit ikaros --tags emacs --check --diff` or `--limit nymph --tags emacs --check --diff`
|
- Emacs dotfiles only: `ansible-playbook ansible/site.yml --limit ikaros --tags emacs --check --diff` or `--limit nymph --tags emacs --check --diff`
|
||||||
|
- Sway/Noctalia bootstrap on nymph: `ansible-playbook ansible/site.yml --limit nymph --tags packages,dotfiles:desktop,sway --check --diff`
|
||||||
- Mail bootstrap: `sh -n scripts/bootstrap_mail.sh` and `shellcheck scripts/bootstrap_mail.sh`
|
- Mail bootstrap: `sh -n scripts/bootstrap_mail.sh` and `shellcheck scripts/bootstrap_mail.sh`
|
||||||
- Windows bootstrap parse: `pwsh -NoProfile -Command "[void][System.Management.Automation.Language.Parser]::ParseFile('scripts/bootstrap_windows_workstation.ps1', [ref]$null, [ref]$null)"`
|
- Windows bootstrap parse: `pwsh -NoProfile -Command "[void][System.Management.Automation.Language.Parser]::ParseFile('scripts/bootstrap_windows_workstation.ps1', [ref]$null, [ref]$null)"`
|
||||||
- Server compose render: `docker compose -f /opt/docker/server/docker-compose.yml config`
|
- Server compose render: `docker compose -f /opt/docker/server/docker-compose.yml config`
|
||||||
@@ -60,6 +61,10 @@ Ansible-driven personal infrastructure repo for Void desktops, Linux workstation
|
|||||||
- `dotfiles/desktop/.xinitrc`
|
- `dotfiles/desktop/.xinitrc`
|
||||||
- `dotfiles/desktop/.local/bin/start-sway-session`
|
- `dotfiles/desktop/.local/bin/start-sway-session`
|
||||||
- Do not auto-restart `emptty` during playbook runs on active desktop hosts; restart it manually from another TTY/SSH session if needed.
|
- Do not auto-restart `emptty` during playbook runs on active desktop hosts; restart it manually from another TTY/SSH session if needed.
|
||||||
|
- `profile_desktop_sway` owns the Sway session, Noctalia config rendering, and official plugin linking.
|
||||||
|
- Noctalia shared config lives in `dotfiles/desktop/.config/noctalia/`; bar monitors and `screenOverrides` come from inventory (`noctalia_bar_monitors`, `noctalia_screen_overrides`).
|
||||||
|
- On Sway hosts, `udiskie` is the backend for automount/LUKS but runs without tray; USB device UI is handled by `usb-drive-manager`.
|
||||||
|
- Do not re-introduce `network-manager-applet` or `blueman` on Sway hosts without an explicit host-specific reason.
|
||||||
|
|
||||||
## Workstation / Windows Notes
|
## Workstation / Windows Notes
|
||||||
- Native Linux workstation hosts can combine `workstation_host_linux` with an OS-specific dev group.
|
- Native Linux workstation hosts can combine `workstation_host_linux` with an OS-specific dev group.
|
||||||
|
|||||||
28
README.md
28
README.md
@@ -79,20 +79,22 @@ Macchine:
|
|||||||
|
|
||||||
Queste macchine condividono la stessa configurazione base desktop e vengono mantenute allineate tramite Ansible.
|
Queste macchine condividono la stessa configurazione base desktop e vengono mantenute allineate tramite Ansible.
|
||||||
|
|
||||||
Lo stato attuale del profilo desktop include, tra le altre cose:
|
Lo stato attuale del profilo desktop include, tra le altre cose:
|
||||||
|
|
||||||
- dotfiles comuni e desktop
|
- dotfiles comuni e desktop
|
||||||
- sessione i3 su `ikaros` e sessione SwayFX su `nymph`
|
- sessione i3 su `ikaros` e sessione Sway su `nymph`
|
||||||
- `emptty` con default host-specific per il desktop attivo su ogni host
|
- `emptty` con default host-specific per il desktop attivo su ogni host
|
||||||
- pacchetti Void Linux e servizi runit
|
- pacchetti Void Linux e servizi runit
|
||||||
- `turnstile` per i servizi utente, inclusi `emacs` e `ssh-agent`
|
- `turnstile` per i servizi utente, inclusi `emacs` e `ssh-agent`
|
||||||
- `ssh-agent` con socket stabile condiviso tra shell, SSH ed Emacs in `~/.local/state/ssh-agent/socket`
|
- `ssh-agent` con socket stabile condiviso tra shell, SSH ed Emacs in `~/.local/state/ssh-agent/socket`
|
||||||
- `.emacs.d` distribuito da un task dedicato Ansible con tag `emacs`
|
- `.emacs.d` distribuito da un task dedicato Ansible con tag `emacs`
|
||||||
- `tmux` con plugin gestiti da TPM al bootstrap del profilo desktop
|
- `tmux` con plugin gestiti da TPM al bootstrap del profilo desktop
|
||||||
- Flatpak con remoto Flathub
|
- Flatpak con remoto Flathub
|
||||||
- GNOME Keyring e bootstrap della posta via script dedicato
|
- GNOME Keyring e bootstrap della posta via script dedicato
|
||||||
- shell Noctalia per SwayFX su `nymph`, con plugin per clipboard, polkit e screenshot
|
- shell Noctalia su Sway su `nymph`, con plugin ufficiali per clipboard (`clipper`), polkit (`polkit-agent`), screenshot (`screenshot`) e gestione USB (`usb-drive-manager`); config condivisa in `dotfiles/desktop/.config/noctalia/` e `settings.json` renderizzato da template Ansible con variabili host-specifiche
|
||||||
- `kanshi` su `nymph` per il profilo monitor Wayland, con workspace Sway deterministici: in dual monitor `1` resta su `eDP-1` e `2-10` vanno su `DP-1`, mentre in laptop-only tutti tornano su `eDP-1`
|
- `udiskie` come backend per automount/LUKS su Sway, senza tray; la UI dei dispositivi removibili è demandata a `usb-drive-manager`
|
||||||
|
- `kanshi` su `nymph` per il profilo monitor Wayland, con workspace Sway deterministici: in dual monitor `1` resta su `eDP-1` e `2-10` vanno su `DP-1`, mentre in laptop-only tutti tornano su `eDP-1`
|
||||||
|
- monitor Noctalia e `screenOverrides` dichiarati in inventory (`noctalia_bar_monitors`, `noctalia_screen_overrides`) per host `nymph`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -298,6 +298,8 @@ desktop_sway_dotfiles:
|
|||||||
noctalia_bar_monitors:
|
noctalia_bar_monitors:
|
||||||
- DP-1
|
- DP-1
|
||||||
|
|
||||||
|
noctalia_screen_overrides: []
|
||||||
|
|
||||||
desktop_flatpak_packages:
|
desktop_flatpak_packages:
|
||||||
- be.alexandervanhee.gradia
|
- be.alexandervanhee.gradia
|
||||||
- ch.protonmail.protonmail-bridge
|
- ch.protonmail.protonmail-bridge
|
||||||
|
|||||||
@@ -42,3 +42,14 @@ host_sway_dotfiles:
|
|||||||
|
|
||||||
noctalia_bar_monitors:
|
noctalia_bar_monitors:
|
||||||
- DP-1
|
- DP-1
|
||||||
|
- eDP-1
|
||||||
|
|
||||||
|
noctalia_screen_overrides:
|
||||||
|
- name: DP-1
|
||||||
|
enabled: false
|
||||||
|
- name: eDP-1
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
host_packages_absent:
|
||||||
|
- network-manager-applet
|
||||||
|
- blueman
|
||||||
|
|||||||
@@ -71,4 +71,11 @@
|
|||||||
| unique
|
| unique
|
||||||
}}
|
}}
|
||||||
state: present
|
state: present
|
||||||
update_cache: false
|
update_cache: false
|
||||||
|
|
||||||
|
- name: Remove host-absent packages on Void Linux
|
||||||
|
tags: [packages]
|
||||||
|
community.general.xbps:
|
||||||
|
name: "{{ host_packages_absent | default([]) }}"
|
||||||
|
state: absent
|
||||||
|
when: (host_packages_absent | default([])) | length > 0
|
||||||
@@ -113,6 +113,21 @@
|
|||||||
owner: "{{ username }}"
|
owner: "{{ username }}"
|
||||||
group: "{{ user_group }}"
|
group: "{{ user_group }}"
|
||||||
|
|
||||||
|
- name: Check if usb-drive-manager is a real directory (needs migration to symlink)
|
||||||
|
ansible.builtin.stat:
|
||||||
|
path: "{{ user_home }}/.config/noctalia/plugins/usb-drive-manager"
|
||||||
|
follow: false
|
||||||
|
register: usb_drive_manager_path_state
|
||||||
|
|
||||||
|
- name: Remove old usb-drive-manager directory (migration to symlink)
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "{{ user_home }}/.config/noctalia/plugins/usb-drive-manager"
|
||||||
|
state: absent
|
||||||
|
when:
|
||||||
|
- usb_drive_manager_path_state.stat.exists
|
||||||
|
- usb_drive_manager_path_state.stat.isdir
|
||||||
|
- not (usb_drive_manager_path_state.stat.islnk | default(false))
|
||||||
|
|
||||||
- name: Link official Noctalia plugins
|
- name: Link official Noctalia plugins
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
src: "{{ user_home }}/.local/share/noctalia-plugins/official/{{ item }}"
|
src: "{{ user_home }}/.local/share/noctalia-plugins/official/{{ item }}"
|
||||||
@@ -124,3 +139,4 @@
|
|||||||
loop:
|
loop:
|
||||||
- polkit-agent
|
- polkit-agent
|
||||||
- screenshot
|
- screenshot
|
||||||
|
- usb-drive-manager
|
||||||
|
|||||||
@@ -70,7 +70,14 @@
|
|||||||
"rightClickAction": "controlCenter",
|
"rightClickAction": "controlCenter",
|
||||||
"rightClickCommand": "",
|
"rightClickCommand": "",
|
||||||
"rightClickFollowMouse": true,
|
"rightClickFollowMouse": true,
|
||||||
"screenOverrides": [],
|
"screenOverrides": [
|
||||||
|
{% for override in noctalia_screen_overrides | default([]) %}
|
||||||
|
{
|
||||||
|
"enabled": {{ override.enabled | lower }},
|
||||||
|
"name": "{{ override.name }}"
|
||||||
|
}{% if not loop.last %},{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
],
|
||||||
"showCapsule": true,
|
"showCapsule": true,
|
||||||
"showOnWorkspaceSwitch": true,
|
"showOnWorkspaceSwitch": true,
|
||||||
"showOutline": false,
|
"showOutline": false,
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ exec pipewire
|
|||||||
exec pipewire-pulse
|
exec pipewire-pulse
|
||||||
exec wireplumber
|
exec wireplumber
|
||||||
exec kanshi
|
exec kanshi
|
||||||
exec udiskie
|
exec udiskie --no-tray
|
||||||
exec wl-paste --watch cliphist store
|
exec wl-paste --watch cliphist store
|
||||||
exec qs -c noctalia-shell
|
exec qs -c noctalia-shell
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,10 @@
|
|||||||
"screenshot": {
|
"screenshot": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"sourceUrl": "https://github.com/noctalia-dev/noctalia-plugins"
|
"sourceUrl": "https://github.com/noctalia-dev/noctalia-plugins"
|
||||||
|
},
|
||||||
|
"usb-drive-manager": {
|
||||||
|
"enabled": true,
|
||||||
|
"sourceUrl": "https://github.com/noctalia-dev/noctalia-plugins"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": 2
|
"version": 2
|
||||||
|
|||||||
Reference in New Issue
Block a user