all messages for Guix-related lists mirrored at
 help / color / mirror / code / Atom feed
From: zimoun <>
To: Phil <>
Cc: help-guix <>
Subject: Re: guix pull only from private channel
Date: Wed, 16 Dec 2020 15:07:49 +0100	[thread overview]
Message-ID: <> (raw)
In-Reply-To: <>


On Tue, 15 Dec 2020 at 19:29, Phil <> 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---
 (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)
                             (channel-name channel1)
                             (channel-name channel2)))
                          (channel=? channel guix))

  (name 'past)
  (url "")
  (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

The point is: instead of this ugly command line with ugly filtering,
you should investigate in the Scheme API. :-)

Hope that helps,

  reply	other threads:[~2020-12-16 14:08 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-15 17:58 guix pull only from private channel Phil
2020-12-16 14:07 ` zimoun [this message]
2020-12-19 12:28   ` Phil
2020-12-21 12:16     ` zimoun
2020-12-22  9:27       ` Phil
2020-12-22 11:44         ` zimoun

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='' \ \ \ \

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.