Compare commits

..

3 Commits

Author SHA1 Message Date
Blake Ridgway
5efb3dab48 feat: add Arcline-Dark theme for Zed editor 2026-07-11 16:26:16 -05:00
Blake Ridgway
4063e26c30 feat: expand devops tooling in setup scripts
Add networking, cloud, and devops packages to 01-package-install.sh
(ansible, k9s, kubectl, minikube, terraform, nmap, etc). Add installers
for helm, kubectx/kubens, stern, dive, trivy, and AWS CLI v2 to
02-dev-tools-setup.sh. Update nvim lazy-lock.json.
2026-07-11 16:26:08 -05:00
Blake Ridgway
671fc9cf07 feat: add kubernetes, terraform, docker, networking aliases; update nvim config
Add comprehensive aliases for k8s, terraform, AWS, Docker and networking
in both bash and zsh. Update avante.nvim config (max_tokens=32000,
behaviour settings). Update README to reflect new packages.
2026-07-11 16:26:02 -05:00
8 changed files with 546 additions and 13 deletions

View File

@@ -19,6 +19,9 @@ The script will automatically detect your Linux distribution (Fedora, Ubuntu, De
- System utilities: `btop`, `fastfetch`, `zsh`, `flatpak`
- Virtualization: `virt-manager`
- Python: `python3`, `python3-pip`
- Networking: `nmap`, `mtr`, `tcpdump`, `socat`, `whois`, `iperf3`, `traceroute`
- Cloud / DevOps: `kubectl`, `k9s`, `minikube`, `terraform`, `helm`, `direnv`
- HTTP: `curl`, `httpie`
### Development Environment
- **Neovim** (latest version from GitHub)
@@ -50,7 +53,7 @@ The setup is broken down into focused scripts:
- `00-system-prep.sh` - System updates and Flathub setup
- `01-package-install.sh` - Core packages and Flatpak apps
- `02-dev-tools-setup.sh` - Development tools (Neovim, fonts, shell)
- `02-dev-tools-setup.sh` - Development tools (Neovim, Go, Rust, Helm, kubectx, stern, dive, trivy, AWS CLI)
- `03-fedora-dotnet-setup.sh` - Fedora-specific .NET environment
- `04-config-symlinks.sh` - Dotfile symlinking

View File

@@ -49,3 +49,44 @@ alias vi=nvim
alias vimrc='nvim ~/.config/nvim/init.lua'
alias ealias='nvim ~/dotfiles/aliases.bash'
alias bashrc='nvim ~/.bashrc'
# ── Kubernetes ─────────────────────────────────────────
alias k='kubectl'
alias kg='kubectl get'
alias kgp='kubectl get pods'
alias kgs='kubectl get svc'
alias kgd='kubectl get deployments'
alias kgn='kubectl get nodes'
alias kd='kubectl describe'
alias kl='kubectl logs'
alias klf='kubectl logs -f'
alias kx='kubectx'
alias kn='kubens'
alias kctx='kubectx'
alias kns='kubens'
# ── Terraform ──────────────────────────────────────────
alias tf='terraform'
alias tfi='terraform init'
alias tfa='terraform apply'
alias tfp='terraform plan'
alias tfd='terraform destroy'
alias tff='terraform fmt -recursive'
alias tfv='terraform validate'
alias tfo='terraform output'
# ── AWS ────────────────────────────────────────────────
alias awsl='aws ec2 describe-instances --query "Reservations[*].Instances[*].[InstanceId,State.Name,Tags[?Key==\`Name\`].Value|[0]]" --output table'
# ── Docker / Containers ────────────────────────────────
alias d='docker'
alias dc='docker compose'
alias dcu='docker compose up -d'
alias dcd='docker compose down'
alias dps='docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}}"'
# ── Networking ─────────────────────────────────────────
alias ports='ss -tlnp'
alias myip='curl -4 icanhazip.com'
alias listening='ss -tlnp'
alias pingg='ping -c 4 8.8.8.8'

View File

@@ -49,3 +49,44 @@ alias vi=nvim
alias vimrc='nvim ~/.config/nvim/init.lua'
alias ealias='nvim ~/dotfiles/aliases.zsh'
alias zshrc='nvim ~/.zshrc'
# ── Kubernetes ─────────────────────────────────────────
alias k='kubectl'
alias kg='kubectl get'
alias kgp='kubectl get pods'
alias kgs='kubectl get svc'
alias kgd='kubectl get deployments'
alias kgn='kubectl get nodes'
alias kd='kubectl describe'
alias kl='kubectl logs'
alias klf='kubectl logs -f'
alias kx='kubectx'
alias kn='kubens'
alias kctx='kubectx'
alias kns='kubens'
# ── Terraform ──────────────────────────────────────────
alias tf='terraform'
alias tfi='terraform init'
alias tfa='terraform apply'
alias tfp='terraform plan'
alias tfd='terraform destroy'
alias tff='terraform fmt -recursive'
alias tfv='terraform validate'
alias tfo='terraform output'
# ── AWS ────────────────────────────────────────────────
alias awsl='aws ec2 describe-instances --query "Reservations[*].Instances[*].[InstanceId,State.Name,Tags[?Key==\`Name\`].Value|[0]]" --output table'
# ── Docker / Containers ────────────────────────────────
alias d='docker'
alias dc='docker compose'
alias dcu='docker compose up -d'
alias dcd='docker compose down'
alias dps='docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}}"'
# ── Networking ─────────────────────────────────────────
alias ports='ss -tlnp'
alias myip='curl -4 icanhazip.com'
alias listening='ss -tlnp'
alias pingg='ping -c 4 8.8.8.8'

303
arcline-dark.ron Normal file
View File

@@ -0,0 +1,303 @@
(
palette: Dark((
name: "Arcline-Dark",
blue: (
red: 0.0000000,
green: 0.5647059,
blue: 0.7215686,
alpha: 1.0,
),
red: (
red: 0.8784314,
green: 0.3137255,
blue: 0.3137255,
alpha: 1.0,
),
green: (
red: 0.0000000,
green: 0.7843137,
blue: 0.6274510,
alpha: 1.0,
),
yellow: (
red: 0.9411765,
green: 0.6274510,
blue: 0.1254902,
alpha: 1.0,
),
gray_1: (
red: 0.0470588,
green: 0.0745098,
blue: 0.0980392,
alpha: 1.0,
),
gray_2: (
red: 0.0705882,
green: 0.1098039,
blue: 0.1450980,
alpha: 1.0,
),
gray_3: (
red: 0.1529412,
green: 0.2235294,
blue: 0.2901961,
alpha: 1.0,
),
neutral_0: (
red: 0.0235294,
green: 0.0431373,
blue: 0.0627451,
alpha: 1.0,
),
neutral_1: (
red: 0.0470588,
green: 0.0745098,
blue: 0.0980392,
alpha: 1.0,
),
neutral_2: (
red: 0.0705882,
green: 0.1098039,
blue: 0.1450980,
alpha: 1.0,
),
neutral_3: (
red: 0.1529412,
green: 0.2235294,
blue: 0.2901961,
alpha: 1.0,
),
neutral_4: (
red: 0.2565826,
green: 0.3254902,
blue: 0.3876751,
alpha: 1.0,
),
neutral_5: (
red: 0.3602241,
green: 0.4274510,
blue: 0.4851541,
alpha: 1.0,
),
neutral_6: (
red: 0.4638655,
green: 0.5294118,
blue: 0.5826331,
alpha: 1.0,
),
neutral_7: (
red: 0.5675070,
green: 0.6313725,
blue: 0.6801120,
alpha: 1.0,
),
neutral_8: (
red: 0.6711485,
green: 0.7333333,
blue: 0.7775910,
alpha: 1.0,
),
neutral_9: (
red: 0.7747899,
green: 0.8352941,
blue: 0.8750700,
alpha: 1.0,
),
neutral_10: (
red: 0.8784314,
green: 0.9372549,
blue: 0.9725490,
alpha: 1.0,
),
bright_green: (
red: 0.0000000,
green: 0.9098039,
blue: 0.7529412,
alpha: 1.0,
),
bright_red: (
red: 0.9411765,
green: 0.4705882,
blue: 0.4705882,
alpha: 1.0,
),
bright_orange: (
red: 0.9725490,
green: 0.7843137,
blue: 0.2509804,
alpha: 1.0,
),
ext_warm_grey: (
red: 0.4705882,
green: 0.5490196,
blue: 0.5960784,
alpha: 1.0,
),
ext_orange: (
red: 0.9411765,
green: 0.6274510,
blue: 0.1254902,
alpha: 1.0,
),
ext_yellow: (
red: 0.9411765,
green: 0.6274510,
blue: 0.1254902,
alpha: 1.0,
),
ext_blue: (
red: 0.0000000,
green: 0.5647059,
blue: 0.7215686,
alpha: 1.0,
),
ext_purple: (
red: 0.4078431,
green: 0.4705882,
blue: 0.7529412,
alpha: 1.0,
),
ext_pink: (
red: 0.6431373,
green: 0.3921569,
blue: 0.5333333,
alpha: 1.0,
),
ext_indigo: (
red: 0.4078431,
green: 0.4705882,
blue: 0.7529412,
alpha: 1.0,
),
accent_blue: (
red: 0.0000000,
green: 0.5647059,
blue: 0.7215686,
alpha: 1.0,
),
accent_red: (
red: 0.8784314,
green: 0.3137255,
blue: 0.3137255,
alpha: 1.0,
),
accent_green: (
red: 0.0000000,
green: 0.7843137,
blue: 0.6274510,
alpha: 1.0,
),
accent_warm_grey: (
red: 0.4705882,
green: 0.5490196,
blue: 0.5960784,
alpha: 1.0,
),
accent_orange: (
red: 0.9411765,
green: 0.6274510,
blue: 0.1254902,
alpha: 1.0,
),
accent_yellow: (
red: 0.9411765,
green: 0.6274510,
blue: 0.1254902,
alpha: 1.0,
),
accent_purple: (
red: 0.4078431,
green: 0.4705882,
blue: 0.7529412,
alpha: 1.0,
),
accent_pink: (
red: 0.6431373,
green: 0.3921569,
blue: 0.5333333,
alpha: 1.0,
),
accent_indigo: (
red: 0.4078431,
green: 0.4705882,
blue: 0.7529412,
alpha: 1.0,
),
)),
spacing: (
space_none: 0,
space_xxxs: 4,
space_xxs: 8,
space_xs: 12,
space_s: 16,
space_m: 24,
space_l: 32,
space_xl: 48,
space_xxl: 64,
space_xxxl: 128,
),
corner_radii: (
radius_0: (0.0, 0.0, 0.0, 0.0),
radius_xs: (3.0, 3.0, 3.0, 3.0),
radius_s: (8.0, 8.0, 8.0, 8.0),
radius_m: (8.0, 8.0, 8.0, 8.0),
radius_l: (10.0, 10.0, 10.0, 10.0),
radius_xl: (10.0, 10.0, 10.0, 10.0),
),
neutral_tint: Some((
red: 0.0470588,
green: 0.0745098,
blue: 0.0980392,
)),
bg_color: Some((
red: 0.0235294,
green: 0.0431373,
blue: 0.0627451,
alpha: 1.0,
)),
primary_container_bg: Some((
red: 0.0470588,
green: 0.0745098,
blue: 0.0980392,
alpha: 1.0,
)),
secondary_container_bg: Some((
red: 0.0705882,
green: 0.1098039,
blue: 0.1450980,
alpha: 1.0,
)),
text_tint: Some((
red: 0.7215686,
green: 0.8039216,
blue: 0.8470588,
)),
accent: Some((
red: 0.0000000,
green: 0.7843137,
blue: 0.9411765,
)),
success: Some((
red: 0.0000000,
green: 0.7843137,
blue: 0.6274510,
)),
warning: Some((
red: 0.9411765,
green: 0.6274510,
blue: 0.1254902,
)),
destructive: Some((
red: 0.8784314,
green: 0.3137255,
blue: 0.3137255,
)),
is_frosted: false,
gaps: (0, 3),
active_hint: 2,
window_hint: Some((
red: 0.0000000,
green: 0.7843137,
blue: 0.9411765,
)),
)

View File

@@ -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" }
}

View File

@@ -193,10 +193,14 @@ return {
api_key_name = "DEEPSEEK_API_KEY",
endpoint = "https://api.deepseek.com/v1",
model = "deepseek-v4-pro",
extra_request_body = { temperature = 0, max_tokens = 8192 },
extra_request_body = { temperature = 0, max_tokens = 32000 },
},
},
input = { provider = "dressing" },
behaviour = {
auto_approve_tool_permissions = false,
confirmation_ui_style = "popup",
},
},
config = function(_, opts)
require("avante").setup(opts)

View File

@@ -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

View File

@@ -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