X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/c80e7e55b37575baa310b1c5e6ed10903904b8d6..a8f20f63dce1f41126bbc0fdbe6a3b1bf28fb69d:/README diff --git a/README b/README index 9fdcc0effe..f05a4b5615 100644 --- a/README +++ b/README @@ -16,44 +16,86 @@ Guix. Guix is based on the [[http://nixos.org/nix/][Nix]] package manager. -* Hacking +* Requirements GNU Guix currently depends on the following packages: - - [[http://gnu.org/software/guile/][GNU Guile 2.0.x]] - - [[http://nixos.org/nix/][Nix]] + - [[http://gnu.org/software/guile/][GNU Guile 2.0.x]], version 2.0.7 or later - [[http://gnupg.org/][GNU libgcrypt]] + - [[http://www.gnu.org/software/make/][GNU Make]] + - optionally [[http://savannah.nongnu.org/projects/guile-json/][Guile-JSON]], for the 'guix import pypi' command + - optionally [[http://www.gnutls.org][GnuTLS]] compiled with guile support enabled, for HTTPS support + in the 'guix download' command. Note that 'guix import pypi' requires + this functionality. + +Unless `--disable-daemon' was passed, the following packages are needed: + + - [[http://sqlite.org/][SQLite 3]] + - [[http://www.bzip.org][libbz2]] + - [[http://gcc.gnu.org][GCC's g++]] + +When `--disable-daemon' was passed, you instead need the following: + + - [[http://nixos.org/nix/][Nix]] + +* Installation + +See the manual for the installation instructions, either by running + + info -f doc/guix.info "(guix) Installation" -Optionally, packages from Nixpkgs may be transparently reused from Guix. -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. +or by checking the [[http://www.gnu.org/software/guix/manual/guix.html#Installation][web copy of the manual]]. - - [[http://nixos.org/nixpkgs/][Nixpkgs]] +For information on installation from a Git checkout, please see the section +"Building from Git" in the manual. -When building Guix from a checkout, the following packages are also -required: +* Installing Guix from Guix - - [[http://www.gnu.org/software/autoconf/][GNU Autoconf]] - - [[http://www.gnu.org/software/automake/][GNU Automake]] - - [[http://www.gnu.org/software/gettext/][GNU Gettext]] +You can re-build and re-install Guix using a system that already runs Guix. +To do so: -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. + - Start a shell with the development environment for Guix: + + guix environment guix + + - Re-run the 'configure' script passing it the option + '--localstatedir=/somewhere', where '/somewhere' is the 'localstatedir' + value of the currently installed Guix (failing to do that would lead the + new Guix to consider the store to be empty!). + + - Run "make", "make check", and "make install". * 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 +=/gnu/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. +Guix does remote procedure calls (RPCs) to the Guix or Nix daemon (the +=guix-daemon= or =nix-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. + +* Installing Guix as non-root + +The Guix daemon allows software builds to be performed under alternate +user accounts, which are normally created specifically for this +purpose. For instance, you may have a pool of accounts in the +=guixbuild= group, and then you can instruct =guix-daemon= to use them +like this: + + $ guix-daemon --build-users-group=guixbuild + +However, unless it is run as root, =guix-daemon= cannot switch users. +In that case, it falls back to using a setuid-root helper program call +=nix-setuid-helper=. That program is not setuid-root by default when +you install it; instead you should run a command along these lines +(assuming Guix is installed under /usr/local): + + # chown root.root /usr/local/libexec/nix-setuid-helper + # chmod 4755 /usr/local/libexec/nix-setuid-helper * Contact