Nixpkgs has a lot of packages. In fact it has been the number one on repology for quite some time number of packages
- nix (nixpkgs unstable): 119100 packages
- Arch user repository (AUR): 95396 packages
- Debian (Raspbian Testing): 46368 packages
With that comes a lot of maintenance work, even if big parts of it can be
automated. As of today, there are 5275 maintainers listed in
maintainers-list.nix.
The information about who is responsible for a package is listed in its
metadata. E.g. the yubikey-manager package lists me and three others as
maintainers, along with some other information about the package.
meta = {
homepage = "https://developers.yubico.com/yubikey-manager";
changelog = "https://github.com/Yubico/yubikey-manager/releases/tag/src.tag";
description = "Command line tool for configuring any YubiKey over all USB transports";
license = lib.licenses.bsd2;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [
benley
lassulus
pinpox
nickcao
];
mainProgram = "ykman";
};
As a package maintainer you are expected to keep that package working and up to date. If pull requests or issues involving it are opened, you will get notified. If @r-ryantm (the nixpkgs update bot) opens a version bump PR for it, you are able to merge it after review, even if you don't have commit rights to nixpkgs.
Visualizing maintenance status
Every packages should therefore have a maintainer, if possible multiple. It would be nice to find all unmaintained packages and either find someone that wants to maintain them or remove them if nobody cares enough about them.
Nixpkgs itself has all that information, however I found the visualisation lacking. Questions like these should be easy to answer for anyone:
- What are the most depended on, unmaintained packages?
- What packages are broken, unmaintained and not depended on by any other package?
- What packages does maintainer X maintain?
For this reason I build https://nixpkgs.fyi a tool to visualize, filter and search packages and their maintainers.

My hope is that it makes it easier for people to find unmaintained packages that they care about and maybe pick up maintenance for them. It can also be used to cleanup broken stuff that nobody cares about. It is not pretty (yet), but works already quite well.
Some numbers
Here are some numbers. Exact package count varies depending on what you count exactly. Things like hooks are not really a package in this sense, so they can be filtered.
| Count | Share | |
|---|---|---|
| Packages total | 102,167 | |
| Unmaintained | 38,698 | 37.9% |
| Single maintainer | 41,781 | 40.9% |
| Team only | 9,520 | 9.3% |
| Broken | 8,435 | |
| Maintainers | 4,904 | |
| Teams | 85 | |
| Setup hooks | 206 |
How does it work
The application consists of two parts:
nixmaint update evaluates the whole package set of nixpkgs with
nix-eval-jobs. The evaluation
runs in parallel workers, with unfree, insecure and broken packages allowed and
aliases disabled. It puts all the information into a sqlite database after some
transformations by a little Go helper.
nixmaint serve is a read-only Go web server that serves the frontend and
displays the information from the sqlite database in a usable form.
The full source can be found on github.