system/books/void_wayland.yaml
Marty Oehme f19ac8bce8
feat(power): Allow user to manage system power states
User is put into the 'power' group, and everyone in the group can
interact with system power events (hibernate, suspend, reboot, shutdown,
halt, etc).
2025-02-26 22:33:06 +01:00

128 lines
3.5 KiB
YAML

- name: Install void wayland environment
hosts: target_system
become: true
tags: wayland
tasks:
- name: Install intel wayland drivers
community.general.xbps:
name:
- mesa-dri
state: present
- name: Install wayland packages
community.general.xbps:
name:
- dbus
- seatd
- turnstile
state: present
# notify: installed-wayland -> TODO: Use handler? Currently using task below
- name: Activate wayland services
ansible.builtin.file:
force: "yes"
src: "/etc/sv/{{ item }}"
dest: "/etc/runit/runsvdir/default/{{ item }}"
state: link
with_items: [dbus, turnstiled, seatd]
- name: Set user service directory to $HOME/.local/state/service
ansible.builtin.copy:
src: runit.conf
dest: /etc/turnstile/backend/runit.conf
mode: 0644
- name: Install wlr desktop portals
community.general.xbps:
name:
- xdg-desktop-portal
- xdg-desktop-portal-wlr
state: present
- name: Install audio and video for wayland
hosts: target_system
become: true
tags: audio
vars:
audio_groups: [audio, video]
tasks:
- name: Ensure user group for audio/video exists
ansible.builtin.group:
name: "{{ item }}"
state: present
loop: "{{ audio_groups }}"
- name: Put user in audio group
ansible.builtin.user:
name: "{{ user_name }}"
groups: "{{ audio_groups }}"
append: true
- name: Install pipewire
community.general.xbps:
name:
- pipewire
state: present
notify: installed-pipewire
- name: Install pipewire bluetooth
community.general.xbps:
name:
- libspa-bluetooth
state: present
tags: bluetooth
handlers:
- name: Set up wireplumber to auto start
ansible.builtin.file:
dest: "/etc/pipewire/pipewire.conf.d"
state: directory
listen: installed-pipewire
# FIXME: Does not work automatically for some reason?
- name: Set up wireplumber to auto start
ansible.builtin.file:
force: "yes"
src: "/usr/share/examples/wireplumber/10-wireplumber.conf"
dest: "/etc/pipewire/pipewire.conf.d/10-wireplumber.conf"
state: link
listen: installed-pipewire
- name: Enable pipewire-pulse interface
ansible.builtin.file:
force: "yes"
src: "/usr/share/examples/pipewire/20-pipewire-pulse.conf"
dest: "/etc/pipewire/pipewire.conf.d/20-pipewire-pulse.conf"
state: link
listen: installed-pipewire
## TODO: Enable its start in river init script
#
# TODO: Find way to install and enable pipewire-roc-sink module (and enable ~/.config/pipewire/pipewire.conf.d/roc-sink.conf)
- name: Allow user to manage system power
hosts: target_system
become: true
tags:
- power
tasks:
- name: Ensure user group "power" exists
ansible.builtin.group:
name: power
state: present
- name: Put user in power group
ansible.builtin.user:
name: "{{ user_name }}"
groups: [power]
append: true
- name: Enable power management for power group
ansible.builtin.copy:
content: "%power ALL=(ALL) NOPASSWD: /usr/bin/halt, /usr/bin/poweroff, /usr/bin/reboot, /usr/bin/shutdown, /usr/bin/zzz, /usr/bin/ZZZ"
dest: "/etc/sudoers.d/20-wheel"
owner: root
group: root
mode: 0644
force: true