FROM ubuntu:22.04

# No interactive frontend during docker build
ENV DEBIAN_FRONTEND=noninteractive \
    DEBCONF_NONINTERACTIVE_SEEN=true

# General requirements not in the base image
RUN apt-get -qqy update \
  && apt-get -qqy install \
    bridge-utils \
    bzip2 \
    ca-certificates \
    curl \
    dbus-x11 \
    earlyoom \
    fonts-noto \
    fluxbox \
    gdebi \
    git \
    glib-networking-services \
    gstreamer1.0-plugins-bad \
    gstreamer1.0-gl \
    libosmesa6-dev \
    libproxy1-plugin-webkit \
    libvirt-daemon-system \
    libvirt-clients \
    libunwind8 \
    libxcb-shape0-dev \
    locales \
    openjdk-17-jre-headless \
    pulseaudio \
    python3 \
    python3-dev \
    python3-pip \
    python3-venv \
    software-properties-common \
    qemu-kvm \
    tzdata \
    sudo \
    unzip \
    wget \
    xvfb

# Ensure all Python versions are available
RUN apt-add-repository -y ppa:deadsnakes/ppa

# Ensure a `python` binary exists
RUN apt-get -qqy update \
    && apt-get install -qqy python-is-python3

# Installing just the deps of firefox and chrome is moderately tricky, so
# just install the default versions of them, and some extra deps we happen
# to know that chrome requires

RUN apt-get -qqy install \
    firefox \
    libnss3-tools \
    fonts-liberation \
    indicator-application \
    libappindicator1 \
    libappindicator3-1 \
    libdbusmenu-gtk3-4 \
    libindicator3-7 \
    libindicator7

RUN apt-get -y autoremove

RUN pip install --upgrade pip

ENV TZ "UTC"
RUN echo "${TZ}" > /etc/timezone \
  && dpkg-reconfigure --frontend noninteractive tzdata

# Set the locale
RUN locale-gen en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8

# Setup on-demand pulseaudio with a "Dummy Output" audio sink.
# This simply creates a file containing autospawn=yes at
# /run/pulseaudio-enable-autospawn, linked from /etc/pulse/client.conf.d/
RUN /etc/init.d/pulseaudio-enable-autospawn start

RUN useradd test \
         --shell /bin/bash  \
         --create-home \
  && usermod -a -G sudo test \
  && usermod -a -G kvm test \
  && usermod -a -G libvirt test \
  && usermod -a -G libvirt-qemu test \
  && echo 'ALL ALL = (ALL) NOPASSWD: ALL' >> /etc/sudoers \
  && echo 'test:secret' | chpasswd

ENV SCREEN_WIDTH 1280
ENV SCREEN_HEIGHT 1024
ENV SCREEN_DEPTH 24
ENV DISPLAY :99.0

USER test

WORKDIR /home/test

# Remove information on how to use sudo on login
RUN sudo echo ""

RUN mkdir -p /home/test/artifacts
RUN mkdir -p /home/test/bin

ENV PATH="/home/test/bin:/home/test/.local/bin:${PATH}"

WORKDIR /home/test/

COPY .bashrc /home/test/.bashrc

COPY start.sh /home/test/start.sh
COPY retry.py /home/test/bin/retry
