1
0
mirror of https://github.com/kmein/niveum synced 2026-03-16 18:21:07 +01:00

fix(mpd): integrate di.fm secret into playlist

This commit is contained in:
2023-07-25 16:19:21 +02:00
parent 2d1e11c0e7
commit 92bf5ab0ee

View File

@@ -10,7 +10,7 @@
mukkeMountPoint = "/mnt/mukke"; mukkeMountPoint = "/mnt/mukke";
streams = import ../../lib/streams.nix { streams = import ../../lib/streams.nix {
di-fm-key = ""; # TODO lib.strings.fileContents <secrets/di.fm/key>; di-fm-key = "%DI_FM_KEY%"; # TODO lib.strings.fileContents <secrets/di.fm/key>;
}; };
multi-room-audio-port = 8000; multi-room-audio-port = 8000;
in { in {
@@ -61,6 +61,17 @@ in {
]; ];
}; };
systemd.tmpfiles.rules = [
(tmpfilesConfig {
type = "L+";
mode = "0644";
user = "mpd";
group = "mpd";
path = "${config.services.mpd.musicDirectory}/mukke";
argument = mukkeMountPoint;
})
];
environment.systemPackages = [pkgs.mpc_cli]; environment.systemPackages = [pkgs.mpc_cli];
networking.firewall = let networking.firewall = let
@@ -82,41 +93,44 @@ in {
extraStopCommands = firewall.removeRules rules; extraStopCommands = firewall.removeRules rules;
}; };
# to reset: systemd.services.mpd-playlists = {
# ssh zaatar 'rm /var/lib/mpd/playlists/*.m3u && systemd-tmpfiles --create' before = ["mpd.service"];
systemd.tmpfiles.rules = let wantedBy = ["mpd.service"];
script = let
tags = lib.lists.unique (lib.concatMap ({tags ? [], ...}: tags) streams); tags = lib.lists.unique (lib.concatMap ({tags ? [], ...}: tags) streams);
tagStreams = tag: lib.filter ({tags ? [], ...}: lib.elem tag tags) streams; tagStreams = tag: lib.filter ({tags ? [], ...}: lib.elem tag tags) streams;
makePlaylist = name: streams: pkgs.writeText "${name}.m3u" (lib.concatMapStringsSep "\n" (lib.getAttr "stream") streams); makePlaylist = name: streams: pkgs.writeText "${name}.m3u" (lib.concatMapStringsSep "\n" (lib.getAttr "stream") streams);
in playlistDirectory = pkgs.linkFarm "playlists" (
map (tag: [
tmpfilesConfig { {
type = "L+"; name = "all.m3u";
path = "/var/lib/mpd/playlists/${tag}.m3u"; path = makePlaylist "all" streams;
mode = "0644"; }
user = "mpd"; ]
group = "mpd"; ++ map (tag: {
argument = makePlaylist tag (tagStreams tag); name = "${tag}.m3u";
path = makePlaylist tag (tagStreams tag);
}) })
tags tags
++ [ );
(tmpfilesConfig { playlistDirectoryPath = "/var/lib/mpd/playlists";
type = "L+"; in ''
mode = "0644"; export DI_FM_KEY="$(cat "$CREDENTIALS_DIRECTORY/di-fm-key")"
user = "mpd";
group = "mpd"; rm -rf ${playlistDirectoryPath}
path = "/var/lib/mpd/playlists/all.m3u"; mkdir ${playlistDirectoryPath}
argument = makePlaylist "all" streams;
}) for m3u in $(ls ${playlistDirectory})
(tmpfilesConfig { do
type = "L+"; ${pkgs.gnused}/bin/sed s/%DI_FM_KEY%/"$DI_FM_KEY"/g ${playlistDirectory}/"$m3u" > ${playlistDirectoryPath}/"$(basename "$m3u")"
mode = "0644"; done
user = "mpd"; '';
group = "mpd"; serviceConfig = {
path = "${config.services.mpd.musicDirectory}/mukke"; LoadCredential = [
argument = mukkeMountPoint; "di-fm-key:${config.age.secrets.di-fm-key.path}"
})
]; ];
};
};
services.ympd = { services.ympd = {
enable = true; enable = true;