@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.
- package/dist/highstate.manifest.json +1 -1
- package/dist/index.js +112 -37
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
- package/src/k3s.ts +8 -0
- package/src/k8s.ts +50 -5
- package/src/wireguard.ts +21 -1
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: "
|
592
|
+
type: "k8s.access-point",
|
589
593
|
schema: Type5.Object({
|
590
594
|
gateway: gatewayEntity.schema,
|
591
595
|
tlsIssuer: tlsIssuerEntity.schema,
|
592
|
-
|
596
|
+
dnsProviders: Type5.Array(providerEntity.schema)
|
593
597
|
}),
|
594
598
|
meta: {
|
595
|
-
color: "#
|
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
|
-
|
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
|
-
|
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 `
|
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 \`
|
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
|
2134
|
-
var endpointType =
|
2135
|
-
|
2136
|
-
|
2137
|
-
|
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:
|
2143
|
-
endpointType:
|
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
|
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:
|
2183
|
-
name:
|
2184
|
-
apiToken:
|
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:
|
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:
|
2209
|
-
osId:
|
2210
|
-
availabilityZone:
|
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:
|
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
|
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:
|
2251
|
-
code:
|
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:
|
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:
|
2289
|
-
url:
|
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:
|
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:
|
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:
|
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
|
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:
|
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.
|
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.
|
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.
|
27
|
+
"@highstate/cli": "^0.8.0"
|
28
28
|
},
|
29
|
-
"gitHead": "
|
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: "
|
174
|
+
type: "k8s.access-point",
|
175
|
+
|
172
176
|
schema: Type.Object({
|
173
177
|
gateway: gatewayEntity.schema,
|
174
178
|
tlsIssuer: tlsIssuerEntity.schema,
|
175
|
-
|
179
|
+
dnsProviders: Type.Array(providerEntity.schema),
|
176
180
|
}),
|
177
181
|
|
178
182
|
meta: {
|
179
|
-
color: "#
|
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
|
-
|
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
|
-
|
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 `
|
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,
|