FROM ubuntu:jammy

LABEL maintainer=codifryed
# Image for building and testing AppImages

ENV DEBIAN_FRONTEND=noninteractive
# Use C.UTF-8 locale to avoid issues with ASCII encoding
ENV LC_ALL=C.UTF-8
ENV LANG=C.UTF-8
ENV CI=true
ENV PYTHONFAULTHANDLER=1 \
    PYTHONUNBUFFERED=1 \
    # pip
    PIP_DISABLE_PIP_VERSION_CHECK=on \
    PIP_DEFAULT_TIMEOUT=100
ENV RUSTUP_HOME=/usr/local/rustup \
    CARGO_HOME=/usr/local/cargo \
    PATH=/usr/local/cargo/bin:$PATH \
    RUST_VERSION=1.92.0
ENV NODE_MAJOR=22

RUN apt update && apt install -y --no-install-recommends \
    # build essentials:
    software-properties-common \
    curl \
    git \
    build-essential \
    dbus \
    protobuf-compiler \
    # compressing with zstd (assets):
    zstd \
    # nuitka deps for building:
    chrpath gdb ccache libfuse2 patchelf \
    # for standard appstream checks:
    desktop-file-utils appstream-util \
    # python
    zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev \
    python3-pip \
    # need base usb package for liquidctl
    libusb-1.0-0 \
    # npm:
    ca-certificates \
    gnupg \
    # daemon
    libdrm-dev \
    # qt:
    # already used above:  build-essential \
    cmake \
    xvfb \
    libgl1-mesa-dev \
    libqt6opengl6-dev \
    qt6-base-dev \
    qt6-webengine-dev \
    qt6-webengine-dev-tools \
    # python symlink:
    python-is-python3 \
    # debian package helper
    debhelper

# rust toolchain
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --no-modify-path --profile minimal --default-toolchain $RUST_VERSION && \
    chmod -R a+w $RUSTUP_HOME $CARGO_HOME

RUN mkdir -p /etc/apt/keyrings && \
    curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \
    echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list && \
    apt-get update && apt-get install -y --no-install-recommends nodejs

RUN pip3 install --upgrade pip

RUN apt-get -y autoclean
