How I automated my Arch Linux + Omarchy + Hyprland setup with reproducible dotfiles, backups, and a single bootstrap script.
Introduction
Like many Arch Linux users, I've reinstalled my system more times than I'd like to admit.
Every reinstall meant spending hours installing packages, configuring Hyprland, tweaking Waybar, setting up Ghostty, restoring VS Code settings, copying wallpapers, and hoping I didn't forget some tiny configuration that I'd eventually notice days later.
I wanted my development environment to be reproducible.
So I built a repository that can recreate my entire setupβfrom packages to desktop configurationβwith a single command while safely backing up any existing configuration before making changes.
π GitHub Repository:
https://github.com/Aashutosh31/dotfiles
Why I Built This
I wanted a setup that could:
- Recreate my workstation in minutes
- Install required packages automatically
- Restore all configurations
- Never overwrite files without creating a backup
- Stay version-controlled in Git
- Be easy to maintain and extend
Instead of manually configuring everything after every reinstall, I wanted to simply run one command.
What's Included
Desktop
- Distribution: Arch Linux (Omarchy)
- Window Manager: Hyprland
- Status Bar: Waybar
- Theme: Tokyo Night
Terminal
- Terminal: Ghostty
- Shell: Zsh
- Prompt: Starship
- System Information: Fastfetch
Development
- Editor: VS Code
- Alternative Editor: LazyVim
- Terminal Multiplexer: Zellij
Utilities
- File Manager: Yazi
- Audio: Wiremix
- OSD: SwayOSD
Desktop Preview
This is my everyday desktop powered by Hyprland, Waybar, Ghostty, and the Tokyo Night color scheme.
The goal wasn't to create an eye-catching desktop for screenshotsβit was to build something comfortable enough to use every day for software development.
Terminal Setup
Ghostty has become my preferred terminal thanks to its speed and modern rendering.
Combined with Zsh, Starship, and Fastfetch, it creates a clean and productive terminal experience.
VS Code Configuration
Although the repository also includes my LazyVim configuration, VS Code is currently my primary editor.
My VS Code setup includes custom settings, extensions, keybindings, and themes that match the rest of the desktop.
Yazi File Manager
Yazi is an incredibly fast terminal file manager that fits naturally into my workflow.
It's keyboard-driven, lightweight, and feels right at home alongside the rest of the terminal-based tools.
One Command Installation
For a fresh Arch installation, everything can be installed using:
curl -fsSL https://raw.githubusercontent.com/Aashutosh31/dotfiles/main/bootstrap.sh | bash
The bootstrap script automatically:
- Installs Git (if needed)
- Installs
yay - Clones the repository
- Installs required packages
- Applies all configurations
After that, the actual installation is handled by install.sh.
Automatic Backups
One feature I cared about the most was safety.
Before replacing any configuration, the installer creates a timestamped backup.
Example:
~/.dotfiles-backup/
βββ 20260720-184501/
Nothing gets overwritten without first being backed up.
If I ever want to restore an older configuration, it's just a simple copy operation.
Repository Structure
.
βββ hypr/
βββ ghostty/
βββ fastfetch/
βββ starship/
βββ yazi/
βββ vscode/
βββ waybar/
βββ wallpapers/
βββ packages/
βββ scripts/
βββ install.sh
βββ bootstrap.sh
Keeping every application's configuration inside its own directory makes the repository easier to maintain and extend over time.
Why I Didn't Use GNU Stow
Many dotfile repositories rely on GNU Stow.
While it's a great tool, I wanted something that also handled package installation, backups, and first-time machine setup.
The installer performs everything in one workflow:
- Package installation
- Backup creation
- Configuration deployment
- Initial machine bootstrap
This makes it much easier to move to a brand-new machine.
Lessons Learned
Working on this project taught me a lot beyond shell scripting.
Some takeaways:
- Good documentation is just as important as good code.
- Automated backups make installation much safer.
- Modular configuration directories are much easier to maintain.
- Version-controlling your development environment saves a tremendous amount of time.
- Small automation scripts quickly become some of the most useful tools you write.
Future Improvements
There are still plenty of ideas I'd like to add:
- Theme switching
- Optional package groups
- Better wallpaper management
- CI validation
- More customization options
Final Thoughts
What started as a personal backup of my Linux setup gradually evolved into a fully reproducible development environment.
If you're using Arch Linux, Omarchy, or Hyprland, I hope this repository helps you build your own workflowβor at least gives you some ideas for organizing your own dotfiles.
If you find it useful, feel free to β star the repository, open an issue, or suggest improvements.
I'd love to hear your feedback.




Top comments (0)