installer: migrate apps to cuelang
diff --git a/core/installer/values-tmpl/headscale.cue b/core/installer/values-tmpl/headscale.cue
new file mode 100644
index 0000000..21dbb75
--- /dev/null
+++ b/core/installer/values-tmpl/headscale.cue
@@ -0,0 +1,68 @@
+input: {
+	subdomain: string
+}
+
+images: {
+	headscale: {
+		repository: "headscale"
+		name: "headscale"
+		tag: "0.22.3"
+		pullPolicy: "IfNotPresent"
+	}
+	api: {
+		repository: "giolekva"
+		name: "headscale-api"
+		tag: "latest"
+		pullPolicy: "Always"
+	}
+}
+
+charts: {
+	headscale: {
+		chart: "charts/headscale"
+		sourceRef: {
+			kind: "GitRepository"
+			name: "pcloud"
+			namespace: global.id
+		}
+	}
+}
+
+helm: {
+	headscale: {
+		chart: charts.headscale
+		dependsOnExternal: [{
+			name: "auth"
+			namespace: "\(global.namespacePrefix)core-auth"
+		}]
+		values: {
+			image: {
+				repository: images.headscale.fullName
+				tag: images.headscale.tag
+				pullPolicy: images.headscale.pullPolicy
+			}
+			storage: size: "5Gi"
+			ingressClassName: _ingressPublic
+			certificateIssuer: _issuerPublic
+			domain: "\(input.subdomain).\(global.domain)"
+			publicBaseDomain: global.domain
+			oauth2: {
+				hydraAdmin: "http://hydra-admin.\(global.namespacePrefix)core-auth.svc.cluster.local"
+				hydraPublic: "https://hydra.\(global.domain)"
+				clientId: "headscale"
+				secretName: "oauth2-client-headscale"
+			}
+			ipAddressPool: "\(global.id)-headscale"
+			api: {
+				port: 8585
+				rootDomain: global.domain
+				image: {
+					repository: images.api.fullName
+					tag: images.api.tag
+					pullPolicy: images.api.pullPolicy
+				}
+			}
+			ui: enabled: false
+		}
+	}
+}