User is put into the 'power' group, and everyone in the group can interact with system power events (hibernate, suspend, reboot, shutdown, halt, etc).
128 lines
3.5 KiB
YAML
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
|