variable "SELF_REGISTRY" {
    validation {
        condition     = SELF_REGISTRY != ""
        error_message = "The SELF_REGISTRY must be a valid Docker registry path."
    }
}

variable "ROOT_CA_CERT_PEM" {
    validation {
        condition     = ROOT_CA_CERT_PEM != ""
        error_message = "The ROOT_CA_CERT_PEM Must be present."
    }
}

variable "DOCKER_BAKE_PULL" {
    default = true
}

group "default" {
    targets = [
        "nextcloud-aio-talk",
        "nextcloud-aio-talk-recording",
        "nextcloud-aio-imaginary",
        "nextcloud-whiteboard",
        "nextcloud-aio-collabora",
        "nextcloud-aio-fulltextsearch",
        "qbittorrent-nox",
        "redis-8-10-0",
        "jellyfin",
        "embyserver",
        "node-26-trixie",
        "eclipse-temurin-26-0-2-10-jre",
        "eclipse-temurin-26-0-2-10-jdk",
        "rust-1-97-1-trixie",
        "python-3-14-8-trixie",
        "httpd-2-4-68-trixie",
        "debian-trixie",
        "ubuntu-26-04",
        "postgres-18-6-trixie",
        "homepage",
        "nginx-proxy-manager",
        "minio-minio-community",
        "open-webui",
        "ollama",
        "code-server",
        "caddy",
        "glance",
        "glances",
        "navidrome",
        "vikunja",
        "uv",
    ]
}

# https://github.com/nextcloud-releases/all-in-one/pkgs/container/aio-talk?tag=20260929_105435
variable "NEXTCLOUD_AIO_TALK_VERSION" {
    default = "20260929_105435"
}
target "nextcloud-aio-talk" {
    context    = "./resources/containers/dockerfiles/nextcloud-aio-talk"
    dockerfile = "Dockerfile"
    platforms = ["linux/amd64", "linux/arm64"]
    tags = ["${SELF_REGISTRY}/nextcloud-aio-talk:${NEXTCLOUD_AIO_TALK_VERSION}", "${SELF_REGISTRY}/nextcloud-aio-talk:latest"]
    pull = DOCKER_BAKE_PULL
    output = ["type=registry"]
    cache-from = [
        { type = "registry", ref = "${SELF_REGISTRY}/nextcloud-aio-talk:cache" }
    ]
    cache-to = [
        { type = "registry", ref = "${SELF_REGISTRY}/nextcloud-aio-talk:cache", mode = "max" }
    ]
    args = {
        "NEXTCLOUD_AIO_TALK_IMAGE_REFERENCE" = "ghcr.io/nextcloud-releases/aio-talk@sha256:831a08f9772d188e65aee2fb59ef3785d3567a1fe2fb65f0e6fd2c17a16ffc87"
    }
}

# https://github.com/nextcloud-releases/all-in-one/pkgs/container/aio-talk-recording?tag=20260929_105435
variable "NEXTCLOUD_AIO_TALK_RECORDING_VERSION" {
    default = "20260929_105435"
}
target "nextcloud-aio-talk-recording" {
    context    = "./resources/containers/dockerfiles/nextcloud-aio-talk-recording"
    dockerfile = "Dockerfile"
    platforms = ["linux/amd64", "linux/arm64"]
    tags = ["${SELF_REGISTRY}/nextcloud-aio-talk-recording:${NEXTCLOUD_AIO_TALK_RECORDING_VERSION}", "${SELF_REGISTRY}/nextcloud-aio-talk-recording:latest"]
    pull = DOCKER_BAKE_PULL
    output = ["type=registry"]
    cache-from = [
        { type = "registry", ref = "${SELF_REGISTRY}/nextcloud-aio-talk-recording:cache" }
    ]
    cache-to = [
        { type = "registry", ref = "${SELF_REGISTRY}/nextcloud-aio-talk-recording:cache", mode = "max" }
    ]
    args = {
        "NEXTCLOUD_AIO_TALK_RECORDING_IMAGE_REFERENCE" = "ghcr.io/nextcloud-releases/aio-talk-recording@sha256:64aa51b0279a4ab5c16249ad1e8f5e56b572ffee3947f14b64386429bc9c6696"
    }
}

# https://github.com/nextcloud-releases/all-in-one/pkgs/container/aio-imaginary?tag=20260929_105435
variable "NEXTCLOUD_AIO_IMAGINARY_VERSION" {
    default = "20260929_105435"
}
target "nextcloud-aio-imaginary" {
    context    = "./resources/containers/dockerfiles/nextcloud-aio-imaginary"
    dockerfile = "Dockerfile"
    platforms = ["linux/amd64", "linux/arm64"]
    tags = ["${SELF_REGISTRY}/nextcloud-aio-imaginary:${NEXTCLOUD_AIO_IMAGINARY_VERSION}", "${SELF_REGISTRY}/nextcloud-aio-imaginary:latest"]
    pull = DOCKER_BAKE_PULL
    output = ["type=registry"]
    cache-from = [
        { type = "registry", ref = "${SELF_REGISTRY}/nextcloud-aio-imaginary:cache" }
    ]
    cache-to = [
        { type = "registry", ref = "${SELF_REGISTRY}/nextcloud-aio-imaginary:cache", mode = "max" }
    ]
    args = {
        "NEXTCLOUD_AIO_IMAGINARY_IMAGE_REFERENCE" = "ghcr.io/nextcloud-releases/aio-imaginary@sha256:0e32abf8b2198e53b6395983e2c046dad53d82cfd2ad227d731425f6296f1cf9"
    }
}

