164 lines
4.6 KiB
Docker
164 lines
4.6 KiB
Docker
FROM ubuntu:22.04
|
|
|
|
# system deps
|
|
ENV DEBIAN_FRONTEND noninteractive
|
|
RUN apt-get update \
|
|
&& apt-get install -y software-properties-common \
|
|
&& add-apt-repository ppa:fish-shell/release-3 \
|
|
&& add-apt-repository ppa:neovim-ppa/unstable \
|
|
&& apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
autoconf \
|
|
automake \
|
|
build-essential \
|
|
ca-certificates \
|
|
curl \
|
|
doas \
|
|
exa \
|
|
fish \
|
|
g++ \
|
|
gcc \
|
|
gfortran \
|
|
git \
|
|
gosu \
|
|
gpg \
|
|
gpg-agent \
|
|
groff \
|
|
jq \
|
|
less \
|
|
libbz2-1.0 \
|
|
libbz2-dev \
|
|
libc6-dev \
|
|
libcurl3-dev \
|
|
libffi-dev \
|
|
liblzma-dev \
|
|
liblzma5 \
|
|
libncurses-dev \
|
|
libncurses5-dev \
|
|
libncursesw5-dev \
|
|
libodbc1 \
|
|
libpcre2-dev \
|
|
libreadline-dev \
|
|
libsctp-dev \
|
|
libsctp1 \
|
|
libsqlite3-dev \
|
|
libssl-dev \
|
|
libtool \
|
|
libwxgtk3.0-gtk3-0v5 \
|
|
libwxgtk3.0-gtk3-dev \
|
|
libxslt-dev \
|
|
libyaml-dev \
|
|
llvm \
|
|
locales \
|
|
make \
|
|
neovim \
|
|
net-tools \
|
|
openssh-client \
|
|
openssl \
|
|
pkg-config \
|
|
python3-openssl \
|
|
sudo \
|
|
tk-dev \
|
|
unixodbc-dev \
|
|
unzip \
|
|
uuid-dev \
|
|
wget \
|
|
xorg-dev \
|
|
xz-utils \
|
|
zlib1g-dev \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& locale-gen en_US.UTF-8 \
|
|
&& echo 'setup unprivileged user' \
|
|
&& groupadd --gid 980 wheel \
|
|
&& groupadd --gid 999 docker \
|
|
&& groupadd --gid 1000 coder \
|
|
&& useradd \
|
|
--uid 1000 \
|
|
--gid coder \
|
|
--groups docker,wheel \
|
|
--shell $(which fish) \
|
|
--home-dir /home/coder \
|
|
--create-home \
|
|
coder \
|
|
&& echo 'coder:coder' | chpasswd \
|
|
&& echo 'permit persist :wheel as root' > /etc/doas.conf
|
|
|
|
# command line utilities
|
|
ENV BAT_VERSION 0.23.0
|
|
ENV BAT_FILE bat_${BAT_VERSION}_amd64.deb
|
|
ENV BAT_URL https://github.com/sharkdp/bat/releases/download/v${BAT_VERSION}/${BAT_FILE}
|
|
ENV RG_VERSION 13.0.0
|
|
ENV RG_FILE ripgrep_${RG_VERSION}_amd64.deb
|
|
ENV RG_URL https://github.com/BurntSushi/ripgrep/releases/download/${RG_VERSION}/${RG_FILE}
|
|
ENV DO_VERSION 24.0.6
|
|
ENV DO_URL https://download.docker.com/linux/static/stable/x86_64/docker-${DO_VERSION}.tgz
|
|
ENV DC_VERSION v2.21.0
|
|
ENV DC_URL https://github.com/docker/compose/releases/download/${DC_VERSION}/docker-compose-linux-x86_64
|
|
RUN curl -sS https://starship.rs/install.sh | sh -s -- --yes \
|
|
&& curl -LO ${BAT_URL} \
|
|
&& dpkg -i ${BAT_FILE} \
|
|
&& rm ${BAT_FILE} \
|
|
&& curl -LO ${RG_URL} \
|
|
&& dpkg -i ${RG_FILE} \
|
|
&& rm ${RG_FILE} \
|
|
&& mkdir /tmp/download \
|
|
&& curl -L ${DO_URL} | tar -zx -C /tmp/download \
|
|
&& chgrp --recursive docker /tmp/download \
|
|
&& mv /tmp/download/docker/* /usr/local/bin \
|
|
&& rm -rf /tmp/download \
|
|
&& mkdir -p /usr/local/lib/docker/cli-plugins \
|
|
&& curl -L ${DC_URL} -o /usr/local/lib/docker/cli-plugins/docker-compose \
|
|
&& chmod 750 /usr/local/lib/docker/cli-plugins/docker-compose \
|
|
&& chgrp --recursive docker /usr/local/lib/docker
|
|
|
|
USER coder
|
|
WORKDIR /home/coder
|
|
|
|
ENV LANGUAGE en_US.UTF-8
|
|
ENV LANG ${LANGAGUE}
|
|
ENV LC_ALL ${LANGUAGE}
|
|
ENV HOME /home/coder
|
|
ENV LOCAL_BIN_HOME ${HOME}/.local/bin
|
|
ENV LOCAL_SRC_HOME ${HOME}/.local/src
|
|
ENV XDG_CONFIG_HOME ${HOME}/.config
|
|
ENV XDG_DATA_HOME ${HOME}/.local/share
|
|
ENV XDG_CACHE_HOME ${HOME}/.cache
|
|
ENV STARSHIP_CONFIG ${XDG_CONFIG_HOME}/starship/config.toml
|
|
ENV PATH ${LOCAL_BIN_HOME}:$PATH
|
|
# NOTE (jpd): to install elixirls we have to set the shell to something known
|
|
ENV SHELL /usr/bin/bash
|
|
|
|
# command line utilities
|
|
RUN curl https://rtx.pub/install.sh | sh \
|
|
&& curl -sS https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | bash
|
|
|
|
# git configuration
|
|
COPY ./patch/kickstart.nvim/updates.patch /tmp
|
|
COPY ./config/nvim/lua/custom/plugins/init.lua /tmp
|
|
RUN git clone https://github.com/nvim-lua/kickstart.nvim.git "${XDG_CONFIG_HOME}"/nvim \
|
|
&& cd ${XDG_CONFIG_HOME}/nvim \
|
|
&& git reset --hard 313bd75ca04cb2cef48a79ac3ad697a1b9a2daab \
|
|
&& git apply /tmp/updates.patch \
|
|
&& cp /tmp/init.lua ${XDG_CONFIG_HOME}/nvim/lua/custom/plugins \
|
|
&& nvim --headless "+Lazy! sync" +qa
|
|
|
|
# configure fish and bash
|
|
RUN fish -c true \
|
|
&& echo 'starship init fish | source' >> ${XDG_CONFIG_HOME}/fish/config.fish \
|
|
&& echo '{$XDG_DATA_HOME}/rtx/bin/rtx activate fish | source' >> ${XDG_CONFIG_HOME}/fish/config.fish \
|
|
&& echo 'zoxide init fish | source' >> ${XDG_CONFIG_HOME}/fish/config.fish \
|
|
&& echo 'eval "$(starship init bash)"' >> ${HOME}/.bashrc \
|
|
&& echo 'eval "$(${XDG_DATA_HOME}/rtx/bin/rtx activate bash)"' >> ${HOME}/.bashrc \
|
|
&& echo 'eval "$(zoxide init bash)"' >> ${HOME}/.bashrc
|
|
|
|
# install rtx plugins
|
|
RUN ${XDG_DATA_HOME}/rtx/bin/rtx plugins install \
|
|
awscli \
|
|
elixir \
|
|
erlang \
|
|
helm \
|
|
jq \
|
|
kubectl \
|
|
poetry \
|
|
terraform
|