[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
>are
>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
>>
>GUILE_LOAD_PATH=$HOME/.guix-profile/share/guile/site/2.2:/run/current-system/profile/share/guile/site/2.2
>> $ 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
>availiable:
>> 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),
>hmm…
>
>> 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
><https://lists.gnu.org/archive/html/guix-devel/2018-11/msg00285.html>,
>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
><https://git.savannah.gnu.org/cgit/guix/guix-artwork.git/tree/website/posts>.
>
>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!
>
>Ludo’.
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
commands?
--
Sent from my p≡p for Android.
pEpkey.asc
Description: application/pgp-keys
- Re: Article: Playing with Guix REPL from scratch, Ludovic Courtès, 2019/01/05
- Re: Article: Playing with Guix REPL from scratch,
swedebugia <=
- Re: Article: Playing with Guix REPL from scratch, Pierre Neidhardt, 2019/01/06
- Re: Article: Playing with Guix REPL from scratch, Chris Marusich, 2019/01/10
- Re: Article: Playing with Guix REPL from scratch, Ludovic Courtès, 2019/01/13
- Re: Article: Playing with Guix REPL from scratch, Chris Marusich, 2019/01/14
- Re: Article: Playing with Guix REPL from scratch, Ludovic Courtès, 2019/01/15
- Re: Article: Playing with Guix REPL from scratch, Chris Marusich, 2019/01/22
- Re: Article: Playing with Guix REPL from scratch, Ludovic Courtès, 2019/01/23