DEV Community

Cover image for run.sh Diaries #1: Automating My Ubuntu Dev Environment
LazyDoomSlayer
LazyDoomSlayer

Posted on • Edited on

run.sh Diaries #1: Automating My Ubuntu Dev Environment

TL;DR
I got tired of setting up WSL manually across multiple machines and installing Node, Python, Docker, CLI tools, and tweaking configs. So I built a Bash-based bootstrap project that installs and configures everything I need in one go.

Checkout GitHub repo here: https://github.com/LazyDoomSlayer/os-bootstraps

Now I just run ./run.sh on a fresh Ubuntu WSL install, drink coffee ☕, and get coding in minutes. This post explains why I built it and how you can adapt it too.

Introduction - Why I Built This Ubuntu WSL Bootstrap

WSL gives me a fast Linux dev environment on Windows without needing full VMs and is perfect for scripting, Docker, and open source tooling.

I’m a frontend developer turned full-stack builder with over 3 years of experience. I split my time between product development, open source contributions, and deep dives into infrastructure, CLI tools, and automation. My current stack revolves around JavaScript/TypeScript, Vue, and increasingly Rust, Python, and TUI/GUI apps.

Outside of work, I’m building and maintaining my open source projects, experimenting with Rust tooling, and working with CLI-first workflows. That’s where Ubuntu on WSL comes in, it's my daily dev environment for Node.js projects, scripting, Rust tools, and even light container work.

But here’s the thing...

I got really tired of setting it all up. Over and over.

The Problem - Setup Fatigue

Despite having plenty of memory and a modern machine, I prefer a terminal-first workflow tmux, neovim, and CLI tools, because modern IDEs often feel bloated and sluggish.

I use WSL every day, but:

  • I have multiple devices (laptop, workstation, test VMs)
  • I often test out different config setups
  • And every time I reinstall Ubuntu or start fresh, I waste 1–2 hours manually installing packages, tweaking configs, and setting up tools

It's the same repetitive process: install APT packages, tweak shell config, add Node, Python, Docker, plugins...

Honestly? I'd rather drink ☕coffee and let the machine set itself up.

The LazyDev Solution

Eventually I asked myself:

“Why the hell am I not automating this?”

So I did. And because I go by LazyDoomSlayer, I took the lazy-but-smart route. I built a modular run.sh bootstrap using Bash.

This was my first real-world Bash scripting project outside of university coursework, and it solved two big problems at once:

  • Helped me automate something I do frequently
  • Helped me learn Bash scripting through practical use

The Result

Now I can spin up a clean, fully bootstrapped Ubuntu WSL dev box in minutes with my exact terminal stack, dev tools, and config with just by running:

./run.sh
Enter fullscreen mode Exit fullscreen mode

Takeaway?

Automate once. Save hours later. Learn by doing.
Drink coffee while it runs.

What’s Next: The Bash Behind the Bootstrap

In Part 2, I’ll show you internal logic how my WSL bootstrap works.

Top comments (0)