{ lib, pkgs, config, ... }: { options.myServices.mpd.enable = lib.mkEnableOption "enable MPD"; config = lib.mkIf config.myServices.mpd.enable { services.duplyBackup.profiles.mpd = { rootDir = "/var/lib/mpd"; }; secrets.keys = [ { dest = "mpd"; permissions = "0400"; text = config.myEnv.mpd.password; } { dest = "mpd-config"; permissions = "0400"; user = "mpd"; group = "mpd"; text = '' password "${config.myEnv.mpd.password}@read,add,control,admin" ''; } ]; networking.firewall.allowedTCPPorts = [ 6600 ]; users.users.mpd.extraGroups = [ "wwwrun" "keys" ]; systemd.services.mpd.serviceConfig.RuntimeDirectory = "mpd"; services.filesWatcher.mpd = { restart = true; paths = [ "/var/secrets/mpd-config" ]; }; services.mpd = { enable = true; network.listenAddress = "any"; musicDirectory = config.myEnv.mpd.folder; extraConfig = '' include "/var/secrets/mpd-config" audio_output { type "null" name "No Output" mixer_type "none" } audio_output { type "httpd" name "OGG" encoder "vorbis" bind_to_address "/run/mpd/ogg.sock" quality "5.0" format "44100:16:1" } audio_output { type "httpd" name "MP3" encoder "lame" bind_to_address "/run/mpd/mp3.sock" quality "5.0" format "44100:16:1" } ''; }; }; }