Nixpkgs Maintainer FAQ
@r-ryantm opened a PR for my package, what do I do?
Thanks for being a maintainer. Hopefully, @r-ryantm will be able to save you some time!
- Review the PR diff, making sure this update makes sense
- sometimes updates go backward or accidentally use a dev version
- Review upstream changelogs and commits
- Follow the "Instructions to test this update" section of the PR to get the built program on your computer quickly
- Make a GitHub Review approving or requesting changes. Include screenshots or other notes as appropriate.
Why is @r-ryantm not updating my package?
There are lots of reasons a package might not be updated. You can usually figure out which one is the issue by looking at the logs or by asking the maintainers.
No new version information
r-ryantm gets its new version information from three sources:
- Repology - information from Repology is delayed because it only updates when there is an unstable channel release
- GitHub releases
- package passthru.updateScript
If none of these sources says the package is out of date, it will not attempt to update it.
Disabling package updates
Updates can be disabled by adding a comment to the package:
# nixpkgs-update: no auto update
Skiplist
We maintain a Skiplist of different things not to update. It is possible your package is triggering one of the skip criteria.
Python updates are skipped if they cause more than 100 rebuilds.
Existing Open or Draft PR
If there is an existing PR with the exact title of $attrPath: $oldVersion -> $newVersion
, it will not update the package.
Version not newer
If Nix's builtins.compareVersions
does not think the "new" version is newer, it will not update.
Incompatibile with "Path Pin"
Some attrpaths have versions appended to the end of them, like ruby_3_0
, the new version has to be compatible with this "Path pin". Here are some examples:
-- >>> versionCompatibleWithPathPin "libgit2_0_25" "0.25.3"
-- True
--
-- >>> versionCompatibleWithPathPin "owncloud90" "9.0.3"
-- True
--
-- >>> versionCompatibleWithPathPin "owncloud-client" "2.4.1"
-- True
--
-- >>> versionCompatibleWithPathPin "owncloud90" "9.1.3"
-- False
--
-- >>> versionCompatibleWithPathPin "nodejs-slim-10_x" "11.2.0"
-- False
--
-- >>> versionCompatibleWithPathPin "nodejs-slim-10_x" "10.12.0"
-- True
Can't find derivation file
If nix edit $attrpath
does not open the correct file that contains the version string and fetcher hash, the update will fail.
This might not work, for example, if a package doesn't have a meta
attr (at all, or if the package uses a builder function that is discarding the meta
attr).
Update already merged
If the update is already on master
, staging
, or staging-next
, the update will fail.
Can't find hash or source url
If the derivation file has no hash or source URL, it will fail.
Since nixpkgs-update
is trying to read these from <pkg>.src
, this can also happen if the package's source is something unexpected such as another package. You can set the fallback originalSrc
attr so that nixpkgs-update
can find the correct source in cases like this.
No updateScript and no version
If the derivation file has no version and no updateScript, it will fail.
No changes
If the derivation "Rewriters" fail to change the derivation, it will fail.
If there is no updateScript, and the source url or the hash did not change, it will fail.
No rebuilds
If the rewrites didn't cause any derivations to change, it will fail.
Didn't build
If after the rewrites, it doesn't build, it will fail.