Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Nix and AI: Are we there yet?

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

Nix and AI: Are we there yet?

AI stacks look like the perfect use-case for Nix: Massively multiplying dependency matrices, double-digit-GB OCI images, tedious, Sisyphean build → push → pull → test loops. In ML/AI dev, "It runs" literally means "It runs … on this machine." So … why aren't more ML teams using Nix? This talk is a field guide to the logistics and sociotechnics of what it takes to make Nix happen in AI. Its point of departure is the following question: "Why do we ship what we ship the way we ship it? Either Nix fits the conveyor belt people already ship on, or ML teams learn a new way to build → ship → deploy software. So what will it take to fit Nix to this conveyor belt?

Avatar for Michael Stahnke

Michael Stahnke

March 06, 2026
Tweet

More Decks by Michael Stahnke

Other Decks in Technology

Transcript

  1. PLANETNIX 2026 Nix and AI Are We There Yet? The

    Agony and the Empathy Flox Nix AI 1 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  2. OPENING AI has every problem Nix was built for Dependency

    chaos. 2 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  3. OPENING AI has every problem Nix was built for Lack

    of reproducability. 3 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  4. OPENING AI has every problem Nix was built for Huge

    artifacts and complex setup. 4 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  5. VISUAL LANGUAGE Perspective key ML engineer Me 5 / 56

    Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  6. OPENING · PARADOX So why aren’t ML teams already on

    Nix? 7 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  7. A DAY IN THE LIFE From the ML engineer’s chair

    One tutorial says Conda. 8 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  8. A DAY IN THE LIFE From the ML engineer’s chair

    Another says pip. 9 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  9. A DAY IN THE LIFE From the ML engineer’s chair

    Another says build from source. 10 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  10. A DAY IN THE LIFE · CONTINUED Conflicting setup is

    normal Linux and Windows flags diverge. 11 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  11. A DAY IN THE LIFE · CONTINUED Conflicting setup is

    normal Teammates have different setups. 12 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  12. A DAY IN THE LIFE · CONTINUED Conflicting setup is

    normal Both “work,” until handoff time. 13 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  13. A DAY IN THE LIFE Not a skill issue These

    are brilliant people. 14 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  14. A DAY IN THE LIFE Not a skill issue Their

    domain is models, not plumbing. 15 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  15. A DAY IN THE LIFE Not a skill issue Tooling

    sprawl is a response to incentives. 16 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  16. A DAY IN THE LIFE · CONTINUED I got it

    working. I’m not touching it. This is rational behavior when your KPI is model quality, not environment architecture. 17 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  17. THE HANDOFF Every SDLC boundary creates rework Operational teams reverse-engineer

    what “working” means. 18 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  18. THE HANDOFF Every SDLC boundary creates rework Two scientists can

    mean two productionization projects. 19 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  19. THE HANDOFF Every SDLC boundary creates rework The conveyor belt

    is usually duct tape. 20 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  20. THE HANDOFF This is where Nix should shine Lock it.

    Reproduce it. Remove reverse-engineering from the release path. 21 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  21. JUST USE NIX Barrier set #1 Where do I start?

    22 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  22. JUST USE NIX Barrier set #1 What is a derivation?

    23 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  23. JUST USE NIX Barrier set #1 Which command do I

    want: `nix develop` or `nix shell`? 24 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  24. JUST USE NIX Barrier set #2 Shell/path behavior feels unfamiliar.

    25 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  25. JUST USE NIX Barrier set #2 Tutorials fail in subtle

    ways. 26 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  26. JUST USE NIX Barrier set #2 The feedback loop is

    expensive. 27 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  27. JUST USE NIX Barrier set #3 Needed package missing in

    nixpkgs. 28 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  28. JUST USE NIX Barrier set #3 Then pip-in-Nix warnings and

    “broken guarantees” debates. 29 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  29. JUST USE NIX Barrier set #3 Builders/substitutes setup appears before

    model work starts. 30 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  30. JUST USE NIX This is a UX problem The barrier

    is not intelligence. The barrier is onboarding and workflow ergonomics. 31 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  31. GOOD NEWS CUDA GPU setup used to be a major

    pain point. 32 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  32. GOOD NEWS CUDA Flox + NVIDIA + NixOS Foundation changed

    the baseline. 33 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  33. GOOD NEWS CUDA It proves hard barriers can move. 34

    / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  34. CPU TWIST Production inference is often CPU Teams train on

    GPUs. 35 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  35. CPU TWIST Production inference is often CPU They frequently scale

    inference on CPUs for cost. 36 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  36. CPU TWIST Production inference is often CPU Environment strategy must

    cleanly cover both targets. 37 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  37. WHAT WILL IT TAKE? The seam: where Nix ends and

    Python begins Not “nixify everything.” Not “just Docker.” Use the right layer boundary. 38 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  38. LAYER OWNERSHIP Nix/Flox owns system and native deps CUDA libraries,

    PyTorch binaries, C extensions. 39 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  39. LAYER OWNERSHIP Nix/Flox owns system and native deps This is

    where reproducibility pain is highest. 40 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  40. LAYER OWNERSHIP · CONTINUED UV owns pure Python app dependencies

    Strong lockfiles and traceability for app-level Python. 41 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  41. LAYER OWNERSHIP · CONTINUED UV owns pure Python app dependencies

    Together with Nix: provenance plus practical workflow. 42 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  42. WHY THIS MATTERS Artifact size is not academic Generic PyTorch

    wheel: ~800 MB. Nix-built target-specific package: ~55 MB. 43 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  43. PRIORITY 1 Package freshness AI/ML/Python packages must stay current continuously.

    44 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  44. PRIORITY 1 Package freshness Freshness is highly variable 45 /

    56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  45. PRIORITY 2 Better Python-to-Nix bridges uv2nix and dream2nix are promising.

    (but have been in that state for a while) 46 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  46. PRIORITY 3 Friendlier onboarding Meet ML teams where they are.

    47 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  47. PRIORITY 3 Friendlier onboarding Reduce shell/path/syntax friction. 48 / 56

    Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  48. PRIORITY 3 Friendlier onboarding Build paved roads. Improve UX. 49

    / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  49. AI CASE STUDY AI may unlock Nix adoption for AI

    teams 2.5 years ago: 31 iterations for a working Nix package. Yesterday: one prompt, clean package. 50 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  50. SUMMARY Top 3 improvement recommendations Keep AI/ML/Python packages continuously fresh.

    Improve Python-to-Nix bridge reliability (uv2nix/dream2nix). Focus on onboarding as a workflow. Meet your users where they are. 51 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  51. CLOSE Are we there yet? Not yet. 52 / 56

    Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  52. CLOSE Are we there yet? But the shape of the

    answer is clear. 53 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma
  53. CLOSE Are we there yet? The distance is closing from

    both directions. Thank you Q&A 54 / 56 Keys: Arrows/Space/J/K (1) • PgUp/PgDn (+/-5) • Home/End or G/Shift+G @stahnma