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.
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.
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.
Updates can be disabled by adding a comment to the package:
# nixpkgs-update: no auto update
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.
If there is an existing PR with the exact title of $attrPath: $oldVersion -> $newVersion
, it will not update the package.
If Nix's builtins.compareVersions
does not think the "new" version is newer, it will not update.
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
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).
If the update is already on master
, staging
, or staging-next
, the update will fail.
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.
If the derivation file has no version and no updateScript, it will fail.
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.
If the rewrites didn't cause any derivations to change, it will fail.
If after the rewrites, it doesn't build, it will fail.