diff --git a/books/void_user.yaml b/books/void_user.yaml
index fc1592d..0f3ec00 100644
--- a/books/void_user.yaml
+++ b/books/void_user.yaml
@@ -2,6 +2,12 @@
   hosts: target_system
   become: true
   tasks:
+    - name: Ensure user groups all exist
+      ansible.builtin.group:
+        name: "{{ item }}"
+        state: present
+      loop: "{{ user_groups }}"
+
     - name: Enable sudo for "wheel" group
       ansible.builtin.lineinfile:
         path: "/etc/sudoers"
diff --git a/books/void_wayland.yaml b/books/void_wayland.yaml
index 4da6830..f7b02bc 100644
--- a/books/void_wayland.yaml
+++ b/books/void_wayland.yaml
@@ -39,15 +39,23 @@
           - xdg-desktop-portal-wlr
         state: present
 
-- name: Install audio for wayland
+- 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, video]
+        groups: "{{ audio_groups }}"
         append: true
 
     - name: Install pipewire
@@ -57,7 +65,7 @@
         state: present
       notify: installed-pipewire
 
-    - name: Install pipewire
+    - name: Install pipewire bluetooth
       community.general.xbps:
         name:
           - libspa-bluetooth