My Personal Arch Linux Setup

15
linux dotfiles dev arch hyprland

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.