FROM nvidia/cuda:12.6.0-runtime-ubuntu24.04 AS base

# Install base packages
RUN apt-get update && \
    apt-get upgrade -y && \
    apt install -y \
    build-essential \
    cmake \
    cuda-toolkit \
    curl \
    git \
    gnupg \
    jq \
    libcurl4-gnutls-dev \
    libvulkan1 \
    libvulkan-dev \
    mesa-vulkan-drivers \
    python3-dev \
    python3-venv \
    tmux \
    unzip \
    vim \
    vulkan-tools \
    wget

# Install chrome
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | gpg --dearmor -o /etc/apt/trusted.gpg.d/google.gpg
RUN echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list
RUN apt-get update && \
    apt-get install -y \
    google-chrome-stable

# Install Node.js
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
RUN apt-get install -y nodejs

RUN rm -rf /var/lib/apt/lists/*

# Install Rust
RUN curl https://sh.rustup.rs -sSf | bash -s -- -y
ENV PATH="/root/.cargo/bin:${PATH}"

# Install llama.cpp
RUN curl -o /tmp/vulkan-libs.tar https://git.nielsgeens.be/api/packages/llm/generic/llama-cpp-python/v0.3.16-vulkan/libs.tar
RUN mkdir -p /usr/local/lib/llama-cpp-python
RUN tar -xf /tmp/vulkan-libs.tar -C /usr/local/lib/llama-cpp-python
RUN cp -f /usr/local/lib/llama-cpp-python/*.so* /usr/local/lib/
RUN rm /tmp/vulkan-libs.tar

# Create directory structure
RUN mkdir -p \
    /root/data/iterations \
    /root/desktop \
    /root/venvs

WORKDIR /root/desktop

ENTRYPOINT ["/bin/bash", "-c"]
CMD ["/root/sia/scripts/install.sh; /bin/bash -lc /root/sia/scripts/restart.sh"]