diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..66df410 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.terraform* \ No newline at end of file diff --git a/.icons/dotfiles.svg b/.icons/dotfiles.svg new file mode 100644 index 0000000..c57ef85 --- /dev/null +++ b/.icons/dotfiles.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/dotfiles/README.md b/dotfiles/README.md new file mode 100644 index 0000000..096c74e --- /dev/null +++ b/dotfiles/README.md @@ -0,0 +1,12 @@ +--- +display_name: Dotfiles +description: Allow developers to optionally bring their own dotfiles repository to customize their shell and IDE settings! +icon: ../.icons/dotfiles.svg +maintainer_github: coder +verified: true +tags: [helper] +--- + +# Dotfiles + +Allow developers to optionally bring their own [dotfiles repository](https://dotfiles.github.io)! Under the hood, this module uses the [coder dotfiles](https://coder.com/docs/v2/latest/dotfiles) command. diff --git a/dotfiles/main.tf b/dotfiles/main.tf new file mode 100644 index 0000000..c1479eb --- /dev/null +++ b/dotfiles/main.tf @@ -0,0 +1,37 @@ +terraform { + required_version = ">= 1.0" + + required_providers { + coder = { + source = "coder/coder" + version = ">= 0.12" + } + } +} + +variable "agent_id" { + type = string + description = "The ID of a Coder agent." +} + +data "coder_parameter" "dotfiles_uri" { + type = "string" + display_name = "Dotfiles URL (optional)" + default = "" + description = "Enter a URL for a [dotfiles repository](https://dotfiles.github.io) to personalize your workspace" + mutable = true + icon = "https://raw.githubusercontent.com/jglovier/dotfiles-logo/main/dotfiles-logo-icon.svg" +} + +resource "coder_script" "personalize" { + agent_id = var.agent_id + script = <<-EOT + DOTFILES_URI="${data.coder_parameter.dotfiles_uri.value}" + if [ -n "$${DOTFILES_URI// }" ]; then + coder dotfiles "$DOTFILES_URI" -y 2>&1 | tee -a ~/.dotfiles.log + fi + EOT + display_name = "Dotfiles" + icon = "https://raw.githubusercontent.com/jglovier/dotfiles-logo/main/dotfiles-logo-icon.svg" + run_on_start = true +}