🖥️ Coder Base Module
This module provides the shared logic and workspace provisioning foundation for my Coder templates using Docker containers.
It is designed to be imported and reused by language-specific templates to standardize configuration and reduce duplication
📦 Features
-
🐳 Containerized Workspaces
- Provisions Docker containers using a specified image
-
💻 Remote IDE Support
- VS Code Server with configurable extensions and settings
- JetBrains Gateway support with selectable IDEs (IntelliJ, PhpStorm, etc.)
-
🧰 Custom Tooling Support
- Startup scripts to initialize language environments
-
🔃 Optional Git Repo Clone
- Clones a user-specified repository into
~/repoduring provisioning
- Clones a user-specified repository into
📁 File Structure
coder-base/
├── main.tf # Main logic for provisioning the workspace
├── variables.tf # Input variables for customization
├── outputs.tf # Variables available to use in templates
🔧 Inputs
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
docker_image |
string |
Docker image to use for the workspace | n/a | ✅ Yes |
vscode_extensions |
list(string) |
List of VS Code extensions to install | [] |
❌ No |
vscode_settings |
map(string) |
Key-value VS Code settings | {} |
❌ No |
jetbrains_ides |
list(string) |
JetBrains IDEs to enable (e.g., ["IU", "PS"]) |
["IU"] |
✅ Yes |
jetbrains_default |
string |
Default JetBrains IDE to launch | "IU" |
✅ Yes |
docker_socket |
string |
Optional Docker socket override | "" |
❌ No |
repo_url |
string |
Git repository to clone into ~/repo |
"" |
❌ No |
language_startup_script |
string |
Startup shell script executed on container boot | "" |
❌ No |
language_metadata |
list(object) |
Custom metadata blocks shown in Coder UI (e.g. versions) | [] |
❌ No |
Each language_metadata object includes:
{
display_name = string
key = string
script = string
interval = number
timeout = number
}