diff --git a/.icons/git.svg b/.icons/git.svg
new file mode 100644
index 0000000..ceef116
--- /dev/null
+++ b/.icons/git.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/git-clone/README.md b/git-clone/README.md
new file mode 100644
index 0000000..ef6cbce
--- /dev/null
+++ b/git-clone/README.md
@@ -0,0 +1,46 @@
+---
+display_name: Git Clone
+description: Clone a Git repository by URL and skip if it exists.
+icon: ../.icons/git.svg
+maintainer_github: coder
+verified: true
+tags: [git, helper]
+---
+# Git Clone
+
+This module allows you to automatically clone a repository by URL and skip if it
+exists in the path provided.
+
+## Examples
+
+1. Add only GPU zones in the US West 1 region:
+
+ ```hcl
+ module "gcp_region" {
+ source = "https://registry.coder.com/modules/gcp-region"
+ default = ["us-west1-a"]
+ regions = ["us-west1"]
+ gpu_only = false
+ }
+ ```
+
+2. Add all zones in the Europe West region:
+
+ ```hcl
+ module "gcp_region" {
+ source = "https://registry.coder.com/modules/gcp-region"
+ regions = ["europe-west"]
+ single_zone_per_region = false
+ }
+ ```
+
+3. Add a single zone from each region in US and Europe that laos has GPUs
+
+ ```hcl
+ module "gcp_region" {
+ source = "https://registry.coder.com/modules/gcp-region"
+ regions = ["us", "europe"]
+ gpu_only = true
+ single_zone_per_region = true
+ }
+ ```
diff --git a/git-clone/main.tf b/git-clone/main.tf
new file mode 100644
index 0000000..e1e9be4
--- /dev/null
+++ b/git-clone/main.tf
@@ -0,0 +1,37 @@
+terraform {
+ required_version = ">= 1.0"
+
+ required_providers {
+ coder = {
+ source = "coder/coder"
+ version = ">= 0.11"
+ }
+ }
+}
+
+variable "url" {
+ description = "The URL of the Git repository."
+ type = string
+}
+
+variable "path" {
+ default = ""
+ description = "The path to clone the repository. Defaults to \"$HOME/\"."
+ type = string
+}
+
+variable "agent_id" {
+ description = "The ID of a Coder agent."
+ type = string
+}
+
+resource "coder_script" "git_clone" {
+ agent_id = var.agent_id
+ display_name = "Git Clone"
+ icon = "/icons/git.svg"
+ script = templatefile("${path.module}/run.sh", {
+ CLONE_PATH: var.path != "" ? var.path : join("/", ["~", basename(var.url)]),
+ REPO_URL: var.url,
+ })
+ run_on_start = true
+}
diff --git a/git-clone/run.sh b/git-clone/run.sh
new file mode 100755
index 0000000..1fee8da
--- /dev/null
+++ b/git-clone/run.sh
@@ -0,0 +1,38 @@
+#!/usr/bin/env sh
+
+REPO_URL="${REPO_URL}"
+CLONE_PATH="${CLONE_PATH}"
+# Expand home if it's specified!
+CLONE_PATH="$${CLONE_PATH/#\~/$${HOME}}"
+
+# Check if the variable is empty...
+if [ -z "$REPO_URL" ]; then
+ echo "No repository specified!"
+ exit 1
+fi
+
+# Check if the variable is empty...
+if [ -z "$CLONE_PATH" ]; then
+ echo "No clone path specified!"
+ exit 1
+fi
+
+# Check if `git` is installed...
+if ! command -v git >/dev/null; then
+ echo "Git is not installed!"
+ exit 1
+fi
+
+# Check if the directory exists...
+if [ ! -d "$CLONE_PATH" ]; then
+ echo "Creating directory $CLONE_PATH..."
+ mkdir -p "$CLONE_PATH"
+else
+ echo "$CLONE_PATH already exists, skipping clone!"
+ exit 0
+fi
+
+# Clone the repository...
+echo "Cloning $REPO_URL to $CLONE_PATH..."
+git clone "$REPO_URL" "$CLONE_PATH"
+