FROM nurdism/neko:dev

# Use the "remoteUser" property in devcontainer.json to use it. On Linux, the container 
# user's GID/UIDs will be updated to match your local UID/GID (when using the dockerFile property).
# See https://aka.ms/vscode-remote/containers/non-root-user for details.
ARG USERNAME=neko
ARG USER_UID=1000
ARG USER_GID=$USER_UID

#
# Set to false to skip installing zsh and Oh My ZSH!
ARG INSTALL_ZSH="true"

#
# Location and expected SHA for common setup script - SHA generated on release
ARG COMMON_SCRIPT_SOURCE="https://raw.githubusercontent.com/microsoft/vscode-dev-containers/master/script-library/common-debian.sh"
ARG COMMON_SCRIPT_SHA="dev-mode"

#
# Docker Compose version
ARG COMPOSE_VERSION=1.24.0

#
# Verify git, common tools / libs installed, add/modify non-root user, optionally install zsh
RUN set -eux; \
    wget -q -O /tmp/common-setup.sh $COMMON_SCRIPT_SOURCE; \
    if [ "$COMMON_SCRIPT_SHA" != "dev-mode" ]; then echo "$COMMON_SCRIPT_SHA /tmp/common-setup.sh" | sha256sum -c - ; fi; \
    /bin/bash /tmp/common-setup.sh "$INSTALL_ZSH" "$USERNAME" "$USER_UID" "$USER_GID"; \
    rm /tmp/common-setup.sh; \
    #
    # Install docker
    apt-get install -y apt-transport-https gnupg-agent software-properties-common lsb-release; \
    curl -fsSL https://download.docker.com/linux/$(lsb_release -is | tr '[:upper:]' '[:lower:]')/gpg | (OUT=$(apt-key add - 2>&1) || echo $OUT); \
    add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/$(lsb_release -is | tr '[:upper:]' '[:lower:]') $(lsb_release -cs) stable"; \
    apt-get update; apt-get install -y docker-ce-cli; \
    #
    # Install docker compose
    curl -sSL "https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose; \
    chmod +x /usr/local/bin/docker-compose; \
    #
    # Set alternate global install location that both users have rights to access
    mkdir -p /usr/local/share/npm-global; \
    chown ${USERNAME}:root /usr/local/share/npm-global; \
    npm config -g set prefix /usr/local/share/npm-global; \
    sudo -u ${USERNAME} npm config -g set prefix /usr/local/share/npm-global

ENV PATH=/usr/local/share/npm-global/bin:$PATH

#
# switch back to dialog for any ad-hoc use of apt-get
ENV DEBIAN_FRONTEND=dialog