[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Article: Playing with Guix REPL from scratch

From: swedebugia
Subject: Re: Article: Playing with Guix REPL from scratch
Date: Sun, 06 Jan 2019 04:24:33 +0100

"Ludovic Courtès" <address@hidden> skrev: (5 januari 2019 18:37:10 CET)
>Hello swedebugia,
>Sorry for the late reply!
>swedebugia <address@hidden> skribis:
>> Today I wrote this draft blog post while playing around:
>> Playing with Guix REPL from scratch
>That sounds like a great topic for a blog post!
>I would suggest adding a bit of context: what does “REPL” mean? what
>the possible use cases? how does it differ from what other package
>managers provide? etc.
>> This is a small example of how to quickly get an environment to play
>> with Guix in guile.
>> First setup your environment.
>> I choose a x86_64 PC and booted up the installer from an usb stick.
>That’s an option, but you could mention that one can install Guix or
>GuixSD and run ‘guix repl’ from there.
>> This is a nice environment because it already is running GuixSD in a
>> console and you have are in Guix land with 8500 packages at your
>> fingertips.
>> I started by installing a sensible array of packages:
>>  $ guix package -i emacs-no-x lynx git-minimal guile-readline
>> guile-colorized emacs-paredit nss-certs
>> To set this up as intended then run:
>>  $ export
>>  $ export SSL_CERT_DIR=/root/.guix-profile/etc/ssl/certs
>I don’t think GUILE_LOAD_PATH is needed if you use ‘guix repl’.
>> Now fire up the guix repl with
>>  $guix repl
>> Load e.g. this to start hacking on package records:
>> (use-modules
>>      (guix packages)
>>      (guix import utils)
>>      (gnu)
>>      (gnu packages sync))
>I’d suggest (guix) instead of (guix packages).
>> Now you can start hacking on all packages in sync.scm using Scheme
>> procedures from (gnu packages) (see the source of this module for
>> details or guess and press tab)
>> E.g. (package<TAB><TAB> shows this list of nice procedures
>> package
>> package->cross-derivation
>> What can we do with this you might ask?
>You could show ,describe and ,apropos at the REPL:
>--8<---------------cut here---------------start------------->8---
>scheme@(guix-user)> ,describe package-derivation
>Return the <derivation> object of PACKAGE for SYSTEM.
>scheme@(guix-user)> ,a origin
>(guix packages): origin-patch-guile
>(guix packages): origin-method
>(guix packages): origin-patch-inputs
>(guix packages): origin-patch-flags
>(guix packages): origin-patches
>(guix packages): origin->derivation     #<procedure origin->derivation
>(origin #:optional system)>
>(guix packages): origin-snippet
>(guix packages): origin-modules
>(guix packages): origin-actual-file-name        #<procedure
>origin-actual-file-name (origin)>
>(guix packages): origin
>(guix packages): origin-uri
>(guix packages): origin?
>(guix packages): origin-file-name
>(guix packages): origin-sha256
>--8<---------------cut here---------------end--------------->8---
>Though for some reason ,a doesn’t seem to work if you only use (guix),
>> scheme@(guile-user)> (define snakes
>>                        (fold-packages
>>                             (lambda (package lst)
>>                                      (if (string-prefix? "python"
>>                                       (package-name package))
>>                                     (cons (origin-url package) lst)
>>                           lst))
>>                      '()))
>‘origin-url’ does not exist.  :-)  Make sure all the examples work so
>that users are not disappointed.  It may be worth explaining how
>‘fold-packages’ works as it may be the first encounter of ‘fold’ for
>someone not familiar with functional programming.
>Perhaps you could give another examples or two such as using
>‘package-derivation’ and ‘build-derivations’, or integration with (guix
>swh) as sketched at
>or uses of ‘package-input-rewriting’, just to give a feel that it’s
>actually useful.  ;-)
>For the blog we write text in Markdown and there’s markup to get proper
>syntax highlighting for Scheme.  See the .md files at
>Also I think it’s a good idea to add links to the relevant parts of the
>Guix and Guile manuals so that interested readers know where to find
>more info about each topic.
>Thanks for working on it!

Wow, thanks a lot for the suggestions. I did not know about apropos and I found 
the tab-completion by accident. 
I still got much to learn about the repl which seem to have all kinds of neat 
(a bit hidden) eggs 😃

An ideas pop to mind:
1) the repl could hint at startup about some feature

A question too:
2) are there ways to hinder gnutls from flooding the ,trace of e.g. import 
Sent from my p≡p for Android.

Attachment: pEpkey.asc
Description: application/pgp-keys

reply via email to

[Prev in Thread] Current Thread [Next in Thread]