* Real-world example for channels? @ 2019-01-26 22:16 Hartmut Goebel 2019-01-26 23:00 ` Ricardo Wurmus ` (2 more replies) 0 siblings, 3 replies; 8+ messages in thread From: Hartmut Goebel @ 2019-01-26 22:16 UTC (permalink / raw) To: help-guix Hi, I'm looking for some real-world examples for channels. After reading <https://www.gnu.org/software/guix/manual/en/html_node/Channels.html> I'm confused: * AFAIU Section 3.7.1 shows an example for pulling *whole* guix from a different location. So this needs to be a complete guix-clone (optionally including my own package modules). * Section 3.7.2 describes how to add "a Git repository containing [my] own package modules". o What files or scm-packages is this git-repo expected to include? What's the file-layout? Is there a suggested naming-convention? How to #use-module these packages? o What happens if files conflict? Which repo will take precedence? I suggest adding a short example to the manual. To avoid any conflict with the warinign in sec. 3.7.2 this could be some "personal dotfiles" package. Side-note: IMHO 3.7.1 should not be the first section, since this is not the case most user will want to use. Thanks in advance for answering -- Regards Hartmut Goebel | Hartmut Goebel | h.goebel@crazy-compilers.com | | www.crazy-compilers.com | compilers which you thought are impossible | ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Real-world example for channels? 2019-01-26 22:16 Real-world example for channels? Hartmut Goebel @ 2019-01-26 23:00 ` Ricardo Wurmus 2019-01-28 0:46 ` Chris Marusich 2019-01-27 9:52 ` Efraim Flashner 2019-01-28 0:49 ` Chris Marusich 2 siblings, 1 reply; 8+ messages in thread From: Ricardo Wurmus @ 2019-01-26 23:00 UTC (permalink / raw) To: Hartmut Goebel; +Cc: help-guix Hi Hartmut, > I'm looking for some real-world examples for channels. Here’s an example: https://github.com/BIMSBbioinfo/guix-bimsb > After reading > <https://www.gnu.org/software/guix/manual/en/html_node/Channels.html> > I'm confused: > > * AFAIU Section 3.7.1 shows an example for pulling *whole* guix from a > different location. So this needs to be a complete guix-clone > (optionally including my own package modules). Correct. > * Section 3.7.2 describes how to add "a Git repository containing [my] > own package modules". > o What files or scm-packages is this git-repo expected to include? > What's the file-layout? Is there a suggested naming-convention? > How to #use-module these packages? No files are expected to be included. You only include files that you want to offer. There is no prescribed file layout, nor is there any naming convention. You #:use-module these modules like any other module. If the repository contains a file “foo.scm” which starts with “(define-module (foo) …)”, then you can “#:use-module (foo)” after the repository has been added as a channel. I suggest putting modules in separate namespaces. All modules provided by “guix-bimsb”, for example, are in the “bimsb” namespace. -- Ricardo ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Real-world example for channels? 2019-01-26 23:00 ` Ricardo Wurmus @ 2019-01-28 0:46 ` Chris Marusich 2019-01-28 6:57 ` Konrad Hinsen 2019-02-12 16:24 ` Ludovic Courtès 0 siblings, 2 replies; 8+ messages in thread From: Chris Marusich @ 2019-01-28 0:46 UTC (permalink / raw) To: Ricardo Wurmus; +Cc: help-guix [-- Attachment #1.1: Type: text/plain, Size: 1194 bytes --] Ricardo Wurmus <rekado@elephly.net> writes: > No files are expected to be included. You only include files that you > want to offer. There is no prescribed file layout, nor is there any > naming convention. > > You #:use-module these modules like any other module. > > If the repository contains a file “foo.scm” which starts with > “(define-module (foo) …)”, then you can “#:use-module (foo)” after the > repository has been added as a channel. > > I suggest putting modules in separate namespaces. All modules provided > by “guix-bimsb”, for example, are in the “bimsb” namespace. I agree with Hartmut. I also found this confusing. I've attached a patch to try clarifying it. What do you think? If the Guix manual had told me that the repository's root directory will basically be added to the Guile load path, I would have understood the expected file structure immediately. The Guile manual clearly describes the requirements for making modules available via the load path. Maybe the existing text was clear enough for some. I read it but still wasn't sure exactly how Guix expected me to lay out my channel's files. -- Chris [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #1.2: 0001-doc-Clarify-channel-file-structure.patch --] [-- Type: text/x-patch, Size: 2012 bytes --] From d382cbddd11e86bd9b69f271782d2dccba180a05 Mon Sep 17 00:00:00 2001 From: Chris Marusich <cmmarusich@gmail.com> Date: Sun, 27 Jan 2019 16:29:30 -0800 Subject: [PATCH] doc: Clarify channel file structure. Suggested by Hartmut Goebel <h.goebel@crazy-compilers.com>. * doc/guix.texi (Channels): Clarify how a channel author should structure the files in their channel's Git repository. --- doc/guix.texi | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 22fc03b8f..5499ebf5b 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -3691,10 +3691,20 @@ share your improvements, which are basic tenets of email us at @email{guix-devel@@gnu.org} if you'd like to discuss this. @end quotation -Once you have a Git repository containing your own package modules, you can -write @code{~/.config/guix/channels.scm} to instruct @command{guix pull} to -pull from your personal channel @emph{in addition} to the default Guix -channel(s): +To create a channel, create a Git repository containing your own package +modules and make it available. The repository can contain anything, but a +useful channel will contain Guile modules that export packages. Once you +start using a channel, Guix will behave as if the root directory of that +channel's Git repository has been added to the Guile load path (@pxref{Load +Paths,,, guile, GNU Guile Reference Manual}). For example, if your channel +contains a file at @file{my-packages/my-tools.scm} that defines a Guile +module, then the module will be available under the name @code{(my-packages +my-tools)}, and you will be able to use it like any other module +(@pxref{Modules,,, guile, GNU Guile Reference Manual}). + +To use a channel, you can write @code{~/.config/guix/channels.scm} to instruct +@command{guix pull} to pull from your personal channel @emph{in addition} to +the default Guix channel(s): @vindex %default-channels @lisp -- 2.20.1 [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 832 bytes --] ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: Real-world example for channels? 2019-01-28 0:46 ` Chris Marusich @ 2019-01-28 6:57 ` Konrad Hinsen 2019-02-12 16:24 ` Ludovic Courtès 1 sibling, 0 replies; 8+ messages in thread From: Konrad Hinsen @ 2019-01-28 6:57 UTC (permalink / raw) To: help-guix Hi Chris, > I agree with Hartmut. I also found this confusing. I've attached a > patch to try clarifying it. What do you think? Thanks for the clarification. I was also confused about this, to the point of never actually setting up my own channel. Konrad. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Real-world example for channels? 2019-01-28 0:46 ` Chris Marusich 2019-01-28 6:57 ` Konrad Hinsen @ 2019-02-12 16:24 ` Ludovic Courtès 2019-02-13 5:41 ` Chris Marusich 1 sibling, 1 reply; 8+ messages in thread From: Ludovic Courtès @ 2019-02-12 16:24 UTC (permalink / raw) To: Chris Marusich; +Cc: help-guix Hi Chris, Chris Marusich <cmmarusich@gmail.com> skribis: > From d382cbddd11e86bd9b69f271782d2dccba180a05 Mon Sep 17 00:00:00 2001 > From: Chris Marusich <cmmarusich@gmail.com> > Date: Sun, 27 Jan 2019 16:29:30 -0800 > Subject: [PATCH] doc: Clarify channel file structure. > > Suggested by Hartmut Goebel <h.goebel@crazy-compilers.com>. > > * doc/guix.texi (Channels): Clarify how a channel author should structure the > files in their channel's Git repository. > --- > doc/guix.texi | 18 ++++++++++++++---- > 1 file changed, 14 insertions(+), 4 deletions(-) > > diff --git a/doc/guix.texi b/doc/guix.texi > index 22fc03b8f..5499ebf5b 100644 > --- a/doc/guix.texi > +++ b/doc/guix.texi > @@ -3691,10 +3691,20 @@ share your improvements, which are basic tenets of > email us at @email{guix-devel@@gnu.org} if you'd like to discuss this. > @end quotation > > -Once you have a Git repository containing your own package modules, you can > -write @code{~/.config/guix/channels.scm} to instruct @command{guix pull} to > -pull from your personal channel @emph{in addition} to the default Guix > -channel(s): > +To create a channel, create a Git repository containing your own package > +modules and make it available. The repository can contain anything, but a > +useful channel will contain Guile modules that export packages. Once you > +start using a channel, Guix will behave as if the root directory of that > +channel's Git repository has been added to the Guile load path (@pxref{Load > +Paths,,, guile, GNU Guile Reference Manual}). For example, if your channel > +contains a file at @file{my-packages/my-tools.scm} that defines a Guile > +module, then the module will be available under the name @code{(my-packages > +my-tools)}, and you will be able to use it like any other module > +(@pxref{Modules,,, guile, GNU Guile Reference Manual}). > + > +To use a channel, you can write @code{~/.config/guix/channels.scm} to instruct > +@command{guix pull} to pull from your personal channel @emph{in addition} to > +the default Guix channel(s): I’d perhaps move the “To create a channel” paragraph after the “To use a channel” paragraph, but otherwise LGTM. Thanks for taking the time to improve the manual! Ludo’. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Real-world example for channels? 2019-02-12 16:24 ` Ludovic Courtès @ 2019-02-13 5:41 ` Chris Marusich 0 siblings, 0 replies; 8+ messages in thread From: Chris Marusich @ 2019-02-13 5:41 UTC (permalink / raw) To: Ludovic Courtès; +Cc: help-guix [-- Attachment #1: Type: text/plain, Size: 185 bytes --] Hi Ludo, I've pushed this as b0a372637f683eae35802af93d67711c3a18e480. Thank you everyone for the feedback! And thank you to Hartmut for calling out the problem! -- Chris [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 832 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Real-world example for channels? 2019-01-26 22:16 Real-world example for channels? Hartmut Goebel 2019-01-26 23:00 ` Ricardo Wurmus @ 2019-01-27 9:52 ` Efraim Flashner 2019-01-28 0:49 ` Chris Marusich 2 siblings, 0 replies; 8+ messages in thread From: Efraim Flashner @ 2019-01-27 9:52 UTC (permalink / raw) To: Hartmut Goebel; +Cc: help-guix [-- Attachment #1: Type: text/plain, Size: 699 bytes --] On Sat, Jan 26, 2019 at 11:16:31PM +0100, Hartmut Goebel wrote: > Hi, > > I'm looking for some real-world examples for channels. > Here's the contents of my ~/.config/guix/channels.scm (cons* (channel (name 'chromium) (url "https://gitlab.com/mbakke/guix-chromium.git") (branch "master")) (channel (name 'ietf) (url "https://gitlab.com/efraim/guix-ietf.git") (branch "master")) %default-channels) -- Efraim Flashner <efraim@flashner.co.il> אפרים פלשנר GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Real-world example for channels? 2019-01-26 22:16 Real-world example for channels? Hartmut Goebel 2019-01-26 23:00 ` Ricardo Wurmus 2019-01-27 9:52 ` Efraim Flashner @ 2019-01-28 0:49 ` Chris Marusich 2 siblings, 0 replies; 8+ messages in thread From: Chris Marusich @ 2019-01-28 0:49 UTC (permalink / raw) To: Hartmut Goebel; +Cc: help-guix [-- Attachment #1: Type: text/plain, Size: 463 bytes --] Hartmut Goebel <h.goebel@crazy-compilers.com> writes: > o What happens if files conflict? Which repo will take precedence? I think the short answer is: for now, don't do that. There was some discussion here about conflicts: https://lists.gnu.org/archive/html/guix-devel/2018-10/msg00384.html We basically agreed that for now, we should error out if there is a conflict, but I don't know if that code has been implemented yet. -- Chris [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 832 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2019-02-13 5:54 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2019-01-26 22:16 Real-world example for channels? Hartmut Goebel 2019-01-26 23:00 ` Ricardo Wurmus 2019-01-28 0:46 ` Chris Marusich 2019-01-28 6:57 ` Konrad Hinsen 2019-02-12 16:24 ` Ludovic Courtès 2019-02-13 5:41 ` Chris Marusich 2019-01-27 9:52 ` Efraim Flashner 2019-01-28 0:49 ` Chris Marusich
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).