@highstate/library 0.7.11 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "sourceHashes": {
3
- "./dist/index.js": "18b6ba66694ed7562b0dc266bffe004fe89874e2f494ea45ecbf2dd6f2ea754a"
3
+ "./dist/index.js": "87b93b45d5c7ee264151628635db26d22961524bc86f599c8bfb9655f27980e9"
4
4
  }
5
5
  }
package/dist/index.js CHANGED
@@ -360,6 +360,7 @@ __export(k8s_exports, {
360
360
  deploymentSpecSchema: () => deploymentSpecSchema,
361
361
  dns01TlsIssuer: () => dns01TlsIssuer,
362
362
  existingCluster: () => existingCluster,
363
+ gatewayApi: () => gatewayApi,
363
364
  gatewayEntity: () => gatewayEntity,
364
365
  interfaceEntity: () => interfaceEntity,
365
366
  internalIpsPolicySchema: () => internalIpsPolicySchema,
@@ -423,7 +424,10 @@ var clusterInfoSchema = Type5.Object({
423
424
  id: Type5.String(),
424
425
  name: Type5.String(),
425
426
  cni: Type5.Optional(Type5.String()),
426
- externalIps: Type5.Array(Type5.String())
427
+ externalIps: Type5.Array(Type5.String()),
428
+ fqdn: Type5.Optional(Type5.String()),
429
+ kubeApiServerIp: Type5.Optional(Type5.String()),
430
+ kubeApiServerPort: Type5.Optional(Type5.Number())
427
431
  });
428
432
  var serviceTypeSchema = Type5.StringEnum(["NodePort", "LoadBalancer", "ClusterIP"]);
429
433
  var metadataSchema = Type5.Object({
@@ -585,14 +589,14 @@ var tlsIssuerEntity = defineEntity5({
585
589
  }
586
590
  });
587
591
  var accessPointEntity = defineEntity5({
588
- type: "common.access-point",
592
+ type: "k8s.access-point",
589
593
  schema: Type5.Object({
590
594
  gateway: gatewayEntity.schema,
591
595
  tlsIssuer: tlsIssuerEntity.schema,
592
- dnsProvider: providerEntity.schema
596
+ dnsProviders: Type5.Array(providerEntity.schema)
593
597
  }),
594
598
  meta: {
595
- color: "#FFC107"
599
+ color: "#F57F17"
596
600
  }
597
601
  });
598
602
  var accessPoint = defineUnit5({
@@ -600,7 +604,10 @@ var accessPoint = defineUnit5({
600
604
  inputs: {
601
605
  gateway: gatewayEntity,
602
606
  tlsIssuer: tlsIssuerEntity,
603
- dnsProvider: providerEntity
607
+ dnsProviders: {
608
+ entity: providerEntity,
609
+ multiple: true
610
+ }
604
611
  },
605
612
  outputs: {
606
613
  accessPoint: accessPointEntity
@@ -635,9 +642,27 @@ var certManager = defineUnit5({
635
642
  });
636
643
  var dns01TlsIssuer = defineUnit5({
637
644
  type: "k8s.dns01-issuer",
645
+ args: {
646
+ /**
647
+ * The top-level domains to filter the DNS01 challenge for.
648
+ *
649
+ * If not provided, will use all domains passed to the DNS providers.
650
+ *
651
+ * @schema
652
+ */
653
+ domains: {
654
+ ...Type5.Optional(Type5.Array(Type5.String())),
655
+ description: `The top-level domains to filter the DNS01 challenge for.
656
+
657
+ If not provided, will use all domains passed to the DNS providers.`
658
+ }
659
+ },
638
660
  inputs: {
639
661
  k8sCluster: clusterEntity2,
640
- dnsProvider: providerEntity
662
+ dnsProviders: {
663
+ entity: providerEntity,
664
+ multiple: true
665
+ }
641
666
  },
642
667
  outputs: {
643
668
  tlsIssuer: tlsIssuerEntity
@@ -715,6 +740,25 @@ var interfaceEntity = defineEntity5({
715
740
  description: "The interface in a network space of pod kernel which can accept or transmit packets."
716
741
  }
717
742
  });
743
+ var gatewayApi = defineUnit5({
744
+ type: "k8s.gateway-api",
745
+ inputs: {
746
+ k8sCluster: clusterEntity2
747
+ },
748
+ outputs: {
749
+ k8sCluster: clusterEntity2
750
+ },
751
+ meta: {
752
+ displayName: "Gateway API",
753
+ description: "Installs the Gateway API CRDs to the cluster.",
754
+ primaryIcon: "mdi:kubernetes",
755
+ primaryIconColor: "#4CAF50"
756
+ },
757
+ source: {
758
+ package: "@highstate/k8s",
759
+ path: "units/gateway-api"
760
+ }
761
+ });
718
762
 
719
763
  // src/talos.ts
720
764
  var talos_exports = {};
@@ -1259,7 +1303,8 @@ var identity = defineUnit7({
1259
1303
  * The FQDN of the WireGuard identity.
1260
1304
  * Will be used as endpoint for the peer.
1261
1305
  *
1262
- * If `dnsProvider` is provided and `externalIp` is available, the FQDN will be registered automatically.
1306
+ * If `dnsProvider` is provided, external IP is available and `registerFqdn` is set to `true`, and FQDN is provided explicitly (not obtained from the k8s cluster),
1307
+ * the FQDN will be registered with the DNS provider.
1263
1308
  *
1264
1309
  * @schema
1265
1310
  */
@@ -1268,7 +1313,21 @@ var identity = defineUnit7({
1268
1313
  description: `The FQDN of the WireGuard identity.
1269
1314
  Will be used as endpoint for the peer.
1270
1315
 
1271
- If \`dnsProvider\` is provided and \`externalIp\` is available, the FQDN will be registered automatically.`
1316
+ If \`dnsProvider\` is provided, external IP is available and \`registerFqdn\` is set to \`true\`, and FQDN is provided explicitly (not obtained from the k8s cluster),
1317
+ the FQDN will be registered with the DNS provider.`
1318
+ },
1319
+ /**
1320
+ * Whether to register the FQDN of the identity with the DNS provider.
1321
+ *
1322
+ * By default, `true`.
1323
+ *
1324
+ * @schema
1325
+ */
1326
+ registerFqdn: {
1327
+ ...Type7.Default(Type7.Boolean(), true),
1328
+ description: `Whether to register the FQDN of the identity with the DNS provider.
1329
+
1330
+ By default, \`true\`.`
1272
1331
  }
1273
1332
  },
1274
1333
  secrets: {
@@ -1333,6 +1392,15 @@ var identity = defineUnit7({
1333
1392
 
1334
1393
  Their IP addresses will be added to the \`allowedIps\` of the identity and passed to the node to set up network policies.`
1335
1394
  },
1395
+ /**
1396
+ * The Kubernetes cluster associated with the identity.
1397
+ *
1398
+ * If provided, will be used to obtain the external IP or FQDN of the identity.
1399
+ */
1400
+ k8sCluster: {
1401
+ entity: clusterEntity2,
1402
+ required: false
1403
+ },
1336
1404
  dnsProvider: {
1337
1405
  entity: providerEntity,
1338
1406
  required: false
@@ -2100,13 +2168,20 @@ __export(k3s_exports, {
2100
2168
  cluster: () => cluster2
2101
2169
  });
2102
2170
  import { defineUnit as defineUnit21 } from "@highstate/contract";
2171
+ import { Type as Type21 } from "@sinclair/typebox";
2103
2172
  var cluster2 = defineUnit21({
2104
2173
  type: "k3s.cluster",
2105
2174
  args: {
2106
- ...sharedClusterArgs
2175
+ ...sharedClusterArgs,
2176
+ config: Type21.Optional(Type21.Record(Type21.String(), Type21.Any()))
2107
2177
  },
2108
2178
  inputs: {
2109
- server: serverEntity
2179
+ server: serverEntity,
2180
+ dnsProviders: {
2181
+ entity: providerEntity,
2182
+ required: false,
2183
+ multiple: true
2184
+ }
2110
2185
  },
2111
2186
  outputs: {
2112
2187
  k8sCluster: clusterEntity2
@@ -2130,17 +2205,17 @@ __export(mullvad_exports, {
2130
2205
  endpointType: () => endpointType,
2131
2206
  peer: () => peer2
2132
2207
  });
2133
- import { defineUnit as defineUnit22, Type as Type21 } from "@highstate/contract";
2134
- var endpointType = Type21.Union([
2135
- Type21.Literal("fqdn"),
2136
- Type21.Literal("ipv4"),
2137
- Type21.Literal("ipv6")
2208
+ import { defineUnit as defineUnit22, Type as Type22 } from "@highstate/contract";
2209
+ var endpointType = Type22.Union([
2210
+ Type22.Literal("fqdn"),
2211
+ Type22.Literal("ipv4"),
2212
+ Type22.Literal("ipv6")
2138
2213
  ]);
2139
2214
  var peer2 = defineUnit22({
2140
2215
  type: "mullvad.peer",
2141
2216
  args: {
2142
- hostname: Type21.Optional(Type21.String()),
2143
- endpointType: Type21.Optional({ ...endpointType, default: "fqdn" })
2217
+ hostname: Type22.Optional(Type22.String()),
2218
+ endpointType: Type22.Optional({ ...endpointType, default: "fqdn" })
2144
2219
  },
2145
2220
  inputs: {
2146
2221
  /**
@@ -2176,18 +2251,18 @@ __export(timeweb_exports, {
2176
2251
  connectionEntity: () => connectionEntity,
2177
2252
  virtualMachine: () => virtualMachine2
2178
2253
  });
2179
- import { defineEntity as defineEntity12, defineUnit as defineUnit23, Type as Type22 } from "@highstate/contract";
2254
+ import { defineEntity as defineEntity12, defineUnit as defineUnit23, Type as Type23 } from "@highstate/contract";
2180
2255
  var connectionEntity = defineEntity12({
2181
2256
  type: "timeweb.connection",
2182
- schema: Type22.Object({
2183
- name: Type22.String(),
2184
- apiToken: Type22.String()
2257
+ schema: Type23.Object({
2258
+ name: Type23.String(),
2259
+ apiToken: Type23.String()
2185
2260
  })
2186
2261
  });
2187
2262
  var connection3 = defineUnit23({
2188
2263
  type: "timeweb.connection",
2189
2264
  secrets: {
2190
- apiToken: Type22.String()
2265
+ apiToken: Type23.String()
2191
2266
  },
2192
2267
  outputs: {
2193
2268
  connection: connectionEntity
@@ -2205,9 +2280,9 @@ var connection3 = defineUnit23({
2205
2280
  var virtualMachine2 = defineUnit23({
2206
2281
  type: "timeweb.virtual-machine",
2207
2282
  args: {
2208
- presetId: Type22.Optional(Type22.Number()),
2209
- osId: Type22.Optional(Type22.Number()),
2210
- availabilityZone: Type22.String()
2283
+ presetId: Type23.Optional(Type23.Number()),
2284
+ osId: Type23.Optional(Type23.Number()),
2285
+ availabilityZone: Type23.String()
2211
2286
  },
2212
2287
  inputs: {
2213
2288
  connection: connectionEntity,
@@ -2217,7 +2292,7 @@ var virtualMachine2 = defineUnit23({
2217
2292
  }
2218
2293
  },
2219
2294
  secrets: {
2220
- sshPrivateKey: Type22.Optional(Type22.String())
2295
+ sshPrivateKey: Type23.Optional(Type23.String())
2221
2296
  },
2222
2297
  outputs: {
2223
2298
  server: serverEntity
@@ -2244,11 +2319,11 @@ __export(nixos_exports, {
2244
2319
  remoteFlake: () => remoteFlake,
2245
2320
  system: () => system
2246
2321
  });
2247
- import { defineEntity as defineEntity13, defineUnit as defineUnit24, Type as Type23 } from "@highstate/contract";
2322
+ import { defineEntity as defineEntity13, defineUnit as defineUnit24, Type as Type24 } from "@highstate/contract";
2248
2323
  var inlineModuleEntity = defineEntity13({
2249
2324
  type: "nixos.inline-module",
2250
- schema: Type23.Object({
2251
- code: Type23.String()
2325
+ schema: Type24.Object({
2326
+ code: Type24.String()
2252
2327
  }),
2253
2328
  meta: {
2254
2329
  displayName: "NixOS Inline Module",
@@ -2259,7 +2334,7 @@ var inlineModuleEntity = defineEntity13({
2259
2334
  var inlineModule = defineUnit24({
2260
2335
  type: "nixos.inline-module",
2261
2336
  args: {
2262
- code: Type23.String({ language: "nix" })
2337
+ code: Type24.String({ language: "nix" })
2263
2338
  },
2264
2339
  inputs: {
2265
2340
  files: {
@@ -2285,8 +2360,8 @@ var inlineModule = defineUnit24({
2285
2360
  });
2286
2361
  var flakeEntity = defineEntity13({
2287
2362
  type: "nixos.flake",
2288
- schema: Type23.Object({
2289
- url: Type23.String()
2363
+ schema: Type24.Object({
2364
+ url: Type24.String()
2290
2365
  }),
2291
2366
  meta: {
2292
2367
  displayName: "NixOS Flake",
@@ -2297,7 +2372,7 @@ var flakeEntity = defineEntity13({
2297
2372
  var remoteFlake = defineUnit24({
2298
2373
  type: "nixos.remote-flake",
2299
2374
  args: {
2300
- url: Type23.String()
2375
+ url: Type24.String()
2301
2376
  },
2302
2377
  outputs: {
2303
2378
  flake: flakeEntity
@@ -2318,7 +2393,7 @@ var remoteFlake = defineUnit24({
2318
2393
  var inlineFlake = defineUnit24({
2319
2394
  type: "nixos.inline-flake",
2320
2395
  args: {
2321
- code: Type23.String({ language: "nix" })
2396
+ code: Type24.String({ language: "nix" })
2322
2397
  },
2323
2398
  inputs: {
2324
2399
  flakes: {
@@ -2355,7 +2430,7 @@ var inlineFlake = defineUnit24({
2355
2430
  var system = defineUnit24({
2356
2431
  type: "nixos.system",
2357
2432
  args: {
2358
- system: Type23.Optional(Type23.String())
2433
+ system: Type24.Optional(Type24.String())
2359
2434
  },
2360
2435
  inputs: {
2361
2436
  flake: flakeEntity,
@@ -2387,11 +2462,11 @@ var sops_exports = {};
2387
2462
  __export(sops_exports, {
2388
2463
  secrets: () => secrets
2389
2464
  });
2390
- import { defineUnit as defineUnit25, Type as Type24 } from "@highstate/contract";
2465
+ import { defineUnit as defineUnit25, Type as Type25 } from "@highstate/contract";
2391
2466
  var secrets = defineUnit25({
2392
2467
  type: "sops.secrets",
2393
2468
  args: {
2394
- secrets: Type24.Record(Type24.String(), Type24.Any())
2469
+ secrets: Type25.Record(Type25.String(), Type25.Any())
2395
2470
  },
2396
2471
  inputs: {
2397
2472
  servers: {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common.ts","../src/ssh.ts","../src/proxmox.ts","../src/k8s.ts","../src/dns.ts","../src/talos.ts","../src/wireguard.ts","../src/apps/index.ts","../src/apps/mariadb.ts","../src/restic.ts","../src/apps/postgresql.ts","../src/apps/vaultwarden.ts","../src/apps/traefik.ts","../src/apps/kubernetes-dashboard.ts","../src/apps/grocy.ts","../src/apps/maybe.ts","../src/apps/mongodb.ts","../src/apps/deployment.ts","../src/apps/syncthing.ts","../src/apps/code-server.ts","../src/cloudflare.ts","../src/k3s.ts","../src/mullvad.ts","../src/timeweb.ts","../src/nixos.ts","../src/sops.ts"],"sourcesContent":["import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\nimport { credentialsSchema, keyPairEntity } from \"./ssh\"\n\nexport const serverEntity = defineEntity({\n type: \"common.server\",\n\n schema: Type.Object({\n endpoint: Type.String(),\n hostname: Type.String(),\n sshCredentials: Type.Optional(credentialsSchema),\n }),\n\n meta: {\n color: \"#009688\",\n },\n})\n\nexport const endpointEntity = defineEntity({\n type: \"common.endpoint\",\n\n schema: Type.Object({\n endpoint: Type.String(),\n }),\n\n meta: {\n color: \"#FFC107\",\n description: \"The L3-L4 endpoint for some network service.\",\n },\n})\n\nexport const existingServer = defineUnit({\n type: \"common.existing-server\",\n\n args: {\n endpoint: Type.String(),\n sshUser: Type.Optional(Type.String({ default: \"root\" })),\n sshPort: Type.Optional(Type.Number({ default: 22 })),\n },\n\n secrets: {\n sshPassword: Type.Optional(Type.String()),\n sshPrivateKey: Type.Optional(Type.String()),\n },\n\n inputs: {\n sshKeyPair: {\n entity: keyPairEntity,\n required: false,\n },\n },\n\n outputs: {\n server: serverEntity,\n },\n\n meta: {\n displayName: \"Existing Server\",\n description: \"An existing server that can be used in the configuration.\",\n primaryIcon: \"mdi:server\",\n defaultNamePrefix: \"server\",\n },\n\n source: {\n package: \"@highstate/common\",\n path: \"existing-server\",\n },\n})\n\nexport const script = defineUnit({\n type: \"common.script\",\n\n args: {\n script: Type.String({ language: \"shell\" }),\n updateScript: Type.Optional(Type.String({ language: \"shell\" })),\n deleteScript: Type.Optional(Type.String({ language: \"shell\" })),\n },\n\n inputs: {\n server: serverEntity,\n },\n\n outputs: {\n server: serverEntity,\n },\n\n meta: {\n displayName: \"Shell Script\",\n description: \"Run a shell script on the server.\",\n primaryIcon: \"mdi:bash\",\n },\n\n source: {\n package: \"@highstate/common\",\n path: \"script\",\n },\n})\n\nexport const fileMetaEntity = defineEntity({\n type: \"common.file-meta\",\n\n schema: Type.Object({\n name: Type.String(),\n size: Type.Number(),\n isBinary: Type.Optional(Type.Boolean()),\n isExecutable: Type.Optional(Type.Boolean()),\n }),\n\n meta: {\n color: \"#FF5722\",\n description: \"Metadata for a file.\",\n },\n})\n\nexport const fileContentEntity = defineEntity({\n type: \"common.file-content\",\n\n schema: Type.Union([\n Type.Object({\n type: Type.Literal(\"inline\"),\n content: Type.String(),\n }),\n Type.Object({\n type: Type.Literal(\"remote\"),\n url: Type.String(),\n }),\n ]),\n\n meta: {\n color: \"#FF5722\",\n description: \"The content of a file.\",\n },\n})\n\nexport const fileEntity = defineEntity({\n type: \"common.file\",\n\n schema: Type.Object({\n meta: fileMetaEntity.schema,\n content: fileContentEntity.schema,\n }),\n\n meta: {\n color: \"#FF5722\",\n },\n})\n\nexport type Server = Static<typeof serverEntity.schema>\nexport type Endpoint = Static<typeof endpointEntity.schema>\n\nexport type File = Static<typeof fileEntity.schema>\nexport type FileMeta = Static<typeof fileMetaEntity.schema>\nexport type FileContent = Static<typeof fileContentEntity.schema>\n","import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\n\nexport const keyTypeSchema = Type.Union([\n //\n Type.Literal(\"rsa\"),\n Type.Literal(\"ed25519\"),\n])\n\nexport const keyPairEntity = defineEntity({\n type: \"ssh.key-pair\",\n\n schema: Type.Object({\n type: keyTypeSchema,\n privateKey: Type.String(),\n publicKey: Type.String(),\n }),\n\n meta: {\n color: \"#2b5797\",\n },\n})\n\nexport const credentialsSchema = Type.Object({\n endpoint: Type.Optional(Type.String()),\n user: Type.Optional(Type.String()),\n port: Type.Optional(Type.Number()),\n password: Type.Optional(Type.String()),\n privateKey: Type.Optional(Type.String()),\n})\n\nexport const keyPair = defineUnit({\n type: \"ssh.key-pair\",\n\n secrets: {\n privateKey: Type.Optional(Type.String()),\n },\n\n outputs: {\n keyPair: keyPairEntity,\n },\n\n meta: {\n displayName: \"SSH Key Pair\",\n description: \"Holds the ED25519 SSH key pair and generates the private key if not provided.\",\n category: \"ssh\",\n primaryIcon: \"charm:key\",\n primaryIconColor: \"#ffffff\",\n secondaryIcon: \"mdi:lock\",\n secondaryIconColor: \"#ffffff\",\n },\n\n source: {\n package: \"@highstate/common\",\n path: \"ssh/key-pair\",\n },\n})\n\nexport type KeyType = Static<typeof keyTypeSchema>\nexport type Credentials = Static<typeof credentialsSchema>\nexport type KeyPair = Static<typeof keyPairEntity.schema>\n","import { defineEntity, defineUnit, Type } from \"@highstate/contract\"\nimport { serverEntity } from \"./common\"\nimport { keyPairEntity } from \"./ssh\"\n\nexport const clusterEntity = defineEntity({\n type: \"proxmox.cluster\",\n\n schema: Type.Object({\n endpoint: Type.String(),\n insecure: Type.Optional(Type.Boolean()),\n username: Type.Optional(Type.String()),\n\n defaultNodeName: Type.String(),\n defaultDatastoreId: Type.String(),\n\n password: Type.Optional(Type.String()),\n apiToken: Type.Optional(Type.String()),\n }),\n\n meta: {\n color: \"#e56901\",\n },\n})\n\nexport const imageEntity = defineEntity({\n type: \"proxmox.image\",\n\n schema: Type.Object({\n id: Type.String(),\n }),\n\n meta: {\n color: \"#e56901\",\n },\n})\n\nexport const connection = defineUnit({\n type: \"proxmox.connection\",\n\n args: {\n endpoint: Type.String(),\n insecure: Type.Optional(Type.Boolean()),\n username: Type.Optional(Type.String()),\n\n defaultNodeName: Type.Optional(Type.String()),\n defaultDatastoreId: Type.Optional(Type.String()),\n },\n\n secrets: {\n password: Type.Optional(Type.String()),\n apiToken: Type.Optional(Type.String()),\n },\n\n outputs: {\n proxmoxCluster: clusterEntity,\n },\n\n meta: {\n displayName: \"Proxmox Connection\",\n description: \"The connection to an existing Proxmox cluster.\",\n category: \"Proxmox\",\n primaryIcon: \"simple-icons:proxmox\",\n primaryIconColor: \"#e56901\",\n secondaryIcon: \"codicon:vm\",\n },\n\n source: {\n package: \"@highstate/proxmox\",\n path: \"connection\",\n },\n})\n\nexport const image = defineUnit({\n type: \"proxmox.image\",\n\n args: {\n url: Type.String(),\n nodeName: Type.Optional(Type.String()),\n sha256: Type.Optional(Type.String()),\n datastoreId: Type.Optional(Type.String()),\n },\n\n inputs: {\n proxmoxCluster: clusterEntity,\n },\n\n outputs: {\n image: imageEntity,\n },\n\n meta: {\n displayName: \"Proxmox Image\",\n description: \"The image to upload to a Proxmox cluster.\",\n category: \"Proxmox\",\n primaryIcon: \"simple-icons:proxmox\",\n primaryIconColor: \"#e56901\",\n secondaryIcon: \"mage:compact-disk-fill\",\n },\n\n source: {\n package: \"@highstate/proxmox\",\n path: \"image\",\n },\n})\n\nexport const existingImage = defineUnit({\n type: \"proxmox.existing-image\",\n\n args: {\n id: Type.String(),\n },\n\n outputs: {\n image: imageEntity,\n },\n\n meta: {\n displayName: \"Proxmox Existing Image\",\n description: \"The existing image on a Proxmox cluster.\",\n category: \"Proxmox\",\n primaryIcon: \"simple-icons:proxmox\",\n primaryIconColor: \"#e56901\",\n secondaryIcon: \"mage:compact-disk-fill\",\n },\n\n source: {\n package: \"@highstate/proxmox\",\n path: \"existing-image\",\n },\n})\n\nexport const virtualMachine = defineUnit({\n type: \"proxmox.virtual-machine\",\n\n args: {\n nodeName: Type.Optional(Type.String()),\n\n cpuType: Type.Optional(Type.String({ default: \"host\" })),\n cores: Type.Optional(Type.Number({ default: 1 })),\n sockets: Type.Optional(Type.Number({ default: 1 })),\n memory: Type.Optional(Type.Number({ default: 512 })),\n\n ipv4: Type.Optional(Type.String()),\n ipv4Gateway: Type.Optional(Type.String()),\n dns: Type.Optional(Type.Array(Type.String())),\n\n datastoreId: Type.Optional(Type.String()),\n diskSize: Type.Optional(Type.Number({ default: 8 })),\n bridge: Type.Optional(Type.String({ default: \"vmbr0\" })),\n\n sshPort: Type.Optional(Type.Number({ default: 22 })),\n sshUser: Type.Optional(Type.String({ default: \"root\" })),\n\n waitForAgent: Type.Optional(Type.Boolean({ default: true })),\n },\n\n inputs: {\n proxmoxCluster: clusterEntity,\n image: imageEntity,\n\n sshKeyPair: {\n entity: keyPairEntity,\n required: false,\n },\n },\n\n secrets: {\n sshPassword: Type.Optional(Type.String()),\n },\n\n outputs: {\n server: serverEntity,\n },\n\n meta: {\n displayName: \"Proxmox Virtual Machine\",\n description: \"The virtual machine on a Proxmox cluster.\",\n category: \"Proxmox\",\n primaryIcon: \"simple-icons:proxmox\",\n primaryIconColor: \"#e56901\",\n secondaryIcon: \"codicon:vm\",\n },\n\n source: {\n package: \"@highstate/proxmox\",\n path: \"virtual-machine\",\n },\n})\n","import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\nimport { providerEntity } from \"./dns\"\n\nexport const clusterInfoSchema = Type.Object({\n id: Type.String(),\n name: Type.String(),\n cni: Type.Optional(Type.String()),\n externalIps: Type.Array(Type.String()),\n})\n\nexport const serviceTypeSchema = Type.StringEnum([\"NodePort\", \"LoadBalancer\", \"ClusterIP\"])\n\nexport const metadataSchema = Type.Object({\n namespace: Type.Optional(Type.String()),\n name: Type.String(),\n labels: Type.Optional(Type.Record(Type.String(), Type.String())),\n annotations: Type.Optional(Type.Record(Type.String(), Type.String())),\n})\n\nexport const servicePortSchema = Type.Object({\n name: Type.Optional(Type.String()),\n port: Type.Optional(Type.Number()),\n targetPort: Type.Optional(Type.Union([Type.Number(), Type.String()])),\n protocol: Type.Optional(Type.String()),\n})\n\nexport const serviceSpecSchema = Type.Object({\n type: Type.Optional(Type.String()),\n selector: Type.Record(Type.String(), Type.String()),\n ports: Type.Array(servicePortSchema),\n clusterIP: Type.Optional(Type.String()),\n clusterIPs: Type.Optional(Type.Array(Type.String())),\n externalIPs: Type.Optional(Type.Array(Type.String())),\n})\n\nexport const serviceEntity = defineEntity({\n type: \"k8s.service\",\n\n schema: Type.Object({\n type: Type.Literal(\"k8s.service\"),\n clusterInfo: clusterInfoSchema,\n metadata: metadataSchema,\n spec: serviceSpecSchema,\n }),\n\n meta: {\n color: \"#2196F3\",\n },\n})\n\nexport const clusterEntity = defineEntity({\n type: \"k8s.cluster\",\n\n schema: Type.Object({\n info: clusterInfoSchema,\n kubeconfig: Type.String(),\n }),\n\n meta: {\n color: \"#2196F3\",\n },\n})\n\nexport const internalIpsPolicySchema = Type.StringEnum([\"always\", \"public\", \"never\"])\n\nexport const sharedClusterArgs = {\n /**\n * The list of external IPs of the cluster nodes allowed to be used for external access.\n *\n * If not provided, will be automatically detected by querying the cluster nodes.\n *\n * @schema\n */\n externalIps: {\n ...Type.Optional(Type.Array(Type.String())),\n description: `The list of external IPs of the cluster nodes allowed to be used for external access.\n\n If not provided, will be automatically detected by querying the cluster nodes.`,\n},\n\n /**\n * The policy for using internal IPs of the nodes as external IPs.\n *\n * - `always`: always use internal IPs as external IPs;\n * - `public`: use internal IPs as external IPs only if they are (theoretically) routable from the public internet **(default)**;\n * - `never`: never use internal IPs as external IPs.\n *\n * @schema\n */\n internalIpsPolicy: {\n ...{ ...internalIpsPolicySchema, default: \"public\" },\n description: `The policy for using internal IPs of the nodes as external IPs.\n\n - \\`always\\`: always use internal IPs as external IPs;\n - \\`public\\`: use internal IPs as external IPs only if they are (theoretically) routable from the public internet **(default)**;\n - \\`never\\`: never use internal IPs as external IPs.`,\n},\n\n /**\n * The FQDN to register the cluster nodes with.\n *\n * If provided and `registerFqdn` is set to `true`, the corresponding DNS provider must be provided to set up the DNS records.\n *\n * @schema\n */\n fqdn: {\n ...Type.Optional(Type.String()),\n description: `The FQDN to register the cluster nodes with.\n\n If provided and \\`registerFqdn\\` is set to \\`true\\`, the corresponding DNS provider must be provided to set up the DNS records.`,\n},\n\n /**\n * Whether to register the cluster nodes with the provided FQDN.\n *\n * By default, `true`.\n *\n * @schema\n */\n registerFqdn: {\n ...Type.Boolean({ default: true }),\n description: `Whether to register the cluster nodes with the provided FQDN.\n\n By default, \\`true\\`.`,\n},\n}\n\nexport const existingCluster = defineUnit({\n type: \"k8s.existing-cluster\",\n\n args: {\n ...sharedClusterArgs,\n },\n\n secrets: {\n /**\n * The kubeconfig of the cluster to use for connecting to the cluster.\n *\n * Will be available for all components using `cluster` output of this unit.\n *\n * @schema\n */\n kubeconfig: {\n ...Type.Record(Type.String(), Type.Any()),\n description: `The kubeconfig of the cluster to use for connecting to the cluster.\n\n Will be available for all components using \\`cluster\\` output of this unit.`,\n},\n },\n\n outputs: {\n cluster: clusterEntity,\n },\n\n meta: {\n displayName: \"Existing Cluster\",\n description: \"An existing Kubernetes cluster.\",\n primaryIcon: \"mdi:kubernetes\",\n },\n\n source: {\n package: \"@highstate/k8s\",\n path: \"units/existing-cluster\",\n },\n})\n\nexport const gatewayEntity = defineEntity({\n type: \"k8s.gateway\",\n\n schema: Type.Object({\n clusterInfo: clusterInfoSchema,\n gatewayClassName: Type.String(),\n httpListenerPort: Type.Number(),\n httpsListenerPort: Type.Number(),\n ip: Type.String(),\n service: Type.Optional(serviceEntity.schema),\n }),\n\n meta: {\n color: \"#4CAF50\",\n },\n})\n\nexport const tlsIssuerEntity = defineEntity({\n type: \"k8s.tls-issuer\",\n\n schema: Type.Object({\n clusterInfo: clusterInfoSchema,\n clusterIssuerName: Type.String(),\n }),\n\n meta: {\n color: \"#f06292\",\n },\n})\n\nexport const accessPointEntity = defineEntity({\n type: \"common.access-point\",\n schema: Type.Object({\n gateway: gatewayEntity.schema,\n tlsIssuer: tlsIssuerEntity.schema,\n dnsProvider: providerEntity.schema,\n }),\n\n meta: {\n color: \"#FFC107\",\n },\n})\n\nexport const accessPoint = defineUnit({\n type: \"k8s.access-point\",\n\n inputs: {\n gateway: gatewayEntity,\n tlsIssuer: tlsIssuerEntity,\n dnsProvider: providerEntity,\n },\n\n outputs: {\n accessPoint: accessPointEntity,\n },\n\n meta: {\n displayName: \"Access Point\",\n description: \"An access point which can be used to connect to services.\",\n primaryIcon: \"mdi:access-point\",\n },\n\n source: {\n package: \"@highstate/k8s\",\n path: \"units/access-point\",\n },\n})\n\nexport const certManager = defineUnit({\n type: \"k8s.cert-manager\",\n\n inputs: {\n k8sCluster: clusterEntity,\n },\n\n outputs: {\n k8sCluster: clusterEntity,\n },\n\n meta: {\n displayName: \"Cert Manager\",\n description: \"A certificate manager for managing TLS certificates.\",\n primaryIcon: \"simple-icons:letsencrypt\",\n },\n\n source: {\n package: \"@highstate/k8s\",\n path: \"units/cert-manager\",\n },\n})\n\nexport const dns01TlsIssuer = defineUnit({\n type: \"k8s.dns01-issuer\",\n\n inputs: {\n k8sCluster: clusterEntity,\n dnsProvider: providerEntity,\n },\n\n outputs: {\n tlsIssuer: tlsIssuerEntity,\n },\n\n meta: {\n displayName: \"DNS01 Issuer\",\n description: \"A TLS issuer for issuing certificate using DNS01 challenge.\",\n primaryIcon: \"mdi:certificate\",\n },\n\n source: {\n package: \"@highstate/k8s\",\n path: \"units/dns01-issuer\",\n },\n})\n\nexport const containerSchema = Type.Object({\n name: Type.String(),\n image: Type.String(),\n})\n\nexport const labelSelectorSchema = Type.Object({\n matchLabels: Type.Record(Type.String(), Type.String()),\n})\n\nexport const deploymentSpecSchema = Type.Object({\n replicas: Type.Number(),\n selector: labelSelectorSchema,\n template: Type.Object({\n metadata: metadataSchema,\n spec: Type.Object({\n containers: Type.Array(containerSchema),\n }),\n }),\n})\n\nexport const deploymentEntity = defineEntity({\n type: \"k8s.deployment\",\n\n schema: Type.Object({\n type: Type.Literal(\"k8s.deployment\"),\n clusterInfo: clusterInfoSchema,\n metadata: metadataSchema,\n\n service: Type.Optional(serviceEntity.schema),\n }),\n\n meta: {\n color: \"#4CAF50\",\n },\n})\n\nexport const statefulSetEntity = defineEntity({\n type: \"k8s.stateful-set\",\n\n schema: Type.Object({\n type: Type.Literal(\"k8s.stateful-set\"),\n clusterInfo: clusterInfoSchema,\n metadata: metadataSchema,\n\n service: Type.Optional(serviceEntity.schema),\n }),\n\n meta: {\n color: \"#FFC107\",\n },\n})\n\nexport const persistentVolumeClaimEntity = defineEntity({\n type: \"k8s.persistent-volume-claim\",\n\n schema: Type.Object({\n type: Type.Literal(\"k8s.persistent-volume-claim\"),\n clusterInfo: clusterInfoSchema,\n metadata: metadataSchema,\n }),\n\n meta: {\n color: \"#FFC107\",\n },\n})\n\nexport const interfaceEntity = defineEntity({\n type: \"k8s.interface\",\n\n schema: Type.Object({\n name: Type.String(),\n deployment: deploymentEntity.schema,\n }),\n\n meta: {\n color: \"#2196F3\",\n description:\n \"The interface in a network space of pod kernel which can accept or transmit packets.\",\n },\n})\n\nexport type ClusterInfo = Static<typeof clusterInfoSchema>\nexport type Cluster = Static<typeof clusterEntity.schema>\n\nexport type Gateway = Static<typeof gatewayEntity.schema>\nexport type TlsIssuer = Static<typeof tlsIssuerEntity.schema>\nexport type AccessPoint = Static<typeof accessPointEntity.schema>\n\nexport type Metadata = Static<typeof metadataSchema>\n\nexport type ServiceType = Static<typeof serviceTypeSchema>\nexport type ServicePort = Static<typeof servicePortSchema>\nexport type ServiceSpec = Static<typeof serviceSpecSchema>\nexport type Service = Static<typeof serviceEntity.schema>\n\nexport type Container = Static<typeof containerSchema>\nexport type DeploymentSpec = Static<typeof deploymentSpecSchema>\nexport type Deployment = Static<typeof deploymentEntity.schema>\n\nexport type PersistentVolumeClaim = Static<typeof persistentVolumeClaimEntity.schema>\nexport type StatefulSet = Static<typeof statefulSetEntity.schema>\n\nexport type Interface = Static<typeof interfaceEntity.schema>\nexport type InternalIpsPolicy = Static<typeof internalIpsPolicySchema>\n","import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\n\nexport const providerEntity = defineEntity({\n type: \"dns.provider\",\n\n schema: Type.Object({\n name: Type.String(),\n type: Type.String(),\n data: Type.Record(Type.String(), Type.Unknown()),\n domain: Type.String(),\n }),\n\n meta: {\n color: \"#FF5722\",\n },\n})\n\nexport const record = defineUnit({\n type: \"common.dns-record\",\n\n args: {\n name: Type.String(),\n type: Type.String(),\n value: Type.String(),\n ttl: Type.Optional(Type.Number()),\n },\n\n inputs: {\n dnsProvider: providerEntity,\n },\n\n meta: {\n displayName: \"DNS Record\",\n description: \"A DNS record to create.\",\n primaryIcon: \"mdi:server\",\n defaultNamePrefix: \"record\",\n },\n\n source: {\n package: \"@highstate/common\",\n path: \"dns/record\",\n },\n})\n\nexport type Provider = Static<typeof providerEntity.schema>\n","import { defineEntity, defineUnit, Type } from \"@highstate/contract\"\nimport { serverEntity } from \"./common\"\nimport { clusterEntity as k8sClusterEntity } from \"./k8s\"\n\nexport const clusterEntity = defineEntity({\n type: \"talos.cluster\",\n\n schema: Type.Object({\n clientConfiguration: Type.String(),\n machineSecrets: Type.String(),\n }),\n\n meta: {\n color: \"#2d2d2d\",\n },\n})\n\nexport const cniSchema = Type.StringEnum([\"none\", \"cilium\", \"flannel\"])\nexport const csiSchema = Type.StringEnum([\"none\", \"local-path-provisioner\"])\n\nexport const cluster = defineUnit({\n type: \"talos.cluster\",\n\n args: {\n /**\n * Allow scheduling workloads on the master nodes.\n *\n * By default, \"true\" if no worker nodes are provided.\n */\n scheduleOnMasters: Type.Boolean(),\n\n /**\n * The endpoint of the cluster.\n *\n * By default, the first master node's endpoint is used.\n */\n endpoint: Type.Optional(Type.String()),\n\n /**\n * The name of the cluster.\n *\n * By default, the name of the instance is used.\n */\n clusterName: Type.Optional(Type.String()),\n\n /**\n * The CNI plugin to use.\n *\n * The following options are available:\n * - \"cilium\" (default)\n * - \"flannel\" (built-in in Talos)\n * - \"none\" (disable CNI, must be installed manually)\n *\n * The \"cilium\" CNI plugin is recommended to cover advanced network policies like FQDNs.\n */\n cni: { ...cniSchema, default: \"cilium\" },\n\n /**\n * The CSI plugin to use.\n *\n * The following options are available:\n * - \"local-path-provisioner\" (default)\n * - \"none\" (disable CSI, must be installed manually if needed)\n */\n csi: { ...csiSchema, default: \"local-path-provisioner\" },\n\n /**\n * The shared configuration patch.\n * It will be applied to all nodes.\n */\n sharedConfigPatch: Type.Optional(Type.Record(Type.String(), Type.Any())),\n\n /**\n * The master configuration patch.\n * It will be applied to all master nodes.\n */\n masterConfigPatch: Type.Optional(Type.Record(Type.String(), Type.Any())),\n\n /**\n * The worker configuration patch.\n * It will be applied to all worker nodes.\n */\n workerConfigPatch: Type.Optional(Type.Record(Type.String(), Type.Any())),\n },\n\n inputs: {\n masters: {\n entity: serverEntity,\n multiple: true,\n },\n workers: {\n entity: serverEntity,\n multiple: true,\n required: false,\n },\n },\n\n outputs: {\n k8sCluster: k8sClusterEntity,\n talosCluster: clusterEntity,\n },\n\n meta: {\n displayName: \"Talos Cluster\",\n description: \"A Kubernetes cluster managed by Talos.\",\n category: \"Talos\",\n color: \"#2d2d2d\",\n primaryIcon: \"simple-icons:talos\",\n secondaryIcon: \"devicon:kubernetes\",\n },\n\n source: {\n package: \"@highstate/talos\",\n path: \"cluster\",\n },\n})\n","import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\nimport {\n clusterEntity,\n deploymentEntity,\n interfaceEntity,\n serviceEntity,\n serviceTypeSchema,\n statefulSetEntity,\n} from \"./k8s\"\nimport { providerEntity } from \"./dns\"\n\nexport const backendSchema = Type.StringEnum([\"wireguard\", \"amneziawg\"])\nexport const presharedKeyModeSchema = Type.StringEnum([\"none\", \"global\", \"secure\"])\n\nexport type Backend = Static<typeof backendSchema>\nexport type PresharedKeyMode = Static<typeof presharedKeyModeSchema>\n\nexport const networkEntity = defineEntity({\n type: \"wireguard.network\",\n\n schema: Type.Object({\n backend: Type.Optional(backendSchema),\n presharedKeyMode: presharedKeyModeSchema,\n globalPresharedKey: Type.Optional(Type.String()),\n ipv6: Type.Optional(Type.Boolean()),\n }),\n})\n\nexport const identityEntity = defineEntity({\n type: \"wireguard.identity\",\n\n schema: Type.Object({\n name: Type.String(),\n network: Type.Optional(networkEntity.schema),\n address: Type.Optional(Type.String()),\n privateKey: Type.String(),\n presharedKeyPart: Type.Optional(Type.String()),\n k8sServices: Type.Array(serviceEntity.schema),\n exitNode: Type.Boolean(),\n listenPort: Type.Optional(Type.Number()),\n externalIp: Type.Optional(Type.String()),\n endpoint: Type.Optional(Type.String()),\n fqdn: Type.Optional(Type.String()),\n }),\n\n meta: {\n color: \"#F44336\",\n },\n})\n\nexport const peerEntity = defineEntity({\n type: \"wireguard.peer\",\n\n schema: Type.Object({\n name: Type.String(),\n network: Type.Optional(networkEntity.schema),\n publicKey: Type.String(),\n address: Type.Optional(Type.String()),\n allowedIps: Type.Array(Type.String()),\n endpoint: Type.Optional(Type.String()),\n presharedKeyPart: Type.Optional(Type.String()),\n excludedIps: Type.Optional(Type.Array(Type.String())),\n dns: Type.Optional(Type.Array(Type.String())),\n }),\n\n meta: {\n color: \"#673AB7\",\n },\n})\n\nexport const k8sNodeEntity = defineEntity({\n type: \"wireguard.node\",\n\n schema: Type.Object({\n network: Type.String(),\n address: Type.String(),\n endpoint: Type.Optional(Type.String()),\n peers: Type.Array(Type.String()),\n }),\n})\n\nexport type Network = Static<typeof networkEntity.schema>\nexport type Identity = Static<typeof identityEntity.schema>\nexport type Peer = Static<typeof peerEntity.schema>\n\n/**\n * The network hols the shared configuration for the WireGuard identities, peers and nodes.\n */\nexport const network = defineUnit({\n type: \"wireguard.network\",\n\n args: {\n /**\n * The backend to use for the WireGuard network.\n *\n * Possible values are:\n * 1. `wireguard` - The default backend.\n * 2. `amneziawg` - The censorship-resistant fork of WireGuard.\n *\n * By default, the `wireguard` backend is used.\n *\n * @schema\n */\n backend: {\n ...backendSchema,\n description: `The backend to use for the WireGuard network.\n\n Possible values are:\n 1. \\`wireguard\\` - The default backend.\n 2. \\`amneziawg\\` - The censorship-resistant fork of WireGuard.\n\n By default, the \\`wireguard\\` backend is used.`,\n},\n\n /**\n * The option which defines how to handle pre-shared keys between peers.\n *\n * 1. `none` - No pre-shared keys will be used.\n * 2. `global` - A single pre-shared key will be used for all peer pairs in the network.\n * 3. `secure` - Each peer pair will have its own pre-shared key.\n * In this case, each identity generates `presharedKeyPart` and the actual pre-shared key\n * for each peer pair will be computed as `xor(peer1.presharedKeyPart, peer2.presharedKeyPart)`.\n *\n * If the whole network is managed by the HighState, the `secure` mode is recommended.\n *\n * By default, the `none` mode is used.\n *\n * @schema\n */\n presharedKeyMode: {\n ...Type.Optional(presharedKeyModeSchema),\n description: `The option which defines how to handle pre-shared keys between peers.\n\n 1. \\`none\\` - No pre-shared keys will be used.\n 2. \\`global\\` - A single pre-shared key will be used for all peer pairs in the network.\n 3. \\`secure\\` - Each peer pair will have its own pre-shared key.\n In this case, each identity generates \\`presharedKeyPart\\` and the actual pre-shared key\n for each peer pair will be computed as \\`xor(peer1.presharedKeyPart, peer2.presharedKeyPart)\\`.\n\n If the whole network is managed by the HighState, the \\`secure\\` mode is recommended.\n\n By default, the \\`none\\` mode is used.`,\n},\n\n /**\n * The option to enable IPv6 support in the network.\n *\n * By default, IPv6 support is disabled.\n *\n * @schema\n */\n ipv6: {\n ...Type.Optional(Type.Boolean()),\n description: `The option to enable IPv6 support in the network.\n\n By default, IPv6 support is disabled.`,\n},\n },\n\n secrets: {\n /**\n * The global pre-shared key to use for all peer pairs in the network.\n *\n * Will be used only if `presharedKeyMode` is set to `global`.\n * Will be generated automatically if not provided.\n *\n * @schema\n */\n globalPresharedKey: {\n ...Type.Optional(Type.String()),\n description: `The global pre-shared key to use for all peer pairs in the network.\n\n Will be used only if \\`presharedKeyMode\\` is set to \\`global\\`.\n Will be generated automatically if not provided.`,\n},\n },\n\n outputs: {\n network: networkEntity,\n },\n\n meta: {\n description: \"The WireGuard network with some shared configuration.\",\n primaryIcon: \"simple-icons:wireguard\",\n primaryIconColor: \"#88171a\",\n secondaryIcon: \"mdi:local-area-network-connect\",\n },\n\n source: {\n package: \"@highstate/wireguard\",\n path: \"network\",\n },\n})\n\nconst sharedPeerArgs = {\n /**\n * The name of the WireGuard peer.\n *\n * If not provided, the peer will be named after the unit.\n *\n * @schema\n */\n peerName: {\n ...Type.Optional(Type.String()),\n description: `The name of the WireGuard peer.\n\n If not provided, the peer will be named after the unit.`,\n},\n\n /**\n * The address of the WireGuard interface.\n *\n * The address may be any IPv4 or IPv6 address. CIDR notation is also supported.\n *\n * @schema\n */\n address: {\n ...Type.Optional(Type.String()),\n description: `The address of the WireGuard interface.\n\n The address may be any IPv4 or IPv6 address. CIDR notation is also supported.`,\n},\n\n /**\n * The list of allowed IPs for the peer.\n *\n * @schema\n */\n allowedIps: {\n ...Type.Optional(Type.Array(Type.String())),\n description: `The list of allowed IPs for the peer.`,\n},\n\n /**\n * The convenience option to set `allowedIps` to `0.0.0.0/0, ::/0`.\n *\n * Will be merged with the `allowedIps` if provided.\n *\n * @schema\n */\n exitNode: {\n ...Type.Optional(Type.Boolean()),\n description: `The convenience option to set \\`allowedIps\\` to \\`0.0.0.0/0, ::/0\\`.\n\n Will be merged with the \\`allowedIps\\` if provided.`,\n},\n\n /**\n * The list of IP ranges to exclude from the tunnel.\n *\n * Implementation notes:\n *\n * - This list will not be used to generate the allowed IPs for the peer.\n * - Instead, the node will setup extra direct routes to these IPs via default gateway.\n * - This allows to use `0.0.0.0/0, ::/0` in the `allowedIps` (and corresponding fwmark magic) and still have some IPs excluded from the tunnel.\n *\n * @schema\n */\n excludedIps: {\n ...Type.Optional(Type.Array(Type.String())),\n description: `The list of IP ranges to exclude from the tunnel.\n\n Implementation notes:\n\n - This list will not be used to generate the allowed IPs for the peer.\n - Instead, the node will setup extra direct routes to these IPs via default gateway.\n - This allows to use \\`0.0.0.0/0, ::/0\\` in the \\`allowedIps\\` (and corresponding fwmark magic) and still have some IPs excluded from the tunnel.`,\n},\n\n /**\n * The convenience option to exclude private IPs from the tunnel.\n *\n * For IPv4, the private IPs are:\n *\n * - `10.0.0.0/8`\n * - `172.16.0.0/12`\n * - `192.168.0.0/16`\n *\n * For IPv6, the private IPs are:\n *\n * - `fc00::/7`\n * - `fe80::/10`\n *\n * Will be merged with `excludedIps` if provided.\n *\n * @schema\n */\n excludePrivateIps: {\n ...Type.Optional(Type.Boolean()),\n description: `The convenience option to exclude private IPs from the tunnel.\n\n For IPv4, the private IPs are:\n\n - \\`10.0.0.0/8\\`\n - \\`172.16.0.0/12\\`\n - \\`192.168.0.0/16\\`\n\n For IPv6, the private IPs are:\n\n - \\`fc00::/7\\`\n - \\`fe80::/10\\`\n\n Will be merged with \\`excludedIps\\` if provided.`,\n},\n\n /**\n * The endpoint of the WireGuard peer.\n *\n * @schema\n */\n endpoint: {\n ...Type.Optional(Type.String()),\n description: `The endpoint of the WireGuard peer.`,\n},\n\n /**\n * The DNS servers that should be used by the interface connected to the WireGuard peer.\n *\n * If multiple peers define DNS servers, the node will merge them into a single list (but this is discouraged).\n *\n * @schema\n */\n dns: {\n ...Type.Optional(Type.Array(Type.String())),\n description: `The DNS servers that should be used by the interface connected to the WireGuard peer.\n\n If multiple peers define DNS servers, the node will merge them into a single list (but this is discouraged).`,\n},\n\n /**\n * The convenience option to include the DNS servers to the allowed IPs.\n *\n * By default, is `true`.\n *\n * @schema\n */\n includeDns: {\n ...Type.Optional(Type.Boolean({ default: true })),\n description: `The convenience option to include the DNS servers to the allowed IPs.\n\n By default, is \\`true\\`.`,\n},\n}\n\nconst sharedInterfaceArgs = {\n /**\n * The port to listen on.\n *\n * Will override the `listenPort` of the identity if provided.\n *\n * @schema\n */\n listenPort: {\n ...Type.Optional(Type.Number()),\n description: `The port to listen on.\n\n Will override the \\`listenPort\\` of the identity if provided.`,\n},\n\n /**\n * The DNS servers that should be used by the interface connected to the WireGuard node.\n *\n * Will be merged with the DNS servers of the peers.\n *\n * @schema\n */\n dns: {\n ...Type.Optional(Type.Array(Type.String())),\n description: `The DNS servers that should be used by the interface connected to the WireGuard node.\n\n Will be merged with the DNS servers of the peers.`,\n},\n}\n\nexport const peer = defineUnit({\n type: \"wireguard.peer\",\n\n args: {\n ...sharedPeerArgs,\n\n /**\n * The public key of the WireGuard peer.\n *\n * @schema\n */\n publicKey: {\n ...Type.String(),\n description: `The public key of the WireGuard peer.`,\n},\n },\n\n inputs: {\n /**\n * The network to use for the WireGuard peer.\n *\n * If not provided, the peer will use default network configuration.\n *\n * @schema\n */\n network: {\n ...{\n entity: networkEntity,\n required: false,\n },\n description: `The network to use for the WireGuard peer.\n\n If not provided, the peer will use default network configuration.`,\n},\n },\n\n outputs: {\n peer: peerEntity,\n },\n\n meta: {\n description: \"The WireGuard peer with the public key.\",\n primaryIcon: \"simple-icons:wireguard\",\n primaryIconColor: \"#88171a\",\n secondaryIcon: \"mdi:badge-account-horizontal\",\n },\n\n source: {\n package: \"@highstate/wireguard\",\n path: \"peer\",\n },\n})\n\nexport const identity = defineUnit({\n type: \"wireguard.identity\",\n\n args: {\n ...sharedPeerArgs,\n\n /**\n * The port to listen on.\n *\n * Used by the implementation of the identity and to calculate the endpoint of the peer.\n *\n * @schema\n */\n listenPort: {\n ...Type.Optional(Type.Number()),\n description: `The port to listen on.\n\n Used by the implementation of the identity and to calculate the endpoint of the peer.`,\n},\n\n /**\n * The external IP address of the WireGuard identity.\n *\n * Used by the implementation of the identity and to calculate the endpoint of the peer.\n *\n * @schema\n */\n externalIp: {\n ...Type.Optional(Type.String()),\n description: `The external IP address of the WireGuard identity.\n\n Used by the implementation of the identity and to calculate the endpoint of the peer.`,\n},\n\n /**\n * The endpoint of the WireGuard peer.\n *\n * By default, the endpoint is calculated as `externalIp:listenPort`.\n *\n * If overridden, does not affect node which implements the identity, but is used in the peer configuration of other nodes.\n *\n * @schema\n */\n endpoint: {\n ...Type.Optional(Type.String()),\n description: `The endpoint of the WireGuard peer.\n\n By default, the endpoint is calculated as \\`externalIp:listenPort\\`.\n\n If overridden, does not affect node which implements the identity, but is used in the peer configuration of other nodes.`,\n},\n\n /**\n * The FQDN of the WireGuard identity.\n * Will be used as endpoint for the peer.\n *\n * If `dnsProvider` is provided and `externalIp` is available, the FQDN will be registered automatically.\n *\n * @schema\n */\n fqdn: {\n ...Type.Optional(Type.String()),\n description: `The FQDN of the WireGuard identity.\n Will be used as endpoint for the peer.\n\n If \\`dnsProvider\\` is provided and \\`externalIp\\` is available, the FQDN will be registered automatically.`,\n},\n },\n\n secrets: {\n /**\n * The private key of the WireGuard identity.\n *\n * If not provided, the key will be generated automatically.\n *\n * @schema\n */\n privateKey: {\n ...Type.Optional(Type.String()),\n description: `The private key of the WireGuard identity.\n\n If not provided, the key will be generated automatically.`,\n},\n\n /**\n * The part of the pre-shared of the WireGuard identity.\n *\n * Will be generated automatically if not provided.\n *\n * @schema\n */\n presharedKeyPart: {\n ...Type.Optional(Type.String()),\n description: `The part of the pre-shared of the WireGuard identity.\n\n Will be generated automatically if not provided.`,\n},\n },\n\n inputs: {\n /**\n * The network to use for the WireGuard identity.\n *\n * If not provided, the identity will use default network configuration.\n *\n * @schema\n */\n network: {\n ...{\n entity: networkEntity,\n required: false,\n },\n description: `The network to use for the WireGuard identity.\n\n If not provided, the identity will use default network configuration.`,\n},\n\n /**\n * The list of Kubernetes services to expose the WireGuard identity.\n *\n * Their IP addresses will be added to the `allowedIps` of the identity and passed to the node to set up network policies.\n *\n * @schema\n */\n k8sServices: {\n ...{\n entity: serviceEntity,\n multiple: true,\n required: false,\n },\n description: `The list of Kubernetes services to expose the WireGuard identity.\n\n Their IP addresses will be added to the \\`allowedIps\\` of the identity and passed to the node to set up network policies.`,\n},\n\n dnsProvider: {\n entity: providerEntity,\n required: false,\n },\n },\n\n outputs: {\n identity: identityEntity,\n peer: peerEntity,\n },\n\n meta: {\n description: \"The WireGuard identity with the public key.\",\n primaryIcon: \"simple-icons:wireguard\",\n primaryIconColor: \"#88171a\",\n secondaryIcon: \"mdi:account\",\n },\n\n source: {\n package: \"@highstate/wireguard\",\n path: \"identity\",\n },\n})\n\nexport const node = defineUnit({\n type: \"wireguard.node\",\n\n args: {\n appName: Type.Optional(Type.String()),\n serviceType: Type.Optional(serviceTypeSchema),\n\n ...sharedInterfaceArgs,\n\n /**\n * The external IP address of the WireGuard node.\n *\n * Will override the `externalIp` of the identity if provided.\n *\n * @schema\n */\n externalIp: {\n ...Type.Optional(Type.String()),\n description: `The external IP address of the WireGuard node.\n\n Will override the \\`externalIp\\` of the identity if provided.`,\n},\n\n /**\n * The extra specification of the container which runs the WireGuard node.\n *\n * Will override any overlapping fields.\n *\n * @schema\n */\n containerSpec: {\n ...Type.Optional(Type.Record(Type.String(), Type.Any())),\n description: `The extra specification of the container which runs the WireGuard node.\n\n Will override any overlapping fields.`,\n},\n },\n\n inputs: {\n identity: identityEntity,\n k8sCluster: clusterEntity,\n\n deployment: {\n entity: deploymentEntity,\n required: false,\n },\n\n statefulSet: {\n entity: statefulSetEntity,\n required: false,\n },\n\n interface: {\n entity: interfaceEntity,\n required: false,\n },\n\n peers: {\n entity: peerEntity,\n multiple: true,\n required: false,\n },\n },\n\n outputs: {\n deployment: {\n entity: deploymentEntity,\n required: false,\n },\n\n interface: {\n entity: interfaceEntity,\n required: false,\n },\n\n service: {\n entity: serviceEntity,\n required: false,\n },\n },\n\n meta: {\n description: \"The WireGuard node running on the Kubernetes.\",\n primaryIcon: \"simple-icons:wireguard\",\n primaryIconColor: \"#88171a\",\n secondaryIcon: \"mdi:server\",\n },\n\n source: {\n package: \"@highstate/wireguard\",\n path: \"node\",\n },\n})\n\nexport const config = defineUnit({\n type: \"wireguard.config\",\n\n args: {\n ...sharedInterfaceArgs,\n\n /**\n * The name of the \"default\" interface where non-tunneled traffic should go.\n *\n * If not provided, the config will not respect `excludedIps`.\n *\n * @schema\n */\n defaultInterface: {\n ...Type.Optional(Type.String()),\n description: `The name of the \"default\" interface where non-tunneled traffic should go.\n\n If not provided, the config will not respect \\`excludedIps\\`.`,\n},\n },\n\n inputs: {\n identity: identityEntity,\n peers: {\n entity: peerEntity,\n multiple: true,\n required: false,\n },\n },\n\n meta: {\n displayName: \"WireGuard Config\",\n description: \"Just the WireGuard configuration for the identity and peers.\",\n primaryIcon: \"simple-icons:wireguard\",\n primaryIconColor: \"#88171a\",\n secondaryIcon: \"mdi:settings\",\n },\n\n source: {\n package: \"@highstate/wireguard\",\n path: \"config\",\n },\n})\n\nexport const configBundle = defineUnit({\n type: \"wireguard.config-bundle\",\n\n inputs: {\n identity: identityEntity,\n peers: {\n entity: peerEntity,\n multiple: true,\n },\n sharedPeers: {\n entity: peerEntity,\n multiple: true,\n required: false,\n },\n },\n\n meta: {\n displayName: \"WireGuard Config Bundle\",\n description: \"The WireGuard configuration bundle for the identity and peers.\",\n primaryIcon: \"simple-icons:wireguard\",\n primaryIconColor: \"#88171a\",\n secondaryIcon: \"mdi:folder-settings-variant\",\n },\n\n source: {\n package: \"@highstate/wireguard\",\n path: \"config-bundle\",\n },\n})\n","export * from \"./mariadb\"\nexport * from \"./postgresql\"\nexport * from \"./vaultwarden\"\n// export * from \"./zitadel\"\n// export * from \"./gitea\"\nexport * from \"./traefik\"\nexport * from \"./kubernetes-dashboard\"\nexport * from \"./grocy\"\nexport * from \"./maybe\"\nexport * from \"./mongodb\"\nexport * from \"./deployment\"\nexport * from \"./syncthing\"\nexport * from \"./code-server\"\n","import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\nimport { clusterEntity, serviceEntity } from \"../k8s\"\nimport { repoEntity } from \"../restic\"\nimport { providerEntity } from \"../dns\"\n\nexport const mariadbEntity = defineEntity({\n type: \"apps.mariadb\",\n\n schema: Type.Object({\n service: Type.Optional(serviceEntity.schema),\n\n host: Type.String(),\n port: Type.Number(),\n rootPassword: Type.String(),\n }),\n\n meta: {\n color: \"#f06292\",\n },\n})\n\nexport const mariadb = defineUnit({\n type: \"apps.mariadb\",\n\n args: {\n fqdn: Type.Optional(Type.String()),\n appName: Type.Optional(Type.String()),\n },\n\n secrets: {\n rootPassword: Type.Optional(Type.String()),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n resticRepo: {\n entity: repoEntity,\n required: false,\n },\n dnsProvider: {\n entity: providerEntity,\n required: false,\n },\n },\n\n outputs: {\n mariadb: mariadbEntity,\n service: serviceEntity,\n },\n\n meta: {\n displayName: \"MariaDB\",\n description: \"The MariaDB database deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:mariadb\",\n secondaryIcon: \"mdi:database\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"mariadb/app\",\n },\n})\n\nexport const mariadbDatabase = defineUnit({\n type: \"apps.mariadb.database\",\n\n args: {\n database: Type.Optional(Type.String()),\n username: Type.Optional(Type.String()),\n },\n\n secrets: {\n password: Type.Optional(Type.String()),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n mariadb: mariadbEntity,\n },\n\n meta: {\n displayName: \"MariaDB Database\",\n description:\n \"The virtual MariaDB database created on the MariaDB instance. Works only for MariaDB instances deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:mariadb\",\n secondaryIcon: \"mdi:database-plus\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"mariadb/database\",\n },\n})\n\nexport type MariaDB = Static<typeof mariadbEntity.schema>\n","import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\n\nexport const repoEntity = defineEntity({\n type: \"restic.repo\",\n\n schema: Type.Object({\n password: Type.String(),\n remoteDomains: Type.Array(Type.String()),\n\n type: Type.Literal(\"rclone\"),\n rcloneConfig: Type.String(),\n remoteName: Type.String(),\n basePath: Type.String(),\n }),\n\n meta: {\n color: \"#e56901\",\n },\n})\n\nexport const repo = defineUnit({\n type: \"restic.repo\",\n\n args: {\n remoteDomains: Type.Optional(Type.Array(Type.String())),\n basePath: Type.Optional(Type.String()),\n },\n\n secrets: {\n password: Type.Optional(Type.String()),\n rcloneConfig: Type.String({ multiline: true }),\n },\n\n outputs: {\n repo: repoEntity,\n },\n\n meta: {\n displayName: \"Restic Repo\",\n description: \"Holds the configuration for a Restic repository and its remote storage.\",\n primaryIconColor: \"#e56901\",\n primaryIcon: \"material-symbols:backup\",\n },\n\n source: {\n package: \"@highstate/restic\",\n path: \"repo\",\n },\n})\n\nexport type Repo = Static<typeof repoEntity.schema>\n","import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\nimport { clusterEntity, serviceEntity } from \"../k8s\"\nimport { repoEntity } from \"../restic\"\nimport { providerEntity } from \"../dns\"\n\nexport const postgresqlEntity = defineEntity({\n type: \"apps.postgresql\",\n\n schema: Type.Object({\n service: Type.Optional(serviceEntity.schema),\n\n host: Type.String(),\n port: Type.Number(),\n rootPassword: Type.String(),\n }),\n\n meta: {\n color: \"#336791\",\n },\n})\n\nexport const postgresql = defineUnit({\n type: \"apps.postgresql\",\n\n args: {\n fqdn: Type.Optional(Type.String()),\n appName: Type.Optional(Type.String()),\n },\n\n secrets: {\n rootPassword: Type.Optional(Type.String()),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n resticRepo: {\n entity: repoEntity,\n required: false,\n },\n dnsProvider: {\n entity: providerEntity,\n required: false,\n },\n },\n\n outputs: {\n postgresql: postgresqlEntity,\n service: serviceEntity,\n },\n\n meta: {\n displayName: \"PostgreSQL\",\n description: \"The PostgreSQL database deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:postgresql\",\n secondaryIcon: \"mdi:database\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"postgresql/app\",\n },\n})\n\nexport const postgresqlDatabase = defineUnit({\n type: \"apps.postgresql.database\",\n\n args: {\n database: Type.Optional(Type.String()),\n username: Type.Optional(Type.String()),\n },\n\n secrets: {\n password: Type.Optional(Type.String()),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n postgresql: postgresqlEntity,\n },\n\n meta: {\n displayName: \"PostgreSQL Database\",\n description:\n \"The virtual PostgreSQL database created on the PostgreSQL instance. Works only for PostgreSQL instances deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:postgresql\",\n secondaryIcon: \"mdi:database-plus\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"postgresql/database\",\n },\n})\n\nexport type PostgreSQL = Static<typeof postgresqlEntity.schema>\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { accessPointEntity, clusterEntity } from \"../k8s\"\nimport { mariadbEntity } from \"./mariadb\"\n\nexport const vaultwarden = defineUnit({\n type: \"apps.vaultwarden\",\n\n args: {\n fqdn: Type.String(),\n appName: Type.Optional(Type.String()),\n },\n\n inputs: {\n mariadb: mariadbEntity,\n accessPoint: accessPointEntity,\n k8sCluster: clusterEntity,\n },\n\n secrets: {\n mariadbPassword: Type.Optional(Type.String()),\n },\n\n meta: {\n displayName: \"Vaultwarden\",\n description: \"The Vaultwarden password manager deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:vaultwarden\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"vaultwarden\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { clusterEntity, gatewayEntity, serviceEntity, serviceTypeSchema } from \"../k8s\"\n\nexport const traefikGateway = defineUnit({\n type: \"apps.traefik-gateway\",\n\n args: {\n appName: Type.Optional(Type.String()),\n className: Type.Optional(Type.String()),\n serviceType: Type.Optional(serviceTypeSchema),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n },\n\n outputs: {\n gateway: gatewayEntity,\n service: serviceEntity,\n },\n\n meta: {\n displayName: \"Traefik Gateway\",\n description: \"A Traefik gateway for routing traffic to services.\",\n primaryIcon: \"simple-icons:traefikproxy\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"traefik\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { accessPointEntity, clusterEntity } from \"../k8s\"\n\nexport const kubernetesDashboard = defineUnit({\n type: \"apps.kubernetes-dashboard\",\n\n args: {\n fqdn: Type.String(),\n appName: Type.Optional(Type.String()),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n accessPoint: accessPointEntity,\n },\n\n meta: {\n displayName: \"Kubernetes Dashboard\",\n description: \"The Kubernetes Dashboard deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:kubernetes\",\n secondaryIcon: \"mdi:dashboard\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"kubernetes-dashboard\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { accessPointEntity, clusterEntity } from \"../k8s\"\nimport { repoEntity } from \"../restic\"\n\nexport const grocy = defineUnit({\n type: \"apps.grocy\",\n\n args: {\n fqdn: Type.String(),\n appName: Type.Optional(Type.String()),\n },\n\n inputs: {\n resticRepo: {\n entity: repoEntity,\n required: false,\n },\n accessPoint: accessPointEntity,\n k8sCluster: clusterEntity,\n },\n\n meta: {\n displayName: \"Grocy\",\n description:\n \"Grocy is a web-based self-hosted groceries & household management solution for your home.\",\n primaryIcon: \"simple-icons:grocy\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"grocy\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { accessPointEntity, clusterEntity } from \"../k8s\"\nimport { repoEntity } from \"../restic\"\nimport { postgresqlEntity } from \"./postgresql\"\n\nexport const maybe = defineUnit({\n type: \"apps.maybe\",\n\n args: {\n fqdn: Type.String(),\n appName: Type.Optional(Type.String()),\n },\n\n inputs: {\n postgresql: postgresqlEntity,\n accessPoint: accessPointEntity,\n k8sCluster: clusterEntity,\n resticRepo: {\n entity: repoEntity,\n required: false,\n },\n },\n\n secrets: {\n postgresqlPassword: Type.Optional(Type.String()),\n secretKey: Type.Optional(Type.String()),\n },\n\n meta: {\n displayName: \"Maybe\",\n description: \"The OS for your personal finances.\",\n primaryIcon: \"arcticons:finance-manager\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"maybe\",\n },\n})\n","import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\nimport { clusterEntity, serviceEntity, serviceTypeSchema } from \"../k8s\"\nimport { repoEntity } from \"../restic\"\nimport { providerEntity } from \"../dns\"\n\nexport const mongodbEntity = defineEntity({\n type: \"apps.mongodb\",\n\n schema: Type.Object({\n service: Type.Optional(serviceEntity.schema),\n\n host: Type.String(),\n port: Type.Number(),\n rootPassword: Type.String(),\n }),\n\n meta: {\n color: \"#13aa52\",\n },\n})\n\nexport const mongodb = defineUnit({\n type: \"apps.mongodb\",\n\n args: {\n fqdn: Type.Optional(Type.String()),\n appName: Type.Optional(Type.String()),\n serviceType: Type.Optional(serviceTypeSchema),\n },\n\n secrets: {\n rootPassword: Type.Optional(Type.String()),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n resticRepo: {\n entity: repoEntity,\n required: false,\n },\n dnsProvider: {\n entity: providerEntity,\n required: false,\n },\n },\n\n outputs: {\n mongodb: mongodbEntity,\n service: serviceEntity,\n },\n\n meta: {\n displayName: \"MongoDB\",\n description: \"The MongoDB instance deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:mongodb\",\n secondaryIcon: \"mdi:database\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"mongodb/app\",\n },\n})\n\nexport const mongodbDatabase = defineUnit({\n type: \"apps.mongodb.database\",\n\n args: {\n database: Type.Optional(Type.String()),\n username: Type.Optional(Type.String()),\n },\n\n secrets: {\n password: Type.Optional(Type.String()),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n mongodb: mongodbEntity,\n },\n\n meta: {\n displayName: \"MongoDB Database\",\n description:\n \"The virtual MongoDB database created on the MongoDB instance. Works only for MongoDB instances deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:mongodb\",\n secondaryIcon: \"mdi:database-plus\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"mongodb/database\",\n },\n})\n\nexport type MongoDB = Static<typeof mongodbEntity.schema>\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { clusterEntity, deploymentEntity, serviceEntity, serviceTypeSchema } from \"../k8s\"\nimport { repoEntity } from \"../restic\"\nimport { providerEntity } from \"../dns\"\nimport { mariadbEntity } from \"./mariadb\"\nimport { postgresqlEntity } from \"./postgresql\"\nimport { mongodbEntity } from \"./mongodb\"\n\nexport const deployment = defineUnit({\n type: \"apps.deployment\",\n\n args: {\n appName: Type.Optional(Type.String()),\n\n fqdn: Type.Optional(Type.String()),\n serviceType: Type.Optional(serviceTypeSchema),\n\n image: Type.Optional(Type.String()),\n port: Type.Optional(Type.Number()),\n replicas: Type.Optional(Type.Number()),\n\n dataPath: Type.Optional(Type.String()),\n\n env: Type.Optional(Type.Record(Type.String(), Type.Any())),\n\n mariadbEnvMapping: Type.Optional(Type.Record(Type.String(), Type.Any())),\n postgresqlEnvMapping: Type.Optional(Type.Record(Type.String(), Type.Any())),\n mongodbEnvMapping: Type.Optional(Type.Record(Type.String(), Type.Any())),\n\n manifest: Type.Optional(Type.Record(Type.String(), Type.Any())),\n serviceManifest: Type.Optional(Type.Record(Type.String(), Type.Any())),\n httpRouteManifest: Type.Optional(Type.Record(Type.String(), Type.Any())),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n\n mariadb: {\n entity: mariadbEntity,\n required: false,\n },\n postgresql: {\n entity: postgresqlEntity,\n required: false,\n },\n mongodb: {\n entity: mongodbEntity,\n required: false,\n },\n resticRepo: {\n entity: repoEntity,\n required: false,\n },\n dnsProvider: {\n entity: providerEntity,\n required: false,\n },\n },\n\n outputs: {\n deployment: deploymentEntity,\n service: serviceEntity,\n },\n\n secrets: {\n mariadbPassword: Type.Optional(Type.String()),\n postgresqlPassword: Type.Optional(Type.String()),\n mongodbPassword: Type.Optional(Type.String()),\n },\n\n meta: {\n displayName: \"Kubernetes Deployment\",\n description: \"A generic Kubernetes deployment with optional service and gateway routes.\",\n primaryIcon: \"mdi:kubernetes\",\n secondaryIcon: \"mdi:cube-outline\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"deployment\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport {\n accessPointEntity,\n clusterEntity,\n persistentVolumeClaimEntity,\n serviceEntity,\n} from \"../k8s\"\nimport { repoEntity } from \"../restic\"\n\nexport const backupModeSchema = Type.Union([Type.Literal(\"metadata\"), Type.Literal(\"full\")])\n\nexport const syncthing = defineUnit({\n type: \"apps.syncthing\",\n\n args: {\n fqdn: Type.String(),\n deviceFqdn: Type.Optional(Type.String()),\n appName: Type.Optional(Type.String()),\n backupMode: Type.Optional({ ...backupModeSchema, default: \"metadata\" }),\n },\n\n inputs: {\n accessPoint: accessPointEntity,\n k8sCluster: clusterEntity,\n resticRepo: {\n entity: repoEntity,\n required: false,\n },\n volume: {\n entity: persistentVolumeClaimEntity,\n required: false,\n },\n },\n\n outputs: {\n service: serviceEntity,\n volume: persistentVolumeClaimEntity,\n },\n\n meta: {\n displayName: \"Syncthing\",\n description: \"The Syncthing instance deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:syncthing\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"syncthing\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport {\n accessPointEntity,\n clusterEntity,\n persistentVolumeClaimEntity,\n statefulSetEntity,\n} from \"../k8s\"\nimport { repoEntity } from \"../restic\"\n\nexport const codeServer = defineUnit({\n type: \"apps.code-server\",\n\n args: {\n fqdn: Type.String(),\n appName: Type.Optional(Type.String()),\n },\n\n secrets: {\n password: Type.Optional(Type.String()),\n sudoPassword: Type.Optional(Type.String()),\n },\n\n inputs: {\n accessPoint: accessPointEntity,\n k8sCluster: clusterEntity,\n resticRepo: {\n entity: repoEntity,\n required: false,\n },\n volume: {\n entity: persistentVolumeClaimEntity,\n required: false,\n },\n },\n\n outputs: {\n statefulSet: statefulSetEntity,\n volume: persistentVolumeClaimEntity,\n },\n\n meta: {\n displayName: \"Code Server\",\n description: \"The Code Server instance deployed on Kubernetes.\",\n primaryIcon: \"material-icon-theme:vscode\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"code-server\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { providerEntity } from \"./dns\"\n\nexport const connection = defineUnit({\n type: \"cloudflare.connection\",\n\n secrets: {\n apiToken: Type.String(),\n },\n\n outputs: {\n dnsProvider: providerEntity,\n },\n\n meta: {\n displayName: \"Cloudflare Connection\",\n description: \"Creates a new Cloudflare connection for one zone.\",\n primaryIcon: \"simple-icons:cloudflare\",\n },\n\n source: {\n package: \"@highstate/cloudflare\",\n path: \"connection\",\n },\n})\n","import { defineUnit } from \"@highstate/contract\"\nimport { serverEntity } from \"./common\"\nimport { clusterEntity, sharedClusterArgs } from \"./k8s\"\n\nexport const cluster = defineUnit({\n type: \"k3s.cluster\",\n\n args: {\n ...sharedClusterArgs,\n },\n\n inputs: {\n server: serverEntity,\n },\n\n outputs: {\n k8sCluster: clusterEntity,\n },\n\n meta: {\n displayName: \"K3s Cluster\",\n description: \"The K3s cluster created on top of the server.\",\n category: \"k3s\",\n primaryIcon: \"devicon:k3s\",\n secondaryIcon: \"devicon:kubernetes\",\n },\n\n source: {\n package: \"@highstate/k3s\",\n path: \"cluster\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { networkEntity, peerEntity } from \"./wireguard\"\n\nexport const endpointType = Type.Union([\n Type.Literal(\"fqdn\"),\n Type.Literal(\"ipv4\"),\n Type.Literal(\"ipv6\"),\n])\n\nexport const peer = defineUnit({\n type: \"mullvad.peer\",\n\n args: {\n hostname: Type.Optional(Type.String()),\n endpointType: Type.Optional({ ...endpointType, default: \"fqdn\" }),\n },\n\n inputs: {\n /**\n * The network to use for the WireGuard peer.\n *\n * If not provided, the peer will use default network configuration.\n */\n network: {\n entity: networkEntity,\n required: false,\n },\n },\n\n outputs: {\n peer: peerEntity,\n },\n\n meta: {\n displayName: \"Mullvad Peer\",\n description: \"The Mullvad WireGuard peer fetched from the Mullvad API.\",\n primaryIcon: \"simple-icons:mullvad\",\n secondaryIcon: \"cib:wireguard\",\n secondaryIconColor: \"#88171a\",\n },\n\n source: {\n package: \"@highstate/mullvad\",\n path: \"peer\",\n },\n})\n","import { defineEntity, defineUnit, Type } from \"@highstate/contract\"\nimport { serverEntity } from \"./common\"\nimport { keyPairEntity } from \"./ssh\"\n\nexport const connectionEntity = defineEntity({\n type: \"timeweb.connection\",\n\n schema: Type.Object({\n name: Type.String(),\n apiToken: Type.String(),\n }),\n})\n\nexport const connection = defineUnit({\n type: \"timeweb.connection\",\n\n secrets: {\n apiToken: Type.String(),\n },\n\n outputs: {\n connection: connectionEntity,\n },\n\n meta: {\n displayName: \"Timeweb Connection\",\n description: \"Creates a new Timeweb connection.\",\n primaryIcon: \"material-symbols:cloud\",\n },\n\n source: {\n package: \"@highstate/timeweb\",\n path: \"connection\",\n },\n})\n\nexport const virtualMachine = defineUnit({\n type: \"timeweb.virtual-machine\",\n\n args: {\n presetId: Type.Optional(Type.Number()),\n osId: Type.Optional(Type.Number()),\n availabilityZone: Type.String(),\n },\n\n inputs: {\n connection: connectionEntity,\n sshKeyPair: {\n entity: keyPairEntity,\n required: false,\n },\n },\n\n secrets: {\n sshPrivateKey: Type.Optional(Type.String()),\n },\n\n outputs: {\n server: serverEntity,\n },\n\n meta: {\n displayName: \"Timeweb Virtual Machine\",\n description: \"Creates a new Timeweb virtual machine.\",\n primaryIcon: \"material-symbols:cloud\",\n secondaryIcon: \"codicon:vm\",\n },\n\n source: {\n package: \"@highstate/timeweb\",\n path: \"virtual-machine\",\n },\n})\n","import { defineEntity, defineUnit, Type } from \"@highstate/contract\"\nimport { fileEntity, serverEntity } from \"./common\"\n\nexport const inlineModuleEntity = defineEntity({\n type: \"nixos.inline-module\",\n\n schema: Type.Object({\n code: Type.String(),\n }),\n\n meta: {\n displayName: \"NixOS Inline Module\",\n description: \"The NixOS module reference.\",\n color: \"#5277c3\",\n },\n})\n\nexport const inlineModule = defineUnit({\n type: \"nixos.inline-module\",\n\n args: {\n code: Type.String({ language: \"nix\" }),\n },\n\n inputs: {\n files: {\n entity: fileEntity,\n required: false,\n multiple: true,\n },\n },\n\n outputs: {\n module: inlineModuleEntity,\n },\n\n meta: {\n displayName: \"NixOS Inline Module\",\n description: \"Creates a NixOS module from inline code.\",\n primaryIcon: \"simple-icons:nixos\",\n primaryIconColor: \"#7ebae4\",\n secondaryIcon: \"mdi:file-code\",\n },\n\n source: {\n package: \"@highstate/nixos\",\n path: \"inline-module\",\n },\n})\n\nexport const flakeEntity = defineEntity({\n type: \"nixos.flake\",\n\n schema: Type.Object({\n url: Type.String(),\n }),\n\n meta: {\n displayName: \"NixOS Flake\",\n description: \"The NixOS flake reference.\",\n color: \"#5277c3\",\n },\n})\n\nexport const remoteFlake = defineUnit({\n type: \"nixos.remote-flake\",\n\n args: {\n url: Type.String(),\n },\n\n outputs: {\n flake: flakeEntity,\n },\n\n meta: {\n displayName: \"NixOS Remote Flake\",\n description: \"References a remote NixOS flake.\",\n primaryIcon: \"simple-icons:nixos\",\n primaryIconColor: \"#7ebae4\",\n secondaryIcon: \"simple-icons:git\",\n secondaryIconColor: \"#f1502f\",\n },\n\n source: {\n package: \"@highstate/nixos\",\n path: \"flake\",\n },\n})\n\nexport const inlineFlake = defineUnit({\n type: \"nixos.inline-flake\",\n\n args: {\n code: Type.String({ language: \"nix\" }),\n },\n\n inputs: {\n flakes: {\n entity: flakeEntity,\n required: false,\n multiple: true,\n },\n modules: {\n entity: inlineModuleEntity,\n required: false,\n multiple: true,\n },\n files: {\n entity: fileEntity,\n required: false,\n multiple: true,\n },\n },\n\n outputs: {\n flake: flakeEntity,\n },\n\n meta: {\n displayName: \"NixOS Inline Flake\",\n description: \"Creates a NixOS flake from inline code.\",\n primaryIcon: \"simple-icons:nixos\",\n primaryIconColor: \"#7ebae4\",\n secondaryIcon: \"mdi:file-code\",\n },\n\n source: {\n package: \"@highstate/nixos\",\n path: \"inline-flake\",\n },\n})\n\nexport const system = defineUnit({\n type: \"nixos.system\",\n\n args: {\n system: Type.Optional(Type.String()),\n },\n\n inputs: {\n flake: flakeEntity,\n server: serverEntity,\n modules: {\n entity: inlineModuleEntity,\n required: false,\n multiple: true,\n },\n },\n\n outputs: {\n server: serverEntity,\n },\n\n meta: {\n displayName: \"NixOS System\",\n description: \"Creates a NixOS system on top of any server.\",\n primaryIcon: \"simple-icons:nixos\",\n primaryIconColor: \"#7ebae4\",\n secondaryIcon: \"codicon:vm\",\n },\n\n source: {\n package: \"@highstate/nixos\",\n path: \"system\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { fileEntity, serverEntity } from \"./common\"\n\nexport const secrets = defineUnit({\n type: \"sops.secrets\",\n\n args: {\n secrets: Type.Record(Type.String(), Type.Any()),\n },\n\n inputs: {\n servers: {\n entity: serverEntity,\n required: false,\n multiple: true,\n },\n },\n\n outputs: {\n file: fileEntity,\n },\n\n meta: {\n displayName: \"SOPS Secrets\",\n description: \"Encrypts secrets using SOPS for the specified servers.\",\n primaryIcon: \"mdi:file-lock\",\n },\n\n source: {\n package: \"@highstate/sops\",\n path: \"secrets\",\n },\n})\n"],"mappings":"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","names":["defineEntity","defineUnit","Type","defineEntity","Type","defineUnit","defineEntity","defineUnit","Type","defineEntity","Type","defineUnit","clusterEntity","defineEntity","defineUnit","Type","defineEntity","defineUnit","Type","Type","defineEntity","clusterEntity","defineUnit","clusterEntity","defineEntity","defineUnit","Type","clusterEntity","defineEntity","Type","defineUnit","defineEntity","defineUnit","Type","Type","defineEntity","defineUnit","clusterEntity","defineEntity","defineUnit","Type","defineEntity","defineUnit","Type","defineEntity","Type","defineUnit","clusterEntity","defineEntity","defineUnit","Type","defineEntity","Type","defineUnit","clusterEntity","defineUnit","Type","defineUnit","Type","clusterEntity","defineUnit","Type","defineUnit","Type","clusterEntity","defineUnit","Type","defineUnit","Type","clusterEntity","defineUnit","Type","defineUnit","Type","clusterEntity","defineUnit","Type","defineUnit","Type","clusterEntity","defineEntity","defineUnit","Type","defineEntity","Type","defineUnit","clusterEntity","defineUnit","Type","defineUnit","Type","clusterEntity","defineUnit","Type","Type","defineUnit","clusterEntity","defineUnit","Type","defineUnit","Type","clusterEntity","connection","defineUnit","Type","connection","defineUnit","Type","cluster","defineUnit","cluster","defineUnit","clusterEntity","peer","defineUnit","Type","Type","peer","defineUnit","connection","virtualMachine","defineEntity","defineUnit","Type","defineEntity","Type","connection","defineUnit","virtualMachine","defineEntity","defineUnit","Type","defineEntity","Type","defineUnit","defineUnit","Type","defineUnit","Type"]}
1
+ {"version":3,"sources":["../src/common.ts","../src/ssh.ts","../src/proxmox.ts","../src/k8s.ts","../src/dns.ts","../src/talos.ts","../src/wireguard.ts","../src/apps/index.ts","../src/apps/mariadb.ts","../src/restic.ts","../src/apps/postgresql.ts","../src/apps/vaultwarden.ts","../src/apps/traefik.ts","../src/apps/kubernetes-dashboard.ts","../src/apps/grocy.ts","../src/apps/maybe.ts","../src/apps/mongodb.ts","../src/apps/deployment.ts","../src/apps/syncthing.ts","../src/apps/code-server.ts","../src/cloudflare.ts","../src/k3s.ts","../src/mullvad.ts","../src/timeweb.ts","../src/nixos.ts","../src/sops.ts"],"sourcesContent":["import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\nimport { credentialsSchema, keyPairEntity } from \"./ssh\"\n\nexport const serverEntity = defineEntity({\n type: \"common.server\",\n\n schema: Type.Object({\n endpoint: Type.String(),\n hostname: Type.String(),\n sshCredentials: Type.Optional(credentialsSchema),\n }),\n\n meta: {\n color: \"#009688\",\n },\n})\n\nexport const endpointEntity = defineEntity({\n type: \"common.endpoint\",\n\n schema: Type.Object({\n endpoint: Type.String(),\n }),\n\n meta: {\n color: \"#FFC107\",\n description: \"The L3-L4 endpoint for some network service.\",\n },\n})\n\nexport const existingServer = defineUnit({\n type: \"common.existing-server\",\n\n args: {\n endpoint: Type.String(),\n sshUser: Type.Optional(Type.String({ default: \"root\" })),\n sshPort: Type.Optional(Type.Number({ default: 22 })),\n },\n\n secrets: {\n sshPassword: Type.Optional(Type.String()),\n sshPrivateKey: Type.Optional(Type.String()),\n },\n\n inputs: {\n sshKeyPair: {\n entity: keyPairEntity,\n required: false,\n },\n },\n\n outputs: {\n server: serverEntity,\n },\n\n meta: {\n displayName: \"Existing Server\",\n description: \"An existing server that can be used in the configuration.\",\n primaryIcon: \"mdi:server\",\n defaultNamePrefix: \"server\",\n },\n\n source: {\n package: \"@highstate/common\",\n path: \"existing-server\",\n },\n})\n\nexport const script = defineUnit({\n type: \"common.script\",\n\n args: {\n script: Type.String({ language: \"shell\" }),\n updateScript: Type.Optional(Type.String({ language: \"shell\" })),\n deleteScript: Type.Optional(Type.String({ language: \"shell\" })),\n },\n\n inputs: {\n server: serverEntity,\n },\n\n outputs: {\n server: serverEntity,\n },\n\n meta: {\n displayName: \"Shell Script\",\n description: \"Run a shell script on the server.\",\n primaryIcon: \"mdi:bash\",\n },\n\n source: {\n package: \"@highstate/common\",\n path: \"script\",\n },\n})\n\nexport const fileMetaEntity = defineEntity({\n type: \"common.file-meta\",\n\n schema: Type.Object({\n name: Type.String(),\n size: Type.Number(),\n isBinary: Type.Optional(Type.Boolean()),\n isExecutable: Type.Optional(Type.Boolean()),\n }),\n\n meta: {\n color: \"#FF5722\",\n description: \"Metadata for a file.\",\n },\n})\n\nexport const fileContentEntity = defineEntity({\n type: \"common.file-content\",\n\n schema: Type.Union([\n Type.Object({\n type: Type.Literal(\"inline\"),\n content: Type.String(),\n }),\n Type.Object({\n type: Type.Literal(\"remote\"),\n url: Type.String(),\n }),\n ]),\n\n meta: {\n color: \"#FF5722\",\n description: \"The content of a file.\",\n },\n})\n\nexport const fileEntity = defineEntity({\n type: \"common.file\",\n\n schema: Type.Object({\n meta: fileMetaEntity.schema,\n content: fileContentEntity.schema,\n }),\n\n meta: {\n color: \"#FF5722\",\n },\n})\n\nexport type Server = Static<typeof serverEntity.schema>\nexport type Endpoint = Static<typeof endpointEntity.schema>\n\nexport type File = Static<typeof fileEntity.schema>\nexport type FileMeta = Static<typeof fileMetaEntity.schema>\nexport type FileContent = Static<typeof fileContentEntity.schema>\n","import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\n\nexport const keyTypeSchema = Type.Union([\n //\n Type.Literal(\"rsa\"),\n Type.Literal(\"ed25519\"),\n])\n\nexport const keyPairEntity = defineEntity({\n type: \"ssh.key-pair\",\n\n schema: Type.Object({\n type: keyTypeSchema,\n privateKey: Type.String(),\n publicKey: Type.String(),\n }),\n\n meta: {\n color: \"#2b5797\",\n },\n})\n\nexport const credentialsSchema = Type.Object({\n endpoint: Type.Optional(Type.String()),\n user: Type.Optional(Type.String()),\n port: Type.Optional(Type.Number()),\n password: Type.Optional(Type.String()),\n privateKey: Type.Optional(Type.String()),\n})\n\nexport const keyPair = defineUnit({\n type: \"ssh.key-pair\",\n\n secrets: {\n privateKey: Type.Optional(Type.String()),\n },\n\n outputs: {\n keyPair: keyPairEntity,\n },\n\n meta: {\n displayName: \"SSH Key Pair\",\n description: \"Holds the ED25519 SSH key pair and generates the private key if not provided.\",\n category: \"ssh\",\n primaryIcon: \"charm:key\",\n primaryIconColor: \"#ffffff\",\n secondaryIcon: \"mdi:lock\",\n secondaryIconColor: \"#ffffff\",\n },\n\n source: {\n package: \"@highstate/common\",\n path: \"ssh/key-pair\",\n },\n})\n\nexport type KeyType = Static<typeof keyTypeSchema>\nexport type Credentials = Static<typeof credentialsSchema>\nexport type KeyPair = Static<typeof keyPairEntity.schema>\n","import { defineEntity, defineUnit, Type } from \"@highstate/contract\"\nimport { serverEntity } from \"./common\"\nimport { keyPairEntity } from \"./ssh\"\n\nexport const clusterEntity = defineEntity({\n type: \"proxmox.cluster\",\n\n schema: Type.Object({\n endpoint: Type.String(),\n insecure: Type.Optional(Type.Boolean()),\n username: Type.Optional(Type.String()),\n\n defaultNodeName: Type.String(),\n defaultDatastoreId: Type.String(),\n\n password: Type.Optional(Type.String()),\n apiToken: Type.Optional(Type.String()),\n }),\n\n meta: {\n color: \"#e56901\",\n },\n})\n\nexport const imageEntity = defineEntity({\n type: \"proxmox.image\",\n\n schema: Type.Object({\n id: Type.String(),\n }),\n\n meta: {\n color: \"#e56901\",\n },\n})\n\nexport const connection = defineUnit({\n type: \"proxmox.connection\",\n\n args: {\n endpoint: Type.String(),\n insecure: Type.Optional(Type.Boolean()),\n username: Type.Optional(Type.String()),\n\n defaultNodeName: Type.Optional(Type.String()),\n defaultDatastoreId: Type.Optional(Type.String()),\n },\n\n secrets: {\n password: Type.Optional(Type.String()),\n apiToken: Type.Optional(Type.String()),\n },\n\n outputs: {\n proxmoxCluster: clusterEntity,\n },\n\n meta: {\n displayName: \"Proxmox Connection\",\n description: \"The connection to an existing Proxmox cluster.\",\n category: \"Proxmox\",\n primaryIcon: \"simple-icons:proxmox\",\n primaryIconColor: \"#e56901\",\n secondaryIcon: \"codicon:vm\",\n },\n\n source: {\n package: \"@highstate/proxmox\",\n path: \"connection\",\n },\n})\n\nexport const image = defineUnit({\n type: \"proxmox.image\",\n\n args: {\n url: Type.String(),\n nodeName: Type.Optional(Type.String()),\n sha256: Type.Optional(Type.String()),\n datastoreId: Type.Optional(Type.String()),\n },\n\n inputs: {\n proxmoxCluster: clusterEntity,\n },\n\n outputs: {\n image: imageEntity,\n },\n\n meta: {\n displayName: \"Proxmox Image\",\n description: \"The image to upload to a Proxmox cluster.\",\n category: \"Proxmox\",\n primaryIcon: \"simple-icons:proxmox\",\n primaryIconColor: \"#e56901\",\n secondaryIcon: \"mage:compact-disk-fill\",\n },\n\n source: {\n package: \"@highstate/proxmox\",\n path: \"image\",\n },\n})\n\nexport const existingImage = defineUnit({\n type: \"proxmox.existing-image\",\n\n args: {\n id: Type.String(),\n },\n\n outputs: {\n image: imageEntity,\n },\n\n meta: {\n displayName: \"Proxmox Existing Image\",\n description: \"The existing image on a Proxmox cluster.\",\n category: \"Proxmox\",\n primaryIcon: \"simple-icons:proxmox\",\n primaryIconColor: \"#e56901\",\n secondaryIcon: \"mage:compact-disk-fill\",\n },\n\n source: {\n package: \"@highstate/proxmox\",\n path: \"existing-image\",\n },\n})\n\nexport const virtualMachine = defineUnit({\n type: \"proxmox.virtual-machine\",\n\n args: {\n nodeName: Type.Optional(Type.String()),\n\n cpuType: Type.Optional(Type.String({ default: \"host\" })),\n cores: Type.Optional(Type.Number({ default: 1 })),\n sockets: Type.Optional(Type.Number({ default: 1 })),\n memory: Type.Optional(Type.Number({ default: 512 })),\n\n ipv4: Type.Optional(Type.String()),\n ipv4Gateway: Type.Optional(Type.String()),\n dns: Type.Optional(Type.Array(Type.String())),\n\n datastoreId: Type.Optional(Type.String()),\n diskSize: Type.Optional(Type.Number({ default: 8 })),\n bridge: Type.Optional(Type.String({ default: \"vmbr0\" })),\n\n sshPort: Type.Optional(Type.Number({ default: 22 })),\n sshUser: Type.Optional(Type.String({ default: \"root\" })),\n\n waitForAgent: Type.Optional(Type.Boolean({ default: true })),\n },\n\n inputs: {\n proxmoxCluster: clusterEntity,\n image: imageEntity,\n\n sshKeyPair: {\n entity: keyPairEntity,\n required: false,\n },\n },\n\n secrets: {\n sshPassword: Type.Optional(Type.String()),\n },\n\n outputs: {\n server: serverEntity,\n },\n\n meta: {\n displayName: \"Proxmox Virtual Machine\",\n description: \"The virtual machine on a Proxmox cluster.\",\n category: \"Proxmox\",\n primaryIcon: \"simple-icons:proxmox\",\n primaryIconColor: \"#e56901\",\n secondaryIcon: \"codicon:vm\",\n },\n\n source: {\n package: \"@highstate/proxmox\",\n path: \"virtual-machine\",\n },\n})\n","import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\nimport { providerEntity } from \"./dns\"\n\nexport const clusterInfoSchema = Type.Object({\n id: Type.String(),\n name: Type.String(),\n cni: Type.Optional(Type.String()),\n externalIps: Type.Array(Type.String()),\n fqdn: Type.Optional(Type.String()),\n kubeApiServerIp: Type.Optional(Type.String()),\n kubeApiServerPort: Type.Optional(Type.Number()),\n})\n\nexport const serviceTypeSchema = Type.StringEnum([\"NodePort\", \"LoadBalancer\", \"ClusterIP\"])\n\nexport const metadataSchema = Type.Object({\n namespace: Type.Optional(Type.String()),\n name: Type.String(),\n labels: Type.Optional(Type.Record(Type.String(), Type.String())),\n annotations: Type.Optional(Type.Record(Type.String(), Type.String())),\n})\n\nexport const servicePortSchema = Type.Object({\n name: Type.Optional(Type.String()),\n port: Type.Optional(Type.Number()),\n targetPort: Type.Optional(Type.Union([Type.Number(), Type.String()])),\n protocol: Type.Optional(Type.String()),\n})\n\nexport const serviceSpecSchema = Type.Object({\n type: Type.Optional(Type.String()),\n selector: Type.Record(Type.String(), Type.String()),\n ports: Type.Array(servicePortSchema),\n clusterIP: Type.Optional(Type.String()),\n clusterIPs: Type.Optional(Type.Array(Type.String())),\n externalIPs: Type.Optional(Type.Array(Type.String())),\n})\n\nexport const serviceEntity = defineEntity({\n type: \"k8s.service\",\n\n schema: Type.Object({\n type: Type.Literal(\"k8s.service\"),\n clusterInfo: clusterInfoSchema,\n metadata: metadataSchema,\n spec: serviceSpecSchema,\n }),\n\n meta: {\n color: \"#2196F3\",\n },\n})\n\nexport const clusterEntity = defineEntity({\n type: \"k8s.cluster\",\n\n schema: Type.Object({\n info: clusterInfoSchema,\n kubeconfig: Type.String(),\n }),\n\n meta: {\n color: \"#2196F3\",\n },\n})\n\nexport const internalIpsPolicySchema = Type.StringEnum([\"always\", \"public\", \"never\"])\n\nexport const sharedClusterArgs = {\n /**\n * The list of external IPs of the cluster nodes allowed to be used for external access.\n *\n * If not provided, will be automatically detected by querying the cluster nodes.\n *\n * @schema\n */\n externalIps: {\n ...Type.Optional(Type.Array(Type.String())),\n description: `The list of external IPs of the cluster nodes allowed to be used for external access.\n\n If not provided, will be automatically detected by querying the cluster nodes.`,\n},\n\n /**\n * The policy for using internal IPs of the nodes as external IPs.\n *\n * - `always`: always use internal IPs as external IPs;\n * - `public`: use internal IPs as external IPs only if they are (theoretically) routable from the public internet **(default)**;\n * - `never`: never use internal IPs as external IPs.\n *\n * @schema\n */\n internalIpsPolicy: {\n ...{ ...internalIpsPolicySchema, default: \"public\" },\n description: `The policy for using internal IPs of the nodes as external IPs.\n\n - \\`always\\`: always use internal IPs as external IPs;\n - \\`public\\`: use internal IPs as external IPs only if they are (theoretically) routable from the public internet **(default)**;\n - \\`never\\`: never use internal IPs as external IPs.`,\n},\n\n /**\n * The FQDN to register the cluster nodes with.\n *\n * If provided and `registerFqdn` is set to `true`, the corresponding DNS provider must be provided to set up the DNS records.\n *\n * @schema\n */\n fqdn: {\n ...Type.Optional(Type.String()),\n description: `The FQDN to register the cluster nodes with.\n\n If provided and \\`registerFqdn\\` is set to \\`true\\`, the corresponding DNS provider must be provided to set up the DNS records.`,\n},\n\n /**\n * Whether to register the cluster nodes with the provided FQDN.\n *\n * By default, `true`.\n *\n * @schema\n */\n registerFqdn: {\n ...Type.Boolean({ default: true }),\n description: `Whether to register the cluster nodes with the provided FQDN.\n\n By default, \\`true\\`.`,\n},\n}\n\nexport const existingCluster = defineUnit({\n type: \"k8s.existing-cluster\",\n\n args: {\n ...sharedClusterArgs,\n },\n\n secrets: {\n /**\n * The kubeconfig of the cluster to use for connecting to the cluster.\n *\n * Will be available for all components using `cluster` output of this unit.\n *\n * @schema\n */\n kubeconfig: {\n ...Type.Record(Type.String(), Type.Any()),\n description: `The kubeconfig of the cluster to use for connecting to the cluster.\n\n Will be available for all components using \\`cluster\\` output of this unit.`,\n},\n },\n\n outputs: {\n cluster: clusterEntity,\n },\n\n meta: {\n displayName: \"Existing Cluster\",\n description: \"An existing Kubernetes cluster.\",\n primaryIcon: \"mdi:kubernetes\",\n },\n\n source: {\n package: \"@highstate/k8s\",\n path: \"units/existing-cluster\",\n },\n})\n\nexport const gatewayEntity = defineEntity({\n type: \"k8s.gateway\",\n\n schema: Type.Object({\n clusterInfo: clusterInfoSchema,\n gatewayClassName: Type.String(),\n httpListenerPort: Type.Number(),\n httpsListenerPort: Type.Number(),\n ip: Type.String(),\n service: Type.Optional(serviceEntity.schema),\n }),\n\n meta: {\n color: \"#4CAF50\",\n },\n})\n\nexport const tlsIssuerEntity = defineEntity({\n type: \"k8s.tls-issuer\",\n\n schema: Type.Object({\n clusterInfo: clusterInfoSchema,\n clusterIssuerName: Type.String(),\n }),\n\n meta: {\n color: \"#f06292\",\n },\n})\n\nexport const accessPointEntity = defineEntity({\n type: \"k8s.access-point\",\n\n schema: Type.Object({\n gateway: gatewayEntity.schema,\n tlsIssuer: tlsIssuerEntity.schema,\n dnsProviders: Type.Array(providerEntity.schema),\n }),\n\n meta: {\n color: \"#F57F17\",\n },\n})\n\nexport const accessPoint = defineUnit({\n type: \"k8s.access-point\",\n\n inputs: {\n gateway: gatewayEntity,\n tlsIssuer: tlsIssuerEntity,\n dnsProviders: {\n entity: providerEntity,\n multiple: true,\n },\n },\n\n outputs: {\n accessPoint: accessPointEntity,\n },\n\n meta: {\n displayName: \"Access Point\",\n description: \"An access point which can be used to connect to services.\",\n primaryIcon: \"mdi:access-point\",\n },\n\n source: {\n package: \"@highstate/k8s\",\n path: \"units/access-point\",\n },\n})\n\nexport const certManager = defineUnit({\n type: \"k8s.cert-manager\",\n\n inputs: {\n k8sCluster: clusterEntity,\n },\n\n outputs: {\n k8sCluster: clusterEntity,\n },\n\n meta: {\n displayName: \"Cert Manager\",\n description: \"A certificate manager for managing TLS certificates.\",\n primaryIcon: \"simple-icons:letsencrypt\",\n },\n\n source: {\n package: \"@highstate/k8s\",\n path: \"units/cert-manager\",\n },\n})\n\nexport const dns01TlsIssuer = defineUnit({\n type: \"k8s.dns01-issuer\",\n\n args: {\n /**\n * The top-level domains to filter the DNS01 challenge for.\n *\n * If not provided, will use all domains passed to the DNS providers.\n *\n * @schema\n */\n domains: {\n ...Type.Optional(Type.Array(Type.String())),\n description: `The top-level domains to filter the DNS01 challenge for.\n\n If not provided, will use all domains passed to the DNS providers.`,\n},\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n dnsProviders: {\n entity: providerEntity,\n multiple: true,\n },\n },\n\n outputs: {\n tlsIssuer: tlsIssuerEntity,\n },\n\n meta: {\n displayName: \"DNS01 Issuer\",\n description: \"A TLS issuer for issuing certificate using DNS01 challenge.\",\n primaryIcon: \"mdi:certificate\",\n },\n\n source: {\n package: \"@highstate/k8s\",\n path: \"units/dns01-issuer\",\n },\n})\n\nexport const containerSchema = Type.Object({\n name: Type.String(),\n image: Type.String(),\n})\n\nexport const labelSelectorSchema = Type.Object({\n matchLabels: Type.Record(Type.String(), Type.String()),\n})\n\nexport const deploymentSpecSchema = Type.Object({\n replicas: Type.Number(),\n selector: labelSelectorSchema,\n template: Type.Object({\n metadata: metadataSchema,\n spec: Type.Object({\n containers: Type.Array(containerSchema),\n }),\n }),\n})\n\nexport const deploymentEntity = defineEntity({\n type: \"k8s.deployment\",\n\n schema: Type.Object({\n type: Type.Literal(\"k8s.deployment\"),\n clusterInfo: clusterInfoSchema,\n metadata: metadataSchema,\n\n service: Type.Optional(serviceEntity.schema),\n }),\n\n meta: {\n color: \"#4CAF50\",\n },\n})\n\nexport const statefulSetEntity = defineEntity({\n type: \"k8s.stateful-set\",\n\n schema: Type.Object({\n type: Type.Literal(\"k8s.stateful-set\"),\n clusterInfo: clusterInfoSchema,\n metadata: metadataSchema,\n\n service: Type.Optional(serviceEntity.schema),\n }),\n\n meta: {\n color: \"#FFC107\",\n },\n})\n\nexport const persistentVolumeClaimEntity = defineEntity({\n type: \"k8s.persistent-volume-claim\",\n\n schema: Type.Object({\n type: Type.Literal(\"k8s.persistent-volume-claim\"),\n clusterInfo: clusterInfoSchema,\n metadata: metadataSchema,\n }),\n\n meta: {\n color: \"#FFC107\",\n },\n})\n\nexport const interfaceEntity = defineEntity({\n type: \"k8s.interface\",\n\n schema: Type.Object({\n name: Type.String(),\n deployment: deploymentEntity.schema,\n }),\n\n meta: {\n color: \"#2196F3\",\n description:\n \"The interface in a network space of pod kernel which can accept or transmit packets.\",\n },\n})\n\nexport const gatewayApi = defineUnit({\n type: \"k8s.gateway-api\",\n\n inputs: {\n k8sCluster: clusterEntity,\n },\n\n outputs: {\n k8sCluster: clusterEntity,\n },\n\n meta: {\n displayName: \"Gateway API\",\n description: \"Installs the Gateway API CRDs to the cluster.\",\n primaryIcon: \"mdi:kubernetes\",\n primaryIconColor: \"#4CAF50\",\n },\n\n source: {\n package: \"@highstate/k8s\",\n path: \"units/gateway-api\",\n },\n})\n\nexport type ClusterInfo = Static<typeof clusterInfoSchema>\nexport type Cluster = Static<typeof clusterEntity.schema>\n\nexport type Gateway = Static<typeof gatewayEntity.schema>\nexport type TlsIssuer = Static<typeof tlsIssuerEntity.schema>\nexport type AccessPoint = Static<typeof accessPointEntity.schema>\n\nexport type Metadata = Static<typeof metadataSchema>\n\nexport type ServiceType = Static<typeof serviceTypeSchema>\nexport type ServicePort = Static<typeof servicePortSchema>\nexport type ServiceSpec = Static<typeof serviceSpecSchema>\nexport type Service = Static<typeof serviceEntity.schema>\n\nexport type Container = Static<typeof containerSchema>\nexport type DeploymentSpec = Static<typeof deploymentSpecSchema>\nexport type Deployment = Static<typeof deploymentEntity.schema>\n\nexport type PersistentVolumeClaim = Static<typeof persistentVolumeClaimEntity.schema>\nexport type StatefulSet = Static<typeof statefulSetEntity.schema>\n\nexport type Interface = Static<typeof interfaceEntity.schema>\nexport type InternalIpsPolicy = Static<typeof internalIpsPolicySchema>\n","import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\n\nexport const providerEntity = defineEntity({\n type: \"dns.provider\",\n\n schema: Type.Object({\n name: Type.String(),\n type: Type.String(),\n data: Type.Record(Type.String(), Type.Unknown()),\n domain: Type.String(),\n }),\n\n meta: {\n color: \"#FF5722\",\n },\n})\n\nexport const record = defineUnit({\n type: \"common.dns-record\",\n\n args: {\n name: Type.String(),\n type: Type.String(),\n value: Type.String(),\n ttl: Type.Optional(Type.Number()),\n },\n\n inputs: {\n dnsProvider: providerEntity,\n },\n\n meta: {\n displayName: \"DNS Record\",\n description: \"A DNS record to create.\",\n primaryIcon: \"mdi:server\",\n defaultNamePrefix: \"record\",\n },\n\n source: {\n package: \"@highstate/common\",\n path: \"dns/record\",\n },\n})\n\nexport type Provider = Static<typeof providerEntity.schema>\n","import { defineEntity, defineUnit, Type } from \"@highstate/contract\"\nimport { serverEntity } from \"./common\"\nimport { clusterEntity as k8sClusterEntity } from \"./k8s\"\n\nexport const clusterEntity = defineEntity({\n type: \"talos.cluster\",\n\n schema: Type.Object({\n clientConfiguration: Type.String(),\n machineSecrets: Type.String(),\n }),\n\n meta: {\n color: \"#2d2d2d\",\n },\n})\n\nexport const cniSchema = Type.StringEnum([\"none\", \"cilium\", \"flannel\"])\nexport const csiSchema = Type.StringEnum([\"none\", \"local-path-provisioner\"])\n\nexport const cluster = defineUnit({\n type: \"talos.cluster\",\n\n args: {\n /**\n * Allow scheduling workloads on the master nodes.\n *\n * By default, \"true\" if no worker nodes are provided.\n */\n scheduleOnMasters: Type.Boolean(),\n\n /**\n * The endpoint of the cluster.\n *\n * By default, the first master node's endpoint is used.\n */\n endpoint: Type.Optional(Type.String()),\n\n /**\n * The name of the cluster.\n *\n * By default, the name of the instance is used.\n */\n clusterName: Type.Optional(Type.String()),\n\n /**\n * The CNI plugin to use.\n *\n * The following options are available:\n * - \"cilium\" (default)\n * - \"flannel\" (built-in in Talos)\n * - \"none\" (disable CNI, must be installed manually)\n *\n * The \"cilium\" CNI plugin is recommended to cover advanced network policies like FQDNs.\n */\n cni: { ...cniSchema, default: \"cilium\" },\n\n /**\n * The CSI plugin to use.\n *\n * The following options are available:\n * - \"local-path-provisioner\" (default)\n * - \"none\" (disable CSI, must be installed manually if needed)\n */\n csi: { ...csiSchema, default: \"local-path-provisioner\" },\n\n /**\n * The shared configuration patch.\n * It will be applied to all nodes.\n */\n sharedConfigPatch: Type.Optional(Type.Record(Type.String(), Type.Any())),\n\n /**\n * The master configuration patch.\n * It will be applied to all master nodes.\n */\n masterConfigPatch: Type.Optional(Type.Record(Type.String(), Type.Any())),\n\n /**\n * The worker configuration patch.\n * It will be applied to all worker nodes.\n */\n workerConfigPatch: Type.Optional(Type.Record(Type.String(), Type.Any())),\n },\n\n inputs: {\n masters: {\n entity: serverEntity,\n multiple: true,\n },\n workers: {\n entity: serverEntity,\n multiple: true,\n required: false,\n },\n },\n\n outputs: {\n k8sCluster: k8sClusterEntity,\n talosCluster: clusterEntity,\n },\n\n meta: {\n displayName: \"Talos Cluster\",\n description: \"A Kubernetes cluster managed by Talos.\",\n category: \"Talos\",\n color: \"#2d2d2d\",\n primaryIcon: \"simple-icons:talos\",\n secondaryIcon: \"devicon:kubernetes\",\n },\n\n source: {\n package: \"@highstate/talos\",\n path: \"cluster\",\n },\n})\n","import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\nimport {\n clusterEntity,\n deploymentEntity,\n interfaceEntity,\n serviceEntity,\n serviceTypeSchema,\n statefulSetEntity,\n} from \"./k8s\"\nimport { providerEntity } from \"./dns\"\n\nexport const backendSchema = Type.StringEnum([\"wireguard\", \"amneziawg\"])\nexport const presharedKeyModeSchema = Type.StringEnum([\"none\", \"global\", \"secure\"])\n\nexport type Backend = Static<typeof backendSchema>\nexport type PresharedKeyMode = Static<typeof presharedKeyModeSchema>\n\nexport const networkEntity = defineEntity({\n type: \"wireguard.network\",\n\n schema: Type.Object({\n backend: Type.Optional(backendSchema),\n presharedKeyMode: presharedKeyModeSchema,\n globalPresharedKey: Type.Optional(Type.String()),\n ipv6: Type.Optional(Type.Boolean()),\n }),\n})\n\nexport const identityEntity = defineEntity({\n type: \"wireguard.identity\",\n\n schema: Type.Object({\n name: Type.String(),\n network: Type.Optional(networkEntity.schema),\n address: Type.Optional(Type.String()),\n privateKey: Type.String(),\n presharedKeyPart: Type.Optional(Type.String()),\n k8sServices: Type.Array(serviceEntity.schema),\n exitNode: Type.Boolean(),\n listenPort: Type.Optional(Type.Number()),\n externalIp: Type.Optional(Type.String()),\n endpoint: Type.Optional(Type.String()),\n fqdn: Type.Optional(Type.String()),\n }),\n\n meta: {\n color: \"#F44336\",\n },\n})\n\nexport const peerEntity = defineEntity({\n type: \"wireguard.peer\",\n\n schema: Type.Object({\n name: Type.String(),\n network: Type.Optional(networkEntity.schema),\n publicKey: Type.String(),\n address: Type.Optional(Type.String()),\n allowedIps: Type.Array(Type.String()),\n endpoint: Type.Optional(Type.String()),\n presharedKeyPart: Type.Optional(Type.String()),\n excludedIps: Type.Optional(Type.Array(Type.String())),\n dns: Type.Optional(Type.Array(Type.String())),\n }),\n\n meta: {\n color: \"#673AB7\",\n },\n})\n\nexport const k8sNodeEntity = defineEntity({\n type: \"wireguard.node\",\n\n schema: Type.Object({\n network: Type.String(),\n address: Type.String(),\n endpoint: Type.Optional(Type.String()),\n peers: Type.Array(Type.String()),\n }),\n})\n\nexport type Network = Static<typeof networkEntity.schema>\nexport type Identity = Static<typeof identityEntity.schema>\nexport type Peer = Static<typeof peerEntity.schema>\n\n/**\n * The network hols the shared configuration for the WireGuard identities, peers and nodes.\n */\nexport const network = defineUnit({\n type: \"wireguard.network\",\n\n args: {\n /**\n * The backend to use for the WireGuard network.\n *\n * Possible values are:\n * 1. `wireguard` - The default backend.\n * 2. `amneziawg` - The censorship-resistant fork of WireGuard.\n *\n * By default, the `wireguard` backend is used.\n *\n * @schema\n */\n backend: {\n ...backendSchema,\n description: `The backend to use for the WireGuard network.\n\n Possible values are:\n 1. \\`wireguard\\` - The default backend.\n 2. \\`amneziawg\\` - The censorship-resistant fork of WireGuard.\n\n By default, the \\`wireguard\\` backend is used.`,\n},\n\n /**\n * The option which defines how to handle pre-shared keys between peers.\n *\n * 1. `none` - No pre-shared keys will be used.\n * 2. `global` - A single pre-shared key will be used for all peer pairs in the network.\n * 3. `secure` - Each peer pair will have its own pre-shared key.\n * In this case, each identity generates `presharedKeyPart` and the actual pre-shared key\n * for each peer pair will be computed as `xor(peer1.presharedKeyPart, peer2.presharedKeyPart)`.\n *\n * If the whole network is managed by the HighState, the `secure` mode is recommended.\n *\n * By default, the `none` mode is used.\n *\n * @schema\n */\n presharedKeyMode: {\n ...Type.Optional(presharedKeyModeSchema),\n description: `The option which defines how to handle pre-shared keys between peers.\n\n 1. \\`none\\` - No pre-shared keys will be used.\n 2. \\`global\\` - A single pre-shared key will be used for all peer pairs in the network.\n 3. \\`secure\\` - Each peer pair will have its own pre-shared key.\n In this case, each identity generates \\`presharedKeyPart\\` and the actual pre-shared key\n for each peer pair will be computed as \\`xor(peer1.presharedKeyPart, peer2.presharedKeyPart)\\`.\n\n If the whole network is managed by the HighState, the \\`secure\\` mode is recommended.\n\n By default, the \\`none\\` mode is used.`,\n},\n\n /**\n * The option to enable IPv6 support in the network.\n *\n * By default, IPv6 support is disabled.\n *\n * @schema\n */\n ipv6: {\n ...Type.Optional(Type.Boolean()),\n description: `The option to enable IPv6 support in the network.\n\n By default, IPv6 support is disabled.`,\n},\n },\n\n secrets: {\n /**\n * The global pre-shared key to use for all peer pairs in the network.\n *\n * Will be used only if `presharedKeyMode` is set to `global`.\n * Will be generated automatically if not provided.\n *\n * @schema\n */\n globalPresharedKey: {\n ...Type.Optional(Type.String()),\n description: `The global pre-shared key to use for all peer pairs in the network.\n\n Will be used only if \\`presharedKeyMode\\` is set to \\`global\\`.\n Will be generated automatically if not provided.`,\n},\n },\n\n outputs: {\n network: networkEntity,\n },\n\n meta: {\n description: \"The WireGuard network with some shared configuration.\",\n primaryIcon: \"simple-icons:wireguard\",\n primaryIconColor: \"#88171a\",\n secondaryIcon: \"mdi:local-area-network-connect\",\n },\n\n source: {\n package: \"@highstate/wireguard\",\n path: \"network\",\n },\n})\n\nconst sharedPeerArgs = {\n /**\n * The name of the WireGuard peer.\n *\n * If not provided, the peer will be named after the unit.\n *\n * @schema\n */\n peerName: {\n ...Type.Optional(Type.String()),\n description: `The name of the WireGuard peer.\n\n If not provided, the peer will be named after the unit.`,\n},\n\n /**\n * The address of the WireGuard interface.\n *\n * The address may be any IPv4 or IPv6 address. CIDR notation is also supported.\n *\n * @schema\n */\n address: {\n ...Type.Optional(Type.String()),\n description: `The address of the WireGuard interface.\n\n The address may be any IPv4 or IPv6 address. CIDR notation is also supported.`,\n},\n\n /**\n * The list of allowed IPs for the peer.\n *\n * @schema\n */\n allowedIps: {\n ...Type.Optional(Type.Array(Type.String())),\n description: `The list of allowed IPs for the peer.`,\n},\n\n /**\n * The convenience option to set `allowedIps` to `0.0.0.0/0, ::/0`.\n *\n * Will be merged with the `allowedIps` if provided.\n *\n * @schema\n */\n exitNode: {\n ...Type.Optional(Type.Boolean()),\n description: `The convenience option to set \\`allowedIps\\` to \\`0.0.0.0/0, ::/0\\`.\n\n Will be merged with the \\`allowedIps\\` if provided.`,\n},\n\n /**\n * The list of IP ranges to exclude from the tunnel.\n *\n * Implementation notes:\n *\n * - This list will not be used to generate the allowed IPs for the peer.\n * - Instead, the node will setup extra direct routes to these IPs via default gateway.\n * - This allows to use `0.0.0.0/0, ::/0` in the `allowedIps` (and corresponding fwmark magic) and still have some IPs excluded from the tunnel.\n *\n * @schema\n */\n excludedIps: {\n ...Type.Optional(Type.Array(Type.String())),\n description: `The list of IP ranges to exclude from the tunnel.\n\n Implementation notes:\n\n - This list will not be used to generate the allowed IPs for the peer.\n - Instead, the node will setup extra direct routes to these IPs via default gateway.\n - This allows to use \\`0.0.0.0/0, ::/0\\` in the \\`allowedIps\\` (and corresponding fwmark magic) and still have some IPs excluded from the tunnel.`,\n},\n\n /**\n * The convenience option to exclude private IPs from the tunnel.\n *\n * For IPv4, the private IPs are:\n *\n * - `10.0.0.0/8`\n * - `172.16.0.0/12`\n * - `192.168.0.0/16`\n *\n * For IPv6, the private IPs are:\n *\n * - `fc00::/7`\n * - `fe80::/10`\n *\n * Will be merged with `excludedIps` if provided.\n *\n * @schema\n */\n excludePrivateIps: {\n ...Type.Optional(Type.Boolean()),\n description: `The convenience option to exclude private IPs from the tunnel.\n\n For IPv4, the private IPs are:\n\n - \\`10.0.0.0/8\\`\n - \\`172.16.0.0/12\\`\n - \\`192.168.0.0/16\\`\n\n For IPv6, the private IPs are:\n\n - \\`fc00::/7\\`\n - \\`fe80::/10\\`\n\n Will be merged with \\`excludedIps\\` if provided.`,\n},\n\n /**\n * The endpoint of the WireGuard peer.\n *\n * @schema\n */\n endpoint: {\n ...Type.Optional(Type.String()),\n description: `The endpoint of the WireGuard peer.`,\n},\n\n /**\n * The DNS servers that should be used by the interface connected to the WireGuard peer.\n *\n * If multiple peers define DNS servers, the node will merge them into a single list (but this is discouraged).\n *\n * @schema\n */\n dns: {\n ...Type.Optional(Type.Array(Type.String())),\n description: `The DNS servers that should be used by the interface connected to the WireGuard peer.\n\n If multiple peers define DNS servers, the node will merge them into a single list (but this is discouraged).`,\n},\n\n /**\n * The convenience option to include the DNS servers to the allowed IPs.\n *\n * By default, is `true`.\n *\n * @schema\n */\n includeDns: {\n ...Type.Optional(Type.Boolean({ default: true })),\n description: `The convenience option to include the DNS servers to the allowed IPs.\n\n By default, is \\`true\\`.`,\n},\n}\n\nconst sharedInterfaceArgs = {\n /**\n * The port to listen on.\n *\n * Will override the `listenPort` of the identity if provided.\n *\n * @schema\n */\n listenPort: {\n ...Type.Optional(Type.Number()),\n description: `The port to listen on.\n\n Will override the \\`listenPort\\` of the identity if provided.`,\n},\n\n /**\n * The DNS servers that should be used by the interface connected to the WireGuard node.\n *\n * Will be merged with the DNS servers of the peers.\n *\n * @schema\n */\n dns: {\n ...Type.Optional(Type.Array(Type.String())),\n description: `The DNS servers that should be used by the interface connected to the WireGuard node.\n\n Will be merged with the DNS servers of the peers.`,\n},\n}\n\nexport const peer = defineUnit({\n type: \"wireguard.peer\",\n\n args: {\n ...sharedPeerArgs,\n\n /**\n * The public key of the WireGuard peer.\n *\n * @schema\n */\n publicKey: {\n ...Type.String(),\n description: `The public key of the WireGuard peer.`,\n},\n },\n\n inputs: {\n /**\n * The network to use for the WireGuard peer.\n *\n * If not provided, the peer will use default network configuration.\n *\n * @schema\n */\n network: {\n ...{\n entity: networkEntity,\n required: false,\n },\n description: `The network to use for the WireGuard peer.\n\n If not provided, the peer will use default network configuration.`,\n},\n },\n\n outputs: {\n peer: peerEntity,\n },\n\n meta: {\n description: \"The WireGuard peer with the public key.\",\n primaryIcon: \"simple-icons:wireguard\",\n primaryIconColor: \"#88171a\",\n secondaryIcon: \"mdi:badge-account-horizontal\",\n },\n\n source: {\n package: \"@highstate/wireguard\",\n path: \"peer\",\n },\n})\n\nexport const identity = defineUnit({\n type: \"wireguard.identity\",\n\n args: {\n ...sharedPeerArgs,\n\n /**\n * The port to listen on.\n *\n * Used by the implementation of the identity and to calculate the endpoint of the peer.\n *\n * @schema\n */\n listenPort: {\n ...Type.Optional(Type.Number()),\n description: `The port to listen on.\n\n Used by the implementation of the identity and to calculate the endpoint of the peer.`,\n},\n\n /**\n * The external IP address of the WireGuard identity.\n *\n * Used by the implementation of the identity and to calculate the endpoint of the peer.\n *\n * @schema\n */\n externalIp: {\n ...Type.Optional(Type.String()),\n description: `The external IP address of the WireGuard identity.\n\n Used by the implementation of the identity and to calculate the endpoint of the peer.`,\n},\n\n /**\n * The endpoint of the WireGuard peer.\n *\n * By default, the endpoint is calculated as `externalIp:listenPort`.\n *\n * If overridden, does not affect node which implements the identity, but is used in the peer configuration of other nodes.\n *\n * @schema\n */\n endpoint: {\n ...Type.Optional(Type.String()),\n description: `The endpoint of the WireGuard peer.\n\n By default, the endpoint is calculated as \\`externalIp:listenPort\\`.\n\n If overridden, does not affect node which implements the identity, but is used in the peer configuration of other nodes.`,\n},\n\n /**\n * The FQDN of the WireGuard identity.\n * Will be used as endpoint for the peer.\n *\n * If `dnsProvider` is provided, external IP is available and `registerFqdn` is set to `true`, and FQDN is provided explicitly (not obtained from the k8s cluster),\n * the FQDN will be registered with the DNS provider.\n *\n * @schema\n */\n fqdn: {\n ...Type.Optional(Type.String()),\n description: `The FQDN of the WireGuard identity.\n Will be used as endpoint for the peer.\n\n If \\`dnsProvider\\` is provided, external IP is available and \\`registerFqdn\\` is set to \\`true\\`, and FQDN is provided explicitly (not obtained from the k8s cluster),\n the FQDN will be registered with the DNS provider.`,\n},\n\n /**\n * Whether to register the FQDN of the identity with the DNS provider.\n *\n * By default, `true`.\n *\n * @schema\n */\n registerFqdn: {\n ...Type.Default(Type.Boolean(), true),\n description: `Whether to register the FQDN of the identity with the DNS provider.\n\n By default, \\`true\\`.`,\n},\n },\n\n secrets: {\n /**\n * The private key of the WireGuard identity.\n *\n * If not provided, the key will be generated automatically.\n *\n * @schema\n */\n privateKey: {\n ...Type.Optional(Type.String()),\n description: `The private key of the WireGuard identity.\n\n If not provided, the key will be generated automatically.`,\n},\n\n /**\n * The part of the pre-shared of the WireGuard identity.\n *\n * Will be generated automatically if not provided.\n *\n * @schema\n */\n presharedKeyPart: {\n ...Type.Optional(Type.String()),\n description: `The part of the pre-shared of the WireGuard identity.\n\n Will be generated automatically if not provided.`,\n},\n },\n\n inputs: {\n /**\n * The network to use for the WireGuard identity.\n *\n * If not provided, the identity will use default network configuration.\n *\n * @schema\n */\n network: {\n ...{\n entity: networkEntity,\n required: false,\n },\n description: `The network to use for the WireGuard identity.\n\n If not provided, the identity will use default network configuration.`,\n},\n\n /**\n * The list of Kubernetes services to expose the WireGuard identity.\n *\n * Their IP addresses will be added to the `allowedIps` of the identity and passed to the node to set up network policies.\n *\n * @schema\n */\n k8sServices: {\n ...{\n entity: serviceEntity,\n multiple: true,\n required: false,\n },\n description: `The list of Kubernetes services to expose the WireGuard identity.\n\n Their IP addresses will be added to the \\`allowedIps\\` of the identity and passed to the node to set up network policies.`,\n},\n\n /**\n * The Kubernetes cluster associated with the identity.\n *\n * If provided, will be used to obtain the external IP or FQDN of the identity.\n */\n k8sCluster: {\n entity: clusterEntity,\n required: false,\n },\n\n dnsProvider: {\n entity: providerEntity,\n required: false,\n },\n },\n\n outputs: {\n identity: identityEntity,\n peer: peerEntity,\n },\n\n meta: {\n description: \"The WireGuard identity with the public key.\",\n primaryIcon: \"simple-icons:wireguard\",\n primaryIconColor: \"#88171a\",\n secondaryIcon: \"mdi:account\",\n },\n\n source: {\n package: \"@highstate/wireguard\",\n path: \"identity\",\n },\n})\n\nexport const node = defineUnit({\n type: \"wireguard.node\",\n\n args: {\n appName: Type.Optional(Type.String()),\n serviceType: Type.Optional(serviceTypeSchema),\n\n ...sharedInterfaceArgs,\n\n /**\n * The external IP address of the WireGuard node.\n *\n * Will override the `externalIp` of the identity if provided.\n *\n * @schema\n */\n externalIp: {\n ...Type.Optional(Type.String()),\n description: `The external IP address of the WireGuard node.\n\n Will override the \\`externalIp\\` of the identity if provided.`,\n},\n\n /**\n * The extra specification of the container which runs the WireGuard node.\n *\n * Will override any overlapping fields.\n *\n * @schema\n */\n containerSpec: {\n ...Type.Optional(Type.Record(Type.String(), Type.Any())),\n description: `The extra specification of the container which runs the WireGuard node.\n\n Will override any overlapping fields.`,\n},\n },\n\n inputs: {\n identity: identityEntity,\n k8sCluster: clusterEntity,\n\n deployment: {\n entity: deploymentEntity,\n required: false,\n },\n\n statefulSet: {\n entity: statefulSetEntity,\n required: false,\n },\n\n interface: {\n entity: interfaceEntity,\n required: false,\n },\n\n peers: {\n entity: peerEntity,\n multiple: true,\n required: false,\n },\n },\n\n outputs: {\n deployment: {\n entity: deploymentEntity,\n required: false,\n },\n\n interface: {\n entity: interfaceEntity,\n required: false,\n },\n\n service: {\n entity: serviceEntity,\n required: false,\n },\n },\n\n meta: {\n description: \"The WireGuard node running on the Kubernetes.\",\n primaryIcon: \"simple-icons:wireguard\",\n primaryIconColor: \"#88171a\",\n secondaryIcon: \"mdi:server\",\n },\n\n source: {\n package: \"@highstate/wireguard\",\n path: \"node\",\n },\n})\n\nexport const config = defineUnit({\n type: \"wireguard.config\",\n\n args: {\n ...sharedInterfaceArgs,\n\n /**\n * The name of the \"default\" interface where non-tunneled traffic should go.\n *\n * If not provided, the config will not respect `excludedIps`.\n *\n * @schema\n */\n defaultInterface: {\n ...Type.Optional(Type.String()),\n description: `The name of the \"default\" interface where non-tunneled traffic should go.\n\n If not provided, the config will not respect \\`excludedIps\\`.`,\n},\n },\n\n inputs: {\n identity: identityEntity,\n peers: {\n entity: peerEntity,\n multiple: true,\n required: false,\n },\n },\n\n meta: {\n displayName: \"WireGuard Config\",\n description: \"Just the WireGuard configuration for the identity and peers.\",\n primaryIcon: \"simple-icons:wireguard\",\n primaryIconColor: \"#88171a\",\n secondaryIcon: \"mdi:settings\",\n },\n\n source: {\n package: \"@highstate/wireguard\",\n path: \"config\",\n },\n})\n\nexport const configBundle = defineUnit({\n type: \"wireguard.config-bundle\",\n\n inputs: {\n identity: identityEntity,\n peers: {\n entity: peerEntity,\n multiple: true,\n },\n sharedPeers: {\n entity: peerEntity,\n multiple: true,\n required: false,\n },\n },\n\n meta: {\n displayName: \"WireGuard Config Bundle\",\n description: \"The WireGuard configuration bundle for the identity and peers.\",\n primaryIcon: \"simple-icons:wireguard\",\n primaryIconColor: \"#88171a\",\n secondaryIcon: \"mdi:folder-settings-variant\",\n },\n\n source: {\n package: \"@highstate/wireguard\",\n path: \"config-bundle\",\n },\n})\n","export * from \"./mariadb\"\nexport * from \"./postgresql\"\nexport * from \"./vaultwarden\"\n// export * from \"./zitadel\"\n// export * from \"./gitea\"\nexport * from \"./traefik\"\nexport * from \"./kubernetes-dashboard\"\nexport * from \"./grocy\"\nexport * from \"./maybe\"\nexport * from \"./mongodb\"\nexport * from \"./deployment\"\nexport * from \"./syncthing\"\nexport * from \"./code-server\"\n","import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\nimport { clusterEntity, serviceEntity } from \"../k8s\"\nimport { repoEntity } from \"../restic\"\nimport { providerEntity } from \"../dns\"\n\nexport const mariadbEntity = defineEntity({\n type: \"apps.mariadb\",\n\n schema: Type.Object({\n service: Type.Optional(serviceEntity.schema),\n\n host: Type.String(),\n port: Type.Number(),\n rootPassword: Type.String(),\n }),\n\n meta: {\n color: \"#f06292\",\n },\n})\n\nexport const mariadb = defineUnit({\n type: \"apps.mariadb\",\n\n args: {\n fqdn: Type.Optional(Type.String()),\n appName: Type.Optional(Type.String()),\n },\n\n secrets: {\n rootPassword: Type.Optional(Type.String()),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n resticRepo: {\n entity: repoEntity,\n required: false,\n },\n dnsProvider: {\n entity: providerEntity,\n required: false,\n },\n },\n\n outputs: {\n mariadb: mariadbEntity,\n service: serviceEntity,\n },\n\n meta: {\n displayName: \"MariaDB\",\n description: \"The MariaDB database deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:mariadb\",\n secondaryIcon: \"mdi:database\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"mariadb/app\",\n },\n})\n\nexport const mariadbDatabase = defineUnit({\n type: \"apps.mariadb.database\",\n\n args: {\n database: Type.Optional(Type.String()),\n username: Type.Optional(Type.String()),\n },\n\n secrets: {\n password: Type.Optional(Type.String()),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n mariadb: mariadbEntity,\n },\n\n meta: {\n displayName: \"MariaDB Database\",\n description:\n \"The virtual MariaDB database created on the MariaDB instance. Works only for MariaDB instances deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:mariadb\",\n secondaryIcon: \"mdi:database-plus\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"mariadb/database\",\n },\n})\n\nexport type MariaDB = Static<typeof mariadbEntity.schema>\n","import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\n\nexport const repoEntity = defineEntity({\n type: \"restic.repo\",\n\n schema: Type.Object({\n password: Type.String(),\n remoteDomains: Type.Array(Type.String()),\n\n type: Type.Literal(\"rclone\"),\n rcloneConfig: Type.String(),\n remoteName: Type.String(),\n basePath: Type.String(),\n }),\n\n meta: {\n color: \"#e56901\",\n },\n})\n\nexport const repo = defineUnit({\n type: \"restic.repo\",\n\n args: {\n remoteDomains: Type.Optional(Type.Array(Type.String())),\n basePath: Type.Optional(Type.String()),\n },\n\n secrets: {\n password: Type.Optional(Type.String()),\n rcloneConfig: Type.String({ multiline: true }),\n },\n\n outputs: {\n repo: repoEntity,\n },\n\n meta: {\n displayName: \"Restic Repo\",\n description: \"Holds the configuration for a Restic repository and its remote storage.\",\n primaryIconColor: \"#e56901\",\n primaryIcon: \"material-symbols:backup\",\n },\n\n source: {\n package: \"@highstate/restic\",\n path: \"repo\",\n },\n})\n\nexport type Repo = Static<typeof repoEntity.schema>\n","import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\nimport { clusterEntity, serviceEntity } from \"../k8s\"\nimport { repoEntity } from \"../restic\"\nimport { providerEntity } from \"../dns\"\n\nexport const postgresqlEntity = defineEntity({\n type: \"apps.postgresql\",\n\n schema: Type.Object({\n service: Type.Optional(serviceEntity.schema),\n\n host: Type.String(),\n port: Type.Number(),\n rootPassword: Type.String(),\n }),\n\n meta: {\n color: \"#336791\",\n },\n})\n\nexport const postgresql = defineUnit({\n type: \"apps.postgresql\",\n\n args: {\n fqdn: Type.Optional(Type.String()),\n appName: Type.Optional(Type.String()),\n },\n\n secrets: {\n rootPassword: Type.Optional(Type.String()),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n resticRepo: {\n entity: repoEntity,\n required: false,\n },\n dnsProvider: {\n entity: providerEntity,\n required: false,\n },\n },\n\n outputs: {\n postgresql: postgresqlEntity,\n service: serviceEntity,\n },\n\n meta: {\n displayName: \"PostgreSQL\",\n description: \"The PostgreSQL database deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:postgresql\",\n secondaryIcon: \"mdi:database\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"postgresql/app\",\n },\n})\n\nexport const postgresqlDatabase = defineUnit({\n type: \"apps.postgresql.database\",\n\n args: {\n database: Type.Optional(Type.String()),\n username: Type.Optional(Type.String()),\n },\n\n secrets: {\n password: Type.Optional(Type.String()),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n postgresql: postgresqlEntity,\n },\n\n meta: {\n displayName: \"PostgreSQL Database\",\n description:\n \"The virtual PostgreSQL database created on the PostgreSQL instance. Works only for PostgreSQL instances deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:postgresql\",\n secondaryIcon: \"mdi:database-plus\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"postgresql/database\",\n },\n})\n\nexport type PostgreSQL = Static<typeof postgresqlEntity.schema>\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { accessPointEntity, clusterEntity } from \"../k8s\"\nimport { mariadbEntity } from \"./mariadb\"\n\nexport const vaultwarden = defineUnit({\n type: \"apps.vaultwarden\",\n\n args: {\n fqdn: Type.String(),\n appName: Type.Optional(Type.String()),\n },\n\n inputs: {\n mariadb: mariadbEntity,\n accessPoint: accessPointEntity,\n k8sCluster: clusterEntity,\n },\n\n secrets: {\n mariadbPassword: Type.Optional(Type.String()),\n },\n\n meta: {\n displayName: \"Vaultwarden\",\n description: \"The Vaultwarden password manager deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:vaultwarden\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"vaultwarden\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { clusterEntity, gatewayEntity, serviceEntity, serviceTypeSchema } from \"../k8s\"\n\nexport const traefikGateway = defineUnit({\n type: \"apps.traefik-gateway\",\n\n args: {\n appName: Type.Optional(Type.String()),\n className: Type.Optional(Type.String()),\n serviceType: Type.Optional(serviceTypeSchema),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n },\n\n outputs: {\n gateway: gatewayEntity,\n service: serviceEntity,\n },\n\n meta: {\n displayName: \"Traefik Gateway\",\n description: \"A Traefik gateway for routing traffic to services.\",\n primaryIcon: \"simple-icons:traefikproxy\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"traefik\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { accessPointEntity, clusterEntity } from \"../k8s\"\n\nexport const kubernetesDashboard = defineUnit({\n type: \"apps.kubernetes-dashboard\",\n\n args: {\n fqdn: Type.String(),\n appName: Type.Optional(Type.String()),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n accessPoint: accessPointEntity,\n },\n\n meta: {\n displayName: \"Kubernetes Dashboard\",\n description: \"The Kubernetes Dashboard deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:kubernetes\",\n secondaryIcon: \"mdi:dashboard\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"kubernetes-dashboard\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { accessPointEntity, clusterEntity } from \"../k8s\"\nimport { repoEntity } from \"../restic\"\n\nexport const grocy = defineUnit({\n type: \"apps.grocy\",\n\n args: {\n fqdn: Type.String(),\n appName: Type.Optional(Type.String()),\n },\n\n inputs: {\n resticRepo: {\n entity: repoEntity,\n required: false,\n },\n accessPoint: accessPointEntity,\n k8sCluster: clusterEntity,\n },\n\n meta: {\n displayName: \"Grocy\",\n description:\n \"Grocy is a web-based self-hosted groceries & household management solution for your home.\",\n primaryIcon: \"simple-icons:grocy\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"grocy\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { accessPointEntity, clusterEntity } from \"../k8s\"\nimport { repoEntity } from \"../restic\"\nimport { postgresqlEntity } from \"./postgresql\"\n\nexport const maybe = defineUnit({\n type: \"apps.maybe\",\n\n args: {\n fqdn: Type.String(),\n appName: Type.Optional(Type.String()),\n },\n\n inputs: {\n postgresql: postgresqlEntity,\n accessPoint: accessPointEntity,\n k8sCluster: clusterEntity,\n resticRepo: {\n entity: repoEntity,\n required: false,\n },\n },\n\n secrets: {\n postgresqlPassword: Type.Optional(Type.String()),\n secretKey: Type.Optional(Type.String()),\n },\n\n meta: {\n displayName: \"Maybe\",\n description: \"The OS for your personal finances.\",\n primaryIcon: \"arcticons:finance-manager\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"maybe\",\n },\n})\n","import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\nimport { clusterEntity, serviceEntity, serviceTypeSchema } from \"../k8s\"\nimport { repoEntity } from \"../restic\"\nimport { providerEntity } from \"../dns\"\n\nexport const mongodbEntity = defineEntity({\n type: \"apps.mongodb\",\n\n schema: Type.Object({\n service: Type.Optional(serviceEntity.schema),\n\n host: Type.String(),\n port: Type.Number(),\n rootPassword: Type.String(),\n }),\n\n meta: {\n color: \"#13aa52\",\n },\n})\n\nexport const mongodb = defineUnit({\n type: \"apps.mongodb\",\n\n args: {\n fqdn: Type.Optional(Type.String()),\n appName: Type.Optional(Type.String()),\n serviceType: Type.Optional(serviceTypeSchema),\n },\n\n secrets: {\n rootPassword: Type.Optional(Type.String()),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n resticRepo: {\n entity: repoEntity,\n required: false,\n },\n dnsProvider: {\n entity: providerEntity,\n required: false,\n },\n },\n\n outputs: {\n mongodb: mongodbEntity,\n service: serviceEntity,\n },\n\n meta: {\n displayName: \"MongoDB\",\n description: \"The MongoDB instance deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:mongodb\",\n secondaryIcon: \"mdi:database\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"mongodb/app\",\n },\n})\n\nexport const mongodbDatabase = defineUnit({\n type: \"apps.mongodb.database\",\n\n args: {\n database: Type.Optional(Type.String()),\n username: Type.Optional(Type.String()),\n },\n\n secrets: {\n password: Type.Optional(Type.String()),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n mongodb: mongodbEntity,\n },\n\n meta: {\n displayName: \"MongoDB Database\",\n description:\n \"The virtual MongoDB database created on the MongoDB instance. Works only for MongoDB instances deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:mongodb\",\n secondaryIcon: \"mdi:database-plus\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"mongodb/database\",\n },\n})\n\nexport type MongoDB = Static<typeof mongodbEntity.schema>\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { clusterEntity, deploymentEntity, serviceEntity, serviceTypeSchema } from \"../k8s\"\nimport { repoEntity } from \"../restic\"\nimport { providerEntity } from \"../dns\"\nimport { mariadbEntity } from \"./mariadb\"\nimport { postgresqlEntity } from \"./postgresql\"\nimport { mongodbEntity } from \"./mongodb\"\n\nexport const deployment = defineUnit({\n type: \"apps.deployment\",\n\n args: {\n appName: Type.Optional(Type.String()),\n\n fqdn: Type.Optional(Type.String()),\n serviceType: Type.Optional(serviceTypeSchema),\n\n image: Type.Optional(Type.String()),\n port: Type.Optional(Type.Number()),\n replicas: Type.Optional(Type.Number()),\n\n dataPath: Type.Optional(Type.String()),\n\n env: Type.Optional(Type.Record(Type.String(), Type.Any())),\n\n mariadbEnvMapping: Type.Optional(Type.Record(Type.String(), Type.Any())),\n postgresqlEnvMapping: Type.Optional(Type.Record(Type.String(), Type.Any())),\n mongodbEnvMapping: Type.Optional(Type.Record(Type.String(), Type.Any())),\n\n manifest: Type.Optional(Type.Record(Type.String(), Type.Any())),\n serviceManifest: Type.Optional(Type.Record(Type.String(), Type.Any())),\n httpRouteManifest: Type.Optional(Type.Record(Type.String(), Type.Any())),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n\n mariadb: {\n entity: mariadbEntity,\n required: false,\n },\n postgresql: {\n entity: postgresqlEntity,\n required: false,\n },\n mongodb: {\n entity: mongodbEntity,\n required: false,\n },\n resticRepo: {\n entity: repoEntity,\n required: false,\n },\n dnsProvider: {\n entity: providerEntity,\n required: false,\n },\n },\n\n outputs: {\n deployment: deploymentEntity,\n service: serviceEntity,\n },\n\n secrets: {\n mariadbPassword: Type.Optional(Type.String()),\n postgresqlPassword: Type.Optional(Type.String()),\n mongodbPassword: Type.Optional(Type.String()),\n },\n\n meta: {\n displayName: \"Kubernetes Deployment\",\n description: \"A generic Kubernetes deployment with optional service and gateway routes.\",\n primaryIcon: \"mdi:kubernetes\",\n secondaryIcon: \"mdi:cube-outline\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"deployment\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport {\n accessPointEntity,\n clusterEntity,\n persistentVolumeClaimEntity,\n serviceEntity,\n} from \"../k8s\"\nimport { repoEntity } from \"../restic\"\n\nexport const backupModeSchema = Type.Union([Type.Literal(\"metadata\"), Type.Literal(\"full\")])\n\nexport const syncthing = defineUnit({\n type: \"apps.syncthing\",\n\n args: {\n fqdn: Type.String(),\n deviceFqdn: Type.Optional(Type.String()),\n appName: Type.Optional(Type.String()),\n backupMode: Type.Optional({ ...backupModeSchema, default: \"metadata\" }),\n },\n\n inputs: {\n accessPoint: accessPointEntity,\n k8sCluster: clusterEntity,\n resticRepo: {\n entity: repoEntity,\n required: false,\n },\n volume: {\n entity: persistentVolumeClaimEntity,\n required: false,\n },\n },\n\n outputs: {\n service: serviceEntity,\n volume: persistentVolumeClaimEntity,\n },\n\n meta: {\n displayName: \"Syncthing\",\n description: \"The Syncthing instance deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:syncthing\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"syncthing\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport {\n accessPointEntity,\n clusterEntity,\n persistentVolumeClaimEntity,\n statefulSetEntity,\n} from \"../k8s\"\nimport { repoEntity } from \"../restic\"\n\nexport const codeServer = defineUnit({\n type: \"apps.code-server\",\n\n args: {\n fqdn: Type.String(),\n appName: Type.Optional(Type.String()),\n },\n\n secrets: {\n password: Type.Optional(Type.String()),\n sudoPassword: Type.Optional(Type.String()),\n },\n\n inputs: {\n accessPoint: accessPointEntity,\n k8sCluster: clusterEntity,\n resticRepo: {\n entity: repoEntity,\n required: false,\n },\n volume: {\n entity: persistentVolumeClaimEntity,\n required: false,\n },\n },\n\n outputs: {\n statefulSet: statefulSetEntity,\n volume: persistentVolumeClaimEntity,\n },\n\n meta: {\n displayName: \"Code Server\",\n description: \"The Code Server instance deployed on Kubernetes.\",\n primaryIcon: \"material-icon-theme:vscode\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"code-server\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { providerEntity } from \"./dns\"\n\nexport const connection = defineUnit({\n type: \"cloudflare.connection\",\n\n secrets: {\n apiToken: Type.String(),\n },\n\n outputs: {\n dnsProvider: providerEntity,\n },\n\n meta: {\n displayName: \"Cloudflare Connection\",\n description: \"Creates a new Cloudflare connection for one zone.\",\n primaryIcon: \"simple-icons:cloudflare\",\n },\n\n source: {\n package: \"@highstate/cloudflare\",\n path: \"connection\",\n },\n})\n","import { defineUnit } from \"@highstate/contract\"\nimport { Type } from \"@sinclair/typebox\"\nimport { serverEntity } from \"./common\"\nimport { clusterEntity, sharedClusterArgs } from \"./k8s\"\nimport { providerEntity } from \"./dns\"\n\nexport const cluster = defineUnit({\n type: \"k3s.cluster\",\n\n args: {\n ...sharedClusterArgs,\n config: Type.Optional(Type.Record(Type.String(), Type.Any())),\n },\n\n inputs: {\n server: serverEntity,\n dnsProviders: {\n entity: providerEntity,\n required: false,\n multiple: true,\n },\n },\n\n outputs: {\n k8sCluster: clusterEntity,\n },\n\n meta: {\n displayName: \"K3s Cluster\",\n description: \"The K3s cluster created on top of the server.\",\n category: \"k3s\",\n primaryIcon: \"devicon:k3s\",\n secondaryIcon: \"devicon:kubernetes\",\n },\n\n source: {\n package: \"@highstate/k3s\",\n path: \"cluster\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { networkEntity, peerEntity } from \"./wireguard\"\n\nexport const endpointType = Type.Union([\n Type.Literal(\"fqdn\"),\n Type.Literal(\"ipv4\"),\n Type.Literal(\"ipv6\"),\n])\n\nexport const peer = defineUnit({\n type: \"mullvad.peer\",\n\n args: {\n hostname: Type.Optional(Type.String()),\n endpointType: Type.Optional({ ...endpointType, default: \"fqdn\" }),\n },\n\n inputs: {\n /**\n * The network to use for the WireGuard peer.\n *\n * If not provided, the peer will use default network configuration.\n */\n network: {\n entity: networkEntity,\n required: false,\n },\n },\n\n outputs: {\n peer: peerEntity,\n },\n\n meta: {\n displayName: \"Mullvad Peer\",\n description: \"The Mullvad WireGuard peer fetched from the Mullvad API.\",\n primaryIcon: \"simple-icons:mullvad\",\n secondaryIcon: \"cib:wireguard\",\n secondaryIconColor: \"#88171a\",\n },\n\n source: {\n package: \"@highstate/mullvad\",\n path: \"peer\",\n },\n})\n","import { defineEntity, defineUnit, Type } from \"@highstate/contract\"\nimport { serverEntity } from \"./common\"\nimport { keyPairEntity } from \"./ssh\"\n\nexport const connectionEntity = defineEntity({\n type: \"timeweb.connection\",\n\n schema: Type.Object({\n name: Type.String(),\n apiToken: Type.String(),\n }),\n})\n\nexport const connection = defineUnit({\n type: \"timeweb.connection\",\n\n secrets: {\n apiToken: Type.String(),\n },\n\n outputs: {\n connection: connectionEntity,\n },\n\n meta: {\n displayName: \"Timeweb Connection\",\n description: \"Creates a new Timeweb connection.\",\n primaryIcon: \"material-symbols:cloud\",\n },\n\n source: {\n package: \"@highstate/timeweb\",\n path: \"connection\",\n },\n})\n\nexport const virtualMachine = defineUnit({\n type: \"timeweb.virtual-machine\",\n\n args: {\n presetId: Type.Optional(Type.Number()),\n osId: Type.Optional(Type.Number()),\n availabilityZone: Type.String(),\n },\n\n inputs: {\n connection: connectionEntity,\n sshKeyPair: {\n entity: keyPairEntity,\n required: false,\n },\n },\n\n secrets: {\n sshPrivateKey: Type.Optional(Type.String()),\n },\n\n outputs: {\n server: serverEntity,\n },\n\n meta: {\n displayName: \"Timeweb Virtual Machine\",\n description: \"Creates a new Timeweb virtual machine.\",\n primaryIcon: \"material-symbols:cloud\",\n secondaryIcon: \"codicon:vm\",\n },\n\n source: {\n package: \"@highstate/timeweb\",\n path: \"virtual-machine\",\n },\n})\n","import { defineEntity, defineUnit, Type } from \"@highstate/contract\"\nimport { fileEntity, serverEntity } from \"./common\"\n\nexport const inlineModuleEntity = defineEntity({\n type: \"nixos.inline-module\",\n\n schema: Type.Object({\n code: Type.String(),\n }),\n\n meta: {\n displayName: \"NixOS Inline Module\",\n description: \"The NixOS module reference.\",\n color: \"#5277c3\",\n },\n})\n\nexport const inlineModule = defineUnit({\n type: \"nixos.inline-module\",\n\n args: {\n code: Type.String({ language: \"nix\" }),\n },\n\n inputs: {\n files: {\n entity: fileEntity,\n required: false,\n multiple: true,\n },\n },\n\n outputs: {\n module: inlineModuleEntity,\n },\n\n meta: {\n displayName: \"NixOS Inline Module\",\n description: \"Creates a NixOS module from inline code.\",\n primaryIcon: \"simple-icons:nixos\",\n primaryIconColor: \"#7ebae4\",\n secondaryIcon: \"mdi:file-code\",\n },\n\n source: {\n package: \"@highstate/nixos\",\n path: \"inline-module\",\n },\n})\n\nexport const flakeEntity = defineEntity({\n type: \"nixos.flake\",\n\n schema: Type.Object({\n url: Type.String(),\n }),\n\n meta: {\n displayName: \"NixOS Flake\",\n description: \"The NixOS flake reference.\",\n color: \"#5277c3\",\n },\n})\n\nexport const remoteFlake = defineUnit({\n type: \"nixos.remote-flake\",\n\n args: {\n url: Type.String(),\n },\n\n outputs: {\n flake: flakeEntity,\n },\n\n meta: {\n displayName: \"NixOS Remote Flake\",\n description: \"References a remote NixOS flake.\",\n primaryIcon: \"simple-icons:nixos\",\n primaryIconColor: \"#7ebae4\",\n secondaryIcon: \"simple-icons:git\",\n secondaryIconColor: \"#f1502f\",\n },\n\n source: {\n package: \"@highstate/nixos\",\n path: \"flake\",\n },\n})\n\nexport const inlineFlake = defineUnit({\n type: \"nixos.inline-flake\",\n\n args: {\n code: Type.String({ language: \"nix\" }),\n },\n\n inputs: {\n flakes: {\n entity: flakeEntity,\n required: false,\n multiple: true,\n },\n modules: {\n entity: inlineModuleEntity,\n required: false,\n multiple: true,\n },\n files: {\n entity: fileEntity,\n required: false,\n multiple: true,\n },\n },\n\n outputs: {\n flake: flakeEntity,\n },\n\n meta: {\n displayName: \"NixOS Inline Flake\",\n description: \"Creates a NixOS flake from inline code.\",\n primaryIcon: \"simple-icons:nixos\",\n primaryIconColor: \"#7ebae4\",\n secondaryIcon: \"mdi:file-code\",\n },\n\n source: {\n package: \"@highstate/nixos\",\n path: \"inline-flake\",\n },\n})\n\nexport const system = defineUnit({\n type: \"nixos.system\",\n\n args: {\n system: Type.Optional(Type.String()),\n },\n\n inputs: {\n flake: flakeEntity,\n server: serverEntity,\n modules: {\n entity: inlineModuleEntity,\n required: false,\n multiple: true,\n },\n },\n\n outputs: {\n server: serverEntity,\n },\n\n meta: {\n displayName: \"NixOS System\",\n description: \"Creates a NixOS system on top of any server.\",\n primaryIcon: \"simple-icons:nixos\",\n primaryIconColor: \"#7ebae4\",\n secondaryIcon: \"codicon:vm\",\n },\n\n source: {\n package: \"@highstate/nixos\",\n path: \"system\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { fileEntity, serverEntity } from \"./common\"\n\nexport const secrets = defineUnit({\n type: \"sops.secrets\",\n\n args: {\n secrets: Type.Record(Type.String(), Type.Any()),\n },\n\n inputs: {\n servers: {\n entity: serverEntity,\n required: false,\n multiple: true,\n },\n },\n\n outputs: {\n file: fileEntity,\n },\n\n meta: {\n displayName: \"SOPS Secrets\",\n description: \"Encrypts secrets using SOPS for the specified servers.\",\n primaryIcon: \"mdi:file-lock\",\n },\n\n source: {\n package: \"@highstate/sops\",\n path: \"secrets\",\n },\n})\n"],"mappings":"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","names":["defineEntity","defineUnit","Type","defineEntity","Type","defineUnit","defineEntity","defineUnit","Type","defineEntity","Type","defineUnit","clusterEntity","defineEntity","defineUnit","Type","defineEntity","defineUnit","Type","Type","defineEntity","clusterEntity","defineUnit","clusterEntity","defineEntity","defineUnit","Type","clusterEntity","defineEntity","Type","defineUnit","defineEntity","defineUnit","Type","Type","defineEntity","defineUnit","clusterEntity","defineEntity","defineUnit","Type","defineEntity","defineUnit","Type","defineEntity","Type","defineUnit","clusterEntity","defineEntity","defineUnit","Type","defineEntity","Type","defineUnit","clusterEntity","defineUnit","Type","defineUnit","Type","clusterEntity","defineUnit","Type","defineUnit","Type","clusterEntity","defineUnit","Type","defineUnit","Type","clusterEntity","defineUnit","Type","defineUnit","Type","clusterEntity","defineUnit","Type","defineUnit","Type","clusterEntity","defineEntity","defineUnit","Type","defineEntity","Type","defineUnit","clusterEntity","defineUnit","Type","defineUnit","Type","clusterEntity","defineUnit","Type","Type","defineUnit","clusterEntity","defineUnit","Type","defineUnit","Type","clusterEntity","connection","defineUnit","Type","connection","defineUnit","Type","cluster","defineUnit","Type","cluster","defineUnit","Type","clusterEntity","peer","defineUnit","Type","Type","peer","defineUnit","connection","virtualMachine","defineEntity","defineUnit","Type","defineEntity","Type","connection","defineUnit","virtualMachine","defineEntity","defineUnit","Type","defineEntity","Type","defineUnit","defineUnit","Type","defineUnit","Type"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@highstate/library",
3
- "version": "0.7.11",
3
+ "version": "0.8.0",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist",
@@ -19,12 +19,12 @@
19
19
  "build": "highstate build --library"
20
20
  },
21
21
  "dependencies": {
22
- "@highstate/contract": "^0.7.11",
22
+ "@highstate/contract": "^0.8.0",
23
23
  "@sinclair/typebox": "^0.34.11",
24
24
  "remeda": "^2.21.0"
25
25
  },
26
26
  "devDependencies": {
27
- "@highstate/cli": "^0.7.11"
27
+ "@highstate/cli": "^0.8.0"
28
28
  },
29
- "gitHead": "f425f2be2d5800fdee3512c848129adab1b0186e"
29
+ "gitHead": "8590eea089a016c9b4b797299fc94ddc9afe10ba"
30
30
  }
package/src/k3s.ts CHANGED
@@ -1,16 +1,24 @@
1
1
  import { defineUnit } from "@highstate/contract"
2
+ import { Type } from "@sinclair/typebox"
2
3
  import { serverEntity } from "./common"
3
4
  import { clusterEntity, sharedClusterArgs } from "./k8s"
5
+ import { providerEntity } from "./dns"
4
6
 
5
7
  export const cluster = defineUnit({
6
8
  type: "k3s.cluster",
7
9
 
8
10
  args: {
9
11
  ...sharedClusterArgs,
12
+ config: Type.Optional(Type.Record(Type.String(), Type.Any())),
10
13
  },
11
14
 
12
15
  inputs: {
13
16
  server: serverEntity,
17
+ dnsProviders: {
18
+ entity: providerEntity,
19
+ required: false,
20
+ multiple: true,
21
+ },
14
22
  },
15
23
 
16
24
  outputs: {
package/src/k8s.ts CHANGED
@@ -6,6 +6,9 @@ export const clusterInfoSchema = Type.Object({
6
6
  name: Type.String(),
7
7
  cni: Type.Optional(Type.String()),
8
8
  externalIps: Type.Array(Type.String()),
9
+ fqdn: Type.Optional(Type.String()),
10
+ kubeApiServerIp: Type.Optional(Type.String()),
11
+ kubeApiServerPort: Type.Optional(Type.Number()),
9
12
  })
10
13
 
11
14
  export const serviceTypeSchema = Type.StringEnum(["NodePort", "LoadBalancer", "ClusterIP"])
@@ -168,15 +171,16 @@ export const tlsIssuerEntity = defineEntity({
168
171
  })
169
172
 
170
173
  export const accessPointEntity = defineEntity({
171
- type: "common.access-point",
174
+ type: "k8s.access-point",
175
+
172
176
  schema: Type.Object({
173
177
  gateway: gatewayEntity.schema,
174
178
  tlsIssuer: tlsIssuerEntity.schema,
175
- dnsProvider: providerEntity.schema,
179
+ dnsProviders: Type.Array(providerEntity.schema),
176
180
  }),
177
181
 
178
182
  meta: {
179
- color: "#FFC107",
183
+ color: "#F57F17",
180
184
  },
181
185
  })
182
186
 
@@ -186,7 +190,10 @@ export const accessPoint = defineUnit({
186
190
  inputs: {
187
191
  gateway: gatewayEntity,
188
192
  tlsIssuer: tlsIssuerEntity,
189
- dnsProvider: providerEntity,
193
+ dnsProviders: {
194
+ entity: providerEntity,
195
+ multiple: true,
196
+ },
190
197
  },
191
198
 
192
199
  outputs: {
@@ -231,9 +238,23 @@ export const certManager = defineUnit({
231
238
  export const dns01TlsIssuer = defineUnit({
232
239
  type: "k8s.dns01-issuer",
233
240
 
241
+ args: {
242
+ /**
243
+ * The top-level domains to filter the DNS01 challenge for.
244
+ *
245
+ * If not provided, will use all domains passed to the DNS providers.
246
+ *
247
+ * @schema
248
+ */
249
+ domains: Type.Optional(Type.Array(Type.String())),
250
+ },
251
+
234
252
  inputs: {
235
253
  k8sCluster: clusterEntity,
236
- dnsProvider: providerEntity,
254
+ dnsProviders: {
255
+ entity: providerEntity,
256
+ multiple: true,
257
+ },
237
258
  },
238
259
 
239
260
  outputs: {
@@ -333,6 +354,30 @@ export const interfaceEntity = defineEntity({
333
354
  },
334
355
  })
335
356
 
357
+ export const gatewayApi = defineUnit({
358
+ type: "k8s.gateway-api",
359
+
360
+ inputs: {
361
+ k8sCluster: clusterEntity,
362
+ },
363
+
364
+ outputs: {
365
+ k8sCluster: clusterEntity,
366
+ },
367
+
368
+ meta: {
369
+ displayName: "Gateway API",
370
+ description: "Installs the Gateway API CRDs to the cluster.",
371
+ primaryIcon: "mdi:kubernetes",
372
+ primaryIconColor: "#4CAF50",
373
+ },
374
+
375
+ source: {
376
+ package: "@highstate/k8s",
377
+ path: "units/gateway-api",
378
+ },
379
+ })
380
+
336
381
  export type ClusterInfo = Static<typeof clusterInfoSchema>
337
382
  export type Cluster = Static<typeof clusterEntity.schema>
338
383
 
package/src/wireguard.ts CHANGED
@@ -357,11 +357,21 @@ export const identity = defineUnit({
357
357
  * The FQDN of the WireGuard identity.
358
358
  * Will be used as endpoint for the peer.
359
359
  *
360
- * If `dnsProvider` is provided and `externalIp` is available, the FQDN will be registered automatically.
360
+ * If `dnsProvider` is provided, external IP is available and `registerFqdn` is set to `true`, and FQDN is provided explicitly (not obtained from the k8s cluster),
361
+ * the FQDN will be registered with the DNS provider.
361
362
  *
362
363
  * @schema
363
364
  */
364
365
  fqdn: Type.Optional(Type.String()),
366
+
367
+ /**
368
+ * Whether to register the FQDN of the identity with the DNS provider.
369
+ *
370
+ * By default, `true`.
371
+ *
372
+ * @schema
373
+ */
374
+ registerFqdn: Type.Default(Type.Boolean(), true),
365
375
  },
366
376
 
367
377
  secrets: {
@@ -410,6 +420,16 @@ export const identity = defineUnit({
410
420
  required: false,
411
421
  },
412
422
 
423
+ /**
424
+ * The Kubernetes cluster associated with the identity.
425
+ *
426
+ * If provided, will be used to obtain the external IP or FQDN of the identity.
427
+ */
428
+ k8sCluster: {
429
+ entity: clusterEntity,
430
+ required: false,
431
+ },
432
+
413
433
  dnsProvider: {
414
434
  entity: providerEntity,
415
435
  required: false,