{ pkgs, config, lib, ... }: let inherit (import ) kieran; urlwatchDir = "/var/lib/urlwatch"; urlsFile = pkgs.writeText "urls" (builtins.concatStringsSep "\n---\n" (map builtins.toJSON urls)); urls = [ { name = "Corona-Verordnung"; url = "https://www.berlin.de/corona/massnahmen/verordnung/"; filter = [ { css = "[role=main]"; } "html2text" "strip" ]; } { name = "HU Semester"; url = "https://agnes.hu-berlin.de/lupo/rds?state=change&type=6&moduleParameter=semesterSelect&nextdir=change&next=SearchSelect.vm&subdir=applications&targettype=7&targetstate=change&getglobal=semester"; filter = [ { css = "fieldset"; } "html2text" "strip" ]; } { name = "Kratylos"; url = "https://kratylos.reichert-online.org/current_issue/KRATYLOS"; filter = [ { element-by-id = "content"; } "html2text" "strip" ]; } { name = "Indogermanische Forschungen"; url = "https://www.degruyter.com/journal/key/INDO/html"; filter = [ { element-by-id = "latestIssue"; } "html2text" "strip" ]; } { name = "IG Nekrolog"; url = "https://www.indogermanistik.org/aktuelles/nekrologe.html"; filter = [ { css = "[itemprop=articleBody]"; } { shellpipe = ''${pkgs.gnused}/bin/sed 's!; }; subject = "{count} changes: {jobs}"; to = kieran.email; }; html.diff = "unified"; stdout = { color = true; enabled = true; }; text.footer = false; # telegram = { # enabled = false; # bot_token = lib.strings.fileContents ; # chat_id = [ "18980945" ]; # }; }; }; urlwatch = pkgs.urlwatch.overrideAttrs (attrs: { patches = [ ]; }); in { users.extraUsers.urlwatch = { home = urlwatchDir; createHome = true; isSystemUser = true; }; systemd.services.urlwatch = { enable = true; startAt = "*-*-* 05:00:00"; script = '' ${urlwatch}/bin/urlwatch \ --config=${lib.escapeShellArg configFile} \ --urls=${lib.escapeShellArg urlsFile} ''; serviceConfig = { User = config.users.extraUsers.urlwatch.name; WorkingDirectory = config.users.extraUsers.urlwatch.home; PermissionsStartOnly = "true"; PrivateTmp = "true"; SyslogIdentifier = "urlwatch"; Type = "oneshot"; }; }; }