summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2012-11-24 15:20:05 +0100
committerLudovic Courtès <ludo@gnu.org>2012-11-24 15:20:05 +0100
commita65e3306d1bc91d51cd9702a3b457f18ace398eb (patch)
tree4e3d39c5d6f9defcba5da2b0730fb1159bf5ec5e
parentf190f92f9114f42f55d9dde9f71ecd1b9bc29d0d (diff)
doc: Update `README'.
* README: Update introductory summary. Point to Savannah instead of Gitorious. Mention <bug-guix@gnu.org>. (Guix & Nix): New section.
-rw-r--r--README64
1 files changed, 52 insertions, 12 deletions
diff --git a/README b/README
index 3c201e88bbe..6a32cb32cc5 100644
--- a/README
+++ b/README
@@ -1,19 +1,24 @@
1-*- mode: org -*- 1-*- mode: org -*-
2 2
3GNU Guix is Nix[0] from Guile[1]! 3[[http://www.gnu.org/software/guix/][GNU Guix]] is a purely functional package manager, and associated free
4software distribution, for the [[http://www.gnu.org/gnu/gnu.html][GNU system]]. In addition to standard
5package management features, Guix supports transactional upgrades and
6roll-backs, unprivileged package management, per-user profiles, and
7garbage collection.
4 8
5Concretely, it allows Nix package management to be done entirely in 9It provides [[http://www.gnu.org/software/guile/][Guile]] Scheme APIs, including a high-level embedded
6Scheme. The goal is to investigate whether Scheme, and in particular 10domain-specific languages (EDSLs) to describe how packages are to be
7the ability to define EDSLs, would allow it to fulfill the role of the 11built and composed.
8Nix language.
9 12
10[0] http://nixos.org/nix/ 13A user-land free software distribution for GNU/Linux comes as part of
11[1] http://gnu.org/software/guile/ 14Guix.
15
16Guix is based on the [[http://nixos.org/nix/][Nix]] package manager.
12 17
13 18
14* Hacking 19* Hacking
15 20
16Guix currently depends on the following packages: 21GNU Guix currently depends on the following packages:
17 22
18 - [[http://gnu.org/software/guile/][GNU Guile 2.0.x]] 23 - [[http://gnu.org/software/guile/][GNU Guile 2.0.x]]
19 - [[http://nixos.org/nix/][Nix]] 24 - [[http://nixos.org/nix/][Nix]]
@@ -52,10 +57,45 @@ the (guix store) module.
52 57
53* Contact 58* Contact
54 59
55The repository is at <https://gitorious.org/guix/>. 60GNU Guix is hosted at https://savannah.gnu.org/projects/guix/.
56 61
57Please email <ludo@gnu.org> or <nix-dev@lists.science.uu.nl>, or 62Please email <bug-guix@gnu.org> for bug reports or questions regarding
58join #guile or #nixos on irc.freenode.net or `civodul'. 63Guix and its distribution; email <gnu-system-discuss@gnu.org> for
64general issues regarding the GNU system.
65
66Join #guix on irc.freenode.net.
67
68* Guix & Nix
69
70GNU Guix is based on [[http://nixos.org/nix/][the Nix package manager]]. It implements the same
71package deployment paradigm, and in fact it reuses some of its code.
72Yet, different engineering decisions were made for Guix, as described
73below.
74
75Nix is really two things: a package build tool, implemented by a library
76and daemon, and a special-purpose programming language. GNU Guix relies
77on the former, but uses Scheme as a replacement for the latter.
78
79Using Scheme instead of a specific language allows us to get all the
80features and tooling that come with Guile (compiler, debugger, REPL,
81Unicode, libraries, etc.) And it means that we have a general-purpose
82language, on top of which we can have embedded domain-specific languages
83(EDSLs), such as the one used to define packages. This broadens what
84can be done in package recipes themselves, and what can be done around them.
85
86Technically, Guix makes remote procedure calls to the ‘nix-worker’
87daemon to perform operations on the store. At the lowest level, Nix
88“derivations” represent promises of a build, stored in ‘.drv’ files in
89the store. Guix produces such derivations, which are then interpreted
90by the daemon to perform the build. Thus, Guix derivations can use
91derivations produced by Nix (and vice versa).
92
93With Nix and the [[http://nixos.org/nixpkgs][Nixpkgs]] distribution, package composition happens at
94the Nix language level, but builders are usually written in Bash.
95Conversely, Guix encourages the use of Scheme for both package
96composition and builders. Likewise, the core functionality of Nix is
97written in C++ and Perl; Guix relies on some of the original C++ code,
98but exposes all the API as Scheme.
59 99
60* Related software 100* Related software
61 101