# syntax=docker/dockerfile:1
ARG BASE_IMAGE=node:20-bookworm-slim

FROM ${BASE_IMAGE}

ARG LLVM_VERSION=16

# common tools
RUN --mount=type=cache,target=/var/lib/apt \
    --mount=type=cache,target=/var/lib/cache \
    --mount=type=cache,target=/var/cache/apt \
    apt-get update && \
    apt-get install -y \
        sudo \
        git-lfs \
        ca-certificates \
        curl \
        jq \
        gnupg \
        gcc \
        clang-${LLVM_VERSION} \
        llvm-${LLVM_VERSION} \
        libbpf-dev \
        make \
        unzip \
        libgraphite2-3 \
        zstd && \
    ln -s /usr/lib/llvm-${LLVM_VERSION}/bin/clang /usr/bin/clang && \
    ln -s -f /usr/lib/llvm-${LLVM_VERSION}/bin/llc /usr/bin/

ADD --chmod=444 https://cli.github.com/packages/githubcli-archive-keyring.gpg /etc/apt/keyrings/githubcli-archive-keyring.gpg
ADD --chmod=444 https://download.docker.com/linux/debian/gpg /etc/apt/keyrings/docker.asc

# Docker and other tools
RUN --mount=type=cache,target=/var/lib/apt \
    --mount=type=cache,target=/var/lib/cache \
    --mount=type=cache,target=/var/cache/apt \
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" > /etc/apt/sources.list.d/github-cli.list && \
    echo \
        "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.list && \
    apt-get update && \
    apt-get install -y \
        gh \
        docker-ce docker-ce-cli containerd.io docker-buildx-plugin \