| 
									
										
										
										
											2014-04-14 16:26:48 +02:00
										 |  |  |  | { config, lib, pkgs, ... }: | 
					
						
							| 
									
										
										
										
											2009-01-02 16:07:15 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-14 16:26:48 +02:00
										 |  |  |  | with lib; | 
					
						
							| 
									
										
										
										
											2009-08-16 14:49:14 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-02 16:07:15 +00:00
										 |  |  |  | let | 
					
						
							| 
									
										
										
										
											2009-08-16 14:49:14 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |   cfg = config.security.sudo; | 
					
						
							| 
									
										
										
										
											2011-09-14 18:20:50 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-16 14:49:14 +00:00
										 |  |  |  |   inherit (pkgs) sudo; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | in | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   ###### interface | 
					
						
							| 
									
										
										
										
											2009-01-02 16:07:15 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |   options = { | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-16 14:49:14 +00:00
										 |  |  |  |     security.sudo.enable = mkOption { | 
					
						
							| 
									
										
										
										
											2013-10-30 17:37:45 +01:00
										 |  |  |  |       type = types.bool; | 
					
						
							| 
									
										
										
										
											2009-08-16 14:49:14 +00:00
										 |  |  |  |       default = true; | 
					
						
							|  |  |  |  |       description = | 
					
						
							|  |  |  |  |         ''
 | 
					
						
							|  |  |  |  |           Whether to enable the <command>sudo</command> command, which | 
					
						
							|  |  |  |  |           allows non-root users to execute commands as root. | 
					
						
							|  |  |  |  |         '';
 | 
					
						
							|  |  |  |  |     }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-08-13 14:37:32 +02:00
										 |  |  |  |     security.sudo.wheelNeedsPassword = mkOption { | 
					
						
							| 
									
										
										
										
											2013-10-30 17:37:45 +01:00
										 |  |  |  |       type = types.bool; | 
					
						
							| 
									
										
										
										
											2012-08-13 14:37:32 +02:00
										 |  |  |  |       default = true; | 
					
						
							|  |  |  |  |       description = | 
					
						
							|  |  |  |  |         ''
 | 
					
						
							|  |  |  |  |           Whether users of the <code>wheel</code> group can execute | 
					
						
							|  |  |  |  |           commands as super user without entering a password. | 
					
						
							| 
									
										
										
										
											2013-04-03 12:54:40 +02:00
										 |  |  |  |         '';
 | 
					
						
							| 
									
										
										
										
											2012-08-13 14:37:32 +02:00
										 |  |  |  |       }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-16 14:49:14 +00:00
										 |  |  |  |     security.sudo.configFile = mkOption { | 
					
						
							| 
									
										
										
										
											2013-10-30 17:37:45 +01:00
										 |  |  |  |       type = types.lines; | 
					
						
							| 
									
										
										
										
											2009-08-16 14:49:14 +00:00
										 |  |  |  |       # Note: if syntax errors are detected in this file, the NixOS | 
					
						
							|  |  |  |  |       # configuration will fail to build. | 
					
						
							|  |  |  |  |       description = | 
					
						
							|  |  |  |  |         ''
 | 
					
						
							|  |  |  |  |           This string contains the contents of the | 
					
						
							|  |  |  |  |           <filename>sudoers</filename> file. | 
					
						
							|  |  |  |  |         '';
 | 
					
						
							| 
									
										
										
										
											2009-01-02 16:07:15 +00:00
										 |  |  |  |     }; | 
					
						
							| 
									
										
										
										
											2014-10-30 13:59:21 +01:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |     security.sudo.extraConfig = mkOption { | 
					
						
							|  |  |  |  |       type = types.lines; | 
					
						
							|  |  |  |  |       default = ""; | 
					
						
							|  |  |  |  |       description = ''
 | 
					
						
							|  |  |  |  |         Extra configuration text appended to <filename>sudoers</filename>. | 
					
						
							|  |  |  |  |       '';
 | 
					
						
							|  |  |  |  |     }; | 
					
						
							| 
									
										
										
										
											2009-01-02 16:07:15 +00:00
										 |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-16 14:49:14 +00:00
										 |  |  |  |   ###### implementation | 
					
						
							| 
									
										
										
										
											2009-01-02 16:07:15 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-16 14:49:14 +00:00
										 |  |  |  |   config = mkIf cfg.enable { | 
					
						
							| 
									
										
										
										
											2009-01-02 16:07:15 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-11-23 15:14:16 +01:00
										 |  |  |  |     security.sudo.configFile = | 
					
						
							|  |  |  |  |       ''
 | 
					
						
							| 
									
										
										
										
											2014-10-30 13:59:21 +01:00
										 |  |  |  |         # Don't edit this file. Set the NixOS options ‘security.sudo.configFile’ | 
					
						
							| 
									
										
										
										
											2014-12-18 11:51:08 +01:00
										 |  |  |  |         # or ‘security.sudo.extraConfig’ instead. | 
					
						
							| 
									
										
										
										
											2012-11-23 15:14:16 +01:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |         # Environment variables to keep for root and %wheel. | 
					
						
							|  |  |  |  |         Defaults:root,%wheel env_keep+=TERMINFO_DIRS | 
					
						
							| 
									
										
										
										
											2014-05-04 14:42:16 +02:00
										 |  |  |  |         Defaults:root,%wheel env_keep+=TERMINFO | 
					
						
							| 
									
										
										
										
											2012-11-23 15:14:16 +01:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |         # Keep SSH_AUTH_SOCK so that pam_ssh_agent_auth.so can do its magic. | 
					
						
							|  |  |  |  |         Defaults env_keep+=SSH_AUTH_SOCK | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         # "root" is allowed to do anything. | 
					
						
							|  |  |  |  |         root        ALL=(ALL) SETENV: ALL | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         # Users in the "wheel" group can do anything. | 
					
						
							| 
									
										
										
										
											2015-03-30 23:50:45 +01:00
										 |  |  |  |         %wheel      ALL=(ALL:ALL) ${if cfg.wheelNeedsPassword then "" else "NOPASSWD: ALL, "}SETENV: ALL | 
					
						
							| 
									
										
										
										
											2014-10-30 13:59:21 +01:00
										 |  |  |  |         ${cfg.extraConfig} | 
					
						
							| 
									
										
										
										
											2012-11-23 15:14:16 +01:00
										 |  |  |  |       '';
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-03 12:54:40 +02:00
										 |  |  |  |     security.setuidPrograms = [ "sudo" "sudoedit" ]; | 
					
						
							| 
									
										
										
										
											2009-01-02 16:07:15 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-16 14:49:14 +00:00
										 |  |  |  |     environment.systemPackages = [ sudo ]; | 
					
						
							| 
									
										
										
										
											2009-01-02 16:07:15 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-10-15 14:47:51 +02:00
										 |  |  |  |     security.pam.services.sudo = { sshAgentAuth = true; }; | 
					
						
							| 
									
										
										
										
											2009-01-02 16:07:15 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-16 14:49:14 +00:00
										 |  |  |  |     environment.etc = singleton | 
					
						
							| 
									
										
										
										
											2014-06-09 00:54:13 +04:00
										 |  |  |  |       { source = | 
					
						
							|  |  |  |  |           pkgs.runCommand "sudoers" | 
					
						
							| 
									
										
										
										
											2014-12-18 11:51:08 +01:00
										 |  |  |  |           { src = pkgs.writeText "sudoers-in" cfg.configFile; } | 
					
						
							| 
									
										
										
										
											2009-01-02 16:07:15 +00:00
										 |  |  |  |           # Make sure that the sudoers file is syntactically valid. | 
					
						
							|  |  |  |  |           # (currently disabled - NIXOS-66) | 
					
						
							| 
									
										
										
										
											2014-12-18 11:51:08 +01:00
										 |  |  |  |           "${pkgs.sudo}/sbin/visudo -f $src -c && cp $src $out"; | 
					
						
							| 
									
										
										
										
											2009-01-02 16:07:15 +00:00
										 |  |  |  |         target = "sudoers"; | 
					
						
							|  |  |  |  |         mode = "0440"; | 
					
						
							| 
									
										
										
										
											2009-08-16 14:49:14 +00:00
										 |  |  |  |       }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-02 16:07:15 +00:00
										 |  |  |  |   }; | 
					
						
							| 
									
										
										
										
											2009-08-16 14:49:14 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-02 16:07:15 +00:00
										 |  |  |  | } |