# https://github.com/nextcloud-releases/whiteboard/pkgs/container/whiteboard?tag=v2.0.0
variable "NEXTCLOUD_WHITEBOARD_VERSION" {
    default = "v2.0.0"
}
target "nextcloud-whiteboard" {
    context    = "./resources/containers/dockerfiles/nextcloud-whiteboard"
    dockerfile = "Dockerfile"
    platforms = ["linux/amd64", "linux/arm64"]
    tags = ["${SELF_REGISTRY}/nextcloud-whiteboard:${NEXTCLOUD_WHITEBOARD_VERSION}", "${SELF_REGISTRY}/nextcloud-whiteboard:latest"]
    pull = DOCKER_BAKE_PULL
    output = ["type=registry"]
    cache-from = [
        { type = "registry", ref = "${SELF_REGISTRY}/nextcloud-whiteboard:cache" }
    ]
    cache-to = [
        { type = "registry", ref = "${SELF_REGISTRY}/nextcloud-whiteboard:cache", mode = "max" }
    ]
    args = {
        "NEXTCLOUD_WHITEBOARD_IMAGE_REFERENCE" = "ghcr.io/nextcloud-releases/whiteboard@sha256:059596633333d009890c64858f89f133ccd973a2e0823ad960a0cc05cf8657f1"
    }
}

# https://github.com/nextcloud-releases/all-in-one/pkgs/container/aio-collabora?tag=20260929_105435
variable "NEXTCLOUD_AIO_COLLABORA_VERSION" {
    default = "20260929_105435"
}
target "nextcloud-aio-collabora" {
    context    = "./resources/containers/dockerfiles/nextcloud-aio-collabora"
    dockerfile = "Dockerfile"
    platforms = ["linux/amd64", "linux/arm64"]
    tags = ["${SELF_REGISTRY}/nextcloud-aio-collabora:${NEXTCLOUD_AIO_COLLABORA_VERSION}", "${SELF_REGISTRY}/nextcloud-aio-collabora:latest"]
    pull = DOCKER_BAKE_PULL
    output = ["type=registry"]
    cache-from = [
        { type = "registry", ref = "${SELF_REGISTRY}/nextcloud-aio-collabora:cache" }
    ]
    cache-to = [
        { type = "registry", ref = "${SELF_REGISTRY}/nextcloud-aio-collabora:cache", mode = "max" }
    ]
    args = {
        "NEXTCLOUD_AIO_COLLABORA_IMAGE_REFERENCE" = "ghcr.io/nextcloud-releases/aio-collabora@sha256:f964ee93b5d32f134671e9695ba9ec09d9c2f92d08110338737e186ad92ee36b"
    }
}

# https://github.com/nextcloud-releases/all-in-one/pkgs/container/aio-fulltextsearch?tag=20260929_105435
variable "NEXTCLOUD_AIO_FULLTEXTSEARCH_VERSION" {
    default = "20260929_105435"
}
target "nextcloud-aio-fulltextsearch" {
    context    = "./resources/containers/dockerfiles/nextcloud-aio-fulltextsearch"
    dockerfile = "Dockerfile"
    platforms = ["linux/amd64", "linux/arm64"]
    tags = ["${SELF_REGISTRY}/nextcloud-aio-fulltextsearch:${NEXTCLOUD_AIO_FULLTEXTSEARCH_VERSION}", "${SELF_REGISTRY}/nextcloud-aio-fulltextsearch:latest"]
    pull = DOCKER_BAKE_PULL
    output = ["type=registry"]
    cache-from = [
        {
            type = "registry", ref = "${SELF_REGISTRY}/nextcloud-aio-fulltextsearch:cache"
        }
    ]
    cache-to = [
        {
            type = "registry", ref = "${SELF_REGISTRY}/nextcloud-aio-fulltextsearch:cache",
            mode = "max"
        }
    ]
    args = {
        "NEXTCLOUD_AIO_FULLTEXTSEARCH_IMAGE_REFERENCE" = "ghcr.io/nextcloud-releases/aio-fulltextsearch@sha256:eee87620af1a8bbfaab972ab9950e791cc3c08a9879f151b2ea5d6813cd5e8e5"
    }
}

