summaryrefslogtreecommitdiffstats
path: root/old/modules/tv/urlwatch/default.nix
diff options
context:
space:
mode:
authortv <tv@shackspace.de>2015-07-16 23:22:30 +0200
committertv <tv@shackspace.de>2015-07-16 23:22:30 +0200
commit57c520b722f25f384301118046bf9cf182d4edd7 (patch)
tree57983c04bb49fe0375300861111a61cede545794 /old/modules/tv/urlwatch/default.nix
parent447c63edbd403abf026800d10594ed037b4304e9 (diff)
Goodbye old world, and thanks for all the fish!
Diffstat (limited to 'old/modules/tv/urlwatch/default.nix')
-rw-r--r--old/modules/tv/urlwatch/default.nix158
1 files changed, 0 insertions, 158 deletions
diff --git a/old/modules/tv/urlwatch/default.nix b/old/modules/tv/urlwatch/default.nix
deleted file mode 100644
index 87ec289f7..000000000
--- a/old/modules/tv/urlwatch/default.nix
+++ /dev/null
@@ -1,158 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-# TODO multiple users
-# TODO inform about unused caches
-# cache = url: "${cfg.dataDir}/.urlwatch/cache/${hashString "sha1" url}"
-# TODO hooks.py
-
-let
- inherit (builtins) toFile;
- inherit (lib)
- concatStringsSep escapeShellArg mkIf mkOption optionals singleton types;
- inherit (pkgs) writeScript;
-
- cfg = config.tv.urlwatch;
-
- api = {
- dataDir = mkOption {
- type = types.str;
- default = "/var/lib/urlwatch";
- description = ''
- Directory where the urlwatch service should store its state.
- '';
- };
- enable = mkOption {
- type = types.bool;
- default = false;
- description = ''
- Whether to enable the urlwatch service.
- If enabled, then create a timer that calls urlwatch and sends mails
- whenever something has changed or an error occurs.
- '';
- };
- from = mkOption {
- type = types.str;
- default = "${cfg.user}@${config.networking.hostName}.retiolum";
- description = ''
- Content of the From: header of the generated mails.
- '';
- };
- mailto = mkOption {
- type = types.str;
- description = ''
- Content of the To: header of the generated mails. [AKA recipient :)]
- '';
- };
- onCalendar = mkOption {
- type = types.str;
- description = ''
- Run urlwatch at this interval.
- The format is described in systemd.time(7), CALENDAR EVENTS.
- '';
- example = "04:23";
- };
- urls = mkOption {
- type = with types; listOf str;
- description = "URL to watch.";
- example = [
- https://nixos.org/channels/nixos-unstable/git-revision
- ];
- };
- user = mkOption {
- type = types.str;
- default = "urlwatch";
- description = "User under which urlwatch runs.";
- };
- };
-
- urlsFile = toFile "urls" (concatStringsSep "\n" cfg.urls);
-
- impl = {
- systemd.timers.urlwatch = {
- wantedBy = [ "timers.target" ];
- timerConfig = {
- OnCalendar = cfg.onCalendar;
- Persistent = "true";
- };
- };
- systemd.services.urlwatch = {
- path = with pkgs; [
- coreutils
- gnused
- urlwatch
- ];
- environment = {
- HOME = cfg.dataDir;
- LC_ALL = "en_US.UTF-8";
- LOCALE_ARCHIVE = "${pkgs.glibcLocales}/lib/locale/locale-archive";
- SSL_CERT_FILE = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
- };
- serviceConfig = {
- User = cfg.user;
- PermissionsStartOnly = "true";
- PrivateTmp = "true";
- Type = "oneshot";
- ExecStartPre =
- writeScript "urlwatch-prestart" ''
- #! /bin/sh
- set -euf
-
- dataDir=$HOME
- user=${escapeShellArg cfg.user}
-
- if ! test -e "$dataDir"; then
- mkdir -m 0700 -p "$dataDir"
- chown "$user": "$dataDir"
- fi
- '';
- ExecStart = writeScript "urlwatch" ''
- #! /bin/sh
- set -euf
-
- from=${escapeShellArg cfg.from}
- mailto=${escapeShellArg cfg.mailto}
- urlsFile=${escapeShellArg urlsFile}
- user=${escapeShellArg cfg.user}
-
- cd /tmp
-
- urlwatch -e --urls="$urlsFile" > changes 2>&1 || :
-
- if test -s changes; then
- date=$(date -R)
- subject=$(sed -n 's/^\(CHANGED\|ERROR\|NEW\): //p' changes \
- | tr \\n \ )
- {
- echo "Date: $date"
- echo "From: $from"
- echo "Subject: $subject"
- echo "To: $mailto"
- echo
- cat changes
- } | /var/setuid-wrappers/sendmail -t
- fi
- '';
- };
- };
- users.extraUsers = optionals (cfg.user == "urlwatch") (singleton {
- name = "urlwatch";
- uid = 3450919516; # bin/genid urlwatch
- });
- };
-
-in
-
-{
- # TODO
- #imports = [
- # ./exim
- #];
- #config = mkIf cfg.enable
- # (if config.tv.exim.enable
- # then impl
- # else throw "tv.exim must be enabled when enabling tv.urlwatch");
-
- options.tv.urlwatch = api;
-
- config = impl;
-}