Restarting audio
· 2 min read · January 19, 2026 · #tech #linux #nixos #configI run, at least for the time being, NixOS, generally from the main / unstable branch rather than a stable release. After a recent upgrade I found audio was not working, most likely because pipewire appeared to have stopped running. This is a jotting of the runes I invoked to restart it.1
First, check whether any suitable looking process seems to be running:
: mort@greyjay:~$; procs pipewire
PID:▲ User │ TTY CPU MEM CPU Time │ Command
│ [%] [%] │
6008 mort │ 0.0 0.8 00:00:22 │ /nix/store/ka3w75gd28llnz2ns8p9svlhl16mxaxi-slack-4.47.59/lib/slac...
6304 mort │ 0.0 0.3 00:00:09 │ /proc/self/exe --type=utility --utility-sub-type=network.mojom.Net...
7171 mort │ 0.0 0.2 00:00:01 │ /proc/self/exe --type=utility --utility-sub-type=audio.mojom.Audio...
: mort@greyjay:~$; procs pulseaudio
PID:▲ User │ TTY CPU MEM CPU Time │ Command
│ [%] [%] │Then try to restart pipewire itself. First, as a user service:
: mort@greyjay:~$; systemctl --user restart pipewire
Failed to restart pipewire.service: Unit pipewire.service not found.Doesn’t exist so retry as a system service:
: mort@greyjay:~$; systemctl restart pipewire
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ====
Authentication is required to restart 'pipewire.service'.
Authenticating as: mort
Password:
==== AUTHENTICATION COMPLETE ====
Failed to restart pipewire.service: Unit pipewire.service is masked.Bother. It’s masked. And unmasking doesn’t work due to NixOS using a read-only partition:
: mort@greyjay:~$; systemctl unmask pipewire
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-unit-files ====
Authentication is required to manage system service or unit files.
Authenticating as: mort
Password:
==== AUTHENTICATION COMPLETE ====
Failed to unmask unit: File /etc/systemd/system/pipewire.service: Read-only file systemHmm. Maybe it’s not just pipewire – what about wireplumber?
: mort@greyjay:~$; ll /etc/systemd/system/wireplumber.service
lrwxrwxrwx - root root 1970-01-01 00:00 /etc/systemd/system/wireplumber.service -> /dev/nullThat’s a red-herring – this is a user service, so let’s look for our user units:
: mort@greyjay:~$; ll ~/.config/systemd/user/
drwxrwxr-x - mort users 2025-12-22 11:31 default.target.wants/
drwxr-xr-x - mort users 2025-12-22 11:31 graphical-session-pre.target.wants/
drwxrwxr-x - mort users 2025-12-22 11:31 graphical-session.target.wants/
drwxr-xr-x - mort users 2025-12-22 11:31 sockets.target.wants/
drwxr-xr-x - mort users 2025-12-22 11:31 sway-session.target.wants/
lrwxrwxrwx - mort users 2025-12-22 11:31 emacs.service -> /nix/store/vgn3nh0sij9gazgf5cjq7j7bvnwr8bnk-home-manager-files/.config/systemd/user/emacs.service
lrwxrwxrwx - mort users 2025-12-22 11:31 gammastep.service -> /nix/store/vgn3nh0sij9gazgf5cjq7j7bvnwr8bnk-home-manager-files/.config/systemd/user/gammastep.service
lrwxrwxrwx - mort users 2025-12-22 11:31 gnome-keyring.service -> /nix/store/vgn3nh0sij9gazgf5cjq7j7bvnwr8bnk-home-manager-files/.config/systemd/user/gnome-keyring.service
lrwxrwxrwx - mort users 2025-12-22 11:31 gpg-agent-ssh.socket -> /nix/store/vgn3nh0sij9gazgf5cjq7j7bvnwr8bnk-home-manager-files/.config/systemd/user/gpg-agent-ssh.socket
lrwxrwxrwx - mort users 2025-12-22 11:31 gpg-agent.service -> /nix/store/vgn3nh0sij9gazgf5cjq7j7bvnwr8bnk-home-manager-files/.config/systemd/user/gpg-agent.service
lrwxrwxrwx - mort users 2025-12-22 11:31 gpg-agent.socket -> /nix/store/vgn3nh0sij9gazgf5cjq7j7bvnwr8bnk-home-manager-files/.config/systemd/user/gpg-agent.socket
lrwxrwxrwx - mort users 2025-12-22 11:31 kanshi.service -> /nix/store/vgn3nh0sij9gazgf5cjq7j7bvnwr8bnk-home-manager-files/.config/systemd/user/kanshi.service
lrwxrwxrwx - mort users 2025-12-22 11:31 kbfs.service -> /nix/store/vgn3nh0sij9gazgf5cjq7j7bvnwr8bnk-home-manager-files/.config/systemd/user/kbfs.service
lrwxrwxrwx - mort users 2025-12-22 11:31 keybase.service -> /nix/store/vgn3nh0sij9gazgf5cjq7j7bvnwr8bnk-home-manager-files/.config/systemd/user/keybase.service
lrwxrwxrwx - mort users 2025-04-11 15:08 pipewire-pulse.service -> /nix/store/xir78j1r5bk42jjxsszjwfx93sjc0d93-pipewire-1.4.1/share/systemd/user/pipewire-pulse.service
lrwxrwxrwx - mort users 2025-04-11 15:08 pipewire-pulse.socket -> /nix/store/xir78j1r5bk42jjxsszjwfx93sjc0d93-pipewire-1.4.1/share/systemd/user/pipewire-pulse.socket
lrwxrwxrwx - mort users 2025-04-11 15:08 pipewire.service -> /nix/store/xir78j1r5bk42jjxsszjwfx93sjc0d93-pipewire-1.4.1/share/systemd/user/pipewire.service
lrwxrwxrwx - mort users 2025-04-11 15:08 pipewire.socket -> /nix/store/xir78j1r5bk42jjxsszjwfx93sjc0d93-pipewire-1.4.1/share/systemd/user/pipewire.socket
lrwxrwxrwx - mort users 2025-12-22 11:31 sway-session.target -> /nix/store/vgn3nh0sij9gazgf5cjq7j7bvnwr8bnk-home-manager-files/.config/systemd/user/sway-session.target
lrwxrwxrwx - mort users 2025-12-22 11:31 swayidle.service -> /nix/store/vgn3nh0sij9gazgf5cjq7j7bvnwr8bnk-home-manager-files/.config/systemd/user/swayidle.service
lrwxrwxrwx - mort users 2025-12-22 11:31 swayosd.service -> /nix/store/vgn3nh0sij9gazgf5cjq7j7bvnwr8bnk-home-manager-files/.config/systemd/user/swayosd.service
lrwxrwxrwx - mort users 2025-12-22 11:31 tray.target -> /nix/store/vgn3nh0sij9gazgf5cjq7j7bvnwr8bnk-home-manager-files/.config/systemd/user/tray.targetHmm. wireplumber is missing. Try enabling it:
: mort@greyjay:~$; systemctl --user enable wireplumber
Created symlink '/home/mort/.config/systemd/user/wireplumber.service' → '/nix/store/3jk8py96bwnn0sgl1r0dwr0vif4cvivw-wireplumber-0.5.12/share/systemd/user/wireplumber.service'.
Created symlink '/home/mort/.config/systemd/user/pipewire-session-manager.service' → '/home/mort/.config/systemd/user/wireplumber.service'.
Created symlink '/home/mort/.config/systemd/user/pipewire.service.wants/wireplumber.service' → '/nix/store/3jk8py96bwnn0sgl1r0dwr0vif4cvivw-wireplumber-0.5.12/share/systemd/user/wireplumber.service'.
Unit /nix/store/3jk8py96bwnn0sgl1r0dwr0vif4cvivw-wireplumber-0.5.12/share/systemd/user/wireplumber.service is added as a dependency to a non-existent unit pipewire.service.
Unit /nix/store/3jk8py96bwnn0sgl1r0dwr0vif4cvivw-wireplumber-0.5.12/share/systemd/user/wireplumber.service is added as a dependency to a non-existent unit pipewire.service.Oho! That did something.
: mort@greyjay:~$; ll ~/.config/systemd/user/
drwxrwxr-x - mort users 2025-12-22 11:31 default.target.wants/
drwxr-xr-x - mort users 2025-12-22 11:31 graphical-session-pre.target.wants/
drwxrwxr-x - mort users 2025-12-22 11:31 graphical-session.target.wants/
drwxr-xr-x - mort users 2025-12-22 14:54 pipewire.service.wants/
drwxr-xr-x - mort users 2025-12-22 11:31 sockets.target.wants/
drwxr-xr-x - mort users 2025-12-22 11:31 sway-session.target.wants/
lrwxrwxrwx - mort users 2025-12-22 11:31 emacs.service -> /nix/store/vgn3nh0sij9gazgf5cjq7j7bvnwr8bnk-home-manager-files/.config/systemd/user/emacs.service
lrwxrwxrwx - mort users 2025-12-22 11:31 gammastep.service -> /nix/store/vgn3nh0sij9gazgf5cjq7j7bvnwr8bnk-home-manager-files/.config/systemd/user/gammastep.service
lrwxrwxrwx - mort users 2025-12-22 11:31 gnome-keyring.service -> /nix/store/vgn3nh0sij9gazgf5cjq7j7bvnwr8bnk-home-manager-files/.config/systemd/user/gnome-keyring.service
lrwxrwxrwx - mort users 2025-12-22 11:31 gpg-agent-ssh.socket -> /nix/store/vgn3nh0sij9gazgf5cjq7j7bvnwr8bnk-home-manager-files/.config/systemd/user/gpg-agent-ssh.socket
lrwxrwxrwx - mort users 2025-12-22 11:31 gpg-agent.service -> /nix/store/vgn3nh0sij9gazgf5cjq7j7bvnwr8bnk-home-manager-files/.config/systemd/user/gpg-agent.service
lrwxrwxrwx - mort users 2025-12-22 11:31 gpg-agent.socket -> /nix/store/vgn3nh0sij9gazgf5cjq7j7bvnwr8bnk-home-manager-files/.config/systemd/user/gpg-agent.socket
lrwxrwxrwx - mort users 2025-12-22 11:31 kanshi.service -> /nix/store/vgn3nh0sij9gazgf5cjq7j7bvnwr8bnk-home-manager-files/.config/systemd/user/kanshi.service
lrwxrwxrwx - mort users 2025-12-22 11:31 kbfs.service -> /nix/store/vgn3nh0sij9gazgf5cjq7j7bvnwr8bnk-home-manager-files/.config/systemd/user/kbfs.service
lrwxrwxrwx - mort users 2025-12-22 11:31 keybase.service -> /nix/store/vgn3nh0sij9gazgf5cjq7j7bvnwr8bnk-home-manager-files/.config/systemd/user/keybase.service
lrwxrwxrwx - mort users 2025-04-11 15:08 pipewire-pulse.service -> /nix/store/xir78j1r5bk42jjxsszjwfx93sjc0d93-pipewire-1.4.1/share/systemd/user/pipewire-pulse.service
lrwxrwxrwx - mort users 2025-04-11 15:08 pipewire-pulse.socket -> /nix/store/xir78j1r5bk42jjxsszjwfx93sjc0d93-pipewire-1.4.1/share/systemd/user/pipewire-pulse.socket
lrwxrwxrwx - mort users 2025-12-22 14:54 pipewire-session-manager.service -> /home/mort/.config/systemd/user/wireplumber.service
lrwxrwxrwx - mort users 2025-04-11 15:08 pipewire.service -> /nix/store/xir78j1r5bk42jjxsszjwfx93sjc0d93-pipewire-1.4.1/share/systemd/user/pipewire.service
lrwxrwxrwx - mort users 2025-04-11 15:08 pipewire.socket -> /nix/store/xir78j1r5bk42jjxsszjwfx93sjc0d93-pipewire-1.4.1/share/systemd/user/pipewire.socket
lrwxrwxrwx - mort users 2025-12-22 11:31 sway-session.target -> /nix/store/vgn3nh0sij9gazgf5cjq7j7bvnwr8bnk-home-manager-files/.config/systemd/user/sway-session.target
lrwxrwxrwx - mort users 2025-12-22 11:31 swayidle.service -> /nix/store/vgn3nh0sij9gazgf5cjq7j7bvnwr8bnk-home-manager-files/.config/systemd/user/swayidle.service
lrwxrwxrwx - mort users 2025-12-22 11:31 swayosd.service -> /nix/store/vgn3nh0sij9gazgf5cjq7j7bvnwr8bnk-home-manager-files/.config/systemd/user/swayosd.service
lrwxrwxrwx - mort users 2025-12-22 11:31 tray.target -> /nix/store/vgn3nh0sij9gazgf5cjq7j7bvnwr8bnk-home-manager-files/.config/systemd/user/tray.target
lrwxrwxrwx - mort users 2025-12-22 14:54 wireplumber.service -> /nix/store/3jk8py96bwnn0sgl1r0dwr0vif4cvivw-wireplumber-0.5.12/share/systemd/user/wireplumber.serviceI also noticed that some of those symlinks were dangling, so I removed them:
: mort@greyjay:user$; rm pipewire-pulse.service pipewire-pulse.socket pipewire.service pipewire.socket
: mort@greyjay:user$; ll
drwxrwxr-x - mort users 2025-12-22 14:55 default.target.wants/
drwxr-xr-x - mort users 2025-12-22 14:55 graphical-session-pre.target.wants/
drwxrwxr-x - mort users 2025-12-22 14:55 graphical-session.target.wants/
drwxr-xr-x - mort users 2025-12-22 14:54 pipewire.service.wants/
drwxr-xr-x - mort users 2025-12-22 14:55 sockets.target.wants/
drwxr-xr-x - mort users 2025-12-22 14:55 sway-session.target.wants/
lrwxrwxrwx - mort users 2025-12-22 14:55 emacs.service -> /nix/store/prhy3gb8fhy6yrjrpq98v6biy9zwg9y1-home-manager-files/.config/systemd/user/emacs.service
lrwxrwxrwx - mort users 2025-12-22 14:55 gammastep.service -> /nix/store/prhy3gb8fhy6yrjrpq98v6biy9zwg9y1-home-manager-files/.config/systemd/user/gammastep.service
lrwxrwxrwx - mort users 2025-12-22 14:55 gnome-keyring.service -> /nix/store/prhy3gb8fhy6yrjrpq98v6biy9zwg9y1-home-manager-files/.config/systemd/user/gnome-keyring.service
lrwxrwxrwx - mort users 2025-12-22 14:55 gpg-agent-ssh.socket -> /nix/store/prhy3gb8fhy6yrjrpq98v6biy9zwg9y1-home-manager-files/.config/systemd/user/gpg-agent-ssh.socket
lrwxrwxrwx - mort users 2025-12-22 14:55 gpg-agent.service -> /nix/store/prhy3gb8fhy6yrjrpq98v6biy9zwg9y1-home-manager-files/.config/systemd/user/gpg-agent.service
lrwxrwxrwx - mort users 2025-12-22 14:55 gpg-agent.socket -> /nix/store/prhy3gb8fhy6yrjrpq98v6biy9zwg9y1-home-manager-files/.config/systemd/user/gpg-agent.socket
lrwxrwxrwx - mort users 2025-12-22 14:55 kanshi.service -> /nix/store/prhy3gb8fhy6yrjrpq98v6biy9zwg9y1-home-manager-files/.config/systemd/user/kanshi.service
lrwxrwxrwx - mort users 2025-12-22 14:55 kbfs.service -> /nix/store/prhy3gb8fhy6yrjrpq98v6biy9zwg9y1-home-manager-files/.config/systemd/user/kbfs.service
lrwxrwxrwx - mort users 2025-12-22 14:55 keybase.service -> /nix/store/prhy3gb8fhy6yrjrpq98v6biy9zwg9y1-home-manager-files/.config/systemd/user/keybase.service
lrwxrwxrwx - mort users 2025-12-22 14:54 pipewire-session-manager.service -> /home/mort/.config/systemd/user/wireplumber.service
lrwxrwxrwx - mort users 2025-12-22 14:55 sway-session.target -> /nix/store/prhy3gb8fhy6yrjrpq98v6biy9zwg9y1-home-manager-files/.config/systemd/user/sway-session.target
lrwxrwxrwx - mort users 2025-12-22 14:55 swayidle.service -> /nix/store/prhy3gb8fhy6yrjrpq98v6biy9zwg9y1-home-manager-files/.config/systemd/user/swayidle.service
lrwxrwxrwx - mort users 2025-12-22 14:55 swayosd.service -> /nix/store/prhy3gb8fhy6yrjrpq98v6biy9zwg9y1-home-manager-files/.config/systemd/user/swayosd.service
lrwxrwxrwx - mort users 2025-12-22 14:55 tray.target -> /nix/store/prhy3gb8fhy6yrjrpq98v6biy9zwg9y1-home-manager-files/.config/systemd/user/tray.target
lrwxrwxrwx - mort users 2025-12-22 14:54 wireplumber.service -> /nix/store/3jk8py96bwnn0sgl1r0dwr0vif4cvivw-wireplumber-0.5.12/share/systemd/user/wireplumber.serviceFinally, check statuses and restart things as needed:
: mort@greyjay:user$; systemctl --user status pipewire
● pipewire.service - PipeWire Multimedia Service
Loaded: loaded (/etc/systemd/user/pipewire.service; enabled; preset: ignored)
Drop-In: /nix/store/6sqgdcfscsq254xdq93sv0hjjyv0dz1i-user-units/pipewire.service.d
└─overrides.conf
Active: active (running) since Mon 2025-12-22 14:57:29 GMT; 6s ago
Invocation: 6c08e0e9e0de494aa8f7491011d8d514
TriggeredBy: ● pipewire.socket
Main PID: 42345 (pipewire)
Tasks: 4 (limit: 37987)
Memory: 8M (peak: 8.2M)
CPU: 50ms
CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire.service
└─42345 /nix/store/334afxah19b3hr6ll93pfxlcyhhh2vws-pipewire-1.4.9/bin/pipewire
Dec 22 14:57:29 greyjay systemd[3323]: Started PipeWire Multimedia Service.
: mort@greyjay:user$; systemctl --user restart pipewire-pulse
: mort@greyjay:user$; systemctl --user status pipewire-pulse
● pipewire-pulse.service - PipeWire PulseAudio
Loaded: loaded (/etc/systemd/user/pipewire-pulse.service; enabled; preset: ignored)
Drop-In: /nix/store/6sqgdcfscsq254xdq93sv0hjjyv0dz1i-user-units/pipewire-pulse.service.d
└─overrides.conf
Active: active (running) since Mon 2025-12-22 14:57:46 GMT; 4s ago
Invocation: 46833e7c144a4b608ff829fe0c644594
TriggeredBy: ● pipewire-pulse.socket
Main PID: 42442 (pipewire-pulse)
Tasks: 3 (limit: 37987)
Memory: 2.7M (peak: 3M)
CPU: 24ms
CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire-pulse.service
└─42442 /nix/store/334afxah19b3hr6ll93pfxlcyhhh2vws-pipewire-1.4.9/bin/pipewire-pulse
Dec 22 14:57:46 greyjay systemd[3323]: Started PipeWire PulseAudio.That seemed to fix things anyway.
Note that this is pasted from my terminal so you may need my shell aliases if you just want to cut’n’paste, not that I recommend it particularly.