Tracking Nixpkgs Merged Pull Requests | PlanetNix 2026 β€’ SCaLE 23x

Tracking Nixpkgs Merged Pull Requests

When is the fix available? A 5-Minute Guide to Tracking Nixpkgs PRs!


πŸ€”
Tracking Nixpkgs Merged Pull Requests | PlanetNix 2026 β€’ SCaLE 23x

The Problem

βœ… Nixpkgs PR approved and merged.

β€‹πŸ”„ Run nix flake update.

β€‹βŒ Updates not available yet.

Tracking Nixpkgs Merged Pull Requests | PlanetNix 2026 β€’ SCaLE 23x

Typical Deployment Paths

Fast Lane (< 500 Rebuilds)

master ➑️ <nix-channel>

Slow Lane (1000+ Rebuilds)

staging πŸ” staging-next ↩️

β†ͺ️ master ➑️ <nix-channel>

Tracking Nixpkgs Merged Pull Requests | PlanetNix 2026 β€’ SCaLE 23x

Why the Slow Lane?

Mass rebuilds (Go, Python, GCC)

5000+ packages affected.
Days of build time.
Risk of breakages.

Solution: Batch in staging branch.

Tracking Nixpkgs Merged Pull Requests | PlanetNix 2026 β€’ SCaLE 23x

Labels Tell the Story

Check your PR labels:

  • 10.rebuild-linux: 5001+ β†’ staging (Slow Lane)
  • 10.rebuild-linux: 1-10 β†’ master (Fast Lane)
  • 1.severity: security β†’ Backport to Stable

🏷️ Labels = πŸ“Œ Pins routes on the πŸ—ΊοΈ Map.

Tracking Nixpkgs Merged Pull Requests | PlanetNix 2026 β€’ SCaLE 23x

Example: Go 1.25.6

PR #480465 (Security Fix)

Labels:

1.severity: security 10.rebuild-linux: 5001+

Path:

staging β†’ (Slow Lane) β†’ Your System

Tracking Nixpkgs Merged Pull Requests | PlanetNix 2026 β€’ SCaLE 23x

Example: Ruby Backport

PR #451386

COMMIT_ID=$(gh pr view 451386 \
    --repo NixOS/nixpkgs \
    --json mergeCommit \
    | jq --raw-output '.mergeCommit.oid')

gh api \
    "repos/NixOS/nixpkgs/compare/${COMMIT_ID}...nixos-unstable" \
    --jq '.status'

If ahead or identical, then it's βœ… available.

Tracking Nixpkgs Merged Pull Requests | PlanetNix 2026 β€’ SCaLE 23x

Quick Reference

Rebuilds Target Branch Speed
< 500 = master Fast
500-1000 β‡’ staging Medium
1000+ =staging Slow (~ Weeks)

See status.nixos.org page.

Tracking Nixpkgs Merged Pull Requests | PlanetNix 2026 β€’ SCaLE 23x

Summary

  1. Merging β‰  Availability - PRs follow different paths.
  2. Labels - They predict timeline.
  3. Staging β‰ˆ Patience - Mass rebuilds take time.
  4. Track, Don't Guess - Use Git{,Hub} commands.
Tracking Nixpkgs Merged Pull Requests | PlanetNix 2026 β€’ SCaLE 23x

Thanks!

sheeeng.github.io/slides

❄

[30 seconds] Welcome! Quick show of hands: Who has waited for a merged Nixpkgs PR that just wouldn't show up? This is a 5-minute guide to understanding why that happens and how to track it.

[30 seconds] This is the frustrating experience. You see the PR merged on GitHub, you're excited, but running nix flake update gives you nothing. The fix is lost somewhere in the Nixpkgs pipeline.

[45 seconds] Think of Nixpkgs like a highway system. Small changes take the fast lane: straight from master to nixos-unstable. But large changes that rebuild thousands of packages? They take the slow lane through staging. Staging gets merged to staging-next about once per week according to CONTRIBUTING.md. See [STANGING](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#staging) documentation.

[30 seconds] Why separate lanes? When you update Go or Python, suddenly 5000+ packages need rebuilding. That's days of compute time on Hydra. Plus higher risk of something breaking. So Nixpkgs batches these together in staging to test them as a group.

[30 seconds] Here's the secret: Just look at the PR labels! The rebuild count label tells you which lane. 5001+ rebuilds? Staging. Under 500? Master. Security label means it should also get backported to stable releases. Labels are your map.

[20 seconds] Example: Go 1.25.6 security update. Labels show 5001+ rebuilds plus security severity. This went through staging, took the slow lane, and eventually reached users. The labels predicted this path perfectly.

[45 seconds] Don't guess, track! Use GitHub CLI to get the merge commit, then use the GitHub API to compare branches. If status returns 'ahead' or 'identical', your commit is in that branch.

[20 seconds] Quick reference card. Under 500 rebuilds? Fast lane. Over 1000? Definitely staging, so be patient. Always check status.nixos.org to see current channel status and any build failures.

[30 seconds] Four key points: One, merging doesn't mean availability. Two, labels tell you everything. Three, be patient with staging. Four, track with the commands instead of guessing. That's it!

[15 seconds] Thanks! Slides are on GitHub. Questions? Remember: check the labels, use the tracker, and be patient with staging. Happy Nixing!