From ac15f0cadbb534995829271874df12fddb41664d Mon Sep 17 00:00:00 2001 From: M Atif Ali Date: Wed, 6 Aug 2025 05:10:27 +0000 Subject: [PATCH 1/5] chore(dogfood): add IDE selection parameter Introduce a new multi-select parameter `ide_choices` for selecting IDEs to enable in workspaces. Update modules to configure based on selected IDEs, allowing dynamic workspace customization. Add logic to display or start apps based on selected choices, enhancing flexibility in IDE management. --- dogfood/coder/main.tf | 88 +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 80 insertions(+), 8 deletions(-) diff --git a/dogfood/coder/main.tf b/dogfood/coder/main.tf index c9bd9cb9633c0..dc3bb6ad66ce6 100644 --- a/dogfood/coder/main.tf +++ b/dogfood/coder/main.tf @@ -167,7 +167,6 @@ locals { ], ["us-pittsburgh"])[0] } - data "coder_parameter" "region" { type = "string" name = "Region" @@ -261,6 +260,74 @@ data "coder_workspace_tags" "tags" { } } +data "coder_parameter" "ide_choices" { + type = "list(string)" + name = "Select IDEs" + form_type = "multi-select" + mutable = true + description = "Choose one or more IDEs to enable in your workspace" + default = jsonencode(["vscode", "code-server", "cursor"]) + option { + name = "VS Code Desktop" + value = "vscode" + icon = "/icon/code.svg" + } + option { + name = "code-server" + value = "code-server" + icon = "/icon/code.svg" + } + option { + name = "VS Code Web" + value = "vscode-web" + icon = "/icon/code.svg" + } + option { + name = "JetBrains IDEs" + value = "jetbrains" + icon = "/icon/jetbrains.svg" + } + option { + name = "JetBrains Fleet" + value = "fleet" + icon = "/icon/fleet.svg" + } + option { + name = "Cursor" + value = "cursor" + icon = "/icon/cursor.svg" + } + option { + name = "Windsurf" + value = "windsurf" + icon = "/icon/windsurf.svg" + } + option { + name = "Zed" + value = "zed" + icon = "/icon/zed.svg" + } +} + +data "coder_parameter" "vscode_channel" { + count = contains(jsondecode(data.coder_parameter.ide_choices.value), "vscode") ? data.coder_workspace.me.start_count : 0 + type = "string" + name = "VS Code Desktop channel" + description = "Choose the VS Code Desktop channel" + mutable = true + default = "stable" + option { + value = "stable" + name = "Stable" + icon = "/icon/code.svg" + } + option { + value = "insiders" + name = "Insiders" + icon = "/icon/code-insiders.svg" + } +} + module "slackme" { count = data.coder_workspace.me.start_count source = "dev.registry.coder.com/coder/slackme/coder" @@ -293,7 +360,7 @@ module "personalize" { } module "code-server" { - count = data.coder_workspace.me.start_count + count = contains(jsondecode(data.coder_parameter.ide_choices.value), "code-server") ? data.coder_workspace.me.start_count : 0 source = "dev.registry.coder.com/coder/code-server/coder" version = "1.3.1" agent_id = coder_agent.dev.id @@ -303,7 +370,7 @@ module "code-server" { } module "vscode-web" { - count = data.coder_workspace.me.start_count + count = contains(jsondecode(data.coder_parameter.ide_choices.value), "vscode-web") ? data.coder_workspace.me.start_count : 0 source = "dev.registry.coder.com/coder/vscode-web/coder" version = "1.3.1" agent_id = coder_agent.dev.id @@ -315,7 +382,7 @@ module "vscode-web" { } module "jetbrains" { - count = data.coder_workspace.me.start_count + count = contains(jsondecode(data.coder_parameter.ide_choices.value), "jetbrains") ? data.coder_workspace.me.start_count : 0 source = "dev.registry.coder.com/coder/jetbrains/coder" version = "1.0.0" agent_id = coder_agent.dev.id @@ -340,7 +407,7 @@ module "coder-login" { } module "cursor" { - count = data.coder_workspace.me.start_count + count = contains(jsondecode(data.coder_parameter.ide_choices.value), "cursor") ? data.coder_workspace.me.start_count : 0 source = "dev.registry.coder.com/coder/cursor/coder" version = "1.2.1" agent_id = coder_agent.dev.id @@ -348,7 +415,7 @@ module "cursor" { } module "windsurf" { - count = data.coder_workspace.me.start_count + count = contains(jsondecode(data.coder_parameter.ide_choices.value), "windsurf") ? data.coder_workspace.me.start_count : 0 source = "dev.registry.coder.com/coder/windsurf/coder" version = "1.1.1" agent_id = coder_agent.dev.id @@ -356,7 +423,7 @@ module "windsurf" { } module "zed" { - count = data.coder_workspace.me.start_count + count = contains(jsondecode(data.coder_parameter.ide_choices.value), "zed") ? data.coder_workspace.me.start_count : 0 source = "dev.registry.coder.com/coder/zed/coder" version = "1.0.1" agent_id = coder_agent.dev.id @@ -365,7 +432,7 @@ module "zed" { } module "jetbrains-fleet" { - count = data.coder_workspace.me.start_count + count = contains(jsondecode(data.coder_parameter.ide_choices.value), "fleet") ? data.coder_workspace.me.start_count : 0 source = "registry.coder.com/coder/jetbrains-fleet/coder" version = "1.0.1" agent_id = coder_agent.dev.id @@ -389,6 +456,11 @@ resource "coder_agent" "dev" { } startup_script_behavior = "blocking" + display_apps { + vscode = contains(jsondecode(data.coder_parameter.ide_choices.value), "vscode") && try(data.coder_parameter.vscode_channel[0].value, "") == "stable" + vscode_insiders = contains(jsondecode(data.coder_parameter.ide_choices.value), "vscode") && try(data.coder_parameter.vscode_channel[0].value, "") == "insiders" + } + # The following metadata blocks are optional. They are used to display # information about your workspace in the dashboard. You can remove them # if you don't want to display any information. From 8a4ea25eb527120fdd225fc7007336519911d499 Mon Sep 17 00:00:00 2001 From: Atif Ali Date: Wed, 6 Aug 2025 10:15:25 +0500 Subject: [PATCH 2/5] Update dogfood/coder/main.tf Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- dogfood/coder/main.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dogfood/coder/main.tf b/dogfood/coder/main.tf index dc3bb6ad66ce6..15d9c65359932 100644 --- a/dogfood/coder/main.tf +++ b/dogfood/coder/main.tf @@ -457,8 +457,8 @@ resource "coder_agent" "dev" { startup_script_behavior = "blocking" display_apps { - vscode = contains(jsondecode(data.coder_parameter.ide_choices.value), "vscode") && try(data.coder_parameter.vscode_channel[0].value, "") == "stable" - vscode_insiders = contains(jsondecode(data.coder_parameter.ide_choices.value), "vscode") && try(data.coder_parameter.vscode_channel[0].value, "") == "insiders" + vscode = contains(jsondecode(data.coder_parameter.ide_choices.value), "vscode") && try(data.coder_parameter.vscode_channel[0].value, "stable") == "stable" + vscode_insiders = contains(jsondecode(data.coder_parameter.ide_choices.value), "vscode") && try(data.coder_parameter.vscode_channel[0].value, "stable") == "insiders" } # The following metadata blocks are optional. They are used to display From 5789411d71be6fb47f06526b26e1c4c3c94dd970 Mon Sep 17 00:00:00 2001 From: Atif Ali Date: Thu, 21 Aug 2025 13:15:41 +0500 Subject: [PATCH 3/5] typo --- dogfood/coder/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dogfood/coder/main.tf b/dogfood/coder/main.tf index f20cb9a873189..c860e71e9d781 100644 --- a/dogfood/coder/main.tf +++ b/dogfood/coder/main.tf @@ -492,7 +492,7 @@ resource "coder_agent" "dev" { display_apps { vscode = contains(jsondecode(data.coder_parameter.ide_choices.value), "vscode") && try(data.coder_parameter.vscode_channel[0].value, "stable") == "stable" - vscode_insiders = contains(jsondecode(data.coder_parameter.ide_choices.value), "vscode") && try(data.coder_parameter.vscode_channel[0].value, "stable") == "insiders" + vscode_insiders = contains(jsondecode(data.coder_parameter.ide_choices.value), "vscode") && try(data.coder_parameter.vscode_channel[0].value, "insiders") == "insiders" } # The following metadata blocks are optional. They are used to display From 1123780c4927febe4aee849d7798f1effbe9d381 Mon Sep 17 00:00:00 2001 From: Atif Ali Date: Thu, 21 Aug 2025 13:19:54 +0500 Subject: [PATCH 4/5] Update main.tf --- dogfood/coder/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dogfood/coder/main.tf b/dogfood/coder/main.tf index 3a259bcd22b0a..8a9074a7efd95 100644 --- a/dogfood/coder/main.tf +++ b/dogfood/coder/main.tf @@ -492,7 +492,7 @@ resource "coder_agent" "dev" { display_apps { vscode = contains(jsondecode(data.coder_parameter.ide_choices.value), "vscode") && try(data.coder_parameter.vscode_channel[0].value, "stable") == "stable" - vscode_insiders = contains(jsondecode(data.coder_parameter.ide_choices.value), "vscode") && try(data.coder_parameter.vscode_channel[0].value, "insiders") == "insiders" + vscode_insiders = contains(jsondecode(data.coder_parameter.ide_choices.value), "vscode") && try(data.coder_parameter.vscode_channel[0].value, "stable") == "insiders" } # The following metadata blocks are optional. They are used to display From d709652ba00ef308bccd2e690fd120a69ea5dad4 Mon Sep 17 00:00:00 2001 From: Atif Ali Date: Thu, 21 Aug 2025 13:24:40 +0500 Subject: [PATCH 5/5] apply suggestions --- dogfood/coder/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dogfood/coder/main.tf b/dogfood/coder/main.tf index 8a9074a7efd95..0416317033234 100644 --- a/dogfood/coder/main.tf +++ b/dogfood/coder/main.tf @@ -326,7 +326,7 @@ data "coder_parameter" "ide_choices" { } data "coder_parameter" "vscode_channel" { - count = contains(jsondecode(data.coder_parameter.ide_choices.value), "vscode") ? data.coder_workspace.me.start_count : 0 + count = contains(jsondecode(data.coder_parameter.ide_choices.value), "vscode") ? 1 : 0 type = "string" name = "VS Code Desktop channel" description = "Choose the VS Code Desktop channel" pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy