72 lines
1.7 KiB
Docker
72 lines
1.7 KiB
Docker
ARG VARIANT="bookworm"
|
|
FROM debian:${VARIANT}
|
|
|
|
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
|
|
&& apt-get -y install --no-install-recommends \
|
|
ca-certificates \
|
|
zsh \
|
|
vim \
|
|
tmux \
|
|
curl \
|
|
wget \
|
|
unzip \
|
|
git \
|
|
python3 \
|
|
build-essential \
|
|
libssl-dev \
|
|
openssh-client \
|
|
sudo \
|
|
luarocks \
|
|
fd-find \
|
|
ripgrep \
|
|
locales \
|
|
&& apt-get autoremove -y \
|
|
&& apt-get clean -y \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install Neovim
|
|
ENV TREE_SITTER_VERSION="0.23.1"
|
|
ENV TREE_SITTER_URL="https://github.com/tree-sitter/tree-sitter/releases/download/v${TREE_SITTER_VERSION}/tree-sitter-linux-arm64.gz"
|
|
ENV NVIM_VERSION="0.10.0"
|
|
ENV NVIM_URL="https://gitea.tomastm.com/tomas.mirchev/neovim/releases/download/v${NVIM_VERSION}/nvim-linux-arm64.deb"
|
|
|
|
RUN set -ex \
|
|
&& mkdir -p /tmp/downloads \
|
|
&& cd /tmp/downloads \
|
|
# Install tree-sitter
|
|
&& wget -O tree-sitter.gz ${TREE_SITTER_URL} \
|
|
&& gzip -d tree-sitter.gz \
|
|
&& chmod +x tree-sitter \
|
|
&& mv tree-sitter /usr/local/bin/ \
|
|
# Install Neovim
|
|
&& wget -O nvim.deb ${NVIM_URL} \
|
|
&& apt-get install -y ./nvim.deb \
|
|
# Clean up
|
|
&& rm -rf /tmp/downloads
|
|
|
|
ENV LANG=en_US.UTF-8
|
|
ENV LC_ALL=en_US.UTF-8
|
|
ENV LC_CTYPE=en_US.UTF-8
|
|
|
|
RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen \
|
|
&& locale-gen
|
|
|
|
ARG UID=1000
|
|
ARG GID=1000
|
|
|
|
RUN groupadd -g ${GID} dev
|
|
RUN useradd -u ${UID} -g dev -m -s /bin/zsh dev
|
|
RUN echo "dev ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
|
|
|
|
RUN mkdir /workspace && chown dev:dev /workspace
|
|
WORKDIR /workspace
|
|
|
|
COPY install-tools.sh /usr/local/bin/install-tools.sh
|
|
RUN chmod +x /usr/local/bin/install-tools.sh
|
|
|
|
USER dev
|
|
ENV TERM=xterm-256color
|
|
RUN /usr/local/bin/install-tools.sh
|
|
|
|
CMD ["zsh"]
|