Tools that make it easier to contribute to nixpkgs.
I (zimbatm) build Maintainer Mode for myself, to make my maintenance of nixpkgs more enjoyable. It runs in public at maintainermode.org, so other contributors can use it too. It is not an official NixOS project.
nixpkgs is big: more than 100,000 packages, 2,000 NixOS modules, thousands of open pull requests and issues. Most of the friction is finding what needs you, and knowing enough about it to act. Maintainer Mode reduces that friction in three ways.
Information about all of nixpkgs, for everyone, with no login:
- A page for each package, NixOS module and directory, with all the
metainformation, its maintainers and teams, its open issues and pull requests, and its health:- the newest upstream release, and the open version bumps;
- advisories from the security tracker, with CVSS, EPSS and OSV;
- the last Hydra build, or the NixOS test of a module;
- the version in each channel, and when a fix needs a backport;
- packaging gaps, and one risk score that sums it all up.
- A page for each pull request: its place in the queues, the packages it touches and their health, the diff, the reviews and a review checklist. You leave the review on GitHub.
- Search across packages, modules and directories. An exact name opens its page, and
@loginopens the page of a person. - Statistics: the state of nixpkgs month by month (pull requests, reviews, merge times), and of its packages (outdated, vulnerable, unmaintained).
- Queues: pull requests that need review, and pull requests ready to merge.
Sign in with GitHub, and Maintainer Mode shows what you care about:
- What you maintain: every package and module whose
meta.maintainersormeta.teamsnames you, worst first. - What you watch: subscribe to any package, module or directory.
- Needs you: the top of the home page. It lists what waits for you, the most urgent first: a serious advisory on your machines, a new review on your pull request, a blocked pull request, a pull request to review. Snooze an item, or push Next to go through them.
- Your pull requests: set a follow-up plan on each one. If nobody reviews in some days, you get a reminder to ask the maintainers, or to merge it yourself when you are a committer. Maintainer Mode never merges.
- Needs review, for you: by default, the review queue shows the pull requests on what you maintain or watch.
- Your system: upload the closure of your machines, and follow the packages you really run. It stays private.
- Notifications: an inbox on the site and a private Atom feed for the reviews, merges and closes of your own pull requests, and for new pull requests, merges, issues, advisories and releases.
- Your progress: your reviews, your streak and your goals. There is no leaderboard.
- For committers: what is ready to merge in your areas, on the Ready to merge tab of the review page.
- Onboarding: a first visit walks you through all of this.
Buttons that start work for you, in your own repositories, with your token:
- Review in CI runs nixpkgs-review on a pull request.
- Update with nix-update bumps a package and pushes a branch to your fork, also when the build fails, so you can continue from there.
- Claude Code, if you opt in to LLMs: a session on a pull request with the nixpkgs AI policy in its instructions, and an MCP server for your own tools.
Maintainer Mode helps you find work. nixpkgs decides how the work is done. Read its own guides first:
- CONTRIBUTING.md: how to open, review and merge a pull request, commit messages, and the policy on automation and AI.
- pkgs/README.md: how to write and update a package.
- nixos/README.md: how to write a NixOS module and its test.
- maintainers/README.md: how to become a maintainer, and what it means.
- The Nixpkgs manual: the reference.
- It never writes to nixpkgs. No reviews, no merges, no comments, no labels. The one write it makes is on your click: it starts a workflow in a repository you own.
- It grants nothing. Committers decide; Maintainer Mode shows evidence.
- No leaderboard. Review credit decides which pull requests get on the list. It never ranks people. See the rules.
- Your data stays yours. Subscriptions, uploads and settings show only to you, and never in a public number.
- Open about its state. Data status shows what the server has read and how fresh it is.
The site also shows these pages, in the Docs tab of /state.
| Page | What it covers |
|---|---|
| docs/rules.md | review credit, routing, the state of nixpkgs (/state?tab=rules) |
| docs/health.md | package pages, the risk score, upstream, channels |
| docs/personal.md | what you maintain and watch, your package set |
| docs/actions.md | Actions, the LLM opt-in, the MCP server |
| docs/api.md | the JSON API and the command line |
| docs/data.md | how the data is read, the event log, the archive |
| docs/operations.md | run it, its variables, what we took |
| docs/events.md | the plan of the event log |
| docs/ingest.md | the plan of the archive |
| docs/rescan.md | server rescans of flakes, and their threat model |
nix build
./result/bin/maintainer-mode serve --db maintainer-mode.sqliteThe NixOS module is nixosModules.default; nixosModules.instance sets up
maintainermode.org. CI is nix flake check. More in
docs/operations.md.
MIT