add notify-change

This commit is contained in:
Daniel Langbein 2025-03-28 16:22:48 +01:00
parent d30dc07b3f
commit b118c31fd5
Signed by: langfingaz
GPG Key ID: 6C47C753F0823002
2 changed files with 114 additions and 4 deletions

View File

@ -1,8 +1,12 @@
{ config, pkgs, ... }:
let
name = "Jinja-Compose";
in
{
imports = [
../../modules/snowflake.nix
./syncthing.nix
./notify-change.nix
];
# Update and start Jinja-Compose project
@ -10,9 +14,9 @@
# To view the log, run
# journalctl -b -u Jinja-Compose -f
#
systemd.timers."Jinja-Compose" = {
systemd.timers."${name}" = {
wantedBy = [ "timers.target" ];
partOf = [ "Jinja-Compose.service" ];
partOf = [ "${name}.service" ];
timerConfig = {
OnBootSec = "0m";
OnUnitInactiveSec = "30m";
@ -22,8 +26,8 @@
};
};
# TODO: Add shutdown script (./docker-compose down).
systemd.services."Jinja-Compose" = {
description = "Update and start Jinja-Compose project";
systemd.services."${name}" = {
description = "Update and start ${name} project";
serviceConfig = {
Type = "oneshot";
PrivateTmp = true;

View File

@ -0,0 +1,106 @@
{ 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"
'';
};
}