# 1. A: Define a base image
FROM itdominator-base

ARG USERNAME=itdominator

# 1. B: Set ENV Variables
ENV DISPLAY=:0

ENV NVM_VERSION=0.40.3
ENV NODE_VERSION=24.9.0
ENV PYTHON_VERSION=3.12.12
ENV PYTHON_SUB_VERSION=3.12

ENV NVM_DIR="/root/.nvm"
ENV PYENV_ROOT="/opt/pyenv"

ENV PATH="${NVM_DIR}/versions/node/v${NODE_VERSION}/bin/:${PATH}" 
ENV PATH="${PYENV_ROOT}/bin:${PYENV_ROOT}/shims:${PATH}"
ENV PATH="/opt:${PATH}"

ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1

# 2. Set the working directory inside the container
WORKDIR /home/${USERNAME}/

# 3. A: Install dependencies
RUN apt-get update && apt-get install -y \
    --no-install-recommends \
    --no-install-suggests \
    libgl1-mesa-dri \
    libgl1 \
    libegl1 \
    libx11-6 \
    libxext6 \
    libxrender1 \
    libxi6 \
    libxtst6 \
    dbus-x11 \
    x11-apps \
    x11-utils \
    xdg-utils \
    xauth \
    fontconfig \
    fonts-dejavu-core \
    fonts-dejavu \
    fonts-dejavu-extra \
    python3-gi \
    python3-gi-cairo \
    libgtk-3-0 \
    libgtk-3-bin \
    libatk1.0-0 \
    libgdk-pixbuf-2.0-0 \
    libpango-1.0-0 \
    libpangocairo-1.0-0 \
    libcairo2 \
    libcairo-gobject2 \
    libglib2.0-0 \
    libgtksourceview-4-0 \
    libatk-bridge2.0-0 \
    gir1.2-gtk-3.0 \
    gir1.2-glib-2.0 \
    gir1.2-gdkpixbuf-2.0 \
    gir1.2-pango-1.0 \
    gir1.2-appindicator3-0 \
    gir1.2-gtksource-4 \
    gir1.2-gtksource-3.0 \
    gir1.2-webkit2-4.1 \
    gir1.2-vte-2.91 \
    gir1.2-notify-0.7 \
    gir1.2-glib-2.0 \
    gir1.2-secret-1 \
    gir1.2-keybinder-3.0

    # --- AppIndicator (system tray) ---
    # gir1.2-ayatanaappindicator3-0 \   # modern (try first)
    # libayatana-appindicator3 \

COPY requirements.txt .
RUN curl -fsSL https://pyenv.run | bash
RUN pyenv install ${PYTHON_VERSION} && pyenv global ${PYTHON_VERSION} && pyenv local ${PYTHON_VERSION}
RUN pip install --no-cache-dir -r requirements.txt

RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v"${NVM_VERSION}"/install.sh | bash
RUN . "${NVM_DIR}/nvm.sh" && nvm install ${NODE_VERSION}
RUN . "${NVM_DIR}/nvm.sh" && nvm use v${NODE_VERSION}
RUN . "${NVM_DIR}/nvm.sh" && nvm alias default v${NODE_VERSION}

RUN node --version
RUN npm --version

# 4. ...

# 5. Cleanup
RUN apt-get autoremove -yqq --purge \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/* \
  && rm -rf /tmp/*
  && rm requirements.txt

# 6. Expose Port and define the command used to run the app
CMD ["bash"]
