nix-git/hosts/yodaNas/notify-change.nix

120 lines
3.2 KiB
Nix

{ config, pkgs, ...}:
let
user = config.yoda.user;
name = "notify-change";
subdir = "readonly-git/notify-change";
fulldir = "/home/${user}/${subdir}";
jdk = pkgs.jdk23;
gradle = pkgs.gradle.override {
java = jdk;
javaToolchains = [ jdk ];
};
in
{
# /secrets/"${name}-EMAIL_RECIPIENTS"
deployment.keys."${name}-EMAIL_RECIPIENTS" = {
# comma-separated list of email addresses
keyFile = ../../secrets/${name}-email-recipients;
destDir = "/secrets";
user = "${user}";
#group = "smtpd"; # Default: root
permissions = "0400";
uploadAt = "pre-activation";
};
# /secrets/"${name}-EMAIL_USER"
deployment.keys."${name}-EMAIL_USER" = {
keyFile = ../../secrets/user.web.de;
destDir = "/secrets";
user = "${user}";
#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 = "${user}";
#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 = "${user}";
#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 = "${user}";
#group = "smtpd"; # Default: root
permissions = "0400";
uploadAt = "pre-activation";
};
# Download notify-change Git repository.
# home-manager.users."${user}" = { 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 = "${user}";
};
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
# --rerun: Execute test again even if code did not change
gradle :app:test --tests "de.p1st.changedetection.IliasFB12CoursesTest" --rerun
'';
};
}