@@ -175,7 +175,6 @@ locals {
175
175
], [" us-pittsburgh" ])[0 ]
176
176
}
177
177
178
-
179
178
data "coder_parameter" "region" {
180
179
type = " string"
181
180
name = " Region"
@@ -277,6 +276,74 @@ data "coder_workspace_tags" "tags" {
277
276
}
278
277
}
279
278
279
+ data "coder_parameter" "ide_choices" {
280
+ type = " list(string)"
281
+ name = " Select IDEs"
282
+ form_type = " multi-select"
283
+ mutable = true
284
+ description = " Choose one or more IDEs to enable in your workspace"
285
+ default = jsonencode ([" vscode" , " code-server" , " cursor" ])
286
+ option {
287
+ name = " VS Code Desktop"
288
+ value = " vscode"
289
+ icon = " /icon/code.svg"
290
+ }
291
+ option {
292
+ name = " code-server"
293
+ value = " code-server"
294
+ icon = " /icon/code.svg"
295
+ }
296
+ option {
297
+ name = " VS Code Web"
298
+ value = " vscode-web"
299
+ icon = " /icon/code.svg"
300
+ }
301
+ option {
302
+ name = " JetBrains IDEs"
303
+ value = " jetbrains"
304
+ icon = " /icon/jetbrains.svg"
305
+ }
306
+ option {
307
+ name = " JetBrains Fleet"
308
+ value = " fleet"
309
+ icon = " /icon/fleet.svg"
310
+ }
311
+ option {
312
+ name = " Cursor"
313
+ value = " cursor"
314
+ icon = " /icon/cursor.svg"
315
+ }
316
+ option {
317
+ name = " Windsurf"
318
+ value = " windsurf"
319
+ icon = " /icon/windsurf.svg"
320
+ }
321
+ option {
322
+ name = " Zed"
323
+ value = " zed"
324
+ icon = " /icon/zed.svg"
325
+ }
326
+ }
327
+
328
+ data "coder_parameter" "vscode_channel" {
329
+ count = contains (jsondecode (data. coder_parameter . ide_choices . value ), " vscode" ) ? 1 : 0
330
+ type = " string"
331
+ name = " VS Code Desktop channel"
332
+ description = " Choose the VS Code Desktop channel"
333
+ mutable = true
334
+ default = " stable"
335
+ option {
336
+ value = " stable"
337
+ name = " Stable"
338
+ icon = " /icon/code.svg"
339
+ }
340
+ option {
341
+ value = " insiders"
342
+ name = " Insiders"
343
+ icon = " /icon/code-insiders.svg"
344
+ }
345
+ }
346
+
280
347
module "slackme" {
281
348
count = data. coder_workspace . me . start_count
282
349
source = " dev.registry.coder.com/coder/slackme/coder"
@@ -309,7 +376,7 @@ module "personalize" {
309
376
}
310
377
311
378
module "code-server" {
312
- count = data. coder_workspace . me . start_count
379
+ count = contains ( jsondecode ( data. coder_parameter . ide_choices . value ), " code-server " ) ? data . coder_workspace . me . start_count : 0
313
380
source = " dev.registry.coder.com/coder/code-server/coder"
314
381
version = " 1.3.1"
315
382
agent_id = coder_agent. dev . id
@@ -319,7 +386,7 @@ module "code-server" {
319
386
}
320
387
321
388
module "vscode-web" {
322
- count = data. coder_workspace . me . start_count
389
+ count = contains ( jsondecode ( data. coder_parameter . ide_choices . value ), " vscode-web " ) ? data . coder_workspace . me . start_count : 0
323
390
source = " dev.registry.coder.com/coder/vscode-web/coder"
324
391
version = " 1.3.1"
325
392
agent_id = coder_agent. dev . id
@@ -331,7 +398,7 @@ module "vscode-web" {
331
398
}
332
399
333
400
module "jetbrains" {
334
- count = data. coder_workspace . me . start_count
401
+ count = contains ( jsondecode ( data. coder_parameter . ide_choices . value ), " jetbrains " ) ? data . coder_workspace . me . start_count : 0
335
402
source = " dev.registry.coder.com/coder/jetbrains/coder"
336
403
version = " 1.0.3"
337
404
agent_id = coder_agent. dev . id
@@ -356,23 +423,23 @@ module "coder-login" {
356
423
}
357
424
358
425
module "cursor" {
359
- count = data. coder_workspace . me . start_count
426
+ count = contains ( jsondecode ( data. coder_parameter . ide_choices . value ), " cursor " ) ? data . coder_workspace . me . start_count : 0
360
427
source = " dev.registry.coder.com/coder/cursor/coder"
361
428
version = " 1.3.0"
362
429
agent_id = coder_agent. dev . id
363
430
folder = local. repo_dir
364
431
}
365
432
366
433
module "windsurf" {
367
- count = data. coder_workspace . me . start_count
434
+ count = contains ( jsondecode ( data. coder_parameter . ide_choices . value ), " windsurf " ) ? data . coder_workspace . me . start_count : 0
368
435
source = " dev.registry.coder.com/coder/windsurf/coder"
369
436
version = " 1.1.1"
370
437
agent_id = coder_agent. dev . id
371
438
folder = local. repo_dir
372
439
}
373
440
374
441
module "zed" {
375
- count = data. coder_workspace . me . start_count
442
+ count = contains ( jsondecode ( data. coder_parameter . ide_choices . value ), " zed " ) ? data . coder_workspace . me . start_count : 0
376
443
source = " dev.registry.coder.com/coder/zed/coder"
377
444
version = " 1.1.0"
378
445
agent_id = coder_agent. dev . id
@@ -381,7 +448,7 @@ module "zed" {
381
448
}
382
449
383
450
module "jetbrains-fleet" {
384
- count = data. coder_workspace . me . start_count
451
+ count = contains ( jsondecode ( data. coder_parameter . ide_choices . value ), " fleet " ) ? data . coder_workspace . me . start_count : 0
385
452
source = " registry.coder.com/coder/jetbrains-fleet/coder"
386
453
version = " 1.0.1"
387
454
agent_id = coder_agent. dev . id
@@ -423,6 +490,11 @@ resource "coder_agent" "dev" {
423
490
}
424
491
startup_script_behavior = " blocking"
425
492
493
+ display_apps {
494
+ vscode = contains (jsondecode (data. coder_parameter . ide_choices . value ), " vscode" ) && try (data. coder_parameter . vscode_channel [0 ]. value , " stable" ) == " stable"
495
+ vscode_insiders = contains (jsondecode (data. coder_parameter . ide_choices . value ), " vscode" ) && try (data. coder_parameter . vscode_channel [0 ]. value , " stable" ) == " insiders"
496
+ }
497
+
426
498
# The following metadata blocks are optional. They are used to display
427
499
# information about your workspace in the dashboard. You can remove them
428
500
# if you don't want to display any information.
0 commit comments