terraform { required_providers { coder = { source = "coder/coder" } docker = { source = "kreuzwerker/docker" } } } data "coder_parameter" "php_version" { name = "PHP Version" description = "Select the PHP version for your workspace." type = "string" default = "82" option { name = "PHP 8.2" value = "82" } option { name = "PHP 8.0" value = "80" } option { name = "PHP 7.4" value = "74" } } data "coder_parameter" "node_version" { name = "Node.js Version" description = "Select the Node.js version for your workspace." type = "string" default = "22" option { name = "Node 22" value = "22" } option { name = "Node 20" value = "20" } option { name = "Node 18" value = "18" } } module "php_workspace" { source = "git::https://git.bobert.me/anthorob/coder-templates.git//coder-base?ref=main" docker_image = "registry.bobert.me/anthorob/coder-images:php${data.coder_parameter.php_version.value}" language_metadata = [ { display_name = "PHP Version" key = "php_version" script = "php -v | head -n 1 | cut -d ' ' -f 2" interval = 60 timeout = 1 }, { display_name = "Node.js Version" key = "node_version" script = "node -v || echo 'Node not installed'" interval = 60 timeout = 1 } ] language_startup_script = <<-EOT echo $(php -v) export NVM_DIR="/home/coder/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" nvm install ${data.coder_parameter.node_version.value} nvm use ${data.coder_parameter.node_version.value} echo "Node version set to $(node -v)" EOT vscode_extensions = [ "bmewburn.vscode-intelephense-client", "felixfbecker.php-debug", "mehedidracula.php-namespace-resolver", "dbaeumer.vscode-eslint", "mikestead.dotenv", "christian-kohler.path-intellisense", "ms-vscode.vscode-typescript-tslint-plugin", ] vscode_settings = { "php.validate.executablePath" = "/usr/bin/php" } jetbrains_ides = ["PS"] jetbrains_default = "PS" }