| 
									
										
										
										
											2017-05-30 16:39:27 +03:00
										 |  |  | { config, lib, pkgs, ... }: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | with lib; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | let | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   cfg = config.services.fstrim; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | in { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   options = { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     services.fstrim = { | 
					
						
							|  |  |  |       enable = mkEnableOption "periodic SSD TRIM of mounted partitions in background"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       interval = mkOption { | 
					
						
							| 
									
										
										
										
											2019-08-08 22:48:27 +02:00
										 |  |  |         type = types.str; | 
					
						
							| 
									
										
										
										
											2017-05-30 16:39:27 +03:00
										 |  |  |         default = "weekly"; | 
					
						
							|  |  |  |         description = ''
 | 
					
						
							|  |  |  |           How often we run fstrim. For most desktop and server systems | 
					
						
							|  |  |  |           a sufficient trimming frequency is once a week. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           The format is described in | 
					
						
							|  |  |  |           <citerefentry><refentrytitle>systemd.time</refentrytitle> | 
					
						
							|  |  |  |           <manvolnum>7</manvolnum></citerefentry>. | 
					
						
							|  |  |  |         '';
 | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   config = mkIf cfg.enable { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     systemd.packages = [ pkgs.utillinux ]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     systemd.timers.fstrim = { | 
					
						
							|  |  |  |       timerConfig = { | 
					
						
							|  |  |  |         OnCalendar = cfg.interval; | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  |       wantedBy = [ "timers.target" ]; | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-23 12:56:04 +03:00
										 |  |  |   meta.maintainers = with maintainers; [ gnidorah ]; | 
					
						
							| 
									
										
										
										
											2017-05-30 16:39:27 +03:00
										 |  |  | } |