Release process: staging branches?

I read NixOS - NixOS 21.05 manual, but it doesn’t mention the staging, staging-next and staging-<release> branches.

I understand that some branches match channels e.g.:

  • nixos-unstable channel = master branch
  • nixos-19.03 channel = release-19.03 branch

What’s the point of the staging.* branches? From what I see, staging-next is merged into staging and then into master.
But PRs have different targets. What would make a specific change go into staging and not directly into master?


It’s actually the other way around. PRs that require many rebuilds get merged into staging. Every once in a while, the current staging gets forked off into staging-next. The purpose of staging-next is to let the current rebuild finish, detect regressions, stabilize. staging-next is then merged into master. See staging workflow by vcunat · Pull Request #26 · NixOS/rfcs · GitHub for details.


Have a look at staging workflow by vcunat · Pull Request #26 · NixOS/rfcs · GitHub for an explanation.


Thanks for explaining and linking to the RFC. :slight_smile:

Thanks for this RFC link, but it didn’t tell how the unstable branch is produced, any more informantion about that?

Here’s info on how channels update (and the corresponding branches like nixos-unstable): Nix channels - NixOS Wiki

1 Like