| 
									
										
										
										
											2025-06-09 16:14:57 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2025-05-03 11:35:18 +08:00
										 |  |  |   lib, | 
					
						
							|  |  |  |   inputs, | 
					
						
							|  |  |  |   flake-parts-lib, | 
					
						
							| 
									
										
										
										
											2025-06-09 16:14:57 +08:00
										 |  |  |   self, | 
					
						
							| 
									
										
										
										
											2025-05-03 11:35:18 +08:00
										 |  |  |   ... | 
					
						
							| 
									
										
										
										
											2025-07-13 06:04:55 +08:00
										 |  |  | }: | 
					
						
							|  |  |  | let | 
					
						
							| 
									
										
										
										
											2025-06-09 16:14:57 +08:00
										 |  |  |   inherit (self) outputs; | 
					
						
							|  |  |  |   inherit (inputs) deploy-rs; | 
					
						
							| 
									
										
										
										
											2025-07-13 06:04:55 +08:00
										 |  |  |   mkDeployNode = | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |       hostName, | 
					
						
							|  |  |  |       unixName ? "deploy", | 
					
						
							|  |  |  |       system ? "x86_64-linux", | 
					
						
							|  |  |  |       sshName ? hostName, | 
					
						
							|  |  |  |     }: | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |       "${hostName}" = { | 
					
						
							|  |  |  |         hostname = "${sshName}"; | 
					
						
							|  |  |  |         sshUser = "${unixName}"; | 
					
						
							|  |  |  |         interactiveSudo = true; | 
					
						
							|  |  |  |         profiles = { | 
					
						
							|  |  |  |           system = { | 
					
						
							|  |  |  |             user = "root"; | 
					
						
							|  |  |  |             path = deploy-rs.lib."${system}".activate.nixos outputs.nixosConfigurations."${hostName}"; | 
					
						
							|  |  |  |           }; | 
					
						
							| 
									
										
										
										
											2025-05-03 11:35:18 +08:00
										 |  |  |         }; | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  |     }; | 
					
						
							| 
									
										
										
										
											2025-07-13 06:04:55 +08:00
										 |  |  | in | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2025-05-03 11:35:18 +08:00
										 |  |  |   options = { | 
					
						
							|  |  |  |     flake = flake-parts-lib.mkSubmoduleOptions { | 
					
						
							|  |  |  |       deploy = lib.mkOption { | 
					
						
							|  |  |  |         type = lib.types.lazyAttrsOf lib.types.raw; | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  |   config = { | 
					
						
							|  |  |  |     flake.deploy.nodes = | 
					
						
							|  |  |  |       [ | 
					
						
							|  |  |  |         "Cape" | 
					
						
							|  |  |  |         "Akun" | 
					
						
							|  |  |  |       ] | 
					
						
							|  |  |  |       |> map ( | 
					
						
							|  |  |  |         hostName: | 
					
						
							| 
									
										
										
										
											2025-07-13 06:04:55 +08:00
										 |  |  |         mkDeployNode { | 
					
						
							|  |  |  |           inherit hostName; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2025-05-03 11:35:18 +08:00
										 |  |  |       ) | 
					
						
							| 
									
										
										
										
											2025-07-13 06:04:55 +08:00
										 |  |  |       |> lib.foldr (a: b: a // b) { }; | 
					
						
							| 
									
										
										
										
											2025-05-03 11:35:18 +08:00
										 |  |  |   }; | 
					
						
							|  |  |  | } |