pacman -Qeq lists 240 packages on this machine — the ones I asked for by name, as opposed to the 1,358 that came along as dependencies. I audited the totals separately. This post is the other half: the actual list, minus the parts nobody chooses.
I've cut the plumbing — bluez, cups, gdm, networkmanager, pipewire, kernels, firmware, drivers, fonts, the default GNOME app set. Those are on every machine and carry no information. What's left is what I'd reinstall deliberately on a fresh box, grouped by the reason it exists rather than by repo section.
The shell and the things I type all day
- `zsh` — the shell. Nothing exotic in the config; it's here for completion and history substring search.
- `ghostty` — terminal. Fast, native, and the config is a flat key-value file rather than a Lua program.
- `fzf` — fuzzy finder. The single highest-leverage package on this list. Ctrl-R over shell history alone justifies it.
- `ripgrep` —
grepthat respects.gitignoreand is faster anyway. I have not typedgrep -rin years. - `fd` — same deal for
find.fd fooinstead offind . -name '*foo*'. - `bat` —
catwith syntax highlighting and line numbers. Worth it for reading unfamiliar config files. - `jq` — JSON processor. Every API I touch returns JSON and every CLI here has a
--jsonflag. - `wl-clipboard` —
wl-copy/wl-paste. Wayland has no clipboard without it, and every "pipe this to my clipboard" workflow depends on it. - `rsync`, `wget`, `socat` — the three network utilities I reach for that aren't
curl. - `zip` — only here because something occasionally hands me a
.zipandbsdtarisn't always what a tool expects.
Watching the machine
- `btop` — the system monitor I actually leave open. Mouse support, per-core graphs, readable at a glance.
- `htop` — still installed because muscle memory, and because it starts faster when I only need to kill one process.
- `mission-center` and `resources` — two GTK system monitors. Redundant with each other; both are nicer than
gnome-system-monitorfor GPU and disk. - `rustnet` — network monitoring TUI with per-process attribution via eBPF. The answer to "what is talking to the internet right now".
- `fastfetch` — yes, it's the screenshot tool. It's also the fastest way to confirm which kernel actually booted.
- `smartmontools` — SMART data. Install it before you need it, not after the disk starts clicking.
- `turbostat` — real per-core frequency and C-state residency. The tool that tells you whether your power tuning did anything.
- `sysprof` — kernel-level profiler, for when a desktop stutter needs a cause rather than a guess.
- `baobab` — graphical disk usage. Finds the 40 GiB directory you forgot about in about ten seconds.
Arch-specific survival kit
- `paru` — AUR helper. 32 packages on this machine come from outside the official repos.
- `pacman-contrib` — ships
paccache(prune the package cache),pactree(why is this installed), andcheckupdates(list updates without touching the DB). All three are essential and none ship withpacmanitself. - `namcap` — lints a PKGBUILD or a built package. Useful the moment you package anything yourself.
- `snapper` + `snap-pac` — Btrfs snapshots, with pacman hooks that snapshot automatically before and after every transaction. This is the reason a bad update on Arch is a five-minute inconvenience instead of a reinstall. If you run Btrfs and install nothing else from this section, install these two.
- `archlinuxcn-keyring` — needed for the archlinuxcn repo.
- `zram-generator` — compressed swap in RAM. Better than a swap file on an SSD, and it's one config file.
- `tlp` + `tlp-pd` — laptop power management, integrated with power-profiles-daemon so GNOME's power modes actually do something.
- `system76-firmware` — hardware-specific. Only relevant if you have the hardware.
- `fwupd` — vendor firmware updates through LVFS. Worth having even if nothing you own ships updates through it yet.
Git and building things
- `github-cli` —
gh pr create,gh run watch,gh api. Removes the browser from most of the GitHub loop. - `lazygit` — TUI for staging hunks and rewriting history. Faster than the CLI for interactive rebases, faster than a GUI for everything else.
- `git-lfs` — needed the moment a repo you clone uses it.
- `ccache` — caches compilations. Free speedup on any C/C++ project you rebuild more than once.
- `lld` — LLVM linker. Noticeably faster than GNU ld on large link steps; Rust and Zig both take advantage.
- `patchelf` — rewrites RPATH and the interpreter on an ELF. Niche until you're fixing a prebuilt binary that can't find its libraries, at which point it's the only tool.
- `tree-sitter-cli` — for developing and testing grammars, and for
tree-sitter parsewhen you want to see what an editor sees. - `namcap`, again, if you build packages.
Toolchains
- `zig` — 0.16. Also the most convenient C cross-compiler I have (
zig cc). - `go` — for the Go projects and for
wails. - `rustup` — not
rust. Toolchain management matters more than having one system compiler. - `nodejs` + `pnpm` — pnpm for the content-addressed store;
node_modulesdeduplication is not optional at this point. - `bun` — fast runner and bundler. Kept alongside node rather than replacing it.
- `uv` — Python packaging and environments, fast enough that it changed how often I bother making a venv.
- `mise` — per-project tool versions. Overlaps with rustup and uv, which is a duplication I've accepted.
- `luacheck` + `stylua` — lint and format for Lua, which is to say for the Neovim config.
- `wails` — desktop apps in Go plus web frontend.
- `podman` + `podman-compose` + `podman-docker` — rootless containers, with the
dockerCLI shim so instructions written for Docker work unmodified.
Editors
Eight are installed. These are the ones that are a choice rather than an accident:
- `neovim` — primary editor.
- `zed` — when I want a GUI editor that starts instantly.
- `visual-studio-code-bin` — for the extensions that exist nowhere else.
- `emacs-wayland` — native Wayland build (PGTK). Kept for org-mode.
- `vim` — the fallback that exists on every machine, kept so my fingers don't forget the differences.
Desktop applications worth naming
- `foliate` — GTK ebook reader. The best EPUB experience on Linux, and it isn't close.
- `apostrophe` — distraction-free markdown editor, for writing prose rather than code.
- `curtail` — image compression GUI, lossless and lossy. Every screenshot that ends up on this blog goes through it.
- `pika-backup` — Borg backups with a GUI that makes restores obvious. A backup tool you find intimidating is a backup tool you don't run.
- `gnome-boxes` — VMs, when a container isn't enough isolation.
- `obs-studio` — recording and streaming.
- `extension-manager` — browse and install GNOME extensions without the browser connector.
- `adw-gtk-theme` — makes GTK3 apps match libadwaita ones. Fixes the visual split in a GNOME 50 desktop.
- `gnome-tweaks` — the settings GNOME won't put in Settings.
- `pins` — custom
.desktopentries without hand-writing them. - `papers` — the PDF viewer.
- `vlc` — plays the file when nothing else will.
- `amberol` — local music, no library management.
Chinese input and text
- `ibus-rime` — Rime input method. Configurable to a degree nothing else on Linux approaches.
- `autocorrect-bin` — linter/formatter for spacing and punctuation between CJK and Latin text. Fixes the missing space between 中文 and English that no spell-checker catches.
Font setup is its own subject — 11 packages and 1.25 GiB — and I wrote it up separately.
Network and security
- `ufw` — firewall with a CLI you can use correctly without reading a manual.
- `cloudflare-warp-bin` — WARP client.
- `wrangler` — Cloudflare Workers CLI. This blog deploys with it.
AI tooling
Eighteen packages, 3.81 GiB, and a whole post of its own: Auditing my Arch install. The short version is claude-code, openai-codex, gemini-cli, opencode, plus a long tail I installed to try once.
Installed on purpose, useful to nobody
- `sl` — a steam locomotive crosses your terminal when you typo
ls. - `cmatrix`, `asciiquarium` — screensavers from a different era.
- `go-musicfox-git` — NetEase Cloud Music in the terminal.
I keep these. A machine you never enjoy using is a machine you maintain worse.
---
*Draft. This is the list as of today; some of it is genuinely load-bearing and some of it is here because I installed it once and never removed it. The categories are honest about which is which.*




No comments yet