Skip to content

MPD??????

Yes I know i spent about 4 hours tearing my hair out aswell.

But do not fear, I have the solution.

INFO

Replace ${user} with your username or keep it the same if you have a user variable set.

TIP

The below uses Pipewire, see the NixOS Wiki page for more information if you are using a different audio server.

configuration.nix

nix
  services = {
    mpd = {
      enable = true;
      musicDirectory = "/home/${user}/Music";
      user = "${user}";
      extraConfig = ''
        audio_output {
          type "pipewire"
          name "Pipewire Output"
        }
      '';
    };
  };

  # Important
  systemd = {
    services = {
      mpd.environment = {
        XDG_RUNTIME_DIR = "/run/user/1000";
      };
    };
  };

TIP

Also include mpdris2 in your packages list and autostart it(mpDris2 --music-dir=~/Music &) if you want tools like Playerctl to be able to interact with MPD.