FROM ubuntu:latest ARG USERNAME="jgrafton" ARG UID="503" ARG GID="20" ARG ARCH="aarch64" ARG NEOARCH="arm64" ARG NEOVIM_VERSION="v0.11.5" ARG NVM_VERSION="v0.40.3" ARG NODE_VERSION="24" ARG PYTHON_VERSION="3.12.12" ARG RIPGREP_VERSION="15.1.0" ARG RUST_VERSION="1.91.1" # ubuntu / debian packages RUN apt update -y RUN apt install -y curl git tar build-essential openssl libssl-dev libzstd-dev zlib1g-dev unzip # create user #RUN addgroup --gid ${GID} ${USERNAME} RUN adduser -q --uid ${UID} --gid ${GID} --disabled-password --gecos "" ${USERNAME} # node RUN su ${USERNAME} -c "curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash" RUN su - ${USERNAME} -s/bin/bash -c "export NVM_DIR=/home/${USERNAME}/.nvm; . /home/${USERNAME}/.nvm/nvm.sh; nvm install 24" # neovim RUN mkdir -p /opt/build RUN curl -L https://github.com/neovim/neovim/releases/download/${NEOVIM_VERSION}/nvim-linux-${NEOARCH}.tar.gz -o /opt/build/nvim-linux-${NEOARCH}.tar.gz RUN tar -C /opt/build -xvf /opt/build/nvim-linux-${NEOARCH}.tar.gz RUN cp -Rpv /opt/build/nvim-linux-${NEOARCH}/bin/* /usr/local/bin RUN cp -Rpv /opt/build/nvim-linux-${NEOARCH}/lib/* /usr/local/lib RUN cp -Rpv /opt/build/nvim-linux-${NEOARCH}/share/* /usr/local/share # lazyvim RUN su ${USERNAME} -c "git clone https://github.com/LazyVim/starter /home/${USERNAME}/.config/nvim" # python RUN curl -L https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz -o /opt/build/Python-${PYTHON_VERSION}.tgz RUN tar -C /opt/build -xvf /opt/build/Python-${PYTHON_VERSION}.tgz RUN cd /opt/build/Python-${PYTHON_VERSION}; ./configure RUN cd /opt/build/Python-${PYTHON_VERSION}; make -j 8 RUN cd /opt/build/Python-${PYTHON_VERSION}; make install # ripgrep RUN curl -L https://github.com/BurntSushi/ripgrep/releases/download/${RIPGREP_VERSION}/ripgrep-${RIPGREP_VERSION}-${ARCH}-unknown-linux-gnu.tar.gz -o /opt/build/ripgrep-${RIPGREP_VERSION}-${ARCH}-unknown-linux-gnu.tar.gz RUN cd /opt/build; tar -xvf ripgrep-${RIPGREP_VERSION}-${ARCH}-unknown-linux-gnu.tar.gz RUN cp /opt/build/ripgrep-${RIPGREP_VERSION}-${ARCH}-unknown-linux-gnu/rg /usr/bin # rust RUN curl -L https://static.rust-lang.org/dist/rust-${RUST_VERSION}-${ARCH}-unknown-linux-gnu.tar.xz -o /opt/build/rust-${RUST_VERSION}.tar.xz RUN cd /opt/build; tar xvf rust-${RUST_VERSION}.tar.xz RUN cd /opt/build/rust-${RUST_VERSION}-${ARCH}-unknown-linux-gnu; ./install.sh