| 
									
										
										
										
											2017-04-06 13:03:31 +03:00
										 |  |  | { config, lib, pkgs, ... }: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | with lib; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | let | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   cfg = config.services.autorandr; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | in { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   options = { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     services.autorandr = { | 
					
						
							|  |  |  |       enable = mkEnableOption "handling of hotplug and sleep events by autorandr"; | 
					
						
							| 
									
										
										
										
											2018-06-22 22:52:21 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |       defaultTarget = mkOption { | 
					
						
							|  |  |  |         default = "default"; | 
					
						
							|  |  |  |         type = types.str; | 
					
						
							|  |  |  |         description = ''
 | 
					
						
							|  |  |  |           Fallback if no monitor layout can be detected. See the docs | 
					
						
							|  |  |  |           (https://github.com/phillipberndt/autorandr/blob/v1.0/README.md#how-to-use) | 
					
						
							|  |  |  |           for further reference. | 
					
						
							|  |  |  |         '';
 | 
					
						
							|  |  |  |       }; | 
					
						
							| 
									
										
										
										
											2017-04-06 13:03:31 +03:00
										 |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   config = mkIf cfg.enable { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     services.udev.packages = [ pkgs.autorandr ]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     environment.systemPackages = [ pkgs.autorandr ]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     systemd.services.autorandr = { | 
					
						
							|  |  |  |       wantedBy = [ "sleep.target" ]; | 
					
						
							| 
									
										
										
										
											2018-06-22 22:52:21 +02:00
										 |  |  |       description = "Autorandr execution hook"; | 
					
						
							|  |  |  |       after = [ "sleep.target" ]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       serviceConfig = { | 
					
						
							|  |  |  |         StartLimitInterval = 5; | 
					
						
							|  |  |  |         StartLimitBurst = 1; | 
					
						
							|  |  |  |         ExecStart = "${pkgs.autorandr}/bin/autorandr --batch --change --default ${cfg.defaultTarget}"; | 
					
						
							|  |  |  |         Type = "oneshot"; | 
					
						
							|  |  |  |         RemainAfterExit = false; | 
					
						
							|  |  |  |       }; | 
					
						
							| 
									
										
										
										
											2017-04-06 13:03:31 +03:00
										 |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-06-22 22:52:21 +02:00
										 |  |  |   meta.maintainers = with maintainers; [ gnidorah ma27 ]; | 
					
						
							| 
									
										
										
										
											2017-04-06 13:03:31 +03:00
										 |  |  | } |