# https://hub.docker.com/layers/qbittorrentofficial/qbittorrent-nox/5.2.4-lt2-1/images/sha256-f3f7ae6679270fa4f2ab724c6c87dc5471beb6fade88861ce7ad834048ab6c26
variable "QBITTORRENT_NOX_VERSION" {
    default = "5.2.4-lt2-1"
}
target "qbittorrent-nox" {
    context    = "./resources/containers/dockerfiles/qbittorrent-nox"
    dockerfile = "Dockerfile"
    platforms = ["linux/amd64", "linux/arm64"]
    tags = ["${SELF_REGISTRY}/qbittorrent-nox:${QBITTORRENT_NOX_VERSION}", "${SELF_REGISTRY}/qbittorrent-nox:latest"]
    pull = DOCKER_BAKE_PULL
    output = ["type=registry"]
    cache-from = [
        {
            type = "registry", ref = "${SELF_REGISTRY}/qbittorrent-nox:cache"
        }
    ]
    cache-to = [
        {
            type = "registry", ref = "${SELF_REGISTRY}/qbittorrent-nox:cache",
            mode = "max"
        }
    ]
    args = {
        "QBITTORRENT_NOX_IMAGE_REFERENCE" = "docker.io/qbittorrentofficial/qbittorrent-nox@sha256:f3f7ae6679270fa4f2ab724c6c87dc5471beb6fade88861ce7ad834048ab6c26"
    }
}

# https://hub.docker.com/layers/library/redis/8.10.0-trixie/images/sha256-344e3945a0b431c8ff1eecd58c5573538126bd756f02fc7e218ddf1fc2546366
target "redis-8-10-0" {
    context    = "./resources/containers/dockerfiles/redis"
    dockerfile = "Dockerfile"
    platforms = ["linux/amd64", "linux/arm64"]
    tags = ["${SELF_REGISTRY}/redis:8.10.0-trixie", "${SELF_REGISTRY}/redis:trixie"]
    pull = DOCKER_BAKE_PULL
    output = ["type=registry"]
    cache-from = [
        { type = "registry", ref = "${SELF_REGISTRY}/redis:trixie-cache" }
    ]
    cache-to = [
        { type = "registry", ref = "${SELF_REGISTRY}/redis:trixie-cache", mode = "max" }
    ]
    args = {
        "REDIS_IMAGE_REFERENCE" = "docker.io/library/redis@sha256:344e3945a0b431c8ff1eecd58c5573538126bd756f02fc7e218ddf1fc2546366"
    }
}

# https://hub.docker.com/layers/jellyfin/jellyfin/12.2/images/sha256-357724bf0ae27a672c7cbaa899db2d9abeb13dbd8657ccce750258a4c059d037
variable "JELLYFIN_VERSION" {
    default = "12.2"
}

target "jellyfin" {
    context    = "./resources/containers/dockerfiles/jellyfin/"
    dockerfile = "Dockerfile"
    platforms = ["linux/amd64", "linux/arm64"]
    tags = ["${SELF_REGISTRY}/jellyfin:${JELLYFIN_VERSION}", "${SELF_REGISTRY}/jellyfin:latest"]
    pull = DOCKER_BAKE_PULL
    output = ["type=registry"]
    cache-from = [
        { type = "registry", ref = "${SELF_REGISTRY}/jellyfin:cache" }
    ]
    cache-to = [
        { type = "registry", ref = "${SELF_REGISTRY}/jellyfin:cache", mode = "max" }
    ]
    args = {
        "JELLYFIN_IMAGE_REFERENCE" = "docker.io/jellyfin/jellyfin@sha256:357724bf0ae27a672c7cbaa899db2d9abeb13dbd8657ccce750258a4c059d037"
    }
}

# https://hub.docker.com/layers/library/node/26.7.0-trixie/images/sha256-40fd8249a701dab7431d15074ac4cf4f1c18eecd713807599cd76a7a6caad48b
target "node-26-trixie" {
    context    = "./resources/containers/dockerfiles/node"
    dockerfile = "Dockerfile"
    platforms = ["linux/amd64", "linux/arm64"]
    tags = ["${SELF_REGISTRY}/node:26.7.0-trixie", "${SELF_REGISTRY}/node:trixie"]
    pull = DOCKER_BAKE_PULL
    output = ["type=registry"]
    cache-from = [
        { type = "registry", ref = "${SELF_REGISTRY}/node:trixie-cache" }
    ]
    cache-to = [
        { type = "registry", ref = "${SELF_REGISTRY}/node:trixie-cache", mode = "max" }
    ]
    args = {
        "NODE_IMAGE_REFERENCE" = "docker.io/library/node@sha256:40fd8249a701dab7431d15074ac4cf4f1c18eecd713807599cd76a7a6caad48b"
    }
}

