// create a vultr instance meant for capturing VODs

// load secrets from file
// @see https://stackoverflow.com/a/67653301/1004931
output "secrets" {
  value = { for tuple in regexall("(.*?)=(.*)", file("../../.kamal/secrets-common")) : tuple[0] => tuple[1] }
}

resource "random_id" "blah" {
  byte_length = 8
}

terraform {
    required_providers {
        vultr = {
            source = "vultr/vultr"
            version = "2.23.1"
        }
    }
}

provider "vultr" {
    api_key = secrets.VULTR_API_KEY
}

resource "vultr_instance" "capture_vps" {
    label           = "fp-capture-${random_id.blah.hex}"
    plan            = "vc2-2c-2gb"
    region          = "atl"
    backups         = "disabled"
    ddos_protection = "false"
    os_id           = 1743
    enable_ipv6     = true

    user_data = base64encode(<<-EOT
      #cloud-config

      package_update: true
      packages:
        - git
        - mosh
        - mg
        - screen
        - tree
        - ncdu
        - pipx
        - ffmpeg
        - fd-find
        - npm

      runcmd:
        - git clone https://github.com/insanity54/dotfiles /root/dotfiles
        - cp /root/dotfiles/.screenrc /root/
        - curl -fsSL https://getcroc.schollz.com | bash
        - curl -fsSL get.docker.com | bash
        - ufw allow 60000:61000/udp
        - pipx install yt-dlp
        - pipx ensurepath
        - git clone https://github.com/insanity54/voddo /root/voddo
        - curl -fsSL https://gitea.futureporn.net/futureporn/fp/raw/branch/main/packages/scripts/thumbnail-generator.sh > ~/.local/bin/thumbnail-generator.sh
        - chmod +x ~/.local/bin/thumbnail-generator.sh
        - curl -fsSL https://github.com/Backblaze/B2_Command_Line_Tool/releases/download/v4.3.1/b2-linux > ~/.local/bin/b2
        - chmod +x ~/.local/bin/b2
        - export DIR=/usr/local/bin; curl https://raw.githubusercontent.com/jesseduffield/lazydocker/master/scripts/install_update_linux.sh | bash
        - curl -fsSL https://dist.ipfs.tech/kubo/v0.33.2/kubo_v0.33.2_linux-amd64.tar.gz > ~/kubo_v0.33.2_linux-amd64.tar.gz
        - tar xvzf ~/kubo_v0.33.2_linux-amd64.tar.gz
        - ~/kubo/install.sh
        - ufw allow 8080
        - ufw allow 8081
        - ufw allow 4001

    EOT
    )
}