| 
									
										
										
										
											2009-05-28 12:43:54 +00:00
										 |  |  |  | # /etc files related to networking, such as /etc/services. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-04 13:05:09 +02:00
										 |  |  |  | { config, pkgs, ... }: | 
					
						
							| 
									
										
										
										
											2009-05-28 12:43:54 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-09 21:02:01 +00:00
										 |  |  |  | with pkgs.lib; | 
					
						
							| 
									
										
										
										
											2012-10-19 15:41:01 -04:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-28 12:43:54 +00:00
										 |  |  |  | let | 
					
						
							| 
									
										
										
										
											2012-10-19 15:41:01 -04:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-09 21:02:01 +00:00
										 |  |  |  |   cfg = config.networking; | 
					
						
							| 
									
										
										
										
											2009-05-28 12:43:54 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-04 13:05:09 +02:00
										 |  |  |  | in | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-28 12:43:54 +00:00
										 |  |  |  |   options = { | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     networking.extraHosts = pkgs.lib.mkOption { | 
					
						
							|  |  |  |  |       default = ""; | 
					
						
							|  |  |  |  |       example = "192.168.0.1 lanlocalhost"; | 
					
						
							|  |  |  |  |       description = ''
 | 
					
						
							|  |  |  |  |         Additional entries to be appended to <filename>/etc/hosts</filename>. | 
					
						
							|  |  |  |  |       '';
 | 
					
						
							|  |  |  |  |     }; | 
					
						
							| 
									
										
										
										
											2011-09-14 18:20:50 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-21 21:46:05 -07:00
										 |  |  |  |     networking.dnsSingleRequest = pkgs.lib.mkOption { | 
					
						
							|  |  |  |  |       default = false; | 
					
						
							|  |  |  |  |       description = ''
 | 
					
						
							|  |  |  |  |         Recent versions of glibc will issue both ipv4 (A) and ipv6 (AAAA) | 
					
						
							|  |  |  |  |         address queries at the same time, from the same port. Sometimes upstream | 
					
						
							|  |  |  |  |         routers will systemically drop the ipv4 queries. The symptom of this problem is | 
					
						
							|  |  |  |  |         that 'getent hosts example.com' only returns ipv6 (or perhaps only ipv4) addresses. The | 
					
						
							|  |  |  |  |         workaround for this is to specify the option 'single-request' in | 
					
						
							| 
									
										
										
										
											2013-05-04 11:26:56 +02:00
										 |  |  |  |         /etc/resolv.conf. This option enables that. | 
					
						
							| 
									
										
										
										
											2012-10-21 21:46:05 -07:00
										 |  |  |  |       '';
 | 
					
						
							|  |  |  |  |     }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-28 12:43:54 +00:00
										 |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-04 13:05:09 +02:00
										 |  |  |  |   config = { | 
					
						
							| 
									
										
										
										
											2009-05-28 12:43:54 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-04 13:05:09 +02:00
										 |  |  |  |     environment.etc = | 
					
						
							|  |  |  |  |       { # /etc/services: TCP/UDP port assignments. | 
					
						
							|  |  |  |  |         "services".source = pkgs.iana_etc + "/etc/services"; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         # /etc/protocols: IP protocol numbers. | 
					
						
							|  |  |  |  |         "protocols".source  = pkgs.iana_etc + "/etc/protocols"; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         # /etc/rpc: RPC program numbers. | 
					
						
							|  |  |  |  |         "rpc".source = pkgs.glibc + "/etc/rpc"; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         # /etc/hosts: Hostname-to-IP mappings. | 
					
						
							|  |  |  |  |         "hosts".text = | 
					
						
							| 
									
										
										
										
											2012-03-01 14:46:47 +00:00
										 |  |  |  |           ''
 | 
					
						
							| 
									
										
										
										
											2013-09-04 13:05:09 +02:00
										 |  |  |  |             127.0.0.1 localhost | 
					
						
							|  |  |  |  |             ${optionalString cfg.enableIPv6 ''
 | 
					
						
							|  |  |  |  |               ::1 localhost | 
					
						
							|  |  |  |  |             ''}
 | 
					
						
							|  |  |  |  |             ${cfg.extraHosts} | 
					
						
							| 
									
										
										
										
											2013-02-03 14:12:49 +01:00
										 |  |  |  |           '';
 | 
					
						
							| 
									
										
										
										
											2012-08-15 15:38:52 -04:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-04 13:05:09 +02:00
										 |  |  |  |         # /etc/resolvconf.conf: Configuration for openresolv. | 
					
						
							|  |  |  |  |         "resolvconf.conf".text = | 
					
						
							|  |  |  |  |             ''
 | 
					
						
							|  |  |  |  |               # This is the default, but we must set it here to prevent | 
					
						
							|  |  |  |  |               # a collision with an apparently unrelated environment | 
					
						
							|  |  |  |  |               # variable with the same name exported by dhcpcd. | 
					
						
							|  |  |  |  |               interface_order='lo lo[0-9]*' | 
					
						
							|  |  |  |  |             '' + optionalString config.services.nscd.enable '' | 
					
						
							|  |  |  |  |               # Invalidate the nscd cache whenever resolv.conf is | 
					
						
							|  |  |  |  |               # regenerated. | 
					
						
							|  |  |  |  |               libc_restart='${pkgs.systemd}/bin/systemctl try-restart --no-block nscd.service' | 
					
						
							|  |  |  |  |             '' + optionalString cfg.dnsSingleRequest '' | 
					
						
							|  |  |  |  |               # only send one DNS request at a time | 
					
						
							|  |  |  |  |               resolv_conf_options='single-request' | 
					
						
							|  |  |  |  |             '' + optionalString config.services.bind.enable '' | 
					
						
							|  |  |  |  |               # This hosts runs a full-blown DNS resolver. | 
					
						
							|  |  |  |  |               name_servers='127.0.0.1' | 
					
						
							|  |  |  |  |             '';
 | 
					
						
							|  |  |  |  |       }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     # The ‘ip-up’ target is started when we have IP connectivity.  So | 
					
						
							|  |  |  |  |     # services that depend on IP connectivity (like ntpd) should be | 
					
						
							|  |  |  |  |     # pulled in by this target. | 
					
						
							|  |  |  |  |     systemd.targets.ip-up.description = "Services Requiring IP Connectivity"; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-28 12:43:54 +00:00
										 |  |  |  | } |