160 lines
4.2 KiB
Docker
160 lines
4.2 KiB
Docker
FROM ubuntu:24.04
|
|
|
|
# Disable interactive prompts during package installs
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
# update system to latest
|
|
RUN apt-get update && apt-get upgrade -y
|
|
|
|
# Install necessary packages
|
|
RUN apt-get update && apt-get install -y \
|
|
net-tools \
|
|
iproute2 \
|
|
traceroute \
|
|
tcptraceroute \
|
|
mtr \
|
|
iputils-ping \
|
|
iputils-tracepath \
|
|
dnsutils \
|
|
curl \
|
|
wget \
|
|
nmap \
|
|
tcpdump \
|
|
hping3 \
|
|
ethtool \
|
|
netcat-traditional \
|
|
bridge-utils \
|
|
arping \
|
|
iftop \
|
|
iptraf-ng \
|
|
speedtest-cli \
|
|
vlan \
|
|
lsof \
|
|
socat \
|
|
vim \
|
|
nano \
|
|
python3 \
|
|
python3-pip \
|
|
golang-go \
|
|
build-essential \
|
|
ca-certificates \
|
|
byobu \
|
|
tmux \
|
|
ninja-build \
|
|
gettext \
|
|
libtool \
|
|
libtool-bin \
|
|
autoconf \
|
|
automake \
|
|
cmake \
|
|
g++ \
|
|
pkg-config \
|
|
unzip \
|
|
doxygen \
|
|
zsh \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# ----------------------------
|
|
# Install NVM, Node.js, and Yarn
|
|
# ----------------------------
|
|
ENV NVM_DIR=/root/.nvm
|
|
ENV NODE_VERSION=20.9.0
|
|
|
|
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash && \
|
|
. "$NVM_DIR/nvm.sh" && \
|
|
nvm install $NODE_VERSION && \
|
|
nvm alias default $NODE_VERSION && \
|
|
nvm use default && \
|
|
npm install -g yarn
|
|
|
|
# Ensure Node and Yarn binaries are in PATH
|
|
ENV PATH=$NVM_DIR/versions/node/v$NODE_VERSION/bin:$PATH
|
|
|
|
# ----------------------------
|
|
# Configure Go environment and install Go CLI utilities (using commit hashes)
|
|
# ----------------------------
|
|
ENV GOPATH=/usr/local/go
|
|
ENV PATH=$PATH:$GOPATH/bin
|
|
|
|
# Install gotop v4.1.0 (Released on February 3, 2021)
|
|
RUN git clone https://github.com/xxxserxxx/gotop.git && \
|
|
cd gotop && \
|
|
git checkout 66b6ce1 && \
|
|
go install && \
|
|
cd .. && \
|
|
rm -rf gotop
|
|
|
|
# Install ctop v0.7.6 (Released on June 10, 2021)
|
|
RUN git clone https://github.com/bcicen/ctop.git && \
|
|
cd ctop && \
|
|
git checkout 8f0c9f5 && \
|
|
go install && \
|
|
cd .. && \
|
|
rm -rf ctop
|
|
|
|
# Install gping v1.2.3 (Released on October 15, 2022)
|
|
RUN git clone https://github.com/orf/gping.git && \
|
|
cd gping && \
|
|
git checkout 4d2a5e5 && \
|
|
go install && \
|
|
cd .. && \
|
|
rm -rf gping
|
|
|
|
# ----------------------------
|
|
# Install Rust and Rust-based utilities (using commit hashes)
|
|
# ----------------------------
|
|
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | bash -s -- -y
|
|
ENV PATH=/root/.cargo/bin:$PATH
|
|
|
|
# Install bandwhich v0.20.0 (Released on March 15, 2023)
|
|
RUN git clone https://github.com/imsnif/bandwhich.git && \
|
|
cd bandwhich && \
|
|
git checkout 9b5d3c1 && \
|
|
cargo install --path . && \
|
|
cd .. && \
|
|
rm -rf bandwhich
|
|
|
|
# Install btm v0.8.1 (Released on May 20, 2023)
|
|
RUN git clone https://github.com/ClementTsang/bottom.git && \
|
|
cd bottom && \
|
|
git checkout 7c5c9e2 && \
|
|
cargo install --path . && \
|
|
cd .. && \
|
|
rm -rf bottom
|
|
|
|
# ----------------------------
|
|
# Install Neovim with Python3 support
|
|
# ----------------------------
|
|
RUN git clone https://github.com/neovim/neovim.git && \
|
|
cd neovim && \
|
|
git checkout stable && \
|
|
make CMAKE_BUILD_TYPE=Release && \
|
|
make install && \
|
|
cd .. && \
|
|
rm -rf neovim
|
|
|
|
# Install Python support for Neovim
|
|
RUN pip3 install pynvim
|
|
|
|
# ----------------------------
|
|
# Configure Neovim with GitHub Copilot and ChatGPT plugins
|
|
# ----------------------------
|
|
RUN mkdir -p ~/.config/nvim/pack/plugins/start
|
|
|
|
# Install GitHub Copilot plugin
|
|
RUN git clone https://github.com/github/copilot.vim.git ~/.config/nvim/pack/plugins/start/copilot.vim
|
|
|
|
# Install ChatGPT plugin
|
|
RUN git clone https://github.com/CopilotC-Nvim/CopilotChat.nvim.git ~/.config/nvim/pack/plugins/start/CopilotChat.nvim
|
|
|
|
# Create Neovim configuration file
|
|
RUN echo 'set runtimepath+=~/.config/nvim/pack/plugins/start/*' > ~/.config/nvim/init.vim && \
|
|
echo 'filetype plugin indent on' >> ~/.config/nvim/init.vim && \
|
|
echo 'syntax on' >> ~/.config/nvim/init.vim && \
|
|
echo 'let g:copilot_no_tab_map = v:true' >> ~/.config/nvim/init.vim && \
|
|
echo 'imap <silent><script><expr> <C-J> copilot#Accept("")' >> ~/.config/nvim/init.vim && \
|
|
echo 'let g:copilot_filetypes = {"*": v:true}' >> ~/.config/nvim/init.vim && \
|
|
echo 'lua require("copilot_chat").setup()' >> ~/.config/nvim/init.vim
|
|
|
|
CMD ["/bin/bash"]
|