# https://hub.docker.com/layers/openwebui/open-webui/0.11.4/images/sha256-9591b13f13843c7721c2b8eaf7382846c81b3ffe126526d1888d1fed50c6a33f
variable "OPEN_WEB_UI_VERSION" {
    default = "0.11.4"
}
target "open-webui" {
    context    = "./resources/containers/dockerfiles/open-webui"
    dockerfile = "Dockerfile"
    platforms = ["linux/amd64", "linux/arm64"]
    tags = ["${SELF_REGISTRY}/open-webui:${OPEN_WEB_UI_VERSION}", "${SELF_REGISTRY}/open-webui:latest"]
    pull = DOCKER_BAKE_PULL
    output = ["type=registry"]
    cache-from = [
        { type = "registry", ref = "${SELF_REGISTRY}/open-webui:cache" }
    ]
    cache-to = [
        { type = "registry", ref = "${SELF_REGISTRY}/open-webui:cache", mode = "max" }
    ]
    args = {
        "ROOT_CA_CERT_PEM" = ROOT_CA_CERT_PEM
        "OPEN_WEB_UI_CONTAINER_IMAGE_REFERENCE" = "docker.io/openwebui/open-webui@sha256:9591b13f13843c7721c2b8eaf7382846c81b3ffe126526d1888d1fed50c6a33f"
    }
}

# https://hub.docker.com/layers/library/eclipse-temurin/26.0.2_10-jre/images/sha256-3c3133e536beae571d43cc3611a9e9aaeb5e8d035f6da83557817ccc77cc5ab8
target "eclipse-temurin-26-0-2-10-jre" {
    context    = "./resources/containers/dockerfiles/eclipse-temurin"
    dockerfile = "Dockerfile"
    platforms = ["linux/amd64", "linux/arm64"]
    tags = ["${SELF_REGISTRY}/eclipse-temurin:26.0.2_10-jre", "${SELF_REGISTRY}/eclipse-temurin:latest-jre"]
    pull = DOCKER_BAKE_PULL
    output = ["type=registry"]
    cache-from = [
        { type = "registry", ref = "${SELF_REGISTRY}/eclipse-temurin:cache" }
    ]
    cache-to = [
        { type = "registry", ref = "${SELF_REGISTRY}/eclipse-temurin:cache", mode = "max" }
    ]
    args = {
        "ECLIPSE_TEMURIN_IMAGE_REFERENCE" = "docker.io/library/eclipse-temurin@sha256:3c3133e536beae571d43cc3611a9e9aaeb5e8d035f6da83557817ccc77cc5ab8"
    }
}

# https://hub.docker.com/layers/library/eclipse-temurin/26.0.2_10-jdk/images/sha256-3e708ab839f1fc71a85197818330d352aa66cf7ba2f8331e4a2ab8732cb18c77
target "eclipse-temurin-26-0-2-10-jdk" {
    context    = "./resources/containers/dockerfiles/eclipse-temurin"
    dockerfile = "Dockerfile"
    platforms = ["linux/amd64", "linux/arm64"]
    tags = ["${SELF_REGISTRY}/eclipse-temurin:26.0.2_10-jdk", "${SELF_REGISTRY}/eclipse-temurin:latest-jdk"]
    pull = DOCKER_BAKE_PULL
    output = ["type=registry"]
    cache-from = [
        { type = "registry", ref = "${SELF_REGISTRY}/eclipse-temurin:cache" }
    ]
    cache-to = [
        { type = "registry", ref = "${SELF_REGISTRY}/eclipse-temurin:cache", mode = "max" }
    ]
    args = {
        "ECLIPSE_TEMURIN_IMAGE_REFERENCE" = "docker.io/library/eclipse-temurin@sha256:3e708ab839f1fc71a85197818330d352aa66cf7ba2f8331e4a2ab8732cb18c77"
    }
}

# https://hub.docker.com/layers/emby/embyserver/4.10.1.0/images/sha256-997e8c1ea1fde7d303eb455143e7be77dc4f20cb06acb11ffdcbcfaa87186ec2
variable "EMBY_SERVER_VERSION" {
    default = "4.10.1.0"
}
target "embyserver" {
    context    = "./resources/containers/dockerfiles/embyserver"
    dockerfile = "Dockerfile"
    platforms = ["linux/amd64", "linux/arm64"] # https://www.reddit.com/r/emby/comments/1r8zltx/emby_arm_docker_repository_and_tag
    tags = ["${SELF_REGISTRY}/embyserver:${EMBY_SERVER_VERSION}", "${SELF_REGISTRY}/embyserver:latest"]
    pull = DOCKER_BAKE_PULL
    output = ["type=registry"]
    cache-from = [
        { type = "registry", ref = "${SELF_REGISTRY}/embyserver:cache" }
    ]
    cache-to = [
        { type = "registry", ref = "${SELF_REGISTRY}/embyserver:cache", mode = "max" }
    ]
    args = {
        "EMBY_SERVER_IMAGE_REFERENCE" = "docker.io/emby/embyserver@sha256:997e8c1ea1fde7d303eb455143e7be77dc4f20cb06acb11ffdcbcfaa87186ec2"
    }
}

