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.shon 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
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)