variable "litestream_version" {
  type    = string
  default = "v0.3.13"
}

variable "spin_shim_version" {
  type    = string
  default = "v0.17.0"
}

variable "control_plane_k3s_version" {
  type    = string
  default = "v1.32.1+k3s1"
}

variable "worker_k3s_version" {
  type    = string
  default = "v1.32.1+k3s1"
}

variable "forgejo_runner_version" {
  type    = string
  default = "6.3.1"
}

variable "forgejo_instance_url" {
  type    = string
  default = "https://code.icb4dc0.de"
}

variable "k3s_sans" {
  type = list(string)
}

variable "k3s_control_plane" {
  type = map(object({
    server_type = string
    generation  = number
    private_ip  = string
    location    = string
    alias_ips   = set(string)
  }))
}

variable "k3s_workers" {
  type = map(object({
    server_type = string
    generation  = number
    private_ip  = string
    location    = string
  }))
}

variable "forgejo_runners" {
  type = map(object({
    server_type = string
    generation  = number
    private_ip  = string
    location    = string
  }))
}

variable "ssh_keys" {
  type        = list(string)
  default     = []
  description = "Additional SSH public keys for user 'core'."
}

variable "flatcar_release_channel" {
  type        = string
  description = "Release channel"
  default     = "stable"

  validation {
    condition     = contains(["lts", "stable", "beta", "alpha"], var.flatcar_release_channel)
    error_message = "release_channel must be lts, stable, beta, or alpha."
  }
}