# 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