Wireplumber.service unit won't start

I’m using pipewire and while pipewire.service starts after booting, wireplumber.service doesn’t. After running journalctl -b | grep -i wireplumber, I get the following output:

Jan 02 16:32:28 nixos systemd[1906]: wireplumber.service: Failed to open /home/jon/.config/systemd/user/wireplumber.service: No such file or directory

cd /home/jon/.config/systemd/user/wireplumber.service returns the following output:

cd: '/home/jon/.config/systemd/user/wireplumber.service' is a broken symbolic link to '/nix/store/4awbxhh2j40dfkc4cfq1b879j6b20s97-wireplumber-0.4.11/lib/systemd/user/wireplumber.service'

It turns out that wireplumber.service is a broken symbolic link to a store path that no longer exists. readlink -f also returns nothing.

If I want to get sound to work I have to start wireplumber manually by running wireplumber, but when I try to start the user unit with systemctl restart --user wireplumber I get:

Failed to restart wireplumber.service: Unit wireplumber.service not found.

I find this confusing because I can see it exists in /etc/systemd/user/ and the symbolic link isn’t broken.

This is my NixOS version:

NixOS, 22.11 (Raccoon), 22.11.1315.6a0d2701705

and kernel version:

Linux 6.1.1

Here is a snippet from my configuration.nix:

 services.pipewire = {
    audio.enable = true; 
    enable = true;
    alsa.enable = true;
    alsa.support32Bit = true;
    pulse.enable = true;
    jack.enable = true;
    wireplumber.enable = true;
  };

Any help would be greatly appreciated.

I would try deleting the broken symlink, to see if that causes systemd --user to fall back to the unit file in /etc.

1 Like

To think it was that easy, I feel stupid now. Thanks a lot!