89 lines
2.8 KiB
Docker
89 lines
2.8 KiB
Docker
FROM ubuntu:24.04
|
|
|
|
# --- Setup for NVM and other tools ---
|
|
|
|
# Update package lists and install basic dependencies
|
|
RUN apt-get update && apt-get install -y \
|
|
curl \
|
|
git \
|
|
nodejs \
|
|
npm \
|
|
build-essential \
|
|
zsh \
|
|
tmux \
|
|
wget \
|
|
unzip \
|
|
iputils-ping \
|
|
sudo \
|
|
procps \
|
|
ripgrep \
|
|
fzf \
|
|
python3-venv \
|
|
software-properties-common \
|
|
&& add-apt-repository ppa:neovim-ppa/unstable -y \
|
|
&& apt update \
|
|
&& apt-get install -y neovim \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& ln -s /usr/bin/python3 /usr/bin/python
|
|
|
|
RUN curl -sS https://starship.rs/install.sh -o /tmp/install_starship.sh && \
|
|
chmod +x /tmp/install_starship.sh && \
|
|
/tmp/install_starship.sh --yes && \
|
|
rm /tmp/install_starship.sh
|
|
|
|
# Install NVM
|
|
# Using a specific NVM version is good practice. Check the latest stable version.
|
|
|
|
RUN groupadd --gid 11005 coder \
|
|
&& useradd -s /bin/bash --uid 11005 --gid 11005 -m coder \
|
|
&& apt-get update && apt-get install -y sudo \
|
|
&& echo coder ALL=\(ALL\) NOPASSWD:ALL > /etc/sudoers.d/coder \
|
|
&& chmod 0440 /etc/sudoers.d/coder \
|
|
&& chsh -s /usr/bin/zsh coder
|
|
|
|
RUN mkdir -p /home/coder/.config && chown -R coder:coder /home/coder
|
|
USER coder
|
|
RUN git clone https://gitea.olsen.cloud/morten/nvim.git /home/coder/.config/nvim
|
|
|
|
RUN curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | sh
|
|
|
|
ENV NVM_DIR="/home/coder/.nvm"
|
|
RUN mkdir -p /home/coder/.rc.d
|
|
|
|
RUN mkdir -p ${NVM_DIR} && \
|
|
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash && \
|
|
# Ensure NVM paths are added to shell profiles for all users
|
|
echo 'export NVM_DIR="/coder/home/.nvm"' >> /home/coder/.rc.d/nvm.sh && \
|
|
echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm' >> /home/coder/.rc.d/nvm.sh && \
|
|
echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion' >> /home/coder/.rc.d/nvm.sh && \
|
|
chmod +x /home/coder/.rc.d/nvm.sh
|
|
|
|
RUN bashenv="$(mktemp)" && \
|
|
echo '#!/bin/bash' > "$bashenv" && \
|
|
echo '. /home/coder/.rc.d/nvm.sh' >> "$bashenv" && \
|
|
echo 'nvm install 23' >> "$bashenv" && \
|
|
echo 'nvm use 23' >> "$bashenv" && \
|
|
echo 'corepack enable' >> "$bashenv" && \
|
|
chmod +x "$bashenv" && \
|
|
"$bashenv" && \
|
|
rm "$bashenv"
|
|
RUN bashenv="$(mktemp)" && \
|
|
echo '#!/bin/bash' > "$bashenv" && \
|
|
echo '. /home/coder/.rc.d/nvm.sh' >> "$bashenv" && \
|
|
echo 'corepack enable' >> "$bashenv" && \
|
|
chmod +x "$bashenv" && \
|
|
"$bashenv" && \
|
|
rm "$bashenv"
|
|
|
|
RUN bashenv_nvim_init="$(mktemp)" && \
|
|
echo '#!/bin/bash' > "$bashenv_nvim_init" && \
|
|
echo '. /home/coder/.rc.d/nvm.sh' >> "$bashenv_nvim_init" && \
|
|
echo 'npm install -g neovim' >> "$bashenv_nvim_init" && \
|
|
#echo 'nvim --headless "+Lazy! sync" +qa || true' >> "$bashenv_nvim_init" && \
|
|
chmod +x "$bashenv_nvim_init" && \
|
|
"$bashenv_nvim_init" && \
|
|
rm "$bashenv_nvim_init"
|
|
|
|
COPY --chown=coder:coder ./env/ /home/coder/
|
|
|