62 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { config, lib, ... }:
 | |
| 
 | |
| with lib;
 | |
| 
 | |
| let
 | |
|   cfg = config.nix.gc;
 | |
| in
 | |
| 
 | |
| {
 | |
| 
 | |
|   ###### interface
 | |
| 
 | |
|   options = {
 | |
| 
 | |
|     nix.gc = {
 | |
| 
 | |
|       automatic = mkOption {
 | |
|         default = false;
 | |
|         type = types.bool;
 | |
|         description = "Automatically run the garbage collector at a specific time.";
 | |
|       };
 | |
| 
 | |
|       dates = mkOption {
 | |
|         default = "03:15";
 | |
|         type = types.str;
 | |
|         description = ''
 | |
|           Specification (in the format described by
 | |
|           <citerefentry><refentrytitle>systemd.time</refentrytitle>
 | |
|           <manvolnum>7</manvolnum></citerefentry>) of the time at
 | |
|           which the garbage collector will run.
 | |
|         '';
 | |
|       };
 | |
| 
 | |
|       options = mkOption {
 | |
|         default = "";
 | |
|         example = "--max-freed $((64 * 1024**3))";
 | |
|         type = types.str;
 | |
|         description = ''
 | |
|           Options given to <filename>nix-collect-garbage</filename> when the
 | |
|           garbage collector is run automatically.
 | |
|         '';
 | |
|       };
 | |
| 
 | |
|     };
 | |
| 
 | |
|   };
 | |
| 
 | |
| 
 | |
|   ###### implementation
 | |
| 
 | |
|   config = {
 | |
| 
 | |
|     systemd.services.nix-gc =
 | |
|       { description = "Nix Garbage Collector";
 | |
|         script = "exec ${config.nix.package.out}/bin/nix-collect-garbage ${cfg.options}";
 | |
|         startAt = optional cfg.automatic cfg.dates;
 | |
|       };
 | |
| 
 | |
|   };
 | |
| 
 | |
| }
 | 
