Hashiru: A Reasonable Way to Set Up Hyprland

A fast, minimal Arch bootstrap built around Hyprland and my own dotfiles.

Back to Blog

I reinstall Arch more often than I'd like to admit. New ThinkPad, borked system, curiosity got the better of me at 2am. Every time, it's the same dance: install base packages, set up Hyprland, pull dotfiles, symlink everything, remember that one weird PipeWire thing, forget it again, look it up again. Life is short, and I was spending too much of it on post-install busywork.

So I wrote a script to do it for me. Then a few more scripts. Then I gave the whole thing a name because apparently that's what you do.

Hashiru (走る, Japanese for "to run") takes a bare Arch install and turns it into my fully configured Hyprland desktop in about 10 minutes. That's the whole elevator pitch. I could have stopped there but you clicked on this, so here we go.

What does it actually do?

The flow is pretty straightforward:

  • Start with a fresh Arch install via archinstall
  • Run the bootstrap script
  • Install base system packages, drivers, firmware, and microcode
  • Set up the full Wayland stack: Hyprland, PipeWire audio, Waybar, Fuzzel
  • Clone dotfiles and symlink them into place with GNU Stow
  • Configure Snapper for BTRFS snapshots (because past-me has saved future-me more than once)
  • Reboot into a working desktop

The scripts are numbered and modular. 10-base.sh handles system packages. 30-desktop.sh does the Wayland stack. 40-hyprland.sh sets up the window manager. 60-dotfiles.sh pulls configs. You can run them all in sequence or cherry-pick one by number if you just need to redo a specific step.

Package lists are plain text files in a pacman/ directory. Want to know what gets installed? Open base.txt. It's a list of package names. No YAML, no templating, no DSL. Just packages.

Why not just use Omarchy?

Fair question. I did use Omarchy for a while. It's a solid project and it gets a lot of people up and running with Hyprland quickly. Credit where it's due.

But over time, I kept running into friction. I like Vim-style keybindings for everything, and Omarchy ships its own defaults. So I'd override them, and then a new release would come out and I'd be re-overriding things. It started to feel like I was maintaining a patchset on top of someone else's setup rather than just... using my computer.

Beyond that, a few other things nagged at me:

  • The scripting is heavy and hard to audit. There's a lot of custom shell wrapping core functionality, and when your system bootstrap is "run these scripts from the internet," I'd rather be able to read every line without squinting.
  • Bloat adds up. I don't need everything it ships, and trimming someone else's project is more work than just starting with what I need.
  • The defaults are opinionated, which is fine, but they're someone else's opinions. When you agree with them, great. When you don't, you're doing extra work.

None of this makes Omarchy bad. It just makes it not for me. Hashiru isn't trying to be a better Omarchy. It's trying to be a fast, readable way to get my specific Hyprland setup onto a machine without thinking about it.

Who might find this useful?

Primarily me. I built this for my own machines and my own workflow. But if you relate to any of this, it might be worth poking around the repo:

  • You run Arch and Hyprland and you're tired of manually configuring the same stuff after every install
  • You have your own dotfiles and want a clean way to deploy them alongside a fresh system
  • You want a bootstrap you can read top to bottom in one sitting
  • You like knowing exactly what's on your machine and why it's there

How it's built

There's genuinely nothing clever going on. The install script walks through numbered shell scripts in order. Each script sources a shared library for logging and common checks. Package lists are text files with comments. Dotfiles get symlinked with Stow.

That's it. No framework, no package manager abstraction, no config generation. It's about 300 lines of bash that I can keep in my head. When I want to add a package, I add a line to a text file. When I want to change how something gets configured, I edit a script. The feedback loop is instant.

Current status

Work in progress, and it probably always will be. My workflow changes, my hardware changes, and Hashiru changes with it. Breaking changes happen and that's fine. It's a personal tool that happens to be public.

If you're curious, the source is on GitHub.

Hashiru is available at github.com/whleucka/hashiru

Comments

No comments yet. Be the first to share your thoughts!

Leave a Comment

Your email won't be published. Used for Gravatar only.