[Nix-dev] [ANN] Guix, functional package management from Guile

Ludovic Courtès ludo at gnu.org
Sun Jul 22 14:40:24 CEST 2012


Hi Marc,

Marc Weber <marco-oweber at gmx.de> skribis:

> One of the core features of nix is that its lazy - I guess that's one of
> the main reason why Eelco didn't just use python/ruby/perl ...
>
> So what do you think about how performance would compare?

While Scheme itself isn’t lazy, Guix itself is, similarly to Nix.
Basically, there are package declarations like this:

  (define-public hello
    (package
     (name "hello")
     (version "2.8")
     (source (origin
              (method http-fetch)
              (uri (string-append "http://ftp.gnu.org/gnu/hello/hello-" version
                                  ".tar.gz"))
              (sha256
               (base32 "0wqd8sjmxfskrflaxywc7gqw7sfawrfvdxd9skxawzfgyy0pzdz6"))))
     (build-system gnu-build-system)
     (inputs `(("gawk" ,gawk)))
     (description "GNU Hello")
     (long-description "Yeah...")
     (home-page "http://www.gnu.org/software/hello/")
     (license "GPLv3+")))

This declaration just creates a ‘package’ object (a record).  It then
has to be passed to the ‘package-derivation’ produce, to get the .drv
path, which in turn has to be passed to ‘build-derivations’, to actually
build/download it.

Now, Guile comes with an optimizing compiler, meaning that the whole
distro can be compiled, which could speed things up (especially
operations such as package lookup by name, as in ‘nix-env -i’.)

Thanks,
Ludo’.



More information about the nix-dev mailing list