Developer Voices
Developer Voices

Nix, The Build-Everything Language (with Julian Arni)

March 27, 2025

AI Summary

5 min read

It works on my machine. The phrase is so common it has become a joke, but the problem it describes is real and costly: subtle differences in development environments cause builds to fail on one computer and succeed on another. The standard fix has been Docker, which ships an entire operating system to everyone who needs it. But as Julian Arni explains in this episode of Developer Voices, Docker solves one problem while creating others—and an older, more principled alternative called Nix offers a different path.

Nix began as a PhD thesis on making builds reliable and has grown into a tool that can define and build nearly any programming environment. The core idea is simple: take the package lock file concept that languages like Rust (Cargo) and JavaScript (npm) already use, and extend it to everything—not just language dependencies, but system libraries, compilers, kernel versions, and even the UTC time. Every input to a build is pinned by its cryptographic hash. Build the same project twice, and you get byte-for-byte the same output.

Continue reading the full summary in the app — free to try.

Read Full Summary →

Free • No credit card required

What you'll learn

  • 1 (00:00) **The "Works on My Machine" Problem** - Introduction to the core problem Nix solves: inconsistent development environments.
  • 2 (04:30) **Why Nix Over Docker** - Julian explains the fundamental differences in approach between Nix and Docker for reproducibility.
  • 3 (08:59) **Nix as a Universal Lock File** - Julian explains the mental model of Nix by extending the familiar concept of package lock files.
  • 4 (14:56) **The Superpower of Dev Shells** - How Nix allows multiple, isolated development environments to coexist on a single machine.
  • 5 (19:12) **How Nix Works: The Build Process** - A deep dive into the mechanics of a Nix build and its sandboxing.
  • 6 (22:43) **Binary Caching** - How Nix avoids rebuilding the entire universe from scratch.
  • 7 (29:46) **NixOS: The Optional, Powerful Add-On** - Julian explains NixOS and why you might choose to run it, but emphasizes it's not required.

+ Full timestamped outline available in the app

Show Notes

Ever since we invented makefiles, the programming world has been wrestling with the problem of building software stacks reliably. This week we’re going to look at one of the most ambitious solutions available - Nix. Nix tries to do everything from invoking your compiler to installing your language, and even providing your operating system. But how does it work in theory, and how well does it work in practice?

Joining me to discuss is Julian Arni, a Nix-enthusiast and creator of a build/test/deploy service called Garnix.

Nix has been one of my go-to tools for years - I hope it’ll find its way into your stack.

–

Nix Overview: https://nixos.org/explore/

Nix Tutorial: https://nix.dev/tutorials/first-steps/

Nix Flakes: https://nixos.wiki/wiki/Flakes

The Nix Package List: https://search.nixos.org/packages

Garnix.IO: https://garnix.io/

Julian’s NixCon Talk, Call by Hash: https://www.youtube.com/watch?v=fU9ogB9hZZA

Support Developer Voices on Patreon: https://patreon.com/DeveloperVoices

Support Developer Voices on YouTube: https://www.youtube.com/@developervoices/join

Kris on Bluesky: https://bsky.app/profile/krisajenkins.bsky.social

Kris on Mastodon: http://mastodon.social/@krisajenkins

Kris on LinkedIn: https://www.linkedin.com/in/krisjenkins/

Developer Voices

More from this podcast

Developer Voices →