From 41c979e4964fe164f4144e3fe480f54cfa8548e6 Mon Sep 17 00:00:00 2001 From: sneak Date: Thu, 20 Mar 2025 12:07:07 -0700 Subject: [PATCH] initial --- Dockerfile | 159 +++++++++++++++++++++++++++++++++++++++++++++++++++++ Makefile | 4 ++ README.md | 3 + 3 files changed, 166 insertions(+) create mode 100644 Dockerfile create mode 100644 Makefile create mode 100644 README.md diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..45a956c --- /dev/null +++ b/Dockerfile @@ -0,0 +1,159 @@ +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