diff --git a/nvim/lazy-lock.json b/nvim/lazy-lock.json index 8677a3a..622e652 100644 --- a/nvim/lazy-lock.json +++ b/nvim/lazy-lock.json @@ -2,7 +2,7 @@ "LuaSnip": { "branch": "master", "commit": "0abc8f390b278c3b4aabc4c004ac8a088b65cf24" }, "NvChad": { "branch": "v2.5", "commit": "add44b952d631981614bbb8cfc6f7002f296dfe6" }, "avante.nvim": { "branch": "main", "commit": "0222885dff8ff17def0a78ccdeaf02c32230a55a" }, - "base46": { "branch": "v3.0", "commit": "884b990dcdbe07520a0892da6ba3e8d202b46337" }, + "base46": { "branch": "v3.0", "commit": "cbb71c6cb56f53b30ab1a95a6d277f7e0524025b" }, "cmp-async-path": { "branch": "main", "commit": "98185a91d49ff5dd249aebf2f7456e18063fa2a0" }, "cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" }, "cmp-nvim-lsp": { "branch": "main", "commit": "cbc7b02bb99fae35cb42f514762b89b5126651ef" }, @@ -14,7 +14,7 @@ "gitsigns.nvim": { "branch": "main", "commit": "eb60cc7b94c46005237fd34170d76f3a089a90aa" }, "harpoon": { "branch": "harpoon2", "commit": "87b1a3506211538f460786c23f98ec63ad9af4e5" }, "indent-blankline.nvim": { "branch": "master", "commit": "d28a3f70721c79e3c5f6693057ae929f3d9c0a03" }, - "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" }, + "lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" }, "lazygit.nvim": { "branch": "main", "commit": "a04ad0dbc725134edbee3a5eea29290976695357" }, "mason.nvim": { "branch": "main", "commit": "2a6940af80375532e5e9e7c1f2fc6319a1b7a69d" }, "menu": { "branch": "main", "commit": "7a0a4a2896b715c066cfbe320bdc048091874cc6" }, @@ -28,7 +28,7 @@ "nvim-dap-ui": { "branch": "master", "commit": "1a66cabaa4a4da0be107d5eda6d57242f0fe7e49" }, "nvim-lspconfig": { "branch": "master", "commit": "292f44408498103c47996ff5c18fd366293840d8" }, "nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" }, - "nvim-tree.lua": { "branch": "master", "commit": "7ff7040bf6c246671eb55cb1727de4fd9f92a106" }, + "nvim-tree.lua": { "branch": "master", "commit": "cf18a662cd5f200361b6fedfb794eed583e075e1" }, "nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" }, "nvim-web-devicons": { "branch": "master", "commit": "dad71387de386a946b123079d0e53f23028f3abd" }, "oil.nvim": { "branch": "master", "commit": "b73018b75affd13fa38e2fc94ef753b465f770d7" }, @@ -38,7 +38,7 @@ "todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" }, "toggleterm.nvim": { "branch": "main", "commit": "50ea089fc548917cc3cc16b46a8211833b9e3c7c" }, "trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" }, - "ui": { "branch": "v3.0", "commit": "3e67e9d5325fd47fdbc90ca00a147db2f3525754" }, + "ui": { "branch": "v3.0", "commit": "28019401865beffcedc744bb1506d0201b88f2f9" }, "volt": { "branch": "main", "commit": "620de1321f275ec9d80028c68d1b88b409c0c8b1" }, "which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" } } diff --git a/scripts/01-package-install.sh b/scripts/01-package-install.sh index acaf657..c52fec2 100755 --- a/scripts/01-package-install.sh +++ b/scripts/01-package-install.sh @@ -13,36 +13,58 @@ fi # Define base package list BASE_PACKAGE_LIST=( + ansible + bat btop curl - git - gh + direnv + eza fd-find flatpak + fzf + git + gh + httpie + iperf3 jq + k9s + kubectl + minikube + mtr + nmap python3 python3-pip ripgrep - virt-manager - zsh - wget + socat + tcpdump + terraform + tldr + tmux + traceroute unzip + virt-manager + wget + whois + zoxide + zsh ) # Distro-specific packages to add to the main list DISTRO_SPECIFIC_PACKAGES=() if [ "$PACKAGE_MANAGER" == "dnf" ]; then DISTRO_SPECIFIC_PACKAGES+=( + "bind-utils" # dig, nslookup, etc. "fontconfig-devel" # for fc-cache + "nmap-ncat" # netcat utility "openssl-devel" # for various compilations "util-linux-user" # for chsh, if needed by OhMyZsh script ) elif [ "$PACKAGE_MANAGER" == "apt" ]; then DISTRO_SPECIFIC_PACKAGES+=( + "dnsutils" "libfontconfig-dev" "libssl-dev" - "fd-find" # On Debian/Ubuntu, binary is fdfind, symlink to fd often needed - # Or user might prefer 'fd' package if available from other sources + "netcat-openbsd" ) fi diff --git a/scripts/02-dev-tools-setup.sh b/scripts/02-dev-tools-setup.sh index 670a4d7..8cf072a 100755 --- a/scripts/02-dev-tools-setup.sh +++ b/scripts/02-dev-tools-setup.sh @@ -154,3 +154,122 @@ fi echo "--- Development Tools Setup Finished ---" +# --- Helm (Kubernetes package manager) --- +echo "" +echo "--- Installing Helm ---" +if command -v helm &>/dev/null; then + echo "✔ Helm already installed: $(helm version --short 2>/dev/null | head -n1)" +else + echo "➤ Fetching latest Helm version..." + HELM_LATEST="$(curl -fsSL https://api.github.com/repos/helm/helm/releases/latest | grep '"tag_name"' | cut -d'"' -f4)" + # e.g. "v3.16.0" + echo " latest is ${HELM_LATEST}, downloading..." + TMPDIR="$(mktemp -d)" + curl -fsSL "https://get.helm.sh/helm-${HELM_LATEST}-linux-${ARCH}.tar.gz" -o "${TMPDIR}/helm.tar.gz" + tar -C "${TMPDIR}" -xzf "${TMPDIR}/helm.tar.gz" + sudo install -m755 "${TMPDIR}/linux-${ARCH}/helm" /usr/local/bin/helm + rm -rf "${TMPDIR}" + echo "Installed Helm ${HELM_LATEST} to /usr/local/bin/helm" +fi + +# --- kubectx + kubens (fast k8s context/namespace switching) --- +echo "" +echo "--- Installing kubectx & kubens ---" +_install_kubectx_kubens() { + KUBECTX_VERSION="v0.9.5" + echo " version: ${KUBECTX_VERSION}" + TMPDIR="$(mktemp -d)" + curl -fsSL "https://raw.githubusercontent.com/ahmetb/kubectx/${KUBECTX_VERSION}/kubectx" \ + -o "${TMPDIR}/kubectx" + curl -fsSL "https://raw.githubusercontent.com/ahmetb/kubectx/${KUBECTX_VERSION}/kubens" \ + -o "${TMPDIR}/kubens" + sudo install -m755 "${TMPDIR}/kubectx" /usr/local/bin/kubectx + sudo install -m755 "${TMPDIR}/kubens" /usr/local/bin/kubens + rm -rf "${TMPDIR}" + echo "✔ kubectx & kubens installed to /usr/local/bin/" +} +if command -v kubectx &>/dev/null && command -v kubens &>/dev/null; then + echo "✔ kubectx & kubens already installed" +else + _install_kubectx_kubens +fi + +# --- stern (multi-pod/container log tailing for k8s) --- +echo "" +echo "--- Installing stern ---" +_stern_version() { + curl -fsSL "https://api.github.com/repos/stern/stern/releases/latest" \ + | grep '"tag_name"' | cut -d'"' -f4 +} +if command -v stern &>/dev/null; then + echo "✔ stern already installed" +else + STERN_VER="$(_stern_version)" + echo " latest is ${STERN_VER}, downloading..." + TMPDIR="$(mktemp -d)" + STERN_URL="https://github.com/stern/stern/releases/download/${STERN_VER}/stern_${STERN_VER#v}_linux_${ARCH}.tar.gz" + curl -fsSL "${STERN_URL}" -o "${TMPDIR}/stern.tar.gz" + tar -C "${TMPDIR}" -xzf "${TMPDIR}/stern.tar.gz" stern + sudo install -m755 "${TMPDIR}/stern" /usr/local/bin/stern + rm -rf "${TMPDIR}" + echo "✔ stern ${STERN_VER} installed to /usr/local/bin/stern" +fi + +# --- dive (Docker image layer explorer) --- +echo "" +echo "--- Installing dive ---" +_dive_version() { + curl -fsSL "https://api.github.com/repos/wagoodman/dive/releases/latest" \ + | grep '"tag_name"' | cut -d'"' -f4 +} +if command -v dive &>/dev/null; then + echo "✔ dive already installed" +else + DIVE_VER="$(_dive_version)" + echo " latest is ${DIVE_VER}, downloading..." + DIVE_URL="https://github.com/wagoodman/dive/releases/download/${DIVE_VER}/dive_${DIVE_VER#v}_linux_${ARCH}.deb" + TMPDIR="$(mktemp -d)" + curl -fsSL "${DIVE_URL}" -o "${TMPDIR}/dive.deb" + if [ "${PACKAGE_MANAGER}" = "apt" ]; then + sudo dpkg -i "${TMPDIR}/dive.deb" 2>/dev/null || sudo apt-get install -f -y + else + # For rpm-based distros, extract binary from deb + ar x "${TMPDIR}/dive.deb" data.tar.gz 2>/dev/null \ + && tar -C "${TMPDIR}" -xzf data.tar.gz ./usr/local/bin/dive \ + && sudo install -m755 "${TMPDIR}/usr/local/bin/dive" /usr/local/bin/dive \ + || echo "⚠ Could not install dive from .deb on non-apt system. Try manual install." + fi + rm -rf "${TMPDIR}" + echo "✔ dive ${DIVE_VER} installed" +fi + +# --- trivy (container/filesystem vulnerability scanner) --- +echo "" +echo "--- Installing trivy ---" +if command -v trivy &>/dev/null; then + echo "✔ trivy already installed: $(trivy --version 2>/dev/null | head -n1)" +else + echo "➤ Downloading trivy via official install script..." + curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh \ + | sudo sh -s -- -b /usr/local/bin + echo "✔ trivy installed to /usr/local/bin/trivy" +fi + +# --- AWS CLI v2 --- +echo "" +echo "--- Installing AWS CLI v2 ---" +_awscli_install() { + TMPDIR="$(mktemp -d)" + curl -fsSL "https://awscli.amazonaws.com/awscli-exe-linux-${ARCH_RAW}.zip" \ + -o "${TMPDIR}/awscliv2.zip" + unzip -q "${TMPDIR}/awscliv2.zip" -d "${TMPDIR}" + sudo "${TMPDIR}/aws/install" --update + rm -rf "${TMPDIR}" + echo "✔ AWS CLI v2 installed" +} +if command -v aws &>/dev/null; then + echo "✔ AWS CLI already installed: $(aws --version 2>&1)" +else + _awscli_install +fi +