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
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 -Syudaily — Arch is rolling, keep it updated - Use
timeshiftfor system snapshots before major updates - Learn
tmux— multiplexing sessions is a superpower for SSH work - Enable
systemdservices properly:sudo systemctl enable --now docker