{ pkgs, lib, config, ... }: with lib; { config = { fileSystems = { "/boot" = { device = "boot"; fsType = "zfs"; }; "/nix" = { device = "ssd-raid0/local/nix"; fsType = "zfs"; }; "/var/lib/sops-nix" = { device = "ssd-raid1/local/var-lib-sops--nix"; fsType = "zfs"; neededForBoot = true; }; "/var/lib/systemd" = { device = "ssd-raid1/local/var-lib-systemd"; fsType = "zfs"; neededForBoot = true; }; "/var/lib/nixos" = { device = "ssd-raid1/local/var-lib-nixos"; fsType = "zfs"; neededForBoot = true; }; "/etc/zfs/zfs-list.cache" = { device = "ssd-raid1/local/zfs-zfs--list.cache"; fsType = "zfs"; neededForBoot = true; }; "/root" = { device = "ssd-raid1/safe/home-root"; fsType = "zfs"; }; # "/var/lib/unbound" = # { device = "ssd-raid1/local/var-lib-unbound"; # fsType = "zfs"; # }; # "/var/lib/dhcp" = # { device = "ssd-raid1/local/var-lib-dhcp"; # fsType = "zfs"; # }; # "/var/lib/chrony" = # { device = "ssd-raid1/local/var-lib-chrony"; # fsType = "zfs"; # }; # "/var/lib/samba" = # { device = "ssd-raid1/local/var-lib-samba"; # fsType = "zfs"; # }; # "/var/lib/prometheus2" = # { device = "ssd-raid1/local/var-lib-prometheus2"; # fsType = "zfs"; # options = [ "zfsutil" ]; # }; # "/var/lib/grafana" = # { device = "ssd-raid1/local/var-lib-grafana"; # fsType = "zfs"; # options = [ "zfsutil" ]; # }; # "/var/lib/loki" = # { device = "ssd-raid1/local/var-lib-loki"; # fsType = "zfs"; # options = [ "zfsutil" ]; # }; # "/srv/tftp" = # { device = "ssd-raid1/local/srv-tftp"; # fsType = "zfs"; # options = [ "zfsutil" ]; # }; "/var/log" = { device = "ssd-raid1/local/var-log"; fsType = "zfs"; }; # "/home" = # { device = "hdd-raid6/safe/home"; # fsType = "zfs"; # options = [ "zfsutil" ]; # }; # "/home/gkleen" = # { device = "hdd-raid6/safe/home/gkleen"; # fsType = "zfs"; # options = [ "zfsutil" ]; # }; # "/home/mherold" = # { device = "hdd-raid6/safe/home/mherold"; # fsType = "zfs"; # options = [ "zfsutil" ]; # }; }; systemd.mounts = map (date: { where = "/home/mherold/camera/${date}"; what = "/dev/zvol/hdd-raid6/safe/home/mherold/camera/${date}"; type = "vfat"; options = lib.concatStringsSep "," [ "ro" "uid=mherold" "gid=users" "fmask=0177" "dmask=0077" "nofail" ]; }) ["2020-09-13" "2022-01-16" "2022-05-15" "2022-12-29"]; systemd.automounts = map (date: { wantedBy = [ "multi-user.target" ]; where = "/home/mherold/camera/${date}"; automountConfig.TimeoutIdleSec = "2m"; }) ["2020-09-13" "2022-01-16" "2022-05-15" "2022-12-29"]; users.users.gkleen.createHome = lib.mkForce false; users.users.mherold.createHome = lib.mkForce false; systemd.generators."zfs-mount-generator" = "${config.boot.zfs.package}/lib/systemd/system-generator/zfs-mount-generator"; environment.etc."zfs/zed.d/history_event-zfs-list-cacher.sh".source = "${config.boot.zfs.package}/etc/zfs/zed.d/history_event-zfs-list-cacher.sh"; systemd.services.zfs-mount.enable = false; services.zfs.zed.settings.PATH = mkForce (makeBinPath (with pkgs; [ diffutils config.boot.zfs.package coreutils curl gawk gnugrep gnused nettools util-linux ])); services.zfssnap = { enable = true; config.keep = { within = "15m"; "5m" = "48"; "15m" = "32"; hourly = "48"; "4h" = "24"; "12h" = "12"; daily = "62"; halfweekly = "32"; weekly = "24"; monthly = "-1"; }; }; services.zfs.trim.enable = false; services.zfs.autoScrub = { enable = true; interval = "Sun *-*-1..7 04:00:00"; }; services.zfs.zed.settings.ZED_SYSLOG_SUBCLASS_EXCLUDE = "history_event"; }; }