Jinx transpiles Nix and nixpkgs to TypeScript
jinx makes the full nixpkgs ecosystem accessible to TypeScript tooling and browser environments by transpiling Nix while preserving derivation-path parity, rather than reimplementing its package universe.
Logged at IST: 2026-10-13 09:17 IST
What it is: Farid Zakaria's jinx, a Nix-to-TypeScript transpiler, with a compiled TypeScript tree for nixpkgs.
Gist: The core move is to preserve the compatibility work embodied in nixpkgs instead of rebuilding a package set for a new evaluator. jinx translates Nix expressions, including laziness, into TypeScript modules and computes the same derivation paths as Nix. The project reports parity across all 231,777 attributes in nixpkgs' CI evaluation set: 229,063 identical drvPaths, 2,714 failing on both sides, and none that differ or fail on only one side.
The payoff is access to TypeScript's debugger, profiler, editor tooling, scripts and browser runtime, including evaluating the compiled nixpkgs tree in a browser. This is not a speedup: the published warm benchmarks show jinx about 2.5x–5.1x slower than Nix on the listed probes, with higher memory use. The pitch is ecosystem reach and inspectability, while retaining Nix store compatibility.
Newsletter angle: A striking compatibility strategy for infrastructure tooling: translate the evaluator and keep the hard-won package ecosystem, instead of starting a competing ecosystem from zero.