My Arch Linux
Workstation Setup: Everything I Install and Why
By Jared Lyvers, ldnddev — March 17, 2026
Every developer's workstation tells a story. The tools you reach for every day, the shortcuts you've built into muscle memory, the setup decisions you made a year ago that you're still either grateful for or quietly cursing — it's all there.
I run Arch Linux. I've tried other distros, and I keep coming back. The control, the rolling release model, the AUR — it fits the way I work. My desktop environment is Sway, a tiling Wayland compositor that keeps everything keyboard-driven and out of the way. No bloat, no mystery processes, just tools doing their jobs.
This post is a full walkthrough of my workstation setup: what I install, why it's on the list, and how it all fits together for a web development workflow. If you're setting up a similar environment or just curious what a working Linux dev setup looks like in 2026, this is it.
Step One: Base Install via archinstall
I install Arch using the archinstall script. This isn't cheating — it's just not spending an hour on partitioning when there are more interesting problems to solve. The archinstall script gets me a clean base system quickly, and from there everything is deliberate and manual.
Desktop environment: Sway with LY as the login manager. LY is a minimal terminal-based display manager — no GUI login screen, just a clean tty prompt. It loads fast, looks clean, and stays out of the way.
Once the base install finishes, I chroot into the system before rebooting to get mirrors sorted and packages installed in one shot:
sudo pacman -S reflector
sudo reflector --verbose --sort rate -l 20 --save /etc/pacman.d/mirrorlist
sudo pacman -Syu
reflector finds the fastest mirrors for your location and writes a sorted mirrorlist. Running this before the first big package install saves real time — package downloads are noticeably faster with an optimized mirror list.
The Core Package Install
This is the big initial install that gets my environment functional. I run it as one pacman command to pull everything down together:
sudo pacman -S thunar thunar-archive-plugin thunar-media-tags-plugin thunar-volman \
tumbler ffmpegthumbnailer gvfs gvfs-smb gvfs-mtp starship zed bitwarden \
ttf-firacode-nerd php fzf fuzzel nwg-panel nwg-shell nwg-look-bin wezterm \
noto-fonts-emoji rustup bind whois bluez bluez-utils swayosd grim slurp \
satty obs-studio wf-recorder vlc xdg-desktop-portal \
xdg-desktop-portal-gtk xdg-desktop-portal-wlr
A few things worth calling out here:
Thunar is my file manager. It's lightweight, Wayland-friendly, and the plugin ecosystem covers everything I need — archive handling, volume management, thumbnail generation for video files via tumbler and ffmpegthumbnailer.
Starship is my shell prompt. Cross-shell, fast, configurable, and it shows exactly the context I need — current directory, git branch, language versions — without cluttering the line.
Zed is my primary code editor. It's fast — genuinely, noticeably fast compared to VS Code — and the collaborative features are solid. It's been my main editor for a while now and I have no plans to change.
I'm currently working on a new Zed plugin that should drop soon. Be on the lookout for it!
Wezterm is my terminal emulator. GPU-accelerated, Lua-configurable, and it handles fonts and ligatures cleanly with FiraCode Nerd Font.
fzf is a fuzzy finder that integrates into shell workflows for file search, command history, and process selection. Once you have it, you can't go back.
fuzzel is my application launcher — a minimal Wayland-native dmenu replacement that fits the Sway workflow well.
grim + slurp + satty handle screenshots on Wayland. grim captures, slurp handles region selection, and satty is a lightweight annotation tool for marking up screenshots before sharing.
swayosd provides on-screen display overlays for volume and brightness changes — the small UX detail that makes the desktop feel complete.
rustup is the Rust toolchain manager. I build TUI tools in Rust, so this is essential — it manages stable/nightly channels and keeps the toolchain organized.
AUR Setup: paru and yay
After the base install and first reboot, I set up AUR helpers. I use both paru and yay depending on the situation — paru for most things, yay when a specific package needs it.
# paru
git clone https://aur.archlinux.org/paru.git
cd paru/ && makepkg -si
paru -S pacsea-bin
# yay
git clone https://aur.archlinux.org/yay.git
cd yay && makepkg -si
cd .. && rm -rf yay
pacsea is worth calling out — it's a TUI package search tool that wraps both pacman and the AUR, making it significantly easier to find and install packages without remembering exact names. I use it constantly.
A few extra system tools I pull in via yay:
yay -S monitui bluetuith wayfreeze-git
monitui is a TUI system monitor. bluetuith is a TUI Bluetooth manager — pairs devices, manages connections, all from the terminal. wayfreeze freezes the Wayland compositor output — useful for screenshot workflows where you need the screen locked in place.
Web Development Toolchain
This is where the workstation goes from a clean Linux desktop to a functional web development environment. A few key pieces:
Composer is the PHP dependency manager, essential for Drupal and WordPress development. I install it via pacsea.
Docker and Docker Compose handle containerized environments. After installing:
sudo systemctl start docker.service
sudo systemctl enable docker.service
sudo usermod -aG docker $USER
Adding your user to the docker group means you're not running every Docker command with sudo. Small thing, but it matters when you're running containers all day.
Lando is my local development environment tool of choice. It sits on top of Docker and provides opinionated configurations for Drupal, WordPress, and custom stacks. Instead of writing Docker Compose files from scratch for every project, Lando gives you a clean YAML-based config that handles the plumbing. If you're doing serious Drupal or WordPress development and you're not using Lando, it's worth a serious look.
Terminus is the Pantheon CLI. I install it to ~/.terminus and symlink it to ~/.local/bin/terminus to keep it cleanly out of the system path. If you deploy to Pantheon hosting, Terminus is indispensable for environment management, deployments, and database operations from the command line.
TUI Tools: The Part I Actually Enjoy
This is my favorite part of the setup. I build TUI tools and I use them — here's what's on the list and why each one earns its spot.
LazyGit is a terminal UI for Git. Branch management, staging hunks, resolving conflicts, interactive rebases — all of it in a fast, keyboard-driven interface. I use it every day. If you spend time at the terminal and you're still typing raw Git commands for everything, LazyGit will change your workflow.
LazySQL is a TUI database client. Connect to MySQL, PostgreSQL, SQLite — browse tables, run queries, inspect schemas. Fast and keyboard-driven. Great for poking around a local Lando database without spinning up a GUI tool.
Posting is a TUI API client — think Postman, but in the terminal. For testing REST APIs and webhooks during development, it keeps me in the terminal instead of context-switching to a browser.
Termscp is a TUI SFTP/SCP client for file transfers. Clean interface, supports multiple protocols, and it's fast. Useful for deployments and remote file management.
dd_dotstore is a tool I built. It manages dotfile symlinks with a TUI — lets you browse your dotfile repo, create and remove symlinks in bulk, and track what's linked where. Availible on Bitbucket if you want to check it out.
dd_wcag is another one of mine — a WCAG contrast checker TUI with palette support. Useful for accessibility checks during design and development. Availible on Bitbucket if you want to check it out.
Design and Creative Tools
Web development doesn't happen in a vacuum — sometimes you need image editing, vector work, or screen recording.
GIMP handles bitmap image editing. Not Photoshop, but for what I need — optimizing images, quick edits, export work — it does the job.
Inkscape is my vector tool. SVG editing, icon work, anything that needs precise vector output.
OBS Studio and wf-recorder both handle screen recording. OBS for anything serious — screen recordings with audio, streaming setups. wf-recorder for quick Wayland screen captures when I just need a clip without OBS overhead.
Configs and Dotfiles
The final piece that makes the workstation actually feel like mine is the dotfile configuration. Everything — Sway config, Wezterm settings, Starship prompt, shell aliases, Neovim setup — lives in a dotfile repo on Bitbucket. After installing tools, I use dd_dotstore to pull the repo and symlink everything into place in one pass.
Having your dotfiles in version control means a new machine gets from fresh install to fully configured in under an hour. It's one of the higher-leverage things you can do for your workflow if you haven't done it yet.
Why Arch, and Why Sway
The honest answer to "why Arch" is that I want to know what's on my machine. Rolling release means I'm always running current software. The AUR means I can find almost anything. And the process of setting it up — even with archinstall handling the partitioning — means I understand the system I'm running on.
Sway as a Wayland tiling compositor is genuinely productivity-improving once it clicks. Everything is keyboard-driven. Windows tile automatically. There's no mouse dependency for switching contexts or resizing panes. The initial learning curve is real, but the speed you get on the other side is worth it.
For web development specifically — where you're juggling a code editor, terminal sessions, browser dev tools, a local Lando environment, and probably a dozen other things simultaneously — a tiling window manager that keeps everything organized without you thinking about it is a meaningful quality-of-life improvement.
If you've been curious about Arch or Sway and haven't taken the jump, this setup is a reasonable starting point. It's opinionated but not precious — swap out what doesn't fit your workflow and keep the rest.
Until next time, Jared Lyvers
Ready To Go!
Have a project brewing? Let’s chat and explore how we can help you bring it to life. Share your ideas and let’s get started.