# https://hub.docker.com/layers/library/rust/1.97.1-trixie/images/sha256-b1b3c9c0d921d7fa0a6d1f9ec7e4eab87f8c8ec97644c3d791450f131dec813f
target "rust-1-97-1-trixie" {
    context    = "./resources/containers/dockerfiles/rust"
    dockerfile = "Dockerfile"
    platforms = ["linux/amd64", "linux/arm64"]
    tags = ["${SELF_REGISTRY}/rust:1.97.1-trixie", "${SELF_REGISTRY}/rust:trixie"]
    pull = DOCKER_BAKE_PULL
    output = ["type=registry"]
    cache-from = [
        { type = "registry", ref = "${SELF_REGISTRY}/rust:trixie-cache" }
    ]
    cache-to = [
        { type = "registry", ref = "${SELF_REGISTRY}/rust:trixie-cache", mode = "max" }
    ]
    args = {
        "RUST_IMAGE_REFERENCE" = "docker.io/library/rust@sha256:b1b3c9c0d921d7fa0a6d1f9ec7e4eab87f8c8ec97644c3d791450f131dec813f"
    }
}

# https://hub.docker.com/layers/library/python/3.14.8-trixie/images/sha256-a11116e648ddd8a05e1120014c8e6ac259f718040b67e2dcd6a7c0b7bab3ff2c
target "python-3-14-8-trixie" {
    context    = "./resources/containers/dockerfiles/python"
    dockerfile = "Dockerfile"
    platforms = ["linux/amd64", "linux/arm64"]
    tags = ["${SELF_REGISTRY}/python:3.14.8-trixie", "${SELF_REGISTRY}/python:trixie"]
    pull = DOCKER_BAKE_PULL
    output = ["type=registry"]
    cache-from = [
        { type = "registry", ref = "${SELF_REGISTRY}/python:trixie-cache" }
    ]
    cache-to = [
        { type = "registry", ref = "${SELF_REGISTRY}/python:trixie-cache", mode = "max" }
    ]
    args = {
        "ROOT_CA_CERT_PEM" = ROOT_CA_CERT_PEM
        "PYTHON_IMAGE_REFERENCE" = "docker.io/library/python@sha256:a11116e648ddd8a05e1120014c8e6ac259f718040b67e2dcd6a7c0b7bab3ff2c"
    }
}

# https://hub.docker.com/layers/library/httpd/2.4.68-trixie/images/sha256-03f858efb82c25cb0f9962946615cdcdaf26927cb971722149b563197cfd0fdd
target "httpd-2-4-68-trixie" {
    context    = "./resources/containers/dockerfiles/httpd"
    dockerfile = "Dockerfile"
    platforms = ["linux/amd64", "linux/arm64"]
    tags = ["${SELF_REGISTRY}/httpd:2.4.68-trixie", "${SELF_REGISTRY}/httpd:trixie"]
    pull = DOCKER_BAKE_PULL
    output = ["type=registry"]
    cache-from = [
        { type = "registry", ref = "${SELF_REGISTRY}/httpd:trixie-cache" }
    ]
    cache-to = [
        { type = "registry", ref = "${SELF_REGISTRY}/httpd:trixie-cache", mode = "max" }
    ]
    args = {
        "HTTPD_IMAGE_REFERENCE" = "docker.io/library/httpd@sha256:03f858efb82c25cb0f9962946615cdcdaf26927cb971722149b563197cfd0fdd"
    }
}

# https://hub.docker.com/layers/library/debian/trixie/images/sha256-913f6706df59a68922d1dd08f78c2476560a8d367897200a6005b00e5f67c2d5
target "debian-trixie" {
    context    = "./resources/containers/dockerfiles/debian"
    dockerfile = "Dockerfile"
    platforms = ["linux/amd64", "linux/arm64"]
    tags = ["${SELF_REGISTRY}/debian:trixie", "${SELF_REGISTRY}/debian:latest"]
    pull = DOCKER_BAKE_PULL
    output = ["type=registry"]
    cache-from = [
        { type = "registry", ref = "${SELF_REGISTRY}/debian:cache" }
    ]
    cache-to = [
        { type = "registry", ref = "${SELF_REGISTRY}/debian:cache", mode = "max" }
    ]
    args = {
        "ROOT_CA_CERT_PEM" = ROOT_CA_CERT_PEM
        "DEBIAN_IMAGE_REFERENCE" = "docker.io/library/debian@sha256:913f6706df59a68922d1dd08f78c2476560a8d367897200a6005b00e5f67c2d5"
    }
}

# https://hub.docker.com/layers/library/ubuntu/26.04/images/sha256-f144425ff09be612d6d9ad965196e9cdc23dae1f42110a8a11a3e9a8198759f7
target "ubuntu-26-04" {
    context    = "./resources/containers/dockerfiles/ubuntu"
    dockerfile = "Dockerfile"
    platforms = ["linux/amd64", "linux/arm64"]
    tags = ["${SELF_REGISTRY}/ubuntu:26.04", "${SELF_REGISTRY}/ubuntu:latest"]
    pull = DOCKER_BAKE_PULL
    output = ["type=registry"]
    cache-from = [
        { type = "registry", ref = "${SELF_REGISTRY}/ubuntu:cache" }
    ]
    cache-to = [
        { type = "registry", ref = "${SELF_REGISTRY}/ubuntu:cache", mode = "max" }
    ]
    args = {
        "ROOT_CA_CERT_PEM" = ROOT_CA_CERT_PEM
        "UBUNTU_IMAGE_REFERENCE" = "docker.io/library/ubuntu@sha256:f144425ff09be612d6d9ad965196e9cdc23dae1f42110a8a11a3e9a8198759f7"
    }
}

