X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/1e9824513c570370638b1bfe33bf1dba1f12be4a..1699b2d969806e7388ab5a00354b7938a7887757:/README diff --git a/README b/README index d2bbfacd5a..2d5e4492d0 100644 --- a/README +++ b/README @@ -20,8 +20,12 @@ Guix is based on the [[http://nixos.org/nix/][Nix]] package manager. GNU Guix currently depends on the following packages: - - [[http://gnu.org/software/guile/][GNU Guile 2.0.x]] + - [[http://gnu.org/software/guile/][GNU Guile 2.0.x]], version 2.0.5 or later - [[http://gnupg.org/][GNU libgcrypt]] + - 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: @@ -33,36 +37,74 @@ When `--disable-daemon' was passed, you instead need the following: - [[http://nixos.org/nix/][Nix]] -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. +* Installation - - [[http://nixos.org/nixpkgs/][Nixpkgs]] +See the manual for the installation instructions, either by running -When building Guix from a checkout, the following packages are also -required: + info -f doc/guix.info "(guix) Installation" - - [[http://www.gnu.org/software/autoconf/][GNU Autoconf]] - - [[http://www.gnu.org/software/automake/][GNU Automake]] - - [[http://www.gnu.org/software/gettext/][GNU Gettext]] +or by checking the [[http://www.gnu.org/software/guix/manual/guix.html#Installation][web copy of the manual]]. -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. +For information on installation from a Git checkout, please see the ‘HACKING’ +file. + +* Installing Guix from Guix + +You can re-build and re-install Guix using a system that already runs Guix. +To do so: + + - Install the dependencies (see 'Requirements' above) and build tools using + Guix: + + guix package --install autoconf automake bzip2 gcc-toolchain gettext \ + guile libgcrypt pkg-config sqlite + + - Set the environment variables that Guix recommends you to set during the + package installation process: + ACLOCAL_PATH, CPATH, LIBRARY_PATH, PKG_CONFIG_PATH + + - Set the PATH environment variable to refer to the profile: + PATH=$HOME/.guix-profile/bin:$PATH + + - Re-run the 'configure' script passing it the option + '--with-libgcrypt-prefix=$HOME/.guix-profile/', as well as + '--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