r-darwish / topgrade

Upgrade everything
GNU General Public License v3.0
3.37k stars 162 forks source link

Support GNU Guix: distro independent, declarative #979

Open JamesClarke7283 opened 1 year ago

JamesClarke7283 commented 1 year ago

I want to suggest a new step

I would like support for GNU Guix, its my favorite declarative/source based package manager. And i use it on all my devices. And also think lot of others (especially those on FSDG compliant distros) would benefit from it being supported by this tool.

Which tool is this about? Where is its repository?

To learn what it's about, info here

For convenience, I have put a mirror of the git repo here here: Reason why its the mirror is some people may find the GitHub interface more families (README file pops up, etc). But the original repo is listed there.

Which operating systems are supported by this tool?

Any GNU System, (linux kernel is the main one, hurd kernel is also supported by the package manager)

What should Topgrade do to figure out if the tool needs to be invoked?

Check if the package manager is installed.

This checks if guix can be used, that the tool is in $PATH: if [ $(which guix) ]; then echo 1; else echo 0; fi

Which exact commands should Topgrade run?

guix pull Upgrades guix package manager & updates the package database More Info...

guix package -u Upgrades packages installed by the user, which are located in their .guix_profile More Info...

I want to suggest some general feature

Broken Installation Check

Topgrade could optionally also check if an attempted installation happened, but failed, but not essential.

This checks if guix is installed at all(even if installed incorrectly): if [ -e /gnu ]; then echo 1; else echo 0; fi The reason being, is that any time guix is installed, this directory will be made. Potentially, it may be useful to tell the user that guix was installed incorrectly, like if the guix binary was not found but this directory was detected, but i don't know if this is in scope of this issue, so its just a side note

More information

User Testing

I know how to do software testing, to do this i would do a git clone of that branch, then cargo run, to test it i believe.

I do not know the rust programming language, but I can at least do some user testing of your software and share results, including logs, etc.

Check for new package versions, upstream

Guix also lets you check if there are new software versions, upstream: To check if the upstream(version not on guix yet) has a new version, the command to check for all the packages, is just this command guix refresh I only put this here, in case someone would think it would benefit the user to add this. More Info...

Programming interface (Developer Docs)

https://guix.gnu.org/manual/en/html_node/Programming-Interface.html

JamesClarke7283 commented 1 year ago

Waiting for #982 to be merged, all good here. I've been using my fork on all my GNU/Linux machines, at least. I think it's fine to not test on MacOS/BSD because as far as I know, Guix does not run on them directly (yet). I know someone would point out how different the architectures are and Guix not planning to do it, but anything is possible.

If my assumption is incorrect, let me know, so I can test it on one, Or if you already use one of those platforms, would appreciate user testing.