mirror of
https://github.com/fscotto/infra.git
synced 2026-07-29 16:20:01 +00:00
Update FreeBSD profile with Niri
This commit is contained in:
@@ -7,6 +7,7 @@ user_shell: /bin/bash
|
||||
effective_username: "{{ username }}"
|
||||
effective_user_group: "{{ user_group }}"
|
||||
effective_user_home: "{{ user_home }}"
|
||||
emacs_enabled: false
|
||||
|
||||
xdg_user_directories:
|
||||
- Desktop
|
||||
|
||||
@@ -94,10 +94,6 @@ desktop_common_dotfiles:
|
||||
src: .bashrc.d/20-editor-desktop.sh
|
||||
dest: .bashrc.d/20-editor-desktop.sh
|
||||
mode: "0644"
|
||||
- name: Bash Emacs client fragment
|
||||
src: .bashrc.d/25-emacs-client-desktop.sh
|
||||
dest: .bashrc.d/25-emacs-client-desktop.sh
|
||||
mode: "0644"
|
||||
- name: Bash VM helper fragment
|
||||
src: .bashrc.d/30-runvm.sh
|
||||
dest: .bashrc.d/30-runvm.sh
|
||||
@@ -170,6 +166,10 @@ desktop_minimal_managed_paths:
|
||||
- .local/bin/udiskie-password
|
||||
|
||||
desktop_emacs_dotfiles:
|
||||
- name: Bash Emacs client fragment
|
||||
src: .bashrc.d/25-emacs-client-desktop.sh
|
||||
dest: .bashrc.d/25-emacs-client-desktop.sh
|
||||
mode: "0644"
|
||||
- name: Emacs config
|
||||
src: .emacs.d/
|
||||
dest: .emacs.d/
|
||||
@@ -239,6 +239,28 @@ desktop_hyprland_dotfiles:
|
||||
dest: .config/foot/
|
||||
mode: preserve
|
||||
|
||||
desktop_niri_dotfiles:
|
||||
- name: foot config
|
||||
src: .config/foot/
|
||||
dest: .config/foot/
|
||||
mode: preserve
|
||||
- name: dunst config
|
||||
src: .config/dunst/
|
||||
dest: .config/dunst/
|
||||
mode: preserve
|
||||
- name: rofi config
|
||||
src: .config/rofi/
|
||||
dest: .config/rofi/
|
||||
mode: preserve
|
||||
- name: waybar config
|
||||
src: .config/waybar/
|
||||
dest: .config/waybar/
|
||||
mode: preserve
|
||||
- name: niri config
|
||||
src: .config/niri/
|
||||
dest: .config/niri/
|
||||
mode: preserve
|
||||
|
||||
desktop_xfce_dotfiles:
|
||||
- name: XFCE configuration
|
||||
src: .config/xfce4/
|
||||
|
||||
3
ansible/inventory/group_vars/desktop_niri.yml
Normal file
3
ansible/inventory/group_vars/desktop_niri.yml
Normal file
@@ -0,0 +1,3 @@
|
||||
---
|
||||
desktop_profile: niri
|
||||
desktop_default_session: niri
|
||||
@@ -75,6 +75,19 @@ freebsd_hyprland_packages:
|
||||
- xdg-desktop-portal-hyprland
|
||||
- xwayland
|
||||
|
||||
freebsd_niri_packages:
|
||||
- cliphist
|
||||
- dunst
|
||||
- foot
|
||||
- grim
|
||||
- niri
|
||||
- rofi-wayland
|
||||
- seatd
|
||||
- slurp
|
||||
- waybar
|
||||
- wl-clipboard
|
||||
- xdg-desktop-portal-gtk
|
||||
|
||||
freebsd_lab_packages:
|
||||
- lldb
|
||||
- llvm
|
||||
|
||||
@@ -38,32 +38,14 @@ mint_development_packages:
|
||||
- python3-venv
|
||||
|
||||
mint_desktop_common_packages:
|
||||
# autoconf/automake/libtool-bin build the Emacs pdf-tools (epdfinfo) and
|
||||
# vterm native modules; the lib*-dev headers below are their link deps.
|
||||
- autoconf
|
||||
- automake
|
||||
- dconf-cli
|
||||
- deja-dup
|
||||
- emacs
|
||||
- firefox
|
||||
- fonts-liberation
|
||||
- fonts-noto-color-emoji
|
||||
- git-delta
|
||||
- gnome-keyring
|
||||
# hunspell CLI + Italian dictionary for Emacs spell checking (spell.el sets
|
||||
# ispell-really-hunspell); hunspell-en-us is pulled in as a dependency.
|
||||
- hunspell
|
||||
- hunspell-it
|
||||
- libfreetype-dev
|
||||
# pdf-tools epdfinfo build deps (poppler); libpng-dev/zlib1g-dev are already
|
||||
# satisfied by other packages.
|
||||
- libpoppler-glib-dev
|
||||
- libpoppler-private-dev
|
||||
- libsecret-tools
|
||||
- libtool-bin
|
||||
# vterm/multi-vterm native module (compiled against system libvterm).
|
||||
- libvterm-dev
|
||||
- libx11-dev
|
||||
- mpv
|
||||
- pinentry-gnome3
|
||||
- pinentry-gtk2
|
||||
@@ -74,6 +56,19 @@ mint_desktop_common_packages:
|
||||
- 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
|
||||
@@ -95,13 +90,11 @@ mint_flatpak_packages:
|
||||
- com.spotify.Client
|
||||
- org.telegram.desktop
|
||||
|
||||
# Nerd Fonts referenced by the desktop configs deployed on Mint (fontconfig
|
||||
# symbols, Emacs UI/vterm). Debian has no equivalent of Void's nerd-fonts-ttf
|
||||
# package, so they are fetched from the upstream ryanoasis/nerd-fonts release.
|
||||
# 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
|
||||
# Archive is named UbuntuSans; it ships the "UbuntuSansMono Nerd Font" faces
|
||||
# referenced by the Emacs UI config.
|
||||
- UbuntuSans
|
||||
- NerdFontsSymbolsOnly
|
||||
|
||||
@@ -100,13 +100,15 @@ desktop_common_packages:
|
||||
- cups-pk-helper
|
||||
- flatpak
|
||||
- libsecret
|
||||
- pinentry-emacs
|
||||
- sane
|
||||
- sane-airscan
|
||||
- turnstile
|
||||
- xdg-desktop-portal
|
||||
- xdg-user-dirs
|
||||
|
||||
desktop_emacs_packages:
|
||||
- pinentry-emacs
|
||||
|
||||
desktop_minimal_packages:
|
||||
- alacritty
|
||||
- blueman
|
||||
@@ -228,7 +230,6 @@ profile_packages:
|
||||
- deluge-gtk
|
||||
- delve
|
||||
- dnsmasq
|
||||
- emacs-pgtk
|
||||
- poppler-glib
|
||||
- poppler-utils
|
||||
- fontconfig-devel
|
||||
@@ -270,3 +271,6 @@ profile_packages:
|
||||
- yaru
|
||||
- yaru-plus
|
||||
- zstd
|
||||
|
||||
profile_emacs_packages:
|
||||
- emacs-pgtk
|
||||
|
||||
@@ -1,44 +1,7 @@
|
||||
---
|
||||
hostname: nymph
|
||||
|
||||
desktop_emptty_session_error_logging: rotate
|
||||
|
||||
host_packages:
|
||||
- nvidia580
|
||||
- linux-mainline-headers
|
||||
- mesa-dri
|
||||
- vulkan-loader
|
||||
- mesa-vulkan-intel
|
||||
- intel-video-accel
|
||||
- power-profiles-daemon
|
||||
- tlp
|
||||
- tlp-rdw
|
||||
- upower
|
||||
|
||||
host_enabled_services:
|
||||
- tlp
|
||||
|
||||
host_sway_dotfiles:
|
||||
- src: .config/sway/host.conf
|
||||
dest: .config/sway/host.conf
|
||||
mode: "0644"
|
||||
- src: .config/sway/session-env
|
||||
dest: .config/sway/session-env
|
||||
mode: "0644"
|
||||
- src: .config/kanshi/
|
||||
dest: .config/kanshi/
|
||||
mode: preserve
|
||||
- src: .config/wireplumber/wireplumber.conf.d/60-camera-priority.conf
|
||||
dest: .config/wireplumber/wireplumber.conf.d/60-camera-priority.conf
|
||||
mode: "0644"
|
||||
|
||||
host_hyprland_dotfiles:
|
||||
- src: .config/hypr/host.conf
|
||||
dest: .config/hypr/host.conf
|
||||
mode: "0644"
|
||||
- src: .config/hypr/session-env
|
||||
dest: .config/hypr/session-env
|
||||
mode: "0644"
|
||||
- src: .config/wireplumber/wireplumber.conf.d/60-camera-priority.conf
|
||||
dest: .config/wireplumber/wireplumber.conf.d/60-camera-priority.conf
|
||||
mode: "0644"
|
||||
# FreeBSD/Niri laptop target. Keep host-specific packages empty until hardware
|
||||
# support is verified on the installed system.
|
||||
host_packages: []
|
||||
host_enabled_services: []
|
||||
|
||||
@@ -10,7 +10,9 @@ all:
|
||||
ansible_connection: local
|
||||
|
||||
platform_freebsd:
|
||||
hosts: {}
|
||||
hosts:
|
||||
nymph:
|
||||
ansible_connection: local
|
||||
|
||||
void:
|
||||
children:
|
||||
@@ -43,8 +45,13 @@ all:
|
||||
desktop_hyprland:
|
||||
hosts: {}
|
||||
|
||||
desktop_niri:
|
||||
hosts:
|
||||
nymph:
|
||||
ansible_connection: local
|
||||
|
||||
desktop_cinnamon:
|
||||
hosts:
|
||||
hosts:
|
||||
ikaros:
|
||||
ansible_connection: local
|
||||
|
||||
|
||||
@@ -17,6 +17,11 @@
|
||||
if 'desktop_hyprland' in group_names
|
||||
else []
|
||||
)
|
||||
+ (
|
||||
(freebsd_niri_packages | default([]))
|
||||
if 'desktop_niri' in group_names
|
||||
else []
|
||||
)
|
||||
+ (
|
||||
(freebsd_lab_packages | default([]))
|
||||
if 'role_lab' in group_names
|
||||
|
||||
@@ -19,6 +19,14 @@
|
||||
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
|
||||
|
||||
@@ -105,7 +105,9 @@
|
||||
(common_packages | default([]))
|
||||
+ (void_packages_base | default([]))
|
||||
+ (profile_packages | default([]))
|
||||
+ ((profile_emacs_packages | default([])) if (emacs_enabled | default(false) | bool) else [])
|
||||
+ (desktop_common_packages | default([]))
|
||||
+ ((desktop_emacs_packages | default([])) if (emacs_enabled | default(false) | bool) else [])
|
||||
+ (packages_void_selected_desktop_packages | default([]))
|
||||
+ (host_packages | default([]))
|
||||
)
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "0755"
|
||||
when: emacs_enabled | default(false) | bool
|
||||
|
||||
- name: Ensure GnuPG directory exists
|
||||
tags: [dotfiles, dotfiles:desktop, git]
|
||||
@@ -71,6 +72,7 @@
|
||||
group: "{{ user_group }}"
|
||||
mode: "{{ item.mode }}"
|
||||
loop: "{{ desktop_emacs_dotfiles | default([]) }}"
|
||||
when: emacs_enabled | default(false) | bool
|
||||
loop_control:
|
||||
label: "{{ item.dest }}"
|
||||
|
||||
|
||||
@@ -315,6 +315,7 @@
|
||||
group: "{{ user_group }}"
|
||||
mode: "{{ item.mode }}"
|
||||
loop: "{{ desktop_emacs_dotfiles | default([]) }}"
|
||||
when: emacs_enabled | default(false) | bool
|
||||
loop_control:
|
||||
label: "{{ item.dest }}"
|
||||
|
||||
@@ -564,7 +565,7 @@
|
||||
label: "{{ item.name }}"
|
||||
|
||||
- name: Install desktop Python tools with uv
|
||||
tags: [packages, emacs]
|
||||
tags: [packages]
|
||||
ansible.builtin.command:
|
||||
cmd: "uv tool install --upgrade {{ item }}"
|
||||
become: true
|
||||
|
||||
41
ansible/roles/profile_desktop_niri_freebsd/tasks/main.yml
Normal file
41
ansible/roles/profile_desktop_niri_freebsd/tasks/main.yml
Normal file
@@ -0,0 +1,41 @@
|
||||
---
|
||||
- name: Ensure FreeBSD Niri user 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"
|
||||
- "{{ user_home }}/.config/dunst"
|
||||
- "{{ user_home }}/.config/foot"
|
||||
- "{{ user_home }}/.config/niri"
|
||||
- "{{ user_home }}/.config/rofi"
|
||||
- "{{ user_home }}/.config/waybar"
|
||||
- "{{ user_home }}/.local"
|
||||
- "{{ user_home }}/.local/bin"
|
||||
- "{{ user_home }}/.local/state"
|
||||
- "{{ user_home }}/.local/state/ssh-agent"
|
||||
|
||||
- name: Copy common Niri desktop dotfiles on FreeBSD
|
||||
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 }}"
|
||||
|
||||
- name: Render FreeBSD Niri session launcher
|
||||
tags: [packages, services, niri]
|
||||
ansible.builtin.template:
|
||||
src: start-niri-session.j2
|
||||
dest: /usr/local/bin/start-niri-session
|
||||
owner: root
|
||||
group: wheel
|
||||
mode: "0755"
|
||||
@@ -0,0 +1,24 @@
|
||||
#!/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"
|
||||
|
||||
[ -r "$HOME/.config/niri/session-env" ] && . "$HOME/.config/niri/session-env"
|
||||
|
||||
if command -v dbus-run-session >/dev/null 2>&1; then
|
||||
exec dbus-run-session niri --session
|
||||
fi
|
||||
|
||||
exec niri --session
|
||||
@@ -79,12 +79,12 @@
|
||||
roles:
|
||||
- profile_lab
|
||||
|
||||
- name: Configure Hyprland desktop on FreeBSD
|
||||
hosts: platform_freebsd:&desktop_hyprland
|
||||
- name: Configure Niri desktop on FreeBSD
|
||||
hosts: platform_freebsd:&desktop_niri
|
||||
become: true
|
||||
|
||||
roles:
|
||||
- profile_desktop_hyprland_freebsd
|
||||
- profile_desktop_niri_freebsd
|
||||
|
||||
- name: Configure Fedora workstation development layer
|
||||
hosts: workstation_dev_fedora
|
||||
|
||||
@@ -29,9 +29,19 @@
|
||||
[mergetool]
|
||||
prompt = false
|
||||
|
||||
[mergetool "meld"]
|
||||
cmd = meld "$LOCAL" "$BASE" "$REMOTE" --output "$MERGED"
|
||||
trustExitCode = false
|
||||
|
||||
[diff]
|
||||
tool = meld
|
||||
|
||||
[difftool]
|
||||
prompt = false
|
||||
|
||||
[difftool "meld"]
|
||||
cmd = meld "$LOCAL" "$REMOTE"
|
||||
|
||||
[color]
|
||||
ui = always
|
||||
|
||||
|
||||
Reference in New Issue
Block a user