Skip to content

Instantly share code, notes, and snippets.

@JonathanHarford
Created January 11, 2026 02:04
Show Gist options
  • Select an option

  • Save JonathanHarford/bfd4011d46dc6ca2552c0eba2089d244 to your computer and use it in GitHub Desktop.

Select an option

Save JonathanHarford/bfd4011d46dc6ca2552c0eba2089d244 to your computer and use it in GitHub Desktop.
This is what I'm going to use when I reinstall Linux.
#!/bin/bash
set -e # Exit immediately if a command exits with a non-zero status
echo "Starting Setup..."
# 1. Update System & Install Core Deps
echo "Updating system and installing core dependencies..."
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git build-essential zsh snapd
# 2. ZSH & Oh My Zsh
echo "Installing Oh My Zsh..."
# Check if OMZ is already installed to avoid errors
if [ ! -d "$HOME/.oh-my-zsh" ]; then
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
else
echo "Oh My Zsh is already installed. Skipping."
fi
# Change default shell to zsh for the current user
if [ "$SHELL" != "$(which zsh)" ]; then
sudo chsh -s "$(which zsh)" "$USER"
fi
# Configure ZSH Plugins (git & z)
echo "Configuring ZSH plugins..."
sed -i 's/^plugins=(git)/plugins=(git z)/' "$HOME/.zshrc"
# 3. Third-Party Installers
echo "Installing Ghostty..."
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/mkasberg/ghostty-ubuntu/HEAD/install.sh)"
echo "Installing Homebrew..."
if ! command -v brew &> /dev/null; then
NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Add brew to current shell session environment
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
# Add brew to .zshrc for future sessions
echo "eval \"\$($(your_brew_prefix)/bin/brew shellenv)\"" >> "$HOME/.zshrc"
fi
echo "Installing NVM..."
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
ech "Installing Vibe Transcriber..."
curl -sSf https://thewh1teagle.github.io/vibe/installer.sh | sh -s v3.0.5
echo "Installing Claude..."
curl -fsSL https://claude.ai/install.sh | bash
# 4. Antigravity Repo
echo "Setting up Antigravity repo..."
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://us-central1-apt.pkg.dev/doc/repo-signing-key.gpg | \
sudo gpg --dearmor --yes -o /etc/apt/keyrings/antigravity-repo-key.gpg
echo "deb [signed-by=/etc/apt/keyrings/antigravity-repo-key.gpg] https://us-central1-apt.pkg.dev/projects/antigravity-auto-updater-dev/ antigravity-debian main" | \
sudo tee /etc/apt/sources.list.d/antigravity.list > /dev/null
# 5. Espanso (Wayland)
echo "Installing Espanso..."
ESPANSO_DEB="espanso-debian-wayland-amd64.deb"
if [ ! -f "$ESPANSO_DEB" ]; then
wget "https://github.com/espanso/espanso/releases/latest/download/$ESPANSO_DEB"
fi
sudo apt install -y "./$ESPANSO_DEB"
sudo setcap "cap_dac_override+p" "$(which espanso)"
# Note: Espanso service registration might fail if systemd isn't ready for user yet, warning suppressed.
espanso service register || echo "Espanso service register failed (minor issue, check manually)"
espanso start || echo "Espanso start failed (check manually)"
rm "$ESPANSO_DEB"
# 6. Install APT Packages
echo "Installing APT packages..."
sudo apt update
sudo apt install -y antigravity filen podman podman-compose tree
# 7. Install Homebrew Packages
echo "Installing Homebrew packages..."
brew install gemini-cli babashka clojure supabase/tap/supabase yt-dlp
# 8. Install Flatpaks
echo "Installing Flatpaks..."
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install -y flathub \
com.heroicgameslauncher.hgl \
dev.vencord.Vesktop \
io.anytype.anytype \
io.podman_desktop.PodmanDesktop \
org.chromium.Chromium \
org.prismlauncher.PrismLauncher \
org.signal.Signal \
it.mijorus.smile \
com.bitwarden.desktop \
org.onlyoffice.desktopeditors \
io.github.chidiwilliams.Buzz \
org.gimp.GIMP \
org.kde.haruna \
com.mastermindzh.tidal-hifi \
org.jellyfin.JellyfinDesktop \
app.zen_browser.zen
# 9. Configure Snap & Ngrok
echo "Configuring Snap and Ngrok..."
# Note: Snap path might not be active in current shell without re-login
if [ "$NGROK_TOKEN" != "YOUR_TOKEN_HERE" ]; then
sudo snap install ngrok
ngrok config add-authtoken "$NGROK_TOKEN"
else
echo "WARNING: Ngrok token not set. Skipping auth configuration."
fi
# Final Cleanup
sudo apt autoremove -y
echo "Installation complete! Please restart your computer to ensure all paths (Snap, Flatpak, Zsh) are loaded correctly."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment