Created
January 11, 2026 02:04
-
-
Save JonathanHarford/bfd4011d46dc6ca2552c0eba2089d244 to your computer and use it in GitHub Desktop.
This is what I'm going to use when I reinstall Linux.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/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