diff options
Diffstat (limited to 'doc/guix.texi')
-rw-r--r-- | doc/guix.texi | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/doc/guix.texi b/doc/guix.texi new file mode 100644 index 0000000000..36eef68706 --- /dev/null +++ b/doc/guix.texi @@ -0,0 +1,185 @@ +\input texinfo +@c -*-texinfo-*- + +@c %**start of header +@setfilename guix.info +@documentencoding UTF-8 +@settitle Guix Reference Manual +@c %**end of header + +@include version.texi + +@ifinfo +@dircategory Development +@direntry +* guix: (guix). Guix, the functional package manager. +* guix-build: (guix)Invoking guix-build + Building packages with Guix. +@end direntry +@end ifinfo + +@titlepage +@title{Guix Reference Manual} +@subtitle{Using the Guix Functional Package Manager} +@author Ludovic Courtès + +@page +@vskip 0pt plus 1filll +Edition @value{EDITION} @* +@value{UPDATED} @* + +Copyright @copyright{} 2012 Ludovic Court@`es + +@quotation +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.3 or +any later version published by the Free Software Foundation; with no +Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A +copy of the license is included in the section entitled ``GNU Free +Documentation License''. +@end quotation +@end titlepage + +@copying +This manual documents Guix version @value{VERSION}. + +Copyright (C) 2012 Ludovic Courtès + +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.3 or +any later version published by the Free Software Foundation; with no +Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A +copy of the license is included in the section entitled ``GNU Free +Documentation License.'' +@end copying + +@contents + +@c ********************************************************************* +@node Top +@top Guix + +This document describes Guix version @value{VERSION}. + +@menu +* Introduction:: What is Guix about? +* Programming Interface:: Using Guix in Scheme. +* Utilities:: Package management commands. + +* Acknowledgments:: Thanks! +* GNU Free Documentation License:: The license of this manual. +* Concept Index:: Concepts. +* Function Index:: Functions. +@end menu + +@c ********************************************************************* +@node Introduction +@chapter Introduction + +Guix is a functional package management tool. Package management +consists in all the activities that relate to building packages from +source, honoring the build-time and run-time dependencies on packages, +installing packages in user environments, upgrading installed packages +to new versions or rolling back to a previous set, removing unused +software packages, etc. + +@cindex functional package management +The term @dfn{functional} refers to a specific package management +discipline. In Guix, the package build and installation process is seen +as a function, in the mathematical sense: that function takes inputs, +such as build scripts, a compiler, and libraries depended on, and +returns the installed package. As a pure function, its result depends +solely on its inputs---for instance, it cannot refer to software or +scripts that were not explicitly passed as inputs. A build function +always produces the same result when passed a given set of inputs. Last +but not least, a build function cannot alter the system's environment in +any way; for instance, it cannot create, modify, or delete files outside +of its build and installation directories. This is achieved by running +build processes in dedicated ``chroots'', where only their explicit +inputs are visible. + +@cindex package store +The result of package build functions is @dfn{cached} in the file +system, in a special directory called the @dfn{package store}. In +practice, each package is installed in a directory of its own, in the +store---by default under @file{/nix/store}. The directory name contains +a hash of all the inputs used to build that package; thus, changing an +input yields a different directory name. + +This approach is the foundation of Guix's salient features: support for +transactional package upgrades and rollback, per-user installation, and +garbage collection of packages. + +Guix has a command-line interface allowing users to build, install, +upgrade, and remove packages, as well as a Scheme programming interface. +The remainder of this manual describes them. + +@c ********************************************************************* +@node Programming Interface +@chapter Programming Interface + +@menu +* Defining Packages:: Defining new packages. +* The Store:: Manipulating the package store. +* Derivations:: Low-level interface to package derivations. +@end menu + +@node Defining Packages +@section Defining Packages + +@code{(guix packages)} and @code{(guix build-system)} + +@node The Store +@section The Store + +@code{(guix store)} + +@node Derivations +@section Derivations + +@code{(guix derivations)} + +@c ********************************************************************* +@node Utilities +@chapter Utilities + +@menu +* Invoking guix-build:: Building packages from the command line. +@end menu + +@node Invoking guix-build +@section Invoking @command{guix-build} + +@c ********************************************************************* +@node Acknowledgments +@chapter Acknowledgments + +Guix is based on the Nix package manager, which was designed and +implemented by Eelco Dolstra. Nix pioneered functional package +management, and promoted unprecedented features, such as transactional +package upgrades and rollbacks, per-user profiles, and referentially +transparent build processes. Without this work, Guix would not exist. + +The Nix-based software distributions, Nixpkgs and NixOS, have also been +an inspiration for Guix. + +@c ********************************************************************* +@node GNU Free Documentation License +@appendix GNU Free Documentation License + +@include fdl-1.3.texi + +@c ********************************************************************* +@node Concept Index +@unnumbered Concept Index +@printindex cp + +@node Function Index +@unnumbered Function Index +@printindex fn + +@bye + +@c Local Variables: +@c ispell-local-dictionary: "american"; +@c End: |