Hi, > Is there anything like git bisect but for guix channel? so I can get what > commit (in guix) broke my channel and know how to fix it.
I implemented a small channel pinning mechanism for myself, where I keep a list of previously known "good" commits: https://gitlab.com/rostislav.svoboda/dotfiles/-/blob/master/guix/common/config/channels/home-channels.scm > How to deal with broken package builds? They are catched by the CI system: > should be report them? why doesn't guix maintain a develop branch and use > master for changes that pass CI? I have a procedure to make inferior package management a bit more convenient: https://gitlab.com/rostislav.svoboda/dotfiles/-/blob/master/guix/home/common/config/packages/all.scm#L835 That said, I generally avoid using inferiors, since they may trigger rebuilds that take too long to finish. IMO, a better approach is to copy/paste the problematic package into your own channel and pin the commit there. (And then use method (A) or (B) described below.) I keep my Guile/Guix code in two places: - In the early stages of development, as part of my dotfiles. It's loaded using `--load-path`. One day I'll move this into a separate channel for proper reproducibility. - In my own separate channel. Here, I mirror the directory/module structure but prefix it with my own (or someone else's) namespace. For example, I have a fixed implementation of `write-pkg-file` from `(guix build emacs-utils)` in the `(bost guix build emacs-utils)` module. That way I can: (A) write something like: #:use-module ((bost gnu packages emacs-build) #:prefix bst:) #:use-module ((gnu packages emacs-build) #:prefix gnu:) Or (B) switch between my implementation, upstream's, or someone else's simply by commenting in/out: #:use-module (gnu packages emacs-build) ;; #:use-module (bost gnu packages emacs-build) ;; #:use-module (jack gnu packages emacs-build) > Some people use rebase, but I find it sub-optimal, because it forces you to > pass `--allow-downgrades' flag to `guix pull'. About 1.5 years ago, I wrote a patch that enables `--allow-downgrades` per channel. The patch is stalled, and I don't use it myself at the moment - though I probably should: https://issues.guix.gnu.org/70353 Cheers, Bost