summaryrefslogtreecommitdiffstats
path: root/roles/pipewire
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 /roles/pipewire
parentd9fb46a80f00e531dbb77d2403bde9aea13bfe75 (diff)
Add pipewire role
Diffstat (limited to 'roles/pipewire')
-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
5 files changed, 77 insertions, 0 deletions
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