{ pkgs, ... }: let mpdConf = pkgs.writeText "mpd.conf" '' music_directory "~/Music" playlist_directory "~/.mpd/playlists" db_file "~/.mpd/tag_cache" state_file "~/.mpd/state" sticker_file "~/.mpd/sticker.sql" bind_to_address "127.0.0.1" zeroconf_enabled "no" restore_paused "yes" replaygain "track" auto_update "yes" audio_output { type "pulse" name "pulse" } audio_output { type "fifo" name "fifo" path "~/.mpd/fifo" format "44100:16:2" } ''; in { imports = [ ./pulseaudio.nix ]; systemd.user.services.mpd = { after = [ "network.target" "sound.target" ]; description = "Music Player Daemon"; wantedBy = [ "default.target" ]; partOf = [ "default.target" ]; serviceConfig = { ExecStart = "${pkgs.mpd}/bin/mpd --no-daemon ${mpdConf}"; Type = "notify"; ExecStartPre = ''${pkgs.bash}/bin/bash -c "${pkgs.coreutils}/bin/mkdir -p ~/Music ~/.mpd/playlists"''; }; }; environment.systemPackages = with pkgs; [ mpc_cli (pkgs.ncmpcpp.override { visualizerSupport = true; taglibSupport = false; }) ]; }