My Personal Arch Linux Setup
I periodically reinstall my operating system to maintain a clean and efficient environment. My distribution of choice is Arch Linux, paired with the Hyprland window manager. This document outlines the essential steps I follow to set up my machine. The tone is intentionally direct and serves as a personal checklist that might be useful to others.
1. The Foundation: Shell and Package Management
A good shell is crucial. I use zsh with Oh My Zsh for a better interactive experience.
# Install zsh and set it as default
sudo pacman -S zsh
chsh -s /usr/bin/zsh
# Install Oh My Zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
Next, I tweak pacman.conf for a better experience. Adding some color, parallel downloads, and a bit of fun.
/etc/pacman.conf
Color
VerbosePkgLists
ParallelDownloads = 5
ILoveCandy
To access the Arch User Repository (AUR), I use paru.
# Install paru
git clone https://aur.archlinux.org/paru.git
cd paru
makepkg -si
cd ~ && rm -rf paru
2. Core Software Installation
With pacman and paru ready, I install a curated list of applications and tools. This is
not an exhaustive list but covers the essentials for development, productivity, and creativity.
From the official repositories:
sudo pacman -S \
neovim firefox flatpak gimp inkscape neofetch okular discord \
helix krita lutris mpv obs-studio go nushell starship \
wezterm httpie python-pipx tlp docker rofi grim slurp \
cliphist tree github-cli thefuck noto-fonts noto-fonts-emoji \
pika-backup rust-analyzer glow reflector wf-recorder fastfetch
From the AUR:
paru -S \
visual-studio-code-bin quarto-cli brave-bin slack-desktop \
swaync brillo blueberry-wayland hyprlock brightnessctl-git \
cursor-bin 1password zed-preview mods autojump spaceship-prompt \
anytype-bin podman-desktop-git nerdfonts-installer-bin hyprpicker-git \
auto-cpufreq nvtop
3. Development Environment
My workflow is centered around efficient and AI-augmented tools.
Editors and Terminals
I primarily use Zed and Helix. Zed’s integrated AI features are particularly useful for my day-to-day tasks. For my terminal, I alternate between ghostty and Warp. I use Ghostty for almost everything and when I hit an issue I don’t know, can’t be bothered to debug, or simply need to run ffmpeg, I go to Warp since the inline agent is quite useful and effective.
For a more traditional Vim experience, I use Neovim with the LazyVim configuration. I hardly ever use it nowadays as I have gotten accustomed to Helix.
# Set up LazyVim
git clone https://github.com/LazyVim/starter ~/.config/nvim
rm -rf ~/.config/nvim/.git
Git and Docker
Basic configuration for Git and enabling Docker are next.
# Git Configuration
git config --global user.name "Ramon Perez"
git config --global user.email "xxxx@xxx.com"
git config --global core.editor "helix"
git config --global init.defaultBranch "main"
# Set up gh CLI
gh auth login
# Docker Setup
sudo systemctl enable --now docker.service
sudo usermod -aG docker $USER
Essential CLIs and Runtimes
A modern development workflow requires a variety of CLIs. I install them using their recommended one-liners.
# Bun
curl -fsSL https://bun.sh/install | bash
# Deno
curl -fsSL https://deno.land/install.sh | sh
# uv (Python package manager)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Ollama for local LLMs
curl -fsSL https://ollama.com/install.sh | sh
# Fly.io CLI
curl -L https://fly.io/install.sh | sh
# Turso DB CLI
curl -sSfL https://get.tur.so/install.sh | bash
For AI interactions directly from the terminal, I’m a fan of mods. For
Python tools, I use to depend on pipx but nowadays I simply use uvx.
pipx ensurepath
pipx install harlequin elia_chat posting frogmouth copier awscli
4. System Configuration
Power Management
To optimize battery life, I use auto-cpufreq.
# Enable auto-cpufreq
sudo systemctl enable auto-cpufreq.service
This setup provides a solid foundation for my work and personal projects. It’s a continuous process of refinement, but these steps represent the core of my current environment.