{ config, lib, pkgs, ... }: let cfg = config.modules.services.media.mpd; inherit (config.meta.mainUser) username; inherit (lib.modules) mkIf; inherit (lib.types) str; inherit (lib.options) mkOption mkEnableOption; in { options.modules.services = { media = { mpd = { enable = mkEnableOption "mpd service"; musicDirectory = mkOption { description = "music directory for mpd"; type = str; default = "/home/${username}/cloud/media/Music"; }; }; }; }; config = mkIf cfg.enable { # command line interface to mpd environment.systemPackages = [pkgs.mpc]; systemd.services.mpd.environment = { # https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/609 XDG_RUNTIME_DIR = "/run/user/1000"; }; services.mpd = { enable = true; inherit (cfg) musicDirectory; user = username; startWhenNeeded = true; extraConfig = '' restore_paused "yes" auto_update "yes" audio_output { type "pipewire" name "PipeWire Sound Server" } audio_output { type "fifo" name "FIFO" path "/tmp/mpd.fifo" format "44100:16:2" } ''; }; }; }