[Nix-dev] GNU Guix 0.1 released (alpha)

Ludovic Courtès ludo at gnu.org
Sun Jan 20 23:46:02 CET 2013


Hi Marc,

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

>   - why you go this way. One reason I can think of is because scheme might
>     be more powerful than nix language. Are there more reasons?

Technically, I believe an EDSL has more to offer than a DSL with its own
implementation: tooling (compiler, debugger, REPL, editor support,
etc.), libraries (SRFI-1, etc.), general-purpose features (data
structures, i18n, networking, etc.), and integration with other tools &
libraries written in that language.  Scheme makes it easy to define
EDSLs, through macros.

A nice thing is that Scheme can be used both on the “host” side (as a
replacement of the Nix language), and on the build side (a nice
replacement of Bash...).

Philosophically, I’m also interested in making a free software, and a
“GNU” distro.

I’ve always been disappointed that Nixpkgs includes non-free software,
and that even proposals to just move them in a separate directory were
rejected.

>   - in which way you're going to utilize the new "power" of scheme first
>     applying to what problems?

On the build side, it nicely replaces Bash, and also Coreutils,
Findutils, sed, and cURL.  :-)

On the host side, it facilitates the implementation of new tools.  For
instance, listing the available packages, searching them, using l10n’d
package descriptions, etc. is easy and fast.  The auto-updater that’s in
the works, based on Nixpkgs’s gnupdate, is going to be both easier to
implement and faster (no need to parse several MiBs of a low-level XML
representation!).

Guix provides access to several levels of API: store RPCs, low-level
derivations, Scheme derivations, and high-level package descriptions.
That opens up a wide range of possibilities, I think.  Again, this is
the typical advantage of using a single language.

There’s also a clearer separation of concerns: for instance,
env. vars. are not abused as arguments to the ‘derivation’ primitive.

>   - how exactly you reuse existing "nix*" software. You should describe
>     this.

It reuses the daemon, and thus libstore, as described in ‘README’.

>   - what would be the advantages of your system - eg will you keep the
>     lazy feature? If you build 150 packages its not a big problem.

Of course it’s lazy, it doesn’t try to build every package as soon as
you fire it.  :-)

More details can be found in the manual, ‘README’, and in my GHM talk
linked from the web site.

Hope this clarifies things!

Ludo’.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
Url : http://lists.science.uu.nl/pipermail/nix-dev/attachments/20130120/cddc2be5/attachment.bin 


More information about the nix-dev mailing list