FROM ubuntu:24.04

# Build and run apt dependencies
RUN apt-get update
RUN apt-get install -y \
    build-essential \
    cmake \
    gcc \
    git \
    ccache \
    ninja-build \
    xorg-dev \
    clang-format \
    patchelf \
    curl \
    wget \
    tree \
    libtinyxml2-dev \
    libfreetype-dev \
    python3 \
    python3-pip \
    python3-venv \
    python3-numpy \
    xvfb \
    libx11-dev \
    libxrandr-dev \
    libxinerama-dev \
    libxcursor-dev \
    libxi-dev \
    vulkan-tools \
    mesa-utils \
    nvidia-driver-460 \
    nvidia-utils-460 \
    x11-apps \
    x11-utils

# Python dependencies
RUN pip install --break-system-packages numpy tqdm pillow pyparsing pytest wheel setuptools twine mkdocs-material

# casey just
RUN curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash
ENV PATH="/root/bin:$PATH"

# SwiftShader
RUN mkdir -p /tmp/swiftshader/ && \
wget https://github.com/datoviz/data/raw/main/swiftshader/linux/libvk_swiftshader.so -O /tmp/swiftshader/libvk_swiftshader.so && \
wget https://raw.githubusercontent.com/datoviz/data/main/swiftshader/linux/vk_swiftshader_icd.json -O /tmp/swiftshader/vk_swiftshader_icd.json

# Environment variables
ENV NVIDIA_DRIVER_CAPABILITIES=all
ENV NVIDIA_VISIBLE_DEVICES=all
ENV VK_ICD_FILENAMES="/tmp/swiftshader/vk_swiftshader_icd.json"
