Open ashkitten opened 7 months ago
This issue has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/2023-11-28-nixpkgs-architecture-team-meeting-46/36171/1
I vaguely remember we discussed this topic in this repo but cannot find it now. Edit: I only found https://github.com/nixpkgs-architecture/issues/issues/17#issuecomment-1477098934
I think there are three distinct subjects here (although there is some overlap):
common-updater-scripts
, especially update-source-version
*Updater
(e.g. gitUpdater
, unstableGitUpdater
)nix-update
updateScript
protocol
updateWalker
, it does not try to encode policy, just points to an opaque script to run*Updater
familygnome.updateScript
_experimental-update-script-combinators
nix-update-script
using nix-update
maintainers/scripts/update.nix
– the official runner for updateScript
protocolnix-update
– both low and high level tool, includes some baked-in policiesmaintainers/scripts/update.nix calls passthru.updateScript, but is underdocumented
The documentation is part of its help page (displayed when run without arguments). I have been thinking about folding it into the Python script for better UX of the argument handling.
How do we handle multiple packages that need to be updated together (i.e package sets)?
For GNOME, we use the predicate
mode of update.nix
but the predicate is currently ugly due to lack of tags.
I also want to implement update ordering (e.g. topological order in the dependency relation for packages that update together and require bumping of dependency, and reverse order for minimizing rebuilds when traversing the branch).
Issue description
Automatic package update scripts are rather fragmented. We have several ways of updating packages:
passthru.updateScript
is the most universal at the momentpassthru.updateScript
. supports automatically updating certainsrc
derivationspassthru.updateScript
, but is underdocumentedQuestions
Goal
Allow updating any auto-updatable package from a standard mechanism.
List of packages with non-standard update scripts: