guile-email 0.2.0 released
I am pleased to announce the release of guile-email 0.2.0. guile-email is a collection of email utilities implemented in pure guile. It supports parsing MIME (Multipurpose Internet Mail Extensions) compliant email messages and reading emails from the mbox format. guile-email is used by mumi, a web interface to the Debbugs bug tracker. Mumi is primarily used by the Guix project at https://issues.guix.info. Project home-page: https://guile-email.systemreboot.net * Features - Parse RFC5322 compliant email messages (currently does not support obsolete syntax) - Parse MIME compliant email messages as specified in RFC2045, RFC2046, RFC2047 and RFC2049 - Parse non-standard Emacs message mode parens style addresses - Encode and decode Quoted-Printable encoding, Base64 encoding and Q-encoding - Read emails from the mbox format * Download Please find the release tarball and a detached GPG signature at the links below. https://guile-email.systemreboot.net/releases/guile-email-0.2.0.tar.lz https://guile-email.systemreboot.net/releases/guile-email-0.2.0.tar.lz.asc Please see the NEWS file in the release tarball for a list of user visible changes. signature.asc Description: PGP signature
Re: Happy birthday, Guile!
> Today, it’s been 9 years since Guile 2.0 came out! Happy birthday, Guile! And, congratulations to the entire Guile community! > We used to have a “Guile potluck” for the anniversary, where people > would bring their own hacks and virtually join for a party. We missed > it this year, but if there’s a nice hack that you’d like to share, now > is a good time! I just made some guile bindings for xapian[1], the search library. My first use of the library will be to improve Guix package search. But, I can think of many more interesting things to do with it! https://git.systemreboot.net/guile-xapian/about It's quite incomplete and probably a little premature to announce it here, but since you asked! :-) [1]: https://xapian.org/ signature.asc Description: PGP signature
Re: How to operate on peg:tree structure
> That means i now have to do something useful with the peg tree. How does > it work? I don'tknow exactly what to do from here. I guess i have to walk > the tree somehow and execute the rules as i go, but i don't have a clue > how to do this :/. When I need to operate on a PEG parse tree, I use pre-post-order from (sxml transform). But I'm not sure if this is the best way and I'd be glad to hear if someone has a better way. If you'd like a code example, see my use of pre-post-order in guile-email. https://git.systemreboot.net/guile-email/plain/email/email.scm Cheers! signature.asc Description: PGP signature
Re: figuring out behaviour of peg
Hi Malte, > Multiple consecutive module definitions also are parsed into a > list. This *should* also not be the case. So is there a way to avoid > this? I guess it has something to do with ()* clauses in the grammar > definition? This is another pain point with peg, but I don't know if it can be helped. Like you noted, it has to do with the ()* clauses from the following definition in your grammar. > list <-- listlb ws? listrb / listlb ws? comment* ws? value (comma > comment* ws? value)* comma? ws? comment* listrb I normally handle this by post processing the parse tree using pre-post-order. See below for code snippet. > (pretty-print (peg:tree (match-pattern blueprint *bp*))) --8<---cut here---start->8--- (pretty-print (pre-post-order (peg:tree (match-pattern blueprint *bp*)) `((list *macro* . ,(lambda (_ . values) (filter list? (keyword-flatten '(value) values (*text* . ,(lambda (_ value) value)) (*default* . ,(lambda tree tree) --8<---cut here---end--->8--- You could also see my use of macro-process-address-list in guile-email at https://git.systemreboot.net/guile-email/plain/email/email.scm > (define *bp* > (read-delimited "" (open-input-file (cadr (command-line))) 'concat)) A minor nitpick: You could use call-with-input-file instead of open-input-file. call-with-input-file automatically closes the port after use. signature.asc Description: PGP signature
Re: guile program distributed as single executable?
Hi Andy, > Hi, is there a way to "package" set of guile scripts, possibly with > other files like extensions, shared libraries, etc all combined into a > single executable? Something like PyInstaller for Python. Thanks for > info. Not that I'm aware of, but `guix pack' probably comes closest. https://guix.gnu.org/manual/en/html_node/Invoking-guix-pack.html Not exactly what you want, but hope that helps! Regards, Arun
guile-email 0.3.0 released
Hello all, I am pleased to announce the release of guile-email 0.3.0. Significant changes since the 0.2.2 release are described in the NEWS file. https://git.systemreboot.net/guile-email/tree/NEWS I would like to thank Andrew Whatson, Mark H Weaver, Mathieu Othacehe and Ricardo Wurmus for contributing bug reports and code towards this release. * What is guile-email? guile-email is a collection of email utilities implemented in pure guile. It supports parsing MIME (Multipurpose Internet Mail Extensions) compliant email messages and reading emails from the mbox format. Its features include: - Parse RFC5322 compliant email messages (including obsolete syntax) - Parse MIME compliant email messages as specified in RFC2045, RFC2046, RFC2047 and RFC2049 - Parse non-standard Emacs message mode parens style addresses - Encode and decode Quoted-Printable encoding, Base64 encoding and Q-encoding - Read emails from the mbox format Project website: https://guile-email.systemreboot.net/ Happy hacking! Arun
guile-dbi does not build with guile 3
Hi, guile-dbi does not build successfully with guile 3.0, but it does build successfully with guile 2.2. It may be something simple to do with libltdl, but I am unable to figure it out. Does anyone have an idea? The build logs are shown below. Thank you! Arun --8<---cut here---start->8--- make all-recursive make[1]: Entering directory '/tmp/guix-build-guile-dbi-2.1.8.drv-0/source/guile-dbi' Making all in libltdl make[2]: Entering directory '/tmp/guix-build-guile-dbi-2.1.8.drv-0/source/guile-dbi/libltdl' make all-am make[3]: Entering directory '/tmp/guix-build-guile-dbi-2.1.8.drv-0/source/guile-dbi/libltdl' CC libltdlc_la-lt__alloc.lo CC libltdlc_la-lt_dlloader.lo CC libltdlc_la-lt_error.lo CC libltdlc_la-ltdl.lo CC libltdlc_la-slist.lo CC lt__strl.lo CC loaders/dlopen.lo CC loaders/libltdlc_la-preopen.lo CCLD dlopen.la CCLD libltdlc.la make[3]: Leaving directory '/tmp/guix-build-guile-dbi-2.1.8.drv-0/source/guile-dbi/libltdl' make[2]: Leaving directory '/tmp/guix-build-guile-dbi-2.1.8.drv-0/source/guile-dbi/libltdl' Making all in src make[2]: Entering directory '/tmp/guix-build-guile-dbi-2.1.8.drv-0/source/guile-dbi/src' /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/bin/guile-snarf -DHAVE_CONFIG_H -I../include -I/usr/include -I../libltdl -I/gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/include/guile/3.0 guile-dbi.c > guile-dbi.x \ || { rm guile-dbi.x; false; } make all-recursive make[3]: Entering directory '/tmp/guix-build-guile-dbi-2.1.8.drv-0/source/guile-dbi/src' Making all in dbi make[4]: Entering directory '/tmp/guix-build-guile-dbi-2.1.8.drv-0/source/guile-dbi/src/dbi' make[4]: Nothing to be done for 'all'. make[4]: Leaving directory '/tmp/guix-build-guile-dbi-2.1.8.drv-0/source/guile-dbi/src/dbi' Making all in test make[4]: Entering directory '/tmp/guix-build-guile-dbi-2.1.8.drv-0/source/guile-dbi/src/test' CC guile-dbd-test.lo CCLD libguile-dbd-test.la ld: ../../libltdl/.libs/libltdlc.a(libltdlc_la-preopen.o): in function `preopen_LTX_get_vtable': /tmp/guix-build-guile-dbi-2.1.8.drv-0/source/guile-dbi/libltdl/loaders/preopen.c:64: multiple definition of `preopen_LTX_get_vtable'; ../../libltdl/.libs/libltdlc.a(libltdlc_la-preopen.o):/tmp/guix-build-guile-dbi-2.1.8.drv-0/source/guile-dbi/libltdl/loaders/preopen.c:64: first defined here ld: ../../libltdl/.libs/libltdlc.a(libltdlc_la-preopen.o): in function `lt_dlpreload_default': /tmp/guix-build-guile-dbi-2.1.8.drv-0/source/guile-dbi/libltdl/loaders/preopen.c:307: multiple definition of `lt_dlpreload_default'; ../../libltdl/.libs/libltdlc.a(libltdlc_la-preopen.o):/tmp/guix-build-guile-dbi-2.1.8.drv-0/source/guile-dbi/libltdl/loaders/preopen.c:307: first defined here ld: ../../libltdl/.libs/libltdlc.a(libltdlc_la-preopen.o): in function `lt_dlpreload': /tmp/guix-build-guile-dbi-2.1.8.drv-0/source/guile-dbi/libltdl/loaders/preopen.c:316: multiple definition of `lt_dlpreload'; ../../libltdl/.libs/libltdlc.a(libltdlc_la-preopen.o):/tmp/guix-build-guile-dbi-2.1.8.drv-0/source/guile-dbi/libltdl/loaders/preopen.c:316: first defined here ld: ../../libltdl/.libs/libltdlc.a(libltdlc_la-preopen.o): in function `lt_dlpreload_open': /tmp/guix-build-guile-dbi-2.1.8.drv-0/source/guile-dbi/libltdl/loaders/preopen.c:342: multiple definition of `lt_dlpreload_open'; ../../libltdl/.libs/libltdlc.a(libltdlc_la-preopen.o):/tmp/guix-build-guile-dbi-2.1.8.drv-0/source/guile-dbi/libltdl/loaders/preopen.c:342: first defined here ld: ../../libltdl/.libs/libltdlc.a(libltdlc_la-lt__alloc.o): in function `lt__malloc': /tmp/guix-build-guile-dbi-2.1.8.drv-0/source/guile-dbi/libltdl/lt__alloc.c:52: multiple definition of `lt__malloc'; ../../libltdl/.libs/libltdlc.a(libltdlc_la-lt__alloc.o):/tmp/guix-build-guile-dbi-2.1.8.drv-0/source/guile-dbi/libltdl/lt__alloc.c:52: first defined here ld: ../../libltdl/.libs/libltdlc.a(libltdlc_la-lt__alloc.o):/tmp/guix-build-guile-dbi-2.1.8.drv-0/source/guile-dbi/libltdl/lt__alloc.c:40: multiple definition of `lt__alloc_die'; ../../libltdl/.libs/libltdlc.a(libltdlc_la-lt__alloc.o):/tmp/guix-build-guile-dbi-2.1.8.drv-0/source/guile-dbi/libltdl/lt__alloc.c:40: first defined here ld: ../../libltdl/.libs/libltdlc.a(libltdlc_la-lt__alloc.o): in function `lt__zalloc': /tmp/guix-build-guile-dbi-2.1.8.drv-0/source/guile-dbi/libltdl/lt__alloc.c:63: multiple definition of `lt__zalloc'; ../../libltdl/.libs/libltdlc.a(libltdlc_la-lt__alloc.o):/tmp/guix-build-guile-dbi-2.1.8.drv-0/source/guile-dbi/libltdl/lt__alloc.c:63: first defined here ld: ../../libltdl/.libs/libltdlc.a(libltdlc_la-lt__alloc.o): in function `lt__realloc': /tmp/guix-build-guile-dbi-2.1.8.drv-0/source/guile-dbi/libltdl/lt__alloc.c:74: multiple definition of `lt__realloc'; ../../libltdl/.libs/libltdlc.a(libltdlc_la-lt__alloc.o):/tmp/guix-build-guile-dbi-2.1.8.drv-0/source/guile-dbi/libltdl/lt__alloc
London Guix meetup
Hi all, We are organizing a casual Guix meetup in London. There is no specific agenda. The intention is for Guix users and would-be Guix users in London to get to know each other, and to put faces to names. No prior experience with Guix (or Guile) is necessary. Newcomers are very welcome! Date: Tuesday, June 27 6–9 pm BST Location: Barbican Centre, Silk Street, EC2Y 8DS, London Mobilizon page: https://mobilizon.fr/events/f18da336-07f5-489f-ae7c-394458668cea Looking forward to meeting many of you for a pleasant summer's evening by the fountains at the Barbican Centre! We will provide more exact instructions on how to find us at the venue as we get closer to the date of the event. The date and time are almost confirmed, but we can nudge it a little if you reply quickly (say, within a couple of days). Regards, Arun
Re: London Guix meetup
> However, if there are more events like this in the future then I'm > certainly interested. We can organize more such events for sure! :-)
Re: London Guix meetup
Hi all, Just a quick reminder for tomorrow's Guix meetup at the Barbican. Looking forward to seeing many of you! :-) Date: Tuesday, June 27 6–9 pm BST Location: Barbican Centre, Silk Street, EC2Y 8DS, London Mobilizon page: https://mobilizon.fr/events/f18da336-07f5-489f-ae7c-394458668cea How to find us: Enter the Barbican Centre from the entrance on Silk Street (EC2Y 8DS). Once inside, follow the signs to the Lakeside Terrace [0, 1]. You'll find us there at a table or by the fountains. We will have signs with the Guix logo to indicate it's us. Please feel free to direct message https://octodon.social/@fabionatali on the fediverse if you are unable to find us at the venue. [0]: https://www.openstreetmap.org/way/34040002 [1]: https://en.wikipedia.org/wiki/Barbican_Centre#/media/File:Barbican-arts-centre-large.jpg Regards, Arun
Re: London Guix meetup
Hi all, We had a good turnout with 8 attendees. Thank you all for coming! We may have another meetup in a month or so. Looking forward to seeing you all again and hope to see new faces too! Regards, Arun
Re: London Guix meetup
Hi Etienne, > Oops. I missed that! Is this a regular thing? > Is there a UK community of sort, e.g. online platform, mailing list and so > forth? Nope, this was just the first meetup. There may be another meetup in a month or so. We don't have any separate online presence yet. Regards, Arun
August Guix/Guile London meetup reminder
Hi all, A quick reminder for the August edition of the Guix London meetup. As usual, it'll be a chance to talk about Guix, our favourite package manager and the Guile programming language. Date/Time: Thursday 24th August, 6 pm onwards Location: Riverside Terrace Cafe at the Southbank Centre Mobilizon page: https://mobilizon.fr/events/89220a82-ced2-413e-b291-7cc3fcd8aa7c Regards, Arun
September London Guix/Guile meetup
Hi all, Guixers of the world (or more simply, from the London area) unite! 😃🤖🌈💻 Unbelievable, we've reached our fourth event already, which will be held at the very heart of the City of London. Join us to talk about Guix, Guile, Scheme & Lisp, and all things Free Software. Bring your laptop for some in-person hacking if you like - and your best collection of parentheses! :) Participants will need to be registered at the reception, so please RSVP asap with your details (your full name or, if you wish, a nickname—no further details are required). Location: c/o HubHub 20 Farringdon Street, EC4A 4AB, London Date/Time: Monday, September 25, 2023 from 6:00 PM to 8:30 PM Mobilizon page: https://mobilizon.fr/events/552977a1-3398-47bf-a7c1-ee5afee211d9 For any questions, please get in touch via any of the following channels: - Arun: arunis...@systemreboot.net - Fabio: m...@fabionatali.com and https://octodon.social/@fabionatali - Guix Devel mailing list: https://lists.gnu.org/mailman/listinfo/guix-devel/ We look forward to seeing you! Regards, Arun
Re: September London Guix/Guile meetup
Reminder for today's London Guix/Guile meetup! > Guixers of the world (or more simply, from the London area) unite! > 😃🤖🌈💻 > > Unbelievable, we've reached our fourth event already, which will be held > at the very heart of the City of London. Join us to talk about Guix, > Guile, Scheme & Lisp, and all things Free Software. Bring your laptop > for some in-person hacking if you like - and your best collection of > parentheses! :) > > Participants will need to be registered at the reception, so please RSVP > asap with your details (your full name or, if you wish, a nickname—no > further details are required). > > Location: > > c/o HubHub > 20 Farringdon Street, EC4A 4AB, London > > Date/Time: Monday, September 25, 2023 from 6:00 PM to 8:30 PM > Mobilizon page: > https://mobilizon.fr/events/552977a1-3398-47bf-a7c1-ee5afee211d9 > > For any questions, please get in touch via any of the following > channels: > > - Arun: arunis...@systemreboot.net > - Fabio: m...@fabionatali.com and https://octodon.social/@fabionatali > - Guix Devel mailing list: https://lists.gnu.org/mailman/listinfo/guix-devel/ > > We look forward to seeing you!
October hybrid London Guix/Guile meetup
Hi all, The next London Guix meetup is scheduled for Monday 23rd October, 6 pm London time (i.e. UTC+0100) onward. 😃🤖🌈💻 Join us in person at 20 Farringdon Street, EC4A 4AB. BIG NEWS 😃: If you like, you can join us remotely from anywhere on the planet too, using the following link: https://meet.jit.si/london-guix-meetup As usual, we'll be talking about Guix, Guile, Scheme & Lisp, and all things Free Software. If you have anything that you'd like to present or discuss during the meetup you're welcome to let us know—but otherwise no need for you to prepare anything or to have any previous knowledge. All welcome! If you register for the event, please indicate whether you'll be joining in person and if so, please add your full name or a nickname, as we'll need to register you at the reception. Location: c/o HubHub 20 Farringdon Street, EC4A 4AB, London Date/Time: Monday, October 23, 2023 from 6 PM onwards Mobilizon page: https://mobilizon.fr/events/170dac14-0897-46b1-8ee9-0058c82138ca We look forward to seeing you! Regards, Arun
Re: October hybrid London Guix/Guile meetup
Hi all, Just a reminder for the London Guix/Guile meetup tomorrow! Don't forget that this is a hybrid meetup and you can join even if you are not in London. Online location: https://meet.jit.si/london-guix-meetup Face-to-face location: c/o HubHub 20 Farringdon Street, EC4A 4AB, London Date/Time: Monday, October 23, 2023 from 6 pm onwards (UTC+0100) Mobilizon page: https://mobilizon.fr/events/170dac14-0897-46b1-8ee9-0058c82138ca Regards, Arun
November online London Guix/Guile meetup
Hi All, The next London Guix meetup is scheduled for Monday 20th November, 6 pm London time (i.e. UTC) onward. 😃🤖🌈💻 This time the meetup will be fully online, at the link below. https://meet.jit.si/london-guix-meetup This is a great opportunity for people anywhere in the world to jump in! As usual, we'll be talking about Guix, Guile, Scheme & Lisp, and all things Free Software. If you have anything Guix-related that you'd like to present or discuss during the meetup you're welcome to let us know—but otherwise no need for you to prepare anything or to have any previous knowledge of Guix. All welcome! For any question, please get in touch via any of the following channels: - Arun: arunis...@systemreboot.net - Fabio: m...@fabionatali.com and https://octodon.social/@fabionatali - Guix Devel mailing list: https://lists.gnu.org/mailman/listinfo/guix-devel/ - Mobilizon page: https://mobilizon.fr/events/87faa563-916e-4414-96b1-a69e9015ee97 We look forward to seeing you! Regards, Arun
December London Guix meetup
Hi all, The next Guix London meetup is scheduled for Monday 11th December, 6 pm London time (UTC) onward. 😃🤖🌈💻 Join us in person or online, address and link below. - In person, from 6:00 pm: 20 Farringdon St, EC4A 4AB - Online, from 6:10 pm: https://meet.jit.si/london-guix-meetup https://www.meetup.com/guix-london/events/297591582/ If you attend in person, please make sure you RSVP (either on meetup.com or as an off-list reply to this mail) and share your full name (or a nickname) so that we can register you at the building's reception. The main part of the meetup will be a talk on G-expressions by Simon Tournier. If you have any Guix or Guile related question or topic, there should be time to talk about that too. All welcome! # Agenda - Kick-off (~5 mins): The meetup kicks off at 6:10 pm UTC (please arrive at 6:00 pm if you're attending in person, that gives us some leeway to sort access badges and other practicalities out) with a quick round of intros. If you like, you're welcome to briefly introduce yourself now. You're also welcome to jump on and off the call at any time. - G-expressions, a talk by Simon Tournier (~30 mins + QA): Introduced in 2021 as part of a significant refactoring, the "Big Change", G-expressions have become the regular tool for defining Guix packages. We will start with some Scheme core concepts such as quasiquote and unquote and then go to G-expressions. As an example, we will compute the Fibonacci sequence using G-expressions, derivations, and the Guix daemon. - Open discussion (~30 mins): If you have any Guix related question or idea that you want to share with us, this is a great time to bring it up. # Contact For any question, please get in touch via any of the following channels: - Arun: arunis...@systemreboot.net - Fabio: m...@fabionatali.com and https://octodon.social/@fabionatali - Guix Devel mailing list: https://lists.gnu.org/mailman/listinfo/guix-devel/ Guix London has no official ties with the Guix project. We commit to promote the project and to always operate with the best intentions; any mistake that we might make is due to us, Guix London, not the Guix project. # Code of conduct We, Guix London's organisers, intend to create an open, friendly, and safe environment where people from the most diverse backgrounds can get together, learn about, teach, and discuss Guix and related topics in a welcoming and constructive way. To this end, Guix London adheres to the Guix project's official Code of Conduct, as published at this link. Please make sure you familiarise with the document and that you share its principles, before attending our events. Should you—at any time before, during, or after one of our events—want to raise an issue or discuss any CoC-related topic, please do not hesitate to reach out to the organisers at the contacts below. - Arun Isaac, arunis...@systemreboot.net - Fabio Natali, m...@fabionatali.com # Get involved Should you be interested in becoming a Guix London organiser, please let us know. It'd be great to have you onboard. No previous Guix knowledge is required. If you're interested (or simply want to know more), do not hesitate to reach out to us! Similarly, if you want to present on any Guix-related topic at one of our events, that's also great. We'd love to hear from you. Regards, Arun
Re: cloning guile-picture-language returns 502
Hi Aleix, These is Ricardo's (CCed) server. I have already told them about it off-list. They are quite busy now, but they promised to fix this in the second half of December or so. Regards, Arun
Re: December London Guix meetup
Hi all, Just a gentle reminder for tomorrow's hybrid Guix meetup! See you all tomorrow! :-) Regards, Arun > The next Guix London meetup is scheduled for Monday 11th December, 6 pm > London time (UTC) onward. 😃🤖🌈💻 Join us in person or online, address > and link below. > > - In person, from 6:00 pm: 20 Farringdon St, EC4A 4AB > - Online, from 6:10 pm: https://meet.jit.si/london-guix-meetup > > https://www.meetup.com/guix-london/events/297591582/ > > If you attend in person, please make sure you RSVP (either on meetup.com > or as an off-list reply to this mail) and share your full name (or a > nickname) so that we can register you at the building's reception. > > The main part of the meetup will be a talk on G-expressions by Simon > Tournier. If you have any Guix or Guile related question or topic, there > should be time to talk about that too. All welcome! > > # Agenda > > - Kick-off (~5 mins): The meetup kicks off at 6:10 pm UTC (please arrive > at 6:00 pm if you're attending in person, that gives us some leeway to > sort access badges and other practicalities out) with a quick round of > intros. If you like, you're welcome to briefly introduce yourself > now. You're also welcome to jump on and off the call at any time. > > - G-expressions, a talk by Simon Tournier (~30 mins + QA): Introduced in > 2021 as part of a significant refactoring, the "Big Change", > G-expressions have become the regular tool for defining Guix > packages. We will start with some Scheme core concepts such as > quasiquote and unquote and then go to G-expressions. As an example, we > will compute the Fibonacci sequence using G-expressions, derivations, > and the Guix daemon. > > - Open discussion (~30 mins): If you have any Guix related question or > idea that you want to share with us, this is a great time to bring it > up. > > # Contact > > For any question, please get in touch via any of the following channels: > > - Arun: arunis...@systemreboot.net > - Fabio: m...@fabionatali.com and https://octodon.social/@fabionatali > - Guix Devel mailing list: https://lists.gnu.org/mailman/listinfo/guix-devel/ > > Guix London has no official ties with the Guix project. We commit to > promote the project and to always operate with the best intentions; any > mistake that we might make is due to us, Guix London, not the Guix > project. > > # Code of conduct > > We, Guix London's organisers, intend to create an open, friendly, and > safe environment where people from the most diverse backgrounds can get > together, learn about, teach, and discuss Guix and related topics in a > welcoming and constructive way. > > To this end, Guix London adheres to the Guix project's official Code of > Conduct, as published at this link. Please make sure you familiarise > with the document and that you share its principles, before attending > our events. > > Should you—at any time before, during, or after one of our events—want > to raise an issue or discuss any CoC-related topic, please do not > hesitate to reach out to the organisers at the contacts below. > > - Arun Isaac, arunis...@systemreboot.net > - Fabio Natali, m...@fabionatali.com > > # Get involved > > Should you be interested in becoming a Guix London organiser, please let > us know. It'd be great to have you onboard. No previous Guix knowledge > is required. If you're interested (or simply want to know more), do not > hesitate to reach out to us! > > Similarly, if you want to present on any Guix-related topic at one of > our events, that's also great. We'd love to hear from you.
January hybrid Guix London meetup
Hi all, The next Guix London meetup is scheduled for Monday 15th January, 6 pm London time (i.e. UTC) onward. Join us in person or online, address and link below. - In person, from 6:00 pm: 20 Farringdon St, EC4A 4AB - Online, from 6:10 pm: https://meet.jit.si/london-guix-meetup - https://www.meetup.com/guix-london/events/298422197/ If you attend in person, please make sure you RSVP and share your full name (or a nickname) so that we can register you at the building's reception. The main part of the meetup will be an introduction to the guix-forge project. If you have any Guix or Guile related question or topic, there should be time to talk about that too. All welcome! Talk abstract follows. --8<---cut here---start->8--- # Self-hosting and autonomy using guix-forge As free software programmers, whether we like it or not, we often host our projects on large centralized and proprietary software forges such as GitHub. In theory, it is perfectly possible to host our own forges using free software such as GitLab, Gitea, etc. But, life is short, and setup and maintenance of these services is more work than it seems at first. GNU Guix is well-known as a package manager, for the high quality of its packages, and for the strong reproducibility guarantees it provides. But, it is much less appreciated for its services, system definitions and deployment features. That's such a shame since these features can let you summon and dismiss entire systems at will—be they bare-metal or virtualized—with nothing but a declarative plain text configuration file. In this talk, Arun will speak about guix-forge, a Guix channel that provides Guix services for easy setup and maintenance of a software forge. guix-forge uses existing free software such as cgit and/or klaus for serving git repositories on the web, laminar and webhook for continuous integration, uacme for managing TLS certificates, etc. --8<---cut here---end--->8--- QA (on guix-forge) and open discussion (on anything Guix related) after the talk. Guix London has no official ties with the Guix project. We commit to promote the project and to always operate with the best intentions; any mistake that we might make is due to us, Guix London, not the Guix project. # Code of conduct We, Guix London's organisers, intend to create an open, friendly, and safe environment where people from the most diverse backgrounds can get together, learn about, teach, and discuss Guix and related topics in a welcoming and constructive way. To this end, Guix London adheres to the Guix project's official Code of Conduct, as published at this link. Please make sure you familiarise with the document and that you share its principles, before attending our events. Should you—at any time before, during, or after one of our events— want to raise an issue or discuss any CoC-related topic, please do not hesitate to reach out to the organisers at the contacts below. - Arun Isaac, arunis...@systemreboot.net - Fabio Natali, m...@fabionatali.com # Get involved Should you be interested in becoming a Guix London organiser, please let us know. It'd be great to have you onboard. No previous Guix knowledge is required. If you're interested (or simply want to know more), do not hesitate to reach out to us! Similarly, if you want to present on any Guix-related topic at one of our events, that's also great. We'd love to hear from you. Cheers! Arun
Re: January hybrid Guix London meetup
Hi all, Just a gentle reminder for today's meetup! Details below. Regards, Arun > Hi all, > > The next Guix London meetup is scheduled for Monday 15th January, 6 pm > London time (i.e. UTC) onward. Join us in person or online, address and > link below. > > - In person, from 6:00 pm: 20 Farringdon St, EC4A 4AB > - Online, from 6:10 pm: https://meet.jit.si/london-guix-meetup > - https://www.meetup.com/guix-london/events/298422197/ > > If you attend in person, please make sure you RSVP and share your full > name (or a nickname) so that we can register you at the building's > reception. > > The main part of the meetup will be an introduction to the guix-forge > project. If you have any Guix or Guile related question or topic, there > should be time to talk about that too. All welcome! Talk abstract > follows. > > --8<---cut here---start->8--- > # Self-hosting and autonomy using guix-forge > > As free software programmers, whether we like it or not, we often host > our projects on large centralized and proprietary software forges such > as GitHub. In theory, it is perfectly possible to host our own forges > using free software such as GitLab, Gitea, etc. But, life is short, and > setup and maintenance of these services is more work than it seems at > first. > > GNU Guix is well-known as a package manager, for the high quality of its > packages, and for the strong reproducibility guarantees it > provides. But, it is much less appreciated for its services, system > definitions and deployment features. That's such a shame since these > features can let you summon and dismiss entire systems at will—be they > bare-metal or virtualized—with nothing but a declarative plain text > configuration file. > > In this talk, Arun will speak about guix-forge, a Guix channel that > provides Guix services for easy setup and maintenance of a software > forge. guix-forge uses existing free software such as cgit and/or klaus > for serving git repositories on the web, laminar and webhook for > continuous integration, uacme for managing TLS certificates, etc. > --8<---cut here---end--->8--- > > QA (on guix-forge) and open discussion (on anything Guix related) after > the talk. > > Guix London has no official ties with the Guix project. We commit to > promote the project and to always operate with the best intentions; any > mistake that we might make is due to us, Guix London, not the Guix > project. > > # Code of conduct > > We, Guix London's organisers, intend to create an open, friendly, and > safe environment where people from the most diverse backgrounds can get > together, learn about, teach, and discuss Guix and related topics in a > welcoming and constructive way. > > To this end, Guix London adheres to the Guix project's official Code of > Conduct, as published at this link. Please make sure you familiarise > with the document and that you share its principles, before attending > our events. > > Should you—at any time before, during, or after one of our events— want > to raise an issue or discuss any CoC-related topic, please do not > hesitate to reach out to the organisers at the contacts below. > > - Arun Isaac, arunis...@systemreboot.net > - Fabio Natali, m...@fabionatali.com > > # Get involved > > Should you be interested in becoming a Guix London organiser, please let > us know. It'd be great to have you onboard. No previous Guix knowledge > is required. If you're interested (or simply want to know more), do not > hesitate to reach out to us! > > Similarly, if you want to present on any Guix-related topic at one of > our events, that's also great. We'd love to hear from you. > > Cheers! > Arun
February hybrid Guix London meetup
Hi all, The next Guix London meetup is scheduled for Monday 19th February, 6 pm London time (i.e. UTC) onward. Join us in person or online. Address and link are below. - In person, from 6:00 pm: 20 Farringdon Street, EC4A 4AB - Online, from 6:10 pm: https://meet.jit.si/london-guix-meetup If you attend in person, please make sure you RSVP and share your full name (or a nickname) so that we can register you at the building's reception. The main part of the meetup will be a talk on how to create custom Guix packages or package variants, by Steve George a.k.a. Futurile. If you have any Guix or Guile related question or topic, there should be the time to talk about that too. All welcome! Talk abstract follows. --8<---cut here---start->8--- Guix Packaging: creating local package variants simply! Just like Gentoo or Arch Linux, every package in Guix is source-available, and can be built by the user. In this entry level talk we'll look at how to customise Guix packages. Guix radically simplifies the steps to building our own packages through its declarative and functional approach. This makes building our own package variants very accessible—opening up the possibilities for a user to: - Keep applications up to the latest versions - Try out upstream development versions - Patch applications to add features - Tune applications to their hardware In this talk, Steve will share examples and introduce how to use Guix's programming interface for package building. We'll also contextualise where these capabilities sit in the journey of learning to package and contribute packages to Guix. --8<---cut here---end--->8--- # About For any question, please get in touch via any of the following channels: - Arun: arunis...@systemreboot.net - Fabio: m...@fabionatali.com and https://octodon.social/@fabionatali - Guix Devel mailing list: https://lists.gnu.org/mailman/listinfo/guix-devel/ Guix London has no official ties with the Guix project. We commit to promote the project and to always operate with the best intentions; any mistake that we might make is due to us, Guix London, not the Guix project. # Code of conduct We, Guix London's organisers, intend to create an open, friendly, and safe environment where people from the most diverse backgrounds can get together, learn about, teach, and discuss Guix and related topics in a welcoming and constructive way. To this end, Guix London adheres to the Guix project's official Code of Conduct. Please make sure you familiarise with the document and that you share its principles before attending our events. Should you at any time before, during, or after one of our events want to raise an issue or discuss any CoC-related topic, please do not hesitate to reach out to the organisers at the contacts below. - Arun Isaac, arunis...@systemreboot.net - Fabio Natali, m...@fabionatali.com # Get involved Should you be interested in becoming a Guix London organiser, please let us know. It'd be great to have you onboard. No previous Guix knowledge is required. If you're interested (or simply want to know more), do not hesitate to reach out to us! Similarly, if you want to present on any Guix-related topic at one of our events, that's also great. We'd love to hear from you. Regards, Arun
Re: February hybrid Guix London meetup
Hi all, Just a quick reminder for the February hybrid Guix London meetup later today. See you soon! > Hi all, > > The next Guix London meetup is scheduled for Monday 19th February, 6 pm > London time (i.e. UTC) onward. Join us in person or online. Address and > link are below. > > - In person, from 6:00 pm: 20 Farringdon Street, EC4A 4AB > - Online, from 6:10 pm: https://meet.jit.si/london-guix-meetup > > If you attend in person, please make sure you RSVP and share your full > name (or a nickname) so that we can register you at the building's > reception. > > The main part of the meetup will be a talk on how to create custom Guix > packages or package variants, by Steve George a.k.a. Futurile. If you > have any Guix or Guile related question or topic, there should be the > time to talk about that too. All welcome! Talk abstract follows. > > --8<---cut here---start->8--- > Guix Packaging: creating local package variants simply! > > Just like Gentoo or Arch Linux, every package in Guix is > source-available, and can be built by the user. In this entry level talk > we'll look at how to customise Guix packages. Guix radically simplifies > the steps to building our own packages through its declarative and > functional approach. This makes building our own package variants very > accessible—opening up the possibilities for a user to: > > - Keep applications up to the latest versions > - Try out upstream development versions > - Patch applications to add features > - Tune applications to their hardware > > In this talk, Steve will share examples and introduce how to use Guix's > programming interface for package building. We'll also contextualise > where these capabilities sit in the journey of learning to package and > contribute packages to Guix. > --8<---cut here---end--->8--- > > # About > > For any question, please get in touch via any of the following channels: > > - Arun: arunis...@systemreboot.net > - Fabio: m...@fabionatali.com and https://octodon.social/@fabionatali > - Guix Devel mailing list: https://lists.gnu.org/mailman/listinfo/guix-devel/ > > Guix London has no official ties with the Guix project. We commit to > promote the project and to always operate with the best intentions; any > mistake that we might make is due to us, Guix London, not the Guix > project. > > # Code of conduct > > We, Guix London's organisers, intend to create an open, friendly, and > safe environment where people from the most diverse backgrounds can get > together, learn about, teach, and discuss Guix and related topics in a > welcoming and constructive way. > > To this end, Guix London adheres to the Guix project's official Code of > Conduct. Please make sure you familiarise with the document and that you > share its principles before attending our events. > > Should you at any time before, during, or after one of our events want > to raise an issue or discuss any CoC-related topic, please do not > hesitate to reach out to the organisers at the contacts below. > > - Arun Isaac, arunis...@systemreboot.net > - Fabio Natali, m...@fabionatali.com > > # Get involved > > Should you be interested in becoming a Guix London organiser, please let > us know. It'd be great to have you onboard. No previous Guix knowledge > is required. If you're interested (or simply want to know more), do not > hesitate to reach out to us! > > Similarly, if you want to present on any Guix-related topic at one of > our events, that's also great. We'd love to hear from you. > > Regards, > Arun
Re: Shelling
Hi Tom, I do write my shell scripts in Guile. For added nicety, I usually deploy these scripts using Guix's G-expressions. This lets you easily manage the dependencies of that script, and deploy to remote machines effortlessly. See https://systemreboot.net/post/deploy-scripts-using-g-expressions for more details if you're interested. Here's a more complex example of a guile script: https://issues.genenetwork.org/topics/deploy/uthsc-vpn-with-free-software This script connects to a university VPN. The script couldn't have come together so nicely without Guile or Guix. The complete script itself is at https://issues.genenetwork.org/topics/deploy/uthsc-vpn.scm Cheers! Arun
guile-xapian 0.4.0 released
Hi all, guile-xapian 0.4.0 has been released. guile-xapian provides Guile bindings for Xapian[1], a search engine library used in popular applications such as the notmuch email system. Xapian is a highly adaptable toolkit which allows developers to easily add advanced indexing and search facilities to their own applications. It has built-in support for several families of weighting models and also supports a rich set of boolean query operators. [1]: https://xapian.org/ Please find links to the project home page and tarball below. The changes in this release are described in the NEWS file in the tarball. https://guile-xapian.systemreboot.net/ https://guile-xapian.systemreboot.net/releases/guile-xapian-0.4.0.tar.lz https://guile-xapian.systemreboot.net/releases/guile-xapian-0.4.0.tar.lz.asc Cheers! Arun
Re: guile-xapian 0.4.0 released
Hi, Thanks, Nala! > I'm not familiar with Xapian, is it possible to do similar things as > VectorDB? I am not very familiar with VectorDB. From what I can tell, Xapian and VectorDB seem to have similar application areas, but Xapian takes a lot simpler and more traditional approach. You can find a description of the theory behind Xapian at https://xapian.org/docs/intro_ir.html Regards, Arun
Re: guile-xapian 0.4.0 released
> It’s a motivation for resuming [1] as a Guix extension ;-) Ah, I hadn't thought of xapian search as a Guix extension. Nice idea! :-)
Re: guile-xapian 0.4.0 released
>> It’s a motivation for resuming [1] as a Guix extension ;-) > > Ah, I hadn't thought of xapian search as a Guix extension. Nice idea! > :-) I'm happy to mentor someone if they are interested in such a project. > [1]: https://issues.guix.gnu.org/39258
Re: Guile-cairo tutorial
Hi Gerrit, > I made a translation to guile/scheme. > https://gdraisma.home.xs4all.nl/cairo/ > > Would that be of interest still? Yes, definitely! I've always wanted to try out guile-cairo, but was put off by having to read the C tutorial. Having a Guile version with working examples is extremely useful. Thank you! Regards, Arun
Re: Qtile package
Hi Aarush, You should really report this to bug-g...@gnu.org since this pertains to the Guix project, not Guile. If you are interested, you could also contribute a patch that fixes the qtile package. Things will move faster that way. Thanks, Arun
C++ Foreign Function Interface
Hi, Is there any foreign function interface for C++ shared libraries in Guile? Can I somehow use the C FFI for this? Is there any documentation for this? Thanks, Arun Isaac. signature.asc Description: PGP signature
Re: C++ Foreign Function Interface
Chris Vine writes: > If you want to link with a C++ library when using libguile (and, say, > want to make functions in the library accessible to scheme code using > scm_c_define_gsubr()), then you need to declare interface functions as > extern "C" so they have C language linkage. That will amongst other > things suppress name mangling and make sure the correct calling > convention is used. The same applies if you are planning to use, say, > pointer->procedure. I'm trying to use the GNU Radio library (written in C++) from scheme. While I can't really modify the library itself, I can wrap functions I need in C, and then call them using Guile's C FFI. I'll do that. Hans Åberg writes: > You will have to write it yourself. It has been discussed before on > this list [1]. In one of the messages in the earlier thread, I found a link to https://isocpp.org/wiki/faq/mixing-c-and-cpp That page gives me some idea of how I can write C wrappers for my C++ library. signature.asc Description: PGP signature
Re: C++ Foreign Function Interface
Hans Åberg writes: > When calling C++ from C, you can’t pass a C++ exception through the C > code. So in my example code, there are conversions between C++ and > Guile exceptions. Yeah, this was the discussion in the other thread you linked to. Unfortunately, I don't know anything about C++ exceptions, and hence didn't understand what your code was doing. Can any of this be integrated into guile itself, so that C++ FFI will be easier for the end programmer? David Pirotte writes: > May be this will interest you: > https://github.com/BSeppke/vigra_c/ This is useful too. Thanks! signature.asc Description: PGP signature
Re: How to make GNU Guile more successful
Jan Wedekind writes: > I am trying to do something like that (github.com/wedesoft/aiscm) but > I am doing it in my spare time only. Just hearing about aiscm. I was looking for something like this. Thank you!
Anaphoric macros like when-let
Is there a Scheme or Guile equivalent to Emacs Lisp's `when-let' ? Basically, I'm looking for a shorthand to express this: (let ((x (foo)) (when x (bar x as this: (when-let (x (foo)) (bar x))
Re: Anaphoric macros like when-let
Thank you, Kyle and Matt!
Re: Anaphoric macros like when-let
Mark H Weaver writes: > mention that 'when-let' is not actually an anaphoric macro. Anaphoric > macros are those that introduce a binding that is not named by the > user, e.g. 'it', which is called an anaphor. Yes, you're right, of course! aif, awhen, etc. are the anaphoric macros. I switched to if-let, when-let, etc. when they became available in emacs lisp, and somehow wrongly continued to call them anaphoric macros.
Re: Introduction
> Hello all, just a brief introduction. I have been in the Guile IRC group > for a few weeks now and have been schemeing for a bit longer than that. > I am happy to join you all. Welcome to the Guile community, Brett. Nice to have you here! :-)
Re: How to write documentation comments for procedures?
> However, when I have a longer explanation for a procedure, longer than a > single line of certain length, then the line will softly wrap in editors > and the explanation will continue on the next line at the beginning > usually. In emacs, I find `fill-paragraph' (default keybinding of M-q) to be very useful for wrapping long lines.
Re: How to write documentation comments for procedures?
> It still makes the second and later lines not indented though > (starting at position 0, while the first line is indented, not > starting at 0). Looking at the guile source code, the lack of indentation in the second and later lines seems to be the convention. So, I don't think this is a problem. Something like the following is fine. (define (foo arg) "This is the first line. This is the second line." #t)
Re: guile-user Digest, Vol 189, Issue 4
> I did not know the procedure-documentation procedure. I guess I'll go > with the one long docstring which has line breaks style then. This > will also be easiest to write using that fill-paragraph shortcut. Just one more minor addition. You can break up the docstring into paragraphs as well. You don't have to keep the entire docstring as a single paragraph. Breaking up a large docstring into paragraphs helps readability. You can find many examples of this in the guile source code.
Re: a small example of a REPL server
Catonano writes: > Could anyone write a small example of a REPL server for me ? Is the following what you are looking for? (use-modules (system repl server)) (run-server (make-tcp-server-socket)) The above code runs a REPL listening on the default port 37146 of localhost.
Re: Help evaluating in the context of another module
Hi Nicolas, > (save-module-excursion > (lambda () > (set-current-module (resolve-module '(guix scripts pull))) > (reload-module (current-module)) > (display %options))) Sorry, my answer wasn't very helpful. I guess it refers to %options from the top level rather than from (guix scripts pull). I am not immediately able to think of a different approach, though. For some reason, even (@@ (guix scripts pull) %options) doesn't seem to work for me. > This snippet displays %options of (guix scripts pull): > (eval > `(begin > (reload-module (current-module)) > (display %options)) > (resolve-module '(guix scripts pull) #:ensure #f)) > > But I guess at this point they almost have the same length/readability > already. I guess so. Regards, Arun
Re: Help evaluating in the context of another module
Hi Nicolas, How about the following? (save-module-excursion (lambda () (set-current-module (resolve-module '(guix scripts pull))) (your-code-here))) Regards, Arun