I replaced Docker with THIS.


I replaced Docker with THIS.

This issue is brought to you by:

Graphite: The next generation of code review.

Graphite is the AI code review platform where teams ship higher code, faster.

You know why you’re here.
Because reproducible environments make you tick but too much friction? makes you.. sick 🥁.

After 12 years of containerizing / virtualenv-ing, I’ve finally found something that ticks all the boxes. I’m talking about throwing out npm, rvm, nix-env, virtualenv and yes, even (or, especially) Docker containers for local dev to reach a state of absolute Zen.

It’s called Devbox.

It’s not all sunshine and rainbows, but it is almost perfect.

The “Works on My Machine” Spaghetti

We have a massive problem in development.
We want isolation, but we want it to feel native.
Usually, we end up with a mess of global versions or we (well, I) reach for the heavy hammer: Docker.

But let’s be honest Docker for local development involves latency and that disconnect between your shell and your tools.
The alternative is Nix, the most powerful package manager on earth (can't argue with that...).
I’ve done videos on Nix.
I wanted to love it.
But to put it bluntly: Nix is just way too much hassle for my workflow.

Achieving Environmental Zen

Devbox is a CLI, written in Go that wraps Nix.
It gives you the raw power of the largest package repo in the world without the complexity.

Here is how it completely changed my game:

"Isolation without Virtualization" - I can spin up a project-specific environment in seconds with:

devbox init

This creates a devbox.json file.
Now, let’s say I need ripgrep version 13, but my machine runs version 15.

devbox add ripgrep@13

Now, the magic happens.

In my normal terminal:

$ rg --version

> ripgrep 14.1.1

But inside Devbox:

$ devbox shell

$ rg –version

> ripgrep 13.0.0

Two different versions. Same machine. No containers.

“What.. Do I have to type `devbox shell` every single time?”
If that thought came across your mind, you're like me, and... No. Devbox integrates with direnv!

devbox generate direnv

Now, simply entering the folder activates the environment.
I cd in, my tools are there.
I cd out, they’re gone.


The case for replacing Makefiles

If you hate Makefile syntax, Devbox has you covered:
You can define scripts in your devbox.json. Just like `npm run` or `make build`.
Instead of remembering flags for a build, you just define it once and run:

devbox run build

It’s language-agnostic and lives right in your config.

Services & Plugins (The Killer Feature) Ever had to juggle Postgres versions or Nginx configs?

devbox add nginx

This pulls a standard plugin.
But here is the twist: all the config files live inside your project (in a .devbox folder).
You aren’t touching /etc/nginx.
Need to change the port?
Just set the env var in your config:

Then:

devbox services start nginx

The Global Problem (and the Fix for Nushell Users)

Devbox isn’t just for local projects; you can use it to install tools globally on your machine.
Yes, replacing your Nix packages Homebrew or Pacman.

Maybe installing something like the TUI file explorer ranger.

devbox global add ranger

For bash users, this works via a simple shell hook.
But I’m a special snowflake.
I use Nushell.

Nushell handles environment evals differently, so the standard Devbox global shellenv hook fails.
It expects to run an eval on shell start, and Nu just stares at you blankly.

The Fix: I didn’t want to give up, so I forked Devbox and wrote a fix.
If you are a shell hipster like me, here is the workaround:

Check out my PR here: https://github.com/jetify-com/devbox/pull/2743
Fork it and run go build -o devbox ./cmd/devbox.
Use the new binary to generate a Nu-compatible script:
$ devbox global shellenv --init-hook
Save that to a devbox.nu file and source it in your config.nu.

It cost me about 4 bucks in LLM credits to figure that out, but hey, now I have global Nix packages in Nushell 🤓


The Bottom Line

Devbox checks all the boxes.
It gives you the reproducibility of Docker, the power of Nix, but the ease of use of a simple CLI.

Give it a shot. Your RAM (and your sanity) will thank you.

I hope this was valuable! Thank you for reading.

Feel free to reply directly with any question or feedback.

Have a great weekend!

ESPRESSO FRIDAYS

Every once in a while I send hand picked things I've learned. Kind of like your filter to the tech internet. No spam, I promise!

Read more from ESPRESSO FRIDAYS

Stop Renting SaaS. Build Your Own Cloud. This issue is brought to you by: Security, Performance, Simplicity. Pick Three. Twingate delivers an identity-based access for users, services, and AI agents that deploys in minutes, scales to every resource, and finally lets you retire your VPN. Try Twingate - it's FREE! -> Why pay cloud companies when you can just… not? I’ve recently started running my own services at home, because.. honestly? I’m tired of paying cloud providers for things I can run...

This Tool Replaced 7 CLIs (and killed my opensource) This issue is brought to you by: Depot: Build faster. Waste less time. Accelerate your Docker image builds and GitHub Actions workflows. Easily integrate with your existing CI provider and dev workflows to save hours of build time. Get started for free -> I’ve been in the terminal for 12 years. I don’t get surprised often. Then I found Television, and I was wrong about it before I even opened it. The friction of endless pipes ||| There’s a...

My Opencode Workflow As A Senior Engineer This issue is brought to you by: Descope: Drag & Drop Your Auth Your engineers are building at warp speed, so why should auth be left behind? Descope provides no / low code workflows that decouple auth, access control, and user management from your app’s codebase so your teams can focus on the core product. Signup and Get Started Now Everyone's trying to replace themselves. I'm just trying to ship faster. 11 months ago, Dario Amodei said "AI would be...