I switched to Arch Linux (specifically Garuda Linux, which is an Arch-based distro with a beautiful KDE setup) six months ago, and it has completely changed how I work. The speed, the control, and the bleeding-edge packages make it the perfect OS for a developer. Here's exactly how I set up my environment.

Why Arch / Garuda?

Most beginner distros like Ubuntu are great for getting started, but they often ship outdated packages. Arch gives you the latest everything — kernel, compilers, runtimes — which matters when you're working with newer tools. Garuda adds a polished UI on top without sacrificing the Arch rolling-release model.

"I use Arch, btw." — but actually, the productivity gains are real.

Terminal Setup: Kitty + Zsh + Oh My Zsh

My terminal stack:

  • Kitty — GPU-accelerated, fast, supports ligatures
  • Zsh as the shell with Oh My Zsh framework
  • Powerlevel10k theme — shows git status, runtime, exit codes
  • zsh-autosuggestions + zsh-syntax-highlighting plugins
# Install Zsh and Oh My Zsh
sudo pacman -S zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

# Install Powerlevel10k
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git \
  ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

Editors: VS Code + Neovim

I use VS Code for most project work (Python, JavaScript, Java) and Neovim for quick file edits and config files. Essential VS Code extensions:

  • Python (Microsoft) — IntelliSense, debugger, Pylance
  • GitLens — supercharged git blame & history
  • Docker — container management from the sidebar
  • Remote SSH — edit files directly on EC2 or Raspberry Pi
  • Material Icon Theme + One Dark Pro theme

Essential Dev Tools

Tools I install on every fresh Arch setup:

sudo pacman -S git base-devel python python-pip nodejs npm \
  docker docker-compose jdk-openjdk neovim htop bat fd \
  ripgrep fzf tmux wget curl unzip

# AUR helpers
yay -S visual-studio-code-bin google-chrome postman-bin
Tip: Use bat instead of cat — it adds syntax highlighting and line numbers. Use fd instead of find — it's much faster and more intuitive.

Managing Dotfiles with Git

The smartest thing you can do is version-control your configuration files. I use a bare git repository approach:

git init --bare $HOME/.dotfiles
alias dotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
dotfiles config --local status.showUntrackedFiles no

# Track your configs
dotfiles add ~/.zshrc ~/.config/kitty/kitty.conf ~/.config/nvim/init.lua
dotfiles commit -m "Add initial dotfiles"
dotfiles remote add origin https://github.com/yourusername/dotfiles
dotfiles push -u origin main

Python Environment Management

I use pyenv to manage multiple Python versions and virtualenv for project isolation. Never install packages globally on Arch:

yay -S pyenv
pyenv install 3.12.0
pyenv global 3.12.0

# Per-project virtual environment
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Final Tips

  • Run sudo pacman -Syu daily — Arch is rolling, keep it updated
  • Use timeshift for system snapshots before major updates
  • Learn tmux — multiplexing sessions is a superpower for SSH work
  • Enable systemd services properly: sudo systemctl enable --now docker

Share this article: