{ config, pkgs, lib, ... }: with lib; let configuration = { Chaospott37C3Tickets = rec { url = "https://md.chaospott.de/171s8-_cQCyX_tUca_Jxqw/download"; target = "/media/curl/37C3"; options = [ "-o $( date +%H:%M:%S )-TicketPlaning.md" ]; }; StableConfussion = { url = "http://stable-confusion.r/outputs/"; target = "/media/curl/stable-confusion"; options = [ "--mirror" ]; command = "wget"; }; }; downloadScript = name: { url , options , target , command ? "curl" }: pkgs.writers.writeDash "curl-script-${name}" '' mkdir -p "${target}" cd "${target}" ${command} ${concatStringsSep " " options} "${url}" ''; in { systemd.services.curl-download = { after = [ "network.target" ]; path = [ pkgs.curl pkgs.wget ]; serviceConfig = { User = "media"; Group = "media"; }; script = (concatStringsSep "\n" (mapAttrsToList downloadScript configuration) ); }; systemd.timers.curl-download = { enable = true; wantedBy = [ "multi-user.target" ]; timerConfig = { OnCalendar = "hourly"; Persistent = "true"; }; }; }