{ inputs, config, pkgs, ... }: let mkTimer = { name, interval, serviceScript }: let timerName = "${name}-timer"; serviceName = "${name}-service"; in { systemd.timers.${timerName} = { wantedBy = [ "timers.target" ]; timerConfig = { OnBootSec = interval; OnUnitActiveSec = interval; Unit = "${serviceName}.service"; }; }; systemd.services.${serviceName} = { script = '' set -eu ${serviceScript} ''; serviceConfig = { Type = "oneshot"; User = "root"; }; }; }; in { imports = [ (import ./common.nix { inherit inputs config pkgs; }) ./ssh ]; mkTimer { name = "disk_check"; interval = "1h"; serviceScript = toString (pkgs.writeShellScript "disk_check" '' REPORT_EMAIL=email@thomasave.be ZPOOL_STATUS=$(zpool status -x) if [ "$ZPOOL_STATUS" = "all pools are healthy" ] || [ "$ZPOOL_STATUS" = "no pools available" ] then printf 0 > /var/db/zpool.status else if [ "$(cat /var/db/zpool.status)" -eq 0 ] then zpool status | mail -s "ZPOOL NOT HEALTHY" $REPORT_EMAIL printf 1 > /var/db/zpool.status fi fi ''); } }