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

Published: (February 8, 2026 at 11:05 AM EST)
3 min read
Source: Dev.to

Source: Dev.to

TL;DR

Checkout the GitHub repo here:

On a fresh Ubuntu WSL install, just run:

./run.sh

…and you’re ready to code in minutes. This post explains why I built it and how you can adapt it too.

Why WSL?

  • Fast Linux development environment on Windows without full VMs.
  • Ideal for scripting, Docker, and open‑source tooling.

I’m a frontend developer turned full‑stack builder with over three years of experience. My daily work spans product development, open‑source contributions, and deep dives into infrastructure, CLI tools, and automation. The current stack revolves around JavaScript/TypeScript, Vue, and increasingly Rust, Python, and TUI/GUI apps.

Outside of work I maintain open‑source projects, experiment with Rust tooling, and favor CLI‑first workflows. Ubuntu on WSL is my go‑to environment for Node.js projects, scripting, Rust tools, and light container work.

The Problem

I kept reinstalling Ubuntu (or setting up new devices) and manually repeating the same steps:

  1. Install APT packages.
  2. Tweak shell configuration.
  3. Add Node, Python, Docker, plugins, etc.

Even with plenty of RAM and a modern machine, each fresh install cost me 1–2 hours. The repetitive nature made me ask:

“Why the hell am I not automating this?”

The Solution: run.sh Bootstrap

I built a modular run.sh bootstrap script in Bash. It was my first real‑world Bash project outside university coursework, and it solved two problems at once:

  • Automated a task I perform daily.
  • Gave me practical Bash‑scripting experience.

Running the script now spins up a clean, fully bootstrapped Ubuntu WSL dev box in minutes, with my exact terminal stack, dev tools, and configuration.

./run.sh

Automate once. Save hours later. Learn by doing.

What’s Inside the Bootstrap

  • Package installation – APT, Node (via nvm), Python (via pyenv), Docker, etc.
  • Shell setup – Zsh + Oh‑My‑Zsh, custom .zshrc, aliases, and prompt themes.
  • Editor/IDE tooling – Neovim with my preferred plugins, tmux configuration, and language servers.
  • Optional modules – Easily enable/disable parts of the setup (e.g., Rust toolchain, TUI apps) by editing a simple config file.

How to Adapt It

  1. Clone the repo

    git clone https://github.com/LazyDoomSlayer/os-bootstraps.git
    cd os-bootstraps
  2. Review config.sh – Toggle modules you need, change versions, or add your own steps.

  3. Run the bootstrap

    ./run.sh
  4. Enjoy – Your environment is ready; you can start coding right away.

Looking Ahead

In Part 2 I’ll dive into the internal logic of the WSL bootstrap, explaining how each module works and how you can extend it for your own workflow.

0 views
Back to Blog

Related posts

Read more »

Happy women in STEM day!! <3

Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment's permalink. Hide child comments as we...