nixos/modules/hardware/drive-monitor/default.nix
2024-12-27 20:30:21 +01:00

45 lines
1.1 KiB
Nix

{ config, lib, ... }:
let
cfg = config.my.hardware.drive-monitor;
in
{
options.my.hardware.drive-monitor = with lib; {
enable = mkEnableOption "drive-monitor configuration";
OnFailureMail = mkOption {
type = types.nullOr types.str;
description = lib.mdDoc "Mail address where to send the error report";
default = null;
example = "alarm@mail.com";
};
};
config = lib.mkIf cfg.enable {
services = {
postfix.enable = cfg.OnFailureMail != null;
smartd = {
enable = true;
notifications.mail = lib.mkIf (cfg.OnFailureMail != null) {
enable = true;
recipient = cfg.OnFailureMail;
};
};
};
# monitoring
services.prometheus.exporters.smartctl.enable = config.services.prometheus.enable;
services.prometheus.scrapeConfigs = [
{
job_name = "smartctl";
static_configs = [
{
targets = [ "localhost:${toString config.services.prometheus.exporters.smartctl.port}" ];
labels = {
instance = config.networking.hostName;
};
}
];
}
];
};
}