mirror of
https://github.com/fscotto/infra.git
synced 2026-07-29 16:20:01 +00:00
Move nymph to target Void+Niri
This commit is contained in:
13
AGENTS.md
13
AGENTS.md
@@ -12,8 +12,8 @@ Ansible-driven personal infrastructure repo for Void desktops, Linux Mint and Fr
|
|||||||
|
|
||||||
## Topology
|
## Topology
|
||||||
- Current personal desktop: `ikaros = platform_mint + role_personal_workstation + desktop_cinnamon`
|
- Current personal desktop: `ikaros = platform_mint + role_personal_workstation + desktop_cinnamon`
|
||||||
- Current laptop/lab: `nymph = platform_freebsd + role_lab + desktop_niri`
|
- Current laptop/lab: `nymph = platform_void + role_lab + desktop_niri`
|
||||||
- Void desktop profile remains available for future/reference hosts via `platform_void + graphical_desktop`
|
- Void desktop profile is also the base for other future/reference hosts via `platform_void + graphical_desktop`
|
||||||
- Native Linux workstation: `deadalus-fedora`
|
- Native Linux workstation: `deadalus-fedora`
|
||||||
- WSL dev: `deadalus-wsl`
|
- WSL dev: `deadalus-wsl`
|
||||||
- Ubuntu server: `prometheus`
|
- Ubuntu server: `prometheus`
|
||||||
@@ -38,7 +38,7 @@ Ansible-driven personal infrastructure repo for Void desktops, Linux Mint and Fr
|
|||||||
- `yamllint ansible/`
|
- `yamllint ansible/`
|
||||||
- Host-focused dry runs:
|
- Host-focused dry runs:
|
||||||
- Mint desktop work: `ansible-playbook ansible/site.yml --limit ikaros --check --diff`
|
- Mint desktop work: `ansible-playbook ansible/site.yml --limit ikaros --check --diff`
|
||||||
- FreeBSD laptop work: `ansible-playbook ansible/site.yml --limit nymph --check --diff`
|
- Void laptop work: `ansible-playbook ansible/site.yml --limit nymph --check --diff`
|
||||||
- Fedora workstation: `ansible-playbook ansible/site.yml --limit deadalus-fedora --check --diff`
|
- Fedora workstation: `ansible-playbook ansible/site.yml --limit deadalus-fedora --check --diff`
|
||||||
- WSL dev: `ansible-playbook ansible/site.yml --limit deadalus-wsl --check --diff`
|
- WSL dev: `ansible-playbook ansible/site.yml --limit deadalus-wsl --check --diff`
|
||||||
- Server: `ansible-playbook ansible/site.yml --limit prometheus --check --diff`
|
- Server: `ansible-playbook ansible/site.yml --limit prometheus --check --diff`
|
||||||
@@ -57,7 +57,7 @@ Ansible-driven personal infrastructure repo for Void desktops, Linux Mint and Fr
|
|||||||
|
|
||||||
## Desktop Notes
|
## Desktop Notes
|
||||||
- `desktop_profile` names independently selectable desktop groups such as `desktop_hyprland`, `desktop_sway`, `desktop_niri`, and `desktop_cinnamon`. Keep platform-specific session bootstrap in platform-specific roles.
|
- `desktop_profile` names independently selectable desktop groups such as `desktop_hyprland`, `desktop_sway`, `desktop_niri`, and `desktop_cinnamon`. Keep platform-specific session bootstrap in platform-specific roles.
|
||||||
- `desktop_environment` selects the mutually exclusive `minimal` (default), `xfce`, or `kde` desktop mode. `profile_desktop_common` owns shared bootstrap; the minimal mode uses `profile_desktop_sway` and `profile_desktop_hyprland`, `profile_desktop_xfce` owns the reproducible XFCE setup, and `profile_desktop_kde` owns KDE-specific defaults and cleanup. `desktop_sessions_enabled` and `desktop_default_session` apply only to the minimal mode.
|
- `desktop_environment` selects the mutually exclusive `minimal` (default), `xfce`, or `kde` desktop mode. `profile_desktop_common` owns shared bootstrap; the minimal mode uses `profile_desktop_sway`, `profile_desktop_hyprland`, and `profile_desktop_niri`, `profile_desktop_xfce` owns the reproducible XFCE setup, and `profile_desktop_kde` owns KDE-specific defaults and cleanup. `desktop_sessions_enabled` and `desktop_default_session` apply only to the minimal mode.
|
||||||
- Emacs packages and `.emacs.d` deploy are disabled by default via `emacs_enabled: false`; keep the dotfiles in the repo for reversible opt-in only.
|
- Emacs packages and `.emacs.d` deploy are disabled by default via `emacs_enabled: false`; keep the dotfiles in the repo for reversible opt-in only.
|
||||||
- NTFS filesystem support is provided by `ntfs-3g` in `ansible/inventory/group_vars/void.yml`.
|
- NTFS filesystem support is provided by `ntfs-3g` in `ansible/inventory/group_vars/void.yml`.
|
||||||
- Void user services are managed by `turnstile` and live under `dotfiles/desktop/.config/service/`.
|
- Void user services are managed by `turnstile` and live under `dotfiles/desktop/.config/service/`.
|
||||||
@@ -66,9 +66,10 @@ Ansible-driven personal infrastructure repo for Void desktops, Linux Mint and Fr
|
|||||||
- `dotfiles/desktop/.config/sway/config` plus `host.conf` and `session-env` deployed via `host_sway_dotfiles` (sway / Wayland)
|
- `dotfiles/desktop/.config/sway/config` plus `host.conf` and `session-env` deployed via `host_sway_dotfiles` (sway / Wayland)
|
||||||
- `dotfiles/desktop/.config/hypr/hyprland.conf` plus `host.conf` and `session-env` deployed via `host_hyprland_dotfiles` (Hyprland / Wayland)
|
- `dotfiles/desktop/.config/hypr/hyprland.conf` plus `host.conf` and `session-env` deployed via `host_hyprland_dotfiles` (Hyprland / Wayland)
|
||||||
- `dotfiles/desktop/.config/niri/config.kdl` and `session-env` deployed via `desktop_niri_dotfiles` (Niri / Wayland)
|
- `dotfiles/desktop/.config/niri/config.kdl` and `session-env` deployed via `desktop_niri_dotfiles` (Niri / Wayland)
|
||||||
- FreeBSD Niri must keep FreeBSD-specific package, rc, DBus, seat, portal, and launcher behavior in `profile_desktop_niri_freebsd` or FreeBSD platform vars.
|
- Void Niri (the `nymph` target) lives in `profile_desktop_niri`, gated on `'niri' in desktop_sessions_enabled`; it installs the `emptty` `niri.desktop` session, the `/usr/local/bin/start-niri` launcher, and the xdg-desktop-portal config, mirroring `profile_desktop_sway`.
|
||||||
|
- FreeBSD Niri (dormant; `platform_freebsd` currently has no hosts) must keep FreeBSD-specific package, rc, DBus, seat, portal, and launcher behavior in `profile_desktop_niri_freebsd` or FreeBSD platform vars.
|
||||||
- Do not switch or restart a display manager during a playbook run from an active graphical session. Changing among `emptty`, LightDM, and SDDM requires an explicit run from another TTY/SSH session with `desktop_allow_display_manager_switch=true`. Apply managed XFCE XML while logged out of XFCE so `xfconfd` cannot overwrite it from its in-memory state.
|
- Do not switch or restart a display manager during a playbook run from an active graphical session. Changing among `emptty`, LightDM, and SDDM requires an explicit run from another TTY/SSH session with `desktop_allow_display_manager_switch=true`. Apply managed XFCE XML while logged out of XFCE so `xfconfd` cannot overwrite it from its in-memory state.
|
||||||
- `nymph` is the FreeBSD/Niri laptop target; prefer minimal scrollable-tiling defaults first, then host-specific tuning after real use.
|
- `nymph` is the Void/Niri laptop target; prefer minimal scrollable-tiling defaults first, then host-specific tuning after real use.
|
||||||
|
|
||||||
## Void Package And Dotfile Bucket Rules
|
## Void Package And Dotfile Bucket Rules
|
||||||
`platform_void` is the reusable Void platform selection. The legacy `void` group remains a compatibility parent so existing `group_vars/void.yml` and `when: "'void' in group_names"` checks keep working during the transition.
|
`platform_void` is the reusable Void platform selection. The legacy `void` group remains a compatibility parent so existing `group_vars/void.yml` and `when: "'void' in group_names"` checks keep working during the transition.
|
||||||
|
|||||||
364
README.md
364
README.md
@@ -55,85 +55,85 @@ Il repository è diviso in due componenti principali:
|
|||||||
|
|
||||||
# Macchine gestite
|
# Macchine gestite
|
||||||
|
|
||||||
Il repository modella attualmente tre tipologie di profilo, con i filoni workstation Linux nativa e WSL.
|
Il repository modella attualmente tre tipologie di profilo, con i filoni workstation Linux nativa e WSL.
|
||||||
La nuova direzione del repository separa tre assi indipendenti:
|
La nuova direzione del repository separa tre assi indipendenti:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
common user environment
|
common user environment
|
||||||
+ host-specific platform
|
+ host-specific platform
|
||||||
+ role-specific software
|
+ role-specific software
|
||||||
+ independently selectable desktop
|
+ independently selectable desktop
|
||||||
+ host hardware overrides
|
+ host hardware overrides
|
||||||
```
|
```
|
||||||
|
|
||||||
Matrice target:
|
Matrice target:
|
||||||
|
|
||||||
| Host | Platform | Role | Desktop |
|
| Host | Platform | Role | Desktop |
|
||||||
| -------------- | ---------- | -------------------- | --------------------------------- |
|
| -------------- | ---------- | -------------------- | --------------------------------- |
|
||||||
| ikaros | Linux Mint | Personal workstation | Cinnamon |
|
| ikaros | Linux Mint | Personal workstation | Cinnamon |
|
||||||
| nymph | FreeBSD | Lab | Niri |
|
| nymph | Void Linux | Lab | Niri |
|
||||||
| void-reference | Void Linux | Lab/reference | Current preserved desktop profile |
|
| void-reference | Void Linux | Lab/reference | Current preserved desktop profile |
|
||||||
|
|
||||||
Regola operativa:
|
Regola operativa:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
ikaros must be boring
|
ikaros must be boring
|
||||||
nymph is allowed to break
|
nymph is allowed to break
|
||||||
```
|
```
|
||||||
|
|
||||||
`ikaros` usa il target stabile Linux Mint/Cinnamon; `nymph` usa il target
|
`ikaros` usa il target stabile Linux Mint/Cinnamon; `nymph` usa il target
|
||||||
FreeBSD/Niri per il workflow laptop scrollable-tiling. I gruppi legacy `void` e
|
Void/Niri per il workflow laptop scrollable-tiling. I gruppi legacy `void` e
|
||||||
`desktop` restano alias di compatibilita per eventuali host Void futuri mentre i
|
`desktop` restano alias di compatibilita per eventuali host Void futuri mentre i
|
||||||
nuovi assi sono `platform_*`, `role_*` e `desktop_*`.
|
nuovi assi sono `platform_*`, `role_*` e `desktop_*`.
|
||||||
|
|
||||||
Prima di una migrazione reale degli host e consigliato creare uno snapshot
|
Prima di una migrazione reale degli host e consigliato creare uno snapshot
|
||||||
logico, per esempio:
|
logico, per esempio:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git switch -c refactor/platform-role-desktop
|
git switch -c refactor/platform-role-desktop
|
||||||
git tag void-desktop-before-platform-refactor
|
git tag void-desktop-before-platform-refactor
|
||||||
```
|
```
|
||||||
|
|
||||||
Nota sullo stato attuale del playbook principale:
|
Nota sullo stato attuale del playbook principale:
|
||||||
|
|
||||||
- `ansible/site.yml` applica oggi in automatico Cinnamon su Linux Mint e Niri su FreeBSD
|
- `ansible/site.yml` applica oggi in automatico Cinnamon su Linux Mint e Niri su FreeBSD
|
||||||
- `ansible/site.yml` applica la workstation Linux nativa separando il layer dev comune dal layer host GNOME
|
- `ansible/site.yml` applica la workstation Linux nativa separando il layer dev comune dal layer host GNOME
|
||||||
- `ansible/site.yml` applica anche il ramo `workstation_dev_wsl` per il modello dev in WSL
|
- `ansible/site.yml` applica anche il ramo `workstation_dev_wsl` per il modello dev in WSL
|
||||||
- `ansible/site.yml` applica anche il profilo `ubuntu_server` con baseline apt, systemd, dotfiles server e firewall UFW
|
- `ansible/site.yml` applica anche il profilo `ubuntu_server` con baseline apt, systemd, dotfiles server e firewall UFW
|
||||||
|
|
||||||
## Desktop
|
## Desktop
|
||||||
|
|
||||||
Target operativi:
|
Target operativi:
|
||||||
|
|
||||||
- `ikaros`: Linux Mint + Cinnamon, desktop personale stabile/floating.
|
- `ikaros`: Linux Mint + Cinnamon, desktop personale stabile/floating.
|
||||||
- `nymph`: FreeBSD + Niri, laptop scrollable-tiling per sfruttare meglio lo schermo piccolo.
|
- `nymph`: Void Linux + Niri, laptop scrollable-tiling per sfruttare meglio lo schermo piccolo.
|
||||||
|
|
||||||
Il profilo Void desktop resta disponibile come modello riutilizzabile per host
|
Il profilo Void desktop resta disponibile come modello riutilizzabile per host
|
||||||
futuri. `desktop_environment` continua a selezionare in modo esclusivo
|
futuri. `desktop_environment` continua a selezionare in modo esclusivo
|
||||||
`minimal`, `xfce` oppure `kde` per i desktop Void; Niri e Cinnamon sono profili
|
`minimal`, `xfce` oppure `kde` per i desktop Void; Niri e Cinnamon sono profili
|
||||||
desktop indipendenti via gruppi `desktop_niri` e `desktop_cinnamon`.
|
desktop indipendenti via gruppi `desktop_niri` e `desktop_cinnamon`.
|
||||||
|
|
||||||
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
|
||||||
- sessioni sway e Hyprland per eventuali host Void in modalita `minimal`
|
- sessioni sway e Hyprland per eventuali host Void in modalita `minimal`
|
||||||
- KDE Plasma con applicazioni KDE curate e SDDM disponibile come alternativa esclusiva
|
- KDE Plasma con applicazioni KDE curate e SDDM disponibile come alternativa esclusiva
|
||||||
- XFCE con pannello, keybinding, terminale, tema e workspace dichiarativi, LightDM e Thunderbird come client grafico principale
|
- XFCE con pannello, keybinding, terminale, tema e workspace dichiarativi, LightDM e Thunderbird come client grafico principale
|
||||||
- `emptty` con default host-specific in modalita `minimal`, con session file Wayland esposti per `sway` e `hyprland`
|
- `emptty` con default host-specific in modalita `minimal`, con session file Wayland esposti per `sway` e `hyprland`
|
||||||
- pacchetti Void Linux e servizi runit; le liste pacchetti Void desktop sono separate per criterio:
|
- pacchetti Void Linux e servizi runit; le liste pacchetti Void desktop sono separate per criterio:
|
||||||
- `void_packages_base` per il runtime sistema (init, kernel, audio core, networking, firewall, hw daemons)
|
- `void_packages_base` per il runtime sistema (init, kernel, audio core, networking, firewall, hw daemons)
|
||||||
- `desktop_common_packages` per l'infrastruttura condivisa dalle modalita
|
- `desktop_common_packages` per l'infrastruttura condivisa dalle modalita
|
||||||
- `desktop_minimal_packages` per applicazioni GTK/XFCE e `emptty`
|
- `desktop_minimal_packages` per applicazioni GTK/XFCE e `emptty`
|
||||||
- `desktop_xfce_packages` per XFCE, LightDM e le relative integrazioni
|
- `desktop_xfce_packages` per XFCE, LightDM e le relative integrazioni
|
||||||
- `desktop_kde_packages` per Plasma, SDDM e le applicazioni KDE equivalenti
|
- `desktop_kde_packages` per Plasma, SDDM e le applicazioni KDE equivalenti
|
||||||
- `desktop_sway_packages` e `desktop_hyprland_packages` per i binari specifici di ciascuna sessione
|
- `desktop_sway_packages` e `desktop_hyprland_packages` per i binari specifici di ciascuna sessione
|
||||||
- `turnstile` per i servizi utente Void, incluso `ssh-agent`
|
- `turnstile` per i servizi utente Void, incluso `ssh-agent`
|
||||||
- `ssh-agent` con socket stabile condiviso tra shell e SSH in `~/.local/state/ssh-agent/socket`
|
- `ssh-agent` con socket stabile condiviso tra shell e SSH in `~/.local/state/ssh-agent/socket`
|
||||||
- Emacs e i relativi dotfile restano nel repo ma sono disabilitati di default tramite `emacs_enabled: false`
|
- Emacs e i relativi dotfile restano nel repo ma sono disabilitati di default tramite `emacs_enabled: false`
|
||||||
- `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 `udiskie` nella modalita minimale; KWallet e integrazione UDisks di Plasma nella modalita KDE
|
- GNOME Keyring e `udiskie` nella modalita minimale; KWallet e integrazione UDisks di Plasma nella modalita KDE
|
||||||
- multi-monitor Void: sotto sway è gestito da `kanshi`; sotto Hyprland gli override monitor vivono in `host_hyprland_dotfiles`
|
- multi-monitor Void: sotto sway è gestito da `kanshi`; sotto Hyprland gli override monitor vivono in `host_hyprland_dotfiles`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -232,36 +232,36 @@ ansible-playbook ansible/site.yml --limit prometheus -e server_username=myuser -
|
|||||||
|
|
||||||
# Composizione della configurazione
|
# Composizione della configurazione
|
||||||
|
|
||||||
Emacs è disabilitato di default. Per riattivare temporaneamente il deploy Emacs:
|
Emacs è disabilitato di default. Per riattivare temporaneamente il deploy Emacs:
|
||||||
|
|
||||||
```bash
|
|
||||||
ansible-playbook ansible/site.yml --limit <host> --tags emacs -e emacs_enabled=true
|
|
||||||
```
|
|
||||||
|
|
||||||
La configurazione finale di una macchina è ottenuta combinando più livelli.
|
```bash
|
||||||
|
ansible-playbook ansible/site.yml --limit <host> --tags emacs -e emacs_enabled=true
|
||||||
```text
|
```
|
||||||
common configuration
|
|
||||||
+ platform configuration
|
La configurazione finale di una macchina è ottenuta combinando più livelli.
|
||||||
+ role configuration
|
|
||||||
+ desktop configuration
|
```text
|
||||||
+ host overrides
|
common configuration
|
||||||
```
|
+ platform configuration
|
||||||
|
+ role configuration
|
||||||
Esempi correnti:
|
+ desktop configuration
|
||||||
|
+ host overrides
|
||||||
```text
|
```
|
||||||
ikaros -> common + platform_mint + role_personal_workstation + desktop_cinnamon + ikaros
|
|
||||||
nymph -> common + platform_freebsd + role_lab + desktop_niri + nymph
|
Esempi correnti:
|
||||||
```
|
|
||||||
|
```text
|
||||||
|
ikaros -> common + platform_mint + role_personal_workstation + desktop_cinnamon + ikaros
|
||||||
|
nymph -> common + platform_void + role_lab + desktop_niri + nymph
|
||||||
|
```
|
||||||
|
|
||||||
Questo approccio consente di:
|
Questo approccio consente di:
|
||||||
|
|
||||||
- mantenere configurazioni condivise
|
- mantenere configurazioni condivise
|
||||||
- applicare override specifici per host
|
- applicare override specifici per host
|
||||||
- evitare duplicazioni
|
- evitare duplicazioni
|
||||||
- riutilizzare il profilo Void corrente su un host futuro assegnandolo a
|
- riutilizzare il profilo Void corrente su un host futuro assegnandolo a
|
||||||
`platform_void + graphical_desktop + role_lab + desktop_hyprland`
|
`platform_void + graphical_desktop + role_lab + desktop_hyprland`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -269,26 +269,26 @@ Questo approccio consente di:
|
|||||||
|
|
||||||
I principali ruoli attualmente presenti sono:
|
I principali ruoli attualmente presenti sono:
|
||||||
|
|
||||||
| Role | Descrizione |
|
| Role | Descrizione |
|
||||||
| ------------------------- | ----------------------------------- |
|
| ------------------------- | ----------------------------------- |
|
||||||
| base | configurazione base comune |
|
| base | configurazione base comune |
|
||||||
| packages_void | installazione pacchetti su Void |
|
| packages_void | installazione pacchetti su Void |
|
||||||
| packages_mint | installazione pacchetti su Linux Mint via APT |
|
| packages_mint | installazione pacchetti su Linux Mint via APT |
|
||||||
| packages_freebsd | installazione pacchetti su FreeBSD via pkg |
|
| packages_freebsd | installazione pacchetti su FreeBSD via pkg |
|
||||||
| packages_ubuntu | installazione pacchetti su Ubuntu |
|
| packages_ubuntu | installazione pacchetti su Ubuntu |
|
||||||
| packages_fedora | installazione pacchetti su Fedora |
|
| packages_fedora | installazione pacchetti su Fedora |
|
||||||
| services_runit | gestione servizi runit |
|
| services_runit | gestione servizi runit |
|
||||||
| services_systemd | gestione servizi systemd |
|
| services_systemd | gestione servizi systemd |
|
||||||
| services_freebsd | gestione servizi FreeBSD rc.conf/rc.d |
|
| services_freebsd | gestione servizi FreeBSD rc.conf/rc.d |
|
||||||
| profile_desktop_common | bootstrap desktop Void condiviso |
|
| profile_desktop_common | bootstrap desktop Void condiviso |
|
||||||
| profile_desktop_sway | sessione desktop sway / SwayFX (Wayland) |
|
| profile_desktop_sway | sessione desktop sway / SwayFX (Wayland) |
|
||||||
| profile_desktop_hyprland | sessione desktop Hyprland (Wayland) |
|
| profile_desktop_hyprland | sessione desktop Hyprland (Wayland) |
|
||||||
| profile_desktop_niri_freebsd | adattamenti FreeBSD per Niri |
|
| profile_desktop_niri_freebsd | adattamenti FreeBSD per Niri |
|
||||||
| profile_desktop_cinnamon | impostazioni Cinnamon circoscritte |
|
| profile_desktop_cinnamon | impostazioni Cinnamon circoscritte |
|
||||||
| profile_desktop_host | override desktop specifici per host |
|
| profile_desktop_host | override desktop specifici per host |
|
||||||
| profile_personal_workstation | layer stabile per workstation personale |
|
| profile_personal_workstation | layer stabile per workstation personale |
|
||||||
| profile_lab | layer sperimentale/lab |
|
| profile_lab | layer sperimentale/lab |
|
||||||
| profile_workstation_dev_common | configurazione dev workstation condivisa |
|
| profile_workstation_dev_common | configurazione dev workstation condivisa |
|
||||||
| profile_workstation_gnome | configurazione host workstation GNOME |
|
| profile_workstation_gnome | configurazione host workstation GNOME |
|
||||||
| profile_workstation_dev_wsl | configurazione WSL Ubuntu per sviluppo |
|
| profile_workstation_dev_wsl | configurazione WSL Ubuntu per sviluppo |
|
||||||
| profile_server | configurazione server |
|
| profile_server | configurazione server |
|
||||||
@@ -299,29 +299,29 @@ I principali ruoli attualmente presenti sono:
|
|||||||
|
|
||||||
# Stato attuale del playbook principale
|
# Stato attuale del playbook principale
|
||||||
|
|
||||||
Il playbook `ansible/site.yml` e attualmente composto da blocchi per asse:
|
Il playbook `ansible/site.yml` e attualmente composto da blocchi per asse:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
all -> dotfiles_common
|
all -> dotfiles_common
|
||||||
platform_void -> packages_void + services_runit
|
platform_void -> packages_void + services_runit
|
||||||
platform_void & graphical_desktop -> profile_desktop_common + profile_desktop_sway + profile_desktop_hyprland + profile_desktop_kde + profile_desktop_xfce + profile_desktop_host
|
platform_void & graphical_desktop -> profile_desktop_common + profile_desktop_sway + profile_desktop_hyprland + profile_desktop_kde + profile_desktop_xfce + profile_desktop_host
|
||||||
platform_mint -> packages_mint + services_systemd
|
platform_mint -> packages_mint + services_systemd
|
||||||
platform_mint & role_personal_workstation -> profile_personal_workstation
|
platform_mint & role_personal_workstation -> profile_personal_workstation
|
||||||
platform_mint & desktop_cinnamon -> profile_desktop_cinnamon
|
platform_mint & desktop_cinnamon -> profile_desktop_cinnamon
|
||||||
platform_freebsd -> packages_freebsd + services_freebsd
|
platform_freebsd -> packages_freebsd + services_freebsd
|
||||||
platform_freebsd & role_lab -> profile_lab
|
platform_freebsd & role_lab -> profile_lab
|
||||||
platform_freebsd & desktop_niri -> profile_desktop_niri_freebsd
|
platform_freebsd & desktop_niri -> profile_desktop_niri_freebsd
|
||||||
workstation_dev_fedora -> packages_fedora + services_systemd + profile_workstation_dev_common
|
workstation_dev_fedora -> packages_fedora + services_systemd + profile_workstation_dev_common
|
||||||
workstation_host_linux -> profile_workstation_gnome
|
workstation_host_linux -> profile_workstation_gnome
|
||||||
workstation_dev_wsl -> packages_ubuntu + services_systemd + profile_workstation_dev_common + profile_workstation_dev_wsl
|
workstation_dev_wsl -> packages_ubuntu + services_systemd + profile_workstation_dev_common + profile_workstation_dev_wsl
|
||||||
ubuntu_server -> packages_ubuntu + services_systemd + profile_server
|
ubuntu_server -> packages_ubuntu + services_systemd + profile_server
|
||||||
```
|
```
|
||||||
|
|
||||||
Questo significa che, allo stato attuale:
|
Questo significa che, allo stato attuale:
|
||||||
|
|
||||||
- `ikaros` riceve Linux Mint/Cinnamon come target stabile
|
- `ikaros` riceve Linux Mint/Cinnamon come target stabile
|
||||||
- `nymph` riceve FreeBSD/Niri come target laptop scrollable-tiling
|
- `nymph` riceve Void Linux/Niri come target laptop scrollable-tiling
|
||||||
- il profilo Void resta selezionabile tramite `platform_void + graphical_desktop` per host futuri
|
- il profilo Void resta selezionabile tramite `platform_void + graphical_desktop` per host futuri
|
||||||
- la workstation Fedora (`deadalus-fedora`) usa il principio di composizione a gruppi con il ramo Fedora dedicato e con `gsettings` host-specifici dichiarati in inventory
|
- la workstation Fedora (`deadalus-fedora`) usa il principio di composizione a gruppi con il ramo Fedora dedicato e con `gsettings` host-specifici dichiarati in inventory
|
||||||
- il ramo WSL (`deadalus-wsl`) e predisposto con play dev dedicato
|
- il ramo WSL (`deadalus-wsl`) e predisposto con play dev dedicato
|
||||||
- il server Ubuntu (`prometheus`) e gestito con pacchetti, servizi, dotfiles server e firewall
|
- il server Ubuntu (`prometheus`) e gestito con pacchetti, servizi, dotfiles server e firewall
|
||||||
@@ -392,27 +392,27 @@ Eseguire il playbook principale:
|
|||||||
ansible-playbook ansible/site.yml
|
ansible-playbook ansible/site.yml
|
||||||
```
|
```
|
||||||
|
|
||||||
Allo stato attuale questo comando:
|
Allo stato attuale questo comando:
|
||||||
|
|
||||||
- distribuisce i dotfiles comuni a tutti gli host
|
- distribuisce i dotfiles comuni a tutti gli host
|
||||||
- per `platform_void` applica pacchetti Void e servizi runit
|
- per `platform_void` applica pacchetti Void e servizi runit
|
||||||
- per `platform_void + graphical_desktop` applica bootstrap desktop condiviso, sessioni sway/Hyprland e override specifici per host
|
- per `platform_void + graphical_desktop` applica bootstrap desktop condiviso, sessioni sway/Hyprland e override specifici per host
|
||||||
- per `platform_mint` e `platform_freebsd` applica solo host presenti esplicitamente in quei gruppi; nell'inventory principale iniziale questi gruppi sono vuoti
|
- per `platform_mint` e `platform_freebsd` applica solo host presenti esplicitamente in quei gruppi; nell'inventory principale iniziale questi gruppi sono vuoti
|
||||||
- per `workstation_dev_fedora` applica pacchetti Fedora, servizi systemd e profilo dev comune
|
- per `workstation_dev_fedora` applica pacchetti Fedora, servizi systemd e profilo dev comune
|
||||||
- per `workstation_host_linux` applica il layer host Linux GNOME
|
- per `workstation_host_linux` applica il layer host Linux GNOME
|
||||||
- per `workstation_dev_wsl` applica pacchetti Ubuntu, servizi systemd, profilo dev comune e tweak WSL dedicati
|
- per `workstation_dev_wsl` applica pacchetti Ubuntu, servizi systemd, profilo dev comune e tweak WSL dedicati
|
||||||
- per gli host `ubuntu_server` applica pacchetti Ubuntu, servizi systemd, profilo server, UFW, dotfiles e template dedicati
|
- per gli host `ubuntu_server` applica pacchetti Ubuntu, servizi systemd, profilo server, UFW, dotfiles e template dedicati
|
||||||
- non riavvia automaticamente il display manager; i passaggi tra `emptty`, LightDM e SDDM vanno applicati da SSH o da una TTY separata
|
- non riavvia automaticamente il display manager; i passaggi tra `emptty`, LightDM e SDDM vanno applicati da SSH o da una TTY separata
|
||||||
- carica `secrets/vault.yml` solo se presente
|
- carica `secrets/vault.yml` solo se presente
|
||||||
- carica `secrets/vault.local.yml` solo se presente, dopo `vault.yml`, cosi gli override locali hanno precedenza
|
- carica `secrets/vault.local.yml` solo se presente, dopo `vault.yml`, cosi gli override locali hanno precedenza
|
||||||
|
|
||||||
Per validare prima di applicare:
|
Per validare prima di applicare:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
ansible-playbook ansible/site.yml --syntax-check
|
ansible-playbook ansible/site.yml --syntax-check
|
||||||
ansible-playbook ansible/site.yml --limit ikaros,nymph --check --diff
|
ansible-playbook ansible/site.yml --limit ikaros,nymph --check --diff
|
||||||
ansible-playbook ansible/site.yml --limit ikaros --check --diff
|
ansible-playbook ansible/site.yml --limit ikaros --check --diff
|
||||||
ansible-playbook ansible/site.yml --limit nymph --check --diff
|
ansible-playbook ansible/site.yml --limit nymph --check --diff
|
||||||
ansible-playbook ansible/site.yml --limit deadalus-fedora --check --diff
|
ansible-playbook ansible/site.yml --limit deadalus-fedora --check --diff
|
||||||
ansible-playbook ansible/site.yml --limit deadalus-wsl --check --diff
|
ansible-playbook ansible/site.yml --limit deadalus-wsl --check --diff
|
||||||
ansible-playbook ansible/site.yml --limit prometheus --check --diff
|
ansible-playbook ansible/site.yml --limit prometheus --check --diff
|
||||||
@@ -445,14 +445,14 @@ Per vedere l'elenco reale aggiornato dei tag disponibili:
|
|||||||
ansible-playbook ansible/site.yml --list-tags
|
ansible-playbook ansible/site.yml --list-tags
|
||||||
```
|
```
|
||||||
|
|
||||||
Per attivare XFCE o KDE su un host, impostare rispettivamente `desktop_environment: xfce` o `desktop_environment: kde` nei relativi `host_vars` ed eseguire prima un dry run. Il primo play configura il profilo ma, se un altro display manager e ancora attivo, rinvia il cambio. Da una TTY o sessione SSH separata, con la sessione grafica chiusa, applicare quindi il passaggio esplicito:
|
Per attivare XFCE o KDE su un host, impostare rispettivamente `desktop_environment: xfce` o `desktop_environment: kde` nei relativi `host_vars` ed eseguire prima un dry run. Il primo play configura il profilo ma, se un altro display manager e ancora attivo, rinvia il cambio. Da una TTY o sessione SSH separata, con la sessione grafica chiusa, applicare quindi il passaggio esplicito:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
ansible-playbook ansible/site.yml --limit <host> -e desktop_allow_display_manager_switch=true
|
ansible-playbook ansible/site.yml --limit <host> -e desktop_allow_display_manager_switch=true
|
||||||
```
|
```
|
||||||
|
|
||||||
La stessa procedura vale per ogni passaggio tra `minimal`, `xfce` e `kde`. Gli XML XFCE sono autorevoli: applicare i relativi aggiornamenti mentre XFCE e disconnesso evita che `xfconfd` ripristini lo stato in memoria.
|
La stessa procedura vale per ogni passaggio tra `minimal`, `xfce` e `kde`. Gli XML XFCE sono autorevoli: applicare i relativi aggiornamenti mentre XFCE e disconnesso evita che `xfconfd` ripristini lo stato in memoria.
|
||||||
|
|
||||||
Allo stato attuale `ansible/site.yml` espone questi tag:
|
Allo stato attuale `ansible/site.yml` espone questi tag:
|
||||||
|
|
||||||
| Tag | Scopo | Ambito principale |
|
| Tag | Scopo | Ambito principale |
|
||||||
@@ -465,15 +465,15 @@ Allo stato attuale `ansible/site.yml` espone questi tag:
|
|||||||
| `dotfiles:server` | dotfiles dedicati al profilo server | server |
|
| `dotfiles:server` | dotfiles dedicati al profilo server | server |
|
||||||
| `dotfiles:workstation` | dotfiles dedicati alle workstation | workstation Linux, WSL |
|
| `dotfiles:workstation` | dotfiles dedicati alle workstation | workstation Linux, WSL |
|
||||||
| `emptty` | gestione display manager `emptty` | desktop Void |
|
| `emptty` | gestione display manager `emptty` | desktop Void |
|
||||||
| `display-manager` | selezione protetta tra `emptty`, LightDM e SDDM | desktop Void |
|
| `display-manager` | selezione protetta tra `emptty`, LightDM e SDDM | desktop Void |
|
||||||
| `kde` | profilo KDE Plasma e relativa pulizia | desktop Void |
|
| `kde` | profilo KDE Plasma e relativa pulizia | desktop Void |
|
||||||
| `xfce` | profilo XFCE, LightDM e relativa pulizia | desktop Void |
|
| `xfce` | profilo XFCE, LightDM e relativa pulizia | desktop Void |
|
||||||
| `cinnamon` | impostazioni Cinnamon circoscritte | Linux Mint desktop |
|
| `cinnamon` | impostazioni Cinnamon circoscritte | Linux Mint desktop |
|
||||||
| `gnome` | configurazione host GNOME | workstation host Linux, parte desktop |
|
| `gnome` | configurazione host GNOME | workstation host Linux, parte desktop |
|
||||||
| `sway` | sessione/configurazione sway / SwayFX (Wayland) | desktop Void |
|
| `sway` | sessione/configurazione sway / SwayFX (Wayland) | desktop Void |
|
||||||
| `hyprland` | sessione/configurazione Hyprland (Wayland) | desktop Void |
|
| `hyprland` | sessione/configurazione Hyprland (Wayland) | desktop Void |
|
||||||
| `niri` | sessione/configurazione Niri (Wayland) | FreeBSD laptop |
|
| `niri` | sessione/configurazione Niri (Wayland) | FreeBSD laptop |
|
||||||
| `npm` | installazione pacchetti npm globali | desktop Void, workstation Linux, WSL |
|
| `npm` | installazione pacchetti npm globali | desktop Void, workstation Linux, WSL |
|
||||||
| `nvidia` | componenti NVIDIA desktop | desktop Void |
|
| `nvidia` | componenti NVIDIA desktop | desktop Void |
|
||||||
| `packages` | installazione e aggiornamento pacchetti | tutti i profili |
|
| `packages` | installazione e aggiornamento pacchetti | tutti i profili |
|
||||||
| `services` | gestione servizi runit/systemd | tutti i profili |
|
| `services` | gestione servizi runit/systemd | tutti i profili |
|
||||||
@@ -483,9 +483,9 @@ Allo stato attuale `ansible/site.yml` espone questi tag:
|
|||||||
Esempi pratici:
|
Esempi pratici:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
ansible-playbook ansible/site.yml --limit nymph --tags dotfiles:desktop,niri --check --diff
|
ansible-playbook ansible/site.yml --limit nymph --tags dotfiles:desktop,niri --check --diff
|
||||||
ansible-playbook ansible/site.yml --limit ikaros --tags cinnamon --check --diff
|
ansible-playbook ansible/site.yml --limit ikaros --tags cinnamon --check --diff
|
||||||
ansible-playbook ansible/site.yml --limit deadalus-fedora --tags packages,vscode --check --diff
|
ansible-playbook ansible/site.yml --limit deadalus-fedora --tags packages,vscode --check --diff
|
||||||
ansible-playbook ansible/site.yml --limit prometheus --tags services,dotfiles:server --check --diff
|
ansible-playbook ansible/site.yml --limit prometheus --tags services,dotfiles:server --check --diff
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -502,25 +502,25 @@ ansible-galaxy collection install -r ansible/collections/requirements.yml
|
|||||||
ansible-playbook ansible/site.yml
|
ansible-playbook ansible/site.yml
|
||||||
```
|
```
|
||||||
|
|
||||||
Dopo l'esecuzione del playbook la macchina verra configurata secondo il profilo definito e i ruoli attualmente orchestrati.
|
Dopo l'esecuzione del playbook la macchina verra configurata secondo il profilo definito e i ruoli attualmente orchestrati.
|
||||||
|
|
||||||
Per aggiungere un nuovo host Void che riusa il profilo desktop preservato:
|
Per aggiungere un nuovo host Void che riusa il profilo desktop preservato:
|
||||||
|
|
||||||
1. aggiungere l'host a `platform_void`;
|
1. aggiungere l'host a `platform_void`;
|
||||||
2. aggiungerlo a `graphical_desktop`;
|
2. aggiungerlo a `graphical_desktop`;
|
||||||
3. scegliere il ruolo, per esempio `role_lab`;
|
3. scegliere il ruolo, per esempio `role_lab`;
|
||||||
4. scegliere il desktop, per esempio `desktop_hyprland`;
|
4. scegliere il desktop, per esempio `desktop_hyprland`;
|
||||||
5. lasciare eventuali dettagli hardware in `host_vars/<host>.yml`.
|
5. lasciare eventuali dettagli hardware in `host_vars/<host>.yml`.
|
||||||
|
|
||||||
I gruppi legacy `void` e `desktop` sono parent di compatibilita, quindi un host
|
I gruppi legacy `void` e `desktop` sono parent di compatibilita, quindi un host
|
||||||
in `platform_void` e `graphical_desktop` continua a ricevere anche le variabili
|
in `platform_void` e `graphical_desktop` continua a ricevere anche le variabili
|
||||||
Void e desktop esistenti.
|
Void e desktop esistenti.
|
||||||
|
|
||||||
Per prove in VM sono disponibili gruppi di esempio in
|
Per prove in VM sono disponibili gruppi di esempio in
|
||||||
`ansible/inventory/examples/platform-test-hosts.yml`, da passare esplicitamente
|
`ansible/inventory/examples/platform-test-hosts.yml`, da passare esplicitamente
|
||||||
con `-i` insieme all'inventory principale.
|
con `-i` insieme all'inventory principale.
|
||||||
|
|
||||||
Per il flusso mail desktop esiste inoltre uno script dedicato:
|
Per il flusso mail desktop esiste inoltre uno script dedicato:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
scripts/bootstrap_mail.sh
|
scripts/bootstrap_mail.sh
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
---
|
---
|
||||||
desktop_profile: niri
|
desktop_profile: niri
|
||||||
|
desktop_sessions_enabled:
|
||||||
|
- niri
|
||||||
desktop_default_session: niri
|
desktop_default_session: niri
|
||||||
|
|||||||
@@ -221,6 +221,28 @@ desktop_hyprland_packages:
|
|||||||
- xdg-desktop-portal-hyprland
|
- xdg-desktop-portal-hyprland
|
||||||
- xorg-server-xwayland
|
- xorg-server-xwayland
|
||||||
|
|
||||||
|
desktop_niri_packages:
|
||||||
|
- cliphist
|
||||||
|
- dunst
|
||||||
|
- foot
|
||||||
|
- foot-terminfo
|
||||||
|
- gtklock
|
||||||
|
- grim
|
||||||
|
- niri
|
||||||
|
- rofi
|
||||||
|
- slurp
|
||||||
|
- SwayOSD
|
||||||
|
- Waybar
|
||||||
|
- wl-clipboard
|
||||||
|
- xdg-desktop-portal-gtk
|
||||||
|
- xorg-server-xwayland
|
||||||
|
|
||||||
|
void_lab_packages:
|
||||||
|
- llvm
|
||||||
|
- podman
|
||||||
|
- qemu
|
||||||
|
- smartmontools
|
||||||
|
|
||||||
profile_packages:
|
profile_packages:
|
||||||
- bash-language-server
|
- bash-language-server
|
||||||
- bluez
|
- bluez
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
hostname: nymph
|
hostname: nymph
|
||||||
|
|
||||||
# FreeBSD/Niri laptop target. Keep host-specific packages empty until hardware
|
# Void Linux/Niri laptop target. Keep host-specific packages empty until hardware
|
||||||
# support is verified on the installed system.
|
# support is verified on the installed system.
|
||||||
host_packages: []
|
host_packages: []
|
||||||
host_enabled_services: []
|
host_enabled_services: []
|
||||||
|
|||||||
@@ -2,7 +2,9 @@
|
|||||||
all:
|
all:
|
||||||
children:
|
children:
|
||||||
platform_void:
|
platform_void:
|
||||||
hosts: {}
|
hosts:
|
||||||
|
nymph:
|
||||||
|
ansible_connection: local
|
||||||
|
|
||||||
platform_mint:
|
platform_mint:
|
||||||
hosts:
|
hosts:
|
||||||
@@ -10,9 +12,7 @@ all:
|
|||||||
ansible_connection: local
|
ansible_connection: local
|
||||||
|
|
||||||
platform_freebsd:
|
platform_freebsd:
|
||||||
hosts:
|
hosts: {}
|
||||||
nymph:
|
|
||||||
ansible_connection: local
|
|
||||||
|
|
||||||
void:
|
void:
|
||||||
children:
|
children:
|
||||||
|
|||||||
@@ -76,6 +76,14 @@
|
|||||||
)
|
)
|
||||||
else []
|
else []
|
||||||
)
|
)
|
||||||
|
+ (
|
||||||
|
(desktop_niri_packages | default([]))
|
||||||
|
if (
|
||||||
|
(desktop_environment | default('minimal')) == 'minimal'
|
||||||
|
and 'niri' in (desktop_sessions_enabled | default([]))
|
||||||
|
)
|
||||||
|
else []
|
||||||
|
)
|
||||||
| unique
|
| unique
|
||||||
}}
|
}}
|
||||||
|
|
||||||
@@ -88,6 +96,7 @@
|
|||||||
(desktop_minimal_packages | default([]))
|
(desktop_minimal_packages | default([]))
|
||||||
+ (desktop_sway_packages | default([]))
|
+ (desktop_sway_packages | default([]))
|
||||||
+ (desktop_hyprland_packages | default([]))
|
+ (desktop_hyprland_packages | default([]))
|
||||||
|
+ (desktop_niri_packages | default([]))
|
||||||
+ (desktop_xfce_packages | default([]))
|
+ (desktop_xfce_packages | default([]))
|
||||||
+ (desktop_kde_packages | default([]))
|
+ (desktop_kde_packages | default([]))
|
||||||
)
|
)
|
||||||
@@ -109,6 +118,7 @@
|
|||||||
+ (desktop_common_packages | default([]))
|
+ (desktop_common_packages | default([]))
|
||||||
+ ((desktop_emacs_packages | default([])) if (emacs_enabled | default(false) | bool) else [])
|
+ ((desktop_emacs_packages | default([])) if (emacs_enabled | default(false) | bool) else [])
|
||||||
+ (packages_void_selected_desktop_packages | default([]))
|
+ (packages_void_selected_desktop_packages | default([]))
|
||||||
|
+ ((void_lab_packages | default([])) if 'role_lab' in group_names else [])
|
||||||
+ (host_packages | default([]))
|
+ (host_packages | default([]))
|
||||||
)
|
)
|
||||||
| unique
|
| unique
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
or (desktop_sessions_enabled | default([]) | length > 0)
|
or (desktop_sessions_enabled | default([]) | length > 0)
|
||||||
- >-
|
- >-
|
||||||
(desktop_environment | default('minimal')) != 'minimal'
|
(desktop_environment | default('minimal')) != 'minimal'
|
||||||
or (desktop_sessions_enabled | default([]) | difference(['sway', 'hyprland']) | length == 0)
|
or (desktop_sessions_enabled | default([]) | difference(['sway', 'hyprland', 'niri']) | length == 0)
|
||||||
- >-
|
- >-
|
||||||
(desktop_environment | default('minimal')) != 'minimal'
|
(desktop_environment | default('minimal')) != 'minimal'
|
||||||
or desktop_default_session in (desktop_sessions_enabled | default([]))
|
or desktop_default_session in (desktop_sessions_enabled | default([]))
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
[preferred]
|
||||||
|
default=gtk
|
||||||
|
org.freedesktop.impl.portal.Screenshot=gtk
|
||||||
|
org.freedesktop.impl.portal.ScreenCast=gtk
|
||||||
5
ansible/roles/profile_desktop_niri/files/niri.desktop
Normal file
5
ansible/roles/profile_desktop_niri/files/niri.desktop
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Name=Niri
|
||||||
|
Comment=Niri scrollable-tiling (Wayland)
|
||||||
|
Exec=/usr/local/bin/start-niri
|
||||||
|
Type=Application
|
||||||
81
ansible/roles/profile_desktop_niri/tasks/main.yml
Normal file
81
ansible/roles/profile_desktop_niri/tasks/main.yml
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
---
|
||||||
|
- name: Ensure niri config directories exist
|
||||||
|
tags: [dotfiles, dotfiles:desktop, niri]
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "{{ item }}"
|
||||||
|
state: directory
|
||||||
|
owner: "{{ username }}"
|
||||||
|
group: "{{ user_group }}"
|
||||||
|
mode: "0755"
|
||||||
|
loop:
|
||||||
|
- "{{ user_home }}/.config/foot"
|
||||||
|
- "{{ user_home }}/.config/dunst"
|
||||||
|
- "{{ user_home }}/.config/rofi"
|
||||||
|
- "{{ user_home }}/.config/waybar"
|
||||||
|
- "{{ user_home }}/.config/niri"
|
||||||
|
when:
|
||||||
|
- (desktop_environment | default('minimal')) == 'minimal'
|
||||||
|
- "'niri' in (desktop_sessions_enabled | default([]))"
|
||||||
|
|
||||||
|
- name: Install allowed emptty Wayland sessions
|
||||||
|
tags: [packages, services, emptty, niri]
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: niri.desktop
|
||||||
|
dest: /etc/emptty/wayland-sessions/niri.desktop
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0644"
|
||||||
|
when:
|
||||||
|
- (desktop_environment | default('minimal')) == 'minimal'
|
||||||
|
- "'niri' in (desktop_sessions_enabled | default([]))"
|
||||||
|
|
||||||
|
- name: Install Niri session launcher in /usr/local/bin
|
||||||
|
tags: [packages, services, niri]
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: "{{ playbook_dir }}/../dotfiles/desktop/.local/bin/start-niri"
|
||||||
|
dest: /usr/local/bin/start-niri
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0755"
|
||||||
|
when:
|
||||||
|
- (desktop_environment | default('minimal')) == 'minimal'
|
||||||
|
- "'niri' in (desktop_sessions_enabled | default([]))"
|
||||||
|
|
||||||
|
- name: Ensure /etc/xdg/xdg-desktop-portal exists
|
||||||
|
tags: [packages, services, niri, portal]
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: /etc/xdg/xdg-desktop-portal
|
||||||
|
state: directory
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0755"
|
||||||
|
when:
|
||||||
|
- (desktop_environment | default('minimal')) == 'minimal'
|
||||||
|
- "'niri' in (desktop_sessions_enabled | default([]))"
|
||||||
|
|
||||||
|
- name: Configure xdg-desktop-portal backend preferences for niri
|
||||||
|
tags: [packages, services, niri, portal]
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: niri-portals.conf
|
||||||
|
dest: /etc/xdg/xdg-desktop-portal/niri-portals.conf
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0644"
|
||||||
|
when:
|
||||||
|
- (desktop_environment | default('minimal')) == 'minimal'
|
||||||
|
- "'niri' in (desktop_sessions_enabled | default([]))"
|
||||||
|
|
||||||
|
- name: Copy niri desktop dotfiles
|
||||||
|
tags: [dotfiles, dotfiles:desktop, niri]
|
||||||
|
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_niri_dotfiles | default([]) }}"
|
||||||
|
loop_control:
|
||||||
|
label: "{{ item.dest }}"
|
||||||
|
when:
|
||||||
|
- (desktop_environment | default('minimal')) == 'minimal'
|
||||||
|
- "'niri' in (desktop_sessions_enabled | default([]))"
|
||||||
@@ -38,10 +38,18 @@
|
|||||||
- profile_desktop_common
|
- profile_desktop_common
|
||||||
- profile_desktop_sway
|
- profile_desktop_sway
|
||||||
- profile_desktop_hyprland
|
- profile_desktop_hyprland
|
||||||
|
- profile_desktop_niri
|
||||||
- profile_desktop_kde
|
- profile_desktop_kde
|
||||||
- profile_desktop_xfce
|
- profile_desktop_xfce
|
||||||
- profile_desktop_host
|
- profile_desktop_host
|
||||||
|
|
||||||
|
- name: Configure lab role on Void
|
||||||
|
hosts: platform_void:&role_lab
|
||||||
|
become: true
|
||||||
|
|
||||||
|
roles:
|
||||||
|
- profile_lab
|
||||||
|
|
||||||
- name: Configure Linux Mint platform
|
- name: Configure Linux Mint platform
|
||||||
hosts: platform_mint
|
hosts: platform_mint
|
||||||
become: true
|
become: true
|
||||||
|
|||||||
27
dotfiles/desktop/.local/bin/start-niri
Executable file
27
dotfiles/desktop/.local/bin/start-niri
Executable file
@@ -0,0 +1,27 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
[ -r /etc/profile ] && . /etc/profile
|
||||||
|
[ -r "$HOME/.profile" ] && . "$HOME/.profile"
|
||||||
|
|
||||||
|
export XDG_CURRENT_DESKTOP=niri
|
||||||
|
export XDG_SESSION_DESKTOP=niri
|
||||||
|
export XDG_SESSION_TYPE=wayland
|
||||||
|
|
||||||
|
export MOZ_ENABLE_WAYLAND=1
|
||||||
|
export QT_QPA_PLATFORM='wayland;xcb'
|
||||||
|
export _JAVA_AWT_WM_NONREPARENTING=1
|
||||||
|
export SDL_VIDEODRIVER=wayland
|
||||||
|
export GDK_BACKEND='wayland,x11'
|
||||||
|
|
||||||
|
export SSH_AUTH_SOCK="$HOME/.local/state/ssh-agent/socket"
|
||||||
|
|
||||||
|
# Per-host session environment (GPU / Wayland tuning, etc.)
|
||||||
|
[ -r "$HOME/.config/niri/session-env" ] && . "$HOME/.config/niri/session-env"
|
||||||
|
|
||||||
|
exec dbus-run-session sh -eu -c '
|
||||||
|
umask 077
|
||||||
|
printf "%s\n" "$DBUS_SESSION_BUS_ADDRESS" > "$HOME/.dbus-session-bus-address"
|
||||||
|
gpgconf --launch gpg-agent
|
||||||
|
"$HOME/.local/bin/update-turnstile-env"
|
||||||
|
exec niri --session
|
||||||
|
'
|
||||||
Reference in New Issue
Block a user