mirror of
https://codeberg.org/privacy1st/nix-git
synced 2025-04-01 16:45:59 +02:00
120 lines
3.2 KiB
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
|
|
'';
|
|
};
|
|
}
|