# https://hub.docker.com/layers/library/postgres/18.6-trixie/images/sha256-74935e72241653ca55e0414067e6d8763aceb8a810eb51b452253ec3dcfc4336
target "postgres-18-6-trixie" {
    context    = "./resources/containers/dockerfiles/postgres"
    dockerfile = "Dockerfile"
    platforms = ["linux/amd64", "linux/arm64"]
    tags = ["${SELF_REGISTRY}/postgres:18.6-trixie", "${SELF_REGISTRY}/postgres:trixie"]
    pull = DOCKER_BAKE_PULL
    output = ["type=registry"]
    cache-from = [
        { type = "registry", ref = "${SELF_REGISTRY}/postgres:trixie-cache" }
    ]
    cache-to = [
        { type = "registry", ref = "${SELF_REGISTRY}/postgres:trixie-cache", mode = "max" }
    ]
    args = {
        "POSTGRES_IMAGE_REFERENCE" = "docker.io/library/postgres@sha256:74935e72241653ca55e0414067e6d8763aceb8a810eb51b452253ec3dcfc4336"
    }
}

# https://hub.docker.com/layers/gethomepage/homepage/v2.4.0/images/sha256-643bd0be730d40f69d58028a55d1a896739333e8815786df42bc97f109ecbe61
variable "HOMEPAGE_VERSION" {
    default = "v2.4.0"
}
target "homepage" {
    context    = "./resources/containers/dockerfiles/homepage"
    dockerfile = "Dockerfile"
    platforms = ["linux/amd64", "linux/arm64"]
    tags = ["${SELF_REGISTRY}/homepage:${HOMEPAGE_VERSION}", "${SELF_REGISTRY}/homepage:latest"]
    pull = DOCKER_BAKE_PULL
    output = ["type=registry"]
    cache-from = [
        { type = "registry", ref = "${SELF_REGISTRY}/homepage:cache" }
    ]
    cache-to = [
        { type = "registry", ref = "${SELF_REGISTRY}/homepage:cache", mode = "max" }
    ]
    args = {
        "ROOT_CA_CERT_PEM" = ROOT_CA_CERT_PEM
        "HOMEPAGE_IMAGE_REFERENCE" = "docker.io/gethomepage/homepage@sha256:643bd0be730d40f69d58028a55d1a896739333e8815786df42bc97f109ecbe61"
    }
}

# https://hub.docker.com/layers/jc21/nginx-proxy-manager/2.16.0/images/sha256-4393e642e233e5efd5adeb7f10918d4aaea71c9ed875b94190273fc8e87f9594
variable "NGINX_PROXY_MANAGER_VERSION" {
    default = "2.16.0"
}
target "nginx-proxy-manager" {
    context    = "./resources/containers/dockerfiles/nginx-proxy-manager"
    dockerfile = "Dockerfile"
    platforms = ["linux/amd64", "linux/arm64"]
    tags = ["${SELF_REGISTRY}/nginx-proxy-manager:${NGINX_PROXY_MANAGER_VERSION}", "${SELF_REGISTRY}/nginx-proxy-manager:latest"]
    pull = DOCKER_BAKE_PULL
    output = ["type=registry"]
    cache-from = [
        { type = "registry", ref = "${SELF_REGISTRY}/nginx-proxy-manager:cache" }
    ]
    cache-to = [
        { type = "registry", ref = "${SELF_REGISTRY}/nginx-proxy-manager:cache", mode = "max" }
    ]
    args = {
        "NGINX_PROXY_MANAGER_IMAGE_REFERENCE" = "docker.io/jc21/nginx-proxy-manager@sha256:4393e642e233e5efd5adeb7f10918d4aaea71c9ed875b94190273fc8e87f9594"
    }
}

variable "MINIO_COMMUNITY_GIT_VERSION" {
    default = "RELEASE.2025-10-15T17-29-55Z"
}
target "minio-minio-community" {
    context    = "./resources/containers/dockerfiles/minio-minio"
    dockerfile = "Dockerfile"
    platforms = ["linux/amd64", "linux/arm64"]
    tags = ["${SELF_REGISTRY}/minio-minio:${MINIO_COMMUNITY_GIT_VERSION}", "${SELF_REGISTRY}/minio-minio:latest"]
    pull = DOCKER_BAKE_PULL
    output = ["type=registry"]
    cache-from = [
        { type = "registry", ref = "${SELF_REGISTRY}/minio-minio:cache" }
    ]
    cache-to = [
        { type = "registry", ref = "${SELF_REGISTRY}/minio-minio:cache", mode = "max" }
    ]
}

