I really love the declarative way of guix system and guix home to configure my installation.
Unfortunately it often happens that after a guix pull some package (currently it’s python-autopep8) fails to build.
Often this package is just some dependency (and I don’t even have a clue why python-autopep8 is needed by which package).
The problem is now, that due to the transactional manner in wich guix reconfigure works I get stuck completely.
I can’t even change a dotfile (since it’s managed by guix) or install a new package I need.
Of course I could do that manually but that would lead to the chaos I had before using guix home.
The only solution I see to get my system back to working would be to undo the guix pull (but is there a way to do that?).
There must be a better strategy to deal with these situations, like excluding the failing package and it’s dependencies to get updated.
How do you guys deal with this situation (since it happens quite often).
Cheers
Alex
EDIT: PS: since todays guix pullautopep8 is not the problem any more but now python-joblibfails building in the check phase. This illustrates that this is not a singular problem but rather a general issue.
So far I don’t pin any package since I have no idea which package I should pin to circumvent the problem.
Is there a strategy for pining?
I could try to pin everything in my home environment. Add new packages using guix install and as soon as I feel fine with it, add it to my home environment pinned to the working version (this will probably not work for the system config). But that’s not a good strategy is it?
Pin using commit in your ~/.config/guix/channels.scm . Sometimes it takes a while to find a stable version, especially if you accidentally pull after they did a huge merge upstream. When I came back to Guix System I had to steal the commit hashes from David’s dotfiles to get the system to install correctly.