From: swedebugia <swedebugia@riseup.net>
To: guix-devel@gnu.org
Subject: Re: Article: Playing with Guix REPL from scratch
Date: Tue, 25 Dec 2018 19:01:33 +0100 [thread overview]
Message-ID: <f4c1c5f5-59f6-384a-79bd-3930c187514c@riseup.net> (raw)
In-Reply-To: <815ec957-58a6-1b17-646a-457217ea7851@riseup.net>
On 2018-12-25 12:47, swedebugia wrote:
> Hi people
>
> Today I wrote this draft blog post while playing around:
>
> Playing with Guix REPL from scratch
>
> 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.
>
> 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
>
> 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))
>
> 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
> package->definition
> package->derivation
> package-build-system
> package-cross-build-system-error?
> package-cross-derivation
> package-derivation
> package-description
> package-direct-inputs
> package-direct-sources
> package-error-invalid-input
> package-error-package
> package-error?
> package-field-location
> package-file
> package-full-name
> package-grafts
> package-home-page
> package-input-error?
> package-input-rewriting
> package-inputs
> package-license
> package-location
> package-maintainers
> package-mapping
> package-name
> package-native-inputs
> package-native-search-paths
> package-output
> package-outputs
> package-patched-vulnerabilities
> package-propagated-inputs
> package-properties
> package-search-paths
> package-source
> package-source-derivation
> package-superseded
> package-supported-systems
> package-synopsis
> package-transitive-inputs
> package-transitive-native-inputs
> package-transitive-native-search-paths
> package-transitive-propagated-inputs
> package-transitive-sources
> package-transitive-supported-systems
> package-transitive-target-inputs
> package-upstream-name
> package-version
> package/inherit
> package?
>
> In addition to this there are the following origin-record-procedures:
>
> E.g. (origin<TAB><TAB> shows this list
> origin
> origin->derivation
> origin-actual-file-name
> origin-file-name
> origin-method
> origin-modules
> origin-patch-flags
> origin-patch-guile
> origin-patch-inputs
> origin-patches
> origin-sha256
> origin-snippet
> origin-uri
> origin?
>
> What can we do with this you might ask?
>
> Well how about getting the url of a specific package?
>
> scheme@(guix-user)> (origin-uri (package-source lsyncd))
> $4 = "https://github.com/axkibe/lsyncd/archive/release-2.2.2.tar.gz"
>
> Fetching it?
>
> scheme@(guix-user)> (url-fetch
> (origin-uri (package-source lsyncd)) "temp")
>
> Starting download of temp
> From https://github.com/axkibe/lsyncd/archive/release-2.2.2.tar.gz...
> following redirection to
> `https://codeload.github.com/axkibe/lsyncd/tar.gz/release-2.2.2'...
> release-2.2.2.tar.gz 253KiB/s 00:00 | 80KiB
> transferred
> $3 = "temp"
>
> With fold-packages you can walk through the whole stack of package
> records if you would like and count say the number of packages with
> the prefix "python-":
>
> scheme@(guile-user)> (define snakes
> (fold-packages
> (lambda (package lst)
> (if (string-prefix? "python"
> (package-name package))
> (cons package lst)
> lst))
> '()))
>
> Now we can work on this list. As of writing this we have this many
> items in the list:
>
> scheme@(guix-user)> (length snakes)
> $5 = 1532
>
> scheme@(guile-user)> (define snakes
> (fold-packages
> (lambda (package lst)
> (if (string-prefix? "python"
> (package-name package))
> (cons (origin-url package) lst)
> lst))
> '()))
>
> If you create something worth saving, mount an USB stick or a harddisk
> partition and save it there.
FYI:
I would like to publish it in the guix blog when it is ready. I
published it here just to get comments/review as it is my first post to
the blog :-)
-- Cheers Swedebugia
--
Cheers Swedebugia
next prev parent reply other threads:[~2018-12-25 17:55 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-25 11:47 Article: Playing with Guix REPL from scratch swedebugia
2018-12-25 18:01 ` swedebugia [this message]
2019-01-05 17:37 ` Ludovic Courtès
2019-01-06 3:24 ` swedebugia
2019-01-06 11:36 ` Pierre Neidhardt
2019-01-08 16:25 ` Ludovic Courtès
2019-01-10 7:46 ` Chris Marusich
2019-01-13 21:52 ` Ludovic Courtès
2019-01-14 9:44 ` Chris Marusich
2019-01-15 22:32 ` Ludovic Courtès
2019-01-23 1:52 ` Chris Marusich
2019-01-23 11:11 ` Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=f4c1c5f5-59f6-384a-79bd-3930c187514c@riseup.net \
--to=swedebugia@riseup.net \
--cc=guix-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
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).