FROM docker:dind
LABEL author="Task Venture Capital GmbH <hello@task.vc>"

WORKDIR /workspace

# Important environment variables
ENV NODE_VERSION_LTS="24.13.0" \
    NVM_DIR="/usr/local/nvm" \
    PNPM_HOME="/root/.local/share/pnpm" \
    NVM_NODEJS_ORG_MIRROR="https://unofficial-builds.nodejs.org/download/release"

# System packages
RUN apk add --no-cache \
    bash curl git openssl ca-certificates wget unzip \
    build-base python3 python3-dev py3-pip linux-headers \
    libgcc libstdc++ libc6-compat gnupg \
    libffi-dev openssl-dev libc-dev \
    iputils bind-tools \
    tini

# Install NVM
RUN mkdir -p $NVM_DIR && curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash

# Make nvm available globally in all bash shells
RUN printf '%s\n%s\n%s\n' \
        'export NVM_DIR="/usr/local/nvm"' \
        '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"' \
        '[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion"' \
        > /etc/bash.bashrc

# Copy nvm wrapper scripts
COPY image_support_files/bash-with-nvm /usr/local/bin/bash-with-nvm
COPY image_support_files/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
RUN chmod +x /usr/local/bin/bash-with-nvm /usr/local/bin/docker-entrypoint.sh

# Use wrapper for RUN commands to enable nvm
SHELL ["/usr/local/bin/bash-with-nvm"]

# Enable nvm for runtime bash commands (docker exec shells)
ENV BASH_ENV=/etc/bash.bashrc

# Prepare pnpm directory
RUN mkdir -p ${PNPM_HOME}
ENV PATH="$PNPM_HOME:$PATH"

# Install Node.js LTS via NVM and pnpm
# TARGETARCH fix: override nvm_get_arch for correct musl arch on arm64
ARG TARGETARCH
RUN NVM_MUSL_ARCH=$([ "$TARGETARCH" = "arm64" ] && echo "arm64-musl" || echo "x64-musl") \
    && nvm_get_arch() { echo "$NVM_MUSL_ARCH"; } \
    && nvm install $NODE_VERSION_LTS \
    && nvm alias default $NODE_VERSION_LTS \
    && nvm use default \
    && npm install -g pnpm \
    && pnpm -v \
    && pnpm config set unsafe-perm true \
    && pnpm install -g @ship.zone/szci

# Install Rust
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
ENV PATH="/root/.cargo/bin:$PATH"

ENV NODE_PATH=$NVM_DIR/versions/node/v$NODE_VERSION_LTS/lib/node_modules
ENV PATH=$NVM_DIR/versions/node/v$NODE_VERSION_LTS/bin:$PATH

ENTRYPOINT ["/sbin/tini", "--", "/usr/local/bin/docker-entrypoint.sh"]
CMD ["bash"]
