{ 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 networking.hostId = "007f0200"; # enable zfs support boot.kernelModules = ["zfs"]; boot.supportedFilesystems = ["zfs"]; # 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 = true; 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"; }; }; }; }