115 lines
2.7 KiB
Terraform
115 lines
2.7 KiB
Terraform
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.4"
|
|
value = "84"
|
|
}
|
|
}
|
|
|
|
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://gitea.bobert.me/anthorob/coder-templates.git//base?ref=main"
|
|
|
|
docker_image = "gitea.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 = "[ -s $NVM_DIR/nvm.sh ] && . $NVM_DIR/nvm.sh && node -v 2>/dev/null || 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 alias default ${data.coder_parameter.node_version.value}
|
|
|
|
# Ensure nvm loads and uses the correct version in future shells
|
|
echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.bashrc
|
|
echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> ~/.bashrc
|
|
echo 'nvm use default &> /dev/null' >> ~/.bashrc
|
|
|
|
echo "Node version set to $(node -v)"
|
|
EOT
|
|
|
|
vscode_extensions = [
|
|
"christian-kohler.path-intellisense",
|
|
"editorconfig.editorconfig",
|
|
"yzhang.markdown-all-in-one",
|
|
"usernamehw.errorlens",
|
|
"wayou.vscode-todo-highlight",
|
|
"oderwat.indent-rainbow",
|
|
"ms-azuretools.vscode-docker",
|
|
"redhat.vscode-yaml",
|
|
"mikestead.dotenv",
|
|
|
|
"bmewburn.vscode-intelephense-client",
|
|
"felixfbecker.php-debug",
|
|
"mehedidracula.php-namespace-resolver",
|
|
"dbaeumer.vscode-eslint",
|
|
"ms-vscode.vscode-typescript-tslint-plugin",
|
|
"laravel.vscode-laravel"
|
|
]
|
|
|
|
vscode_settings = {
|
|
"php.validate.executablePath" = "/usr/bin/php"
|
|
}
|
|
|
|
jetbrains_ides = ["PS"]
|
|
jetbrains_default = ["PS"]
|
|
}
|