diff --git a/nixos/modules/services/monitoring/smartd.nix b/nixos/modules/services/monitoring/smartd.nix
index 1d6940c516a9..b8d9e58a5a82 100644
--- a/nixos/modules/services/monitoring/smartd.nix
+++ b/nixos/modules/services/monitoring/smartd.nix
@@ -64,7 +64,7 @@ let
"DEVICESCAN ${notifyOpts}${cfg.defaults.autodetected}"}
'';
- smartdOpts = { name, ... }: {
+ smartdDeviceOpts = { name, ... }: {
options = {
@@ -108,6 +108,18 @@ in
'';
};
+ extraOptions = mkOption {
+ default = [];
+ type = types.listOf types.str;
+ example = ["-A /var/log/smartd/" "--interval=3600"];
+ description = ''
+ Extra command-line options passed to the smartd
+ daemon on startup.
+
+ (See man 8 smartd.)
+ '';
+ };
+
notifications = {
mail = {
@@ -197,7 +209,7 @@ in
devices = mkOption {
default = [];
example = [ { device = "/dev/sda"; } { device = "/dev/sdb"; options = "-d sat"; } ];
- type = with types; listOf (submodule smartdOpts);
+ type = with types; listOf (submodule smartdDeviceOpts);
description = "List of devices to monitor.";
};
@@ -222,7 +234,7 @@ in
path = [ pkgs.nettools ]; # for hostname and dnsdomanname calls in smartd
- serviceConfig.ExecStart = "${pkgs.smartmontools}/sbin/smartd --no-fork --configfile=${smartdConf}";
+ serviceConfig.ExecStart = "${pkgs.smartmontools}/sbin/smartd ${lib.concatStringsSep " " cfg.extraOptions} --no-fork --configfile=${smartdConf}";
};
};