feat(code-server): add machine settings option (#105)

Reimplements the changes in https://github.com/coder/registry/pull/88
with the manual version bump to 1.1.0
This commit is contained in:
djarbz 2025-05-16 09:37:27 -05:00 committed by GitHub
parent 22a8b2614b
commit 0149b34006
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 28 additions and 8 deletions

View File

@ -15,7 +15,7 @@ Automatically install [code-server](https://github.com/coder/code-server) in a w
module "code-server" { module "code-server" {
count = data.coder_workspace.me.start_count count = data.coder_workspace.me.start_count
source = "registry.coder.com/coder/code-server/coder" source = "registry.coder.com/coder/code-server/coder"
version = "1.1.0" version = "1.2.0"
agent_id = coder_agent.example.id agent_id = coder_agent.example.id
} }
``` ```
@ -30,7 +30,7 @@ module "code-server" {
module "code-server" { module "code-server" {
count = data.coder_workspace.me.start_count count = data.coder_workspace.me.start_count
source = "registry.coder.com/coder/code-server/coder" source = "registry.coder.com/coder/code-server/coder"
version = "1.1.0" version = "1.2.0"
agent_id = coder_agent.example.id agent_id = coder_agent.example.id
install_version = "4.8.3" install_version = "4.8.3"
} }
@ -44,7 +44,7 @@ Install the Dracula theme from [OpenVSX](https://open-vsx.org/):
module "code-server" { module "code-server" {
count = data.coder_workspace.me.start_count count = data.coder_workspace.me.start_count
source = "registry.coder.com/coder/code-server/coder" source = "registry.coder.com/coder/code-server/coder"
version = "1.1.0" version = "1.2.0"
agent_id = coder_agent.example.id agent_id = coder_agent.example.id
extensions = [ extensions = [
"dracula-theme.theme-dracula" "dracula-theme.theme-dracula"
@ -62,7 +62,7 @@ Configure VS Code's [settings.json](https://code.visualstudio.com/docs/getstarte
module "code-server" { module "code-server" {
count = data.coder_workspace.me.start_count count = data.coder_workspace.me.start_count
source = "registry.coder.com/coder/code-server/coder" source = "registry.coder.com/coder/code-server/coder"
version = "1.1.0" version = "1.2.0"
agent_id = coder_agent.example.id agent_id = coder_agent.example.id
extensions = ["dracula-theme.theme-dracula"] extensions = ["dracula-theme.theme-dracula"]
settings = { settings = {
@ -79,7 +79,7 @@ Just run code-server in the background, don't fetch it from GitHub:
module "code-server" { module "code-server" {
count = data.coder_workspace.me.start_count count = data.coder_workspace.me.start_count
source = "registry.coder.com/coder/code-server/coder" source = "registry.coder.com/coder/code-server/coder"
version = "1.1.0" version = "1.2.0"
agent_id = coder_agent.example.id agent_id = coder_agent.example.id
extensions = ["dracula-theme.theme-dracula", "ms-azuretools.vscode-docker"] extensions = ["dracula-theme.theme-dracula", "ms-azuretools.vscode-docker"]
} }
@ -95,7 +95,7 @@ Run an existing copy of code-server if found, otherwise download from GitHub:
module "code-server" { module "code-server" {
count = data.coder_workspace.me.start_count count = data.coder_workspace.me.start_count
source = "registry.coder.com/coder/code-server/coder" source = "registry.coder.com/coder/code-server/coder"
version = "1.1.0" version = "1.2.0"
agent_id = coder_agent.example.id agent_id = coder_agent.example.id
use_cached = true use_cached = true
extensions = ["dracula-theme.theme-dracula", "ms-azuretools.vscode-docker"] extensions = ["dracula-theme.theme-dracula", "ms-azuretools.vscode-docker"]
@ -108,7 +108,7 @@ Just run code-server in the background, don't fetch it from GitHub:
module "code-server" { module "code-server" {
count = data.coder_workspace.me.start_count count = data.coder_workspace.me.start_count
source = "registry.coder.com/coder/code-server/coder" source = "registry.coder.com/coder/code-server/coder"
version = "1.1.0" version = "1.2.0"
agent_id = coder_agent.example.id agent_id = coder_agent.example.id
offline = true offline = true
} }

View File

@ -44,6 +44,12 @@ variable "settings" {
default = {} default = {}
} }
variable "machine-settings" {
type = any
description = "A map of template level machine settings to apply to code-server. This will be overwritten at each container start."
default = {}
}
variable "folder" { variable "folder" {
type = string type = string
description = "The folder to open in code-server." description = "The folder to open in code-server."
@ -149,6 +155,7 @@ resource "coder_script" "code-server" {
INSTALL_PREFIX : var.install_prefix, INSTALL_PREFIX : var.install_prefix,
// This is necessary otherwise the quotes are stripped! // This is necessary otherwise the quotes are stripped!
SETTINGS : replace(jsonencode(var.settings), "\"", "\\\""), SETTINGS : replace(jsonencode(var.settings), "\"", "\\\""),
MACHINE_SETTINGS : replace(jsonencode(var.machine-settings), "\"", "\\\""),
OFFLINE : var.offline, OFFLINE : var.offline,
USE_CACHED : var.use_cached, USE_CACHED : var.use_cached,
USE_CACHED_EXTENSIONS : var.use_cached_extensions, USE_CACHED_EXTENSIONS : var.use_cached_extensions,

View File

@ -23,7 +23,20 @@ function run_code_server() {
if [ ! -f ~/.local/share/code-server/User/settings.json ]; then if [ ! -f ~/.local/share/code-server/User/settings.json ]; then
echo "⚙️ Creating settings file..." echo "⚙️ Creating settings file..."
mkdir -p ~/.local/share/code-server/User mkdir -p ~/.local/share/code-server/User
echo "${SETTINGS}" > ~/.local/share/code-server/User/settings.json if command -v jq &> /dev/null; then
echo "${SETTINGS}" | jq '.' > ~/.local/share/code-server/User/settings.json
else
echo "${SETTINGS}" > ~/.local/share/code-server/User/settings.json
fi
fi
# Apply/overwrite template based settings
echo "⚙️ Creating machine settings file..."
mkdir -p ~/.local/share/code-server/Machine
if command -v jq &> /dev/null; then
echo "${MACHINE_SETTINGS}" | jq '.' > ~/.local/share/code-server/Machine/settings.json
else
echo "${MACHINE_SETTINGS}" > ~/.local/share/code-server/Machine/settings.json
fi fi
# Check if code-server is already installed for offline # Check if code-server is already installed for offline