When recently taking a look at diffoscope, I was reminded that there is effectively no default openjdk version, you have to pick a specific version for each package definition... At some time in diffoscope's history, that was openjdk@12. But there are quite a few versions to choose from: guix package -A openjdk | sort -V openjdk 9.181 out,jdk,doc gnu/packages/java.scm:869:2 openjdk 10.46 out,jdk,doc gnu/packages/java.scm:1140:2 openjdk 11.0.22 out,jdk,doc gnu/packages/java.scm:1218:2 openjdk 12.33 out,jdk,doc gnu/packages/java.scm:1536:2 openjdk 13.0.14 out,jdk,doc gnu/packages/java.scm:1576:2 openjdk 14.0.2 out,jdk,doc gnu/packages/java.scm:1583:2 openjdk 15.0.10 out,jdk,doc gnu/packages/java.scm:1598:2 openjdk 16.0.2 out,jdk,doc gnu/packages/java.scm:1617:2 openjdk 17.0.10 out,jdk,doc gnu/packages/java.scm:1625:2 openjdk 18.0.2.1 out,jdk,doc gnu/packages/java.scm:1642:2 openjdk 19.0.2 out,jdk,doc gnu/packages/java.scm:1646:2 openjdk 20.0.2 out,jdk,doc gnu/packages/java.scm:1663:2 openjdk 21.0.2 out,jdk,doc gnu/packages/java.scm:1667:2 Some packages may only work with a specific era of openjdk, but I suspect many of the packages in guix just picked whatever version happened to be present when it was added to guix. Which makes it hard to know when to update the openjdk dependency... In the diffoscope case, it seems to have work fine with openjdk@21, with the only result being that some openjdk-version-specific tests pass and some are skipped as a one-for-one trade compared to the old openjdk@12. Alternately, I would be tempted to switch to openjdk@17, which is the current default in Debian, so has a little more testing behind it... Though there is a bit of a perverse incentive to stick with the oldest version that still works, due to openjdk having a very long bootstrap chain of itself... And then the question gets to be of diffoscope's dependencies, what versions of openjdk do they pull in (notably enjarify, which uses openjdk@12, although that also seems to work ok with openjdk@21)? Would it make sense to have an openjdk "default" version, so packages could instead depend on that, and only need to specify a version if needed for some particular reason? Or is compatibility across openjdk versions troublesome enough that it really always needs to be handled on a case-by-case basis? live well, vagrant