# https://hub.docker.com/layers/ollama/ollama/0.40.2/images/sha256-b86366bb528bbf7f1424435d165028497a5b69bf6ddb4fa5a87102e2b79f44fb
variable "OLLAMA_VERSION" {
    default = "0.40.2"
}
target "ollama" {
    context    = "./resources/containers/dockerfiles/ollama"
    dockerfile = "Dockerfile"
    platforms = ["linux/amd64", "linux/arm64"]
    tags = ["${SELF_REGISTRY}/ollama:${OLLAMA_VERSION}", "${SELF_REGISTRY}/ollama:latest"]
    pull = DOCKER_BAKE_PULL
    output = ["type=registry"]
    cache-from = [
        { type = "registry", ref = "${SELF_REGISTRY}/ollama:cache" }
    ]
    cache-to = [
        { type = "registry", ref = "${SELF_REGISTRY}/ollama:cache", mode = "max" }
    ]
    args = {
        "ROOT_CA_CERT_PEM" = ROOT_CA_CERT_PEM
        "OLLAMA_CONTAINER_IMAGE_REFERENCE" = "docker.io/ollama/ollama@sha256:b86366bb528bbf7f1424435d165028497a5b69bf6ddb4fa5a87102e2b79f44fb"
    }
}

# https://hub.docker.com/layers/linuxserver/code-server/4.141.0/images/sha256-0d590a1a80a36bd2559222ad6e9f69559e962cca003f6f716b62487999d575f5
variable "CODE_SERVER_VERSION" {
    default = "4.141.0"
}
target "code-server" {
    context    = "./resources/containers/dockerfiles/code-server"
    dockerfile = "Dockerfile"
    platforms = ["linux/amd64",  "linux/arm64"]
    tags = ["${SELF_REGISTRY}/code-server:${CODE_SERVER_VERSION}", "${SELF_REGISTRY}/code-server:latest"]
    pull = DOCKER_BAKE_PULL
    output = ["type=registry"]
    cache-from = [
        { type = "registry", ref = "${SELF_REGISTRY}/code-server:cache" }
    ]
    cache-to = [
        { type = "registry", ref = "${SELF_REGISTRY}/code-server:cache", mode = "max" }
    ]
    args = {
        "ROOT_CA_CERT_PEM" = ROOT_CA_CERT_PEM
        "CODE_SERVER_IMAGE_REFERENCE" = "lscr.io/linuxserver/code-server@sha256:0d590a1a80a36bd2559222ad6e9f69559e962cca003f6f716b62487999d575f5"
    }
}

# https://hub.docker.com/layers/library/caddy/2.11.7-alpine/images/sha256-d8542f48d34a9cf4e4c11a478865229840e87e4c96ea3f439101f31a5d35f75f
variable "CADDY_CONTAINER_VERSION" {
    default = "2.11.7-alpine"
}
target "caddy" {
    context    = "./resources/containers/dockerfiles/caddy"
    dockerfile = "Dockerfile"
    platforms = ["linux/amd64", "linux/arm64"]
    tags = ["${SELF_REGISTRY}/caddy:${CADDY_CONTAINER_VERSION}", "${SELF_REGISTRY}/caddy:latest"]
    pull = DOCKER_BAKE_PULL
    output = ["type=registry"]
    cache-from = [
        { type = "registry", ref = "${SELF_REGISTRY}/caddy:cache" }
    ]
    cache-to = [
        { type = "registry", ref = "${SELF_REGISTRY}/caddy:cache", mode = "max" }
    ]
    args = {
        "ROOT_CA_CERT_PEM" = ROOT_CA_CERT_PEM
        "CADDY_CONTAINER_IMAGE_REFERENCE" = "docker.io/library/caddy@sha256:d8542f48d34a9cf4e4c11a478865229840e87e4c96ea3f439101f31a5d35f75f"
    }
}

# https://hub.docker.com/layers/glanceapp/glance/v0.8.6/images/sha256-9dfb09470b207dcb67ac715994bdb1929374ba3f9c0d7df7462c24adf10fd073
variable "GLANCE_VERSION" {
    default = "v0.8.6"
}
target "glance" {
    context    = "./resources/containers/dockerfiles/glance"
    dockerfile = "Dockerfile"
    platforms = ["linux/amd64", "linux/arm64"]
    tags = ["${SELF_REGISTRY}/glance:${GLANCE_VERSION}", "${SELF_REGISTRY}/glance:latest"]
    pull = DOCKER_BAKE_PULL
    output = ["type=registry"]
    cache-from = [
        { type = "registry", ref = "${SELF_REGISTRY}/glance:cache" }
    ]
    cache-to = [
        { type = "registry", ref = "${SELF_REGISTRY}/glance:cache", mode = "max" }
    ]
    args = {
        "ROOT_CA_CERT_PEM" = ROOT_CA_CERT_PEM
        "GLANCE_IMAGE_REFERENCE" = "docker.io/glanceapp/glance@sha256:9dfb09470b207dcb67ac715994bdb1929374ba3f9c0d7df7462c24adf10fd073"
    }
}

