]> Git — Sourcephile - sourcephile-nix.git/blob - nixos/profiles/systems/zfs.nix
sanoid: use recursive
[sourcephile-nix.git] / nixos / profiles / systems / zfs.nix
1 { pkgs, lib, config, ... }:
2 {
3 # none is the recommended elevator with ZFS (which has its own I/O scheduler)
4 # and/or for SSD, whereas HDD could use mq-deadline.
5 services.udev.extraRules = ''
6 # set none scheduler for non-rotating disks
7 ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="none"
8 ACTION=="add|change", KERNEL=="nvme[0-9]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="none"
9 '';
10
11 boot.supportedFilesystems = [ "zfs" ];
12
13 # Ensure extra safeguards are active that zfs uses to protect zfs pools.
14 boot.zfs.forceImportAll = false;
15 boot.zfs.forceImportRoot = false;
16
17 boot.zfs.enableUnstable = false;
18 # Can be overrided with a list of specific datasets
19 boot.zfs.requestEncryptionCredentials = lib.mkDefault true;
20
21 # Enables periodic scrubbing of ZFS pools.
22 services.zfs.autoScrub.enable = true;
23
24 # Add tools useful with zfs send/receive
25 environment.systemPackages = [
26 pkgs.lzop
27 pkgs.mbuffer
28 ];
29 }