summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/contributing.texi114
-rw-r--r--doc/guix-cookbook.texi83
-rw-r--r--doc/guix.texi190
3 files changed, 235 insertions, 152 deletions
diff --git a/doc/contributing.texi b/doc/contributing.texi
index 73d1cd2648..7bf350ee0d 100644
--- a/doc/contributing.texi
+++ b/doc/contributing.texi
@@ -130,14 +130,16 @@ more information.
Then, run:
@example
-./configure --localstatedir=/var
+./configure --localstatedir=/var --sysconfdir=/etc
@end example
@noindent
... where @file{/var} is the normal @code{localstatedir} value
-(@pxref{The Store}, for information about this). Note that you will
-probably not run @command{make install} at the end (you don't have to)
-but it's still important to pass the right @code{localstatedir}.
+(@pxref{The Store}, for information about this) and @file{/etc} is the
+normal @code{sysconfdir} value. Note that you will probably not run
+@command{make install} at the end (you don't have to) but it's still
+important to pass the right @code{localstatedir} and @code{sysconfdir}
+values, which get recorded in the @code{(guix config)} Guile module.
Finally, you can build Guix and, if you feel so inclined, run the tests
(@pxref{Running the Test Suite}):
@@ -1395,28 +1397,8 @@ different name or email just for commits in this repository, you can
use @command{git config --local}, or edit @file{.git/config} in the
repository instead of @file{~/.gitconfig}.
-We provide some default settings in @file{etc/git/gitconfig} which
-modify how patches are generated, making them easier to read and apply.
-These settings can be applied by manually copying them to
-@file{.git/config} in your checkout, or by telling Git to include the
-whole file:
-
-@example
-git config --local include.path ../etc/git/gitconfig
-@end example
-
-From then on, any changes to @file{etc/git/gitconfig} would
-automatically take effect.
-
-Since the first patch in a series must be sent separately
-(@pxref{Sending a Patch Series}), it can also be helpful to tell
-@command{git format-patch} to handle the e-mail threading instead of
-@command{git send-email}:
-
-@example
-git config --local format.thread shallow
-git config --local sendemail.thread no
-@end example
+Other important Git configuration will automatically be configured when
+building the project (@pxref{Building from Git}).
@node Sending a Patch Series
@subsection Sending a Patch Series
@@ -1439,10 +1421,12 @@ output of the @code{git} package, i.e. @code{git:send-email}.
The following command will create a patch email from the latest commit,
open it in your @var{EDITOR} or @var{VISUAL} for editing, and send it to
-the Guix mailing list to be reviewed and merged:
+the Guix mailing list to be reviewed and merged. Assuming you have
+already configured Git according to @xref{Configuring Git}, you can
+simply use:
@example
-$ git send-email -1 -a --base=auto --to=guix-patches@@gnu.org
+$ git send-email --annotate -1
@end example
@quotation Tip
@@ -1453,31 +1437,26 @@ other than the @code{master} branch of
@url{https://git.savannah.gnu.org/cgit/guix.git}.
@example
-git send-email -1 -a --base=auto \
- --subject-prefix='PATCH core-updates' \
- --to=guix-patches@@gnu.org
+git send-email --annotate --subject-prefix='PATCH core-updates' -1
@end example
@end quotation
The patch email contains a three-dash separator line after the commit
message. You may ``annotate'' the patch with explanatory text by adding
it under this line. If you do not wish to annotate the email, you may
-drop the @option{-a} flag (which is short for @option{--annotate}).
-
-The @option{--base=auto} flag automatically adds a note at the bottom
-of the patch of the commit it was based on, making it easier for
-maintainers to rebase and merge your patch.
+drop the @option{--annotate} option.
If you need to send a revised patch, don't resend it like this or send
a ``fix'' patch to be applied on top of the last one; instead, use
-@command{git commit -a} or @url{https://git-rebase.io, @command{git rebase}}
-to modify the commit, and use the @email{@var{ISSUE_NUMBER}@@debbugs.gnu.org}
-address and the @option{-v} flag with @command{git send-email}.
+@command{git commit --amend} or @url{https://git-rebase.io,
+@command{git rebase}} to modify the commit, and use the
+@email{@var{ISSUE_NUMBER}@@debbugs.gnu.org} address and the @option{-v}
+flag with @command{git send-email}.
@example
-$ git commit -a
-$ git send-email -1 -a --base=auto -v@var{REVISION} \
- --to=@var{ISSUE_NUMBER}@@debbugs.gnu.org
+$ git commit --amend
+$ git send-email --annotate -v@var{REVISION} \
+ --to=@var{ISSUE_NUMBER}@@debbugs.gnu.org -1
@end example
@quotation Note
@@ -1494,14 +1473,14 @@ reply to incoming bugs and patches, which contains the bug number.
@unnumberedsubsubsec Notifying Teams
@anchor{Notifying Teams}
@cindex teams
-The @file{etc/teams.scm} script may be used to notify all those who
-may be interested in your patch of its existence (@pxref{Teams}).
-Use @command{etc/teams.scm list-teams} to display all the teams,
-decide which team(s) your patch relates to, and use
-@command{etc/teams.scm cc} to output various @command{git send-email}
-flags which will notify the appropriate team members, or use
-@command{etc/teams.scm cc-members} to detect the appropriate teams
-automatically.
+If your git checkout has been correctly configured (@pxref{Configuring
+Git}), the @command{git send-email} command will automatically notify
+the appropriate team members, based on the scope of your changes. This
+relies on the @file{etc/teams.scm} script, which can also be invoked
+manually if you do not use the preferred @command{git send-email}
+command to submit patches. To list the available actions of the script,
+you can invoke it via the @command{etc/teams.scm help} command. For
+more information regarding teams, see @xref{Teams}.
@unnumberedsubsubsec Multiple Patches
@anchor{Multiple Patches}
@@ -1528,9 +1507,7 @@ We can now send @emph{just} the cover letter to the
that we can send the rest of the patches to.
@example
-$ git send-email outgoing/0000-cover-letter.patch -a \
- --to=guix-patches@@gnu.org \
- $(etc/teams.scm cc-members ...)
+$ git send-email outgoing/0000-cover-letter.patch --annotate
$ rm outgoing/0000-cover-letter.patch # we don't want to resend it!
@end example
@@ -1542,9 +1519,7 @@ Once the Debbugs mailer has replied to your cover letter email, you
can send the actual patches to the newly-created issue address.
@example
-$ git send-email outgoing/*.patch \
- --to=@var{ISSUE_NUMBER}@@debbugs.gnu.org \
- $(etc/teams.scm cc-members ...)
+$ git send-email outgoing/*.patch --to=@var{ISSUE_NUMBER}@@debbugs.gnu.org
$ rm -rf outgoing # we don't need these anymore
@end example
@@ -1553,14 +1528,13 @@ to send an amended patch series, since an issue already exists for
the patchset.
@example
-$ git send-email -@var{NUMBER_COMMITS} \
- -v@var{REVISION} --base=auto \
+$ git send-email -@var{NUMBER_COMMITS} -v@var{REVISION} \
--to @var{ISSUE_NUMBER}@@debbugs.gnu.org
@end example
-If need be, you may use @option{--cover-letter -a} to send another cover
-letter, e.g. for explaining what's changed since the last revision, and
-these changes are necessary.
+If need be, you may use @option{--cover-letter --annotate} to send
+another cover letter, e.g. for explaining what's changed since the last
+revision, and these changes are necessary.
@node Teams
@subsection Teams
@@ -1587,7 +1561,8 @@ You can run the following command to have the @code{Mentors} team put in
CC of a patch series:
@example
-$ git send-email --to @var{ISSUE_NUMBER}@@debbugs.gnu.org $(./etc/teams.scm cc mentors) *.patch
+$ git send-email --to @var{ISSUE_NUMBER}@@debbugs.gnu.org \
+ --header-cmd='etc/teams.scm cc-mentors-header-cmd' *.patch
@end example
The appropriate team or teams can also be inferred from the modified
@@ -1596,7 +1571,7 @@ current Git repository to review, you can run:
@example
$ guix shell -D guix
-[env]$ git send-email --to @var{ISSUE_NUMBER}@@debbugs.gnu.org $(./etc/teams.scm cc-members HEAD~2 HEAD) *.patch
+[env]$ git send-email --to @var{ISSUE_NUMBER}@@debbugs.gnu.org -2
@end example
@node Tracking Bugs and Patches
@@ -1831,16 +1806,9 @@ To check that commits are signed with correct key, use:
make authenticate
@end example
-You can prevent yourself from accidentally pushing unsigned or signed
-with the wrong key commits to Savannah by using the pre-push Git hook
-located at @file{etc/git/pre-push}:
-
-@example
-cp etc/git/pre-push .git/hooks/pre-push
-@end example
-
-It additionally calls @code{make check-channel-news} to be sure
-@file{news.scm} file is correct.
+To avoid accidentally pushing unsigned or signed with the wrong key
+commits to Savannah, make sure to configure Git according to
+@xref{Configuring Git}.
@subsection Commit Policy
diff --git a/doc/guix-cookbook.texi b/doc/guix-cookbook.texi
index b9fb916f4a..2aae5a4871 100644
--- a/doc/guix-cookbook.texi
+++ b/doc/guix-cookbook.texi
@@ -628,30 +628,25 @@ The @code{use-modules} expression tells which of the modules we need in the file
Modules are a collection of values and procedures. They are commonly called
``libraries'' or ``packages'' in other programming languages.
-@node @samp{GUIX_PACKAGE_PATH}
-@subsubsection @samp{GUIX_PACKAGE_PATH}
+@node Channels
+@subsubsection Channels
-@emph{Note: Starting from Guix 0.16, the more flexible Guix @dfn{channels} are the
-preferred way and supersede @samp{GUIX_PACKAGE_PATH}. See next section.}
+@cindex channel
+Guix and its package collection can be extended through @dfn{channels}.
+A channel is a Git repository, public or not, containing @file{.scm}
+files that provide packages (@pxref{Defining Packages,,, guix, GNU Guix
+Reference Manual}) or services (@pxref{Defining Services,,, guix, GNU
+Guix Reference Manual}).
-It can be tedious to specify the file from the command line instead of simply
-calling @code{guix package --install my-hello} as you would do with the official
-packages.
-
-Guix makes it possible to streamline the process by adding as many ``package
-declaration directories'' as you want.
-
-Create a directory, say @file{~/guix-packages} and add it to the @samp{GUIX_PACKAGE_PATH}
-environment variable:
+How would you go about creating a channel? First, create a directory
+that will contain your @file{.scm} files, say @file{~/my-channel}:
@example
-$ mkdir ~/guix-packages
-$ export GUIX_PACKAGE_PATH=~/guix-packages
+mkdir ~/my-channel
@end example
-To add several directories, separate them with a colon (@code{:}).
-
-Our previous @samp{my-hello} needs some adjustments though:
+Suppose you want to add the @samp{my-hello} package we saw previously;
+it first needs some adjustments:
@lisp
(define-module (my-hello)
@@ -692,9 +687,9 @@ package. If you want to use @code{define-public} in this use-case nonetheless,
sure the file ends with an evaluation of @code{my-hello}:
@lisp
-; ...
+;; ...
(define-public my-hello
- ; ...
+ ;; ...
)
my-hello
@@ -702,22 +697,50 @@ my-hello
This last example is not very typical.
-Now @samp{my-hello} should be part of the package collection like all other official
-packages. You can verify this with:
+Now how do you make that package visible to @command{guix} commands so
+you can test your packages? You need to add the directory to the search
+path using the @option{-L} command-line option, as in these examples:
+
+@example
+guix show -L ~/my-channel my-hello
+guix build -L ~/my-channel my-hello
+@end example
+
+The final step is to turn @file{~/my-channel} into an actual channel,
+making your package collection seamlessly available @i{via} any
+@command{guix} command. To do that, you first need to make it a Git
+repository:
@example
-$ guix package --show=my-hello
+cd ~/my-channel
+git init
+git add my-hello.scm
+git commit -m "First commit of my channel."
@end example
-@node Guix channels
-@subsubsection Guix channels
+And that's it, you have a channel! From there on, you can add this
+channel to your channel configuration in
+@file{~/.config/guix/channels.scm} (@pxref{Specifying Additional
+Channels,,, guix, GNU Guix Reference Manual}); assuming you keep your
+channel local for now, the @file{channels.scm} would look something like
+this:
+
+@lisp
+(append (list (channel
+ (name 'my-channel)
+ (url (string-append "file://" (getenv "HOME")
+ "/my-channel"))))
+ %default-channels)
+@end lisp
-Guix 0.16 features channels, which is very similar to @samp{GUIX_PACKAGE_PATH} but
-provides better integration and provenance tracking. Channels are not
-necessarily local, they can be maintained as a public Git repository for
-instance. Of course, several channels can be used at the same time.
+Next time you run @command{guix pull}, your channel will be picked up
+and the packages it defines will be readily available to all the
+@command{guix} commands, even if you do not pass @option{-L}. The
+@command{guix describe} command will show that Guix is, indeed, using
+both the @code{my-channel} and the @code{guix} channels.
-@xref{Channels,,, guix, GNU Guix Reference Manual} for setup details.
+@xref{Creating a Channel,,, guix, GNU Guix Reference Manual}, for
+details.
@node Direct checkout hacking
@subsubsection Direct checkout hacking
diff --git a/doc/guix.texi b/doc/guix.texi
index 46e7fd3908..ef2b78baeb 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -49,7 +49,7 @@ Copyright @copyright{} 2017 humanitiesNerd@*
Copyright @copyright{} 2017, 2021 Christine Lemmer-Webber@*
Copyright @copyright{} 2017, 2018, 2019, 2020, 2021, 2022 Marius Bakke@*
Copyright @copyright{} 2017, 2019, 2020, 2022 Hartmut Goebel@*
-Copyright @copyright{} 2017, 2019, 2020, 2021, 2022 Maxim Cournoyer@*
+Copyright @copyright{} 2017, 2019, 2020, 2021, 2022, 2023 Maxim Cournoyer@*
Copyright @copyright{} 2017–2022 Tobias Geerinckx-Rice@*
Copyright @copyright{} 2017 George Clemmer@*
Copyright @copyright{} 2017 Andy Wingo@*
@@ -180,7 +180,7 @@ Weblate} (@pxref{Translating Guix}).
* Introduction:: What is Guix about?
* Installation:: Installing Guix.
* System Installation:: Installing the whole operating system.
-* System Troubleshooting Tips:: When things don't go as planned.
+* System Troubleshooting Tips:: When things don't go as planned.
* Getting Started:: Your first steps.
* Package Management:: Package installation, upgrade, etc.
* Channels:: Customizing the package collection.
@@ -210,8 +210,8 @@ Weblate} (@pxref{Translating Guix}).
Introduction
-* Managing Software the Guix Way:: What's special.
-* GNU Distribution:: The packages and tools.
+* Managing Software the Guix Way:: What's special.
+* GNU Distribution:: The packages and tools.
Installation
@@ -241,15 +241,15 @@ System Installation
* Installing Guix in a VM:: Guix System playground.
* Building the Installation Image:: How this comes to be.
-System Troubleshooting Tips
-
-* Chrooting into an existing system:: Fixing things from a chroot
-
Manual Installation
-* Keyboard Layout and Networking and Partitioning:: Initial setup.
+* Keyboard Layout and Networking and Partitioning:: Initial setup.
* Proceeding with the Installation:: Installing.
+System Troubleshooting Tips
+
+* Chrooting into an existing system::
+
Package Management
* Features:: How Guix will make your life brighter.
@@ -293,7 +293,7 @@ Development
* Invoking guix environment:: Setting up development environments.
* Invoking guix pack:: Creating software bundles.
* The GCC toolchain:: Working with languages supported by GCC.
-* Invoking guix git authenticate:: Authenticating Git repositories.
+* Invoking guix git authenticate:: Authenticating Git repositories.
Programming Interface
@@ -309,7 +309,7 @@ Programming Interface
* Derivations:: Low-level interface to package derivations.
* The Store Monad:: Purely functional interface to the store.
* G-Expressions:: Manipulating build expressions.
-* Invoking guix repl:: Programming Guix in Guile.
+* Invoking guix repl:: Programming Guix in Guile
* Using Guix Interactively:: Fine-grain interaction at the REPL.
Defining Packages
@@ -344,8 +344,9 @@ Invoking @command{guix build}
* Debugging Build Failures:: Real life packaging experience.
Foreign Architectures
-* Cross-Compilation:: Cross-compiling for another architecture.
-* Native Builds:: Targeting another architecture through native builds.
+
+* Cross-Compilation:: Cross-compiling for another architecture.
+* Native Builds:: Targeting another architecture through native builds.
System Configuration
@@ -368,9 +369,9 @@ System Configuration
* Running Guix in a VM:: How to run Guix System in a virtual machine.
* Defining Services:: Adding new service definitions.
-Home Environment Configuration
+File Systems
-* Invoking guix home:: Instantiating a home environment configuration.
+* Btrfs file system::
Services
@@ -388,12 +389,14 @@ Services
* Mail Services:: IMAP, POP3, SMTP, and all that.
* Messaging Services:: Messaging services.
* Telephony Services:: Telephony services.
+* File-Sharing Services:: File-sharing services.
* Monitoring Services:: Monitoring services.
* Kerberos Services:: Kerberos services.
* LDAP Services:: LDAP services.
* Web Services:: Web servers.
* Certificate Services:: TLS certificates via Let's Encrypt.
* DNS Services:: DNS daemons.
+* VNC Services:: VNC daemons.
* VPN Services:: VPN daemons.
* Network File System:: NFS related services.
* Samba Services:: Samba services.
@@ -417,18 +420,45 @@ Defining Services
* Shepherd Services:: A particular type of service.
* Complex Configurations:: Defining bindings for complex configurations.
+Home Configuration
+
+* Declaring the Home Environment:: Customizing your Home.
+* Configuring the Shell:: Enabling home environment.
+* Home Services:: Specifying home services.
+* Invoking guix home:: Instantiating a home configuration.
+
+Home Services
+
+* Essential Home Services:: Environment variables, packages, on-* scripts.
+* Shells: Shells Home Services. POSIX shells, Bash, Zsh.
+* Mcron: Mcron Home Service. Scheduled User's Job Execution.
+* Power Management: Power Management Home Services. Services for battery power.
+* Shepherd: Shepherd Home Service. Managing User's Daemons.
+* SSH: Secure Shell. Setting up the secure shell client.
+* GPG: GNU Privacy Guard. Setting up GPG and related tools.
+* Desktop: Desktop Home Services. Services for graphical environments.
+* Guix: Guix Home Services. Services for Guix.
+* Fonts: Fonts Home Services. Services for managing User's fonts.
+* Sound: Sound Home Services. Dealing with audio.
+* Messaging: Messaging Home Services. Services for managing messaging.
+* Media: Media Home Services. Services for managing media.
+
Platforms
* platform Reference:: Detail of platform declarations.
* Supported Platforms:: Description of the supported platforms.
-System Images
+Creating System Images
* image Reference:: Detail of image declarations.
* Instantiate an Image:: How to instantiate an image record.
* image-type Reference:: Detail of image types declaration.
* Image Modules:: Definition of image modules.
+@code{image} Reference
+
+* partition Reference::
+
Installing Debugging Files
* Separate Debug Info:: Installing 'debug' outputs.
@@ -437,7 +467,7 @@ Installing Debugging Files
Bootstrapping
* Full-Source Bootstrap:: A Bootstrap worthy of GNU.
-* Preparing to Use the Bootstrap Binaries:: Building that what matters most.
+* Preparing to Use the Bootstrap Binaries:: Building that what matters most.
@end detailmenu
@end menu
@@ -468,8 +498,8 @@ readily available through the @command{guix system} command, even if you're
using a different distro underneath!}. @xref{GNU Distribution}.
@menu
-* Managing Software the Guix Way:: What's special.
-* GNU Distribution:: The packages and tools.
+* Managing Software the Guix Way:: What's special.
+* GNU Distribution:: The packages and tools.
@end menu
@node Managing Software the Guix Way
@@ -1016,14 +1046,21 @@ C++11 standard.
@end itemize
@cindex state directory
+@cindex localstatedir
+@cindex system configuration directory
+@cindex sysconfdir
When configuring Guix on a system that already has a Guix installation,
be sure to specify the same state directory as the existing installation
using the @option{--localstatedir} option of the @command{configure}
script (@pxref{Directory Variables, @code{localstatedir},, standards,
-GNU Coding Standards}). Usually, this @var{localstatedir} option is
-set to the value @file{/var}. The @command{configure} script protects
+GNU Coding Standards}). Usually, this @var{localstatedir} option is set
+to the value @file{/var}. The @command{configure} script protects
against unintended misconfiguration of @var{localstatedir} so you do not
-inadvertently corrupt your store (@pxref{The Store}).
+inadvertently corrupt your store (@pxref{The Store}). The configuration
+directory should also be configured by setting the @option{--sysconfdir}
+option to the @file{/etc} value, which is the location used by Guix to
+store for example the access control list of authorized machines and the
+definition of offload machines.
@node Running the Test Suite
@section Running the Test Suite
@@ -2407,7 +2444,7 @@ Guix System. This means that you can install additional packages, should you
need it, using @command{guix package} (@pxref{Invoking guix package}).
@menu
-* Keyboard Layout and Networking and Partitioning:: Initial setup.
+* Keyboard Layout and Networking and Partitioning:: Initial setup.
* Proceeding with the Installation:: Installing.
@end menu
@@ -2905,6 +2942,10 @@ from there. Such technique is explained below.
@cindex chroot, guix system
@cindex chrooting, guix system
@cindex repairing GRUB, via chroot
+@menu
+* Chrooting into an existing system::
+@end menu
+
@node Chrooting into an existing system
@section Chrooting into an existing system
@@ -5922,7 +5963,7 @@ easily distributed to users who do not run Guix.
* Invoking guix environment:: Setting up development environments.
* Invoking guix pack:: Creating software bundles.
* The GCC toolchain:: Working with languages supported by GCC.
-* Invoking guix git authenticate:: Authenticating Git repositories.
+* Invoking guix git authenticate:: Authenticating Git repositories.
@end menu
@node Invoking guix shell
@@ -10140,23 +10181,31 @@ phase before the @code{build} phase, called
;; other fields omitted
(build-system gnu-build-system)
(arguments
- '(#:phases (modify-phases %standard-phases
- (delete 'configure)
- (add-before 'build 'set-prefix-in-makefile
- (lambda* (#:key outputs #:allow-other-keys)
- ;; Modify the makefile so that its
- ;; 'PREFIX' variable points to "out".
- (let ((out (assoc-ref outputs "out")))
- (substitute* "Makefile"
- (("PREFIX =.*")
- (string-append "PREFIX = "
- out "\n")))))))))))
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (delete 'configure)
+ (add-before 'build 'set-prefix-in-makefile
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; Modify the makefile so that its
+ ;; 'PREFIX' variable points to #$output and
+ ;; 'XMLLINT' points to the correct path.
+ (substitute* "Makefile"
+ (("PREFIX =.*")
+ (string-append "PREFIX = " #$output "\n"))
+ (("XMLLINT =.*")
+ (string-append "XMLLINT = "
+ (search-input-file inputs "/bin/xmllint")
+ "\n"))))))))))
@end lisp
The new phase that is inserted is written as an anonymous procedure,
-introduced with @code{lambda*}; it honors the @code{outputs} parameter
-we have seen before. @xref{Build Utilities}, for more about the helpers
-used by this phase, and for more examples of @code{modify-phases}.
+introduced with @code{lambda*}; it looks for the @file{xmllint}
+executable under a @file{/bin} directory among the package's inputs
+(@pxref{package Reference}). It also honors the @code{outputs} parameter
+we have seen before. @xref{Build Utilities}, for more about
+the helpers used by this phase, and for more examples of
+@code{modify-phases}.
@cindex code staging
@cindex staging, of code
@@ -12919,6 +12968,35 @@ guix build coreutils --with-patch=glibc=./glibc-frob.patch
In this example, glibc itself as well as everything that leads to
Coreutils in the dependency graph is rebuilt.
+@cindex configure flags, changing them
+@item --with-configure-flag=@var{package}=@var{flag}
+Append @var{flag} to the configure flags of @var{package}, where
+@var{package} is a spec such as @code{guile@@3.0} or @code{glibc}. The
+build system of @var{package} must support the @code{#:configure-flags}
+argument.
+
+For example, the command below builds GNU@tie{}Hello with the
+configure flag @code{--disable-nls}:
+
+@example
+guix build hello --with-configure-flag=hello=--disable-nls
+@end example
+
+The following command passes an extra flag to @command{cmake} as it
+builds @code{lapack}:
+
+@example
+guix build lapack \
+ --with-configure-flag=lapack=-DBUILD_COMPLEX=OFF
+@end example
+
+@quotation Note
+Under the hood, this option works by passing the
+@samp{#:configure-flags} argument to the build system of the package of
+interest (@pxref{Build Systems}). Most build systems support that
+option but some do not. In that case, an error is raised.
+@end quotation
+
@cindex upstream, latest version
@item --with-latest=@var{package}
@itemx --with-version=@var{package}=@var{version}
@@ -16119,8 +16197,8 @@ requires emulation, using the QEMU program for instance.
@end enumerate
@menu
-* Cross-Compilation:: Cross-compiling for another architecture.
-* Native Builds:: Targeting another architecture through native builds.
+* Cross-Compilation:: Cross-compiling for another architecture.
+* Native Builds:: Targeting another architecture through native builds.
@end menu
@node Cross-Compilation
@@ -17034,6 +17112,10 @@ operating system configuration. See the examples above.
@end defun
+@menu
+* Btrfs file system::
+@end menu
+
@node Btrfs file system
@subsection Btrfs file system
@@ -37140,6 +37222,9 @@ for the hook and the value is the number of threads to run.
@item @code{guile} (default: @code{guile-3.0-latest})
The Guile package with which to run the Guix Build Coordinator.
+@item @code{extra-environment-variables} (default: @var{'()})
+Extra environment variables to set via the shepherd service.
+
@end table
@end deftp
@@ -37172,6 +37257,9 @@ will use the current system it's running on as the default.
@item @code{max-parallel-builds} (default: @code{1})
The number of builds to perform in parallel.
+@item @code{max-parallel-uploads} (default: @code{1})
+The number of uploads to perform in parallel.
+
@item @code{max-allocated-builds} (default: @code{#f})
The maximum number of builds this agent can be allocated.
@@ -41709,9 +41797,9 @@ still in an experimental stage, though.
@menu
* Declaring the Home Environment:: Customizing your Home.
-* Configuring the Shell:: Enabling home environment.
-* Home Services:: Specifying home services.
-* Invoking guix home:: Instantiating a home configuration.
+* Configuring the Shell:: Enabling home environment.
+* Home Services:: Specifying home services.
+* Invoking guix home:: Instantiating a home configuration.
@end menu
@node Declaring the Home Environment
@@ -43115,7 +43203,7 @@ This is the multicast address used by default by the two services above.
@cindex znc
The @uref{https://znc.in, ZNC bouncer} can be run as a daemon to manage
-your IRC presence. With the @code{(gnu home services znc)} service, you
+your IRC presence. With the @code{(gnu home services messaging)} service, you
can configure ZNC to run upon login.
You will have to provide a @file{~/.znc/configs/znc.conf} seperately.
@@ -43727,10 +43815,10 @@ This chapter explains how to define customized system images and how to
turn them into actual bootable images.
@menu
-* image Reference:: Detail of image declarations.
-* Instantiate an Image:: How to instantiate an image record.
-* image-type Reference:: Detail of image types declaration.
-* Image Modules:: Definition of image modules.
+* image Reference:: Detail of image declarations.
+* Instantiate an Image:: How to instantiate an image record.
+* image-type Reference:: Detail of image types declaration.
+* Image Modules:: Definition of image modules.
@end menu
@node image Reference
@@ -43821,6 +43909,10 @@ defaults to @code{true}.
@end table
@end deftp
+@menu
+* partition Reference::
+@end menu
+
@node partition Reference
@subsection @code{partition} Reference
@@ -44665,7 +44757,7 @@ Binaries}).
@menu
* Full-Source Bootstrap:: A Bootstrap worthy of GNU.
-* Preparing to Use the Bootstrap Binaries:: Building that what matters most.
+* Preparing to Use the Bootstrap Binaries:: Building that what matters most.
@end menu
@node Full-Source Bootstrap