2021-10-18 04:38:10 -07:00
# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.177.0/containers/go/.devcontainer/base.Dockerfile
# [Choice] Go version (use -bullseye variants on local arm64/Apple Silicon): 1, 1.16, 1.17, 1-bullseye, 1.16-bullseye, 1.17-bullseye, 1-buster, 1.16-buster, 1.17-buster
ARG VARIANT = 1 -bullseye
FROM mcr.microsoft.com/vscode/devcontainers/go:0-${VARIANT}
# [Choice] Node.js version: none, lts/*, 16, 14, 12, 10
ARG NODE_VERSION = "none"
RUN if [ " ${ NODE_VERSION } " != "none" ] ; then su vscode -c " umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install ${ NODE_VERSION } 2>&1 " ; fi
2022-01-12 14:41:54 -08:00
# Install powershell
ARG PS_VERSION = "7.2.1"
RUN ARCH = " $( dpkg --print-architecture) " ; \
if [ " ${ ARCH } " = "amd64" ] ; then \
PS_BIN = " v $PS_VERSION /powershell- $PS_VERSION -linux-x64.tar.gz " ; \
elif [ " ${ ARCH } " = "arm64" ] ; then \
PS_BIN = " v $PS_VERSION /powershell- $PS_VERSION -linux-arm64.tar.gz " ; \
elif [ " ${ ARCH } " = "armhf" ] ; then \
PS_BIN = " v $PS_VERSION /powershell- $PS_VERSION -linux-arm32.tar.gz " ; \
fi ; \
wget https://github.com/PowerShell/PowerShell/releases/download/$PS_BIN -O pwsh.tar.gz; \
mkdir /usr/local/pwsh && \
tar Cxvfz /usr/local/pwsh pwsh.tar.gz && \
rm pwsh.tar.gz
ENV PATH = $PATH :/usr/local/pwsh
2021-10-18 04:38:10 -07:00
RUN apt-get update && export DEBIAN_FRONTEND = noninteractive \
2021-11-20 04:45:51 -08:00
&& apt-get install -y --no-install-recommends \
2022-01-12 14:41:54 -08:00
fish \
tmux \
2021-11-20 04:45:51 -08:00
&& apt-get clean
2021-10-18 04:38:10 -07:00
2021-11-26 03:02:28 -08:00
ARG USERNAME = vscode
2021-11-20 04:45:51 -08:00
2021-11-26 03:02:28 -08:00
# Download the oh-my-posh binary
RUN mkdir /home/${ USERNAME } /bin; \
2022-01-12 14:41:54 -08:00
wget https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/posh-linux-$( dpkg --print-architecture) -O /home/${ USERNAME } /bin/oh-my-posh; \
2021-11-26 03:02:28 -08:00
chmod +x /home/${ USERNAME } /bin/oh-my-posh; \
chown ${ USERNAME } : /home/${ USERNAME } /bin;
2022-01-12 14:41:54 -08:00
# Download the fzf binary
RUN wget https://github.com/junegunn/fzf/releases/download/0.29.0/fzf-0.29.0-linux_$( dpkg --print-architecture) .tar.gz -O /home/${ USERNAME } /bin/fzf; \
chmod +x /home/${ USERNAME } /bin/fzf;
2021-11-20 04:45:51 -08:00
# NOTE: devcontainers are Linux-only at this time but when
# Windows or Darwin is supported someone will need to improve
# the code logic above.
2021-11-26 03:41:33 -08:00
# Setup a neat little PowerShell experience
RUN pwsh -Command Install-Module posh-git -Scope AllUsers -Force; \
pwsh -Command Install-Module z -Scope AllUsers -Force; \
pwsh -Command Install-Module PSFzf -Scope AllUsers -Force; \
pwsh -Command Install-Module Terminal-Icons -Scope AllUsers -Force;
2021-11-26 03:02:28 -08:00
# add the oh-my-posh path to the PATH variable
2021-11-26 05:43:29 -08:00
ENV PATH " $PATH :/home/ ${ USERNAME } /bin "
2021-11-20 04:45:51 -08:00
# Can be used to override the devcontainer prompt default theme:
2022-06-03 11:28:37 -07:00
ENV POSH_THEME = "/workspaces/oh-my-posh/themes/jandedobbeleer.omp.json"
2021-11-20 04:45:51 -08:00
# Deploy oh-my-posh prompt to Powershell:
COPY Microsoft.PowerShell_profile.ps1 /home/${ USERNAME } /.config/powershell/Microsoft.PowerShell_profile.ps1
# Deploy oh-my-posh prompt to Fish:
COPY config.fish /home/${ USERNAME } /.config/fish/config.fish
# Everything runs as root during build time, so we want
# to make sure the vscode user can edit these paths too:
RUN chmod 777 -R /home/${ USERNAME } /.config
# Override vscode's own Bash prompt with oh-my-posh:
RUN sed -i 's/^__bash_prompt$/#&/' /home/${ USERNAME } /.bashrc && \
2022-03-25 11:03:37 -07:00
echo " eval \"\$(oh-my-posh init bash --config $POSH_THEME )\" " >> /home/${ USERNAME } /.bashrc
2021-11-20 04:45:51 -08:00
# Override vscode's own ZSH prompt with oh-my-posh:
2022-03-25 11:03:37 -07:00
RUN echo " eval \"\$(oh-my-posh init zsh --config $POSH_THEME )\" " >> /home/${ USERNAME } /.zshrc
2021-11-20 04:45:51 -08:00
# Set container timezone:
ARG TZ = "UTC"
RUN ln -sf /usr/share/zoneinfo/${ TZ } /etc/localtime
2021-10-18 04:38:10 -07:00
# [Optional] Uncomment the next line to use go get to install anything else you need
# RUN go get -x github.com/JanDeDobbeleer/battery
# [Optional] Uncomment this line to install global node packages.
# RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g <your-package-here>" 2>&1