diff --git a/hosts/storage-2/mixcloud.nix b/hosts/storage-2/mixcloud.nix index 0215d82..f64826f 100644 --- a/hosts/storage-2/mixcloud.nix +++ b/hosts/storage-2/mixcloud.nix @@ -1,6 +1,50 @@ -{ pkgs, ... }: +{ lib, pkgs, ... }: -{ +with lib; + +let + mixcloudSources = { + avocadoom = "https://www.mixcloud.com/avocadoom/"; + b4m = "https://www.mixcloud.com/b4m/"; + barbnerdy = "https://soundcloud.com/barbnerdy"; + beh2342 = "https://soundcloud.com/beh2342"; + couchsofa = "https://www.mixcloud.com/couchsofa/"; + das-kraftfuttermischwerk = "https://soundcloud.com/das-kraftfuttermischwerk"; + dj-spock = "https://www.mixcloud.com/dj_spock/"; + LoungeControl = "https://www.mixcloud.com/LoungeControl/"; + matthiasdamasty = "https://www.mixcloud.com/matthiasdamasty/"; + sh1bumi = "https://soundcloud.com/sh1bumi"; + shroombab = "https://www.mixcloud.com/shroombab/"; + tasmo = "https://www.mixcloud.com/tasmo/"; + vidister = "https://mixcloud.com/vidister/"; + }; + + generateYoutubedlMixcloudUnits = source: url: ( + nameValuePair "youtube-dl-mixcloud-${source}" { + serviceConfig = { + User = "data-mixcloud"; + Group = "data-mixcloud"; + Restart="on-failure"; + }; + path = [ pkgs.youtube-dl ]; + script = '' + mkdir -p /data/mixcloud/${source}/ + cd /data/mixcloud/${source}/ + youtube-dl --ignore-errors --playlist-random --newline ${url} + ''; + startAt = "*-*-* 05:05:00"; + } + ); + + generateYoutubedlMixcloudTimers = source: url: ( + nameValuePair "youtube-dl-mixcloud-${source}" { + timerConfig = { + RandomizedDelaySec = 10800; + }; + } + ); + +in { services.nginx.virtualHosts = { "mixcloud.clerie.de" = { enableACME = true; @@ -23,18 +67,6 @@ }; users.groups.data-mixcloud = {}; - systemd.services."youtube-dl-mixcloud-couchsofa" = { - serviceConfig = { - User = "data-mixcloud"; - Group = "data-mixcloud"; - Restart="on-failure"; - }; - path = [ pkgs.youtube-dl ]; - script = '' - mkdir -p /data/mixcloud/couchsofa/ - cd /data/mixcloud/couchsofa/ - youtube-dl --ignore-errors --playlist-random --newline https://www.mixcloud.com/couchsofa/ - ''; - startAt = "*-*-* 05:05:00"; - }; + systemd.services = (mapAttrs' generateYoutubedlMixcloudUnits mixcloudSources); + systemd.timers = (mapAttrs' generateYoutubedlMixcloudTimers mixcloudSources); }