| gio | 36b23b3 | 2024-08-25 12:20:54 +0400 | [diff] [blame] | 1 | input: { |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 2 | name: string @name(Hostname) |
| 3 | username: string @name(Username) |
| 4 | authKey?: string @name(Auth Key) @role(VPNAuthKey) @usernameField(username) @enabledField(vpnEnabled) |
| 5 | cpuCores: int | *1 @name(CPU Cores) |
| 6 | memory: string | *"2Gi" @name(Memory) |
| 7 | vpnEnabled?: bool @name(Enable VPN) |
| 8 | codeServerEnabled?: bool @name(Install VSCode Server) |
| gio | 36b23b3 | 2024-08-25 12:20:54 +0400 | [diff] [blame] | 9 | } |
| 10 | |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 11 | name: "Virtual Machine" |
| 12 | namespace: "app-vm" |
| 13 | readme: "Virtual Machine" |
| gio | 36b23b3 | 2024-08-25 12:20:54 +0400 | [diff] [blame] | 14 | description: "Virtual Machine" |
| 15 | icon: """ |
| gio | d2d2df0 | 2025-05-03 19:15:17 +0400 | [diff] [blame] | 16 | <svg xmlns="http://www.w3.org/2000/svg" width="50" height="50" viewBox="0 0 2048 2048"><path fill="currentColor" d="M1280 384H640V256h640zm0 1024H640v-128h640zm0 256H640v-128h640zM1408 0q27 0 50 10t40 27t28 41t10 50v1792H384V128q0-27 10-50t27-40t41-28t50-10zm0 128H512v1664h896z"/></svg>""" |
| gio | 36b23b3 | 2024-08-25 12:20:54 +0400 | [diff] [blame] | 17 | |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 18 | out: { |
| 19 | vm: { |
| 20 | "\(input.name)": { |
| 21 | username: input.username |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 22 | domain: global.domain |
| gio | 36b23b3 | 2024-08-25 12:20:54 +0400 | [diff] [blame] | 23 | cpuCores: input.cpuCores |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 24 | memory: input.memory |
| gio | f6ad298 | 2024-08-23 17:42:49 +0400 | [diff] [blame] | 25 | if input.vpnEnabled != _|_ { |
| 26 | if !input.vpnEnabled { |
| 27 | vpn: enabled: false |
| gio | 29f6b87 | 2024-09-08 16:14:58 +0400 | [diff] [blame] | 28 | } |
| gio | f6ad298 | 2024-08-23 17:42:49 +0400 | [diff] [blame] | 29 | if input.vpnEnabled { |
| 30 | vpn: { |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 31 | enabled: true |
| gio | f6ad298 | 2024-08-23 17:42:49 +0400 | [diff] [blame] | 32 | loginServer: "https://headscale.\(global.domain)" |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 33 | authKey: input.authKey |
| gio | f6ad298 | 2024-08-23 17:42:49 +0400 | [diff] [blame] | 34 | } |
| 35 | } |
| 36 | } |
| 37 | if input.codeServerEnabled != _|_ { |
| gio | a1f2947 | 2025-05-14 13:05:05 +0400 | [diff] [blame] | 38 | codeServer: { |
| 39 | enabled: input.codeServerEnabled |
| 40 | } |
| gio | 36b23b3 | 2024-08-25 12:20:54 +0400 | [diff] [blame] | 41 | } |
| gio | 36b23b3 | 2024-08-25 12:20:54 +0400 | [diff] [blame] | 42 | } |
| 43 | } |
| 44 | } |