{
  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'";
      };
    };
  };
}