# Determinate Nix is ushering in a new era for the Nix language, courtesy of WebAssembly

**URL:** https://discourse.nixos.org/t/determinate-nix-is-ushering-in-a-new-era-for-the-nix-language-courtesy-of-webassembly/75914
**Category:** Links
**Created:** [March 5, 2026, 6:22pm UTC](https://discourse.nixos.org/t/determinate-nix-is-ushering-in-a-new-era-for-the-nix-language-courtesy-of-webassembly/75914 "2026-03-05T18:22:51Z")
**Posts on this page:** 10
**Page:** 2

<div class="post-metadata">

### Author: ![Ericson2314](https://discourse.nixos.org/user_avatar/discourse.nixos.org/ericson2314/32/316_2.png) [@Ericson2314](https://discourse.nixos.org/u/Ericson2314)
#### Post date: [March 13, 2026, 12:52am UTC](https://discourse.nixos.org/t/determinate-nix-is-ushering-in-a-new-era-for-the-nix-language-courtesy-of-webassembly/75914/21 "2026-03-13T00:52:40Z")

</div>

My view is that we should have wasm derivations, and wasm derivation IFD should be good. It should basically be the same thing as `builtins.wasm`, and in a world with parallel eval, IFD in general should be no worse than `builtins.wasm` or `builtins.exec`.

---

<div class="post-metadata">

### Author: ![iwanb](https://discourse.nixos.org/user_avatar/discourse.nixos.org/iwanb/32/4268_2.png) [@iwanb](https://discourse.nixos.org/u/iwanb)
#### Post date: [March 13, 2026, 6:09am UTC](https://discourse.nixos.org/t/determinate-nix-is-ushering-in-a-new-era-for-the-nix-language-courtesy-of-webassembly/75914/22 "2026-03-13T06:09:22Z")

</div>

> [@waffle8946](#):
>
> IFD and preprocessing are different. And JSON files are not binary blobs. You can even use preprocessing to generate nix code, if you like, which is again not binary blobs.

I mean the binary you need to turn your input data (e.g. yaml) into JSON. And sure you can ‘preprocess’ it and e.g. commit it to the repo, but how are you going to review that it matches the input?

---

<div class="post-metadata">

### Author: ![ttamttam1](https://discourse.nixos.org/letter_avatar_proxy/v4/letter/t/d6d6ee/32.png) [@ttamttam1](https://discourse.nixos.org/u/ttamttam1)
#### Post date: [March 13, 2026, 4:45pm UTC](https://discourse.nixos.org/t/determinate-nix-is-ushering-in-a-new-era-for-the-nix-language-courtesy-of-webassembly/75914/23 "2026-03-13T16:45:53Z")

</div>

Parallel eval certainly would alleviate most of the bottleneck around IFD. But I’m just not convinced that setting up the nix sandbox and forking out a new process will ever be as performant as running a JIT WASM module from within Nix. I’m imagining scenarios where `builtins.wasm` is in a hot path that might run the same module 100’s or 1000’s of times, potentially nested. WASM should have no issue with that. Parallel IFD might handle it fine, but I’m skeptical.

Give Nix an IFD and it can do arbitrary data transformations efficiently once. Teach nix to use WASM and it can do arbitrary data transformations efficiently forever.

Binary blobs are certainly an issue but IMO you can IFD wasm once, publish it to your cache, and then use it forever. If IFD is truly just as performant as WASM when used in a hotpath, than there’s no reason to use WASM over IFD. Maybe one could make an argument for aesthetics, I certainly find WASM sandboxing to be cleaner than containers, which in turn are cleaner than Nix’s diy sandboxing.

But again, I’m not convinced that IFD truly is just as performant as WASM. At the end of the day, this performance talk is all just speculation. We need data. And that data still wouldn’t help much because we’re comparing WASM to an imagined more performant version of IFD/eval that doesn’t exist.

---

<div class="post-metadata">

### Author: ![lisanna](https://discourse.nixos.org/user_avatar/discourse.nixos.org/lisanna/32/36988_2.png) [@lisanna](https://discourse.nixos.org/u/lisanna)
#### Post date: [March 13, 2026, 5:20pm UTC](https://discourse.nixos.org/t/determinate-nix-is-ushering-in-a-new-era-for-the-nix-language-courtesy-of-webassembly/75914/24 "2026-03-13T17:20:02Z")

</div>

> [@ttamttam1](#):
>
> to an imagined more performant version of IFD/eval that doesn’t exist.

IIRC determinant nix has parallel eval so this could be done in theory

---

<div class="post-metadata">

### Author: ![harryprayiv](https://discourse.nixos.org/user_avatar/discourse.nixos.org/harryprayiv/32/8171_2.png) [@harryprayiv](https://discourse.nixos.org/u/harryprayiv)
#### Post date: [March 14, 2026, 4:16am UTC](https://discourse.nixos.org/t/determinate-nix-is-ushering-in-a-new-era-for-the-nix-language-courtesy-of-webassembly/75914/25 "2026-03-14T04:16:41Z")

</div>

> [@lucperkins](#):
>
> [A new chapter for the Nix language, courtesy of WebAssembly](https://determinate.systems/blog/builtins-wasm/)

whether we like it or not…

I don’t approve of this feature. Purity is key. This goes completely against Eelco’s original thesis.

---

<div class="post-metadata">

### Author: ![Mapybara](https://discourse.nixos.org/letter_avatar_proxy/v4/letter/m/8dc957/32.png) [@Mapybara](https://discourse.nixos.org/u/Mapybara)
#### Post date: [March 14, 2026, 7:22am UTC](https://discourse.nixos.org/t/determinate-nix-is-ushering-in-a-new-era-for-the-nix-language-courtesy-of-webassembly/75914/26 "2026-03-14T07:22:03Z")

</div>

Greenspun’s Tenth Rule

(Although usually that’s a comment on what needs to be added to an inferior language; I don’t think that’s what’s going on here and I’d prefer nix to remain pure.)

---

<div class="post-metadata">

### Author: ![bitbloxhub](https://discourse.nixos.org/user_avatar/discourse.nixos.org/bitbloxhub/32/35210_2.png) [@bitbloxhub](https://discourse.nixos.org/u/bitbloxhub)
#### Post date: [March 14, 2026, 5:28pm UTC](https://discourse.nixos.org/t/determinate-nix-is-ushering-in-a-new-era-for-the-nix-language-courtesy-of-webassembly/75914/27 "2026-03-14T17:28:53Z")

</div>

I don’t quite see how you both think this is impure. The WASI stuff @lucperkins was talking about sound like it is, but just `builtins.wasm`, as it now stands, seems at least as pure as IFD. Still would prefer parallel eval+IFD like mentioned here:

> [@Ericson2314](#):
>
> and in a world with parallel eval, IFD in general should be no worse than `builtins.wasm` or `builtins.exec`.

---

<div class="post-metadata">

### Author: ![tejing](https://discourse.nixos.org/user_avatar/discourse.nixos.org/tejing/32/4566_2.png) [@tejing](https://discourse.nixos.org/u/tejing)
#### Post date: [March 14, 2026, 8:47pm UTC](https://discourse.nixos.org/t/determinate-nix-is-ushering-in-a-new-era-for-the-nix-language-courtesy-of-webassembly/75914/28 "2026-03-14T20:47:16Z")

</div>

`builtins.wasm` has one nice feature over IFD: it doesn’t make eval system-dependent.

---

<div class="post-metadata">

### Author: ![arianvp](https://discourse.nixos.org/user_avatar/discourse.nixos.org/arianvp/32/602_2.png) [@arianvp](https://discourse.nixos.org/u/arianvp)
#### Post date: [March 15, 2026, 8:36am UTC](https://discourse.nixos.org/t/determinate-nix-is-ushering-in-a-new-era-for-the-nix-language-courtesy-of-webassembly/75914/29 "2026-03-15T08:36:01Z")

</div>

Could be solved by installing a binfmt handler for wasm or something? Then can have your derivation generate wasm and execute it?

---

<div class="post-metadata">

### Author: ![matthewcroughan](https://discourse.nixos.org/user_avatar/discourse.nixos.org/matthewcroughan/32/9512_2.png) [@matthewcroughan](https://discourse.nixos.org/u/matthewcroughan)
#### Post date: [March 15, 2026, 1:31pm UTC](https://discourse.nixos.org/t/determinate-nix-is-ushering-in-a-new-era-for-the-nix-language-courtesy-of-webassembly/75914/30 "2026-03-15T13:31:38Z")

</div>

Required watching for anyone interested in these ideas

[![](https://img.youtube.com/vi/p96sAWOqiPE/maxresdefault.jpg "WASM Derivations in Nix") ](https://www.youtube.com/watch?v=p96sAWOqiPE)

[Previous page](https://discourse.nixos.org/t/determinate-nix-is-ushering-in-a-new-era-for-the-nix-language-courtesy-of-webassembly/75914.md?page=1)
