summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAhmed Abdelhalim <[email protected]>2026-01-08 22:02:58 +0100
committerAhmed Abdelhalim <[email protected]>2026-01-08 22:02:58 +0100
commit6da68a8d57dfe895dde13bc748f6e0d0cabef678 (patch)
tree7d9b9cd94118083082dd93c0df5a139864ee759b
parentd9fb46a80f00e531dbb77d2403bde9aea13bfe75 (diff)
Add pipewire role
-rw-r--r--molecule/archlinux-gnome/converge.yml1
-rw-r--r--molecule/archlinux/converge.yml1
-rw-r--r--molecule/debian/converge.yml1
-rw-r--r--molecule/raspberrypi/converge.yml1
-rw-r--r--molecule/ubuntu/converge.yml1
-rw-r--r--roles/pipewire/meta/argument_specs.yml6
-rw-r--r--roles/pipewire/meta/main.yml18
-rw-r--r--roles/pipewire/tasks/install-archlinux.yml17
-rw-r--r--roles/pipewire/tasks/install-debian.yml18
-rw-r--r--roles/pipewire/tasks/main.yml18
10 files changed, 82 insertions, 0 deletions
diff --git a/molecule/archlinux-gnome/converge.yml b/molecule/archlinux-gnome/converge.yml
index b46634cc..aa18537c 100644
--- a/molecule/archlinux-gnome/converge.yml
+++ b/molecule/archlinux-gnome/converge.yml
@@ -78,3 +78,4 @@
- role: "btop"
- role: "bluetui"
- role: "wlctl"
+ - role: "pipewire"
diff --git a/molecule/archlinux/converge.yml b/molecule/archlinux/converge.yml
index 030dbba8..65326615 100644
--- a/molecule/archlinux/converge.yml
+++ b/molecule/archlinux/converge.yml
@@ -77,4 +77,5 @@
- role: "btop"
- role: "bluetui"
- role: "wlctl"
+ - role: "pipewire"
- role: "hyprland"
diff --git a/molecule/debian/converge.yml b/molecule/debian/converge.yml
index 0b4d2762..a7afd120 100644
--- a/molecule/debian/converge.yml
+++ b/molecule/debian/converge.yml
@@ -87,3 +87,4 @@
- role: "alacritty"
- role: "btop"
- role: "wlctl"
+ - role: "pipewire"
diff --git a/molecule/raspberrypi/converge.yml b/molecule/raspberrypi/converge.yml
index 081843c8..3e18766c 100644
--- a/molecule/raspberrypi/converge.yml
+++ b/molecule/raspberrypi/converge.yml
@@ -84,3 +84,4 @@
- role: "alacritty"
- role: "btop"
- role: "wlctl"
+ - role: "pipewire"
diff --git a/molecule/ubuntu/converge.yml b/molecule/ubuntu/converge.yml
index 621a94b2..266e087d 100644
--- a/molecule/ubuntu/converge.yml
+++ b/molecule/ubuntu/converge.yml
@@ -76,3 +76,4 @@
- role: "alacritty"
- role: "btop"
- role: "wlctl"
+ - role: "pipewire"
diff --git a/roles/pipewire/meta/argument_specs.yml b/roles/pipewire/meta/argument_specs.yml
new file mode 100644
index 00000000..d136c254
--- /dev/null
+++ b/roles/pipewire/meta/argument_specs.yml
@@ -0,0 +1,6 @@
+---
+argument_specs:
+ main:
+ short_description: "Install pipewire on Linux distribution"
+ description: "Install pipewire on Linux distribution"
+ options: {}
diff --git a/roles/pipewire/meta/main.yml b/roles/pipewire/meta/main.yml
new file mode 100644
index 00000000..26d3d93c
--- /dev/null
+++ b/roles/pipewire/meta/main.yml
@@ -0,0 +1,18 @@
+---
+dependencies:
+ - role: "systemd"
+galaxy_info:
+ author: "a14m"
+ description: "Install pipewire"
+ license: "MIT"
+ min_ansible_version: "2.18"
+ platforms:
+ - name: "ArchLinux"
+ versions:
+ - "all"
+ - name: "Ubuntu"
+ versions:
+ - "noble"
+ - name: "Debian"
+ versions:
+ - "bookworm"
diff --git a/roles/pipewire/tasks/install-archlinux.yml b/roles/pipewire/tasks/install-archlinux.yml
new file mode 100644
index 00000000..9f6adcae
--- /dev/null
+++ b/roles/pipewire/tasks/install-archlinux.yml
@@ -0,0 +1,17 @@
+---
+- name: "Ensure pulseaudio is removed"
+ become: true
+ community.general.pacman:
+ name: "pulseaudio"
+ state: "absent"
+ extra_args: "--nosave --recursive"
+
+- name: "Ensure pipewire packages are installed"
+ become: true
+ community.general.pacman:
+ name:
+ - "pipewire"
+ - "wireplumber"
+ - "pipewire-pulse"
+ - "pipewire-alsa"
+ state: "present"
diff --git a/roles/pipewire/tasks/install-debian.yml b/roles/pipewire/tasks/install-debian.yml
new file mode 100644
index 00000000..e9c9b71b
--- /dev/null
+++ b/roles/pipewire/tasks/install-debian.yml
@@ -0,0 +1,18 @@
+---
+- name: "Ensure pulseaudio is removed"
+ become: true
+ ansible.builtin.apt:
+ pkg: "pulseaudio"
+ state: "absent"
+ autoremove: true
+ purge: true
+
+- name: "Ensure pipewire packages are installed"
+ become: true
+ ansible.builtin.apt:
+ pkg:
+ - "pipewire"
+ - "wireplumber"
+ - "pipewire-pulse"
+ - "pipewire-alsa"
+ state: "present"
diff --git a/roles/pipewire/tasks/main.yml b/roles/pipewire/tasks/main.yml
new file mode 100644
index 00000000..870ec6f3
--- /dev/null
+++ b/roles/pipewire/tasks/main.yml
@@ -0,0 +1,18 @@
+---
+- name: "Include OS-specific tasks"
+ ansible.builtin.include_tasks: "install-{{ ansible_os_family | lower }}.yml"
+
+- name: "Ensure pipewire services are restarted"
+ ansible.builtin.systemd_service:
+ name: "{{ item }}"
+ enabled: "true"
+ state: "restarted"
+ scope: "user"
+ loop:
+ - "pipewire"
+ - "pipewire-pulse"
+ - "wireplumber"
+ tags:
+ # Since this is the recommended way for ensuring the services are started
+ # must be ignored from idempotence testing because it always reports changed
+ - molecule-idempotence-notest