DO NOT USE THESE SCRIPTS WITHOUT READING THEM FIRST. YOU HAVE BEEN WARNED!
Traap
Clone bootstrap-omarchy, edit config, run the migration.
git clone https://github.com/Traap/bootstrap-omarchy
cd bootstrap-omarchy
./migrationOpen config and toggle false → true for the applications you want
installed or removed.
Good news: Omarchy, DHH, and Traap are all opinionated. Even better news: everyone wins.
Truth be told, if I agreed 100% with everyone on everything 100% of the time, I’d basically be talking to myself… which I already do — and yes, I answer myself too.
It’s my computer, so my opinion wins. If I break an elegant Omarchy setup crafted by an amazing team, well, that’s my problem and mine to fix.
I’ve been living inside tiling window managers (BSPWM, Hyprland), terminals (alacritty, ghostty, kitty, MS Terminal), shells (bash and Git Bash), and TMUX for years.
I routinely study:
- keyboard layout differences
- window movement and ergonomics
- key sequences and physical efficiency
Whenever I hit an awkward or inefficient action, I:
- document it,
- analyze it,
- fix it.
I move seamlessly between:
- BSPWM and Hyprland
- Vim and Neovim
- Arch Linux, Ubuntu
- WSL2 running Arch or Ubuntu
- Git Bash on Windows
Linux-based systems are consistently flawless; Windows requires a little “creative persuasion.” Omarchy gives me the perfect foundation. My scripts add workflow polish.
Omarchy is built upon the greatest Linux distribution ever: Arch Linux.
I began with strict Omarchy defaults, studied their scripts (they truly are excellent), then added minimal workflow refinements. After installing Omarchy on multiple laptops and validating I could maintain a consistent workflow everywhere, I layered my personal customizations on top.
My bash environment merges Omarchy defaults with my personal configuration:
## All the default Omarchy aliases and functions
source ~/.local/share/omarchy/default/bash/rc
## Traap’s customizations
source ~/git/dotfiles/bash/bashrc
## Don't mess with my .inputrc
bind -f ~/.inputrcI document everything I care about. I’ve been “bashing” since 2014 — almost thirteen years of muscle memory and visual habits.
Here are the files that define my login experience:
These files are non-negotiable. They’re my superpowers.
- YAGNI — add nothing unless truly needed.
- Drop-in, drop-out — everything reversible.
- Single source of truth (
config). - Reproducibility first.
- Respect Omarchy defaults.
- Document everything.
- Cross-environment consistency.
- Escape hatches everywhere.
- Never fight upstream.
- Zero bloat.
- Minimal surprises
- Fail loud, fail fast
- Composable, not entangled
- Idempotent behavior
- Human-readable first
- Local overrides are sacred
- Environment agnostic
- Escape hatches everywhere
- Respect upstream
- Zero bloat
┌────────────────────────────────┐
│ Omarchy Base │
│ (Arch Linux + Omarchy setup) │
└────────────────────────────────┘
│
▼
┌───────────────────────────────────┐
│ bootstrap-omarchy │
│ (Your customization layer) │
└───────────────────────────────────┘
│
▼
┌───────────────────────────────────┐
│ config │
│ Single source of truth: flags │
│ define WHAT the system becomes │
└───────────────────────────────────┘
│
▼
┌───────────────────────────────────┐
│ migration │
│ Executes steps based on flags │
│ • Check flag │
│ • Run script │
│ • Fail fast │
│ • Stay reversible │
└───────────────────────────────────┘
│
▼
┌────────────────────────────────────────────────────────┐
│ Steps │
│ (Only those enabled in config are run) │
│ │
│ - pacman packages - tmux plugins │
│ - yay packages - Neovim configs │
│ - Hyprland setup - BSPWM setup │
│ - nodejs / ruby / go - ssh keys / starship │
│ - TeX Live - certificates / OpenSSL │
│ - clone repositories - ThinkPad support │
│ - Kerberos configs - seamless login │
└────────────────────────────────────────────────────────┘
│
▼
┌───────────────────────────────────┐
│ Customized System │
│ (Laptop, workstation, WSL2 — │
│ all consistent & reproducible) │
└───────────────────────────────────┘
Omarchy uses a Rails-inspired migration system:
config— defines what to install or removemigration— executes each step in sequence
Different machines require different tools. config declares their identity.
Full config