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

Reply via email to