{ config, pkgs, ... }: let systemd_notifier = pkgs.writeScript "systemd-email-notify.sh" '' #!${pkgs.bash}/bin/bash # The failing service name is passed as the first argument UNIT=$1 # 1. Send Technical Email to Admin ADMIN_EMAIL="${config.numbus-server.mail.adminAddress}" SUBJECT="Numbus Server Alert: Service $UNIT Failed" # Retrieve recent logs for context LOGS=$(journalctl -u "$UNIT" -n 20 --no-pager) TECH_BODY=" Systemd Service Failure Alert: Server owner: ${config.numbus-server.owner} Service: $UNIT Recent Logs: $LOGS " printf "Subject: [ADMIN] $SUBJECT\n\n$TECH_BODY" | /run/wrappers/bin/sendmail -t "$ADMIN_EMAIL" # 2. Send Friendly Email to Owner USER_EMAIL="${config.numbus-server.mail.userAddress}" OWNER_NAME="${config.numbus-server.owner}" FRIENDLY_BODY="Cher/Chère $OWNER_NAME, Votre serveur a détecté une défaillance du service $UNIT. Le système a tenté de gérer l'erreur, mais une intervention peut être nécessaire. Votre administrateur a été notifié de cet incident avec les détails techniques nécessaires. Il interviendra si une action manuelle est requise. Merci de votre confiance, L'équipe de support, Numbus-Server." printf "Subject: [Alerte] Erreur sur votre serveur Numbus\n\n$FRIENDLY_BODY" | /run/wrappers/bin/sendmail -t "$USER_EMAIL" ''; in { systemd.services."service-failure-notify@" = { description = "Email notification for failed service %i"; onFailure = [ ]; serviceConfig = { Type = "oneshot"; ExecStart = "${systemd_notifier} %i"; }; }; }