FROM ubuntu:22.04

ARG DEBIAN_FRONTEND=noninteractive \
    OSVER=ubuntu2204 \
    LOCAL_USER_ID=1000 \
    LOCAL_GROUP_ID=1000 \
    CUDA_VER_MAJOR=11 \
    CUDA_VER_MINOR=7 \
    CUDA_DEB_URL=https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda-repo-ubuntu2204-11-7-local_11.7.0-515.43.04-1_amd64.deb  \
    CUDA_DEB_NAME=cuda-repo-ubuntu2204-11-7-local_11.7.0-515.43.04-1_amd64.deb \
    CUDA_GPG_PATH=/var/cuda-repo-ubuntu2204-11-7-local

RUN apt update \
    && apt-get install -y \
      wget \
      curl \
      git \
      ca-certificates \
      pkg-config \
      build-essential \
      libavcodec58 \
      libavcodec-dev \
      libavutil56 \
      libavutil-dev \
      libavformat58 \
      libavformat-dev \
      libswresample3 \
      libswresample-dev \
      libavfilter7 \
      libavfilter-dev \
      libavdevice58 \
      libavdevice-dev \
      libass9 \
      libass-dev \
      openssl \
      libssl-dev \
    && wget -q https://developer.download.nvidia.com/compute/cuda/repos/${OSVER}/x86_64/cuda-${OSVER}.pin \
    && mv cuda-${OSVER}.pin /etc/apt/preferences.d/cuda-repository-pin-600 \
    && wget -q ${CUDA_DEB_URL} \
    && dpkg -i ${CUDA_DEB_NAME} \
    && cp ${CUDA_GPG_PATH}/cuda-*-keyring.gpg /usr/share/keyrings/ \
    && apt-get update \
    && apt-get -y install cuda-compiler-${CUDA_VER_MAJOR}-${CUDA_VER_MINOR} cuda-cudart-dev-${CUDA_VER_MAJOR}-${CUDA_VER_MINOR} cuda-nvrtc-dev-${CUDA_VER_MAJOR}-${CUDA_VER_MINOR} libcurand-dev-${CUDA_VER_MAJOR}-${CUDA_VER_MINOR} libnpp-dev-${CUDA_VER_MAJOR}-${CUDA_VER_MINOR} cuda-nvml-dev-${CUDA_VER_MAJOR}-${CUDA_VER_MINOR} \
    && rm -f ${CUDA_DEB_NAME} \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

ENV RUSTUP_HOME=/usr/local/rustup
ENV CARGO_HOME=/usr/local/cargo
ENV PATH=/usr/local/cargo/bin:$PATH

RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs \
      | sh -s -- -y --profile minimal \
    && /usr/local/cargo/bin/rustup show \
    && /usr/local/cargo/bin/cargo --version \
    && /usr/local/cargo/bin/cargo install cargo-c --locked \
    && /usr/local/cargo/bin/cargo cbuild --version

WORKDIR /work

