diff --git a/core/installer/welcome/env.go b/core/installer/welcome/env.go
index 67e51d9..ab1504d 100644
--- a/core/installer/welcome/env.go
+++ b/core/installer/welcome/env.go
@@ -181,12 +181,13 @@
 	}
 	r.CommitAndPush("initialize config")
 	nsGen := installer.NewPrefixGenerator(req.Name + "-")
+	suffixGen := installer.NewEmptySuffixGenerator()
 	{
 		app, err := appsRepo.Find("metallb-config-env")
 		if err != nil {
 			return err
 		}
-		if err := appManager.Install(*app, nsGen, map[string]any{
+		if err := appManager.Install(*app, nsGen, suffixGen, map[string]any{
 			"IngressPrivate": "10.1.0.1",
 			"Headscale":      "10.1.0.2",
 			"SoftServe":      "10.1.0.3",
@@ -203,7 +204,7 @@
 		if err != nil {
 			return err
 		}
-		if err := appManager.Install(*app, nsGen, map[string]any{}); err != nil {
+		if err := appManager.Install(*app, nsGen, suffixGen, map[string]any{}); err != nil {
 			return err
 		}
 	}
@@ -212,7 +213,7 @@
 		if err != nil {
 			return err
 		}
-		if err := appManager.Install(*app, nsGen, map[string]any{}); err != nil {
+		if err := appManager.Install(*app, nsGen, suffixGen, map[string]any{}); err != nil {
 			return err
 		}
 	}
@@ -221,7 +222,7 @@
 		if err != nil {
 			return err
 		}
-		if err := appManager.Install(*app, nsGen, map[string]any{
+		if err := appManager.Install(*app, nsGen, suffixGen, map[string]any{
 			"Subdomain": "test", // TODO(giolekva): make core-auth chart actually use this
 		}); err != nil {
 			return err
@@ -232,7 +233,7 @@
 		if err != nil {
 			return err
 		}
-		if err := appManager.Install(*app, nsGen, map[string]any{
+		if err := appManager.Install(*app, nsGen, suffixGen, map[string]any{
 			"Subdomain": "headscale",
 		}); err != nil {
 			return err
@@ -254,7 +255,7 @@
 		if err != nil {
 			return err
 		}
-		if err := appManager.Install(*app, nsGen, map[string]any{
+		if err := appManager.Install(*app, nsGen, suffixGen, map[string]any{
 			"RepoAddr":      ss.GetRepoAddress(req.Name),
 			"SSHPrivateKey": keys.Private,
 		}); err != nil {
diff --git a/core/installer/welcome/welcome.go b/core/installer/welcome/welcome.go
index d34580f..ac13f06 100644
--- a/core/installer/welcome/welcome.go
+++ b/core/installer/welcome/welcome.go
@@ -95,7 +95,8 @@
 		if err != nil {
 			return err
 		}
-		nsGen := installer.NewPrefixGenerator(config.Values.Id + "-")
+		nsGen := installer.NewPrefixGenerator(config.Values.NamespacePrefix)
+		suffixGen := installer.NewEmptySuffixGenerator()
 		appManager, err := installer.NewAppManager(s.repo, s.nsCreator)
 		if err != nil {
 			return err
@@ -106,7 +107,7 @@
 			if err != nil {
 				return err
 			}
-			if err := appManager.Install(*app, nsGen, map[string]any{
+			if err := appManager.Install(*app, nsGen, suffixGen, map[string]any{
 				"GandiAPIToken": req.GandiAPIToken,
 			}); err != nil {
 				return err
@@ -117,7 +118,7 @@
 			if err != nil {
 				return err
 			}
-			if err := appManager.Install(*app, nsGen, map[string]any{
+			if err := appManager.Install(*app, nsGen, suffixGen, map[string]any{
 				"Username": req.Username,
 				"IPSubnet": "10.1.0.0/24", // TODO(giolekva): this should be taken from the config generated during new env creation
 			}); err != nil {