# https://hub.docker.com/layers/nicolargo/glances/ubuntu-4.5.7-full/images/sha256-e2a76e72b61cb12529ee1533c31c3c35145ae6a632317da85fe7a30bce549337
variable "GLANCES_VERSION" {
    default = "ubuntu-4.5.7-full"
}
target "glances" {
    context    = "./resources/containers/dockerfiles/glances"
    dockerfile = "Dockerfile"
    platforms = ["linux/amd64", "linux/arm64"]
    tags = ["${SELF_REGISTRY}/glances:${GLANCES_VERSION}", "${SELF_REGISTRY}/glances:latest"]
    pull = DOCKER_BAKE_PULL
    output = ["type=registry"]
    cache-from = [
        { type = "registry", ref = "${SELF_REGISTRY}/glances:cache" }
    ]
    cache-to = [
        { type = "registry", ref = "${SELF_REGISTRY}/glances:cache", mode = "max" }
    ]
    args = {
        "ROOT_CA_CERT_PEM" = ROOT_CA_CERT_PEM
        "GLANCES_IMAGE_REFERENCE" = "docker.io/nicolargo/glances@sha256:e2a76e72b61cb12529ee1533c31c3c35145ae6a632317da85fe7a30bce549337"
    }
}

# https://hub.docker.com/layers/deluan/navidrome/0.64.2/images/sha256-38dc2727bfcfd5ede290f8ada114fc90368146f265ae4701ddddbcbe2a44ee52
variable "NAVIDROME_VERSION" {
    default = "0.64.2"
}
target "navidrome" {
    context    = "./resources/containers/dockerfiles/navidrome"
    dockerfile = "Dockerfile"
    platforms = ["linux/amd64", "linux/arm64"]
    tags = ["${SELF_REGISTRY}/navidrome:${NAVIDROME_VERSION}", "${SELF_REGISTRY}/navidrome:latest"]
    pull = DOCKER_BAKE_PULL
    output = ["type=registry"]
    cache-from = [
        { type = "registry", ref = "${SELF_REGISTRY}/navidrome:cache" }
    ]
    cache-to = [
        { type = "registry", ref = "${SELF_REGISTRY}/navidrome:cache", mode = "max" }
    ]
    args = {
        "NAVIDROME_IMAGE_REFERENCE" = "docker.io/deluan/navidrome@sha256:38dc2727bfcfd5ede290f8ada114fc90368146f265ae4701ddddbcbe2a44ee52"
    }
}

# https://hub.docker.com/layers/vikunja/vikunja/2.7.0/images/sha256-e2204a1c1c6a81e833c2b3a5442be182ca2335b54c2e7e37578cc3fe12a27cfc
variable "VIKUNJA_VERSION" {
    default = "2.7.0"
}
target "vikunja" {
    context    = "./resources/containers/dockerfiles/vikunja"
    dockerfile = "Dockerfile"
    platforms = ["linux/amd64", "linux/arm64"]
    tags = ["${SELF_REGISTRY}/vikunja:${VIKUNJA_VERSION}", "${SELF_REGISTRY}/vikunja:latest"]
    pull = DOCKER_BAKE_PULL
    output = ["type=registry"]
    cache-from = [
        { type = "registry", ref = "${SELF_REGISTRY}/vikunja:cache" }
    ]
    cache-to = [
        { type = "registry", ref = "${SELF_REGISTRY}/vikunja:cache", mode = "max" }
    ]
    args = {
        "VIKUNJA_IMAGE_REFERENCE" = "docker.io/vikunja/vikunja@sha256:e2204a1c1c6a81e833c2b3a5442be182ca2335b54c2e7e37578cc3fe12a27cfc"
    }
}

# https://hub.docker.com/layers/astral/uv/0.13.0-trixie/images/sha256-67fef0d394ce2f2fe556f94062a0b60b7ea28737299b16df58ac66c56c0e9776
variable "UV_VERSION" {
    default = "0.13.0-trixie"
}
target "uv" {
    context    = "./resources/containers/dockerfiles/uv"
    dockerfile = "Dockerfile"
    platforms = ["linux/amd64", "linux/arm64"]
    tags = ["${SELF_REGISTRY}/uv:${UV_VERSION}", "${SELF_REGISTRY}/uv:trixie"]
    pull = DOCKER_BAKE_PULL
    output = ["type=registry"]
    cache-from = [
    { type = "registry", ref = "${SELF_REGISTRY}/uv:trixie-cache" }
  ]
    cache-to = [
    { type = "registry", ref = "${SELF_REGISTRY}/uv:trixie-cache", mode = "max" }
  ]
    args = {
        "UV_IMAGE_REFERENCE" = "docker.io/astral/uv@sha256:67fef0d394ce2f2fe556f94062a0b60b7ea28737299b16df58ac66c56c0e9776"
        "ROOT_CA_CERT_PEM"   = ROOT_CA_CERT_PEM
    }
}
