25 lines
		
	
	
	
		
			699 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
	
		
			699 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { config, lib, pkgs, ... }:
 | |
| 
 | |
| let
 | |
|   cfg = config.sisyphus.nix.gc;
 | |
| in {
 | |
|   options.sisyphus.nix.gc = {
 | |
|     weekly.enable = lib.mkEnableOption "Scheduled Nix garbage-collection";
 | |
|     onFull.enable = lib.mkEnableOption "Nix garbage-collection when disk is almost full";
 | |
|   };
 | |
| 
 | |
|   config.nix = {
 | |
|     # If the disk has less than 100MiB, free up to 2GiB by garbage-collecting.
 | |
|     extraOptions = lib.mkIf cfg.onFull.enable ''
 | |
|       min-free = ${toString (100 * 1024 * 1024)}
 | |
|       max-free = ${toString (2048 * 1024 * 1024)}
 | |
|     '';
 | |
| 
 | |
|     # Scheduled garbage-collect
 | |
|     gc = lib.mkIf cfg.weekly.enable {
 | |
|       automatic = true;
 | |
|       dates = "weekly";
 | |
|       options = "--delete-older-than 30d";
 | |
|     };
 | |
|   };
 | |
| }
 |