diff --git a/systems/zaatar/configuration.nix b/systems/zaatar/configuration.nix index 0b45c93..ec57ad5 100644 --- a/systems/zaatar/configuration.nix +++ b/systems/zaatar/configuration.nix @@ -15,6 +15,7 @@ in { ./pulseaudio.nix ./home-assistant.nix ./tuna.nix + ./mympd.nix ./grocy.nix ./spotifyd.nix diff --git a/systems/zaatar/mympd.nix b/systems/zaatar/mympd.nix new file mode 100644 index 0000000..2992cb9 --- /dev/null +++ b/systems/zaatar/mympd.nix @@ -0,0 +1,57 @@ +{pkgs, ...}: let + inherit (import ) tmpfilesConfig; +in { + systemd.tmpfiles.rules = [ + (tmpfilesConfig { + type = "d"; + mode = "0755"; + user = "mympd"; + group = "mympd"; + path = "/var/lib/mympd"; + }) + (tmpfilesConfig { + type = "d"; + mode = "0755"; + user = "mympd"; + group = "mympd"; + age = "1d"; + path = "/var/cache/mympd"; + }) + (tmpfilesConfig { + type = "L+"; + mode = "0644"; + user = "mympd"; + group = "mympd"; + path = "/var/lib/mympd/config/http_port"; + argument = pkgs.writeText "port" "8764"; + }) + (tmpfilesConfig { + type = "L+"; + mode = "0644"; + user = "mympd"; + group = "mympd"; + path = "/var/lib/mympd/config/ssl"; + argument = pkgs.writeText "ssl" "false"; + }) + ]; + + users.users.mympd = { + isSystemUser = true; + group = "mympd"; + }; + users.groups.mympd = {}; + + systemd.services.mympd = { + wantedBy = ["multi-user.target"]; + after = ["mpd.service"]; + script = "${pkgs.mympd}/bin/mympd"; + environment = { + MYMPD_HTTP_PORT = "8764"; + }; + serviceConfig = { + Restart = "always"; + User = "mympd"; + Group = "mympd"; + }; + }; +} diff --git a/systems/zaatar/tuna.nix b/systems/zaatar/tuna.nix index f5b77af..ed88d25 100644 --- a/systems/zaatar/tuna.nix +++ b/systems/zaatar/tuna.nix @@ -74,8 +74,8 @@ in { systemd.tmpfiles.rules = let tags = lib.lists.unique (lib.concatMap ({tags ? [], ...}: tags) streams); - tagStreams = tag: map (lib.getAttr "stream") (lib.filter ({tags ? [], ...}: lib.elem tag tags) streams); - makePlaylist = name: urls: pkgs.writeText "${name}.m3u" (lib.concatStringsSep "\n" urls); + tagStreams = tag: lib.filter ({tags ? [], ...}: lib.elem tag tags) streams; + makePlaylist = name: streams: pkgs.writeText "${name}.m3u" (lib.concatMapStringsSep "\n" (lib.getAttr "stream") streams); in map (tag: tmpfilesConfig { @@ -87,7 +87,7 @@ in { argument = makePlaylist tag (tagStreams tag); }) tags - + [ + ++ [ (tmpfilesConfig { type = "L+"; mode = "0644";