Hi, On Tue, 15 Dec 2020 at 19:29, Phil <p...@beadling.co.uk> wrote:
> 1) If the private channel is a git repo accessed via ssh it seems > necessary to add the ssh key to an ssh-agent rather than have it pick up > ~/.ssh/id_rsa. This isn't a huge problem but when the ssh key has no > passphrase the use of an agent is actually more complicated than passing > the key directly? Is it possible to specify a key file, and if not, is > there any good reason why not (I thought perhaps it might be access via > the guix-daemon or similar at a wild guess)? About this, I do not know. > 2) Assuming I use an ssh-agent to avoid issue in 1), if I want to only > pull updates from my private channel and not from the Guix channel, I > find myself doing something like the below to force Guix channel to stay > constant: > > eval `ssh-agent` && ssh-add && guix pull --commit=$(guix describe -f > json | jq -r '.[] | select(.name=="guix").commit') && guix upgrade > my-package-name > > This works, but it feels rather ugly - is there an easier way of saying > "hold guix constant, but pull in latest updates from my private > channel" - it feels like a common use-case to me? About this, you should write a specific channels.scm file and then run: guix pull -C channels.scm where the file is for example: --8<---------------cut here---------------start------------->8--- (use-modules (guix utils) (guix profiles) (guix channels) (guix openpgp)) (define guix (car %default-channels)) (define current (string-append (config-directory #:ensure? #f) "/current")) (define channels (profile-channels current)) (define defaults (filter (lambda (channel) (define (channel=? channel1 channel2) (equal? (channel-name channel1) (channel-name channel2))) (channel=? channel guix)) channels)) (append defaults (list (channel (name 'past) (url "https://gitlab.inria.fr/guix-hpc/guix-past.git") (branch "master")))) --8<---------------cut here---------------end--------------->8--- Obviously, this is a quick example and you could filter as you want--here only with the channel name "guix". And this file could be in '~/.config/guix/channels.scm' and so "guix pull" would only pull everything except the channel named 'guix' which stays constant. Then to update the current 'guix' channel, you could have another file, for instance ~/.config/guix/default-channels.scm containing only one line with "%default-channels" and so "guix pull -C ~/.config/guix/default-channels.scm" would only update the default ones. The point is: instead of this ugly command line with ugly filtering, you should investigate in the Scheme API. :-) Hope that helps, simon