| 
									
										
										
										
											2024-05-28 23:47:11 -04:00
										 |  |  | { lib, config, ... }: | 
					
						
							|  |  |  | let | 
					
						
							| 
									
										
										
										
											2025-04-01 13:59:09 -04:00
										 |  |  |   cfg = config.services.adev.k3s-net; | 
					
						
							| 
									
										
										
										
											2024-05-28 23:47:11 -04:00
										 |  |  | in | 
					
						
							| 
									
										
										
										
											2024-05-25 12:48:46 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2024-05-28 23:41:22 -04:00
										 |  |  |   options = { | 
					
						
							| 
									
										
										
										
											2025-04-01 13:59:09 -04:00
										 |  |  |     services.adev.k3s-net = { | 
					
						
							| 
									
										
										
										
											2024-05-28 23:41:22 -04:00
										 |  |  |       enable = lib.mkOption { | 
					
						
							| 
									
										
										
										
											2024-08-24 01:56:58 -04:00
										 |  |  |         default = false; | 
					
						
							| 
									
										
										
										
											2024-05-28 23:41:22 -04:00
										 |  |  |         example = true; | 
					
						
							|  |  |  |         description = "Whether to enable k3s-net."; | 
					
						
							|  |  |  |         type = lib.types.bool; | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  |     }; | 
					
						
							| 
									
										
										
										
											2024-05-25 12:48:46 -04:00
										 |  |  |   }; | 
					
						
							| 
									
										
										
										
											2024-05-27 17:00:50 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-28 23:47:11 -04:00
										 |  |  |   config = lib.mkIf cfg.enable { | 
					
						
							| 
									
										
										
										
											2024-05-28 23:41:22 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     system.activationScripts.setZerotierName = lib.stringAfter [ "var" ] ''
 | 
					
						
							|  |  |  |       echo "ebe7fbd44565ba9d=ztkubnet" > /var/lib/zerotier-one/devicemap  | 
					
						
							|  |  |  |     '';
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-28 23:51:01 -04:00
										 |  |  |     services.zerotierone = lib.mkDefault { | 
					
						
							| 
									
										
										
										
											2024-05-28 23:41:22 -04:00
										 |  |  |       enable = true; | 
					
						
							|  |  |  |       joinNetworks = [ "ebe7fbd44565ba9d" ]; | 
					
						
							| 
									
										
										
										
											2024-05-26 11:06:40 -04:00
										 |  |  |     }; | 
					
						
							| 
									
										
										
										
											2024-05-28 23:41:22 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-28 23:51:01 -04:00
										 |  |  |     systemd.network = lib.mkDefault { | 
					
						
							| 
									
										
										
										
											2024-05-28 23:41:22 -04:00
										 |  |  |       enable = true; | 
					
						
							|  |  |  |       wait-online.anyInterface = true; | 
					
						
							|  |  |  |       netdevs = { | 
					
						
							|  |  |  |         "20-brkubnet" = { | 
					
						
							|  |  |  |           netdevConfig = { | 
					
						
							|  |  |  |             Kind = "bridge"; | 
					
						
							|  |  |  |             Name = "brkubnet"; | 
					
						
							|  |  |  |           }; | 
					
						
							|  |  |  |         }; | 
					
						
							| 
									
										
										
										
											2024-05-26 11:06:40 -04:00
										 |  |  |       }; | 
					
						
							| 
									
										
										
										
											2024-05-28 23:41:22 -04:00
										 |  |  |       networks = { | 
					
						
							|  |  |  |         "30-ztkubnet" = { | 
					
						
							|  |  |  |           matchConfig.Name = "ztkubnet"; | 
					
						
							|  |  |  |           networkConfig.Bridge = "brkubnet"; | 
					
						
							|  |  |  |           linkConfig.RequiredForOnline = "enslaved"; | 
					
						
							|  |  |  |         }; | 
					
						
							|  |  |  |         "40-brkubnet" = { | 
					
						
							|  |  |  |           matchConfig.Name = "brkubnet"; | 
					
						
							|  |  |  |           bridgeConfig = { }; | 
					
						
							|  |  |  |           linkConfig.RequiredForOnline = "no"; | 
					
						
							|  |  |  |         }; | 
					
						
							| 
									
										
										
										
											2024-05-26 11:06:40 -04:00
										 |  |  |       }; | 
					
						
							|  |  |  |     }; | 
					
						
							| 
									
										
										
										
											2024-05-27 17:00:50 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-28 23:41:22 -04:00
										 |  |  |     # enable experimental networkd backend so networking doesnt break on hybrid systems | 
					
						
							| 
									
										
										
										
											2024-05-28 23:51:01 -04:00
										 |  |  |     networking.useNetworkd = lib.mkDefault true; | 
					
						
							| 
									
										
										
										
											2024-05-28 23:41:22 -04:00
										 |  |  |   }; | 
					
						
							| 
									
										
										
										
											2024-05-25 12:48:46 -04:00
										 |  |  | } |