101 lines
2.2 KiB
Nix
101 lines
2.2 KiB
Nix
{
|
|
pkgs,
|
|
config,
|
|
lib,
|
|
...
|
|
}: let
|
|
cfg = config.holocron.zfs;
|
|
sec = config.sops.secrets;
|
|
in {
|
|
options.holocron.zfs = {
|
|
enable = lib.mkEnableOption "enables zfs";
|
|
};
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
# set network host id
|
|
|
|
# enable zfs support
|
|
boot.kernelModules = ["zfs"];
|
|
boot.supportedFilesystems = ["zfs"];
|
|
boot.zfs.forceImportRoot = false;
|
|
# boot.initrd.services.zfs.enable = true;
|
|
# boot.zfs.requestEncryptionCredentials = true;
|
|
|
|
# arc cache size
|
|
boot.kernelParams = ["zfs.zfs_arc_max=12884901888"];
|
|
|
|
# pools to import
|
|
boot.zfs.extraPools = ["holocron"];
|
|
|
|
# enable smart monitoring
|
|
|
|
services.smartd = {
|
|
enable = true;
|
|
autodetect = true;
|
|
defaults.monitored = "-a -o on -s (S/../.././05|L/../01/./05)";
|
|
notifications = {
|
|
test = false;
|
|
mail = {
|
|
enable = true;
|
|
recipient = "blake";
|
|
sender = "alerts@blakedheld.xyz";
|
|
};
|
|
};
|
|
};
|
|
|
|
# enable zfs
|
|
services.zfs = {
|
|
autoScrub.enable = true;
|
|
autoScrub.interval = "weekly";
|
|
# email notifs
|
|
zed = {
|
|
enableMail = true;
|
|
settings = {
|
|
ZED_EMAIL_ADDR = ["root" "blake"];
|
|
# send notification if scrub succeeds
|
|
ZED_NOTIFY_VERBOSE = true;
|
|
};
|
|
};
|
|
};
|
|
|
|
# install userspace tools for smart
|
|
environment.systemPackages = with pkgs; [smartmontools];
|
|
|
|
# mail test
|
|
|
|
services.mail.sendmailSetuidWrapper.enable = true;
|
|
|
|
programs.msmtp = {
|
|
enable = true;
|
|
setSendmail = true;
|
|
|
|
defaults = {
|
|
aliases = "/etc/aliases";
|
|
port = 587;
|
|
auth = "plain";
|
|
tls = "on";
|
|
tls_starttls = "on";
|
|
};
|
|
|
|
accounts.default = {
|
|
host = "smtp.mail.me.com";
|
|
user = "bdhelderman@icloud.com";
|
|
from = "alerts@blakedheld.xyz";
|
|
passwordeval = "/run/current-system/sw/bin/cat ${sec."email_pass".path}";
|
|
};
|
|
};
|
|
|
|
environment.etc.aliases.text = ''
|
|
root: me@blakedheld.xyz
|
|
blake: me@blakedheld.xyz
|
|
'';
|
|
|
|
sops.secrets = {
|
|
"email_pass" = {
|
|
owner = "blake";
|
|
group = "blake";
|
|
};
|
|
};
|
|
};
|
|
}
|