FROM jupyter/minimal-notebook

ENV DEBIAN_FRONTEND=noninteractive

USER root

RUN apt-get update \
	&& apt-get install -y \
		openjdk-17-jdk \
	&& apt-get install -y \
		build-essential \
		ca-certificates \
		composer \
		curl \
		gcc \
		git \
		libc6 \
		libgcc1 \
		libgssapi-krb5-2 \
		libicu66 \
		libssl1.1 \
		libstdc++6 \
		nodejs \
		npm \
		php \
		php-cli \
		php-zmq \
		wget \
		zlib1g \
	&& apt-get clean

ARG NB_USER=jovyan
ARG NB_UID=1000
ENV USER ${NB_USER}
ENV HOME /home/${NB_USER}
ENV PATH="/opt/conda/envs/env/bin:${PATH}:${HOME}/.dotnet/tools:${HOME}/bin"

WORKDIR ${HOME}

# Install C# Dotnet
ENV \
  DOTNET_RUNNING_IN_CONTAINER=true \
  DOTNET_USE_POLLING_FILE_WATCHER=true \
  NUGET_XMLDOC_MODE=skip \
  DOTNET_INTERACTIVE_CLI_TELEMETRY_OPTOUT=true
ENV DOTNET_SDK_VERSION 6.0.100
RUN dotnet_sdk_version=6.0.100 \
  && curl -SL --output dotnet.tar.gz https://dotnetcli.azureedge.net/dotnet/Sdk/$dotnet_sdk_version/dotnet-sdk-$dotnet_sdk_version-linux-x64.tar.gz \
  && dotnet_sha512='cb0d174a79d6294c302261b645dba6a479da8f7cf6c1fe15ae6998bc09c5e0baec810822f9e0104e84b0efd51fdc0333306cb2a0a6fcdbaf515a8ad8cf1af25b' \
  && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \
  && mkdir -p /usr/share/dotnet \
  && tar -ozxf dotnet.tar.gz -C /usr/share/dotnet \
  && rm dotnet.tar.gz \
  && ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet \
  # Trigger first run experience by running arbitrary cmd
  && dotnet help

# Install Jupyter minimal C kernel
RUN pip install jupyter-c-kernel \
	&& install_c_kernel

# Switch from root to user 'jovyan'
RUN fix-permissions "${CONDA_DIR}"

RUN chown -R ${NB_UID} ${HOME}
USER ${NB_USER}
RUN mkdir -p ${HOME}/work

RUN pip install nteract_on_jupyter

# Install C++ Jupyter kernels
RUN conda install --quiet --yes xeus-cling \
	&& conda clean --all -f -a \
	&& fix-permissions "${HOME}"

# Install Java Jupyter kernel
RUN wget https://github.com/SpencerPark/IJava/releases/download/v1.3.0/ijava-1.3.0.zip \
	&& unzip ijava-1.3.0.zip \
	&& python3 ./install.py --sys-prefix \
	&& rm -f ijava-1.3.0.zip \
	&& rm -rf install.py java

# Install PHP Jupyter kernel
RUN wget https://litipk.github.io/Jupyter-PHP-Installer/dist/jupyter-php-installer.phar \
	&& php ./jupyter-php-installer.phar install \
	&& rm -f jupyter-php-installer.phar

# Install C# dotnet kernel
RUN dotnet tool install -g Microsoft.dotnet-interactive --add-source "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-experimental/nuget/v3/index.json"
RUN dotnet interactive jupyter install
ENV DOTNET_INTERACTIVE_CLI_TELEMETRY_OPTOUT=false

# Enable experimental collaborative mode in JupyterLab
ENV DOCKER_STACKS_JUPYTER_CMD "lab --ip 0.0.0.0 --collaborative --no-browser"

RUN \
	npm config set prefix ${HOME} \
	&& npm install -g ijavascript \
	&& ijsinstall


RUN echo "UID: $NB_UID"
