NixOS 20.09 Release!

NixOS 20.09 released

27 Oct 2020

Hey everyone, I’m Jonathan Ringer, one of the release managers for 20.09. As promised, the latest stable release is here: NixOS 20.09 “Nightingale” :sparkles:.

The 20.09 release was possible due to the efforts of 1313 contributors in 31282 commits. We would especially like to thank our top 10 contributors: Mario Rodas, Frederik Rietdijk, Jörg Thalheim, Maximilian Bosch, Jonathan Ringer, Jan Tojnar, Daniël de Kok, WORLDofPEACE, Florian Klink, José Romildo Malaquias, and 1303 others!

NixOS is already known as the most up to date distribution and is in the top three by total number of packages.

This didn’t stop us. In the last six months:

  • 7349 packages were added
  • 8181 packages were removed
  • 14442 packages were updated

Likewise, our NixOS module system got bigger and better:

  • 1119 options were added (61 new modules)
  • 476 options removed
  • 118 options were updated

Stabilization Contributors

Stabilization of the NixOS happens a month before planned release. The goal is to have as little as possible continuous integration (Hydra) jobs failing before the release is cut. While we would like to release on time, a high quality release is more important.

Individuals who contributed to stabilizing this release: volth, Robert Scott, Tim Steinbach, WORLDofPEACE, Maximilian Bosch, Thomas Tuegel, Doron Behar, Vladimír Čunát, Jonathan Ringer, Maciej Krüger, and 190 others!

Reflections and Closing

I think that the 20.09 release highlighted a few weak points with our current release schedule. Discussions have already began on how to improve the process from the beginning, to help minimize risk, and set ourselves up for more successes in the future. I want to thank WORLDofPEACE (my co-release-manager) for helping me with release management items, Thomas Tuegel for helping with Qt and Plasma stabilization, as well as Robert Scott for his work with release stabilization.

Also, check out the work the marketing team has done on

Link to news item:

cc @worldofpeace


yay :partying_face:
just out of interest, whats the metric for “118 options were updated”?

1 Like

Good Job. Thanks guys!


@garbas would know for certain, but my initial guess is that it looks for mkRenamedOptionModule information.

@lassulus The diff is made based on the options (or packages) that we import to elasticsearch which powers

For packages we only check if version changed and for options we check if type and default value changes. Other changes we ignore.

You can check the code here:

I hope I didn’t do a mistake since I wrote it in a rush. I’d love to publish this information on a daily basis to at one point.


Thank you to the release team and all involved!

So greatly appreciated.


Amazing effort, really looking forward to upgrading.

Discussions have already began on how to improve the process from the beginning, to help minimize risk, and set ourselves up for more successes in the future

Yes I can hope this can be the “Pentium 4” moment where our wonderful release managers surprised us with yet another new record of self-sacrifice, but we finally decided to do something about the process.