| 
									
										
										
										
											2011-07-25 00:45:52 +00:00
										 |  |  | # Upower daemon. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-14 16:26:48 +02:00
										 |  |  | { config, lib, pkgs, ... }: | 
					
						
							| 
									
										
										
										
											2011-07-25 00:45:52 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-14 16:26:48 +02:00
										 |  |  | with lib; | 
					
						
							| 
									
										
										
										
											2011-07-25 00:45:52 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-05-19 13:13:32 +02:00
										 |  |  | let | 
					
						
							|  |  |  |   cfg = config.services.upower; | 
					
						
							|  |  |  | in | 
					
						
							| 
									
										
										
										
											2011-07-25 00:45:52 +00:00
										 |  |  | { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ###### interface | 
					
						
							| 
									
										
										
										
											2011-09-14 18:20:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-07-25 00:45:52 +00:00
										 |  |  |   options = { | 
					
						
							| 
									
										
										
										
											2011-09-14 18:20:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-07-25 00:45:52 +00:00
										 |  |  |     services.upower = { | 
					
						
							| 
									
										
										
										
											2011-09-14 18:20:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-07-25 00:45:52 +00:00
										 |  |  |       enable = mkOption { | 
					
						
							| 
									
										
										
										
											2013-10-30 17:37:45 +01:00
										 |  |  |         type = types.bool; | 
					
						
							| 
									
										
										
										
											2011-07-25 00:45:52 +00:00
										 |  |  |         default = false; | 
					
						
							|  |  |  |         description = ''
 | 
					
						
							|  |  |  |           Whether to enable Upower, a DBus service that provides power | 
					
						
							|  |  |  |           management support to applications. | 
					
						
							|  |  |  |         '';
 | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-05-19 13:13:32 +02:00
										 |  |  |       package = mkOption { | 
					
						
							|  |  |  |         type = types.package; | 
					
						
							|  |  |  |         default = pkgs.upower; | 
					
						
							|  |  |  |         example = lib.literalExample "pkgs.upower"; | 
					
						
							|  |  |  |         description = ''
 | 
					
						
							|  |  |  |           Which upower package to use. | 
					
						
							|  |  |  |         '';
 | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-07-25 00:45:52 +00:00
										 |  |  |     }; | 
					
						
							| 
									
										
										
										
											2011-09-14 18:20:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-07-25 00:45:52 +00:00
										 |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ###### implementation | 
					
						
							| 
									
										
										
										
											2011-09-14 18:20:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-05-19 13:13:32 +02:00
										 |  |  |   config = mkIf cfg.enable { | 
					
						
							| 
									
										
										
										
											2011-07-25 00:45:52 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-05-19 13:13:32 +02:00
										 |  |  |     environment.systemPackages = [ cfg.package ]; | 
					
						
							| 
									
										
										
										
											2011-07-25 00:45:52 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-05-19 13:13:32 +02:00
										 |  |  |     services.dbus.packages = [ cfg.package ]; | 
					
						
							| 
									
										
										
										
											2011-07-25 00:45:52 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-05-19 13:13:32 +02:00
										 |  |  |     services.udev.packages = [ cfg.package ]; | 
					
						
							| 
									
										
										
										
											2011-08-24 21:24:39 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-01-16 12:33:18 +01:00
										 |  |  |     systemd.services.upower = | 
					
						
							| 
									
										
										
										
											2012-10-04 16:38:31 -04:00
										 |  |  |       { description = "Power Management Daemon"; | 
					
						
							|  |  |  |         path = [ pkgs.glib ]; # needed for gdbus | 
					
						
							|  |  |  |         serviceConfig = | 
					
						
							|  |  |  |           { Type = "dbus"; | 
					
						
							|  |  |  |             BusName = "org.freedesktop.UPower"; | 
					
						
							| 
									
										
										
										
											2014-05-19 13:13:32 +02:00
										 |  |  |             ExecStart = "@${cfg.package}/libexec/upowerd upowerd"; | 
					
						
							| 
									
										
										
										
											2012-10-04 16:38:31 -04:00
										 |  |  |           }; | 
					
						
							|  |  |  |       }; | 
					
						
							| 
									
										
										
										
											2012-08-21 11:29:59 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-06 11:18:36 +00:00
										 |  |  |     system.activationScripts.upower = | 
					
						
							|  |  |  |       ''
 | 
					
						
							|  |  |  |         mkdir -m 0755 -p /var/lib/upower | 
					
						
							|  |  |  |       '';
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-04 21:58:40 -04:00
										 |  |  |     # The upower daemon seems to get stuck after doing a suspend | 
					
						
							|  |  |  |     # (i.e. subsequent suspend requests will say "Sleep has already | 
					
						
							|  |  |  |     # been requested and is pending").  So as a workaround, restart | 
					
						
							|  |  |  |     # the daemon. | 
					
						
							|  |  |  |     powerManagement.resumeCommands = | 
					
						
							|  |  |  |       ''
 | 
					
						
							| 
									
										
										
										
											2013-01-16 13:17:57 +01:00
										 |  |  |         ${config.systemd.package}/bin/systemctl try-restart upower | 
					
						
							| 
									
										
										
										
											2012-10-04 21:58:40 -04:00
										 |  |  |       '';
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-07-25 00:45:52 +00:00
										 |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } |