installer: migrate apps to cuelang
diff --git a/core/installer/tasks/activate.go b/core/installer/tasks/activate.go
index c6506aa..0980dee 100644
--- a/core/installer/tasks/activate.go
+++ b/core/installer/tasks/activate.go
@@ -47,7 +47,7 @@
 		for _, key := range ssPublicKeys {
 			fmt.Fprintf(&knownHosts, "%s %s\n", repoHost, key)
 		}
-		for _, tmpl := range tmpls.Templates() {
+		for _, tmpl := range tmpls.Templates() { // TODO(gio): migrate to cue
 			dstPath := path.Join("environments", env.Name, tmpl.Name())
 			dst, err := st.repo.Writer(dstPath)
 			if err != nil {
diff --git a/core/installer/tasks/infra.go b/core/installer/tasks/infra.go
index 995744c..d7ff235 100644
--- a/core/installer/tasks/infra.go
+++ b/core/installer/tasks/infra.go
@@ -81,7 +81,7 @@
   interval: 1m0s
   url: https://github.com/giolekva/pcloud
   ref:
-    branch: main
+    branch: cuelang
 `, env.Name)
 			if err != nil {
 				return err
@@ -114,29 +114,29 @@
 				return err
 			}
 			if err := st.appManager.Install(*app, st.nsGen, installer.NewSuffixGenerator("-ingress-private"), map[string]any{
-				"Name":       fmt.Sprintf("%s-ingress-private", env.Name),
-				"From":       ingressPrivateIP.String(),
-				"To":         ingressPrivateIP.String(),
-				"AutoAssign": false,
-				"Namespace":  "metallb-system",
+				"name":       fmt.Sprintf("%s-ingress-private", env.Name),
+				"from":       ingressPrivateIP.String(),
+				"to":         ingressPrivateIP.String(),
+				"autoAssign": false,
+				"namespace":  "metallb-system",
 			}); err != nil {
 				return err
 			}
 			if err := st.appManager.Install(*app, st.nsGen, installer.NewSuffixGenerator("-headscale"), map[string]any{
-				"Name":       fmt.Sprintf("%s-headscale", env.Name),
-				"From":       headscaleIP.String(),
-				"To":         headscaleIP.String(),
-				"AutoAssign": false,
-				"Namespace":  "metallb-system",
+				"name":       fmt.Sprintf("%s-headscale", env.Name),
+				"from":       headscaleIP.String(),
+				"to":         headscaleIP.String(),
+				"autoAssign": false,
+				"namespace":  "metallb-system",
 			}); err != nil {
 				return err
 			}
 			if err := st.appManager.Install(*app, st.nsGen, st.emptySuffixGen, map[string]any{
-				"Name":       env.Name,
-				"From":       "10.1.0.100", // TODO(gio): auto-generate
-				"To":         "10.1.0.254",
-				"AutoAssign": false,
-				"Namespace":  "metallb-system",
+				"name":       env.Name,
+				"from":       "10.1.0.100", // TODO(gio): auto-generate
+				"to":         "10.1.0.254",
+				"autoAssign": false,
+				"namespace":  "metallb-system",
 			}); err != nil {
 				return err
 			}
@@ -147,10 +147,10 @@
 				return err
 			}
 			if err := st.appManager.Install(*app, st.nsGen, st.emptySuffixGen, map[string]any{
-				"PrivateNetwork": map[string]any{
-					"Hostname": "private-network-proxy",
-					"Username": "private-network-proxy",
-					"IPSubnet": "10.1.0.0/24",
+				"privateNetwork": map[string]any{
+					"hostname": "private-network-proxy",
+					"username": "private-network-proxy",
+					"ipSubnet": "10.1.0.0/24",
 				},
 			}); err != nil {
 				return err
@@ -178,9 +178,9 @@
 			return err
 		}
 		if err := st.appManager.Install(*app, st.nsGen, st.emptySuffixGen, map[string]any{
-			"APIConfigMap": map[string]any{
-				"Name":      "api-config", // TODO(gio): take from global pcloud config
-				"Namespace": fmt.Sprintf("%s-dns-zone-manager", env.PCloudEnvName),
+			"apiConfigMap": map[string]any{
+				"name":      "api-config", // TODO(gio): take from global pcloud config
+				"namespace": fmt.Sprintf("%s-dns-zone-manager", env.PCloudEnvName),
 			},
 		}); err != nil {
 			return err
@@ -197,7 +197,7 @@
 			return err
 		}
 		if err := st.appManager.Install(*app, st.nsGen, st.emptySuffixGen, map[string]any{
-			"Subdomain": "test", // TODO(giolekva): make core-auth chart actually use this
+			"subdomain": "test", // TODO(giolekva): make core-auth chart actually use this
 		}); err != nil {
 			return err
 		}
@@ -217,7 +217,7 @@
 			return err
 		}
 		if err := st.appManager.Install(*app, st.nsGen, st.emptySuffixGen, map[string]any{
-			"Subdomain": "headscale",
+			"subdomain": "headscale",
 		}); err != nil {
 			return err
 		}
@@ -248,8 +248,8 @@
 			return err
 		}
 		if err := st.appManager.Install(*app, st.nsGen, st.emptySuffixGen, map[string]any{
-			"RepoAddr":      st.ssClient.GetRepoAddress("config"),
-			"SSHPrivateKey": string(keys.RawPrivateKey()),
+			"repoAddr":      st.ssClient.GetRepoAddress("config"),
+			"sshPrivateKey": string(keys.RawPrivateKey()),
 		}); err != nil {
 			return err
 		}
@@ -280,8 +280,8 @@
 			return err
 		}
 		if err := st.appManager.Install(*app, st.nsGen, st.emptySuffixGen, map[string]any{
-			"RepoAddr":      st.ssClient.GetRepoAddress("config"),
-			"SSHPrivateKey": string(keys.RawPrivateKey()),
+			"repoAddr":      st.ssClient.GetRepoAddress("config"),
+			"sshPrivateKey": string(keys.RawPrivateKey()),
 		}); err != nil {
 			return err
 		}
diff --git a/core/installer/tasks/init.go b/core/installer/tasks/init.go
index f3818e3..d41dde7 100644
--- a/core/installer/tasks/init.go
+++ b/core/installer/tasks/init.go
@@ -21,7 +21,7 @@
 func NewCreateConfigRepoTask(env Env, st *state) Task {
 	t := newLeafTask("Install Git server", func() error {
 		appsRepo := installer.NewInMemoryAppRepository(installer.CreateAllApps())
-		ssApp, err := appsRepo.Find("soft-serve")
+		ssApp, err := appsRepo.Find("config-repo")
 		if err != nil {
 			return err
 		}
@@ -35,14 +35,9 @@
 			return err
 		}
 		ssValues := map[string]any{
-			"ChartRepositoryNamespace": env.PCloudEnvName,
-			"ServiceType":              "ClusterIP",
-			"PrivateKey":               string(ssKeys.RawPrivateKey()),
-			"PublicKey":                string(ssKeys.RawAuthorizedKey()),
-			"AdminKey":                 string(ssAdminKeys.RawAuthorizedKey()),
-			"Ingress": map[string]any{
-				"Enabled": false,
-			},
+			"privateKey": string(ssKeys.RawPrivateKey()),
+			"publicKey":  string(ssKeys.RawAuthorizedKey()),
+			"adminKey":   string(ssAdminKeys.RawAuthorizedKey()),
 		}
 		derived := installer.Derived{
 			Global: installer.Values{