{
  pkgs,
  config,
  lib,
  ...
}: let
  cfg = config.holocron.zfs;
in {
  options.holocron.zfs = {
    enable = lib.mkEnableOption "enables zfs";
  };

  config = lib.mkIf cfg.enable {
    # set network host id
    networking.hostId = "3e6e7055";

    # enable zfs support
    boot.kernelModules = ["zfs"];
    boot.supportedFilesystems = ["zfs"];

    # arc cache size
    boot.kernelParams = [ "zfs.zfs_arc_max=12884901888" ];

    # pools to import
    #boot.zfs.extraPools = [ "holocron" "holocron/archives" "/holocron/media" "/holocron/users" ];
    #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.mail = {
        enable = true;
        sender = "zfs@snowbelle.lan";
      };
    };

    # enable zfs
    services.zfs = {
      autoScrub.enable = true;
      autoScrub.interval = "weekly";
      # email notifs
      zed = {
        enableMail = true;
        settings = {
          ZED_EMAIL_ADDR = ["root"];
          # send notification if scrub succeeds
          ZED_NOTIFY_VERBOSE = true;
        };
      };
    };

    # install userspace tools for acl's
    environment.systemPackages = with pkgs; [smartmontools];

     fileSystems."/holocron" = {
       device = "holocron";
       fsType = "zfs";
       options = ["nofail"];
     };
     fileSystems."/holocron/archives" = {
       device = "holocron/archives";
       fsType = "zfs";
       options = ["nofail"];
     };
     fileSystems."/holocron/users" = {
       device = "holocron/users";
       fsType = "zfs";
       options = ["nofail"];
     };
     fileSystems."/holocron/media" = {
       device = "holocron/media";
       fsType = "zfs";
       options = ["nofail"];
     };
  };
}
