{ config, lib, pkgs, ... }: { # TODO: # - assert postfix is configured options.mj.base.unitstatus = with lib.types; { enable = lib.mkEnableOption "alert by email on unit failure"; email = lib.mkOption {type = str;}; units = lib.mkOption { type = listOf str; default = []; }; }; config = lib.mkIf config.mj.base.unitstatus.enable { systemd.services = { "unit-status-mail@" = let # https://northernlightlabs.se/2014-07-05/systemd-status-mail-on-unit-failure.html script = pkgs.writeShellScript "unit-status-mail" '' set -e MAILTO="${config.mj.base.unitstatus.email}" UNIT=$1 EXTRA="" for e in "''${@:2}"; do EXTRA+="$e"$'\n' done UNITSTATUS=$(${pkgs.systemd}/bin/systemctl status "$UNIT" || :) ${pkgs.postfix}/bin/sendmail $MAILTO <