{ config, lib, pkgs, ... }: let containers = { archiveteam-imgur = { image = "imgur-grab"; scale = 1; }; archiveteam-telegram = { image = "telegram-grab"; scale = 3; }; archiveteam-reddit = { image = "reddit-grab"; scale = 0; }; archiveteam-dpreview = { image = "dpreview-grab"; scale = 0; }; archiveteam-issuu = { image = "issuu-grab"; scale = 0; }; archiveteam-urls = { image = "urls-grab"; scale = 2; }; archiveteam-urlteam = { image = "terroroftinytown-client-grab"; scale = 2; }; archiveteam-mediafire = { image = "mediafire-grab"; scale = 1; }; archiveteam-github = { image = "github-grab"; scale = 1; }; archiveteam-lineblog = { image = "lineblog-grab"; scale = 0; }; archiveteam-banciyuan = { image = "banciyuan-grab"; scale = 0; }; archiveteam-wysp = { image = "wysp-grab"; scale = 0; }; archiveteam-xuite = { image = "xuite-grab"; scale = 0; }; archiveteam-gfycat = { image = "gfycat-grab"; scale = 0; }; archiveteam-skyblog = { image = "skyblog-grab"; scale = 0; }; archiveteam-zowa = { image = "zowa-grab"; scale = 0; }; archiveteam-blogger = { image = "blogger-grab"; scale = 1; }; archiveteam-vbox7 = { image = "vbox7-grab"; scale = 0; }; archiveteam-pastebin = { image = "pastebin-grab"; scale = 1; }; archiveteam-youtube = { image = "youtube-grab"; scale = 0; }; archiveteam-deviantart = { image = "deviantart-grab"; scale = 0; }; archiveteam-postnews = { image = "postnews-grab"; scale = 0; }; archiveteam-askfm = { image = "askfm-grab"; scale = 1; }; archiveteam-mangz = { image = "mangaz-grab"; scale = 1; }; archiveteam-cohost = { image = "cohost-grab"; scale = 1; }; }; container-spec = container-name: container: { image = "atdr.meo.ws/archiveteam/${container}:latest"; extraOptions = [ "--stop-signal=SIGINT" ]; labels = { "com.centurylinklabs.watchtower.enable" = "true"; "com.centurylinklabs.watchtower.scope" = "archiveteam"; }; volumes = [ "${at_path}/${container-name}:/grab/data" ]; log-driver = "local"; cmd = lib.splitString " " "--concurrent 6 AmAnd0"; }; inherit (lib.rad-dev.container-utils) createTemplatedContainers; vars = import ../vars.nix; at_path = vars.primary_archiveteam; in { virtualisation.oci-containers.containers = createTemplatedContainers containers container-spec; systemd = { timers."custom-watchtower@archiveteam" = { wantedBy = [ "timers.target" ]; timerConfig = { OnBootSec = "20m"; OnUnitActiveSec = "5m"; Unit = "custom-watchtower@archiveteam.service"; }; }; services."custom-watchtower@archiveteam" = { bindsTo = [ "docker.service" ]; after = [ "docker.service" ]; description = "a watchtower-esque script for systemd-based oci-containers"; serviceConfig = { Type = "oneshot"; User = "root"; ExecStart = "${config.nix.package}/bin/nix ${./watchtower.bash} 'com.centurylinklabs.watchtower.scope' 'archiveteam'"; }; }; }; }