Back to workbench
/usr/bin/arch-setup

Arch-Setup

How I automate my Arch Linux setup so I can get back to coding faster.

As an Arch Linux user, I've had to reinstall my system more times than I'd like to admit—sometimes because of hardware changes, but usually just because I was experimenting. I got tired of manually configuring everything, so I built this setup to be my "System as Code."

Why I made this

A fresh Arch install is just a terminal. It takes hours to get it back to being a useful workstation. This setup automates the "boring" parts like installing AUR packages, symlinking my dotfiles, and setting up system services.

How it's structured

I broke the setup into modular scripts to keep it manageable:

  • packages.sh: Uses yay to install all my core tools and AUR packages.
  • config.sh: Handles the symlinking for things like Neovim and Kitty. It also sets up a Distrobox container for DaVinci Resolve so I can keep it in a stable environment.
  • services.sh: Sets up the background services I need.

How I run it

The main install.sh script is just a wrapper that sources the other parts. I tried to make it robust so it can track which parts failed.

# How I source my sub-scripts export FAILED_PACKAGES=() export ACTIONS_TODO=() source scripts/helper.sh source scripts/packages.sh source scripts/config.sh if [ ${#FAILED_PACKAGES[@]} -gt 0 ]; then echo "Some packages didn't install: ${FAILED_PACKAGES[@]}" fi

What's next

I'm planning to integrate more of my Hyprland configuration into this setup and maybe add some automatic backup logic using restic.