2012-06-08 17:13:33 -04:00
|
|
|
-*- mode: org -*-
|
|
|
|
|
2012-11-18 09:22:00 -05:00
|
|
|
GNU Guix is Nix[0] from Guile[1]!
|
2012-06-01 17:29:55 -04:00
|
|
|
|
|
|
|
Concretely, it allows Nix package management to be done entirely in
|
|
|
|
Scheme. The goal is to investigate whether Scheme, and in particular
|
|
|
|
the ability to define EDSLs, would allow it to fulfill the role of the
|
|
|
|
Nix language.
|
|
|
|
|
|
|
|
[0] http://nixos.org/nix/
|
|
|
|
[1] http://gnu.org/software/guile/
|
2012-06-08 17:13:33 -04:00
|
|
|
|
|
|
|
|
|
|
|
* Hacking
|
|
|
|
|
|
|
|
Guix currently depends on the following packages:
|
|
|
|
|
2012-07-01 09:11:14 -04:00
|
|
|
- [[http://gnu.org/software/guile/][GNU Guile 2.0.x]]
|
|
|
|
- [[http://nixos.org/nix/][Nix]]
|
2012-11-03 16:43:30 -04:00
|
|
|
- [[http://gnupg.org/][GNU libgcrypt]]
|
2012-06-08 17:13:33 -04:00
|
|
|
|
2012-11-03 16:11:02 -04:00
|
|
|
Optionally, packages from Nixpkgs may be transparently reused from Guix.
|
2012-10-04 18:19:29 -04:00
|
|
|
For this to work, you need to have a checkout of the Nixpkgs repository;
|
|
|
|
the `--with-nixpkgs' option allows you to let `configure' know where the
|
|
|
|
Nixpkgs checkout is.
|
2012-06-08 17:13:33 -04:00
|
|
|
|
2012-07-01 09:11:14 -04:00
|
|
|
- [[http://nixos.org/nixpkgs/][Nixpkgs]]
|
2012-06-08 17:13:33 -04:00
|
|
|
|
2012-10-04 18:19:29 -04:00
|
|
|
When building Guix from a checkout, the following packages are also
|
|
|
|
required:
|
|
|
|
|
|
|
|
- [[http://www.gnu.org/software/autoconf/][GNU Autoconf]]
|
|
|
|
- [[http://www.gnu.org/software/automake/][GNU Automake]]
|
|
|
|
- [[http://www.gnu.org/software/gettext/][GNU Gettext]]
|
|
|
|
|
|
|
|
The "autoreconf -vi" command can be used to generate the build system
|
|
|
|
infrastructure; it reports an error if an inappropriate version of the
|
|
|
|
above packages is being used.
|
|
|
|
|
2012-06-08 17:13:33 -04:00
|
|
|
* How It Works
|
|
|
|
|
|
|
|
Guix does the high-level preparation of a /derivation/. A derivation is
|
|
|
|
the promise of a build; it is stored as a text file under
|
|
|
|
=/nix/store/xxx.drv=. The (guix derivations) module provides the
|
|
|
|
`derivation' primitive, as well as higher-level wrappers such as
|
|
|
|
`build-expression->derivation'.
|
|
|
|
|
|
|
|
Guix does remote procedure calls (RPCs) to the Nix daemon (the
|
|
|
|
=nix-worker --daemon= command), which in turn performs builds and
|
|
|
|
accesses to the Nix store on its behalf. The RPCs are implemented in
|
|
|
|
the (guix store) module.
|
|
|
|
|
|
|
|
* Contact
|
|
|
|
|
|
|
|
The repository is at <https://gitorious.org/guix/>.
|
|
|
|
|
|
|
|
Please email <ludo@gnu.org> or <nix-dev@lists.science.uu.nl>, or
|
|
|
|
join #guile or #nixos on irc.freenode.net or `civodul'.
|
2012-11-18 09:25:01 -05:00
|
|
|
|
|
|
|
* Related software
|
|
|
|
|
|
|
|
- [[http://nixos.org][Nix, Nixpkgs, and NixOS]], functional package manager and associated
|
|
|
|
software distribution, are the inspiration of Guix
|
|
|
|
- [[http://www.gnu.org/software/stow/][GNU Stow]] builds around the idea of one directory per prefix, and a
|
|
|
|
symlink tree to create user environments
|
|
|
|
- [[http://www.pvv.ntnu.no/~arnej/store/storedoc_6.html][STORE]] shares the same idea
|
|
|
|
- [[https://live.gnome.org/OSTree/][GNOME's OSTree]] allows bootable system images to be built from a
|
|
|
|
specified set of packages
|
|
|
|
- The [[http://www.gnu.org/s/gsrc/][GNU Source Release Collection]] (GSRC) is a user-land software
|
|
|
|
distribution; unlike Guix, it relies on core tools available on the
|
|
|
|
host system
|