{ config, pkgs, ...}:
let
  name = "notify-change";
  subdir = "readonly-git/notify-change";
  fulldir = "/home/yoda/${subdir}";

  jdk = pkgs.jdk23;
  gradle = pkgs.gradle.override {
    java = jdk;
    javaToolchains = [ jdk ];
  };
in
{
  # /secrets/"${name}-EMAIL_USER"
  deployment.keys."${name}-EMAIL_USER" = {
    keyFile = ../../secrets/user.web.de;
    destDir = "/secrets";
    user = "yoda";
    #group = "smtpd"; # Default: root
    permissions = "0400";
    uploadAt = "pre-activation";
  };
  # /secrets/"${name}-EMAIL_PASSWORD"
  deployment.keys."${name}-EMAIL_PASSWORD" = {
    keyFile = ../../secrets/pwd.web.de;
    destDir = "/secrets";
    user = "yoda";
    #group = "smtpd"; # Default: root
    permissions = "0400";
    uploadAt = "pre-activation";
  };
  # /secrets/"${name}-ILIAS_USER"
  deployment.keys."${name}-ILIAS_USER" = {
    keyFile = ../../secrets/user.ilias.uni-marburg.de;
    destDir = "/secrets";
    user = "yoda";
    #group = "smtpd"; # Default: root
    permissions = "0400";
    uploadAt = "pre-activation";
  };
  # /secrets/"${name}-ILIAS_PASSWORD"
  deployment.keys."${name}-ILIAS_PASSWORD" = {
    keyFile = ../../secrets/pwd.ilias.uni-marburg.de;
    destDir = "/secrets";
    user = "yoda";
    #group = "smtpd"; # Default: root
    permissions = "0400";
    uploadAt = "pre-activation";
  };

  # Download notify-change Git repository.
#  home-manager.users.yoda = { osConfig, config, pkgs, ... }: {
#    home.file."${subdir}".source = (builtins.fetchGit {
#      url = "https://codeberg.org/privacy1st/selenium-webdriver-ide-demo";
#      ref = "changedetection";
#      #leaveDotGit = true;
#    });
#  };

  # TODO: Properly build gradle project with nix instead of systemd service script "git pull & gradle build"

  # Run service once per day.
  systemd.timers."${name}" = {
    wantedBy = [ "timers.target" ];
    partOf = [ "${name}.service" ];
    timerConfig = {
      OnBootSec = "0m";
      OnUnitInactiveSec = "1d";

      AccuracySec = "5m";
      RandomizedDelaySec = "5m";
    };
  };
  # Service definition.
  systemd.services."${name}" = {
    description = "Send notification on website change";
    serviceConfig = {
      Type = "oneshot";
      PrivateTmp = true;
      User = "yoda";
    };
    path = [
      pkgs.bash # todo
      pkgs.git
      jdk
      gradle
      pkgs.firefox
    ];
    script = ''
      set -eu -o pipefail

      TESSERACT_LIB="${pkgs.tesseract}/lib"
      TESSDATA_PREFIX="${pkgs.tesseract}/share/tessdata"

      if test -d "${fulldir}"; then
        cd "${fulldir}"
        git pull
      else
        git clone --branch changedetection --single-branch https://codeberg.org/privacy1st/selenium-webdriver-ide-demo.git "${fulldir}"
        cd "${fulldir}"
      fi

      gradle :app:test --tests "de.p1st.changedetection.IliasFB12CoursesTest"
    '';
  };
}