# Ubuntu Linux Development Setup
A complete, opinionated, modern setup for software development on **Ubuntu 26.04 LTS (Resolute Raccoon)**. Every tool here is chosen to install and run identically on **both `amd64` (Intel/AMD) and `arm64` (Arm)** machines, so the same instructions work on a VM regardless of the host's architecture. Start with the general setup, then add whichever languages you work in.
This is the Linux counterpart to the [[Mac Tahoe Development Setup]] guide — same philosophy, same layout, same end result, adapted to Ubuntu and `bash`.
## Where to start
Everyone starts here:
- [[General_Development_Ubuntu_Setup|General Setup]] — the foundation: apt, Git, GitHub CLI, Ghostty, Starship, bash + ble.sh, VS Code, and Claude Code
Then pick the language(s) you'll be working with:
- [[Python_Development_Ubuntu_Setup|Python]] — uv, ruff, mypy, ipython
- [[C_Development_Ubuntu_Setup|C]] — gcc/clang, cmake, ninja, gdb, valgrind, raylib
- [[Ruby_Development_Ubuntu_Setup|Ruby]] — rv, Bundler
- [[Go_Development_Ubuntu_Setup|Go]] — go, golangci-lint, gopls
- [[Rust_Development_Ubuntu_Setup|Rust]] — rustup, cargo tooling
## What you'll end up with
A fast, modern terminal-first toolchain: **Ghostty** as the terminal with a **Starship** prompt, **apt** managing system packages, per-language version managers instead of system interpreters, **VS Code** wired up with the right extensions per language, **Git + GitHub CLI** with SSH configured, and **Claude Code** available in both Ghostty and VS Code. Each language guide ends with a small calculator/demo project, unit tests, and a GUI example so you can confirm the toolchain end to end.
Every guide is independent once the general setup is done — they're peers, not a sequence, so jump straight to the language you need.
> [!info] Why apt instead of Homebrew?
> The Mac guide builds everything on Homebrew. On Linux we use **apt** as the base package manager instead. The deciding reason is architecture: apt is a first-class citizen on both `amd64` and `arm64`, whereas Homebrew on Linux is only officially supported on `x86_64` (its Arm Linux support is unsupported/experimental). Building on apt keeps these instructions working unchanged on an Arm VM. Tools that aren't in apt are installed with official, architecture-aware installers (Starship, uv, rustup, rv, Claude Code) that detect your CPU automatically.
## Companion files
Recommended configuration files to copy into place as you work through the guides:
- [[Ubuntu Linux/_resources/configs/ghostty-config|Ghostty config]]
- [[Ubuntu Linux/_resources/configs/starship.toml|Starship config]]
- [[Ubuntu Linux/_resources/configs/vscode-settings.json|VS Code settings]]
> [!note] How to use these guides
> The guides are written to be **copy/pasted in order** — each is a sequence of commands, not a single runnable script. Some steps (GitHub/Anthropic OAuth, pasting config files, uploading your SSH key) are deliberately manual. If you use an AI assistant other than Claude, the AI-setup steps will differ, and none of the AI setup is required in order to code.
## Related notes
- [[Mac Tahoe Development Setup]] — the Apple Silicon counterpart to this guide
- [[Windows 11 Development Setup]] — the Windows 11 counterpart, including a [[WSL2 Windows Development Setup|WSL2 path]] that runs this Ubuntu guide unchanged inside Windows
- [[Software Development Home]] — index of all platform setups