{ config, pkgs, ... }: let smartd_notifier = pkgs.writeScript "smartd-notify.sh" '' #!${pkgs.bash}/bin/bash # 1. Send Technical Email to Admin ADMIN_EMAIL="${config.numbus.mail.adminAddress}" SUBJECT="Numbus Server Alert: $SMARTD_FAILTYPE on $SMARTD_DEVICE" TECH_BODY=" SMARTD Alert Details: Server owner: $OWNER_NAME Device: $SMARTD_DEVICE Type: $SMARTD_DEVICETYPE Failure Type: $SMARTD_FAILTYPE Message: $SMARTD_MESSAGE Full Message: $SMARTD_FULLMESSAGE " 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.mail.userAddress}" OWNER_NAME="${config.numbus.owner}" FRIENDLY_BODY="Cher/Chère $OWNER_NAME, Votre serveur a automatiquement détecté une panne matérielle de disque dur. Ce genre de panne est tout à fait normal selon l'âge de votre matériel et n'entraîne dans la grande majorité des cas aucune perte de données grâce au système de stockage redondant préventif. Votre administrateur a été notifié de cette panne. Il vous recontactera dans de très brefs délais afin de procéder au remplacement, si nécessaire, du disque dur défaillant. Merci de votre confiance, L'équipe de support, Numbus-Server." printf "Subject: [Alerte] Défaillance matérielle sur votre serveur Numbus\n\n$FRIENDLY_BODY" | /run/wrappers/bin/sendmail -t "$USER_EMAIL" ''; in { services.smartd = { enable = true; defaults.autodetected = "-a -o on -S on -s (S/../.././00|L/../../6/01) -n standby,q -M exec ${smartd_notifier}"; notifications = { wall = { enable = true; }; mail = { enable = true; sender = config.numbus.mail.fromAddress; recipient = "${config.numbus.mail.userAddress},${config.numbus.mail.adminAddress}"; }; }; }; }