"Ludovic Courtès" skrev: (5 januari 2019 18:37:10 CET) >Hello swedebugia, > >Sorry for the late reply! > >swedebugia 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 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 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 #derivation >(origin #:optional system)> >(guix packages): origin-snippet >(guix packages): origin-modules >(guix packages): origin-actual-file-name #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 >, >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! > >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.