{ service_configs, pkgs, ... }: let zfs-key = "/etc/zfs-key"; in { system.activationScripts = { "zfs-key".text = '' #!/bin/sh rm -fr ${zfs-key} || true cp ${./secrets/zfs-key} ${zfs-key} chmod 0500 ${zfs-key} chown root:wheel ${zfs-key} ''; }; boot.zfs.package = pkgs.zfs_unstable; boot.initrd.kernelModules = [ "zfs" ]; boot.kernelParams = [ # 2048MB "zfs.zfs_arc_max=2048000000" ]; boot.supportedFilesystems = [ "zfs" ]; boot.zfs.extraPools = [ service_configs.zpool_ssds service_configs.zpool_hdds ]; services.sanoid = { enable = true; datasets."${service_configs.zpool_ssds}" = { recursive = true; autoprune = true; autosnap = true; hourly = 5; daily = 7; monthly = 3; yearly = 0; }; datasets."${service_configs.zpool_ssds}/services/sql" = { recursive = true; autoprune = true; autosnap = true; hourly = 12; daily = 2; monthly = 0; yearly = 0; }; datasets."${service_configs.zpool_ssds}/services/jellyfin_cache" = { recursive = true; autoprune = true; autosnap = true; hourly = 0; daily = 0; monthly = 0; yearly = 0; }; datasets."${service_configs.zpool_hdds}" = { recursive = true; autoprune = true; autosnap = true; hourly = 0; daily = 0; monthly = 0; yearly = 0; }; }; services.zfs = { autoScrub.enable = true; trim.enable = true; }; }