DEV Community

Aashutosh Bairagi
Aashutosh Bairagi

Posted on

From a Fresh Arch Install to a Fully Configured Development Environment in One Command

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

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

Terminal

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

VS Code

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

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
Enter fullscreen mode Exit fullscreen mode

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/
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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.

GitHub Repository

https://github.com/Aashutosh31/dotfiles

Top comments (0)