GuixPkgs can now build OpenJDK 25 from source, giving Nix users access to a fully source-bootstrapped JDK for the first time. The post explains why bootstrapping a JDK is notoriously hard — javac is written in Java, creating a circular dependency — and walks through the 19-step Guix bootstrap chain starting from jikes (C++) through GNU Classpath, JamVM, IcedTea, and successive JDK versions up to 25. By contrast, nixpkgs currently bootstraps OpenJDK using a 135 MB prebuilt Temurin binary. A closure analysis shows nixpkgs needs only 2 derivations for the JDK bootstrap while the GuixPkgs approach requires 876, reflecting the full source chain. The work originated as a side project at TacoSprint 2026 and is now relevant to anyone interested in bootstrappable and reproducible builds.

5m read timeFrom fzakaria.com
Post cover image
Table of contents
§ Why a JDK is a hard package§ Analyzing the closure
1.8K Impressions