31 lines
		
	
	
	
		
			591 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
	
		
			591 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
| {
 | |
|   options,
 | |
|   config,
 | |
|   pkgs,
 | |
|   lib,
 | |
|   ...
 | |
| }:
 | |
| with lib;
 | |
| let
 | |
|   cfg = config.aa.system.zfs;
 | |
| in
 | |
| {
 | |
|   options.aa.system.zfs = with types; {
 | |
|     enable = mkEnableOption "zfs";
 | |
|     # TODO: Introduce a zfsOnRoot option
 | |
|   };
 | |
| 
 | |
|   config = mkIf cfg.enable {
 | |
|     environment.systemPackages = [ pkgs.zfs-prune-snapshots ];
 | |
| 
 | |
|     services.zfs = {
 | |
|       autoScrub.enable = true;
 | |
|       # Still need to set `com.sun:auto-snapshot` to `true` on datasets
 | |
|       # zfs set com.sun:auto-snapshot=true pool/dataset
 | |
|       autoSnapshot = {
 | |
|         enable = true;
 | |
|         flags = "-k -p --utc";
 | |
|       };
 | |
|     };
 | |
|   };
 | |
| }
 |