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.