# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR Ludovic Courtès # This file is distributed under the same license as the guix package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "#-#-#-#-# contributing.pot (guix 0.16.0tp2) #-#-#-#-#\n" "Project-Id-Version: guix 0.16.0tp2\n" "Report-Msgid-Bugs-To: ludo@gnu.org\n" "POT-Creation-Date: 2018-11-28 22:35+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "#-#-#-#-# guix.pot (guix 0.15.0.3784-e9926-dirty) #-#-#-#-#\n" "Project-Id-Version: guix 0.15.0.3784-e9926-dirty\n" "Report-Msgid-Bugs-To: ludo@gnu.org\n" "POT-Creation-Date: 2018-11-28 11:38+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. #-#-#-#-# contributing.pot (guix 0.16.0tp2) #-#-#-#-# #. type: chapter #. #-#-#-#-# guix.pot (guix 0.15.0.3784-e9926-dirty) #-#-#-#-# #. type: menuentry #: doc/contributing.texi:1 doc/contributing.texi:2 doc/guix.texi:122 #: doc/guix.texi:298 #, no-wrap msgid "Contributing" msgstr "" #. type: Plain text #: doc/contributing.texi:9 msgid "" "This project is a cooperative effort, and we need your help to make it grow! " "Please get in touch with us on @email{guix-devel@@gnu.org} and @code{#guix} " "on the Freenode IRC network. We welcome ideas, bug reports, patches, and " "anything that may be helpful to the project. We particularly welcome help " "on packaging (@pxref{Packaging Guidelines})." msgstr "" #. type: cindex #: doc/contributing.texi:10 #, no-wrap msgid "code of conduct, of contributors" msgstr "" #. type: cindex #: doc/contributing.texi:11 #, no-wrap msgid "contributor covenant" msgstr "" #. type: Plain text #: doc/contributing.texi:17 msgid "" "We want to provide a warm, friendly, and harassment-free environment, so " "that anyone can contribute to the best of their abilities. To this end our " "project uses a ``Contributor Covenant'', which was adapted from @url{http://" "contributor-covenant.org/}. You can find a local version in the @file{CODE-" "OF-CONDUCT} file in the source tree." msgstr "" #. type: Plain text #: doc/contributing.texi:21 msgid "" "Contributors are not required to use their legal name in patches and on-line " "communication; they can use any name or pseudonym of their choice." msgstr "" #. #-#-#-#-# contributing.pot (guix 0.16.0tp2) #-#-#-#-# #. type: section #. #-#-#-#-# guix.pot (guix 0.15.0.3784-e9926-dirty) #-#-#-#-# #. type: menuentry #: doc/contributing.texi:28 doc/contributing.texi:30 doc/contributing.texi:31 #: doc/guix.texi:304 #, no-wrap msgid "Building from Git" msgstr "" #. type: menuentry #: doc/contributing.texi:28 doc/guix.texi:304 msgid "The latest and greatest." msgstr "" #. #-#-#-#-# contributing.pot (guix 0.16.0tp2) #-#-#-#-# #. type: section #. #-#-#-#-# guix.pot (guix 0.15.0.3784-e9926-dirty) #-#-#-#-# #. type: menuentry #: doc/contributing.texi:28 doc/contributing.texi:102 doc/contributing.texi:103 #: doc/guix.texi:304 #, no-wrap msgid "Running Guix Before It Is Installed" msgstr "" #. type: menuentry #: doc/contributing.texi:28 doc/guix.texi:304 msgid "Hacker tricks." msgstr "" #. #-#-#-#-# contributing.pot (guix 0.16.0tp2) #-#-#-#-# #. type: section #. #-#-#-#-# guix.pot (guix 0.15.0.3784-e9926-dirty) #-#-#-#-# #. type: menuentry #: doc/contributing.texi:28 doc/contributing.texi:166 doc/contributing.texi:167 #: doc/guix.texi:304 #, no-wrap msgid "The Perfect Setup" msgstr "" #. type: menuentry #: doc/contributing.texi:28 doc/guix.texi:304 msgid "The right tools." msgstr "" #. #-#-#-#-# contributing.pot (guix 0.16.0tp2) #-#-#-#-# #. type: section #. #-#-#-#-# guix.pot (guix 0.15.0.3784-e9926-dirty) #-#-#-#-# #. type: menuentry #: doc/contributing.texi:28 doc/contributing.texi:226 doc/contributing.texi:227 #: doc/guix.texi:304 doc/guix.texi:306 #, no-wrap msgid "Coding Style" msgstr "" #. type: menuentry #: doc/contributing.texi:28 doc/guix.texi:304 msgid "Hygiene of the contributor." msgstr "" #. #-#-#-#-# contributing.pot (guix 0.16.0tp2) #-#-#-#-# #. type: section #. #-#-#-#-# guix.pot (guix 0.15.0.3784-e9926-dirty) #-#-#-#-# #. type: menuentry #: doc/contributing.texi:28 doc/contributing.texi:324 doc/contributing.texi:325 #: doc/guix.texi:304 #, no-wrap msgid "Submitting Patches" msgstr "" #. type: menuentry #: doc/contributing.texi:28 doc/guix.texi:304 msgid "Share your work." msgstr "" #. type: Plain text #: doc/contributing.texi:35 msgid "" "If you want to hack Guix itself, it is recommended to use the latest version " "from the Git repository:" msgstr "" #. type: example #: doc/contributing.texi:38 #, no-wrap msgid "git clone https://git.savannah.gnu.org/git/guix.git\n" msgstr "" #. type: Plain text #: doc/contributing.texi:43 msgid "" "When building Guix from a checkout, the following packages are required in " "addition to those mentioned in the installation instructions " "(@pxref{Requirements})." msgstr "" #. type: item #: doc/contributing.texi:45 #, no-wrap msgid "@url{http://gnu.org/software/autoconf/, GNU Autoconf};" msgstr "" #. type: item #: doc/contributing.texi:46 #, no-wrap msgid "@url{http://gnu.org/software/automake/, GNU Automake};" msgstr "" #. type: item #: doc/contributing.texi:47 #, no-wrap msgid "@url{http://gnu.org/software/gettext/, GNU Gettext};" msgstr "" #. type: item #: doc/contributing.texi:48 #, no-wrap msgid "@url{http://gnu.org/software/texinfo/, GNU Texinfo};" msgstr "" #. type: item #: doc/contributing.texi:49 #, no-wrap msgid "@url{http://www.graphviz.org/, Graphviz};" msgstr "" #. type: item #: doc/contributing.texi:50 #, no-wrap msgid "@url{http://www.gnu.org/software/help2man/, GNU Help2man (optional)}." msgstr "" #. type: Plain text #: doc/contributing.texi:57 msgid "" "The easiest way to set up a development environment for Guix is, of course, " "by using Guix! The following command starts a new shell where all the " "dependencies and appropriate environment variables are set up to hack on " "Guix:" msgstr "" #. type: example #: doc/contributing.texi:60 #, no-wrap msgid "guix environment guix\n" msgstr "" #. type: Plain text #: doc/contributing.texi:64 msgid "" "@xref{Invoking guix environment}, for more information on that command. " "Extra dependencies can be added with @option{--ad-hoc}:" msgstr "" #. type: example #: doc/contributing.texi:67 #, no-wrap msgid "guix environment guix --ad-hoc help2man git strace\n" msgstr "" #. type: Plain text #: doc/contributing.texi:71 msgid "" "Run @command{./bootstrap} to generate the build system infrastructure using " "Autoconf and Automake. If you get an error like this one:" msgstr "" #. type: example #: doc/contributing.texi:74 #, no-wrap msgid "configure.ac:46: error: possibly undefined macro: PKG_CHECK_MODULES\n" msgstr "" #. type: Plain text #: doc/contributing.texi:83 msgid "" "it probably means that Autoconf couldn’t find @file{pkg.m4}, which is " "provided by pkg-config. Make sure that @file{pkg.m4} is available. The " "same holds for the @file{guile.m4} set of macros provided by Guile. For " "instance, if you installed Automake in @file{/usr/local}, it wouldn’t look " "for @file{.m4} files in @file{/usr/share}. In that case, you have to invoke " "the following command:" msgstr "" #. type: example #: doc/contributing.texi:86 #, no-wrap msgid "export ACLOCAL_PATH=/usr/share/aclocal\n" msgstr "" #. type: Plain text #: doc/contributing.texi:90 msgid "" "@xref{Macro Search Path,,, automake, The GNU Automake Manual}, for more " "information." msgstr "" #. type: Plain text #: doc/contributing.texi:95 msgid "" "Then, run @command{./configure} as usual. Make sure to pass @code{--" "localstatedir=@var{directory}} where @var{directory} is the " "@code{localstatedir} value used by your current installation (@pxref{The " "Store}, for information about this)." msgstr "" #. type: Plain text #: doc/contributing.texi:100 msgid "" "Finally, you have to invoke @code{make check} to run tests (@pxref{Running " "the Test Suite}). If anything fails, take a look at installation " "instructions (@pxref{Installation}) or send a message to the @email{guix-" "devel@@gnu.org, mailing list}." msgstr "" #. type: Plain text #: doc/contributing.texi:109 msgid "" "In order to keep a sane working environment, you will find it useful to test " "the changes made in your local source tree checkout without actually " "installing them. So that you can distinguish between your ``end-user'' hat " "and your ``motley'' costume." msgstr "" #. type: Plain text #: doc/contributing.texi:120 msgid "" "To that end, all the command-line tools can be used even if you have not run " "@code{make install}. To do that, you first need to have an environment with " "all the dependencies available (@pxref{Building from Git}), and then simply " "prefix each command with @command{./pre-inst-env} (the @file{pre-inst-env} " "script lives in the top build tree of Guix; it is generated by @command{./" "configure}), as in@footnote{The @option{-E} flag to @command{sudo} " "guarantees that @code{GUILE_LOAD_PATH} is correctly set such that " "@command{guix-daemon} and the tools it uses can find the Guile modules they " "need.}:" msgstr "" #. type: example #: doc/contributing.texi:124 #, no-wrap msgid "" "$ sudo -E ./pre-inst-env guix-daemon --build-users-group=guixbuild\n" "$ ./pre-inst-env guix build hello\n" msgstr "" #. type: Plain text #: doc/contributing.texi:128 msgid "Similarly, for a Guile session using the Guix modules:" msgstr "" #. type: example #: doc/contributing.texi:131 #, no-wrap msgid "" "$ ./pre-inst-env guile -c '(use-modules (guix utils)) (pk (%current-system))'\n" "\n" msgstr "" #. type: example #: doc/contributing.texi:133 #, no-wrap msgid ";;; (\"x86_64-linux\")\n" msgstr "" #. type: cindex #: doc/contributing.texi:136 #, no-wrap msgid "REPL" msgstr "" #. type: cindex #: doc/contributing.texi:137 #, no-wrap msgid "read-eval-print loop" msgstr "" #. type: Plain text #: doc/contributing.texi:140 msgid "" "@dots{} and for a REPL (@pxref{Using Guile Interactively,,, guile, Guile " "Reference Manual}):" msgstr "" #. type: example #: doc/contributing.texi:155 #, no-wrap msgid "" "$ ./pre-inst-env guile\n" "scheme@@(guile-user)> ,use(guix)\n" "scheme@@(guile-user)> ,use(gnu)\n" "scheme@@(guile-user)> (define snakes\n" " (fold-packages\n" " (lambda (package lst)\n" " (if (string-prefix? \"python\"\n" " (package-name package))\n" " (cons package lst)\n" " lst))\n" " '()))\n" "scheme@@(guile-user)> (length snakes)\n" "$1 = 361\n" msgstr "" #. type: Plain text #: doc/contributing.texi:159 msgid "" "The @command{pre-inst-env} script sets up all the environment variables " "necessary to support this, including @env{PATH} and @env{GUILE_LOAD_PATH}." msgstr "" #. type: Plain text #: doc/contributing.texi:164 msgid "" "Note that @command{./pre-inst-env guix pull} does @emph{not} upgrade the " "local source tree; it simply updates the @file{~/.config/guix/current} " "symlink (@pxref{Invoking guix pull}). Run @command{git pull} instead if you " "want to upgrade your local source tree." msgstr "" #. type: Plain text #: doc/contributing.texi:174 msgid "" "The Perfect Setup to hack on Guix is basically the perfect setup used for " "Guile hacking (@pxref{Using Guile in Emacs,,, guile, Guile Reference " "Manual}). First, you need more than an editor, you need @url{http://www.gnu." "org/software/emacs, Emacs}, empowered by the wonderful @url{http://nongnu." "org/geiser/, Geiser}." msgstr "" #. type: Plain text #: doc/contributing.texi:182 msgid "" "Geiser allows for interactive and incremental development from within Emacs: " "code compilation and evaluation from within buffers, access to on-line " "documentation (docstrings), context-sensitive completion, @kbd{M-.} to jump " "to an object definition, a REPL to try out your code, and more " "(@pxref{Introduction,,, geiser, Geiser User Manual}). For convenient Guix " "development, make sure to augment Guile’s load path so that it finds source " "files from your checkout:" msgstr "" #. type: lisp #: doc/contributing.texi:187 #, no-wrap msgid "" ";; @r{Assuming the Guix checkout is in ~/src/guix.}\n" "(with-eval-after-load 'geiser-guile\n" " (add-to-list 'geiser-guile-load-path \"~/src/guix\"))\n" msgstr "" #. type: Plain text #: doc/contributing.texi:195 msgid "" "To actually edit the code, Emacs already has a neat Scheme mode. But in " "addition to that, you must not miss @url{http://www.emacswiki.org/emacs/" "ParEdit, Paredit}. It provides facilities to directly operate on the syntax " "tree, such as raising an s-expression or wrapping it, swallowing or " "rejecting the following s-expression, etc." msgstr "" #. type: cindex #: doc/contributing.texi:196 #, no-wrap msgid "code snippets" msgstr "" #. type: cindex #: doc/contributing.texi:197 #, no-wrap msgid "templates" msgstr "" #. type: cindex #: doc/contributing.texi:198 #, no-wrap msgid "reducing boilerplate" msgstr "" #. type: Plain text #: doc/contributing.texi:205 msgid "" "We also provide templates for common git commit messages and package " "definitions in the @file{etc/snippets} directory. These templates can be " "used with @url{http://joaotavora.github.io/yasnippet/, YASnippet} to expand " "short trigger strings to interactive text snippets. You may want to add the " "snippets directory to the @var{yas-snippet-dirs} variable in Emacs." msgstr "" #. type: lisp #: doc/contributing.texi:210 #, no-wrap msgid "" ";; @r{Assuming the Guix checkout is in ~/src/guix.}\n" "(with-eval-after-load 'yasnippet\n" " (add-to-list 'yas-snippet-dirs \"~/src/guix/etc/snippets\"))\n" msgstr "" #. type: Plain text #: doc/contributing.texi:218 msgid "" "The commit message snippets depend on @url{https://magit.vc/, Magit} to " "display staged files. When editing a commit message type @code{add} " "followed by @kbd{TAB} to insert a commit message template for adding a " "package; type @code{update} followed by @kbd{TAB} to insert a template for " "updating a package; type @code{https} followed by @kbd{TAB} to insert a " "template for changing the home page URI of a package to HTTPS." msgstr "" #. type: Plain text #: doc/contributing.texi:224 msgid "" "The main snippet for @code{scheme-mode} is triggered by typing " "@code{package...} followed by @kbd{TAB}. This snippet also inserts the " "trigger string @code{origin...}, which can be expanded further. The " "@code{origin} snippet in turn may insert other trigger strings ending on " "@code{...}, which also can be expanded further." msgstr "" #. type: Plain text #: doc/contributing.texi:232 msgid "" "In general our code follows the GNU Coding Standards (@pxref{Top,,, " "standards, GNU Coding Standards}). However, they do not say much about " "Scheme, so here are some additional rules." msgstr "" #. #-#-#-#-# contributing.pot (guix 0.16.0tp2) #-#-#-#-# #. type: subsection #. #-#-#-#-# guix.pot (guix 0.15.0.3784-e9926-dirty) #-#-#-#-# #. type: menuentry #: doc/contributing.texi:238 doc/contributing.texi:240 #: doc/contributing.texi:241 doc/guix.texi:311 #, no-wrap msgid "Programming Paradigm" msgstr "" #. type: menuentry #: doc/contributing.texi:238 doc/guix.texi:311 msgid "How to compose your elements." msgstr "" #. #-#-#-#-# contributing.pot (guix 0.16.0tp2) #-#-#-#-# #. type: subsection #. #-#-#-#-# guix.pot (guix 0.15.0.3784-e9926-dirty) #-#-#-#-# #. type: menuentry #: doc/contributing.texi:238 doc/contributing.texi:247 #: doc/contributing.texi:248 doc/guix.texi:311 #, no-wrap msgid "Modules" msgstr "" #. type: menuentry #: doc/contributing.texi:238 doc/guix.texi:311 msgid "Where to store your code?" msgstr "" #. #-#-#-#-# contributing.pot (guix 0.16.0tp2) #-#-#-#-# #. type: subsection #. #-#-#-#-# guix.pot (guix 0.15.0.3784-e9926-dirty) #-#-#-#-# #. type: menuentry #: doc/contributing.texi:238 doc/contributing.texi:258 #: doc/contributing.texi:259 doc/guix.texi:311 #, no-wrap msgid "Data Types and Pattern Matching" msgstr "" #. type: menuentry #: doc/contributing.texi:238 doc/guix.texi:311 msgid "Implementing data structures." msgstr "" #. #-#-#-#-# contributing.pot (guix 0.16.0tp2) #-#-#-#-# #. type: subsection #. #-#-#-#-# guix.pot (guix 0.15.0.3784-e9926-dirty) #-#-#-#-# #. type: menuentry #: doc/contributing.texi:238 doc/contributing.texi:272 #: doc/contributing.texi:273 doc/guix.texi:311 #, no-wrap msgid "Formatting Code" msgstr "" #. type: menuentry #: doc/contributing.texi:238 doc/guix.texi:311 msgid "Writing conventions." msgstr "" #. type: Plain text #: doc/contributing.texi:246 msgid "" "Scheme code in Guix is written in a purely functional style. One exception " "is code that involves input/output, and procedures that implement low-level " "concepts, such as the @code{memoize} procedure." msgstr "" #. type: Plain text #: doc/contributing.texi:254 msgid "" "Guile modules that are meant to be used on the builder side must live in the " "@code{(guix build @dots{})} name space. They must not refer to other Guix " "or GNU modules. However, it is OK for a ``host-side'' module to use a build-" "side module." msgstr "" #. type: Plain text #: doc/contributing.texi:257 msgid "" "Modules that deal with the broader GNU system should be in the @code{(gnu " "@dots{})} name space rather than @code{(guix @dots{})}." msgstr "" #. type: Plain text #: doc/contributing.texi:266 msgid "" "The tendency in classical Lisp is to use lists to represent everything, and " "then to browse them ``by hand'' using @code{car}, @code{cdr}, @code{cadr}, " "and co. There are several problems with that style, notably the fact that " "it is hard to read, error-prone, and a hindrance to proper type error " "reports." msgstr "" #. type: Plain text #: doc/contributing.texi:271 msgid "" "Guix code should define appropriate data types (for instance, using " "@code{define-record-type*}) rather than abuse lists. In addition, it should " "use pattern matching, via Guile’s @code{(ice-9 match)} module, especially " "when matching lists." msgstr "" #. type: cindex #: doc/contributing.texi:275 #, no-wrap msgid "formatting code" msgstr "" #. type: cindex #: doc/contributing.texi:276 #, no-wrap msgid "coding style" msgstr "" #. type: Plain text #: doc/contributing.texi:283 msgid "" "When writing Scheme code, we follow common wisdom among Scheme programmers. " "In general, we follow the @url{http://mumble.net/~campbell/scheme/style.txt, " "Riastradh's Lisp Style Rules}. This document happens to describe the " "conventions mostly used in Guile’s code too. It is very thoughtful and well " "written, so please do read it." msgstr "" #. type: Plain text #: doc/contributing.texi:290 msgid "" "Some special forms introduced in Guix, such as the @code{substitute*} macro, " "have special indentation rules. These are defined in the @file{.dir-locals." "el} file, which Emacs automatically uses. Also note that Emacs-Guix " "provides @code{guix-devel-mode} mode that indents and highlights Guix code " "properly (@pxref{Development,,, emacs-guix, The Emacs-Guix Reference " "Manual})." msgstr "" #. type: cindex #: doc/contributing.texi:291 #, no-wrap msgid "indentation, of code" msgstr "" #. type: cindex #: doc/contributing.texi:292 #, no-wrap msgid "formatting, of code" msgstr "" #. type: Plain text #: doc/contributing.texi:295 msgid "" "If you do not use Emacs, please make sure to let your editor knows these " "rules. To automatically indent a package definition, you can also run:" msgstr "" #. type: example #: doc/contributing.texi:298 #, no-wrap msgid "./etc/indent-code.el gnu/packages/@var{file}.scm @var{package}\n" msgstr "" #. type: Plain text #: doc/contributing.texi:304 msgid "" "This automatically indents the definition of @var{package} in @file{gnu/" "packages/@var{file}.scm} by running Emacs in batch mode. To indent a whole " "file, omit the second argument:" msgstr "" #. type: example #: doc/contributing.texi:307 #, no-wrap msgid "./etc/indent-code.el gnu/services/@var{file}.scm\n" msgstr "" #. type: cindex #: doc/contributing.texi:309 #, no-wrap msgid "Vim, Scheme code editing" msgstr "" #. type: Plain text #: doc/contributing.texi:315 msgid "" "If you are editing code with Vim, we recommend that you run @code{:set " "autoindent} so that your code is automatically indented as you type. " "Additionally, @uref{https://www.vim.org/scripts/script.php?script_id=3998, " "@code{paredit.vim}} may help you deal with all these parentheses." msgstr "" #. type: Plain text #: doc/contributing.texi:319 msgid "" "We require all top-level procedures to carry a docstring. This requirement " "can be relaxed for simple private procedures in the @code{(guix build " "@dots{})} name space, though." msgstr "" #. type: Plain text #: doc/contributing.texi:322 msgid "" "Procedures should not have more than four positional parameters. Use " "keyword parameters for procedures that take more than four parameters." msgstr "" #. type: Plain text #: doc/contributing.texi:331 msgid "" "Development is done using the Git distributed version control system. Thus, " "access to the repository is not strictly necessary. We welcome " "contributions in the form of patches as produced by @code{git format-patch} " "sent to the @email{guix-patches@@gnu.org} mailing list." msgstr "" #. type: Plain text #: doc/contributing.texi:338 msgid "" "This mailing list is backed by a Debbugs instance accessible at " "@uref{https://bugs.gnu.org/guix-patches}, which allows us to keep track of " "submissions. Each message sent to that mailing list gets a new tracking " "number assigned; people can then follow up on the submission by sending " "email to @code{@var{NNN}@@debbugs.gnu.org}, where @var{NNN} is the tracking " "number (@pxref{Sending a Patch Series})." msgstr "" #. type: Plain text #: doc/contributing.texi:342 msgid "" "Please write commit logs in the ChangeLog format (@pxref{Change Logs,,, " "standards, GNU Coding Standards}); you can check the commit history for " "examples." msgstr "" #. type: Plain text #: doc/contributing.texi:345 msgid "" "Before submitting a patch that adds or modifies a package definition, please " "run through this check list:" msgstr "" #. type: enumerate #: doc/contributing.texi:352 msgid "" "If the authors of the packaged software provide a cryptographic signature " "for the release tarball, make an effort to verify the authenticity of the " "archive. For a detached GPG signature file this would be done with the " "@code{gpg --verify} command." msgstr "" #. type: enumerate #: doc/contributing.texi:356 msgid "" "Take some time to provide an adequate synopsis and description for the " "package. @xref{Synopses and Descriptions}, for some guidelines." msgstr "" #. type: enumerate #: doc/contributing.texi:361 msgid "" "Run @code{guix lint @var{package}}, where @var{package} is the name of the " "new or modified package, and fix any errors it reports (@pxref{Invoking guix " "lint})." msgstr "" #. type: enumerate #: doc/contributing.texi:365 msgid "" "Make sure the package builds on your platform, using @code{guix build " "@var{package}}." msgstr "" #. type: cindex #: doc/contributing.texi:367 #, no-wrap msgid "bundling" msgstr "" #. type: enumerate #: doc/contributing.texi:370 msgid "" "Make sure the package does not use bundled copies of software already " "available as separate packages." msgstr "" #. type: enumerate #: doc/contributing.texi:379 msgid "" "Sometimes, packages include copies of the source code of their dependencies " "as a convenience for users. However, as a distribution, we want to make " "sure that such packages end up using the copy we already have in the " "distribution, if there is one. This improves resource usage (the dependency " "is built and stored only once), and allows the distribution to make " "transverse changes such as applying security updates for a given software " "package in a single place and have them affect the whole system---something " "that bundled copies prevent." msgstr "" #. type: enumerate #: doc/contributing.texi:386 msgid "" "Take a look at the profile reported by @command{guix size} (@pxref{Invoking " "guix size}). This will allow you to notice references to other packages " "unwillingly retained. It may also help determine whether to split the " "package (@pxref{Packages with Multiple Outputs}), and which optional " "dependencies should be used." msgstr "" #. type: enumerate #: doc/contributing.texi:391 msgid "" "For important changes, check that dependent package (if applicable) are not " "affected by the change; @code{guix refresh --list-dependent @var{package}} " "will help you do that (@pxref{Invoking guix refresh})." msgstr "" #. type: cindex #: doc/contributing.texi:393 #, no-wrap msgid "branching strategy" msgstr "" #. type: cindex #: doc/contributing.texi:394 #, no-wrap msgid "rebuild scheduling strategy" msgstr "" #. type: enumerate #: doc/contributing.texi:397 msgid "" "Depending on the number of dependent packages and thus the amount of " "rebuilding induced, commits go to different branches, along these lines:" msgstr "" #. type: item #: doc/contributing.texi:399 #, no-wrap msgid "300 dependent packages or less" msgstr "" #. type: table #: doc/contributing.texi:401 msgid "@code{master} branch (non-disruptive changes)." msgstr "" #. type: item #: doc/contributing.texi:402 #, no-wrap msgid "between 300 and 1,200 dependent packages" msgstr "" #. type: table #: doc/contributing.texi:407 msgid "" "@code{staging} branch (non-disruptive changes). This branch is intended to " "be merged in @code{master} every 3 weeks or so. Topical changes (e.g., an " "update of the GNOME stack) can instead go to a specific branch (say, " "@code{gnome-updates})." msgstr "" #. type: item #: doc/contributing.texi:408 #, no-wrap msgid "more than 1,200 dependent packages" msgstr "" #. type: table #: doc/contributing.texi:412 msgid "" "@code{core-updates} branch (may include major and potentially disruptive " "changes). This branch is intended to be merged in @code{master} every 2.5 " "months or so." msgstr "" #. type: enumerate #: doc/contributing.texi:419 msgid "" "All these branches are @uref{https://hydra.gnu.org/project/gnu, tracked by " "our build farm} and merged into @code{master} once everything has been " "successfully built. This allows us to fix issues before they hit users, and " "to reduce the window during which pre-built binaries are not available." msgstr "" #. type: enumerate #: doc/contributing.texi:426 msgid "" "Generally, branches other than @code{master} are considered @emph{frozen} if " "there has been a recent evaluation, or there is a corresponding @code{-next} " "branch. Please ask on the mailing list or IRC if unsure where to place a " "patch." msgstr "" #. type: cindex #: doc/contributing.texi:428 #, no-wrap msgid "determinism, of build processes" msgstr "" #. type: cindex #: doc/contributing.texi:429 #, no-wrap msgid "reproducible builds, checking" msgstr "" #. type: enumerate #: doc/contributing.texi:433 msgid "" "Check whether the package's build process is deterministic. This typically " "means checking whether an independent build of the package yields the exact " "same result that you obtained, bit for bit." msgstr "" #. type: enumerate #: doc/contributing.texi:436 msgid "" "A simple way to do that is by building the same package several times in a " "row on your machine (@pxref{Invoking guix build}):" msgstr "" #. type: example #: doc/contributing.texi:439 #, no-wrap msgid "guix build --rounds=2 my-package\n" msgstr "" #. type: enumerate #: doc/contributing.texi:443 msgid "" "This is enough to catch a class of common non-determinism issues, such as " "timestamps or randomly-generated output in the build result." msgstr "" #. type: enumerate #: doc/contributing.texi:453 msgid "" "Another option is to use @command{guix challenge} (@pxref{Invoking guix " "challenge}). You may run it once the package has been committed and built " "by @code{hydra.gnu.org} to check whether it obtains the same result as you " "did. Better yet: Find another machine that can build it and run " "@command{guix publish}. Since the remote build machine is likely different " "from yours, this can catch non-determinism issues related to the hardware---" "e.g., use of different instruction set extensions---or to the operating " "system kernel---e.g., reliance on @code{uname} or @file{/proc} files." msgstr "" #. type: enumerate #: doc/contributing.texi:459 msgid "" "When writing documentation, please use gender-neutral wording when referring " "to people, such as @uref{https://en.wikipedia.org/wiki/Singular_they, " "singular ``they''@comma{} ``their''@comma{} ``them''}, and so forth." msgstr "" #. type: enumerate #: doc/contributing.texi:463 msgid "" "Verify that your patch contains only one set of related changes. Bundling " "unrelated changes together makes reviewing harder and slower." msgstr "" #. type: enumerate #: doc/contributing.texi:466 msgid "" "Examples of unrelated changes include the addition of several packages, or a " "package update along with fixes to that package." msgstr "" #. type: enumerate #: doc/contributing.texi:471 msgid "" "Please follow our code formatting rules, possibly running the @command{etc/" "indent-code.el} script to do that automatically for you (@pxref{Formatting " "Code})." msgstr "" #. type: enumerate #: doc/contributing.texi:479 msgid "" "When possible, use mirrors in the source URL (@pxref{Invoking guix " "download}). Use reliable URLs, not generated ones. For instance, GitHub " "archives are not necessarily identical from one generation to the next, so " "in this case it's often better to clone the repository. Don't use the " "@command{name} field in the URL: it is not very useful and if the name " "changes, the URL will probably be wrong." msgstr "" #. type: Plain text #: doc/contributing.texi:489 msgid "" "When posting a patch to the mailing list, use @samp{[PATCH] @dots{}} as a " "subject. You may use your email client or the @command{git send-email} " "command (@pxref{Sending a Patch Series}). We prefer to get patches in plain " "text messages, either inline or as MIME attachments. You are advised to pay " "attention if your email client changes anything like line breaks or " "indentation which could potentially break the patches." msgstr "" #. type: Plain text #: doc/contributing.texi:492 msgid "" "When a bug is resolved, please close the thread by sending an email to " "@email{@var{NNN}-done@@debbugs.gnu.org}." msgstr "" #. type: anchor{#1} #: doc/contributing.texi:493 doc/contributing.texi:495 #, no-wrap msgid "Sending a Patch Series" msgstr "" #. type: cindex #: doc/contributing.texi:495 #, no-wrap msgid "patch series" msgstr "" #. type: code{#1} #: doc/contributing.texi:496 #, no-wrap msgid "git send-email" msgstr "" #. type: code{#1} #: doc/contributing.texi:497 #, no-wrap msgid "git-send-email" msgstr "" #. type: Plain text #: doc/contributing.texi:505 msgid "" "When sending a patch series (e.g., using @code{git send-email}), please " "first send one message to @email{guix-patches@@gnu.org}, and then send " "subsequent patches to @email{@var{NNN}@@debbugs.gnu.org} to make sure they " "are kept together. See @uref{https://debbugs.gnu.org/Advanced.html, the " "Debbugs documentation} for more information." msgstr "" #. type: Plain text #: doc/guix.texi:7 msgid "@documentencoding UTF-8" msgstr "" #. type: title #: doc/guix.texi:7 doc/guix.texi:83 #, no-wrap msgid "GNU Guix Reference Manual" msgstr "" #. type: include #: doc/guix.texi:10 #, no-wrap msgid "version.texi" msgstr "" #. type: copying #: doc/guix.texi:57 msgid "" "Copyright @copyright{} 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic " "Courtès@* Copyright @copyright{} 2013, 2014, 2016 Andreas Enge@* Copyright " "@copyright{} 2013 Nikita Karetnikov@* Copyright @copyright{} 2014, 2015, " "2016 Alex Kost@* Copyright @copyright{} 2015, 2016 Mathieu Lirzin@* " "Copyright @copyright{} 2014 Pierre-Antoine Rault@* Copyright @copyright{} " "2015 Taylan Ulrich Bayırlı/Kammer@* Copyright @copyright{} 2015, 2016, 2017 " "Leo Famulari@* Copyright @copyright{} 2015, 2016, 2017, 2018 Ricardo " "Wurmus@* Copyright @copyright{} 2016 Ben Woodcroft@* Copyright @copyright{} " "2016, 2017, 2018 Chris Marusich@* Copyright @copyright{} 2016, 2017, 2018 " "Efraim Flashner@* Copyright @copyright{} 2016 John Darrington@* Copyright " "@copyright{} 2016, 2017 Nils Gillmann@* Copyright @copyright{} 2016, 2017, " "2018 Jan Nieuwenhuizen@* Copyright @copyright{} 2016 Julien Lepiller@* " "Copyright @copyright{} 2016 Alex ter Weele@* Copyright @copyright{} 2017, " "2018 Clément Lassieur@* Copyright @copyright{} 2017, 2018 Mathieu Othacehe@* " "Copyright @copyright{} 2017 Federico Beffa@* Copyright @copyright{} 2017, " "2018 Carlo Zancanaro@* Copyright @copyright{} 2017 Thomas Danckaert@* " "Copyright @copyright{} 2017 humanitiesNerd@* Copyright @copyright{} 2017 " "Christopher Allan Webber@* Copyright @copyright{} 2017, 2018 Marius Bakke@* " "Copyright @copyright{} 2017 Hartmut Goebel@* Copyright @copyright{} 2017 " "Maxim Cournoyer@* Copyright @copyright{} 2017, 2018 Tobias Geerinckx-Rice@* " "Copyright @copyright{} 2017 George Clemmer@* Copyright @copyright{} 2017 " "Andy Wingo@* Copyright @copyright{} 2017, 2018 Arun Isaac@* Copyright " "@copyright{} 2017 nee@* Copyright @copyright{} 2018 Rutger Helling@* " "Copyright @copyright{} 2018 Oleg Pykhalov@* Copyright @copyright{} 2018 Mike " "Gerwitz@* Copyright @copyright{} 2018 Pierre-Antoine Rouby@* Copyright " "@copyright{} 2018 Gábor Boskovits@* Copyright @copyright{} 2018 Florian " "Pelz@* Copyright @copyright{} 2018 Laura Lazzati@* Copyright @copyright{} " "2018 Alex Vong@*" msgstr "" #. type: copying #: doc/guix.texi:64 msgid "" "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''." msgstr "" #. type: dircategory #: doc/guix.texi:66 #, no-wrap msgid "System administration" msgstr "" #. type: menuentry #: doc/guix.texi:73 msgid "Guix: (guix)" msgstr "" #. type: menuentry #: doc/guix.texi:73 msgid "Manage installed software and system configuration." msgstr "" #. type: menuentry #: doc/guix.texi:73 msgid "guix package: (guix)Invoking guix package" msgstr "" #. type: menuentry #: doc/guix.texi:73 msgid "Installing, removing, and upgrading packages." msgstr "" #. type: menuentry #: doc/guix.texi:73 msgid "guix gc: (guix)Invoking guix gc" msgstr "" #. type: menuentry #: doc/guix.texi:73 msgid "Reclaiming unused disk space." msgstr "" #. type: menuentry #: doc/guix.texi:73 msgid "guix pull: (guix)Invoking guix pull" msgstr "" #. type: menuentry #: doc/guix.texi:73 msgid "Update the list of available packages." msgstr "" #. type: menuentry #: doc/guix.texi:73 msgid "guix system: (guix)Invoking guix system" msgstr "" #. type: menuentry #: doc/guix.texi:73 msgid "Manage the operating system configuration." msgstr "" #. type: dircategory #: doc/guix.texi:75 #, no-wrap msgid "Software development" msgstr "" #. type: menuentry #: doc/guix.texi:80 msgid "guix environment: (guix)Invoking guix environment" msgstr "" #. type: menuentry #: doc/guix.texi:80 msgid "Building development environments with Guix." msgstr "" #. type: menuentry #: doc/guix.texi:80 msgid "guix build: (guix)Invoking guix build" msgstr "" #. type: menuentry #: doc/guix.texi:80 msgid "Building packages." msgstr "" #. type: menuentry #: doc/guix.texi:80 msgid "guix pack: (guix)Invoking guix pack" msgstr "" #. type: menuentry #: doc/guix.texi:80 msgid "Creating binary bundles." msgstr "" #. type: subtitle #: doc/guix.texi:84 #, no-wrap msgid "Using the GNU Guix Functional Package Manager" msgstr "" #. type: author #: doc/guix.texi:85 #, no-wrap msgid "The GNU Guix Developers" msgstr "" #. type: titlepage #: doc/guix.texi:91 msgid "Edition @value{EDITION} @* @value{UPDATED} @*" msgstr "" #. type: node #: doc/guix.texi:98 #, no-wrap msgid "Top" msgstr "" #. type: top #: doc/guix.texi:99 #, no-wrap msgid "GNU Guix" msgstr "" #. type: Plain text #: doc/guix.texi:103 msgid "" "This document describes GNU Guix version @value{VERSION}, a functional " "package management tool written for the GNU system." msgstr "" #. type: Plain text #: doc/guix.texi:113 msgid "" "This manual is also available in French (@pxref{Top,,, guix.fr, Manuel de " "référence de GNU Guix}) and German (@pxref{Top,,, guix.de, Referenzhandbuch " "zu GNU Guix}). If you would like to translate it in your native language, " "consider joining the @uref{https://translationproject.org/domain/guix-manual." "html, Translation Project}." msgstr "" #. type: chapter #: doc/guix.texi:122 doc/guix.texi:316 doc/guix.texi:317 #, no-wrap msgid "Introduction" msgstr "" #. type: menuentry #: doc/guix.texi:122 msgid "What is Guix about?" msgstr "" #. type: chapter #: doc/guix.texi:122 doc/guix.texi:132 doc/guix.texi:390 doc/guix.texi:391 #, no-wrap msgid "Installation" msgstr "" #. type: menuentry #: doc/guix.texi:122 msgid "Installing Guix." msgstr "" #. type: chapter #: doc/guix.texi:122 doc/guix.texi:147 doc/guix.texi:1695 doc/guix.texi:1696 #, no-wrap msgid "Package Management" msgstr "" #. type: menuentry #: doc/guix.texi:122 msgid "Package installation, upgrade, etc." msgstr "" #. type: chapter #: doc/guix.texi:122 doc/guix.texi:170 doc/guix.texi:3687 doc/guix.texi:3688 #, no-wrap msgid "Programming Interface" msgstr "" #. type: menuentry #: doc/guix.texi:122 msgid "Using Guix in Scheme." msgstr "" #. type: chapter #: doc/guix.texi:122 doc/guix.texi:185 doc/guix.texi:6129 doc/guix.texi:6130 #, no-wrap msgid "Utilities" msgstr "" #. type: menuentry #: doc/guix.texi:122 msgid "Package management commands." msgstr "" #. type: chapter #: doc/guix.texi:122 doc/guix.texi:211 doc/guix.texi:8915 doc/guix.texi:8916 #, no-wrap msgid "GNU Distribution" msgstr "" #. type: menuentry #: doc/guix.texi:122 msgid "Software for your friendly GNU system." msgstr "" #. type: menuentry #: doc/guix.texi:122 msgid "Your help needed!" msgstr "" #. type: chapter #: doc/guix.texi:127 doc/guix.texi:24347 doc/guix.texi:24348 #, no-wrap msgid "Acknowledgments" msgstr "" #. type: menuentry #: doc/guix.texi:127 msgid "Thanks!" msgstr "" #. type: appendix #: doc/guix.texi:127 doc/guix.texi:24369 doc/guix.texi:24370 #, no-wrap msgid "GNU Free Documentation License" msgstr "" #. type: menuentry #: doc/guix.texi:127 msgid "The license of this manual." msgstr "" #. type: unnumbered #: doc/guix.texi:127 doc/guix.texi:24375 doc/guix.texi:24376 #, no-wrap msgid "Concept Index" msgstr "" #. type: menuentry #: doc/guix.texi:127 msgid "Concepts." msgstr "" #. type: unnumbered #: doc/guix.texi:127 doc/guix.texi:24379 doc/guix.texi:24380 #, no-wrap msgid "Programming Index" msgstr "" #. type: menuentry #: doc/guix.texi:127 msgid "Data types, functions, and variables." msgstr "" #. type: menuentry #: doc/guix.texi:130 msgid "--- The Detailed Node Listing ---" msgstr "" #. type: section #: doc/guix.texi:139 doc/guix.texi:424 doc/guix.texi:426 doc/guix.texi:427 #, no-wrap msgid "Binary Installation" msgstr "" #. type: menuentry #: doc/guix.texi:139 doc/guix.texi:424 msgid "Getting Guix running in no time!" msgstr "" #. type: section #: doc/guix.texi:139 doc/guix.texi:424 doc/guix.texi:630 doc/guix.texi:631 #, no-wrap msgid "Requirements" msgstr "" #. type: menuentry #: doc/guix.texi:139 doc/guix.texi:424 msgid "Software needed to build and run Guix." msgstr "" #. type: section #: doc/guix.texi:139 doc/guix.texi:424 doc/guix.texi:717 doc/guix.texi:718 #, no-wrap msgid "Running the Test Suite" msgstr "" #. type: menuentry #: doc/guix.texi:139 doc/guix.texi:424 msgid "Testing Guix." msgstr "" #. type: section #: doc/guix.texi:139 doc/guix.texi:141 doc/guix.texi:424 doc/guix.texi:782 #: doc/guix.texi:783 #, no-wrap msgid "Setting Up the Daemon" msgstr "" #. type: menuentry #: doc/guix.texi:139 doc/guix.texi:424 msgid "Preparing the build daemon's environment." msgstr "" #. type: node #: doc/guix.texi:139 doc/guix.texi:424 doc/guix.texi:1215 #, no-wrap msgid "Invoking guix-daemon" msgstr "" #. type: menuentry #: doc/guix.texi:139 doc/guix.texi:424 msgid "Running the build daemon." msgstr "" #. type: section #: doc/guix.texi:139 doc/guix.texi:424 doc/guix.texi:1484 doc/guix.texi:1485 #, no-wrap msgid "Application Setup" msgstr "" #. type: menuentry #: doc/guix.texi:139 doc/guix.texi:424 msgid "Application-specific setup." msgstr "" #. type: subsection #: doc/guix.texi:145 doc/guix.texi:802 doc/guix.texi:804 doc/guix.texi:805 #, no-wrap msgid "Build Environment Setup" msgstr "" #. type: menuentry #: doc/guix.texi:145 doc/guix.texi:802 msgid "Preparing the isolated build environment." msgstr "" #. type: node #: doc/guix.texi:145 doc/guix.texi:802 doc/guix.texi:921 #, no-wrap msgid "Daemon Offload Setup" msgstr "" #. type: menuentry #: doc/guix.texi:145 doc/guix.texi:802 msgid "Offloading builds to remote machines." msgstr "" #. type: subsection #: doc/guix.texi:145 doc/guix.texi:802 doc/guix.texi:1129 doc/guix.texi:1130 #, no-wrap msgid "SELinux Support" msgstr "" #. type: menuentry #: doc/guix.texi:145 doc/guix.texi:802 msgid "Using an SELinux policy for the daemon." msgstr "" #. type: section #: doc/guix.texi:159 doc/guix.texi:1728 doc/guix.texi:1730 doc/guix.texi:1731 #, no-wrap msgid "Features" msgstr "" #. type: menuentry #: doc/guix.texi:159 doc/guix.texi:1728 msgid "How Guix will make your life brighter." msgstr "" #. type: node #: doc/guix.texi:159 doc/guix.texi:1728 doc/guix.texi:1816 #, no-wrap msgid "Invoking guix package" msgstr "" #. type: menuentry #: doc/guix.texi:159 doc/guix.texi:1728 msgid "Package installation, removal, etc." msgstr "" #. type: section #: doc/guix.texi:159 doc/guix.texi:161 doc/guix.texi:1728 doc/guix.texi:2300 #: doc/guix.texi:2301 #, no-wrap msgid "Substitutes" msgstr "" #. type: menuentry #: doc/guix.texi:159 doc/guix.texi:1728 msgid "Downloading pre-built binaries." msgstr "" #. type: section #: doc/guix.texi:159 doc/guix.texi:1728 doc/guix.texi:2533 doc/guix.texi:2534 #, no-wrap msgid "Packages with Multiple Outputs" msgstr "" #. type: menuentry #: doc/guix.texi:159 doc/guix.texi:1728 msgid "Single source package, multiple outputs." msgstr "" #. type: node #: doc/guix.texi:159 doc/guix.texi:1728 doc/guix.texi:2587 #, no-wrap msgid "Invoking guix gc" msgstr "" #. type: menuentry #: doc/guix.texi:159 doc/guix.texi:1728 msgid "Running the garbage collector." msgstr "" #. type: node #: doc/guix.texi:159 doc/guix.texi:1728 doc/guix.texi:2775 #, no-wrap msgid "Invoking guix pull" msgstr "" #. type: menuentry #: doc/guix.texi:159 doc/guix.texi:1728 msgid "Fetching the latest Guix and distribution." msgstr "" #. type: section #: doc/guix.texi:159 doc/guix.texi:1728 doc/guix.texi:2916 doc/guix.texi:2917 #, no-wrap msgid "Channels" msgstr "" #. type: menuentry #: doc/guix.texi:159 doc/guix.texi:1728 msgid "Customizing the package collection." msgstr "" #. type: section #: doc/guix.texi:159 doc/guix.texi:1728 doc/guix.texi:3086 doc/guix.texi:3087 #, no-wrap msgid "Inferiors" msgstr "" #. type: menuentry #: doc/guix.texi:159 doc/guix.texi:1728 msgid "Interacting with another revision of Guix." msgstr "" #. type: node #: doc/guix.texi:159 doc/guix.texi:1728 doc/guix.texi:3214 #, no-wrap msgid "Invoking guix describe" msgstr "" #. type: menuentry #: doc/guix.texi:159 doc/guix.texi:1728 msgid "Display information about your Guix revision." msgstr "" #. type: node #: doc/guix.texi:159 doc/guix.texi:1728 doc/guix.texi:3295 #, no-wrap msgid "Invoking guix pack" msgstr "" #. type: menuentry #: doc/guix.texi:159 doc/guix.texi:1728 msgid "Creating software bundles." msgstr "" #. type: node #: doc/guix.texi:159 doc/guix.texi:1728 doc/guix.texi:3522 #, no-wrap msgid "Invoking guix archive" msgstr "" #. type: menuentry #: doc/guix.texi:159 doc/guix.texi:1728 msgid "Exporting and importing store files." msgstr "" #. type: subsection #: doc/guix.texi:168 doc/guix.texi:2323 doc/guix.texi:2325 doc/guix.texi:2326 #, no-wrap msgid "Official Substitute Server" msgstr "" #. type: menuentry #: doc/guix.texi:168 doc/guix.texi:2323 msgid "One particular source of substitutes." msgstr "" #. type: subsection #: doc/guix.texi:168 doc/guix.texi:2323 doc/guix.texi:2355 doc/guix.texi:2356 #, no-wrap msgid "Substitute Server Authorization" msgstr "" #. type: menuentry #: doc/guix.texi:168 doc/guix.texi:2323 msgid "How to enable or disable substitutes." msgstr "" #. type: subsection #: doc/guix.texi:168 doc/guix.texi:2323 doc/guix.texi:2428 doc/guix.texi:2429 #, no-wrap msgid "Substitute Authentication" msgstr "" #. type: menuentry #: doc/guix.texi:168 doc/guix.texi:2323 msgid "How Guix verifies substitutes." msgstr "" #. type: subsection #: doc/guix.texi:168 doc/guix.texi:2323 doc/guix.texi:2463 doc/guix.texi:2464 #, no-wrap msgid "Proxy Settings" msgstr "" #. type: menuentry #: doc/guix.texi:168 doc/guix.texi:2323 msgid "How to get substitutes via proxy." msgstr "" #. type: subsection #: doc/guix.texi:168 doc/guix.texi:2323 doc/guix.texi:2475 doc/guix.texi:2476 #, no-wrap msgid "Substitution Failure" msgstr "" #. type: menuentry #: doc/guix.texi:168 doc/guix.texi:2323 msgid "What happens when substitution fails." msgstr "" #. type: subsection #: doc/guix.texi:168 doc/guix.texi:2323 doc/guix.texi:2503 doc/guix.texi:2504 #, no-wrap msgid "On Trusting Binaries" msgstr "" #. type: menuentry #: doc/guix.texi:168 doc/guix.texi:2323 msgid "How can you trust that binary blob?" msgstr "" #. type: section #: doc/guix.texi:178 doc/guix.texi:180 doc/guix.texi:3723 doc/guix.texi:3725 #: doc/guix.texi:3726 #, no-wrap msgid "Defining Packages" msgstr "" #. type: menuentry #: doc/guix.texi:178 doc/guix.texi:3723 msgid "Defining new packages." msgstr "" #. type: section #: doc/guix.texi:178 doc/guix.texi:3723 doc/guix.texi:4189 doc/guix.texi:4190 #, no-wrap msgid "Build Systems" msgstr "" #. type: menuentry #: doc/guix.texi:178 doc/guix.texi:3723 msgid "Specifying how packages are built." msgstr "" #. type: section #: doc/guix.texi:178 doc/guix.texi:3723 doc/guix.texi:4856 doc/guix.texi:4857 #, no-wrap msgid "The Store" msgstr "" #. type: menuentry #: doc/guix.texi:178 doc/guix.texi:3723 msgid "Manipulating the package store." msgstr "" #. type: section #: doc/guix.texi:178 doc/guix.texi:3723 doc/guix.texi:5006 doc/guix.texi:5007 #, no-wrap msgid "Derivations" msgstr "" #. type: menuentry #: doc/guix.texi:178 doc/guix.texi:3723 msgid "Low-level interface to package derivations." msgstr "" #. type: section #: doc/guix.texi:178 doc/guix.texi:3723 doc/guix.texi:5187 doc/guix.texi:5188 #, no-wrap msgid "The Store Monad" msgstr "" #. type: menuentry #: doc/guix.texi:178 doc/guix.texi:3723 msgid "Purely functional interface to the store." msgstr "" #. type: section #: doc/guix.texi:178 doc/guix.texi:3723 doc/guix.texi:5502 doc/guix.texi:5503 #, no-wrap msgid "G-Expressions" msgstr "" #. type: menuentry #: doc/guix.texi:178 doc/guix.texi:3723 msgid "Manipulating build expressions." msgstr "" #. type: node #: doc/guix.texi:178 doc/guix.texi:3723 doc/guix.texi:6076 #, no-wrap msgid "Invoking guix repl" msgstr "" #. type: menuentry #: doc/guix.texi:178 doc/guix.texi:3723 msgid "Fiddling with Guix interactively." msgstr "" #. type: node #: doc/guix.texi:183 doc/guix.texi:3971 doc/guix.texi:3974 #, no-wrap msgid "package Reference" msgstr "" #. type: menuentry #: doc/guix.texi:183 doc/guix.texi:3971 msgid "The package data type." msgstr "" #. type: node #: doc/guix.texi:183 doc/guix.texi:3971 doc/guix.texi:4101 #, no-wrap msgid "origin Reference" msgstr "" #. type: menuentry #: doc/guix.texi:183 doc/guix.texi:3971 msgid "The origin data type." msgstr "" #. type: node #: doc/guix.texi:202 doc/guix.texi:6154 doc/guix.texi:6156 #, no-wrap msgid "Invoking guix build" msgstr "" #. type: menuentry #: doc/guix.texi:202 doc/guix.texi:6154 msgid "Building packages from the command line." msgstr "" #. type: node #: doc/guix.texi:202 doc/guix.texi:6154 doc/guix.texi:6746 #, no-wrap msgid "Invoking guix edit" msgstr "" #. type: menuentry #: doc/guix.texi:202 doc/guix.texi:6154 msgid "Editing package definitions." msgstr "" #. type: node #: doc/guix.texi:202 doc/guix.texi:6154 doc/guix.texi:6772 #, no-wrap msgid "Invoking guix download" msgstr "" #. type: menuentry #: doc/guix.texi:202 doc/guix.texi:6154 msgid "Downloading a file and printing its hash." msgstr "" #. type: node #: doc/guix.texi:202 doc/guix.texi:6154 doc/guix.texi:6825 #, no-wrap msgid "Invoking guix hash" msgstr "" #. type: menuentry #: doc/guix.texi:202 doc/guix.texi:6154 msgid "Computing the cryptographic hash of a file." msgstr "" #. type: node #: doc/guix.texi:202 doc/guix.texi:6154 doc/guix.texi:6887 #, no-wrap msgid "Invoking guix import" msgstr "" #. type: menuentry #: doc/guix.texi:202 doc/guix.texi:6154 msgid "Importing package definitions." msgstr "" #. type: node #: doc/guix.texi:202 doc/guix.texi:6154 doc/guix.texi:7292 #, no-wrap msgid "Invoking guix refresh" msgstr "" #. type: menuentry #: doc/guix.texi:202 doc/guix.texi:6154 msgid "Updating package definitions." msgstr "" #. type: node #: doc/guix.texi:202 doc/guix.texi:6154 doc/guix.texi:7569 #, no-wrap msgid "Invoking guix lint" msgstr "" #. type: menuentry #: doc/guix.texi:202 doc/guix.texi:6154 msgid "Finding errors in package definitions." msgstr "" #. type: node #: doc/guix.texi:202 doc/guix.texi:6154 doc/guix.texi:7678 #, no-wrap msgid "Invoking guix size" msgstr "" #. type: menuentry #: doc/guix.texi:202 doc/guix.texi:6154 msgid "Profiling disk usage." msgstr "" #. type: node #: doc/guix.texi:202 doc/guix.texi:6154 doc/guix.texi:7802 #, no-wrap msgid "Invoking guix graph" msgstr "" #. type: menuentry #: doc/guix.texi:202 doc/guix.texi:6154 msgid "Visualizing the graph of packages." msgstr "" #. type: node #: doc/guix.texi:202 doc/guix.texi:6154 doc/guix.texi:7988 #, no-wrap msgid "Invoking guix environment" msgstr "" #. type: menuentry #: doc/guix.texi:202 doc/guix.texi:6154 msgid "Setting up development environments." msgstr "" #. type: node #: doc/guix.texi:202 doc/guix.texi:6154 doc/guix.texi:8307 #, no-wrap msgid "Invoking guix publish" msgstr "" #. type: menuentry #: doc/guix.texi:202 doc/guix.texi:6154 msgid "Sharing substitutes." msgstr "" #. type: node #: doc/guix.texi:202 doc/guix.texi:6154 doc/guix.texi:8524 #, no-wrap msgid "Invoking guix challenge" msgstr "" #. type: menuentry #: doc/guix.texi:202 doc/guix.texi:6154 msgid "Challenging substitute servers." msgstr "" #. type: node #: doc/guix.texi:202 doc/guix.texi:6154 doc/guix.texi:8663 #, no-wrap msgid "Invoking guix copy" msgstr "" #. type: menuentry #: doc/guix.texi:202 doc/guix.texi:6154 msgid "Copying to and from a remote store." msgstr "" #. type: node #: doc/guix.texi:202 doc/guix.texi:6154 doc/guix.texi:8726 #, no-wrap msgid "Invoking guix container" msgstr "" #. type: menuentry #: doc/guix.texi:202 doc/guix.texi:6154 msgid "Process isolation." msgstr "" #. type: node #: doc/guix.texi:202 doc/guix.texi:6154 doc/guix.texi:8780 #, no-wrap msgid "Invoking guix weather" msgstr "" #. type: menuentry #: doc/guix.texi:202 doc/guix.texi:6154 msgid "Assessing substitute availability." msgstr "" #. type: node #: doc/guix.texi:202 doc/guix.texi:6154 doc/guix.texi:8858 #, no-wrap msgid "Invoking guix processes" msgstr "" #. type: menuentry #: doc/guix.texi:202 doc/guix.texi:6154 msgid "Listing client processes." msgstr "" #. type: section #: doc/guix.texi:204 doc/guix.texi:6157 #, no-wrap msgid "Invoking @command{guix build}" msgstr "" #. type: subsection #: doc/guix.texi:209 doc/guix.texi:6208 doc/guix.texi:6210 doc/guix.texi:6211 #, no-wrap msgid "Common Build Options" msgstr "" #. type: menuentry #: doc/guix.texi:209 doc/guix.texi:6208 msgid "Build options for most commands." msgstr "" #. type: subsection #: doc/guix.texi:209 doc/guix.texi:6208 doc/guix.texi:6356 doc/guix.texi:6357 #, no-wrap msgid "Package Transformation Options" msgstr "" #. type: menuentry #: doc/guix.texi:209 doc/guix.texi:6208 msgid "Creating variants of packages." msgstr "" #. type: subsection #: doc/guix.texi:209 doc/guix.texi:6208 doc/guix.texi:6456 doc/guix.texi:6457 #, no-wrap msgid "Additional Build Options" msgstr "" #. type: menuentry #: doc/guix.texi:209 doc/guix.texi:6208 msgid "Options specific to 'guix build'." msgstr "" #. type: subsection #: doc/guix.texi:209 doc/guix.texi:6208 doc/guix.texi:6666 doc/guix.texi:6667 #, no-wrap msgid "Debugging Build Failures" msgstr "" #. type: menuentry #: doc/guix.texi:209 doc/guix.texi:6208 msgid "Real life packaging experience." msgstr "" #. type: section #: doc/guix.texi:221 doc/guix.texi:223 doc/guix.texi:8987 doc/guix.texi:8992 #: doc/guix.texi:8993 #, no-wrap msgid "System Installation" msgstr "" #. type: menuentry #: doc/guix.texi:221 doc/guix.texi:8987 msgid "Installing the whole operating system." msgstr "" #. type: section #: doc/guix.texi:221 doc/guix.texi:233 doc/guix.texi:8987 doc/guix.texi:9636 #: doc/guix.texi:9637 #, no-wrap msgid "System Configuration" msgstr "" #. type: menuentry #: doc/guix.texi:221 doc/guix.texi:8987 msgid "Configuring the operating system." msgstr "" #. type: section #: doc/guix.texi:221 doc/guix.texi:8987 doc/guix.texi:23352 doc/guix.texi:23353 #, no-wrap msgid "Documentation" msgstr "" #. type: menuentry #: doc/guix.texi:221 doc/guix.texi:8987 msgid "Browsing software user manuals." msgstr "" #. type: section #: doc/guix.texi:221 doc/guix.texi:8987 doc/guix.texi:23416 doc/guix.texi:23417 #, no-wrap msgid "Installing Debugging Files" msgstr "" #. type: menuentry #: doc/guix.texi:221 doc/guix.texi:8987 msgid "Feeding the debugger." msgstr "" #. type: section #: doc/guix.texi:221 doc/guix.texi:8987 doc/guix.texi:23482 doc/guix.texi:23483 #, no-wrap msgid "Security Updates" msgstr "" #. type: menuentry #: doc/guix.texi:221 doc/guix.texi:8987 msgid "Deploying security fixes quickly." msgstr "" #. type: section #: doc/guix.texi:221 doc/guix.texi:8987 doc/guix.texi:23602 doc/guix.texi:23603 #, no-wrap msgid "Package Modules" msgstr "" #. type: menuentry #: doc/guix.texi:221 doc/guix.texi:8987 msgid "Packages from the programmer's viewpoint." msgstr "" #. type: section #: doc/guix.texi:221 doc/guix.texi:287 doc/guix.texi:8987 doc/guix.texi:23664 #: doc/guix.texi:23665 #, no-wrap msgid "Packaging Guidelines" msgstr "" #. type: menuentry #: doc/guix.texi:221 doc/guix.texi:8987 msgid "Growing the distribution." msgstr "" #. type: section #: doc/guix.texi:221 doc/guix.texi:8987 doc/guix.texi:24115 doc/guix.texi:24116 #, no-wrap msgid "Bootstrapping" msgstr "" #. type: menuentry #: doc/guix.texi:221 doc/guix.texi:8987 msgid "GNU/Linux built from scratch." msgstr "" #. type: node #: doc/guix.texi:221 doc/guix.texi:8987 doc/guix.texi:24299 #, no-wrap msgid "Porting" msgstr "" #. type: menuentry #: doc/guix.texi:221 doc/guix.texi:8987 msgid "Targeting another platform or kernel." msgstr "" #. type: subsection #: doc/guix.texi:231 doc/guix.texi:1165 doc/guix.texi:9024 doc/guix.texi:9026 #: doc/guix.texi:9027 #, no-wrap msgid "Limitations" msgstr "" #. type: menuentry #: doc/guix.texi:231 doc/guix.texi:9024 msgid "What you can expect." msgstr "" #. type: subsection #: doc/guix.texi:231 doc/guix.texi:9024 doc/guix.texi:9070 doc/guix.texi:9071 #, no-wrap msgid "Hardware Considerations" msgstr "" #. type: menuentry #: doc/guix.texi:231 doc/guix.texi:9024 msgid "Supported hardware." msgstr "" #. type: subsection #: doc/guix.texi:231 doc/guix.texi:9024 doc/guix.texi:9105 doc/guix.texi:9106 #, no-wrap msgid "USB Stick and DVD Installation" msgstr "" #. type: menuentry #: doc/guix.texi:231 doc/guix.texi:9024 msgid "Preparing the installation medium." msgstr "" #. type: subsection #: doc/guix.texi:231 doc/guix.texi:9024 doc/guix.texi:9204 doc/guix.texi:9205 #, no-wrap msgid "Preparing for Installation" msgstr "" #. type: menuentry #: doc/guix.texi:231 doc/guix.texi:9024 msgid "Networking, partitioning, etc." msgstr "" #. type: subsection #: doc/guix.texi:231 doc/guix.texi:9024 doc/guix.texi:9454 doc/guix.texi:9455 #, no-wrap msgid "Proceeding with the Installation" msgstr "" #. type: menuentry #: doc/guix.texi:231 doc/guix.texi:9024 msgid "The real thing." msgstr "" #. type: node #: doc/guix.texi:231 doc/guix.texi:9024 doc/guix.texi:9551 #, no-wrap msgid "Installing GuixSD in a VM" msgstr "" #. type: menuentry #: doc/guix.texi:231 doc/guix.texi:9024 msgid "GuixSD playground." msgstr "" #. type: subsection #: doc/guix.texi:231 doc/guix.texi:9024 doc/guix.texi:9605 doc/guix.texi:9606 #, no-wrap msgid "Building the Installation Image" msgstr "" #. type: menuentry #: doc/guix.texi:231 doc/guix.texi:9024 msgid "How this comes to be." msgstr "" #. type: subsection #: doc/guix.texi:249 doc/guix.texi:9677 doc/guix.texi:9679 doc/guix.texi:9680 #, no-wrap msgid "Using the Configuration System" msgstr "" #. type: menuentry #: doc/guix.texi:249 doc/guix.texi:9677 msgid "Customizing your GNU system." msgstr "" #. type: node #: doc/guix.texi:249 doc/guix.texi:9677 doc/guix.texi:9915 #, no-wrap msgid "operating-system Reference" msgstr "" #. type: menuentry #: doc/guix.texi:249 doc/guix.texi:9677 msgid "Detail of operating-system declarations." msgstr "" #. type: subsection #: doc/guix.texi:249 doc/guix.texi:9677 doc/guix.texi:10069 doc/guix.texi:10070 #, no-wrap msgid "File Systems" msgstr "" #. type: menuentry #: doc/guix.texi:249 doc/guix.texi:9677 msgid "Configuring file system mounts." msgstr "" #. type: subsection #: doc/guix.texi:249 doc/guix.texi:9677 doc/guix.texi:10234 doc/guix.texi:10235 #, no-wrap msgid "Mapped Devices" msgstr "" #. type: menuentry #: doc/guix.texi:249 doc/guix.texi:9677 msgid "Block device extra processing." msgstr "" #. type: subsection #: doc/guix.texi:249 doc/guix.texi:9677 doc/guix.texi:10355 doc/guix.texi:10356 #, no-wrap msgid "User Accounts" msgstr "" #. type: menuentry #: doc/guix.texi:249 doc/guix.texi:9677 msgid "Specifying user accounts." msgstr "" #. type: subsection #: doc/guix.texi:249 doc/guix.texi:1492 doc/guix.texi:9677 doc/guix.texi:10490 #: doc/guix.texi:10491 #, no-wrap msgid "Locales" msgstr "" #. type: menuentry #: doc/guix.texi:249 doc/guix.texi:9677 msgid "Language and cultural convention settings." msgstr "" #. type: subsection #: doc/guix.texi:249 doc/guix.texi:251 doc/guix.texi:9677 doc/guix.texi:10630 #: doc/guix.texi:10631 #, no-wrap msgid "Services" msgstr "" #. type: menuentry #: doc/guix.texi:249 doc/guix.texi:9677 msgid "Specifying system services." msgstr "" #. type: subsection #: doc/guix.texi:249 doc/guix.texi:9677 doc/guix.texi:21649 doc/guix.texi:21650 #, no-wrap msgid "Setuid Programs" msgstr "" #. type: menuentry #: doc/guix.texi:249 doc/guix.texi:9677 msgid "Programs running with root privileges." msgstr "" #. type: subsection #: doc/guix.texi:249 doc/guix.texi:1637 doc/guix.texi:9677 doc/guix.texi:21695 #: doc/guix.texi:21696 #, no-wrap msgid "X.509 Certificates" msgstr "" #. type: menuentry #: doc/guix.texi:249 doc/guix.texi:9677 msgid "Authenticating HTTPS servers." msgstr "" #. type: subsection #: doc/guix.texi:249 doc/guix.texi:1535 doc/guix.texi:9677 doc/guix.texi:21758 #: doc/guix.texi:21759 #, no-wrap msgid "Name Service Switch" msgstr "" #. type: menuentry #: doc/guix.texi:249 doc/guix.texi:9677 msgid "Configuring libc's name service switch." msgstr "" #. type: subsection #: doc/guix.texi:249 doc/guix.texi:9677 doc/guix.texi:21896 doc/guix.texi:21897 #, no-wrap msgid "Initial RAM Disk" msgstr "" #. type: menuentry #: doc/guix.texi:249 doc/guix.texi:9677 msgid "Linux-Libre bootstrapping." msgstr "" #. type: subsection #: doc/guix.texi:249 doc/guix.texi:9677 doc/guix.texi:22056 doc/guix.texi:22057 #, no-wrap msgid "Bootloader Configuration" msgstr "" #. type: menuentry #: doc/guix.texi:249 doc/guix.texi:9677 msgid "Configuring the boot loader." msgstr "" #. type: node #: doc/guix.texi:249 doc/guix.texi:9677 doc/guix.texi:22240 #, no-wrap msgid "Invoking guix system" msgstr "" #. type: menuentry #: doc/guix.texi:249 doc/guix.texi:9677 msgid "Instantiating a system configuration." msgstr "" #. type: node #: doc/guix.texi:249 doc/guix.texi:9677 doc/guix.texi:22665 #, no-wrap msgid "Running GuixSD in a VM" msgstr "" #. type: menuentry #: doc/guix.texi:249 doc/guix.texi:9677 msgid "How to run GuixSD in a virtual machine." msgstr "" #. type: subsection #: doc/guix.texi:249 doc/guix.texi:280 doc/guix.texi:9677 doc/guix.texi:22776 #: doc/guix.texi:22777 #, no-wrap msgid "Defining Services" msgstr "" #. type: menuentry #: doc/guix.texi:249 doc/guix.texi:9677 msgid "Adding new service definitions." msgstr "" #. type: subsubsection #: doc/guix.texi:278 doc/guix.texi:10706 doc/guix.texi:10708 #: doc/guix.texi:10709 #, no-wrap msgid "Base Services" msgstr "" #. type: menuentry #: doc/guix.texi:278 doc/guix.texi:10706 msgid "Essential system services." msgstr "" #. type: subsubsection #: doc/guix.texi:278 doc/guix.texi:10706 doc/guix.texi:11518 #: doc/guix.texi:11519 #, no-wrap msgid "Scheduled Job Execution" msgstr "" #. type: menuentry #: doc/guix.texi:278 doc/guix.texi:10706 msgid "The mcron service." msgstr "" #. type: subsubsection #: doc/guix.texi:278 doc/guix.texi:10706 doc/guix.texi:11628 #: doc/guix.texi:11629 #, no-wrap msgid "Log Rotation" msgstr "" #. type: menuentry #: doc/guix.texi:278 doc/guix.texi:10706 msgid "The rottlog service." msgstr "" #. type: subsubsection #: doc/guix.texi:278 doc/guix.texi:10706 doc/guix.texi:11730 #: doc/guix.texi:11731 #, no-wrap msgid "Networking Services" msgstr "" #. type: menuentry #: doc/guix.texi:278 doc/guix.texi:10706 msgid "Network setup, SSH daemon, etc." msgstr "" #. type: subsubsection #: doc/guix.texi:278 doc/guix.texi:10706 doc/guix.texi:12645 #: doc/guix.texi:12646 #, no-wrap msgid "X Window" msgstr "" #. type: menuentry #: doc/guix.texi:278 doc/guix.texi:10706 msgid "Graphical display." msgstr "" #. type: subsubsection #: doc/guix.texi:278 doc/guix.texi:10706 doc/guix.texi:12929 #: doc/guix.texi:12930 #, no-wrap msgid "Printing Services" msgstr "" #. type: menuentry #: doc/guix.texi:278 doc/guix.texi:10706 msgid "Local and remote printer support." msgstr "" #. type: subsubsection #: doc/guix.texi:278 doc/guix.texi:10706 doc/guix.texi:13770 #: doc/guix.texi:13771 #, no-wrap msgid "Desktop Services" msgstr "" #. type: menuentry #: doc/guix.texi:278 doc/guix.texi:10706 msgid "D-Bus and desktop services." msgstr "" #. type: subsubsection #: doc/guix.texi:278 doc/guix.texi:10706 doc/guix.texi:14078 #: doc/guix.texi:14079 #, no-wrap msgid "Sound Services" msgstr "" #. type: menuentry #: doc/guix.texi:278 doc/guix.texi:10706 msgid "ALSA and Pulseaudio services." msgstr "" #. type: subsubsection #: doc/guix.texi:278 doc/guix.texi:10706 doc/guix.texi:14159 #: doc/guix.texi:14160 #, no-wrap msgid "Database Services" msgstr "" #. type: menuentry #: doc/guix.texi:278 doc/guix.texi:10706 msgid "SQL databases, key-value stores, etc." msgstr "" #. type: subsubsection #: doc/guix.texi:278 doc/guix.texi:10706 doc/guix.texi:14283 #: doc/guix.texi:14284 #, no-wrap msgid "Mail Services" msgstr "" #. type: menuentry #: doc/guix.texi:278 doc/guix.texi:10706 msgid "IMAP, POP3, SMTP, and all that." msgstr "" #. type: subsubsection #: doc/guix.texi:278 doc/guix.texi:10706 doc/guix.texi:15754 #: doc/guix.texi:15755 #, no-wrap msgid "Messaging Services" msgstr "" #. type: menuentry #: doc/guix.texi:278 doc/guix.texi:10706 msgid "Messaging services." msgstr "" #. type: subsubsection #: doc/guix.texi:278 doc/guix.texi:10706 doc/guix.texi:16225 #: doc/guix.texi:16226 #, no-wrap msgid "Telephony Services" msgstr "" #. type: menuentry #: doc/guix.texi:278 doc/guix.texi:10706 msgid "Telephony services." msgstr "" #. type: subsubsection #: doc/guix.texi:278 doc/guix.texi:10706 doc/guix.texi:16430 #: doc/guix.texi:16431 #, no-wrap msgid "Monitoring Services" msgstr "" #. type: menuentry #: doc/guix.texi:278 doc/guix.texi:10706 msgid "Monitoring services." msgstr "" #. type: subsubsection #: doc/guix.texi:278 doc/guix.texi:10706 doc/guix.texi:16616 #: doc/guix.texi:16617 #, no-wrap msgid "Kerberos Services" msgstr "" #. type: menuentry #: doc/guix.texi:278 doc/guix.texi:10706 msgid "Kerberos services." msgstr "" #. type: subsubsection #: doc/guix.texi:278 doc/guix.texi:10706 doc/guix.texi:16742 #: doc/guix.texi:16743 #, no-wrap msgid "Web Services" msgstr "" #. type: menuentry #: doc/guix.texi:278 doc/guix.texi:10706 msgid "Web servers." msgstr "" #. type: subsubsection #: doc/guix.texi:278 doc/guix.texi:10706 doc/guix.texi:17541 #: doc/guix.texi:17542 #, no-wrap msgid "Certificate Services" msgstr "" #. type: menuentry #: doc/guix.texi:278 doc/guix.texi:10706 msgid "TLS certificates via Let's Encrypt." msgstr "" #. type: subsubsection #: doc/guix.texi:278 doc/guix.texi:10706 doc/guix.texi:17687 #: doc/guix.texi:17688 #, no-wrap msgid "DNS Services" msgstr "" #. type: menuentry #: doc/guix.texi:278 doc/guix.texi:10706 msgid "DNS daemons." msgstr "" #. type: subsubsection #: doc/guix.texi:278 doc/guix.texi:10706 doc/guix.texi:18256 #: doc/guix.texi:18257 #, no-wrap msgid "VPN Services" msgstr "" #. type: menuentry #: doc/guix.texi:278 doc/guix.texi:10706 msgid "VPN daemons." msgstr "" #. type: subsubsection #: doc/guix.texi:278 doc/guix.texi:10706 doc/guix.texi:18614 #: doc/guix.texi:18615 #, no-wrap msgid "Network File System" msgstr "" #. type: menuentry #: doc/guix.texi:278 doc/guix.texi:10706 msgid "NFS related services." msgstr "" #. type: subsubsection #: doc/guix.texi:278 doc/guix.texi:10706 doc/guix.texi:18729 #: doc/guix.texi:18730 #, no-wrap msgid "Continuous Integration" msgstr "" #. type: menuentry #: doc/guix.texi:278 doc/guix.texi:10706 msgid "The Cuirass service." msgstr "" #. type: subsubsection #: doc/guix.texi:278 doc/guix.texi:10706 doc/guix.texi:18846 #: doc/guix.texi:18847 #, no-wrap msgid "Power Management Services" msgstr "" #. type: menuentry #: doc/guix.texi:278 doc/guix.texi:10706 msgid "Extending battery life." msgstr "" #. type: subsubsection #: doc/guix.texi:278 doc/guix.texi:10706 doc/guix.texi:19380 #: doc/guix.texi:19381 #, no-wrap msgid "Audio Services" msgstr "" #. type: menuentry #: doc/guix.texi:278 doc/guix.texi:10706 msgid "The MPD." msgstr "" #. type: node #: doc/guix.texi:278 doc/guix.texi:10706 doc/guix.texi:19430 #, no-wrap msgid "Virtualization Services" msgstr "" #. type: menuentry #: doc/guix.texi:278 doc/guix.texi:10706 msgid "Virtualization services." msgstr "" #. type: subsubsection #: doc/guix.texi:278 doc/guix.texi:10706 doc/guix.texi:20223 #: doc/guix.texi:20224 #, no-wrap msgid "Version Control Services" msgstr "" #. type: menuentry #: doc/guix.texi:278 doc/guix.texi:10706 msgid "Providing remote access to Git repositories." msgstr "" #. type: subsubsection #: doc/guix.texi:278 doc/guix.texi:10706 doc/guix.texi:21411 #: doc/guix.texi:21412 #, no-wrap msgid "Game Services" msgstr "" #. type: menuentry #: doc/guix.texi:278 doc/guix.texi:10706 msgid "Game servers." msgstr "" #. type: subsubsection #: doc/guix.texi:278 doc/guix.texi:10706 doc/guix.texi:21442 #: doc/guix.texi:21443 #, no-wrap msgid "Miscellaneous Services" msgstr "" #. type: menuentry #: doc/guix.texi:278 doc/guix.texi:10706 msgid "Other services." msgstr "" #. type: subsubsection #: doc/guix.texi:285 doc/guix.texi:22788 doc/guix.texi:22790 #: doc/guix.texi:22791 #, no-wrap msgid "Service Composition" msgstr "" #. type: menuentry #: doc/guix.texi:285 doc/guix.texi:22788 msgid "The model for composing services." msgstr "" #. type: subsubsection #: doc/guix.texi:285 doc/guix.texi:22788 doc/guix.texi:22846 #: doc/guix.texi:22847 #, no-wrap msgid "Service Types and Services" msgstr "" #. type: menuentry #: doc/guix.texi:285 doc/guix.texi:22788 msgid "Types and services." msgstr "" #. type: subsubsection #: doc/guix.texi:285 doc/guix.texi:22788 doc/guix.texi:22983 #: doc/guix.texi:22984 #, no-wrap msgid "Service Reference" msgstr "" #. type: menuentry #: doc/guix.texi:285 doc/guix.texi:22788 msgid "API reference." msgstr "" #. type: subsubsection #: doc/guix.texi:285 doc/guix.texi:22788 doc/guix.texi:23208 #: doc/guix.texi:23209 #, no-wrap msgid "Shepherd Services" msgstr "" #. type: menuentry #: doc/guix.texi:285 doc/guix.texi:22788 msgid "A particular type of service." msgstr "" #. type: subsection #: doc/guix.texi:296 doc/guix.texi:23739 doc/guix.texi:23741 #: doc/guix.texi:23742 #, no-wrap msgid "Software Freedom" msgstr "" #. type: menuentry #: doc/guix.texi:296 doc/guix.texi:23739 msgid "What may go into the distribution." msgstr "" #. type: subsection #: doc/guix.texi:296 doc/guix.texi:23739 doc/guix.texi:23769 #: doc/guix.texi:23770 #, no-wrap msgid "Package Naming" msgstr "" #. type: menuentry #: doc/guix.texi:296 doc/guix.texi:23739 msgid "What's in a name?" msgstr "" #. type: subsection #: doc/guix.texi:296 doc/guix.texi:23739 doc/guix.texi:23794 #: doc/guix.texi:23795 #, no-wrap msgid "Version Numbers" msgstr "" #. type: menuentry #: doc/guix.texi:296 doc/guix.texi:23739 msgid "When the name is not enough." msgstr "" #. type: subsection #: doc/guix.texi:296 doc/guix.texi:23739 doc/guix.texi:23885 #: doc/guix.texi:23886 #, no-wrap msgid "Synopses and Descriptions" msgstr "" #. type: menuentry #: doc/guix.texi:296 doc/guix.texi:23739 msgid "Helping users find the right package." msgstr "" #. type: subsection #: doc/guix.texi:296 doc/guix.texi:23739 doc/guix.texi:23965 #: doc/guix.texi:23966 #, no-wrap msgid "Python Modules" msgstr "" #. type: menuentry #: doc/guix.texi:296 doc/guix.texi:23739 msgid "A touch of British comedy." msgstr "" #. type: subsection #: doc/guix.texi:296 doc/guix.texi:23739 doc/guix.texi:24040 #: doc/guix.texi:24041 #, no-wrap msgid "Perl Modules" msgstr "" #. type: menuentry #: doc/guix.texi:296 doc/guix.texi:23739 msgid "Little pearls." msgstr "" #. type: subsection #: doc/guix.texi:296 doc/guix.texi:23739 doc/guix.texi:24056 #: doc/guix.texi:24057 #, no-wrap msgid "Java Packages" msgstr "" #. type: menuentry #: doc/guix.texi:296 doc/guix.texi:23739 msgid "Coffee break." msgstr "" #. type: subsection #: doc/guix.texi:296 doc/guix.texi:23739 doc/guix.texi:24076 #: doc/guix.texi:24077 #, no-wrap msgid "Fonts" msgstr "" #. type: menuentry #: doc/guix.texi:296 doc/guix.texi:23739 msgid "Fond of fonts." msgstr "" #. type: cindex #: doc/guix.texi:319 #, no-wrap msgid "purpose" msgstr "" #. type: Plain text #: doc/guix.texi:326 msgid "" "GNU Guix@footnote{``Guix'' is pronounced like ``geeks'', or ``ɡiːks'' using " "the international phonetic alphabet (IPA).} is a package management tool for " "the GNU system. Guix makes it easy for unprivileged users to install, " "upgrade, or remove packages, to roll back to a previous package set, to " "build packages from source, and generally assists with the creation and " "maintenance of software environments." msgstr "" #. type: cindex #: doc/guix.texi:327 #, no-wrap msgid "user interfaces" msgstr "" #. type: Plain text #: doc/guix.texi:332 msgid "" "Guix provides a command-line package management interface (@pxref{Invoking " "guix package}), a set of command-line utilities (@pxref{Utilities}), as well " "as Scheme programming interfaces (@pxref{Programming Interface})." msgstr "" #. type: cindex #: doc/guix.texi:332 #, no-wrap msgid "build daemon" msgstr "" #. type: Plain text #: doc/guix.texi:336 msgid "" "Its @dfn{build daemon} is responsible for building packages on behalf of " "users (@pxref{Setting Up the Daemon}) and for downloading pre-built binaries " "from authorized sources (@pxref{Substitutes})." msgstr "" #. type: cindex #: doc/guix.texi:337 #, no-wrap msgid "extensibility of the distribution" msgstr "" #. type: cindex #: doc/guix.texi:338 doc/guix.texi:23624 #, no-wrap msgid "customization, of packages" msgstr "" #. type: Plain text #: doc/guix.texi:347 msgid "" "Guix includes package definitions for many GNU and non-GNU packages, all of " "which @uref{https://www.gnu.org/philosophy/free-sw.html, respect the user's " "computing freedom}. It is @emph{extensible}: users can write their own " "package definitions (@pxref{Defining Packages}) and make them available as " "independent package modules (@pxref{Package Modules}). It is also " "@emph{customizable}: users can @emph{derive} specialized package definitions " "from existing ones, including from the command line (@pxref{Package " "Transformation Options})." msgstr "" #. type: cindex #: doc/guix.texi:348 doc/guix.texi:8918 doc/guix.texi:8996 #, no-wrap msgid "Guix System Distribution" msgstr "" #. type: cindex #: doc/guix.texi:349 doc/guix.texi:8919 #, no-wrap msgid "GuixSD" msgstr "" #. type: Plain text #: doc/guix.texi:358 msgid "" "You can install GNU@tie{}Guix on top of an existing GNU/Linux system where " "it complements the available tools without interference " "(@pxref{Installation}), or you can use it as part of the standalone " "@dfn{Guix System Distribution} or GuixSD (@pxref{GNU Distribution}). With " "GNU@tie{}GuixSD, you @emph{declare} all aspects of the operating system " "configuration and Guix takes care of instantiating the configuration in a " "transactional, reproducible, and stateless fashion (@pxref{System " "Configuration})." msgstr "" #. type: cindex #: doc/guix.texi:359 #, no-wrap msgid "functional package management" msgstr "" #. type: cindex #: doc/guix.texi:360 #, no-wrap msgid "isolation" msgstr "" #. type: Plain text #: doc/guix.texi:375 msgid "" "Under the hood, Guix implements the @dfn{functional package management} " "discipline pioneered by Nix (@pxref{Acknowledgments}). In Guix, the package " "build and installation process is seen as a @emph{function}, in the " "mathematical sense. That function takes inputs, such as build scripts, a " "compiler, and libraries, and returns an 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. It cannot alter the environment of the running system 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 isolated environments (or @dfn{containers}), where only their explicit " "inputs are visible." msgstr "" #. type: cindex #: doc/guix.texi:376 doc/guix.texi:4859 #, no-wrap msgid "store" msgstr "" #. type: Plain text #: doc/guix.texi:383 msgid "" "The result of package build functions is @dfn{cached} in the file system, in " "a special directory called @dfn{the store} (@pxref{The Store}). Each " "package is installed in a directory of its own in the store---by default " "under @file{/gnu/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." msgstr "" #. type: Plain text #: doc/guix.texi:387 msgid "" "This approach is the foundation for the salient features of Guix: support " "for transactional package upgrade and rollback, per-user installation, and " "garbage collection of packages (@pxref{Features})." msgstr "" #. type: cindex #: doc/guix.texi:393 #, no-wrap msgid "installing Guix" msgstr "" #. type: cindex #: doc/guix.texi:394 #, no-wrap msgid "official website" msgstr "" #. type: Plain text #: doc/guix.texi:399 msgid "" "GNU Guix is available for download from its website at @url{http://www.gnu." "org/software/guix/}. This section describes the software requirements of " "Guix, as well as how to install it and get ready to use it." msgstr "" #. type: Plain text #: doc/guix.texi:404 msgid "" "Note that this section is concerned with the installation of the package " "manager, which can be done on top of a running GNU/Linux system. If, " "instead, you want to install the complete GNU operating system, " "@pxref{System Installation}." msgstr "" #. type: cindex #: doc/guix.texi:405 doc/guix.texi:1487 #, no-wrap msgid "foreign distro" msgstr "" #. type: cindex #: doc/guix.texi:406 #, no-wrap msgid "directories related to foreign distro" msgstr "" #. type: Plain text #: doc/guix.texi:413 msgid "" "When installed on a running GNU/Linux system---thereafter called a " "@dfn{foreign distro}---GNU@tie{}Guix complements the available tools without " "interference. Its data lives exclusively in two directories, usually @file{/" "gnu/store} and @file{/var/guix}; other files on your system, such as @file{/" "etc}, are left untouched." msgstr "" #. type: Plain text #: doc/guix.texi:416 msgid "" "Once installed, Guix can be updated by running @command{guix pull} " "(@pxref{Invoking guix pull})." msgstr "" #. type: cindex #: doc/guix.texi:429 #, no-wrap msgid "installing Guix from binaries" msgstr "" #. type: cindex #: doc/guix.texi:430 #, no-wrap msgid "installer script" msgstr "" #. type: Plain text #: doc/guix.texi:436 msgid "" "This section describes how to install Guix on an arbitrary system from a " "self-contained tarball providing binaries for Guix and for all its " "dependencies. This is often quicker than installing from source, which is " "described in the next sections. The only requirement is to have GNU@tie{}" "tar and Xz." msgstr "" #. type: Plain text #: doc/guix.texi:441 msgid "" "We provide a @uref{https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-" "install.sh, shell installer script}, which automates the download, " "installation, and initial configuration of Guix. It should be run as the " "root user." msgstr "" #. type: Plain text #: doc/guix.texi:443 msgid "Installing goes along these lines:" msgstr "" #. type: cindex #: doc/guix.texi:446 #, no-wrap msgid "downloading Guix binary" msgstr "" #. type: enumerate #: doc/guix.texi:451 msgid "" "Download the binary tarball from @indicateurl{https://alpha.gnu.org/gnu/guix/" "guix-binary-@value{VERSION}.@var{system}.tar.xz}, where @var{system} is " "@code{x86_64-linux} for an @code{x86_64} machine already running the kernel " "Linux, and so on." msgstr "" #. type: enumerate #: doc/guix.texi:455 msgid "" "Make sure to download the associated @file{.sig} file and to verify the " "authenticity of the tarball against it, along these lines:" msgstr "" #. type: example #: doc/guix.texi:459 #, no-wrap msgid "" "$ wget https://alpha.gnu.org/gnu/guix/guix-binary-@value{VERSION}.@var{system}.tar.xz.sig\n" "$ gpg --verify guix-binary-@value{VERSION}.@var{system}.tar.xz.sig\n" msgstr "" #. type: Plain text #: doc/guix.texi:463 doc/guix.texi:9132 msgid "" "If that command fails because you do not have the required public key, then " "run this command to import it:" msgstr "" #. type: example #: doc/guix.texi:467 doc/guix.texi:9136 #, no-wrap msgid "" "$ gpg --keyserver @value{KEY-SERVER} \\\n" " --recv-keys @value{OPENPGP-SIGNING-KEY-ID}\n" msgstr "" #. type: Plain text #: doc/guix.texi:472 doc/guix.texi:9141 msgid "and rerun the @code{gpg --verify} command." msgstr "" #. type: enumerate #: doc/guix.texi:476 msgid "" "Now, you need to become the @code{root} user. Depending on your " "distribution, you may have to run @code{su -} or @code{sudo -i}. As " "@code{root}, run:" msgstr "" #. type: example #: doc/guix.texi:482 #, no-wrap msgid "" "# cd /tmp\n" "# tar --warning=no-timestamp -xf \\\n" " guix-binary-@value{VERSION}.@var{system}.tar.xz\n" "# mv var/guix /var/ && mv gnu /\n" msgstr "" #. type: enumerate #: doc/guix.texi:487 msgid "" "This creates @file{/gnu/store} (@pxref{The Store}) and @file{/var/guix}. " "The latter contains a ready-to-use profile for @code{root} (see next step.)" msgstr "" #. type: enumerate #: doc/guix.texi:490 msgid "" "Do @emph{not} unpack the tarball on a working Guix system since that would " "overwrite its own essential files." msgstr "" #. type: enumerate #: doc/guix.texi:500 msgid "" "The @code{--warning=no-timestamp} option makes sure GNU@tie{}tar does not " "emit warnings about ``implausibly old time stamps'' (such warnings were " "triggered by GNU@tie{}tar 1.26 and older; recent versions are fine.) They " "stem from the fact that all the files in the archive have their modification " "time set to zero (which means January 1st, 1970.) This is done on purpose " "to make sure the archive content is independent of its creation time, thus " "making it reproducible." msgstr "" #. type: enumerate #: doc/guix.texi:504 msgid "" "Make the profile available under @file{~root/.config/guix/current}, which is " "where @command{guix pull} will install updates (@pxref{Invoking guix pull}):" msgstr "" #. type: example #: doc/guix.texi:509 #, no-wrap msgid "" "# mkdir -p ~root/.config/guix\n" "# ln -sf /var/guix/profiles/per-user/root/current-guix \\\n" " ~root/.config/guix/current\n" msgstr "" #. type: enumerate #: doc/guix.texi:513 msgid "" "Source @file{etc/profile} to augment @code{PATH} and other relevant " "environment variables:" msgstr "" #. type: example #: doc/guix.texi:517 #, no-wrap msgid "" "# GUIX_PROFILE=\"`echo ~root`/.config/guix/current\" ; \\\n" " source $GUIX_PROFILE/etc/profile\n" msgstr "" #. type: enumerate #: doc/guix.texi:522 msgid "" "Create the group and user accounts for build users as explained below " "(@pxref{Build Environment Setup})." msgstr "" #. type: enumerate #: doc/guix.texi:525 msgid "Run the daemon, and set it to automatically start on boot." msgstr "" #. type: enumerate #: doc/guix.texi:528 msgid "" "If your host distro uses the systemd init system, this can be achieved with " "these commands:" msgstr "" #. type: example #: doc/guix.texi:540 #, no-wrap msgid "" "# cp ~root/.config/guix/current/lib/systemd/system/guix-daemon.service \\\n" " /etc/systemd/system/\n" "# systemctl start guix-daemon && systemctl enable guix-daemon\n" msgstr "" #. type: itemize #: doc/guix.texi:543 doc/guix.texi:8514 msgid "If your host distro uses the Upstart init system:" msgstr "" #. type: example #: doc/guix.texi:549 #, no-wrap msgid "" "# initctl reload-configuration\n" "# cp ~root/.config/guix/current/lib/upstart/system/guix-daemon.conf \\\n" " /etc/init/\n" "# start guix-daemon\n" msgstr "" #. type: enumerate #: doc/guix.texi:552 msgid "Otherwise, you can still start the daemon manually with:" msgstr "" #. type: example #: doc/guix.texi:556 #, no-wrap msgid "" "# ~root/.config/guix/current/bin/guix-daemon \\\n" " --build-users-group=guixbuild\n" msgstr "" #. type: enumerate #: doc/guix.texi:561 msgid "" "Make the @command{guix} command available to other users on the machine, for " "instance with:" msgstr "" #. type: example #: doc/guix.texi:566 #, no-wrap msgid "" "# mkdir -p /usr/local/bin\n" "# cd /usr/local/bin\n" "# ln -s /var/guix/profiles/per-user/root/current-guix/bin/guix\n" msgstr "" #. type: enumerate #: doc/guix.texi:570 msgid "" "It is also a good idea to make the Info version of this manual available " "there:" msgstr "" #. type: example #: doc/guix.texi:576 #, no-wrap msgid "" "# mkdir -p /usr/local/share/info\n" "# cd /usr/local/share/info\n" "# for i in /var/guix/profiles/per-user/root/current-guix/share/info/* ;\n" " do ln -s $i ; done\n" msgstr "" #. type: enumerate #: doc/guix.texi:582 msgid "" "That way, assuming @file{/usr/local/share/info} is in the search path, " "running @command{info guix} will open this manual (@pxref{Other Info " "Directories,,, texinfo, GNU Texinfo}, for more details on changing the Info " "search path.)" msgstr "" #. type: cindex #: doc/guix.texi:584 doc/guix.texi:2359 doc/guix.texi:11213 #, no-wrap msgid "substitutes, authorization thereof" msgstr "" #. type: enumerate #: doc/guix.texi:587 msgid "" "To use substitutes from @code{hydra.gnu.org} or one of its mirrors " "(@pxref{Substitutes}), authorize them:" msgstr "" #. type: example #: doc/guix.texi:591 #, no-wrap msgid "" "# guix archive --authorize < \\\n" " ~root/.config/guix/current/share/guix/hydra.gnu.org.pub\n" msgstr "" #. type: enumerate #: doc/guix.texi:596 msgid "" "Each user may need to perform a few additional steps to make their Guix " "environment ready for use, @pxref{Application Setup}." msgstr "" #. type: Plain text #: doc/guix.texi:599 msgid "Voilà, the installation is complete!" msgstr "" #. type: Plain text #: doc/guix.texi:602 msgid "" "You can confirm that Guix is working by installing a sample package into the " "root profile:" msgstr "" #. type: example #: doc/guix.texi:605 #, no-wrap msgid "# guix package -i hello\n" msgstr "" #. type: Plain text #: doc/guix.texi:612 msgid "" "The @code{guix} package must remain available in @code{root}'s profile, or " "it would become subject to garbage collection---in which case you would find " "yourself badly handicapped by the lack of the @command{guix} command. In " "other words, do not remove @code{guix} by running @code{guix package -r " "guix}." msgstr "" #. type: Plain text #: doc/guix.texi:615 msgid "" "The binary installation tarball can be (re)produced and verified simply by " "running the following command in the Guix source tree:" msgstr "" #. type: example #: doc/guix.texi:618 #, no-wrap msgid "make guix-binary.@var{system}.tar.xz\n" msgstr "" #. type: Plain text #: doc/guix.texi:622 msgid "... which, in turn, runs:" msgstr "" #. type: example #: doc/guix.texi:626 #, no-wrap msgid "" "guix pack -s @var{system} --localstatedir \\\n" " --profile-name=current-guix guix\n" msgstr "" #. type: Plain text #: doc/guix.texi:629 msgid "@xref{Invoking guix pack}, for more info on this handy tool." msgstr "" #. type: Plain text #: doc/guix.texi:637 msgid "" "This section lists requirements when building Guix from source. The build " "procedure for Guix is the same as for other GNU software, and is not covered " "here. Please see the files @file{README} and @file{INSTALL} in the Guix " "source tree for additional details." msgstr "" #. type: Plain text #: doc/guix.texi:639 msgid "GNU Guix depends on the following packages:" msgstr "" #. type: item #: doc/guix.texi:641 #, no-wrap msgid "@url{http://gnu.org/software/guile/, GNU Guile}, version 2.0.13 or" msgstr "" #. type: itemize #: doc/guix.texi:643 msgid "later, including 2.2.x;" msgstr "" #. type: item #: doc/guix.texi:643 #, no-wrap msgid "@url{https://notabug.org/cwebber/guile-gcrypt, Guile-Gcrypt}, version" msgstr "" #. type: itemize #: doc/guix.texi:645 msgid "0.1.0 or later;" msgstr "" #. type: itemize #: doc/guix.texi:649 msgid "" "@uref{http://gnutls.org/, GnuTLS}, specifically its Guile bindings " "(@pxref{Guile Preparations, how to install the GnuTLS bindings for Guile,, " "gnutls-guile, GnuTLS-Guile});" msgstr "" #. type: itemize #: doc/guix.texi:652 msgid "" "@uref{https://notabug.org/guile-sqlite3/guile-sqlite3, Guile-SQLite3}, " "version 0.1.0 or later;" msgstr "" #. type: itemize #: doc/guix.texi:656 msgid "" "@uref{https://gitlab.com/guile-git/guile-git, Guile-Git}, from August 2017 " "or later;" msgstr "" #. type: item #: doc/guix.texi:656 #, no-wrap msgid "@url{http://zlib.net, zlib};" msgstr "" #. type: item #: doc/guix.texi:657 #, no-wrap msgid "@url{http://www.gnu.org/software/make/, GNU Make}." msgstr "" #. type: Plain text #: doc/guix.texi:661 msgid "The following dependencies are optional:" msgstr "" #. type: itemize #: doc/guix.texi:669 msgid "" "Installing @url{http://savannah.nongnu.org/projects/guile-json/, Guile-JSON} " "will allow you to use the @command{guix import pypi} command " "(@pxref{Invoking guix import}). It is of interest primarily for developers " "and not for casual users." msgstr "" #. type: itemize #: doc/guix.texi:676 msgid "" "Support for build offloading (@pxref{Daemon Offload Setup}) and " "@command{guix copy} (@pxref{Invoking guix copy}) depends on @uref{https://" "github.com/artyom-poptsov/guile-ssh, Guile-SSH}, version 0.10.2 or later." msgstr "" #. type: itemize #: doc/guix.texi:680 msgid "" "When @url{http://www.bzip.org, libbz2} is available, @command{guix-daemon} " "can use it to compress build logs." msgstr "" #. type: Plain text #: doc/guix.texi:684 msgid "" "Unless @code{--disable-daemon} was passed to @command{configure}, the " "following packages are also needed:" msgstr "" #. type: item #: doc/guix.texi:686 #, no-wrap msgid "@url{http://gnupg.org/, GNU libgcrypt};" msgstr "" #. type: item #: doc/guix.texi:687 #, no-wrap msgid "@url{http://sqlite.org, SQLite 3};" msgstr "" #. type: item #: doc/guix.texi:688 #, no-wrap msgid "@url{http://gcc.gnu.org, GCC's g++}, with support for the" msgstr "" #. type: itemize #: doc/guix.texi:690 msgid "C++11 standard." msgstr "" #. type: cindex #: doc/guix.texi:692 #, no-wrap msgid "state directory" msgstr "" #. type: Plain text #: doc/guix.texi:700 msgid "" "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 @code{--localstatedir} option of the @command{configure} script " "(@pxref{Directory Variables, @code{localstatedir},, standards, GNU Coding " "Standards}). The @command{configure} script protects against unintended " "misconfiguration of @var{localstatedir} so you do not inadvertently corrupt " "your store (@pxref{The Store})." msgstr "" #. type: cindex #: doc/guix.texi:701 #, no-wrap msgid "Nix, compatibility" msgstr "" #. type: Plain text #: doc/guix.texi:706 msgid "" "When a working installation of @url{http://nixos.org/nix/, the Nix package " "manager} is available, you can instead configure Guix with @code{--disable-" "daemon}. In that case, Nix replaces the three dependencies above." msgstr "" #. type: Plain text #: doc/guix.texi:716 msgid "" "Guix is compatible with Nix, so it is possible to share the same store " "between both. To do so, you must pass @command{configure} not only the same " "@code{--with-store-dir} value, but also the same @code{--localstatedir} " "value. The latter is essential because it specifies where the database that " "stores metadata about the store is located, among other things. The default " "values for Nix are @code{--with-store-dir=/nix/store} and @code{--" "localstatedir=/nix/var}. Note that @code{--disable-daemon} is not required " "if your goal is to share the store with Nix." msgstr "" #. type: cindex #: doc/guix.texi:720 #, no-wrap msgid "test suite" msgstr "" #. type: Plain text #: doc/guix.texi:726 msgid "" "After a successful @command{configure} and @code{make} run, it is a good " "idea to run the test suite. It can help catch issues with the setup or " "environment, or bugs in Guix itself---and really, reporting test failures is " "a good way to help improve the software. To run the test suite, type:" msgstr "" #. type: example #: doc/guix.texi:729 #, no-wrap msgid "make check\n" msgstr "" #. type: Plain text #: doc/guix.texi:736 msgid "" "Test cases can run in parallel: you can use the @code{-j} option of GNU@tie{}" "make to speed things up. The first run may take a few minutes on a recent " "machine; subsequent runs will be faster because the store that is created " "for test purposes will already have various things in cache." msgstr "" #. type: Plain text #: doc/guix.texi:739 msgid "" "It is also possible to run a subset of the tests by defining the " "@code{TESTS} makefile variable as in this example:" msgstr "" #. type: example #: doc/guix.texi:742 #, no-wrap msgid "make check TESTS=\"tests/store.scm tests/cpio.scm\"\n" msgstr "" #. type: Plain text #: doc/guix.texi:747 msgid "" "By default, tests results are displayed at a file level. In order to see " "the details of every individual test cases, it is possible to define the " "@code{SCM_LOG_DRIVER_FLAGS} makefile variable as in this example:" msgstr "" #. type: example #: doc/guix.texi:750 #, no-wrap msgid "make check TESTS=\"tests/base64.scm\" SCM_LOG_DRIVER_FLAGS=\"--brief=no\"\n" msgstr "" #. type: Plain text #: doc/guix.texi:756 msgid "" "Upon failure, please email @email{bug-guix@@gnu.org} and attach the " "@file{test-suite.log} file. Please specify the Guix version being used as " "well as version numbers of the dependencies (@pxref{Requirements}) in your " "message." msgstr "" #. type: Plain text #: doc/guix.texi:760 msgid "" "Guix also comes with a whole-system test suite that tests complete GuixSD " "operating system instances. It can only run on systems where Guix is " "already installed, using:" msgstr "" #. type: example #: doc/guix.texi:763 #, no-wrap msgid "make check-system\n" msgstr "" #. type: Plain text #: doc/guix.texi:767 msgid "or, again, by defining @code{TESTS} to select a subset of tests to run:" msgstr "" #. type: example #: doc/guix.texi:770 #, no-wrap msgid "make check-system TESTS=\"basic mcron\"\n" msgstr "" #. type: Plain text #: doc/guix.texi:778 msgid "" "These system tests are defined in the @code{(gnu tests @dots{})} modules. " "They work by running the operating systems under test with lightweight " "instrumentation in a virtual machine (VM). They can be computationally " "intensive or rather cheap, depending on whether substitutes are available " "for their dependencies (@pxref{Substitutes}). Some of them require a lot of " "storage space to hold VM images." msgstr "" #. type: Plain text #: doc/guix.texi:781 msgid "" "Again in case of test failures, please send @email{bug-guix@@gnu.org} all " "the details." msgstr "" #. type: cindex #: doc/guix.texi:785 #, no-wrap msgid "daemon" msgstr "" #. type: Plain text #: doc/guix.texi:793 msgid "" "Operations such as building a package or running the garbage collector are " "all performed by a specialized process, the @dfn{build daemon}, on behalf of " "clients. Only the daemon may access the store and its associated database. " "Thus, any operation that manipulates the store goes through the daemon. For " "instance, command-line tools such as @command{guix package} and " "@command{guix build} communicate with the daemon (@i{via} remote procedure " "calls) to instruct it what to do." msgstr "" #. type: Plain text #: doc/guix.texi:797 msgid "" "The following sections explain how to prepare the build daemon's " "environment. See also @ref{Substitutes}, for information on how to allow " "the daemon to download pre-built binaries." msgstr "" #. type: cindex #: doc/guix.texi:807 doc/guix.texi:1232 #, no-wrap msgid "build environment" msgstr "" #. type: Plain text #: doc/guix.texi:815 msgid "" "In a standard multi-user setup, Guix and its daemon---the @command{guix-" "daemon} program---are installed by the system administrator; @file{/gnu/" "store} is owned by @code{root} and @command{guix-daemon} runs as " "@code{root}. Unprivileged users may use Guix tools to build packages or " "otherwise access the store, and the daemon will do it on their behalf, " "ensuring that the store is kept in a consistent state, and allowing built " "packages to be shared among users." msgstr "" #. type: cindex #: doc/guix.texi:816 #, no-wrap msgid "build users" msgstr "" #. type: Plain text #: doc/guix.texi:827 msgid "" "When @command{guix-daemon} runs as @code{root}, you may not want package " "build processes themselves to run as @code{root} too, for obvious security " "reasons. To avoid that, a special pool of @dfn{build users} should be " "created for use by build processes started by the daemon. These build users " "need not have a shell and a home directory: they will just be used when the " "daemon drops @code{root} privileges in build processes. Having several such " "users allows the daemon to launch distinct build processes under separate " "UIDs, which guarantees that they do not interfere with each other---an " "essential feature since builds are regarded as pure functions " "(@pxref{Introduction})." msgstr "" #. type: Plain text #: doc/guix.texi:830 msgid "" "On a GNU/Linux system, a build user pool may be created like this (using " "Bash syntax and the @code{shadow} commands):" msgstr "" #. type: example #: doc/guix.texi:842 #, no-wrap msgid "" "# groupadd --system guixbuild\n" "# for i in `seq -w 1 10`;\n" " do\n" " useradd -g guixbuild -G guixbuild \\\n" " -d /var/empty -s `which nologin` \\\n" " -c \"Guix build user $i\" --system \\\n" " guixbuilder$i;\n" " done\n" msgstr "" #. type: Plain text #: doc/guix.texi:852 msgid "" "The number of build users determines how many build jobs may run in " "parallel, as specified by the @option{--max-jobs} option (@pxref{Invoking " "guix-daemon, @option{--max-jobs}}). To use @command{guix system vm} and " "related commands, you may need to add the build users to the @code{kvm} " "group so they can access @file{/dev/kvm}, using @code{-G guixbuild,kvm} " "instead of @code{-G guixbuild} (@pxref{Invoking guix system})." msgstr "" #. type: Plain text #: doc/guix.texi:861 msgid "" "The @code{guix-daemon} program may then be run as @code{root} with the " "following command@footnote{If your machine uses the systemd init system, " "dropping the @file{@var{prefix}/lib/systemd/system/guix-daemon.service} file " "in @file{/etc/systemd/system} will ensure that @command{guix-daemon} is " "automatically started. Similarly, if your machine uses the Upstart init " "system, drop the @file{@var{prefix}/lib/upstart/system/guix-daemon.conf} " "file in @file{/etc/init}.}:" msgstr "" #. type: example #: doc/guix.texi:864 doc/guix.texi:1225 #, no-wrap msgid "# guix-daemon --build-users-group=guixbuild\n" msgstr "" #. type: cindex #: doc/guix.texi:866 doc/guix.texi:1230 #, no-wrap msgid "chroot" msgstr "" #. type: Plain text #: doc/guix.texi:871 msgid "" "This way, the daemon starts build processes in a chroot, under one of the " "@code{guixbuilder} users. On GNU/Linux, by default, the chroot environment " "contains nothing but:" msgstr "" #. type: itemize #: doc/guix.texi:879 msgid "" "a minimal @code{/dev} directory, created mostly independently from the host " "@code{/dev}@footnote{``Mostly'', because while the set of files that appear " "in the chroot's @code{/dev} is fixed, most of these files can only be " "created if the host has them.};" msgstr "" #. type: itemize #: doc/guix.texi:883 msgid "" "the @code{/proc} directory; it only shows the processes of the container " "since a separate PID name space is used;" msgstr "" #. type: itemize #: doc/guix.texi:887 msgid "" "@file{/etc/passwd} with an entry for the current user and an entry for user " "@file{nobody};" msgstr "" #. type: itemize #: doc/guix.texi:890 msgid "@file{/etc/group} with an entry for the user's group;" msgstr "" #. type: itemize #: doc/guix.texi:894 msgid "" "@file{/etc/hosts} with an entry that maps @code{localhost} to " "@code{127.0.0.1};" msgstr "" #. type: itemize #: doc/guix.texi:897 msgid "a writable @file{/tmp} directory." msgstr "" #. type: Plain text #: doc/guix.texi:906 msgid "" "You can influence the directory where the daemon stores build trees @i{via} " "the @code{TMPDIR} environment variable. However, the build tree within the " "chroot is always called @file{/tmp/guix-build-@var{name}.drv-0}, where " "@var{name} is the derivation name---e.g., @code{coreutils-8.24}. This way, " "the value of @code{TMPDIR} does not leak inside build environments, which " "avoids discrepancies in cases where build processes capture the name of " "their build tree." msgstr "" #. type: vindex #: doc/guix.texi:907 doc/guix.texi:2466 #, no-wrap msgid "http_proxy" msgstr "" #. type: Plain text #: doc/guix.texi:911 msgid "" "The daemon also honors the @code{http_proxy} environment variable for HTTP " "downloads it performs, be it for fixed-output derivations " "(@pxref{Derivations}) or for substitutes (@pxref{Substitutes})." msgstr "" #. type: Plain text #: doc/guix.texi:919 msgid "" "If you are installing Guix as an unprivileged user, it is still possible to " "run @command{guix-daemon} provided you pass @code{--disable-chroot}. " "However, build processes will not be isolated from one another, and not from " "the rest of the system. Thus, build processes may interfere with each " "other, and may access programs, libraries, and other files available on the " "system---making it much harder to view them as @emph{pure} functions." msgstr "" #. type: subsection #: doc/guix.texi:922 #, no-wrap msgid "Using the Offload Facility" msgstr "" #. type: cindex #: doc/guix.texi:924 #, no-wrap msgid "offloading" msgstr "" #. type: cindex #: doc/guix.texi:925 doc/guix.texi:1289 #, no-wrap msgid "build hook" msgstr "" #. type: Plain text #: doc/guix.texi:939 msgid "" "When desired, the build daemon can @dfn{offload} derivation builds to other " "machines running Guix, using the @code{offload} @dfn{build hook}" "@footnote{This feature is available only when @uref{https://github.com/" "artyom-poptsov/guile-ssh, Guile-SSH} is present.}. When that feature is " "enabled, a list of user-specified build machines is read from @file{/etc/" "guix/machines.scm}; every time a build is requested, for instance via " "@code{guix build}, the daemon attempts to offload it to one of the machines " "that satisfy the constraints of the derivation, in particular its system " "type---e.g., @file{x86_64-linux}. Missing prerequisites for the build are " "copied over SSH to the target machine, which then proceeds with the build; " "upon success the output(s) of the build are copied back to the initial " "machine." msgstr "" #. type: Plain text #: doc/guix.texi:941 msgid "The @file{/etc/guix/machines.scm} file typically looks like this:" msgstr "" #. type: example #: doc/guix.texi:949 #, no-wrap msgid "" "(list (build-machine\n" " (name \"eightysix.example.org\")\n" " (system \"x86_64-linux\")\n" " (host-key \"ssh-ed25519 AAAAC3Nza@dots{}\")\n" " (user \"bob\")\n" " (speed 2.)) ;incredibly fast!\n" "\n" msgstr "" #. type: example #: doc/guix.texi:958 #, no-wrap msgid "" " (build-machine\n" " (name \"meeps.example.org\")\n" " (system \"mips64el-linux\")\n" " (host-key \"ssh-rsa AAAAB3Nza@dots{}\")\n" " (user \"alice\")\n" " (private-key\n" " (string-append (getenv \"HOME\")\n" " \"/.ssh/identity-for-guix\"))))\n" msgstr "" #. type: Plain text #: doc/guix.texi:964 msgid "" "In the example above we specify a list of two build machines, one for the " "@code{x86_64} architecture and one for the @code{mips64el} architecture." msgstr "" #. type: Plain text #: doc/guix.texi:973 msgid "" "In fact, this file is---not surprisingly!---a Scheme file that is evaluated " "when the @code{offload} hook is started. Its return value must be a list of " "@code{build-machine} objects. While this example shows a fixed list of " "build machines, one could imagine, say, using DNS-SD to return a list of " "potential build machines discovered in the local network " "(@pxref{Introduction, Guile-Avahi,, guile-avahi, Using Avahi in Guile Scheme " "Programs}). The @code{build-machine} data type is detailed below." msgstr "" #. type: deftp #: doc/guix.texi:974 #, no-wrap msgid "{Data Type} build-machine" msgstr "" #. type: deftp #: doc/guix.texi:977 msgid "" "This data type represents build machines to which the daemon may offload " "builds. The important fields are:" msgstr "" #. type: item #: doc/guix.texi:980 doc/guix.texi:3984 doc/guix.texi:10390 doc/guix.texi:10454 #: doc/guix.texi:10549 doc/guix.texi:12158 doc/guix.texi:16411 #: doc/guix.texi:16677 doc/guix.texi:16810 doc/guix.texi:17118 #: doc/guix.texi:17159 doc/guix.texi:21592 doc/guix.texi:21609 #: doc/guix.texi:21875 doc/guix.texi:23096 doc/guix.texi:23296 #, no-wrap msgid "name" msgstr "" #. type: table #: doc/guix.texi:982 msgid "The host name of the remote machine." msgstr "" #. type: item #: doc/guix.texi:983 #, no-wrap msgid "system" msgstr "" #. type: table #: doc/guix.texi:985 msgid "The system type of the remote machine---e.g., @code{\"x86_64-linux\"}." msgstr "" #. type: code{#1} #: doc/guix.texi:986 doc/guix.texi:12168 #, no-wrap msgid "user" msgstr "" #. type: table #: doc/guix.texi:990 msgid "" "The user account to use when connecting to the remote machine over SSH. " "Note that the SSH key pair must @emph{not} be passphrase-protected, to allow " "non-interactive logins." msgstr "" #. type: item #: doc/guix.texi:991 #, no-wrap msgid "host-key" msgstr "" #. type: table #: doc/guix.texi:995 msgid "" "This must be the machine's SSH @dfn{public host key} in OpenSSH format. " "This is used to authenticate the machine when we connect to it. It is a " "long string that looks like this:" msgstr "" #. type: example #: doc/guix.texi:998 #, no-wrap msgid "ssh-ed25519 AAAAC3NzaC@dots{}mde+UhL hint@@example.org\n" msgstr "" #. type: table #: doc/guix.texi:1003 msgid "" "If the machine is running the OpenSSH daemon, @command{sshd}, the host key " "can be found in a file such as @file{/etc/ssh/ssh_host_ed25519_key.pub}." msgstr "" #. type: table #: doc/guix.texi:1008 msgid "" "If the machine is running the SSH daemon of GNU@tie{}lsh, @command{lshd}, " "the host key is in @file{/etc/lsh/host-key.pub} or a similar file. It can " "be converted to the OpenSSH format using @command{lsh-export-key} " "(@pxref{Converting keys,,, lsh, LSH Manual}):" msgstr "" #. type: example #: doc/guix.texi:1012 #, no-wrap msgid "" "$ lsh-export-key --openssh < /etc/lsh/host-key.pub \n" "ssh-rsa AAAAB3NzaC1yc2EAAAAEOp8FoQAAAQEAs1eB46LV@dots{}\n" msgstr "" #. type: deftp #: doc/guix.texi:1017 msgid "A number of optional fields may be specified:" msgstr "" #. type: item #: doc/guix.texi:1020 #, no-wrap msgid "@code{port} (default: @code{22})" msgstr "" #. type: table #: doc/guix.texi:1022 msgid "Port number of SSH server on the machine." msgstr "" #. type: item #: doc/guix.texi:1023 #, no-wrap msgid "@code{private-key} (default: @file{~root/.ssh/id_rsa})" msgstr "" #. type: table #: doc/guix.texi:1026 msgid "" "The SSH private key file to use when connecting to the machine, in OpenSSH " "format. This key must not be protected with a passphrase." msgstr "" #. type: table #: doc/guix.texi:1029 msgid "" "Note that the default value is the private key @emph{of the root account}. " "Make sure it exists if you use the default." msgstr "" #. type: item #: doc/guix.texi:1030 #, no-wrap msgid "@code{compression} (default: @code{\"zlib@@openssh.com,zlib\"})" msgstr "" #. type: item #: doc/guix.texi:1031 doc/guix.texi:11452 #, no-wrap msgid "@code{compression-level} (default: @code{3})" msgstr "" #. type: table #: doc/guix.texi:1033 msgid "The SSH-level compression methods and compression level requested." msgstr "" #. type: table #: doc/guix.texi:1036 msgid "" "Note that offloading relies on SSH compression to reduce bandwidth usage " "when transferring files to and from build machines." msgstr "" #. type: item #: doc/guix.texi:1037 #, no-wrap msgid "@code{daemon-socket} (default: @code{\"/var/guix/daemon-socket/socket\"})" msgstr "" #. type: table #: doc/guix.texi:1040 msgid "" "File name of the Unix-domain socket @command{guix-daemon} is listening to on " "that machine." msgstr "" #. type: item #: doc/guix.texi:1041 #, no-wrap msgid "@code{parallel-builds} (default: @code{1})" msgstr "" #. type: table #: doc/guix.texi:1043 msgid "The number of builds that may run in parallel on the machine." msgstr "" #. type: item #: doc/guix.texi:1044 #, no-wrap msgid "@code{speed} (default: @code{1.0})" msgstr "" #. type: table #: doc/guix.texi:1047 msgid "" "A ``relative speed factor''. The offload scheduler will tend to prefer " "machines with a higher speed factor." msgstr "" #. type: item #: doc/guix.texi:1048 #, no-wrap msgid "@code{features} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:1053 msgid "" "A list of strings denoting specific features supported by the machine. An " "example is @code{\"kvm\"} for machines that have the KVM Linux modules and " "corresponding hardware support. Derivations can request features by name, " "and they will be scheduled on matching build machines." msgstr "" #. type: Plain text #: doc/guix.texi:1061 msgid "" "The @code{guile} command must be in the search path on the build machines. " "In addition, the Guix modules must be in @code{$GUILE_LOAD_PATH} on the " "build machine---you can check whether this is the case by running:" msgstr "" #. type: example #: doc/guix.texi:1064 #, no-wrap msgid "ssh build-machine guile -c \"'(use-modules (guix config))'\"\n" msgstr "" #. type: Plain text #: doc/guix.texi:1071 msgid "" "There is one last thing to do once @file{machines.scm} is in place. As " "explained above, when offloading, files are transferred back and forth " "between the machine stores. For this to work, you first need to generate a " "key pair on each machine to allow the daemon to export signed archives of " "files from the store (@pxref{Invoking guix archive}):" msgstr "" #. type: example #: doc/guix.texi:1074 #, no-wrap msgid "# guix archive --generate-key\n" msgstr "" #. type: Plain text #: doc/guix.texi:1079 msgid "" "Each build machine must authorize the key of the master machine so that it " "accepts store items it receives from the master:" msgstr "" #. type: example #: doc/guix.texi:1082 #, no-wrap msgid "# guix archive --authorize < master-public-key.txt\n" msgstr "" #. type: Plain text #: doc/guix.texi:1086 msgid "" "Likewise, the master machine must authorize the key of each build machine." msgstr "" #. type: Plain text #: doc/guix.texi:1092 msgid "" "All the fuss with keys is here to express pairwise mutual trust relations " "between the master and the build machines. Concretely, when the master " "receives files from a build machine (and @i{vice versa}), its build daemon " "can make sure they are genuine, have not been tampered with, and that they " "are signed by an authorized key." msgstr "" #. type: cindex #: doc/guix.texi:1093 #, no-wrap msgid "offload test" msgstr "" #. type: Plain text #: doc/guix.texi:1096 msgid "" "To test whether your setup is operational, run this command on the master " "node:" msgstr "" #. type: example #: doc/guix.texi:1099 #, no-wrap msgid "# guix offload test\n" msgstr "" #. type: Plain text #: doc/guix.texi:1105 msgid "" "This will attempt to connect to each of the build machines specified in " "@file{/etc/guix/machines.scm}, make sure Guile and the Guix modules are " "available on each machine, attempt to export to the machine and import from " "it, and report any error in the process." msgstr "" #. type: Plain text #: doc/guix.texi:1108 msgid "" "If you want to test a different machine file, just specify it on the command " "line:" msgstr "" #. type: example #: doc/guix.texi:1111 #, no-wrap msgid "# guix offload test machines-qualif.scm\n" msgstr "" #. type: Plain text #: doc/guix.texi:1115 msgid "" "Last, you can test the subset of the machines whose name matches a regular " "expression like this:" msgstr "" #. type: example #: doc/guix.texi:1118 #, no-wrap msgid "# guix offload test machines.scm '\\.gnu\\.org$'\n" msgstr "" #. type: cindex #: doc/guix.texi:1120 #, no-wrap msgid "offload status" msgstr "" #. type: Plain text #: doc/guix.texi:1123 msgid "" "To display the current load of all build hosts, run this command on the main " "node:" msgstr "" #. type: example #: doc/guix.texi:1126 #, no-wrap msgid "# guix offload status\n" msgstr "" #. type: cindex #: doc/guix.texi:1132 #, no-wrap msgid "SELinux, daemon policy" msgstr "" #. type: cindex #: doc/guix.texi:1133 #, no-wrap msgid "mandatory access control, SELinux" msgstr "" #. type: cindex #: doc/guix.texi:1134 #, no-wrap msgid "security, guix-daemon" msgstr "" #. type: Plain text #: doc/guix.texi:1140 msgid "" "Guix includes an SELinux policy file at @file{etc/guix-daemon.cil} that can " "be installed on a system where SELinux is enabled, in order to label Guix " "files and to specify the expected behavior of the daemon. Since GuixSD does " "not provide an SELinux base policy, the daemon policy cannot be used on " "GuixSD." msgstr "" #. type: subsubsection #: doc/guix.texi:1141 #, no-wrap msgid "Installing the SELinux policy" msgstr "" #. type: cindex #: doc/guix.texi:1142 #, no-wrap msgid "SELinux, policy installation" msgstr "" #. type: Plain text #: doc/guix.texi:1144 msgid "To install the policy run this command as root:" msgstr "" #. type: example #: doc/guix.texi:1147 #, no-wrap msgid "semodule -i etc/guix-daemon.cil\n" msgstr "" #. type: Plain text #: doc/guix.texi:1151 msgid "" "Then relabel the file system with @code{restorecon} or by a different " "mechanism provided by your system." msgstr "" #. type: Plain text #: doc/guix.texi:1156 msgid "" "Once the policy is installed, the file system has been relabeled, and the " "daemon has been restarted, it should be running in the @code{guix_daemon_t} " "context. You can confirm this with the following command:" msgstr "" #. type: example #: doc/guix.texi:1159 #, no-wrap msgid "ps -Zax | grep guix-daemon\n" msgstr "" #. type: Plain text #: doc/guix.texi:1164 msgid "" "Monitor the SELinux log files as you run a command like @code{guix build " "hello} to convince yourself that SELinux permits all necessary operations." msgstr "" #. type: cindex #: doc/guix.texi:1166 #, no-wrap msgid "SELinux, limitations" msgstr "" #. type: Plain text #: doc/guix.texi:1171 msgid "" "This policy is not perfect. Here is a list of limitations or quirks that " "should be considered when deploying the provided SELinux policy for the Guix " "daemon." msgstr "" #. type: enumerate #: doc/guix.texi:1178 msgid "" "@code{guix_daemon_socket_t} isn’t actually used. None of the socket " "operations involve contexts that have anything to do with " "@code{guix_daemon_socket_t}. It doesn’t hurt to have this unused label, but " "it would be preferrable to define socket rules for only this label." msgstr "" #. type: enumerate #: doc/guix.texi:1189 msgid "" "@code{guix gc} cannot access arbitrary links to profiles. By design, the " "file label of the destination of a symlink is independent of the file label " "of the link itself. Although all profiles under $localstatedir are " "labelled, the links to these profiles inherit the label of the directory " "they are in. For links in the user’s home directory this will be " "@code{user_home_t}. But for links from the root user’s home directory, or " "@file{/tmp}, or the HTTP server’s working directory, etc, this won’t work. " "@code{guix gc} would be prevented from reading and following these links." msgstr "" #. type: enumerate #: doc/guix.texi:1194 msgid "" "The daemon’s feature to listen for TCP connections might no longer work. " "This might require extra rules, because SELinux treats network sockets " "differently from files." msgstr "" #. type: enumerate #: doc/guix.texi:1205 msgid "" "Currently all files with a name matching the regular expression @code{/gnu/" "store/.+-(guix-.+|profile)/bin/guix-daemon} are assigned the label " "@code{guix_daemon_exec_t}; this means that @emph{any} file with that name in " "any profile would be permitted to run in the @code{guix_daemon_t} domain. " "This is not ideal. An attacker could build a package that provides this " "executable and convince a user to install and run it, which lifts it into " "the @code{guix_daemon_t} domain. At that point SELinux could not prevent it " "from accessing files that are allowed for processes in that domain." msgstr "" #. type: enumerate #: doc/guix.texi:1213 msgid "" "We could generate a much more restrictive policy at installation time, so " "that only the @emph{exact} file name of the currently installed @code{guix-" "daemon} executable would be labelled with @code{guix_daemon_exec_t}, instead " "of using a broad regular expression. The downside is that root would have " "to install or upgrade the policy at installation time whenever the Guix " "package that provides the effectively running @code{guix-daemon} executable " "is upgraded." msgstr "" #. type: section #: doc/guix.texi:1216 #, no-wrap msgid "Invoking @command{guix-daemon}" msgstr "" #. type: Plain text #: doc/guix.texi:1222 msgid "" "The @command{guix-daemon} program implements all the functionality to access " "the store. This includes launching build processes, running the garbage " "collector, querying the availability of a build result, etc. It is normally " "run as @code{root} like this:" msgstr "" #. type: Plain text #: doc/guix.texi:1229 msgid "For details on how to set it up, @pxref{Setting Up the Daemon}." msgstr "" #. type: cindex #: doc/guix.texi:1231 #, no-wrap msgid "container, build environment" msgstr "" #. type: cindex #: doc/guix.texi:1233 doc/guix.texi:1778 doc/guix.texi:2447 doc/guix.texi:8527 #, no-wrap msgid "reproducible builds" msgstr "" #. type: Plain text #: doc/guix.texi:1245 msgid "" "By default, @command{guix-daemon} launches build processes under different " "UIDs, taken from the build group specified with @code{--build-users-group}. " "In addition, each build process is run in a chroot environment that only " "contains the subset of the store that the build process depends on, as " "specified by its derivation (@pxref{Programming Interface, derivation}), " "plus a set of specific system directories. By default, the latter contains " "@file{/dev} and @file{/dev/pts}. Furthermore, on GNU/Linux, the build " "environment is a @dfn{container}: in addition to having its own file system " "tree, it has a separate mount name space, its own PID name space, network " "name space, etc. This helps achieve reproducible builds (@pxref{Features})." msgstr "" #. type: Plain text #: doc/guix.texi:1251 msgid "" "When the daemon performs a build on behalf of the user, it creates a build " "directory under @file{/tmp} or under the directory specified by its " "@code{TMPDIR} environment variable. This directory is shared with the " "container for the duration of the build, though within the container, the " "build tree is always called @file{/tmp/guix-build-@var{name}.drv-0}." msgstr "" #. type: Plain text #: doc/guix.texi:1255 msgid "" "The build directory is automatically deleted upon completion, unless the " "build failed and the client specified @option{--keep-failed} " "(@pxref{Invoking guix build, @option{--keep-failed}})." msgstr "" #. type: Plain text #: doc/guix.texi:1261 msgid "" "The daemon listens for connections and spawns one sub-process for each " "session started by a client (one of the @command{guix} sub-commands.) The " "@command{guix processes} command allows you to get an overview of the " "activity on your system by viewing each of the active sessions and clients. " "@xref{Invoking guix processes}, for more information." msgstr "" #. type: Plain text #: doc/guix.texi:1263 msgid "The following command-line options are supported:" msgstr "" #. type: item #: doc/guix.texi:1265 #, no-wrap msgid "--build-users-group=@var{group}" msgstr "" #. type: table #: doc/guix.texi:1268 msgid "" "Take users from @var{group} to run build processes (@pxref{Setting Up the " "Daemon, build users})." msgstr "" #. type: item #: doc/guix.texi:1269 doc/guix.texi:6270 #, no-wrap msgid "--no-substitutes" msgstr "" #. type: cindex #: doc/guix.texi:1270 doc/guix.texi:1790 doc/guix.texi:2303 #, no-wrap msgid "substitutes" msgstr "" #. type: table #: doc/guix.texi:1274 doc/guix.texi:6274 msgid "" "Do not use substitutes for build products. That is, always build things " "locally instead of allowing downloads of pre-built binaries " "(@pxref{Substitutes})." msgstr "" #. type: table #: doc/guix.texi:1278 msgid "" "When the daemon runs with @code{--no-substitutes}, clients can still " "explicitly enable substitution @i{via} the @code{set-build-options} remote " "procedure call (@pxref{The Store})." msgstr "" #. type: item #: doc/guix.texi:1279 doc/guix.texi:6257 doc/guix.texi:7769 doc/guix.texi:8652 #: doc/guix.texi:8840 #, no-wrap msgid "--substitute-urls=@var{urls}" msgstr "" #. type: anchor{#1} #: doc/guix.texi:1285 msgid "daemon-substitute-urls" msgstr "" #. type: table #: doc/guix.texi:1285 msgid "" "Consider @var{urls} the default whitespace-separated list of substitute " "source URLs. When this option is omitted, @indicateurl{https://mirror.hydra." "gnu.org https://hydra.gnu.org} is used (@code{mirror.hydra.gnu.org} is a " "mirror of @code{hydra.gnu.org})." msgstr "" #. type: table #: doc/guix.texi:1288 msgid "" "This means that substitutes may be downloaded from @var{urls}, as long as " "they are signed by a trusted signature (@pxref{Substitutes})." msgstr "" #. type: item #: doc/guix.texi:1290 doc/guix.texi:6295 #, no-wrap msgid "--no-build-hook" msgstr "" #. type: table #: doc/guix.texi:1292 msgid "Do not use the @dfn{build hook}." msgstr "" #. type: table #: doc/guix.texi:1296 msgid "" "The build hook is a helper program that the daemon can start and to which it " "submits build requests. This mechanism is used to offload builds to other " "machines (@pxref{Daemon Offload Setup})." msgstr "" #. type: item #: doc/guix.texi:1297 #, no-wrap msgid "--cache-failures" msgstr "" #. type: table #: doc/guix.texi:1299 msgid "Cache build failures. By default, only successful builds are cached." msgstr "" #. type: table #: doc/guix.texi:1304 msgid "" "When this option is used, @command{guix gc --list-failures} can be used to " "query the set of store items marked as failed; @command{guix gc --clear-" "failures} removes store items from the set of cached failures. " "@xref{Invoking guix gc}." msgstr "" #. type: item #: doc/guix.texi:1305 doc/guix.texi:6319 #, no-wrap msgid "--cores=@var{n}" msgstr "" #. type: itemx #: doc/guix.texi:1306 doc/guix.texi:6320 #, no-wrap msgid "-c @var{n}" msgstr "" #. type: table #: doc/guix.texi:1309 msgid "" "Use @var{n} CPU cores to build each derivation; @code{0} means as many as " "available." msgstr "" #. type: table #: doc/guix.texi:1313 msgid "" "The default value is @code{0}, but it may be overridden by clients, such as " "the @code{--cores} option of @command{guix build} (@pxref{Invoking guix " "build})." msgstr "" #. type: table #: doc/guix.texi:1317 msgid "" "The effect is to define the @code{NIX_BUILD_CORES} environment variable in " "the build process, which can then use it to exploit internal parallelism---" "for instance, by running @code{make -j$NIX_BUILD_CORES}." msgstr "" #. type: item #: doc/guix.texi:1318 doc/guix.texi:6324 #, no-wrap msgid "--max-jobs=@var{n}" msgstr "" #. type: itemx #: doc/guix.texi:1319 doc/guix.texi:6325 #, no-wrap msgid "-M @var{n}" msgstr "" #. type: table #: doc/guix.texi:1324 msgid "" "Allow at most @var{n} build jobs in parallel. The default value is " "@code{1}. Setting it to @code{0} means that no builds will be performed " "locally; instead, the daemon will offload builds (@pxref{Daemon Offload " "Setup}), or simply fail." msgstr "" #. type: item #: doc/guix.texi:1325 doc/guix.texi:6300 #, no-wrap msgid "--max-silent-time=@var{seconds}" msgstr "" #. type: table #: doc/guix.texi:1328 doc/guix.texi:6303 msgid "" "When the build or substitution process remains silent for more than " "@var{seconds}, terminate it and report a build failure." msgstr "" #. type: table #: doc/guix.texi:1330 doc/guix.texi:1339 msgid "The default value is @code{0}, which disables the timeout." msgstr "" #. type: table #: doc/guix.texi:1333 msgid "" "The value specified here can be overridden by clients (@pxref{Common Build " "Options, @code{--max-silent-time}})." msgstr "" #. type: item #: doc/guix.texi:1334 doc/guix.texi:6307 #, no-wrap msgid "--timeout=@var{seconds}" msgstr "" #. type: table #: doc/guix.texi:1337 doc/guix.texi:6310 msgid "" "Likewise, when the build or substitution process lasts for more than " "@var{seconds}, terminate it and report a build failure." msgstr "" #. type: table #: doc/guix.texi:1342 msgid "" "The value specified here can be overridden by clients (@pxref{Common Build " "Options, @code{--timeout}})." msgstr "" #. type: item #: doc/guix.texi:1343 #, no-wrap msgid "--rounds=@var{N}" msgstr "" #. type: table #: doc/guix.texi:1348 msgid "" "Build each derivation @var{n} times in a row, and raise an error if " "consecutive build results are not bit-for-bit identical. Note that this " "setting can be overridden by clients such as @command{guix build} " "(@pxref{Invoking guix build})." msgstr "" #. type: table #: doc/guix.texi:1352 doc/guix.texi:6608 msgid "" "When used in conjunction with @option{--keep-failed}, the differing output " "is kept in the store, under @file{/gnu/store/@dots{}-check}. This makes it " "easy to look for differences between the two results." msgstr "" #. type: item #: doc/guix.texi:1353 #, no-wrap msgid "--debug" msgstr "" #. type: table #: doc/guix.texi:1355 msgid "Produce debugging output." msgstr "" #. type: table #: doc/guix.texi:1359 msgid "" "This is useful to debug daemon start-up issues, but then it may be " "overridden by clients, for example the @code{--verbosity} option of " "@command{guix build} (@pxref{Invoking guix build})." msgstr "" #. type: item #: doc/guix.texi:1360 #, no-wrap msgid "--chroot-directory=@var{dir}" msgstr "" #. type: table #: doc/guix.texi:1362 msgid "Add @var{dir} to the build chroot." msgstr "" #. type: table #: doc/guix.texi:1368 msgid "" "Doing this may change the result of build processes---for instance if they " "use optional dependencies found in @var{dir} when it is available, and not " "otherwise. For that reason, it is not recommended to do so. Instead, make " "sure that each derivation declares all the inputs that it needs." msgstr "" #. type: item #: doc/guix.texi:1369 #, no-wrap msgid "--disable-chroot" msgstr "" #. type: table #: doc/guix.texi:1371 msgid "Disable chroot builds." msgstr "" #. type: table #: doc/guix.texi:1376 msgid "" "Using this option is not recommended since, again, it would allow build " "processes to gain access to undeclared dependencies. It is necessary, " "though, when @command{guix-daemon} is running under an unprivileged user " "account." msgstr "" #. type: item #: doc/guix.texi:1377 #, no-wrap msgid "--log-compression=@var{type}" msgstr "" #. type: table #: doc/guix.texi:1380 msgid "" "Compress build logs according to @var{type}, one of @code{gzip}, " "@code{bzip2}, or @code{none}." msgstr "" #. type: table #: doc/guix.texi:1384 msgid "" "Unless @code{--lose-logs} is used, all the build logs are kept in the " "@var{localstatedir}. To save space, the daemon automatically compresses " "them with bzip2 by default." msgstr "" #. type: item #: doc/guix.texi:1385 #, no-wrap msgid "--disable-deduplication" msgstr "" #. type: cindex #: doc/guix.texi:1386 doc/guix.texi:2763 #, no-wrap msgid "deduplication" msgstr "" #. type: table #: doc/guix.texi:1388 msgid "Disable automatic file ``deduplication'' in the store." msgstr "" #. type: table #: doc/guix.texi:1395 msgid "" "By default, files added to the store are automatically ``deduplicated'': if " "a newly added file is identical to another one found in the store, the " "daemon makes the new file a hard link to the other file. This can " "noticeably reduce disk usage, at the expense of slightly increased input/" "output load at the end of a build process. This option disables this " "optimization." msgstr "" #. type: item #: doc/guix.texi:1396 #, no-wrap msgid "--gc-keep-outputs[=yes|no]" msgstr "" #. type: table #: doc/guix.texi:1399 msgid "" "Tell whether the garbage collector (GC) must keep outputs of live " "derivations." msgstr "" #. type: cindex #: doc/guix.texi:1400 doc/guix.texi:2598 #, no-wrap msgid "GC roots" msgstr "" #. type: cindex #: doc/guix.texi:1401 doc/guix.texi:2599 #, no-wrap msgid "garbage collector roots" msgstr "" #. type: table #: doc/guix.texi:1406 msgid "" "When set to ``yes'', the GC will keep the outputs of any live derivation " "available in the store---the @code{.drv} files. The default is ``no'', " "meaning that derivation outputs are kept only if they are reachable from a " "GC root. @xref{Invoking guix gc}, for more on GC roots." msgstr "" #. type: item #: doc/guix.texi:1407 #, no-wrap msgid "--gc-keep-derivations[=yes|no]" msgstr "" #. type: table #: doc/guix.texi:1410 msgid "" "Tell whether the garbage collector (GC) must keep derivations corresponding " "to live outputs." msgstr "" #. type: table #: doc/guix.texi:1415 msgid "" "When set to ``yes'', as is the case by default, the GC keeps derivations---i." "e., @code{.drv} files---as long as at least one of their outputs is live. " "This allows users to keep track of the origins of items in their store. " "Setting it to ``no'' saves a bit of disk space." msgstr "" #. type: table #: doc/guix.texi:1423 msgid "" "In this way, setting @code{--gc-keep-derivations} to ``yes'' causes liveness " "to flow from outputs to derivations, and setting @code{--gc-keep-outputs} to " "``yes'' causes liveness to flow from derivations to outputs. When both are " "set to ``yes'', the effect is to keep all the build prerequisites (the " "sources, compiler, libraries, and other build-time tools) of live objects in " "the store, regardless of whether these prerequisites are reachable from a GC " "root. This is convenient for developers since it saves rebuilds or " "downloads." msgstr "" #. type: item #: doc/guix.texi:1424 #, no-wrap msgid "--impersonate-linux-2.6" msgstr "" #. type: table #: doc/guix.texi:1427 msgid "" "On Linux-based systems, impersonate Linux 2.6. This means that the kernel's " "@code{uname} system call will report 2.6 as the release number." msgstr "" #. type: table #: doc/guix.texi:1430 msgid "" "This might be helpful to build programs that (usually wrongfully) depend on " "the kernel version number." msgstr "" #. type: item #: doc/guix.texi:1431 #, no-wrap msgid "--lose-logs" msgstr "" #. type: table #: doc/guix.texi:1434 msgid "" "Do not keep build logs. By default they are kept under " "@code{@var{localstatedir}/guix/log}." msgstr "" #. type: item #: doc/guix.texi:1435 doc/guix.texi:3468 doc/guix.texi:6554 doc/guix.texi:7796 #: doc/guix.texi:7979 doc/guix.texi:8211 doc/guix.texi:8845 doc/guix.texi:21977 #: doc/guix.texi:22534 #, no-wrap msgid "--system=@var{system}" msgstr "" #. type: table #: doc/guix.texi:1439 msgid "" "Assume @var{system} as the current system type. By default it is the " "architecture/kernel pair found at configure time, such as @code{x86_64-" "linux}." msgstr "" #. type: item #: doc/guix.texi:1440 doc/guix.texi:6114 #, no-wrap msgid "--listen=@var{endpoint}" msgstr "" #. type: table #: doc/guix.texi:1445 msgid "" "Listen for connections on @var{endpoint}. @var{endpoint} is interpreted as " "the file name of a Unix-domain socket if it starts with @code{/} (slash " "sign). Otherwise, @var{endpoint} is interpreted as a host name or host name " "and port to listen to. Here are a few examples:" msgstr "" #. type: item #: doc/guix.texi:1447 #, no-wrap msgid "--listen=/gnu/var/daemon" msgstr "" #. type: table #: doc/guix.texi:1450 msgid "" "Listen for connections on the @file{/gnu/var/daemon} Unix-domain socket, " "creating it if needed." msgstr "" #. type: item #: doc/guix.texi:1451 #, no-wrap msgid "--listen=localhost" msgstr "" #. type: cindex #: doc/guix.texi:1452 doc/guix.texi:4908 #, no-wrap msgid "daemon, remote access" msgstr "" #. type: cindex #: doc/guix.texi:1453 doc/guix.texi:4909 #, no-wrap msgid "remote access to the daemon" msgstr "" #. type: cindex #: doc/guix.texi:1454 doc/guix.texi:4910 #, no-wrap msgid "daemon, cluster setup" msgstr "" #. type: cindex #: doc/guix.texi:1455 doc/guix.texi:4911 #, no-wrap msgid "clusters, daemon setup" msgstr "" #. type: table #: doc/guix.texi:1458 msgid "" "Listen for TCP connections on the network interface corresponding to " "@code{localhost}, on port 44146." msgstr "" #. type: item #: doc/guix.texi:1459 #, no-wrap msgid "--listen=128.0.0.42:1234" msgstr "" #. type: table #: doc/guix.texi:1462 msgid "" "Listen for TCP connections on the network interface corresponding to " "@code{128.0.0.42}, on port 1234." msgstr "" #. type: table #: doc/guix.texi:1469 msgid "" "This option can be repeated multiple times, in which case @command{guix-" "daemon} accepts connections on all the specified endpoints. Users can tell " "client commands what endpoint to connect to by setting the " "@code{GUIX_DAEMON_SOCKET} environment variable (@pxref{The Store, " "@code{GUIX_DAEMON_SOCKET}})." msgstr "" #. type: quotation #: doc/guix.texi:1470 doc/guix.texi:2380 doc/guix.texi:3090 doc/guix.texi:3303 #: doc/guix.texi:3533 doc/guix.texi:4878 doc/guix.texi:4946 doc/guix.texi:6559 #: doc/guix.texi:6571 doc/guix.texi:8103 doc/guix.texi:8730 doc/guix.texi:9003 #: doc/guix.texi:9215 doc/guix.texi:9364 doc/guix.texi:12705 #: doc/guix.texi:17530 doc/guix.texi:22317 doc/guix.texi:22515 #: doc/guix.texi:22602 doc/guix.texi:23505 #, no-wrap msgid "Note" msgstr "" #. type: quotation #: doc/guix.texi:1476 msgid "" "The daemon protocol is @emph{unauthenticated and unencrypted}. Using " "@code{--listen=@var{host}} is suitable on local networks, such as clusters, " "where only trusted nodes may connect to the build daemon. In other cases " "where remote access to the daemon is needed, we recommend using Unix-domain " "sockets along with SSH." msgstr "" #. type: table #: doc/guix.texi:1481 msgid "" "When @code{--listen} is omitted, @command{guix-daemon} listens for " "connections on the Unix-domain socket located at @file{@var{localstatedir}/" "guix/daemon-socket/socket}." msgstr "" #. type: Plain text #: doc/guix.texi:1491 msgid "" "When using Guix on top of GNU/Linux distribution other than GuixSD---a so-" "called @dfn{foreign distro}---a few additional steps are needed to get " "everything in place. Here are some of them." msgstr "" #. type: anchor{#1} #: doc/guix.texi:1495 msgid "locales-and-locpath" msgstr "" #. type: cindex #: doc/guix.texi:1495 #, no-wrap msgid "locales, when not on GuixSD" msgstr "" #. type: vindex #: doc/guix.texi:1496 doc/guix.texi:10533 #, no-wrap msgid "LOCPATH" msgstr "" #. type: vindex #: doc/guix.texi:1497 #, no-wrap msgid "GUIX_LOCPATH" msgstr "" #. type: Plain text #: doc/guix.texi:1502 msgid "" "Packages installed @i{via} Guix will not use the locale data of the host " "system. Instead, you must first install one of the locale packages " "available with Guix and then define the @code{GUIX_LOCPATH} environment " "variable:" msgstr "" #. type: example #: doc/guix.texi:1506 #, no-wrap msgid "" "$ guix package -i glibc-locales\n" "$ export GUIX_LOCPATH=$HOME/.guix-profile/lib/locale\n" msgstr "" #. type: Plain text #: doc/guix.texi:1512 msgid "" "Note that the @code{glibc-locales} package contains data for all the locales " "supported by the GNU@tie{}libc and weighs in at around 110@tie{}MiB. " "Alternatively, the @code{glibc-utf8-locales} is smaller but limited to a few " "UTF-8 locales." msgstr "" #. type: Plain text #: doc/guix.texi:1516 msgid "" "The @code{GUIX_LOCPATH} variable plays a role similar to @code{LOCPATH} " "(@pxref{Locale Names, @code{LOCPATH},, libc, The GNU C Library Reference " "Manual}). There are two important differences though:" msgstr "" #. type: enumerate #: doc/guix.texi:1523 msgid "" "@code{GUIX_LOCPATH} is honored only by the libc in Guix, and not by the libc " "provided by foreign distros. Thus, using @code{GUIX_LOCPATH} allows you to " "make sure the programs of the foreign distro will not end up loading " "incompatible locale data." msgstr "" #. type: enumerate #: doc/guix.texi:1530 msgid "" "libc suffixes each entry of @code{GUIX_LOCPATH} with @code{/X.Y}, where " "@code{X.Y} is the libc version---e.g., @code{2.22}. This means that, should " "your Guix profile contain a mixture of programs linked against different " "libc version, each libc version will only try to load locale data in the " "right format." msgstr "" #. type: Plain text #: doc/guix.texi:1534 msgid "" "This is important because the locale data format used by different libc " "versions may be incompatible." msgstr "" #. type: cindex #: doc/guix.texi:1537 #, no-wrap msgid "name service switch, glibc" msgstr "" #. type: cindex #: doc/guix.texi:1538 #, no-wrap msgid "NSS (name service switch), glibc" msgstr "" #. type: cindex #: doc/guix.texi:1539 #, no-wrap msgid "nscd (name service caching daemon)" msgstr "" #. type: cindex #: doc/guix.texi:1540 #, no-wrap msgid "name service caching daemon (nscd)" msgstr "" #. type: Plain text #: doc/guix.texi:1547 msgid "" "When using Guix on a foreign distro, we @emph{strongly recommend} that the " "system run the GNU C library's @dfn{name service cache daemon}, " "@command{nscd}, which should be listening on the @file{/var/run/nscd/socket} " "socket. Failing to do that, applications installed with Guix may fail to " "look up host names or user accounts, or may even crash. The next paragraphs " "explain why." msgstr "" #. type: file{#1} #: doc/guix.texi:1548 #, no-wrap msgid "nsswitch.conf" msgstr "" #. type: Plain text #: doc/guix.texi:1553 msgid "" "The GNU C library implements a @dfn{name service switch} (NSS), which is an " "extensible mechanism for ``name lookups'' in general: host name resolution, " "user accounts, and more (@pxref{Name Service Switch,,, libc, The GNU C " "Library Reference Manual})." msgstr "" #. type: cindex #: doc/guix.texi:1554 #, no-wrap msgid "Network information service (NIS)" msgstr "" #. type: cindex #: doc/guix.texi:1555 #, no-wrap msgid "NIS (Network information service)" msgstr "" #. type: Plain text #: doc/guix.texi:1564 msgid "" "Being extensible, the NSS supports @dfn{plugins}, which provide new name " "lookup implementations: for example, the @code{nss-mdns} plugin allow " "resolution of @code{.local} host names, the @code{nis} plugin allows user " "account lookup using the Network information service (NIS), and so on. " "These extra ``lookup services'' are configured system-wide in @file{/etc/" "nsswitch.conf}, and all the programs running on the system honor those " "settings (@pxref{NSS Configuration File,,, libc, The GNU C Reference " "Manual})." msgstr "" #. type: Plain text #: doc/guix.texi:1574 msgid "" "When they perform a name lookup---for instance by calling the " "@code{getaddrinfo} function in C---applications first try to connect to the " "nscd; on success, nscd performs name lookups on their behalf. If the nscd " "is not running, then they perform the name lookup by themselves, by loading " "the name lookup services into their own address space and running it. These " "name lookup services---the @file{libnss_*.so} files---are @code{dlopen}'d, " "but they may come from the host system's C library, rather than from the C " "library the application is linked against (the C library coming from Guix)." msgstr "" #. type: Plain text #: doc/guix.texi:1579 msgid "" "And this is where the problem is: if your application is linked against " "Guix's C library (say, glibc 2.24) and tries to load NSS plugins from " "another C library (say, @code{libnss_mdns.so} for glibc 2.22), it will " "likely crash or have its name lookups fail unexpectedly." msgstr "" #. type: Plain text #: doc/guix.texi:1584 msgid "" "Running @command{nscd} on the system, among other advantages, eliminates " "this binary incompatibility problem because those @code{libnss_*.so} files " "are loaded in the @command{nscd} process, not in applications themselves." msgstr "" #. type: subsection #: doc/guix.texi:1585 #, no-wrap msgid "X11 Fonts" msgstr "" #. type: cindex #: doc/guix.texi:1587 doc/guix.texi:24079 #, no-wrap msgid "fonts" msgstr "" #. type: Plain text #: doc/guix.texi:1595 msgid "" "The majority of graphical applications use Fontconfig to locate and load " "fonts and perform X11-client-side rendering. The @code{fontconfig} package " "in Guix looks for fonts in @file{$HOME/.guix-profile} by default. Thus, to " "allow graphical applications installed with Guix to display fonts, you have " "to install fonts with Guix as well. Essential font packages include " "@code{gs-fonts}, @code{font-dejavu}, and @code{font-gnu-freefont-ttf}." msgstr "" #. type: Plain text #: doc/guix.texi:1602 msgid "" "To display text written in Chinese languages, Japanese, or Korean in " "graphical applications, consider installing @code{font-adobe-source-han-" "sans} or @code{font-wqy-zenhei}. The former has multiple outputs, one per " "language family (@pxref{Packages with Multiple Outputs}). For instance, the " "following command installs fonts for Chinese languages:" msgstr "" #. type: example #: doc/guix.texi:1605 #, no-wrap msgid "guix package -i font-adobe-source-han-sans:cn\n" msgstr "" #. type: code{#1} #: doc/guix.texi:1607 #, no-wrap msgid "xterm" msgstr "" #. type: Plain text #: doc/guix.texi:1611 msgid "" "Older programs such as @command{xterm} do not use Fontconfig and instead " "rely on server-side font rendering. Such programs require to specify a full " "name of a font using XLFD (X Logical Font Description), like this:" msgstr "" #. type: example #: doc/guix.texi:1614 #, no-wrap msgid "-*-dejavu sans-medium-r-normal-*-*-100-*-*-*-*-*-1\n" msgstr "" #. type: Plain text #: doc/guix.texi:1618 msgid "" "To be able to use such full names for the TrueType fonts installed in your " "Guix profile, you need to extend the font path of the X server:" msgstr "" #. type: example #: doc/guix.texi:1623 #, no-wrap msgid "xset +fp $(dirname $(readlink -f ~/.guix-profile/share/fonts/truetype/fonts.dir))\n" msgstr "" #. type: code{#1} #: doc/guix.texi:1625 #, no-wrap msgid "xlsfonts" msgstr "" #. type: Plain text #: doc/guix.texi:1628 msgid "" "After that, you can run @code{xlsfonts} (from @code{xlsfonts} package) to " "make sure your TrueType fonts are listed there." msgstr "" #. type: code{#1} #: doc/guix.texi:1629 #, no-wrap msgid "fc-cache" msgstr "" #. type: cindex #: doc/guix.texi:1630 #, no-wrap msgid "font cache" msgstr "" #. type: Plain text #: doc/guix.texi:1636 msgid "" "After installing fonts you may have to refresh the font cache to use them in " "applications. The same applies when applications installed via Guix do not " "seem to find fonts. To force rebuilding of the font cache run @code{fc-" "cache -f}. The @code{fc-cache} command is provided by the @code{fontconfig} " "package." msgstr "" #. type: code{#1} #: doc/guix.texi:1639 doc/guix.texi:21716 #, no-wrap msgid "nss-certs" msgstr "" #. type: Plain text #: doc/guix.texi:1642 msgid "" "The @code{nss-certs} package provides X.509 certificates, which allow " "programs to authenticate Web servers accessed over HTTPS." msgstr "" #. type: Plain text #: doc/guix.texi:1647 msgid "" "When using Guix on a foreign distro, you can install this package and define " "the relevant environment variables so that packages know where to look for " "certificates. @xref{X.509 Certificates}, for detailed information." msgstr "" #. type: subsection #: doc/guix.texi:1648 #, no-wrap msgid "Emacs Packages" msgstr "" #. type: code{#1} #: doc/guix.texi:1650 #, no-wrap msgid "emacs" msgstr "" #. type: Plain text #: doc/guix.texi:1661 msgid "" "When you install Emacs packages with Guix, the elisp files may be placed " "either in @file{$HOME/.guix-profile/share/emacs/site-lisp/} or in sub-" "directories of @file{$HOME/.guix-profile/share/emacs/site-lisp/guix.d/}. " "The latter directory exists because potentially there may exist thousands of " "Emacs packages and storing all their files in a single directory may not be " "reliable (because of name conflicts). So we think using a separate " "directory for each package is a good idea. It is very similar to how the " "Emacs package system organizes the file structure (@pxref{Package Files,,, " "emacs, The GNU Emacs Manual})." msgstr "" #. type: Plain text #: doc/guix.texi:1667 msgid "" "By default, Emacs (installed with Guix) ``knows'' where these packages are " "placed, so you do not need to perform any configuration. If, for some " "reason, you want to avoid auto-loading Emacs packages installed with Guix, " "you can do so by running Emacs with @code{--no-site-file} option " "(@pxref{Init File,,, emacs, The GNU Emacs Manual})." msgstr "" #. type: subsection #: doc/guix.texi:1668 #, no-wrap msgid "The GCC toolchain" msgstr "" #. type: cindex #: doc/guix.texi:1670 #, no-wrap msgid "GCC" msgstr "" #. type: cindex #: doc/guix.texi:1671 #, no-wrap msgid "ld-wrapper" msgstr "" #. type: Plain text #: doc/guix.texi:1680 msgid "" "Guix offers individual compiler packages such as @code{gcc} but if you are " "in need of a complete toolchain for compiling and linking source code what " "you really want is the @code{gcc-toolchain} package. This package provides " "a complete GCC toolchain for C/C++ development, including GCC itself, the " "GNU C Library (headers and binaries, plus debugging symbols in the " "@code{debug} output), Binutils, and a linker wrapper." msgstr "" #. type: cindex #: doc/guix.texi:1681 #, no-wrap msgid "attempt to use impure library, error message" msgstr "" #. type: Plain text #: doc/guix.texi:1691 msgid "" "The wrapper's purpose is to inspect the @code{-L} and @code{-l} switches " "passed to the linker, add corresponding @code{-rpath} arguments, and invoke " "the actual linker with this new set of arguments. By default, the linker " "wrapper refuses to link to libraries outside the store to ensure " "``purity''. This can be annoying when using the toolchain to link with " "local libraries. To allow references to libraries outside the store you " "need to define the environment variable " "@code{GUIX_LD_WRAPPER_ALLOW_IMPURITIES}." msgstr "" #. type: cindex #: doc/guix.texi:1698 #, no-wrap msgid "packages" msgstr "" #. type: Plain text #: doc/guix.texi:1703 msgid "" "The purpose of GNU Guix is to allow users to easily install, upgrade, and " "remove software packages, without having to know about their build " "procedures or dependencies. Guix also goes beyond this obvious set of " "features." msgstr "" #. type: Plain text #: doc/guix.texi:1711 msgid "" "This chapter describes the main features of Guix, as well as the package " "management tools it provides. Along with the command-line interface " "described below (@pxref{Invoking guix package, @code{guix package}}), you " "may also use the Emacs-Guix interface (@pxref{Top,,, emacs-guix, The Emacs-" "Guix Reference Manual}), after installing @code{emacs-guix} package (run " "@kbd{M-x guix-help} command to start with it):" msgstr "" #. type: example #: doc/guix.texi:1714 #, no-wrap msgid "guix package -i emacs-guix\n" msgstr "" #. type: Plain text #: doc/guix.texi:1736 msgid "" "When using Guix, each package ends up in the @dfn{package store}, in its own " "directory---something that resembles @file{/gnu/store/xxx-package-1.2}, " "where @code{xxx} is a base32 string." msgstr "" #. type: Plain text #: doc/guix.texi:1741 msgid "" "Instead of referring to these directories, users have their own " "@dfn{profile}, which points to the packages that they actually want to use. " "These profiles are stored within each user's home directory, at @code{$HOME/." "guix-profile}." msgstr "" #. type: Plain text #: doc/guix.texi:1749 msgid "" "For example, @code{alice} installs GCC 4.7.2. As a result, @file{/home/" "alice/.guix-profile/bin/gcc} points to @file{/gnu/store/@dots{}-gcc-4.7.2/" "bin/gcc}. Now, on the same machine, @code{bob} had already installed GCC " "4.8.0. The profile of @code{bob} simply continues to point to @file{/gnu/" "store/@dots{}-gcc-4.8.0/bin/gcc}---i.e., both versions of GCC coexist on the " "same system without any interference." msgstr "" #. type: Plain text #: doc/guix.texi:1753 msgid "" "The @command{guix package} command is the central tool to manage packages " "(@pxref{Invoking guix package}). It operates on the per-user profiles, and " "can be used @emph{with normal user privileges}." msgstr "" #. type: cindex #: doc/guix.texi:1754 doc/guix.texi:1832 #, no-wrap msgid "transactions" msgstr "" #. type: Plain text #: doc/guix.texi:1761 msgid "" "The command provides the obvious install, remove, and upgrade operations. " "Each invocation is actually a @emph{transaction}: either the specified " "operation succeeds, or nothing happens. Thus, if the @command{guix package} " "process is terminated during the transaction, or if a power outage occurs " "during the transaction, then the user's profile remains in its previous " "state, and remains usable." msgstr "" #. type: Plain text #: doc/guix.texi:1769 msgid "" "In addition, any package transaction may be @emph{rolled back}. So, if, for " "example, an upgrade installs a new version of a package that turns out to " "have a serious bug, users may roll back to the previous instance of their " "profile, which was known to work well. Similarly, the global system " "configuration on GuixSD is subject to transactional upgrades and roll-back " "(@pxref{Using the Configuration System})." msgstr "" #. type: Plain text #: doc/guix.texi:1776 msgid "" "All packages in the package store may be @emph{garbage-collected}. Guix can " "determine which packages are still referenced by user profiles, and remove " "those that are provably no longer referenced (@pxref{Invoking guix gc}). " "Users may also explicitly remove old generations of their profile so that " "the packages they refer to can be collected." msgstr "" #. type: cindex #: doc/guix.texi:1777 doc/guix.texi:3217 #, no-wrap msgid "reproducibility" msgstr "" #. type: Plain text #: doc/guix.texi:1789 msgid "" "Guix takes a @dfn{purely functional} approach to package management, as " "described in the introduction (@pxref{Introduction}). Each @file{/gnu/" "store} package directory name contains a hash of all the inputs that were " "used to build that package---compiler, libraries, build scripts, etc. This " "direct correspondence allows users to make sure a given package installation " "matches the current state of their distribution. It also helps maximize " "@dfn{build reproducibility}: thanks to the isolated build environments that " "are used, a given build is likely to yield bit-identical files when " "performed on different machines (@pxref{Invoking guix-daemon, container})." msgstr "" #. type: Plain text #: doc/guix.texi:1800 msgid "" "This foundation allows Guix to support @dfn{transparent binary/source " "deployment}. When a pre-built binary for a @file{/gnu/store} item is " "available from an external source---a @dfn{substitute}, Guix just downloads " "it and unpacks it; otherwise, it builds the package from source, locally " "(@pxref{Substitutes}). Because build results are usually bit-for-bit " "reproducible, users do not have to trust servers that provide substitutes: " "they can force a local build and @emph{challenge} providers (@pxref{Invoking " "guix challenge})." msgstr "" #. type: Plain text #: doc/guix.texi:1806 msgid "" "Control over the build environment is a feature that is also useful for " "developers. The @command{guix environment} command allows developers of a " "package to quickly set up the right development environment for their " "package, without having to manually install the dependencies of the package " "into their profile (@pxref{Invoking guix environment})." msgstr "" #. type: cindex #: doc/guix.texi:1807 #, no-wrap msgid "replication, of software environments" msgstr "" #. type: cindex #: doc/guix.texi:1808 #, no-wrap msgid "provenance tracking, of software artifacts" msgstr "" #. type: Plain text #: doc/guix.texi:1815 msgid "" "All of Guix and its package definitions is version-controlled, and " "@command{guix pull} allows you to ``travel in time'' on the history of Guix " "itself (@pxref{Invoking guix pull}). This makes it possible to replicate a " "Guix instance on a different machine or at a later point in time, which in " "turn allows you to @emph{replicate complete software environments}, while " "retaining precise @dfn{provenance tracking} of the software." msgstr "" #. type: section #: doc/guix.texi:1817 #, no-wrap msgid "Invoking @command{guix package}" msgstr "" #. type: cindex #: doc/guix.texi:1819 #, no-wrap msgid "installing packages" msgstr "" #. type: cindex #: doc/guix.texi:1820 #, no-wrap msgid "removing packages" msgstr "" #. type: cindex #: doc/guix.texi:1821 #, no-wrap msgid "package installation" msgstr "" #. type: cindex #: doc/guix.texi:1822 #, no-wrap msgid "package removal" msgstr "" #. type: Plain text #: doc/guix.texi:1828 msgid "" "The @command{guix package} command is the tool that allows users to install, " "upgrade, and remove packages, as well as rolling back to previous " "configurations. It operates only on the user's own profile, and works with " "normal user privileges (@pxref{Features}). Its syntax is:" msgstr "" #. type: example #: doc/guix.texi:1831 #, no-wrap msgid "guix package @var{options}\n" msgstr "" #. type: Plain text #: doc/guix.texi:1837 msgid "" "Primarily, @var{options} specifies the operations to be performed during the " "transaction. Upon completion, a new profile is created, but previous " "@dfn{generations} of the profile remain available, should the user want to " "roll back." msgstr "" #. type: Plain text #: doc/guix.texi:1840 msgid "" "For example, to remove @code{lua} and install @code{guile} and @code{guile-" "cairo} in a single transaction:" msgstr "" #. type: example #: doc/guix.texi:1843 #, no-wrap msgid "guix package -r lua -i guile guile-cairo\n" msgstr "" #. type: Plain text #: doc/guix.texi:1849 msgid "" "@command{guix package} also supports a @dfn{declarative approach} whereby " "the user specifies the exact set of packages to be available and passes it " "@i{via} the @option{--manifest} option (@pxref{profile-manifest, @option{--" "manifest}})." msgstr "" #. type: cindex #: doc/guix.texi:1850 #, no-wrap msgid "profile" msgstr "" #. type: Plain text #: doc/guix.texi:1856 msgid "" "For each user, a symlink to the user's default profile is automatically " "created in @file{$HOME/.guix-profile}. This symlink always points to the " "current generation of the user's default profile. Thus, users can add " "@file{$HOME/.guix-profile/bin} to their @code{PATH} environment variable, " "and so on." msgstr "" #. type: cindex #: doc/guix.texi:1856 doc/guix.texi:2053 #, no-wrap msgid "search paths" msgstr "" #. type: Plain text #: doc/guix.texi:1861 msgid "" "If you are not using the Guix System Distribution, consider adding the " "following lines to your @file{~/.bash_profile} (@pxref{Bash Startup Files,,, " "bash, The GNU Bash Reference Manual}) so that newly-spawned shells get all " "the right environment variable definitions:" msgstr "" #. type: example #: doc/guix.texi:1865 #, no-wrap msgid "" "GUIX_PROFILE=\"$HOME/.guix-profile\" ; \\\n" "source \"$HOME/.guix-profile/etc/profile\"\n" msgstr "" #. type: Plain text #: doc/guix.texi:1876 msgid "" "In a multi-user setup, user profiles are stored in a place registered as a " "@dfn{garbage-collector root}, which @file{$HOME/.guix-profile} points to " "(@pxref{Invoking guix gc}). That directory is normally " "@code{@var{localstatedir}/guix/profiles/per-user/@var{user}}, where " "@var{localstatedir} is the value passed to @code{configure} as @code{--" "localstatedir}, and @var{user} is the user name. The @file{per-user} " "directory is created when @command{guix-daemon} is started, and the " "@var{user} sub-directory is created by @command{guix package}." msgstr "" #. type: Plain text #: doc/guix.texi:1878 msgid "The @var{options} can be among the following:" msgstr "" #. type: item #: doc/guix.texi:1881 #, no-wrap msgid "--install=@var{package} @dots{}" msgstr "" #. type: itemx #: doc/guix.texi:1882 #, no-wrap msgid "-i @var{package} @dots{}" msgstr "" #. type: table #: doc/guix.texi:1884 msgid "Install the specified @var{package}s." msgstr "" #. type: table #: doc/guix.texi:1889 msgid "" "Each @var{package} may specify either a simple package name, such as " "@code{guile}, or a package name followed by an at-sign and version number, " "such as @code{guile@@1.8.8} or simply @code{guile@@1.8} (in the latter case, " "the newest version prefixed by @code{1.8} is selected.)" msgstr "" #. type: table #: doc/guix.texi:1897 msgid "" "If no version number is specified, the newest available version will be " "selected. In addition, @var{package} may contain a colon, followed by the " "name of one of the outputs of the package, as in @code{gcc:doc} or " "@code{binutils@@2.22:lib} (@pxref{Packages with Multiple Outputs}). " "Packages with a corresponding name (and optionally version) are searched for " "among the GNU distribution modules (@pxref{Package Modules})." msgstr "" #. type: cindex #: doc/guix.texi:1898 #, no-wrap msgid "propagated inputs" msgstr "" #. type: table #: doc/guix.texi:1904 msgid "" "Sometimes packages have @dfn{propagated inputs}: these are dependencies that " "automatically get installed along with the required package (@pxref{package-" "propagated-inputs, @code{propagated-inputs} in @code{package} objects}, for " "information about propagated inputs in package definitions)." msgstr "" #. type: anchor{#1} #: doc/guix.texi:1911 msgid "package-cmd-propagated-inputs" msgstr "" #. type: table #: doc/guix.texi:1911 msgid "" "An example is the GNU MPC library: its C header files refer to those of the " "GNU MPFR library, which in turn refer to those of the GMP library. Thus, " "when installing MPC, the MPFR and GMP libraries also get installed in the " "profile; removing MPC also removes MPFR and GMP---unless they had also been " "explicitly installed by the user." msgstr "" #. type: table #: doc/guix.texi:1916 msgid "" "Besides, packages sometimes rely on the definition of environment variables " "for their search paths (see explanation of @code{--search-paths} below). " "Any missing or possibly incorrect environment variable definitions are " "reported here." msgstr "" #. type: item #: doc/guix.texi:1917 #, no-wrap msgid "--install-from-expression=@var{exp}" msgstr "" #. type: itemx #: doc/guix.texi:1918 #, no-wrap msgid "-e @var{exp}" msgstr "" #. type: table #: doc/guix.texi:1920 msgid "Install the package @var{exp} evaluates to." msgstr "" #. type: table #: doc/guix.texi:1925 msgid "" "@var{exp} must be a Scheme expression that evaluates to a @code{} " "object. This option is notably useful to disambiguate between same-named " "variants of a package, with expressions such as @code{(@@ (gnu packages " "base) guile-final)}." msgstr "" #. type: table #: doc/guix.texi:1929 msgid "" "Note that this option installs the first output of the specified package, " "which may be insufficient when needing a specific output of a multiple-" "output package." msgstr "" #. type: item #: doc/guix.texi:1930 #, no-wrap msgid "--install-from-file=@var{file}" msgstr "" #. type: itemx #: doc/guix.texi:1931 doc/guix.texi:6471 #, no-wrap msgid "-f @var{file}" msgstr "" #. type: table #: doc/guix.texi:1933 msgid "Install the package that the code within @var{file} evaluates to." msgstr "" #. type: table #: doc/guix.texi:1936 doc/guix.texi:8162 msgid "" "As an example, @var{file} might contain a definition like this " "(@pxref{Defining Packages}):" msgstr "" #. type: example #: doc/guix.texi:1939 doc/guix.texi:6480 #, no-wrap msgid "@verbatiminclude package-hello.scm\n" msgstr "" #. type: table #: doc/guix.texi:1945 msgid "" "Developers may find it useful to include such a @file{guix.scm} file in the " "root of their project source tree that can be used to test development " "snapshots and create reproducible development environments (@pxref{Invoking " "guix environment})." msgstr "" #. type: item #: doc/guix.texi:1946 #, no-wrap msgid "--remove=@var{package} @dots{}" msgstr "" #. type: itemx #: doc/guix.texi:1947 #, no-wrap msgid "-r @var{package} @dots{}" msgstr "" #. type: table #: doc/guix.texi:1949 msgid "Remove the specified @var{package}s." msgstr "" #. type: table #: doc/guix.texi:1954 msgid "" "As for @code{--install}, each @var{package} may specify a version number and/" "or output name in addition to the package name. For instance, @code{-r " "glibc:debug} would remove the @code{debug} output of @code{glibc}." msgstr "" #. type: item #: doc/guix.texi:1955 #, no-wrap msgid "--upgrade[=@var{regexp} @dots{}]" msgstr "" #. type: itemx #: doc/guix.texi:1956 #, no-wrap msgid "-u [@var{regexp} @dots{}]" msgstr "" #. type: cindex #: doc/guix.texi:1957 #, no-wrap msgid "upgrading packages" msgstr "" #. type: table #: doc/guix.texi:1961 msgid "" "Upgrade all the installed packages. If one or more @var{regexp}s are " "specified, upgrade only installed packages whose name matches a " "@var{regexp}. Also see the @code{--do-not-upgrade} option below." msgstr "" #. type: table #: doc/guix.texi:1966 msgid "" "Note that this upgrades package to the latest version of packages found in " "the distribution currently installed. To update your distribution, you " "should regularly run @command{guix pull} (@pxref{Invoking guix pull})." msgstr "" #. type: item #: doc/guix.texi:1967 #, no-wrap msgid "--do-not-upgrade[=@var{regexp} @dots{}]" msgstr "" #. type: table #: doc/guix.texi:1972 msgid "" "When used together with the @code{--upgrade} option, do @emph{not} upgrade " "any packages whose name matches a @var{regexp}. For example, to upgrade all " "packages in the current profile except those containing the substring " "``emacs'':" msgstr "" #. type: example #: doc/guix.texi:1975 #, no-wrap msgid "$ guix package --upgrade . --do-not-upgrade emacs\n" msgstr "" #. type: anchor{#1} #: doc/guix.texi:1977 #, no-wrap msgid "profile-manifest" msgstr "" #. type: item #: doc/guix.texi:1977 doc/guix.texi:3455 doc/guix.texi:7393 doc/guix.texi:8167 #: doc/guix.texi:8851 #, no-wrap msgid "--manifest=@var{file}" msgstr "" #. type: itemx #: doc/guix.texi:1978 doc/guix.texi:3456 doc/guix.texi:7394 doc/guix.texi:8168 #, no-wrap msgid "-m @var{file}" msgstr "" #. type: cindex #: doc/guix.texi:1979 #, no-wrap msgid "profile declaration" msgstr "" #. type: cindex #: doc/guix.texi:1980 #, no-wrap msgid "profile manifest" msgstr "" #. type: table #: doc/guix.texi:1983 msgid "" "Create a new generation of the profile from the manifest object returned by " "the Scheme code in @var{file}." msgstr "" #. type: table #: doc/guix.texi:1989 msgid "" "This allows you to @emph{declare} the profile's contents rather than " "constructing it through a sequence of @code{--install} and similar " "commands. The advantage is that @var{file} can be put under version " "control, copied to different machines to reproduce the same profile, and so " "on." msgstr "" #. type: table #: doc/guix.texi:1993 msgid "" "@var{file} must return a @dfn{manifest} object, which is roughly a list of " "packages:" msgstr "" #. type: findex #: doc/guix.texi:1994 #, no-wrap msgid "packages->manifest" msgstr "" #. type: example #: doc/guix.texi:1997 #, no-wrap msgid "" "(use-package-modules guile emacs)\n" "\n" msgstr "" #. type: example #: doc/guix.texi:2003 #, no-wrap msgid "" "(packages->manifest\n" " (list emacs\n" " guile-2.0\n" " ;; Use a specific package output.\n" " (list guile-2.0 \"debug\")))\n" msgstr "" #. type: findex #: doc/guix.texi:2005 #, no-wrap msgid "specifications->manifest" msgstr "" #. type: table #: doc/guix.texi:2012 msgid "" "In this example we have to know which modules define the @code{emacs} and " "@code{guile-2.0} variables to provide the right @code{use-package-modules} " "line, which can be cumbersome. We can instead provide regular package " "specifications and let @code{specifications->manifest} look up the " "corresponding package objects, like this:" msgstr "" #. type: example #: doc/guix.texi:2016 #, no-wrap msgid "" "(specifications->manifest\n" " '(\"emacs\" \"guile@@2.2\" \"guile@@2.2:debug\"))\n" msgstr "" #. type: item #: doc/guix.texi:2018 #, no-wrap msgid "--roll-back" msgstr "" #. type: cindex #: doc/guix.texi:2019 doc/guix.texi:22369 #, no-wrap msgid "rolling back" msgstr "" #. type: cindex #: doc/guix.texi:2020 #, no-wrap msgid "undoing transactions" msgstr "" #. type: cindex #: doc/guix.texi:2021 #, no-wrap msgid "transactions, undoing" msgstr "" #. type: table #: doc/guix.texi:2024 msgid "" "Roll back to the previous @dfn{generation} of the profile---i.e., undo the " "last transaction." msgstr "" #. type: table #: doc/guix.texi:2027 msgid "" "When combined with options such as @code{--install}, roll back occurs before " "any other actions." msgstr "" #. type: table #: doc/guix.texi:2031 msgid "" "When rolling back from the first generation that actually contains installed " "packages, the profile is made to point to the @dfn{zeroth generation}, which " "contains no files apart from its own metadata." msgstr "" #. type: table #: doc/guix.texi:2035 msgid "" "After having rolled back, installing, removing, or upgrading packages " "overwrites previous future generations. Thus, the history of the " "generations in a profile is always linear." msgstr "" #. type: item #: doc/guix.texi:2036 #, no-wrap msgid "--switch-generation=@var{pattern}" msgstr "" #. type: itemx #: doc/guix.texi:2037 #, no-wrap msgid "-S @var{pattern}" msgstr "" #. type: cindex #: doc/guix.texi:2038 doc/guix.texi:2236 doc/guix.texi:22327 #, no-wrap msgid "generations" msgstr "" #. type: table #: doc/guix.texi:2040 msgid "Switch to a particular generation defined by @var{pattern}." msgstr "" #. type: table #: doc/guix.texi:2046 msgid "" "@var{pattern} may be either a generation number or a number prefixed with ``" "+'' or ``-''. The latter means: move forward/backward by a specified number " "of generations. For example, if you want to return to the latest generation " "after @code{--roll-back}, use @code{--switch-generation=+1}." msgstr "" #. type: table #: doc/guix.texi:2051 msgid "" "The difference between @code{--roll-back} and @code{--switch-generation=-1} " "is that @code{--switch-generation} will not make a zeroth generation, so if " "a specified generation does not exist, the current generation will not be " "changed." msgstr "" #. type: item #: doc/guix.texi:2052 #, no-wrap msgid "--search-paths[=@var{kind}]" msgstr "" #. type: table #: doc/guix.texi:2058 msgid "" "Report environment variable definitions, in Bash syntax, that may be needed " "in order to use the set of installed packages. These environment variables " "are used to specify @dfn{search paths} for files used by some of the " "installed packages." msgstr "" #. type: table #: doc/guix.texi:2066 msgid "" "For example, GCC needs the @code{CPATH} and @code{LIBRARY_PATH} environment " "variables to be defined so it can look for headers and libraries in the " "user's profile (@pxref{Environment Variables,,, gcc, Using the GNU Compiler " "Collection (GCC)}). If GCC and, say, the C library are installed in the " "profile, then @code{--search-paths} will suggest setting these variables to " "@code{@var{profile}/include} and @code{@var{profile}/lib}, respectively." msgstr "" #. type: table #: doc/guix.texi:2069 msgid "" "The typical use case is to define these environment variables in the shell:" msgstr "" #. type: example #: doc/guix.texi:2072 #, no-wrap msgid "$ eval `guix package --search-paths`\n" msgstr "" #. type: table #: doc/guix.texi:2078 msgid "" "@var{kind} may be one of @code{exact}, @code{prefix}, or @code{suffix}, " "meaning that the returned environment variable definitions will either be " "exact settings, or prefixes or suffixes of the current value of these " "variables. When omitted, @var{kind} defaults to @code{exact}." msgstr "" #. type: table #: doc/guix.texi:2081 msgid "" "This option can also be used to compute the @emph{combined} search paths of " "several profiles. Consider this example:" msgstr "" #. type: example #: doc/guix.texi:2086 #, no-wrap msgid "" "$ guix package -p foo -i guile\n" "$ guix package -p bar -i guile-json\n" "$ guix package -p foo -p bar --search-paths\n" msgstr "" #. type: table #: doc/guix.texi:2091 msgid "" "The last command above reports about the @code{GUILE_LOAD_PATH} variable, " "even though, taken individually, neither @file{foo} nor @file{bar} would " "lead to that recommendation." msgstr "" #. type: item #: doc/guix.texi:2093 doc/guix.texi:2891 doc/guix.texi:3290 #, no-wrap msgid "--profile=@var{profile}" msgstr "" #. type: itemx #: doc/guix.texi:2094 doc/guix.texi:2892 doc/guix.texi:3291 #, no-wrap msgid "-p @var{profile}" msgstr "" #. type: table #: doc/guix.texi:2096 msgid "Use @var{profile} instead of the user's default profile." msgstr "" #. type: cindex #: doc/guix.texi:2097 #, no-wrap msgid "collisions, in a profile" msgstr "" #. type: cindex #: doc/guix.texi:2098 #, no-wrap msgid "colliding packages in profiles" msgstr "" #. type: cindex #: doc/guix.texi:2099 #, no-wrap msgid "profile collisions" msgstr "" #. type: item #: doc/guix.texi:2100 #, no-wrap msgid "--allow-collisions" msgstr "" #. type: table #: doc/guix.texi:2102 msgid "Allow colliding packages in the new profile. Use at your own risk!" msgstr "" #. type: table #: doc/guix.texi:2106 msgid "" "By default, @command{guix package} reports as an error @dfn{collisions} in " "the profile. Collisions happen when two or more different versions or " "variants of a given package end up in the profile." msgstr "" #. type: item #: doc/guix.texi:2107 doc/guix.texi:2900 doc/guix.texi:8656 #, no-wrap msgid "--verbose" msgstr "" #. type: table #: doc/guix.texi:2110 msgid "" "Produce verbose output. In particular, emit the build log of the " "environment on the standard error port." msgstr "" #. type: item #: doc/guix.texi:2111 doc/guix.texi:2903 doc/guix.texi:3512 #, no-wrap msgid "--bootstrap" msgstr "" #. type: table #: doc/guix.texi:2114 msgid "" "Use the bootstrap Guile to build the profile. This option is only useful to " "distribution developers." msgstr "" #. type: Plain text #: doc/guix.texi:2120 msgid "" "In addition to these actions, @command{guix package} supports the following " "options to query the current state of a profile, or the availability of " "packages:" msgstr "" #. type: item #: doc/guix.texi:2123 #, no-wrap msgid "--search=@var{regexp}" msgstr "" #. type: itemx #: doc/guix.texi:2124 #, no-wrap msgid "-s @var{regexp}" msgstr "" #. type: cindex #: doc/guix.texi:2125 #, no-wrap msgid "searching for packages" msgstr "" #. type: table #: doc/guix.texi:2130 msgid "" "List the available packages whose name, synopsis, or description matches " "@var{regexp}, sorted by relevance. Print all the metadata of matching " "packages in @code{recutils} format (@pxref{Top, GNU recutils databases,, " "recutils, GNU recutils manual})." msgstr "" #. type: table #: doc/guix.texi:2133 msgid "" "This allows specific fields to be extracted using the @command{recsel} " "command, for instance:" msgstr "" #. type: example #: doc/guix.texi:2139 #, no-wrap msgid "" "$ guix package -s malloc | recsel -p name,version,relevance\n" "name: jemalloc\n" "version: 4.5.0\n" "relevance: 6\n" "\n" msgstr "" #. type: example #: doc/guix.texi:2143 #, no-wrap msgid "" "name: glibc\n" "version: 2.25\n" "relevance: 1\n" "\n" msgstr "" #. type: example #: doc/guix.texi:2147 #, no-wrap msgid "" "name: libgc\n" "version: 7.6.0\n" "relevance: 1\n" msgstr "" #. type: table #: doc/guix.texi:2151 msgid "" "Similarly, to show the name of all the packages available under the terms of " "the GNU@tie{}LGPL version 3:" msgstr "" #. type: example #: doc/guix.texi:2155 #, no-wrap msgid "" "$ guix package -s \"\" | recsel -p name -e 'license ~ \"LGPL 3\"'\n" "name: elfutils\n" "\n" msgstr "" #. type: example #: doc/guix.texi:2158 #, no-wrap msgid "" "name: gmp\n" "@dots{}\n" msgstr "" #. type: table #: doc/guix.texi:2163 msgid "" "It is also possible to refine search results using several @code{-s} flags. " "For example, the following command returns a list of board games:" msgstr "" #. type: example #: doc/guix.texi:2168 #, no-wrap msgid "" "$ guix package -s '\\' -s game | recsel -p name\n" "name: gnubg\n" "@dots{}\n" msgstr "" #. type: table #: doc/guix.texi:2174 msgid "" "If we were to omit @code{-s game}, we would also get software packages that " "deal with printed circuit boards; removing the angle brackets around " "@code{board} would further add packages that have to do with keyboards." msgstr "" #. type: table #: doc/guix.texi:2178 msgid "" "And now for a more elaborate example. The following command searches for " "cryptographic libraries, filters out Haskell, Perl, Python, and Ruby " "libraries, and prints the name and synopsis of the matching packages:" msgstr "" #. type: example #: doc/guix.texi:2182 #, no-wrap msgid "" "$ guix package -s crypto -s library | \\\n" " recsel -e '! (name ~ \"^(ghc|perl|python|ruby)\")' -p name,synopsis\n" msgstr "" #. type: table #: doc/guix.texi:2187 msgid "" "@xref{Selection Expressions,,, recutils, GNU recutils manual}, for more " "information on @dfn{selection expressions} for @code{recsel -e}." msgstr "" #. type: item #: doc/guix.texi:2188 #, no-wrap msgid "--show=@var{package}" msgstr "" #. type: table #: doc/guix.texi:2192 msgid "" "Show details about @var{package}, taken from the list of available packages, " "in @code{recutils} format (@pxref{Top, GNU recutils databases,, recutils, " "GNU recutils manual})." msgstr "" #. type: example #: doc/guix.texi:2197 #, no-wrap msgid "" "$ guix package --show=python | recsel -p name,version\n" "name: python\n" "version: 2.7.6\n" "\n" msgstr "" #. type: example #: doc/guix.texi:2200 #, no-wrap msgid "" "name: python\n" "version: 3.3.5\n" msgstr "" #. type: table #: doc/guix.texi:2204 msgid "" "You may also specify the full name of a package to only get details about a " "specific version of it:" msgstr "" #. type: example #: doc/guix.texi:2208 #, no-wrap msgid "" "$ guix package --show=python@@3.4 | recsel -p name,version\n" "name: python\n" "version: 3.4.3\n" msgstr "" #. type: item #: doc/guix.texi:2212 #, no-wrap msgid "--list-installed[=@var{regexp}]" msgstr "" #. type: itemx #: doc/guix.texi:2213 #, no-wrap msgid "-I [@var{regexp}]" msgstr "" #. type: table #: doc/guix.texi:2217 msgid "" "List the currently installed packages in the specified profile, with the " "most recently installed packages shown last. When @var{regexp} is " "specified, list only installed packages whose name matches @var{regexp}." msgstr "" #. type: table #: doc/guix.texi:2223 msgid "" "For each installed package, print the following items, separated by tabs: " "the package name, its version string, the part of the package that is " "installed (for instance, @code{out} for the default output, @code{include} " "for its headers, etc.), and the path of this package in the store." msgstr "" #. type: item #: doc/guix.texi:2224 #, no-wrap msgid "--list-available[=@var{regexp}]" msgstr "" #. type: itemx #: doc/guix.texi:2225 #, no-wrap msgid "-A [@var{regexp}]" msgstr "" #. type: table #: doc/guix.texi:2229 msgid "" "List packages currently available in the distribution for this system " "(@pxref{GNU Distribution}). When @var{regexp} is specified, list only " "installed packages whose name matches @var{regexp}." msgstr "" #. type: table #: doc/guix.texi:2233 msgid "" "For each package, print the following items separated by tabs: its name, its " "version string, the parts of the package (@pxref{Packages with Multiple " "Outputs}), and the source location of its definition." msgstr "" #. type: item #: doc/guix.texi:2234 doc/guix.texi:2881 #, no-wrap msgid "--list-generations[=@var{pattern}]" msgstr "" #. type: itemx #: doc/guix.texi:2235 doc/guix.texi:2882 #, no-wrap msgid "-l [@var{pattern}]" msgstr "" #. type: table #: doc/guix.texi:2241 msgid "" "Return a list of generations along with their creation dates; for each " "generation, show the installed packages, with the most recently installed " "packages shown last. Note that the zeroth generation is never shown." msgstr "" #. type: table #: doc/guix.texi:2246 msgid "" "For each installed package, print the following items, separated by tabs: " "the name of a package, its version string, the part of the package that is " "installed (@pxref{Packages with Multiple Outputs}), and the location of this " "package in the store." msgstr "" #. type: table #: doc/guix.texi:2249 msgid "" "When @var{pattern} is used, the command returns only matching generations. " "Valid patterns include:" msgstr "" #. type: item #: doc/guix.texi:2251 #, no-wrap msgid "@emph{Integers and comma-separated integers}. Both patterns denote" msgstr "" #. type: itemize #: doc/guix.texi:2254 msgid "" "generation numbers. For instance, @code{--list-generations=1} returns the " "first one." msgstr "" #. type: itemize #: doc/guix.texi:2257 msgid "" "And @code{--list-generations=1,8,2} outputs three generations in the " "specified order. Neither spaces nor trailing commas are allowed." msgstr "" #. type: item #: doc/guix.texi:2258 #, no-wrap msgid "@emph{Ranges}. @code{--list-generations=2..9} prints the" msgstr "" #. type: itemize #: doc/guix.texi:2261 msgid "" "specified generations and everything in between. Note that the start of a " "range must be smaller than its end." msgstr "" #. type: itemize #: doc/guix.texi:2265 msgid "" "It is also possible to omit the endpoint. For example, @code{--list-" "generations=2..}, returns all generations starting from the second one." msgstr "" #. type: item #: doc/guix.texi:2266 #, no-wrap msgid "@emph{Durations}. You can also get the last @emph{N}@tie{}days, weeks," msgstr "" #. type: itemize #: doc/guix.texi:2270 msgid "" "or months by passing an integer along with the first letter of the " "duration. For example, @code{--list-generations=20d} lists generations that " "are up to 20 days old." msgstr "" #. type: item #: doc/guix.texi:2272 #, no-wrap msgid "--delete-generations[=@var{pattern}]" msgstr "" #. type: itemx #: doc/guix.texi:2273 #, no-wrap msgid "-d [@var{pattern}]" msgstr "" #. type: table #: doc/guix.texi:2276 msgid "" "When @var{pattern} is omitted, delete all generations except the current one." msgstr "" #. type: table #: doc/guix.texi:2282 msgid "" "This command accepts the same patterns as @option{--list-generations}. When " "@var{pattern} is specified, delete the matching generations. When " "@var{pattern} specifies a duration, generations @emph{older} than the " "specified duration match. For instance, @code{--delete-generations=1m} " "deletes generations that are more than one month old." msgstr "" #. type: table #: doc/guix.texi:2285 msgid "" "If the current generation matches, it is @emph{not} deleted. Also, the " "zeroth generation is never deleted." msgstr "" #. type: table #: doc/guix.texi:2288 msgid "" "Note that deleting generations prevents rolling back to them. Consequently, " "this command must be used with care." msgstr "" #. type: Plain text #: doc/guix.texi:2299 msgid "" "Finally, since @command{guix package} may actually start build processes, it " "supports all the common build options (@pxref{Common Build Options}). It " "also supports package transformation options, such as @option{--with-source} " "(@pxref{Package Transformation Options}). However, note that package " "transformations are lost when upgrading; to preserve transformations across " "upgrades, you should define your own package variant in a Guile module and " "add it to @code{GUIX_PACKAGE_PATH} (@pxref{Defining Packages})." msgstr "" #. type: cindex #: doc/guix.texi:2304 #, no-wrap msgid "pre-built binaries" msgstr "" #. type: Plain text #: doc/guix.texi:2310 msgid "" "Guix supports transparent source/binary deployment, which means that it can " "either build things locally, or download pre-built items from a server, or " "both. We call these pre-built items @dfn{substitutes}---they are " "substitutes for local build results. In many cases, downloading a " "substitute is much faster than building things locally." msgstr "" #. type: Plain text #: doc/guix.texi:2315 msgid "" "Substitutes can be anything resulting from a derivation build " "(@pxref{Derivations}). Of course, in the common case, they are pre-built " "package binaries, but source tarballs, for instance, which also result from " "derivation builds, can be available as substitutes." msgstr "" #. type: cindex #: doc/guix.texi:2328 #, no-wrap msgid "hydra" msgstr "" #. type: cindex #: doc/guix.texi:2329 #, no-wrap msgid "build farm" msgstr "" #. type: Plain text #: doc/guix.texi:2339 msgid "" "The @code{mirror.hydra.gnu.org} server is a front-end to an official build " "farm that builds packages from Guix continuously for some architectures, and " "makes them available as substitutes. This is the default source of " "substitutes; it can be overridden by passing the @option{--substitute-urls} " "option either to @command{guix-daemon} (@pxref{daemon-substitute-urls,, " "@code{guix-daemon --substitute-urls}}) or to client tools such as " "@command{guix package} (@pxref{client-substitute-urls,, client @option{--" "substitute-urls} option})." msgstr "" #. type: Plain text #: doc/guix.texi:2345 msgid "" "Substitute URLs can be either HTTP or HTTPS. HTTPS is recommended because " "communications are encrypted; conversely, using HTTP makes all " "communications visible to an eavesdropper, who could use the information " "gathered to determine, for instance, whether your system has unpatched " "security vulnerabilities." msgstr "" #. type: Plain text #: doc/guix.texi:2354 msgid "" "Substitutes from the official build farm are enabled by default when using " "the Guix System Distribution (@pxref{GNU Distribution}). However, they are " "disabled by default when using Guix on a foreign distribution, unless you " "have explicitly enabled them via one of the recommended installation steps " "(@pxref{Installation}). The following paragraphs describe how to enable or " "disable substitutes for the official build farm; the same procedure can also " "be used to enable substitutes for any other substitute server." msgstr "" #. type: cindex #: doc/guix.texi:2358 #, no-wrap msgid "security" msgstr "" #. type: cindex #: doc/guix.texi:2360 #, no-wrap msgid "access control list (ACL), for substitutes" msgstr "" #. type: cindex #: doc/guix.texi:2361 #, no-wrap msgid "ACL (access control list), for substitutes" msgstr "" #. type: Plain text #: doc/guix.texi:2368 msgid "" "To allow Guix to download substitutes from @code{hydra.gnu.org} or a mirror " "thereof, you must add its public key to the access control list (ACL) of " "archive imports, using the @command{guix archive} command (@pxref{Invoking " "guix archive}). Doing so implies that you trust @code{hydra.gnu.org} to not " "be compromised and to serve genuine substitutes." msgstr "" #. type: Plain text #: doc/guix.texi:2375 msgid "" "The public key for @code{hydra.gnu.org} is installed along with Guix, in " "@code{@var{prefix}/share/guix/hydra.gnu.org.pub}, where @var{prefix} is the " "installation prefix of Guix. If you installed Guix from source, make sure " "you checked the GPG signature of @file{guix-@value{VERSION}.tar.gz}, which " "contains this public key file. Then, you can run something like this:" msgstr "" #. type: example #: doc/guix.texi:2378 #, no-wrap msgid "# guix archive --authorize < @var{prefix}/share/guix/hydra.gnu.org.pub\n" msgstr "" #. type: quotation #: doc/guix.texi:2384 msgid "" "Similarly, the @file{berlin.guixsd.org.pub} file contains the public key for " "the project's new build farm, reachable at @indicateurl{https://berlin." "guixsd.org}." msgstr "" #. type: quotation #: doc/guix.texi:2389 msgid "" "As of this writing @code{berlin.guixsd.org} is being upgraded so it can " "better scale up, but you might want to give it a try. It is backed by 20 " "x86_64/i686 build nodes and may be able to provide substitutes more quickly " "than @code{mirror.hydra.gnu.org}." msgstr "" #. type: Plain text #: doc/guix.texi:2393 msgid "" "Once this is in place, the output of a command like @code{guix build} should " "change from something like:" msgstr "" #. type: example #: doc/guix.texi:2402 #, no-wrap msgid "" "$ guix build emacs --dry-run\n" "The following derivations would be built:\n" " /gnu/store/yr7bnx8xwcayd6j95r2clmkdl1qh688w-emacs-24.3.drv\n" " /gnu/store/x8qsh1hlhgjx6cwsjyvybnfv2i37z23w-dbus-1.6.4.tar.gz.drv\n" " /gnu/store/1ixwp12fl950d15h2cj11c73733jay0z-alsa-lib-1.0.27.1.tar.bz2.drv\n" " /gnu/store/nlma1pw0p603fpfiqy7kn4zm105r5dmw-util-linux-2.21.drv\n" "@dots{}\n" msgstr "" #. type: Plain text #: doc/guix.texi:2406 msgid "to something like:" msgstr "" #. type: example #: doc/guix.texi:2415 #, no-wrap msgid "" "$ guix build emacs --dry-run\n" "112.3 MB would be downloaded:\n" " /gnu/store/pk3n22lbq6ydamyymqkkz7i69wiwjiwi-emacs-24.3\n" " /gnu/store/2ygn4ncnhrpr61rssa6z0d9x22si0va3-libjpeg-8d\n" " /gnu/store/71yz6lgx4dazma9dwn2mcjxaah9w77jq-cairo-1.12.16\n" " /gnu/store/7zdhgp0n1518lvfn8mb96sxqfmvqrl7v-libxrender-0.9.7\n" "@dots{}\n" msgstr "" #. type: Plain text #: doc/guix.texi:2420 msgid "" "This indicates that substitutes from @code{hydra.gnu.org} are usable and " "will be downloaded, when possible, for future builds." msgstr "" #. type: cindex #: doc/guix.texi:2421 #, no-wrap msgid "substitutes, how to disable" msgstr "" #. type: Plain text #: doc/guix.texi:2427 msgid "" "The substitute mechanism can be disabled globally by running @code{guix-" "daemon} with @code{--no-substitutes} (@pxref{Invoking guix-daemon}). It can " "also be disabled temporarily by passing the @code{--no-substitutes} option " "to @command{guix package}, @command{guix build}, and other command-line " "tools." msgstr "" #. type: cindex #: doc/guix.texi:2431 #, no-wrap msgid "digital signatures" msgstr "" #. type: Plain text #: doc/guix.texi:2435 msgid "" "Guix detects and raises an error when attempting to use a substitute that " "has been tampered with. Likewise, it ignores substitutes that are not " "signed, or that are not signed by one of the keys listed in the ACL." msgstr "" #. type: Plain text #: doc/guix.texi:2441 msgid "" "There is one exception though: if an unauthorized server provides " "substitutes that are @emph{bit-for-bit identical} to those provided by an " "authorized server, then the unauthorized server becomes eligible for " "downloads. For example, assume we have chosen two substitute servers with " "this option:" msgstr "" #. type: example #: doc/guix.texi:2444 #, no-wrap msgid "--substitute-urls=\"https://a.example.org https://b.example.org\"\n" msgstr "" #. type: Plain text #: doc/guix.texi:2455 msgid "" "If the ACL contains only the key for @code{b.example.org}, and if @code{a." "example.org} happens to serve the @emph{exact same} substitutes, then Guix " "will download substitutes from @code{a.example.org} because it comes first " "in the list and can be considered a mirror of @code{b.example.org}. In " "practice, independent build machines usually produce the same binaries, " "thanks to bit-reproducible builds (see below)." msgstr "" #. type: Plain text #: doc/guix.texi:2462 msgid "" "When using HTTPS, the server's X.509 certificate is @emph{not} validated (in " "other words, the server is not authenticated), contrary to what HTTPS " "clients such as Web browsers usually do. This is because Guix authenticates " "substitute information itself, as explained above, which is what we care " "about (whereas X.509 certificates are about authenticating bindings between " "domain names and public keys.)" msgstr "" #. type: Plain text #: doc/guix.texi:2474 msgid "" "Substitutes are downloaded over HTTP or HTTPS. The @code{http_proxy} " "environment variable can be set in the environment of @command{guix-daemon} " "and is honored for downloads of substitutes. Note that the value of " "@code{http_proxy} in the environment where @command{guix build}, " "@command{guix package}, and other client commands are run has " "@emph{absolutely no effect}." msgstr "" #. type: Plain text #: doc/guix.texi:2483 msgid "" "Even when a substitute for a derivation is available, sometimes the " "substitution attempt will fail. This can happen for a variety of reasons: " "the substitute server might be offline, the substitute may recently have " "been deleted, the connection might have been interrupted, etc." msgstr "" #. type: Plain text #: doc/guix.texi:2497 msgid "" "When substitutes are enabled and a substitute for a derivation is available, " "but the substitution attempt fails, Guix will attempt to build the " "derivation locally depending on whether or not @code{--fallback} was given " "(@pxref{fallback-option,, common build option @code{--fallback}}). " "Specifically, if @code{--fallback} was omitted, then no local build will be " "performed, and the derivation is considered to have failed. However, if " "@code{--fallback} was given, then Guix will attempt to build the derivation " "locally, and the success or failure of the derivation depends on the success " "or failure of the local build. Note that when substitutes are disabled or " "no substitute is available for the derivation in question, a local build " "will @emph{always} be performed, regardless of whether or not @code{--" "fallback} was given." msgstr "" #. type: Plain text #: doc/guix.texi:2502 msgid "" "To get an idea of how many substitutes are available right now, you can try " "running the @command{guix weather} command (@pxref{Invoking guix weather}). " "This command provides statistics on the substitutes provided by a server." msgstr "" #. type: cindex #: doc/guix.texi:2506 #, no-wrap msgid "trust, of pre-built binaries" msgstr "" #. type: Plain text #: doc/guix.texi:2516 msgid "" "Today, each individual's control over their own computing is at the mercy of " "institutions, corporations, and groups with enough power and determination " "to subvert the computing infrastructure and exploit its weaknesses. While " "using @code{hydra.gnu.org} substitutes can be convenient, we encourage users " "to also build on their own, or even run their own build farm, such that " "@code{hydra.gnu.org} is less of an interesting target. One way to help is " "by publishing the software you build using @command{guix publish} so that " "others have one more choice of server to download substitutes from " "(@pxref{Invoking guix publish})." msgstr "" #. type: Plain text #: doc/guix.texi:2528 msgid "" "Guix has the foundations to maximize build reproducibility " "(@pxref{Features}). In most cases, independent builds of a given package or " "derivation should yield bit-identical results. Thus, through a diverse set " "of independent package builds, we can strengthen the integrity of our " "systems. The @command{guix challenge} command aims to help users assess " "substitute servers, and to assist developers in finding out about non-" "deterministic package builds (@pxref{Invoking guix challenge}). Similarly, " "the @option{--check} option of @command{guix build} allows users to check " "whether previously-installed substitutes are genuine by rebuilding them " "locally (@pxref{build-check, @command{guix build --check}})." msgstr "" #. type: Plain text #: doc/guix.texi:2532 msgid "" "In the future, we want Guix to have support to publish and retrieve binaries " "to/from other users, in a peer-to-peer fashion. If you would like to " "discuss this project, join us on @email{guix-devel@@gnu.org}." msgstr "" #. type: cindex #: doc/guix.texi:2536 #, no-wrap msgid "multiple-output packages" msgstr "" #. type: cindex #: doc/guix.texi:2537 #, no-wrap msgid "package outputs" msgstr "" #. type: cindex #: doc/guix.texi:2538 #, no-wrap msgid "outputs" msgstr "" #. type: Plain text #: doc/guix.texi:2548 msgid "" "Often, packages defined in Guix have a single @dfn{output}---i.e., the " "source package leads to exactly one directory in the store. When running " "@command{guix package -i glibc}, one installs the default output of the GNU " "libc package; the default output is called @code{out}, but its name can be " "omitted as shown in this command. In this particular case, the default " "output of @code{glibc} contains all the C header files, shared libraries, " "static libraries, Info documentation, and other supporting files." msgstr "" #. type: Plain text #: doc/guix.texi:2556 msgid "" "Sometimes it is more appropriate to separate the various types of files " "produced from a single source package into separate outputs. For instance, " "the GLib C library (used by GTK+ and related packages) installs more than " "20 MiB of reference documentation as HTML pages. To save space for users " "who do not need it, the documentation goes to a separate output, called " "@code{doc}. To install the main GLib output, which contains everything but " "the documentation, one would run:" msgstr "" #. type: example #: doc/guix.texi:2559 #, no-wrap msgid "guix package -i glib\n" msgstr "" #. type: item #: doc/guix.texi:2561 doc/guix.texi:23274 doc/guix.texi:23299 #, no-wrap msgid "documentation" msgstr "" #. type: Plain text #: doc/guix.texi:2563 msgid "The command to install its documentation is:" msgstr "" #. type: example #: doc/guix.texi:2566 #, no-wrap msgid "guix package -i glib:doc\n" msgstr "" #. type: Plain text #: doc/guix.texi:2577 msgid "" "Some packages install programs with different ``dependency footprints''. " "For instance, the WordNet package installs both command-line tools and " "graphical user interfaces (GUIs). The former depend solely on the C " "library, whereas the latter depend on Tcl/Tk and the underlying X " "libraries. In this case, we leave the command-line tools in the default " "output, whereas the GUIs are in a separate output. This allows users who do " "not need the GUIs to save space. The @command{guix size} command can help " "find out about such situations (@pxref{Invoking guix size}). @command{guix " "graph} can also be helpful (@pxref{Invoking guix graph})." msgstr "" #. type: Plain text #: doc/guix.texi:2585 msgid "" "There are several such multiple-output packages in the GNU distribution. " "Other conventional output names include @code{lib} for libraries and " "possibly header files, @code{bin} for stand-alone programs, and @code{debug} " "for debugging information (@pxref{Installing Debugging Files}). The outputs " "of a packages are listed in the third column of the output of @command{guix " "package --list-available} (@pxref{Invoking guix package})." msgstr "" #. type: section #: doc/guix.texi:2588 #, no-wrap msgid "Invoking @command{guix gc}" msgstr "" #. type: cindex #: doc/guix.texi:2590 #, no-wrap msgid "garbage collector" msgstr "" #. type: cindex #: doc/guix.texi:2591 #, no-wrap msgid "disk space" msgstr "" #. type: Plain text #: doc/guix.texi:2597 msgid "" "Packages that are installed, but not used, may be @dfn{garbage-collected}. " "The @command{guix gc} command allows users to explicitly run the garbage " "collector to reclaim space from the @file{/gnu/store} directory. It is the " "@emph{only} way to remove files from @file{/gnu/store}---removing files or " "directories manually may break it beyond repair!" msgstr "" #. type: Plain text #: doc/guix.texi:2608 msgid "" "The garbage collector has a set of known @dfn{roots}: any file under @file{/" "gnu/store} reachable from a root is considered @dfn{live} and cannot be " "deleted; any other file is considered @dfn{dead} and may be deleted. The " "set of garbage collector roots (``GC roots'' for short) includes default " "user profiles; by default, the symlinks under @file{/var/guix/gcroots} " "represent these GC roots. New GC roots can be added with @command{guix " "build --root}, for example (@pxref{Invoking guix build})." msgstr "" #. type: Plain text #: doc/guix.texi:2614 msgid "" "Prior to running @code{guix gc --collect-garbage} to make space, it is often " "useful to remove old generations from user profiles; that way, old package " "builds referenced by those generations can be reclaimed. This is achieved " "by running @code{guix package --delete-generations} (@pxref{Invoking guix " "package})." msgstr "" #. type: Plain text #: doc/guix.texi:2618 msgid "" "Our recommendation is to run a garbage collection periodically, or when you " "are short on disk space. For instance, to guarantee that at least 5@tie{}GB " "are available on your disk, simply run:" msgstr "" #. type: example #: doc/guix.texi:2621 #, no-wrap msgid "guix gc -F 5G\n" msgstr "" #. type: Plain text #: doc/guix.texi:2630 msgid "" "It is perfectly safe to run as a non-interactive periodic job " "(@pxref{Scheduled Job Execution}, for how to set up such a job on GuixSD). " "Running @command{guix gc} with no arguments will collect as much garbage as " "it can, but that is often inconvenient: you may find yourself having to " "rebuild or re-download software that is ``dead'' from the GC viewpoint but " "that is necessary to build other pieces of software---e.g., the compiler " "tool chain." msgstr "" #. type: Plain text #: doc/guix.texi:2636 msgid "" "The @command{guix gc} command has three modes of operation: it can be used " "to garbage-collect any dead files (the default), to delete specific files " "(the @code{--delete} option), to print garbage-collector information, or for " "more advanced queries. The garbage collection options are as follows:" msgstr "" #. type: item #: doc/guix.texi:2638 #, no-wrap msgid "--collect-garbage[=@var{min}]" msgstr "" #. type: itemx #: doc/guix.texi:2639 #, no-wrap msgid "-C [@var{min}]" msgstr "" #. type: table #: doc/guix.texi:2643 msgid "" "Collect garbage---i.e., unreachable @file{/gnu/store} files and sub-" "directories. This is the default operation when no option is specified." msgstr "" #. type: table #: doc/guix.texi:2648 msgid "" "When @var{min} is given, stop once @var{min} bytes have been collected. " "@var{min} may be a number of bytes, or it may include a unit as a suffix, " "such as @code{MiB} for mebibytes and @code{GB} for gigabytes (@pxref{Block " "size, size specifications,, coreutils, GNU Coreutils})." msgstr "" #. type: table #: doc/guix.texi:2650 msgid "When @var{min} is omitted, collect all the garbage." msgstr "" #. type: item #: doc/guix.texi:2651 #, no-wrap msgid "--free-space=@var{free}" msgstr "" #. type: itemx #: doc/guix.texi:2652 #, no-wrap msgid "-F @var{free}" msgstr "" #. type: table #: doc/guix.texi:2656 msgid "" "Collect garbage until @var{free} space is available under @file{/gnu/store}, " "if possible; @var{free} denotes storage space, such as @code{500MiB}, as " "described above." msgstr "" #. type: table #: doc/guix.texi:2659 msgid "" "When @var{free} or more is already available in @file{/gnu/store}, do " "nothing and exit immediately." msgstr "" #. type: item #: doc/guix.texi:2660 #, no-wrap msgid "--delete" msgstr "" #. type: itemx #: doc/guix.texi:2661 doc/guix.texi:6618 doc/guix.texi:22540 #, no-wrap msgid "-d" msgstr "" #. type: table #: doc/guix.texi:2665 msgid "" "Attempt to delete all the store files and directories specified as " "arguments. This fails if some of the files are not in the store, or if they " "are still live." msgstr "" #. type: item #: doc/guix.texi:2666 #, no-wrap msgid "--list-failures" msgstr "" #. type: table #: doc/guix.texi:2668 msgid "List store items corresponding to cached build failures." msgstr "" #. type: table #: doc/guix.texi:2672 msgid "" "This prints nothing unless the daemon was started with @option{--cache-" "failures} (@pxref{Invoking guix-daemon, @option{--cache-failures}})." msgstr "" #. type: item #: doc/guix.texi:2673 #, no-wrap msgid "--clear-failures" msgstr "" #. type: table #: doc/guix.texi:2675 msgid "Remove the specified store items from the failed-build cache." msgstr "" #. type: table #: doc/guix.texi:2678 msgid "" "Again, this option only makes sense when the daemon is started with " "@option{--cache-failures}. Otherwise, it does nothing." msgstr "" #. type: item #: doc/guix.texi:2679 #, no-wrap msgid "--list-dead" msgstr "" #. type: table #: doc/guix.texi:2682 msgid "" "Show the list of dead files and directories still present in the store---i." "e., files and directories no longer reachable from any root." msgstr "" #. type: item #: doc/guix.texi:2683 #, no-wrap msgid "--list-live" msgstr "" #. type: table #: doc/guix.texi:2685 msgid "Show the list of live store files and directories." msgstr "" #. type: Plain text #: doc/guix.texi:2689 msgid "In addition, the references among existing store files can be queried:" msgstr "" #. type: item #: doc/guix.texi:2692 #, no-wrap msgid "--references" msgstr "" #. type: itemx #: doc/guix.texi:2693 #, no-wrap msgid "--referrers" msgstr "" #. type: cindex #: doc/guix.texi:2694 doc/guix.texi:7807 #, no-wrap msgid "package dependencies" msgstr "" #. type: table #: doc/guix.texi:2697 msgid "" "List the references (respectively, the referrers) of store files given as " "arguments." msgstr "" #. type: item #: doc/guix.texi:2698 #, no-wrap msgid "--requisites" msgstr "" #. type: itemx #: doc/guix.texi:2699 doc/guix.texi:3415 #, no-wrap msgid "-R" msgstr "" #. type: item #: doc/guix.texi:2700 doc/guix.texi:7683 doc/guix.texi:7711 doc/guix.texi:7779 #, no-wrap msgid "closure" msgstr "" #. type: table #: doc/guix.texi:2705 msgid "" "List the requisites of the store files passed as arguments. Requisites " "include the store files themselves, their references, and the references of " "these, recursively. In other words, the returned list is the " "@dfn{transitive closure} of the store files." msgstr "" #. type: table #: doc/guix.texi:2709 msgid "" "@xref{Invoking guix size}, for a tool to profile the size of the closure of " "an element. @xref{Invoking guix graph}, for a tool to visualize the graph " "of references." msgstr "" #. type: item #: doc/guix.texi:2710 #, no-wrap msgid "--derivers" msgstr "" #. type: item #: doc/guix.texi:2711 doc/guix.texi:3703 doc/guix.texi:7892 #, no-wrap msgid "derivation" msgstr "" #. type: table #: doc/guix.texi:2714 msgid "" "Return the derivation(s) leading to the given store items " "(@pxref{Derivations})." msgstr "" #. type: table #: doc/guix.texi:2716 msgid "For example, this command:" msgstr "" #. type: example #: doc/guix.texi:2719 #, no-wrap msgid "guix gc --derivers `guix package -I ^emacs$ | cut -f4`\n" msgstr "" #. type: table #: doc/guix.texi:2724 msgid "" "returns the @file{.drv} file(s) leading to the @code{emacs} package " "installed in your profile." msgstr "" #. type: table #: doc/guix.texi:2728 msgid "" "Note that there may be zero matching @file{.drv} files, for instance because " "these files have been garbage-collected. There can also be more than one " "matching @file{.drv} due to fixed-output derivations." msgstr "" #. type: Plain text #: doc/guix.texi:2732 msgid "" "Lastly, the following options allow you to check the integrity of the store " "and to control disk usage." msgstr "" #. type: item #: doc/guix.texi:2735 #, no-wrap msgid "--verify[=@var{options}]" msgstr "" #. type: cindex #: doc/guix.texi:2736 #, no-wrap msgid "integrity, of the store" msgstr "" #. type: cindex #: doc/guix.texi:2737 #, no-wrap msgid "integrity checking" msgstr "" #. type: table #: doc/guix.texi:2739 msgid "Verify the integrity of the store." msgstr "" #. type: table #: doc/guix.texi:2742 msgid "" "By default, make sure that all the store items marked as valid in the " "database of the daemon actually exist in @file{/gnu/store}." msgstr "" #. type: table #: doc/guix.texi:2745 msgid "" "When provided, @var{options} must be a comma-separated list containing one " "or more of @code{contents} and @code{repair}." msgstr "" #. type: table #: doc/guix.texi:2751 msgid "" "When passing @option{--verify=contents}, the daemon computes the content " "hash of each store item and compares it against its hash in the database. " "Hash mismatches are reported as data corruptions. Because it traverses " "@emph{all the files in the store}, this command can take a long time, " "especially on systems with a slow disk drive." msgstr "" #. type: cindex #: doc/guix.texi:2752 #, no-wrap msgid "repairing the store" msgstr "" #. type: cindex #: doc/guix.texi:2753 doc/guix.texi:6611 #, no-wrap msgid "corruption, recovering from" msgstr "" #. type: table #: doc/guix.texi:2761 msgid "" "Using @option{--verify=repair} or @option{--verify=contents,repair} causes " "the daemon to try to repair corrupt store items by fetching substitutes for " "them (@pxref{Substitutes}). Because repairing is not atomic, and thus " "potentially dangerous, it is available only to the system administrator. A " "lightweight alternative, when you know exactly which items in the store are " "corrupt, is @command{guix build --repair} (@pxref{Invoking guix build})." msgstr "" #. type: item #: doc/guix.texi:2762 #, no-wrap msgid "--optimize" msgstr "" #. type: table #: doc/guix.texi:2766 msgid "" "Optimize the store by hard-linking identical files---this is " "@dfn{deduplication}." msgstr "" #. type: table #: doc/guix.texi:2772 msgid "" "The daemon performs deduplication after each successful build or archive " "import, unless it was started with @code{--disable-deduplication} " "(@pxref{Invoking guix-daemon, @code{--disable-deduplication}}). Thus, this " "option is primarily useful when the daemon was running with @code{--disable-" "deduplication}." msgstr "" #. type: section #: doc/guix.texi:2776 #, no-wrap msgid "Invoking @command{guix pull}" msgstr "" #. type: cindex #: doc/guix.texi:2778 #, no-wrap msgid "upgrading Guix" msgstr "" #. type: cindex #: doc/guix.texi:2779 #, no-wrap msgid "updating Guix" msgstr "" #. type: command{#1} #: doc/guix.texi:2780 #, no-wrap msgid "guix pull" msgstr "" #. type: cindex #: doc/guix.texi:2781 #, no-wrap msgid "pull" msgstr "" #. type: Plain text #: doc/guix.texi:2789 msgid "" "Packages are installed or upgraded to the latest version available in the " "distribution currently available on your local machine. To update that " "distribution, along with the Guix tools, you must run @command{guix pull}: " "the command downloads the latest Guix source code and package descriptions, " "and deploys it. Source code is downloaded from a @uref{https://git-scm.com, " "Git} repository, by default the official GNU@tie{}Guix repository, though " "this can be customized." msgstr "" #. type: Plain text #: doc/guix.texi:2795 msgid "" "On completion, @command{guix package} will use packages and package versions " "from this just-retrieved copy of Guix. Not only that, but all the Guix " "commands and Scheme modules will also be taken from that latest version. " "New @command{guix} sub-commands added by the update also become available." msgstr "" #. type: Plain text #: doc/guix.texi:2801 msgid "" "Any user can update their Guix copy using @command{guix pull}, and the " "effect is limited to the user who run @command{guix pull}. For instance, " "when user @code{root} runs @command{guix pull}, this has no effect on the " "version of Guix that user @code{alice} sees, and vice versa." msgstr "" #. type: Plain text #: doc/guix.texi:2807 msgid "" "The result of running @command{guix pull} is a @dfn{profile} available under " "@file{~/.config/guix/current} containing the latest Guix. Thus, make sure " "to add it to the beginning of your search path so that you use the latest " "version, and similarly for the Info manual (@pxref{Documentation}):" msgstr "" #. type: example #: doc/guix.texi:2811 #, no-wrap msgid "" "export PATH=\"$HOME/.config/guix/current/bin:$PATH\"\n" "export INFOPATH=\"$HOME/.config/guix/current/share/info:$INFOPATH\"\n" msgstr "" #. type: Plain text #: doc/guix.texi:2815 msgid "" "The @code{--list-generations} or @code{-l} option lists past generations " "produced by @command{guix pull}, along with details about their provenance:" msgstr "" #. type: example #: doc/guix.texi:2823 #, no-wrap msgid "" "$ guix pull -l\n" "Generation 1\tJun 10 2018 00:18:18\n" " guix 65956ad\n" " repository URL: https://git.savannah.gnu.org/git/guix.git\n" " branch: origin/master\n" " commit: 65956ad3526ba09e1f7a40722c96c6ef7c0936fe\n" "\n" msgstr "" #. type: example #: doc/guix.texi:2833 #, no-wrap msgid "" "Generation 2\tJun 11 2018 11:02:49\n" " guix e0cc7f6\n" " repository URL: https://git.savannah.gnu.org/git/guix.git\n" " branch: origin/master\n" " commit: e0cc7f669bec22c37481dd03a7941c7d11a64f1d\n" " 2 new packages: keepalived, libnfnetlink\n" " 6 packages upgraded: emacs-nix-mode@@2.0.4,\n" " guile2.0-guix@@0.14.0-12.77a1aac, guix@@0.14.0-12.77a1aac,\n" " heimdal@@7.5.0, milkytracker@@1.02.00, nix@@2.0.4\n" "\n" msgstr "" #. type: example #: doc/guix.texi:2841 #, no-wrap msgid "" "Generation 3\tJun 13 2018 23:31:07\t(current)\n" " guix 844cc1c\n" " repository URL: https://git.savannah.gnu.org/git/guix.git\n" " branch: origin/master\n" " commit: 844cc1c8f394f03b404c5bb3aee086922373490c\n" " 28 new packages: emacs-helm-ls-git, emacs-helm-mu, @dots{}\n" " 69 packages upgraded: borg@@1.1.6, cheese@@3.28.0, @dots{}\n" msgstr "" #. type: Plain text #: doc/guix.texi:2845 msgid "" "@ref{Invoking guix describe, @command{guix describe}}, for other ways to " "describe the current status of Guix." msgstr "" #. type: Plain text #: doc/guix.texi:2850 msgid "" "This @code{~/.config/guix/current} profile works like any other profile " "created by @command{guix package} (@pxref{Invoking guix package}). That is, " "you can list generations, roll back to the previous generation---i.e., the " "previous Guix---and so on:" msgstr "" #. type: example #: doc/guix.texi:2856 #, no-wrap msgid "" "$ guix package -p ~/.config/guix/current --roll-back\n" "switched from generation 3 to 2\n" "$ guix package -p ~/.config/guix/current --delete-generations=1\n" "deleting /var/guix/profiles/per-user/charlie/current-guix-1-link\n" msgstr "" #. type: Plain text #: doc/guix.texi:2860 msgid "" "The @command{guix pull} command is usually invoked with no arguments, but it " "supports the following options:" msgstr "" #. type: item #: doc/guix.texi:2862 #, no-wrap msgid "--url=@var{url}" msgstr "" #. type: itemx #: doc/guix.texi:2863 #, no-wrap msgid "--commit=@var{commit}" msgstr "" #. type: itemx #: doc/guix.texi:2864 #, no-wrap msgid "--branch=@var{branch}" msgstr "" #. type: table #: doc/guix.texi:2867 msgid "" "Download code from the specified @var{url}, at the given @var{commit} (a " "valid Git commit ID represented as a hexadecimal string), or @var{branch}." msgstr "" #. type: cindex #: doc/guix.texi:2868 doc/guix.texi:2920 #, no-wrap msgid "@file{channels.scm}, configuration file" msgstr "" #. type: cindex #: doc/guix.texi:2869 doc/guix.texi:2921 #, no-wrap msgid "configuration file for channels" msgstr "" #. type: table #: doc/guix.texi:2873 msgid "" "These options are provided for convenience, but you can also specify your " "configuration in the @file{~/.config/guix/channels.scm} file or using the " "@option{--channels} option (see below)." msgstr "" #. type: item #: doc/guix.texi:2874 #, no-wrap msgid "--channels=@var{file}" msgstr "" #. type: itemx #: doc/guix.texi:2875 #, no-wrap msgid "-C @var{file}" msgstr "" #. type: table #: doc/guix.texi:2880 msgid "" "Read the list of channels from @var{file} instead of @file{~/.config/guix/" "channels.scm}. @var{file} must contain Scheme code that evaluates to a list " "of channel objects. @xref{Channels}, for more information." msgstr "" #. type: table #: doc/guix.texi:2887 msgid "" "List all the generations of @file{~/.config/guix/current} or, if " "@var{pattern} is provided, the subset of generations that match " "@var{pattern}. The syntax of @var{pattern} is the same as with @code{guix " "package --list-generations} (@pxref{Invoking guix package})." msgstr "" #. type: table #: doc/guix.texi:2890 msgid "" "@ref{Invoking guix describe}, for a way to display information about the " "current generation only." msgstr "" #. type: table #: doc/guix.texi:2894 msgid "Use @var{profile} instead of @file{~/.config/guix/current}." msgstr "" #. type: item #: doc/guix.texi:2895 doc/guix.texi:6248 #, no-wrap msgid "--dry-run" msgstr "" #. type: itemx #: doc/guix.texi:2896 doc/guix.texi:6249 #, no-wrap msgid "-n" msgstr "" #. type: table #: doc/guix.texi:2899 msgid "" "Show which channel commit(s) would be used and what would be built or " "substituted but do not actually do it." msgstr "" #. type: table #: doc/guix.texi:2902 msgid "" "Produce verbose output, writing build logs to the standard error output." msgstr "" #. type: table #: doc/guix.texi:2906 msgid "" "Use the bootstrap Guile to build the latest Guix. This option is only " "useful to Guix developers." msgstr "" #. type: Plain text #: doc/guix.texi:2912 msgid "" "The @dfn{channel} mechanism allows you to instruct @command{guix pull} which " "repository and branch to pull from, as well as @emph{additional} " "repositories containing package modules that should be deployed. " "@xref{Channels}, for more information." msgstr "" #. type: Plain text #: doc/guix.texi:2915 msgid "" "In addition, @command{guix pull} supports all the common build options " "(@pxref{Common Build Options})." msgstr "" #. type: item #: doc/guix.texi:2919 doc/guix.texi:3279 #, no-wrap msgid "channels" msgstr "" #. type: cindex #: doc/guix.texi:2922 #, no-wrap msgid "@command{guix pull}, configuration file" msgstr "" #. type: cindex #: doc/guix.texi:2923 #, no-wrap msgid "configuration of @command{guix pull}" msgstr "" #. type: Plain text #: doc/guix.texi:2932 msgid "" "Guix and its package collection are updated by running @command{guix pull} " "(@pxref{Invoking guix pull}). By default @command{guix pull} downloads and " "deploys Guix itself from the official GNU@tie{}Guix repository. This can be " "customized by defining @dfn{channels} in the @file{~/.config/guix/channels." "scm} file. A channel specifies a URL and branch of a Git repository to be " "deployed, and @command{guix pull} can be instructed to pull from one or more " "channels. In other words, channels can be used to @emph{customize} and to " "@emph{extend} Guix, as we will see below." msgstr "" #. type: subsection #: doc/guix.texi:2933 #, no-wrap msgid "Using a Custom Guix Channel" msgstr "" #. type: Plain text #: doc/guix.texi:2940 msgid "" "The channel called @code{guix} specifies where Guix itself---its command-" "line tools as well as its package collection---should be downloaded. For " "instance, suppose you want to update from your own copy of the Guix " "repository at @code{example.org}, and specifically the @code{super-hacks} " "branch, you can write in @code{~/.config/guix/channels.scm} this " "specification:" msgstr "" #. type: lisp #: doc/guix.texi:2947 #, no-wrap msgid "" ";; Tell 'guix pull' to use my own repo.\n" "(list (channel\n" " (name 'guix)\n" " (url \"https://example.org/my-guix.git\")\n" " (branch \"super-hacks\")))\n" msgstr "" #. type: Plain text #: doc/guix.texi:2952 msgid "" "From there on, @command{guix pull} will fetch code from the @code{super-" "hacks} branch of the repository at @code{example.org}." msgstr "" #. type: subsection #: doc/guix.texi:2953 #, no-wrap msgid "Specifying Additional Channels" msgstr "" #. type: cindex #: doc/guix.texi:2955 #, no-wrap msgid "extending the package collection (channels)" msgstr "" #. type: cindex #: doc/guix.texi:2956 #, no-wrap msgid "personal packages (channels)" msgstr "" #. type: cindex #: doc/guix.texi:2957 #, no-wrap msgid "channels, for personal packages" msgstr "" #. type: Plain text #: doc/guix.texi:2965 msgid "" "You can also specify @emph{additional channels} to pull from. Let's say you " "have a bunch of custom package variants or personal packages that you think " "would make little sense to contribute to the Guix project, but would like to " "have these packages transparently available to you at the command line. You " "would first write modules containing those package definitions " "(@pxref{Package Modules}), maintain them in a Git repository, and then you " "and anyone else can use it as an additional channel to get packages from. " "Neat, no?" msgstr "" #. type: quotation #: doc/guix.texi:2969 #, no-wrap msgid "Warning" msgstr "" #. type: quotation #: doc/guix.texi:2973 msgid "" "Before you, dear user, shout---``woow this is @emph{soooo coool}!''---and " "publish your personal channel to the world, we would like to share a few " "words of caution:" msgstr "" #. type: itemize #: doc/guix.texi:2981 msgid "" "Before publishing a channel, please consider contributing your package " "definitions to Guix proper (@pxref{Contributing}). Guix as a project is " "open to free software of all sorts, and packages in Guix proper are readily " "available to all Guix users and benefit from the project's quality assurance " "process." msgstr "" #. type: itemize #: doc/guix.texi:2990 msgid "" "When you maintain package definitions outside Guix, we, Guix developers, " "consider that @emph{the compatibility burden is on you}. Remember that " "package modules and package definitions are just Scheme code that uses " "various programming interfaces (APIs). We want to remain free to change " "these APIs to keep improving Guix, possibly in ways that break your " "channel. We never change APIs gratuitously, but we will @emph{not} commit " "to freezing APIs either." msgstr "" #. type: itemize #: doc/guix.texi:2994 msgid "" "Corollary: if you're using an external channel and that channel breaks, " "please @emph{report the issue to the channel authors}, not to the Guix " "project." msgstr "" #. type: quotation #: doc/guix.texi:3001 msgid "" "You've been warned! Having said this, we believe external channels are a " "practical way to exert your freedom to augment Guix' package collection and " "to share your improvements, which are basic tenets of @uref{https://www.gnu." "org/philosophy/free-sw.html, free software}. Please email us at @email{guix-" "devel@@gnu.org} if you'd like to discuss this." msgstr "" #. type: Plain text #: doc/guix.texi:3007 msgid "" "Once you have a Git repository containing your own package modules, you can " "write @code{~/.config/guix/channels.scm} to instruct @command{guix pull} to " "pull from your personal channel @emph{in addition} to the default Guix " "channel(s):" msgstr "" #. type: vindex #: doc/guix.texi:3008 #, no-wrap msgid "%default-channels" msgstr "" #. type: lisp #: doc/guix.texi:3015 #, no-wrap msgid "" ";; Add my personal packages to those Guix provides.\n" "(cons (channel\n" " (name 'my-personal-packages)\n" " (url \"https://example.org/personal-packages.git\"))\n" " %default-channels)\n" msgstr "" #. type: Plain text #: doc/guix.texi:3025 msgid "" "Note that the snippet above is (as always!) Scheme code; we use @code{cons} " "to add a channel the list of channels that the variable @code{%default-" "channels} is bound to (@pxref{Pairs, @code{cons} and lists,, guile, GNU " "Guile Reference Manual}). With this file in place, @command{guix pull} " "builds not only Guix but also the package modules from your own repository. " "The result in @file{~/.config/guix/current} is the union of Guix with your " "own package modules:" msgstr "" #. type: example #: doc/guix.texi:3040 #, no-wrap msgid "" "$ guix pull --list-generations\n" "@dots{}\n" "Generation 19\tAug 27 2018 16:20:48\n" " guix d894ab8\n" " repository URL: https://git.savannah.gnu.org/git/guix.git\n" " branch: master\n" " commit: d894ab8e9bfabcefa6c49d9ba2e834dd5a73a300\n" " my-personal-packages dd3df5e\n" " repository URL: https://example.org/personal-packages.git\n" " branch: master\n" " commit: dd3df5e2c8818760a8fc0bd699e55d3b69fef2bb\n" " 11 new packages: my-gimp, my-emacs-with-cool-features, @dots{}\n" " 4 packages upgraded: emacs-racket-mode@@0.0.2-2.1b78827, @dots{}\n" msgstr "" #. type: Plain text #: doc/guix.texi:3048 msgid "" "The output of @command{guix pull} above shows that Generation@tie{}19 " "includes both Guix and packages from the @code{my-personal-packages} " "channel. Among the new and upgraded packages that are listed, some like " "@code{my-gimp} and @code{my-emacs-with-cool-features} might come from " "@code{my-personal-packages}, while others come from the Guix default channel." msgstr "" #. type: subsection #: doc/guix.texi:3049 #, no-wrap msgid "Replicating Guix" msgstr "" #. type: cindex #: doc/guix.texi:3051 #, no-wrap msgid "pinning, channels" msgstr "" #. type: cindex #: doc/guix.texi:3052 doc/guix.texi:3218 #, no-wrap msgid "replicating Guix" msgstr "" #. type: cindex #: doc/guix.texi:3053 #, no-wrap msgid "reproducibility, of Guix" msgstr "" #. type: Plain text #: doc/guix.texi:3058 msgid "" "The @command{guix pull --list-generations} output above shows precisely " "which commits were used to build this instance of Guix. We can thus " "replicate it, say, on another machine, by providing a channel specification " "in @file{~/.config/guix/channels.scm} that is ``pinned'' to these commits:" msgstr "" #. type: lisp #: doc/guix.texi:3069 #, no-wrap msgid "" ";; Deploy specific commits of my channels of interest.\n" "(list (channel\n" " (name 'guix)\n" " (url \"https://git.savannah.gnu.org/git/guix.git\")\n" " (commit \"d894ab8e9bfabcefa6c49d9ba2e834dd5a73a300\"))\n" " (channel\n" " (name 'my-personal-packages)\n" " (url \"https://example.org/personal-packages.git\")\n" " (branch \"dd3df5e2c8818760a8fc0bd699e55d3b69fef2bb\")))\n" msgstr "" #. type: Plain text #: doc/guix.texi:3073 msgid "" "The @command{guix describe --format=channels} command can even generate this " "list of channels directly (@pxref{Invoking guix describe})." msgstr "" #. type: Plain text #: doc/guix.texi:3080 msgid "" "At this point the two machines run the @emph{exact same Guix}, with access " "to the @emph{exact same packages}. The output of @command{guix build gimp} " "on one machine will be exactly the same, bit for bit, as the output of the " "same command on the other machine. It also means both machines have access " "to all the source code of Guix and, transitively, to all the source code of " "every package it defines." msgstr "" #. type: Plain text #: doc/guix.texi:3085 msgid "" "This gives you super powers, allowing you to track the provenance of binary " "artifacts with very fine grain, and to reproduce software environments at " "will---some sort of ``meta reproducibility'' capabilities, if you will. " "@xref{Inferiors}, for another way to take advantage of these super powers." msgstr "" #. type: quotation #: doc/guix.texi:3093 msgid "" "The functionality described here is a ``technology preview'' as of version " "@value{VERSION}. As such, the interface is subject to change." msgstr "" #. type: cindex #: doc/guix.texi:3095 doc/guix.texi:6093 #, no-wrap msgid "inferiors" msgstr "" #. type: cindex #: doc/guix.texi:3096 #, no-wrap msgid "composition of Guix revisions" msgstr "" #. type: Plain text #: doc/guix.texi:3101 msgid "" "Sometimes you might need to mix packages from the revision of Guix you're " "currently running with packages available in a different revision of Guix. " "Guix @dfn{inferiors} allow you to achieve that by composing different Guix " "revisions in arbitrary ways." msgstr "" #. type: cindex #: doc/guix.texi:3102 doc/guix.texi:3167 #, no-wrap msgid "inferior packages" msgstr "" #. type: Plain text #: doc/guix.texi:3108 msgid "" "Technically, an ``inferior'' is essentially a separate Guix process " "connected to your main Guix process through a REPL (@pxref{Invoking guix " "repl}). The @code{(guix inferior)} module allows you to create inferiors " "and to communicate with them. It also provides a high-level interface to " "browse and manipulate the packages that an inferior provides---@dfn{inferior " "packages}." msgstr "" #. type: Plain text #: doc/guix.texi:3118 msgid "" "When combined with channels (@pxref{Channels}), inferiors provide a simple " "way to interact with a separate revision of Guix. For example, let's assume " "you want to install in your profile the current @code{guile} package, along " "with the @code{guile-json} as it existed in an older revision of Guix---" "perhaps because the newer @code{guile-json} has an incompatible API and you " "want to run your code against the old API@. To do that, you could write a " "manifest for use by @code{guix package --manifest} (@pxref{Invoking guix " "package}); in that manifest, you would create an inferior for that old Guix " "revision you care about, and you would look up the @code{guile-json} package " "in the inferior:" msgstr "" #. type: lisp #: doc/guix.texi:3122 #, no-wrap msgid "" "(use-modules (guix inferior) (guix channels)\n" " (srfi srfi-1)) ;for 'first'\n" "\n" msgstr "" #. type: lisp #: doc/guix.texi:3131 #, no-wrap msgid "" "(define channels\n" " ;; This is the old revision from which we want to\n" " ;; extract guile-json.\n" " (list (channel\n" " (name 'guix)\n" " (url \"https://git.savannah.gnu.org/git/guix.git\")\n" " (commit\n" " \"65956ad3526ba09e1f7a40722c96c6ef7c0936fe\"))))\n" "\n" msgstr "" #. type: lisp #: doc/guix.texi:3135 #, no-wrap msgid "" "(define inferior\n" " ;; An inferior representing the above revision.\n" " (inferior-for-channels channels))\n" "\n" msgstr "" #. type: lisp #: doc/guix.texi:3141 #, no-wrap msgid "" ";; Now create a manifest with the current \"guile\" package\n" ";; and the old \"guile-json\" package.\n" "(packages->manifest\n" " (list (first (lookup-inferior-packages inferior \"guile-json\"))\n" " (specification->package \"guile\")))\n" msgstr "" #. type: Plain text #: doc/guix.texi:3146 msgid "" "On its first run, @command{guix package --manifest} might have to build the " "channel you specified before it can create the inferior; subsequent runs " "will be much faster because the Guix revision will be cached." msgstr "" #. type: Plain text #: doc/guix.texi:3149 msgid "" "The @code{(guix inferior)} module provides the following procedures to open " "an inferior:" msgstr "" #. type: deffn #: doc/guix.texi:3150 #, no-wrap msgid "{Scheme Procedure} inferior-for-channels @var{channels} @" msgstr "" #. type: deffn #: doc/guix.texi:3155 msgid "" "[#:cache-directory] [#:ttl] Return an inferior for @var{channels}, a list of " "channels. Use the cache at @var{cache-directory}, where entries can be " "reclaimed after @var{ttl} seconds. This procedure opens a new connection to " "the build daemon." msgstr "" #. type: deffn #: doc/guix.texi:3158 msgid "" "As a side effect, this procedure may build or substitute binaries for " "@var{channels}, which can take time." msgstr "" #. type: deffn #: doc/guix.texi:3160 #, no-wrap msgid "{Scheme Procedure} open-inferior @var{directory} @" msgstr "" #. type: deffn #: doc/guix.texi:3165 msgid "" "[#:command \"bin/guix\"] Open the inferior Guix in @var{directory}, running " "@code{@var{directory}/@var{command} repl} or equivalent. Return @code{#f} " "if the inferior could not be launched." msgstr "" #. type: Plain text #: doc/guix.texi:3170 msgid "" "The procedures listed below allow you to obtain and manipulate inferior " "packages." msgstr "" #. type: deffn #: doc/guix.texi:3171 #, no-wrap msgid "{Scheme Procedure} inferior-packages @var{inferior}" msgstr "" #. type: deffn #: doc/guix.texi:3173 msgid "Return the list of packages known to @var{inferior}." msgstr "" #. type: deffn #: doc/guix.texi:3175 #, no-wrap msgid "{Scheme Procedure} lookup-inferior-packages @var{inferior} @var{name} @" msgstr "" #. type: deffn #: doc/guix.texi:3180 msgid "" "[@var{version}] Return the sorted list of inferior packages matching " "@var{name} in @var{inferior}, with highest version numbers first. If " "@var{version} is true, return only packages with a version number prefixed " "by @var{version}." msgstr "" #. type: deffn #: doc/guix.texi:3182 #, no-wrap msgid "{Scheme Procedure} inferior-package? @var{obj}" msgstr "" #. type: deffn #: doc/guix.texi:3184 msgid "Return true if @var{obj} is an inferior package." msgstr "" #. type: deffn #: doc/guix.texi:3186 #, no-wrap msgid "{Scheme Procedure} inferior-package-name @var{package}" msgstr "" #. type: deffnx #: doc/guix.texi:3187 #, no-wrap msgid "{Scheme Procedure} inferior-package-version @var{package}" msgstr "" #. type: deffnx #: doc/guix.texi:3188 #, no-wrap msgid "{Scheme Procedure} inferior-package-synopsis @var{package}" msgstr "" #. type: deffnx #: doc/guix.texi:3189 #, no-wrap msgid "{Scheme Procedure} inferior-package-description @var{package}" msgstr "" #. type: deffnx #: doc/guix.texi:3190 #, no-wrap msgid "{Scheme Procedure} inferior-package-home-page @var{package}" msgstr "" #. type: deffnx #: doc/guix.texi:3191 #, no-wrap msgid "{Scheme Procedure} inferior-package-location @var{package}" msgstr "" #. type: deffnx #: doc/guix.texi:3192 #, no-wrap msgid "{Scheme Procedure} inferior-package-inputs @var{package}" msgstr "" #. type: deffnx #: doc/guix.texi:3193 #, no-wrap msgid "{Scheme Procedure} inferior-package-native-inputs @var{package}" msgstr "" #. type: deffnx #: doc/guix.texi:3194 #, no-wrap msgid "{Scheme Procedure} inferior-package-propagated-inputs @var{package}" msgstr "" #. type: deffnx #: doc/guix.texi:3195 #, no-wrap msgid "{Scheme Procedure} inferior-package-transitive-propagated-inputs @var{package}" msgstr "" #. type: deffnx #: doc/guix.texi:3196 #, no-wrap msgid "{Scheme Procedure} inferior-package-native-search-paths @var{package}" msgstr "" #. type: deffnx #: doc/guix.texi:3197 #, no-wrap msgid "{Scheme Procedure} inferior-package-transitive-native-search-paths @var{package}" msgstr "" #. type: deffnx #: doc/guix.texi:3198 #, no-wrap msgid "{Scheme Procedure} inferior-package-search-paths @var{package}" msgstr "" #. type: deffn #: doc/guix.texi:3203 msgid "" "These procedures are the counterpart of package record accessors " "(@pxref{package Reference}). Most of them work by querying the inferior " "@var{package} comes from, so the inferior must still be live when you call " "these procedures." msgstr "" #. type: Plain text #: doc/guix.texi:3213 msgid "" "Inferior packages can be used transparently like any other package or file-" "like object in G-expressions (@pxref{G-Expressions}). They are also " "transparently handled by the @code{packages->manifest} procedure, which is " "commonly use in manifests (@pxref{Invoking guix package, the @option{--" "manifest} option of @command{guix package}}). Thus you can insert an " "inferior package pretty much anywhere you would insert a regular package: in " "manifests, in the @code{packages} field of your @code{operating-system} " "declaration, and so on." msgstr "" #. type: section #: doc/guix.texi:3215 #, no-wrap msgid "Invoking @command{guix describe}" msgstr "" #. type: Plain text #: doc/guix.texi:3226 msgid "" "Often you may want to answer questions like: ``Which revision of Guix am I " "using?'' or ``Which channels am I using?'' This is useful information in " "many situations: if you want to @emph{replicate} an environment on a " "different machine or user account, if you want to report a bug or to " "determine what change in the channels you are using caused it, or if you " "want to record your system state for reproducibility purposes. The " "@command{guix describe} command answers these questions." msgstr "" #. type: Plain text #: doc/guix.texi:3230 msgid "" "When run from a @command{guix pull}ed @command{guix}, @command{guix " "describe} displays the channel(s) that it was built from, including their " "repository URL and commit IDs (@pxref{Channels}):" msgstr "" #. type: example #: doc/guix.texi:3238 #, no-wrap msgid "" "$ guix describe\n" "Generation 10\tSep 03 2018 17:32:44\t(current)\n" " guix e0fa68c\n" " repository URL: https://git.savannah.gnu.org/git/guix.git\n" " branch: master\n" " commit: e0fa68c7718fffd33d81af415279d6ddb518f727\n" msgstr "" #. type: Plain text #: doc/guix.texi:3247 msgid "" "If you're familiar with the Git version control system, this is similar in " "spirit to @command{git describe}; the output is also similar to that of " "@command{guix pull --list-generations}, but limited to the current " "generation (@pxref{Invoking guix pull, the @option{--list-generations} " "option}). Because the Git commit ID shown above unambiguously refers to a " "snapshot of Guix, this information is all it takes to describe the revision " "of Guix you're using, and also to replicate it." msgstr "" #. type: Plain text #: doc/guix.texi:3250 msgid "" "To make it easier to replicate Guix, @command{guix describe} can also be " "asked to return a list of channels instead of the human-readable description " "above:" msgstr "" #. type: example #: doc/guix.texi:3258 #, no-wrap msgid "" "$ guix describe -f channels\n" "(list (channel\n" " (name 'guix)\n" " (url \"https://git.savannah.gnu.org/git/guix.git\")\n" " (commit\n" " \"e0fa68c7718fffd33d81af415279d6ddb518f727\")))\n" msgstr "" #. type: Plain text #: doc/guix.texi:3267 msgid "" "You can save this to a file and feed it to @command{guix pull -C} on some " "other machine or at a later point in time, which will instantiate @emph{this " "exact Guix revision} (@pxref{Invoking guix pull, the @option{-C} option}). " "From there on, since you're able to deploy the same revision of Guix, you " "can just as well @emph{replicate a complete software environment}. We " "humbly think that this is @emph{awesome}, and we hope you'll like it too!" msgstr "" #. type: Plain text #: doc/guix.texi:3270 msgid "" "The details of the options supported by @command{guix describe} are as " "follows:" msgstr "" #. type: item #: doc/guix.texi:3272 doc/guix.texi:3392 #, no-wrap msgid "--format=@var{format}" msgstr "" #. type: itemx #: doc/guix.texi:3273 doc/guix.texi:3393 #, no-wrap msgid "-f @var{format}" msgstr "" #. type: table #: doc/guix.texi:3275 msgid "Produce output in the specified @var{format}, one of:" msgstr "" #. type: item #: doc/guix.texi:3277 #, no-wrap msgid "human" msgstr "" #. type: table #: doc/guix.texi:3279 msgid "produce human-readable output;" msgstr "" #. type: table #: doc/guix.texi:3283 msgid "" "produce a list of channel specifications that can be passed to @command{guix " "pull -C} or installed as @file{~/.config/guix/channels.scm} (@pxref{Invoking " "guix pull});" msgstr "" #. type: item #: doc/guix.texi:3283 doc/guix.texi:7075 #, no-wrap msgid "json" msgstr "" #. type: cindex #: doc/guix.texi:3284 #, no-wrap msgid "JSON" msgstr "" #. type: table #: doc/guix.texi:3286 msgid "produce a list of channel specifications in JSON format;" msgstr "" #. type: item #: doc/guix.texi:3286 #, no-wrap msgid "recutils" msgstr "" #. type: table #: doc/guix.texi:3288 msgid "produce a list of channel specifications in Recutils format." msgstr "" #. type: table #: doc/guix.texi:3293 msgid "Display information about @var{profile}." msgstr "" #. type: section #: doc/guix.texi:3296 #, no-wrap msgid "Invoking @command{guix pack}" msgstr "" #. type: Plain text #: doc/guix.texi:3302 msgid "" "Occasionally you want to pass software to people who are not (yet!) lucky " "enough to be using Guix. You'd tell them to run @command{guix package -i " "@var{something}}, but that's not possible in this case. This is where " "@command{guix pack} comes in." msgstr "" #. type: quotation #: doc/guix.texi:3307 msgid "" "If you are looking for ways to exchange binaries among machines that already " "run Guix, @pxref{Invoking guix copy}, @ref{Invoking guix publish}, and " "@ref{Invoking guix archive}." msgstr "" #. type: cindex #: doc/guix.texi:3309 #, no-wrap msgid "pack" msgstr "" #. type: cindex #: doc/guix.texi:3310 #, no-wrap msgid "bundle" msgstr "" #. type: cindex #: doc/guix.texi:3311 #, no-wrap msgid "application bundle" msgstr "" #. type: cindex #: doc/guix.texi:3312 #, no-wrap msgid "software bundle" msgstr "" #. type: Plain text #: doc/guix.texi:3321 msgid "" "The @command{guix pack} command creates a shrink-wrapped @dfn{pack} or " "@dfn{software bundle}: it creates a tarball or some other archive containing " "the binaries of the software you're interested in, and all its " "dependencies. The resulting archive can be used on any machine that does " "not have Guix, and people can run the exact same binaries as those you have " "with Guix. The pack itself is created in a bit-reproducible fashion, so " "anyone can verify that it really contains the build results that you pretend " "to be shipping." msgstr "" #. type: Plain text #: doc/guix.texi:3324 msgid "" "For example, to create a bundle containing Guile, Emacs, Geiser, and all " "their dependencies, you can run:" msgstr "" #. type: example #: doc/guix.texi:3329 #, no-wrap msgid "" "$ guix pack guile emacs geiser\n" "@dots{}\n" "/gnu/store/@dots{}-pack.tar.gz\n" msgstr "" #. type: Plain text #: doc/guix.texi:3337 msgid "" "The result here is a tarball containing a @file{/gnu/store} directory with " "all the relevant packages. The resulting tarball contains a @dfn{profile} " "with the three packages of interest; the profile is the same as would be " "created by @command{guix package -i}. It is this mechanism that is used to " "create Guix's own standalone binary tarball (@pxref{Binary Installation})." msgstr "" #. type: Plain text #: doc/guix.texi:3342 msgid "" "Users of this pack would have to run @file{/gnu/store/@dots{}-profile/bin/" "guile} to run Guile, which you may find inconvenient. To work around it, " "you can create, say, a @file{/opt/gnu/bin} symlink to the profile:" msgstr "" #. type: example #: doc/guix.texi:3345 #, no-wrap msgid "guix pack -S /opt/gnu/bin=bin guile emacs geiser\n" msgstr "" #. type: Plain text #: doc/guix.texi:3349 msgid "That way, users can happily type @file{/opt/gnu/bin/guile} and enjoy." msgstr "" #. type: cindex #: doc/guix.texi:3350 #, no-wrap msgid "relocatable binaries, with @command{guix pack}" msgstr "" #. type: Plain text #: doc/guix.texi:3358 msgid "" "What if the recipient of your pack does not have root privileges on their " "machine, and thus cannot unpack it in the root file system? In that case, " "you will want to use the @code{--relocatable} option (see below). This " "option produces @dfn{relocatable binaries}, meaning they they can be placed " "anywhere in the file system hierarchy: in the example above, users can " "unpack your tarball in their home directory and directly run @file{./opt/gnu/" "bin/guile}." msgstr "" #. type: cindex #: doc/guix.texi:3359 #, no-wrap msgid "Docker, build an image with guix pack" msgstr "" #. type: Plain text #: doc/guix.texi:3362 msgid "" "Alternatively, you can produce a pack in the Docker image format using the " "following command:" msgstr "" #. type: example #: doc/guix.texi:3365 #, no-wrap msgid "guix pack -f docker guile emacs geiser\n" msgstr "" #. type: Plain text #: doc/guix.texi:3372 msgid "" "The result is a tarball that can be passed to the @command{docker load} " "command. See the @uref{https://docs.docker.com/engine/reference/commandline/" "load/, Docker documentation} for more information." msgstr "" #. type: cindex #: doc/guix.texi:3373 #, no-wrap msgid "Singularity, build an image with guix pack" msgstr "" #. type: cindex #: doc/guix.texi:3374 #, no-wrap msgid "SquashFS, build an image with guix pack" msgstr "" #. type: Plain text #: doc/guix.texi:3377 msgid "" "Yet another option is to produce a SquashFS image with the following command:" msgstr "" #. type: example #: doc/guix.texi:3380 #, no-wrap msgid "guix pack -f squashfs guile emacs geiser\n" msgstr "" #. type: Plain text #: doc/guix.texi:3388 msgid "" "The result is a SquashFS file system image that can either be mounted or " "directly be used as a file system container image with the @uref{http://" "singularity.lbl.gov, Singularity container execution environment}, using " "commands like @command{singularity shell} or @command{singularity exec}." msgstr "" #. type: Plain text #: doc/guix.texi:3390 msgid "Several command-line options allow you to customize your pack:" msgstr "" #. type: table #: doc/guix.texi:3395 msgid "Produce a pack in the given @var{format}." msgstr "" #. type: table #: doc/guix.texi:3397 msgid "The available formats are:" msgstr "" #. type: item #: doc/guix.texi:3399 #, no-wrap msgid "tarball" msgstr "" #. type: table #: doc/guix.texi:3402 msgid "" "This is the default format. It produces a tarball containing all the " "specified binaries and symlinks." msgstr "" #. type: item #: doc/guix.texi:3403 #, no-wrap msgid "docker" msgstr "" #. type: table #: doc/guix.texi:3407 msgid "" "This produces a tarball that follows the @uref{https://github.com/docker/" "docker/blob/master/image/spec/v1.2.md, Docker Image Specification}." msgstr "" #. type: item #: doc/guix.texi:3408 #, no-wrap msgid "squashfs" msgstr "" #. type: table #: doc/guix.texi:3412 msgid "" "This produces a SquashFS image containing all the specified binaries and " "symlinks, as well as empty mount points for virtual file systems like procfs." msgstr "" #. type: item #: doc/guix.texi:3414 #, no-wrap msgid "--relocatable" msgstr "" #. type: table #: doc/guix.texi:3419 msgid "" "Produce @dfn{relocatable binaries}---i.e., binaries that can be placed " "anywhere in the file system hierarchy and run from there. For example, if " "you create a pack containing Bash with:" msgstr "" #. type: example #: doc/guix.texi:3422 #, no-wrap msgid "guix pack -R -S /mybin=bin bash\n" msgstr "" #. type: table #: doc/guix.texi:3427 msgid "" "... you can copy that pack to a machine that lacks Guix, and from your home " "directory as a normal user, run:" msgstr "" #. type: example #: doc/guix.texi:3431 #, no-wrap msgid "" "tar xf pack.tar.gz\n" "./mybin/sh\n" msgstr "" #. type: table #: doc/guix.texi:3439 msgid "" "In that shell, if you type @code{ls /gnu/store}, you'll notice that @file{/" "gnu/store} shows up and contains all the dependencies of @code{bash}, even " "though the machine actually lacks @file{/gnu/store} altogether! That is " "probably the simplest way to deploy Guix-built software on a non-Guix " "machine." msgstr "" #. type: table #: doc/guix.texi:3446 msgid "" "There's a gotcha though: this technique relies on the @dfn{user namespace} " "feature of the kernel Linux, which allows unprivileged users to mount or " "change root. Old versions of Linux did not support it, and some GNU/Linux " "distributions turn it off; on these systems, programs from the pack " "@emph{will fail to run}, unless they are unpacked in the root file system." msgstr "" #. type: item #: doc/guix.texi:3447 doc/guix.texi:6482 doc/guix.texi:7352 doc/guix.texi:7969 #: doc/guix.texi:8126 doc/guix.texi:22526 #, no-wrap msgid "--expression=@var{expr}" msgstr "" #. type: itemx #: doc/guix.texi:3448 doc/guix.texi:6483 doc/guix.texi:7353 doc/guix.texi:7970 #: doc/guix.texi:8127 doc/guix.texi:22527 #, no-wrap msgid "-e @var{expr}" msgstr "" #. type: table #: doc/guix.texi:3450 doc/guix.texi:7355 doc/guix.texi:7972 msgid "Consider the package @var{expr} evaluates to." msgstr "" #. type: table #: doc/guix.texi:3454 msgid "" "This has the same purpose as the same-named option in @command{guix build} " "(@pxref{Additional Build Options, @code{--expression} in @command{guix " "build}})." msgstr "" #. type: table #: doc/guix.texi:3459 msgid "" "Use the packages contained in the manifest object returned by the Scheme " "code in @var{file}." msgstr "" #. type: table #: doc/guix.texi:3467 msgid "" "This has a similar purpose as the same-named option in @command{guix " "package} (@pxref{profile-manifest, @option{--manifest}}) and uses the same " "manifest files. It allows you to define a collection of packages once and " "use it both for creating profiles and for creating archives for use on " "machines that do not have Guix installed. Note that you can specify " "@emph{either} a manifest file @emph{or} a list of packages, but not both." msgstr "" #. type: itemx #: doc/guix.texi:3469 doc/guix.texi:6555 doc/guix.texi:7797 doc/guix.texi:7980 #: doc/guix.texi:8212 doc/guix.texi:8846 doc/guix.texi:22535 #, no-wrap msgid "-s @var{system}" msgstr "" #. type: table #: doc/guix.texi:3472 doc/guix.texi:6558 msgid "" "Attempt to build for @var{system}---e.g., @code{i686-linux}---instead of the " "system type of the build host." msgstr "" #. type: item #: doc/guix.texi:3473 doc/guix.texi:6586 #, no-wrap msgid "--target=@var{triplet}" msgstr "" #. type: cindex #: doc/guix.texi:3474 doc/guix.texi:3904 doc/guix.texi:6587 #, no-wrap msgid "cross-compilation" msgstr "" #. type: table #: doc/guix.texi:3478 doc/guix.texi:6591 msgid "" "Cross-build for @var{triplet}, which must be a valid GNU triplet, such as " "@code{\"mips64el-linux-gnu\"} (@pxref{Specifying target triplets, GNU " "configuration triplets,, autoconf, Autoconf})." msgstr "" #. type: item #: doc/guix.texi:3479 #, no-wrap msgid "--compression=@var{tool}" msgstr "" #. type: itemx #: doc/guix.texi:3480 #, no-wrap msgid "-C @var{tool}" msgstr "" #. type: table #: doc/guix.texi:3483 msgid "" "Compress the resulting tarball using @var{tool}---one of @code{gzip}, " "@code{bzip2}, @code{xz}, @code{lzip}, or @code{none} for no compression." msgstr "" #. type: item #: doc/guix.texi:3484 #, no-wrap msgid "--symlink=@var{spec}" msgstr "" #. type: itemx #: doc/guix.texi:3485 #, no-wrap msgid "-S @var{spec}" msgstr "" #. type: table #: doc/guix.texi:3488 msgid "" "Add the symlinks specified by @var{spec} to the pack. This option can " "appear several times." msgstr "" #. type: table #: doc/guix.texi:3492 msgid "" "@var{spec} has the form @code{@var{source}=@var{target}}, where @var{source} " "is the symlink that will be created and @var{target} is the symlink target." msgstr "" #. type: table #: doc/guix.texi:3495 msgid "" "For instance, @code{-S /opt/gnu/bin=bin} creates a @file{/opt/gnu/bin} " "symlink pointing to the @file{bin} sub-directory of the profile." msgstr "" #. type: item #: doc/guix.texi:3496 #, no-wrap msgid "--localstatedir" msgstr "" #. type: itemx #: doc/guix.texi:3497 #, no-wrap msgid "--profile-name=@var{name}" msgstr "" #. type: table #: doc/guix.texi:3502 msgid "" "Include the ``local state directory'', @file{/var/guix}, in the resulting " "pack, and notably the @file{/var/guix/profiles/per-user/root/@var{name}} " "profile---by default @var{name} is @code{guix-profile}, which corresponds to " "@file{~root/.guix-profile}." msgstr "" #. type: table #: doc/guix.texi:3508 msgid "" "@file{/var/guix} contains the store database (@pxref{The Store}) as well as " "garbage-collector roots (@pxref{Invoking guix gc}). Providing it in the " "pack means that the store is ``complete'' and manageable by Guix; not " "providing it pack means that the store is ``dead'': items cannot be added to " "it or removed from it after extraction of the pack." msgstr "" #. type: table #: doc/guix.texi:3511 msgid "" "One use case for this is the Guix self-contained binary tarball " "(@pxref{Binary Installation})." msgstr "" #. type: table #: doc/guix.texi:3515 msgid "" "Use the bootstrap binaries to build the pack. This option is only useful to " "Guix developers." msgstr "" #. type: Plain text #: doc/guix.texi:3520 msgid "" "In addition, @command{guix pack} supports all the common build options " "(@pxref{Common Build Options}) and all the package transformation options " "(@pxref{Package Transformation Options})." msgstr "" #. type: section #: doc/guix.texi:3523 #, no-wrap msgid "Invoking @command{guix archive}" msgstr "" #. type: command{#1} #: doc/guix.texi:3525 #, no-wrap msgid "guix archive" msgstr "" #. type: cindex #: doc/guix.texi:3526 #, no-wrap msgid "archive" msgstr "" #. type: Plain text #: doc/guix.texi:3532 msgid "" "The @command{guix archive} command allows users to @dfn{export} files from " "the store into a single archive, and to later @dfn{import} them on a machine " "that runs Guix. In particular, it allows store files to be transferred from " "one machine to the store on another machine." msgstr "" #. type: quotation #: doc/guix.texi:3536 msgid "" "If you're looking for a way to produce archives in a format suitable for " "tools other than Guix, @pxref{Invoking guix pack}." msgstr "" #. type: cindex #: doc/guix.texi:3538 #, no-wrap msgid "exporting store items" msgstr "" #. type: Plain text #: doc/guix.texi:3540 msgid "To export store files as an archive to standard output, run:" msgstr "" #. type: example #: doc/guix.texi:3543 #, no-wrap msgid "guix archive --export @var{options} @var{specifications}...\n" msgstr "" #. type: Plain text #: doc/guix.texi:3550 msgid "" "@var{specifications} may be either store file names or package " "specifications, as for @command{guix package} (@pxref{Invoking guix " "package}). For instance, the following command creates an archive " "containing the @code{gui} output of the @code{git} package and the main " "output of @code{emacs}:" msgstr "" #. type: example #: doc/guix.texi:3553 #, no-wrap msgid "guix archive --export git:gui /gnu/store/...-emacs-24.3 > great.nar\n" msgstr "" #. type: Plain text #: doc/guix.texi:3558 msgid "" "If the specified packages are not built yet, @command{guix archive} " "automatically builds them. The build process may be controlled with the " "common build options (@pxref{Common Build Options})." msgstr "" #. type: Plain text #: doc/guix.texi:3561 msgid "" "To transfer the @code{emacs} package to a machine connected over SSH, one " "would run:" msgstr "" #. type: example #: doc/guix.texi:3564 #, no-wrap msgid "guix archive --export -r emacs | ssh the-machine guix archive --import\n" msgstr "" #. type: Plain text #: doc/guix.texi:3569 msgid "" "Similarly, a complete user profile may be transferred from one machine to " "another like this:" msgstr "" #. type: example #: doc/guix.texi:3573 #, no-wrap msgid "" "guix archive --export -r $(readlink -f ~/.guix-profile) | \\\n" " ssh the-machine guix-archive --import\n" msgstr "" #. type: Plain text #: doc/guix.texi:3583 msgid "" "However, note that, in both examples, all of @code{emacs} and the profile as " "well as all of their dependencies are transferred (due to @code{-r}), " "regardless of what is already available in the store on the target machine. " "The @code{--missing} option can help figure out which items are missing from " "the target store. The @command{guix copy} command simplifies and optimizes " "this whole process, so this is probably what you should use in this case " "(@pxref{Invoking guix copy})." msgstr "" #. type: cindex #: doc/guix.texi:3584 #, no-wrap msgid "nar, archive format" msgstr "" #. type: cindex #: doc/guix.texi:3585 #, no-wrap msgid "normalized archive (nar)" msgstr "" #. type: Plain text #: doc/guix.texi:3595 msgid "" "Archives are stored in the ``normalized archive'' or ``nar'' format, which " "is comparable in spirit to `tar', but with differences that make it more " "appropriate for our purposes. First, rather than recording all Unix " "metadata for each file, the nar format only mentions the file type (regular, " "directory, or symbolic link); Unix permissions and owner/group are " "dismissed. Second, the order in which directory entries are stored always " "follows the order of file names according to the C locale collation order. " "This makes archive production fully deterministic." msgstr "" #. type: Plain text #: doc/guix.texi:3601 msgid "" "When exporting, the daemon digitally signs the contents of the archive, and " "that digital signature is appended. When importing, the daemon verifies the " "signature and rejects the import in case of an invalid signature or if the " "signing key is not authorized." msgstr "" #. type: Plain text #: doc/guix.texi:3603 msgid "The main options are:" msgstr "" #. type: item #: doc/guix.texi:3605 #, no-wrap msgid "--export" msgstr "" #. type: table #: doc/guix.texi:3608 msgid "" "Export the specified store files or packages (see below.) Write the " "resulting archive to the standard output." msgstr "" #. type: table #: doc/guix.texi:3611 msgid "" "Dependencies are @emph{not} included in the output, unless @code{--" "recursive} is passed." msgstr "" #. type: itemx #: doc/guix.texi:3612 doc/guix.texi:6858 doc/guix.texi:6956 doc/guix.texi:6983 #: doc/guix.texi:7182 doc/guix.texi:7223 doc/guix.texi:7270 #, no-wrap msgid "-r" msgstr "" #. type: item #: doc/guix.texi:3613 doc/guix.texi:6857 doc/guix.texi:6955 doc/guix.texi:6982 #: doc/guix.texi:7181 doc/guix.texi:7222 doc/guix.texi:7269 #, no-wrap msgid "--recursive" msgstr "" #. type: table #: doc/guix.texi:3618 msgid "" "When combined with @code{--export}, this instructs @command{guix archive} to " "include dependencies of the given items in the archive. Thus, the resulting " "archive is self-contained: it contains the closure of the exported store " "items." msgstr "" #. type: item #: doc/guix.texi:3619 #, no-wrap msgid "--import" msgstr "" #. type: table #: doc/guix.texi:3624 msgid "" "Read an archive from the standard input, and import the files listed therein " "into the store. Abort if the archive has an invalid digital signature, or " "if it is signed by a public key not among the authorized keys (see @code{--" "authorize} below.)" msgstr "" #. type: item #: doc/guix.texi:3625 #, no-wrap msgid "--missing" msgstr "" #. type: table #: doc/guix.texi:3629 msgid "" "Read a list of store file names from the standard input, one per line, and " "write on the standard output the subset of these files missing from the " "store." msgstr "" #. type: item #: doc/guix.texi:3630 #, no-wrap msgid "--generate-key[=@var{parameters}]" msgstr "" #. type: cindex #: doc/guix.texi:3631 #, no-wrap msgid "signing, archives" msgstr "" #. type: table #: doc/guix.texi:3636 msgid "" "Generate a new key pair for the daemon. This is a prerequisite before " "archives can be exported with @code{--export}. Note that this operation " "usually takes time, because it needs to gather enough entropy to generate " "the key pair." msgstr "" #. type: table #: doc/guix.texi:3646 msgid "" "The generated key pair is typically stored under @file{/etc/guix}, in " "@file{signing-key.pub} (public key) and @file{signing-key.sec} (private key, " "which must be kept secret.) When @var{parameters} is omitted, an ECDSA key " "using the Ed25519 curve is generated, or, for Libgcrypt versions before " "1.6.0, it is a 4096-bit RSA key. Alternatively, @var{parameters} can " "specify @code{genkey} parameters suitable for Libgcrypt (@pxref{General " "public-key related Functions, @code{gcry_pk_genkey},, gcrypt, The Libgcrypt " "Reference Manual})." msgstr "" #. type: item #: doc/guix.texi:3647 #, no-wrap msgid "--authorize" msgstr "" #. type: cindex #: doc/guix.texi:3648 #, no-wrap msgid "authorizing, archives" msgstr "" #. type: table #: doc/guix.texi:3652 msgid "" "Authorize imports signed by the public key passed on standard input. The " "public key must be in ``s-expression advanced format''---i.e., the same " "format as the @file{signing-key.pub} file." msgstr "" #. type: table #: doc/guix.texi:3659 msgid "" "The list of authorized keys is kept in the human-editable file @file{/etc/" "guix/acl}. The file contains @url{http://people.csail.mit.edu/rivest/Sexp." "txt, ``advanced-format s-expressions''} and is structured as an access-" "control list in the @url{http://theworld.com/~cme/spki.txt, Simple Public-" "Key Infrastructure (SPKI)}." msgstr "" #. type: item #: doc/guix.texi:3660 #, no-wrap msgid "--extract=@var{directory}" msgstr "" #. type: itemx #: doc/guix.texi:3661 #, no-wrap msgid "-x @var{directory}" msgstr "" #. type: table #: doc/guix.texi:3665 msgid "" "Read a single-item archive as served by substitute servers " "(@pxref{Substitutes}) and extract it to @var{directory}. This is a low-" "level operation needed in only very narrow use cases; see below." msgstr "" #. type: table #: doc/guix.texi:3668 msgid "" "For example, the following command extracts the substitute for Emacs served " "by @code{hydra.gnu.org} to @file{/tmp/emacs}:" msgstr "" #. type: example #: doc/guix.texi:3673 #, no-wrap msgid "" "$ wget -O - \\\n" " https://hydra.gnu.org/nar/@dots{}-emacs-24.5 \\\n" " | bunzip2 | guix archive -x /tmp/emacs\n" msgstr "" #. type: table #: doc/guix.texi:3680 msgid "" "Single-item archives are different from multiple-item archives produced by " "@command{guix archive --export}; they contain a single store item, and they " "do @emph{not} embed a signature. Thus this operation does @emph{no} " "signature verification and its output should be considered unsafe." msgstr "" #. type: table #: doc/guix.texi:3683 msgid "" "The primary purpose of this operation is to facilitate inspection of archive " "contents coming from possibly untrusted substitute servers." msgstr "" #. type: Plain text #: doc/guix.texi:3696 msgid "" "GNU Guix provides several Scheme programming interfaces (APIs) to define, " "build, and query packages. The first interface allows users to write high-" "level package definitions. These definitions refer to familiar packaging " "concepts, such as the name and version of a package, its build system, and " "its dependencies. These definitions can then be turned into concrete build " "actions." msgstr "" #. type: Plain text #: doc/guix.texi:3702 msgid "" "Build actions are performed by the Guix daemon, on behalf of users. In a " "standard setup, the daemon has write access to the store---the @file{/gnu/" "store} directory---whereas users do not. The recommended setup also has the " "daemon perform builds in chroots, under a specific build users, to minimize " "interference with the rest of the system." msgstr "" #. type: Plain text #: doc/guix.texi:3711 msgid "" "Lower-level APIs are available to interact with the daemon and the store. " "To instruct the daemon to perform a build action, users actually provide it " "with a @dfn{derivation}. A derivation is a low-level representation of the " "build actions to be taken, and the environment in which they should occur---" "derivations are to package definitions what assembly is to C programs. The " "term ``derivation'' comes from the fact that build results @emph{derive} " "from them." msgstr "" #. type: Plain text #: doc/guix.texi:3714 msgid "" "This chapter describes all these APIs in turn, starting from high-level " "package definitions." msgstr "" #. type: Plain text #: doc/guix.texi:3732 msgid "" "The high-level interface to package definitions is implemented in the " "@code{(guix packages)} and @code{(guix build-system)} modules. As an " "example, the package definition, or @dfn{recipe}, for the GNU Hello package " "looks like this:" msgstr "" #. type: example #: doc/guix.texi:3740 #, no-wrap msgid "" "(define-module (gnu packages hello)\n" " #:use-module (guix packages)\n" " #:use-module (guix download)\n" " #:use-module (guix build-system gnu)\n" " #:use-module (guix licenses)\n" " #:use-module (gnu packages gawk))\n" "\n" msgstr "" #. type: example #: doc/guix.texi:3759 #, no-wrap msgid "" "(define-public hello\n" " (package\n" " (name \"hello\")\n" " (version \"2.10\")\n" " (source (origin\n" " (method url-fetch)\n" " (uri (string-append \"mirror://gnu/hello/hello-\" version\n" " \".tar.gz\"))\n" " (sha256\n" " (base32\n" " \"0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i\"))))\n" " (build-system gnu-build-system)\n" " (arguments '(#:configure-flags '(\"--enable-silent-rules\")))\n" " (inputs `((\"gawk\" ,gawk)))\n" " (synopsis \"Hello, GNU world: An example GNU package\")\n" " (description \"Guess what GNU Hello prints!\")\n" " (home-page \"http://www.gnu.org/software/hello/\")\n" " (license gpl3+)))\n" msgstr "" #. type: Plain text #: doc/guix.texi:3769 msgid "" "Without being a Scheme expert, the reader may have guessed the meaning of " "the various fields here. This expression binds the variable @code{hello} to " "a @code{} object, which is essentially a record (@pxref{SRFI-9, " "Scheme records,, guile, GNU Guile Reference Manual}). This package object " "can be inspected using procedures found in the @code{(guix packages)} " "module; for instance, @code{(package-name hello)} returns---surprise!---" "@code{\"hello\"}." msgstr "" #. type: Plain text #: doc/guix.texi:3773 msgid "" "With luck, you may be able to import part or all of the definition of the " "package you are interested in from another repository, using the @code{guix " "import} command (@pxref{Invoking guix import})." msgstr "" #. type: Plain text #: doc/guix.texi:3779 msgid "" "In the example above, @var{hello} is defined in a module of its own, " "@code{(gnu packages hello)}. Technically, this is not strictly necessary, " "but it is convenient to do so: all the packages defined in modules under " "@code{(gnu packages @dots{})} are automatically known to the command-line " "tools (@pxref{Package Modules})." msgstr "" #. type: Plain text #: doc/guix.texi:3781 msgid "There are a few points worth noting in the above package definition:" msgstr "" #. type: itemize #: doc/guix.texi:3788 msgid "" "The @code{source} field of the package is an @code{} object " "(@pxref{origin Reference}, for the complete reference). Here, the @code{url-" "fetch} method from @code{(guix download)} is used, meaning that the source " "is a file to be downloaded over FTP or HTTP." msgstr "" #. type: itemize #: doc/guix.texi:3791 msgid "" "The @code{mirror://gnu} prefix instructs @code{url-fetch} to use one of the " "GNU mirrors defined in @code{(guix download)}." msgstr "" #. type: itemize #: doc/guix.texi:3798 msgid "" "The @code{sha256} field specifies the expected SHA256 hash of the file being " "downloaded. It is mandatory, and allows Guix to check the integrity of the " "file. The @code{(base32 @dots{})} form introduces the base32 representation " "of the hash. You can obtain this information with @code{guix download} " "(@pxref{Invoking guix download}) and @code{guix hash} (@pxref{Invoking guix " "hash})." msgstr "" #. type: cindex #: doc/guix.texi:3799 #, no-wrap msgid "patches" msgstr "" #. type: itemize #: doc/guix.texi:3803 msgid "" "When needed, the @code{origin} form can also have a @code{patches} field " "listing patches to be applied, and a @code{snippet} field giving a Scheme " "expression to modify the source code." msgstr "" #. type: cindex #: doc/guix.texi:3805 #, no-wrap msgid "GNU Build System" msgstr "" #. type: itemize #: doc/guix.texi:3811 msgid "" "The @code{build-system} field specifies the procedure to build the package " "(@pxref{Build Systems}). Here, @var{gnu-build-system} represents the " "familiar GNU Build System, where packages may be configured, built, and " "installed with the usual @code{./configure && make && make check && make " "install} command sequence." msgstr "" #. type: itemize #: doc/guix.texi:3817 msgid "" "The @code{arguments} field specifies options for the build system " "(@pxref{Build Systems}). Here it is interpreted by @var{gnu-build-system} " "as a request run @file{configure} with the @code{--enable-silent-rules} flag." msgstr "" #. type: findex #: doc/guix.texi:3818 doc/guix.texi:3821 #, no-wrap msgid "quote" msgstr "" #. type: cindex #: doc/guix.texi:3819 #, no-wrap msgid "quoting" msgstr "" #. type: findex #: doc/guix.texi:3820 #, no-wrap msgid "'" msgstr "" #. type: itemize #: doc/guix.texi:3829 msgid "" "What about these quote (@code{'}) characters? They are Scheme syntax to " "introduce a literal list; @code{'} is synonymous with @code{quote}. " "@xref{Expression Syntax, quoting,, guile, GNU Guile Reference Manual}, for " "details. Here the value of the @code{arguments} field is a list of " "arguments passed to the build system down the road, as with @code{apply} " "(@pxref{Fly Evaluation, @code{apply},, guile, GNU Guile Reference Manual})." msgstr "" #. type: itemize #: doc/guix.texi:3835 msgid "" "The hash-colon (@code{#:}) sequence defines a Scheme @dfn{keyword} " "(@pxref{Keywords,,, guile, GNU Guile Reference Manual}), and @code{#:" "configure-flags} is a keyword used to pass a keyword argument to the build " "system (@pxref{Coding With Keywords,,, guile, GNU Guile Reference Manual})." msgstr "" #. type: itemize #: doc/guix.texi:3841 msgid "" "The @code{inputs} field specifies inputs to the build process---i.e., build-" "time or run-time dependencies of the package. Here, we define an input " "called @code{\"gawk\"} whose value is that of the @var{gawk} variable; " "@var{gawk} is itself bound to a @code{} object." msgstr "" #. type: cindex #: doc/guix.texi:3842 #, no-wrap msgid "backquote (quasiquote)" msgstr "" #. type: findex #: doc/guix.texi:3843 #, no-wrap msgid "`" msgstr "" #. type: findex #: doc/guix.texi:3844 #, no-wrap msgid "quasiquote" msgstr "" #. type: cindex #: doc/guix.texi:3845 #, no-wrap msgid "comma (unquote)" msgstr "" #. type: findex #: doc/guix.texi:3846 #, no-wrap msgid "," msgstr "" #. type: findex #: doc/guix.texi:3847 #, no-wrap msgid "unquote" msgstr "" #. type: findex #: doc/guix.texi:3848 #, no-wrap msgid ",@@" msgstr "" #. type: findex #: doc/guix.texi:3849 #, no-wrap msgid "unquote-splicing" msgstr "" #. type: itemize #: doc/guix.texi:3855 msgid "" "Again, @code{`} (a backquote, synonymous with @code{quasiquote}) allows us " "to introduce a literal list in the @code{inputs} field, while @code{,} (a " "comma, synonymous with @code{unquote}) allows us to insert a value in that " "list (@pxref{Expression Syntax, unquote,, guile, GNU Guile Reference " "Manual})." msgstr "" #. type: itemize #: doc/guix.texi:3859 msgid "" "Note that GCC, Coreutils, Bash, and other essential tools do not need to be " "specified as inputs here. Instead, @var{gnu-build-system} takes care of " "ensuring that they are present (@pxref{Build Systems})." msgstr "" #. type: itemize #: doc/guix.texi:3863 msgid "" "However, any other dependencies need to be specified in the @code{inputs} " "field. Any dependency not specified here will simply be unavailable to the " "build process, possibly leading to a build failure." msgstr "" #. type: Plain text #: doc/guix.texi:3866 msgid "@xref{package Reference}, for a full description of possible fields." msgstr "" #. type: Plain text #: doc/guix.texi:3877 msgid "" "Once a package definition is in place, the package may actually be built " "using the @code{guix build} command-line tool (@pxref{Invoking guix build}), " "troubleshooting any build failures you encounter (@pxref{Debugging Build " "Failures}). You can easily jump back to the package definition using the " "@command{guix edit} command (@pxref{Invoking guix edit}). @xref{Packaging " "Guidelines}, for more information on how to test package definitions, and " "@ref{Invoking guix lint}, for information on how to check a definition for " "style conformance." msgstr "" #. type: vindex #: doc/guix.texi:3877 #, no-wrap msgid "GUIX_PACKAGE_PATH" msgstr "" #. type: Plain text #: doc/guix.texi:3881 msgid "" "Lastly, @pxref{Channels}, for information on how to extend the distribution " "by adding your own package definitions in a ``channel''." msgstr "" #. type: Plain text #: doc/guix.texi:3885 msgid "" "Finally, updating the package definition to a new upstream version can be " "partly automated by the @command{guix refresh} command (@pxref{Invoking guix " "refresh})." msgstr "" #. type: Plain text #: doc/guix.texi:3891 msgid "" "Behind the scenes, a derivation corresponding to the @code{} object " "is first computed by the @code{package-derivation} procedure. That " "derivation is stored in a @code{.drv} file under @file{/gnu/store}. The " "build actions it prescribes may then be realized by using the @code{build-" "derivations} procedure (@pxref{The Store})." msgstr "" #. type: deffn #: doc/guix.texi:3892 #, no-wrap msgid "{Scheme Procedure} package-derivation @var{store} @var{package} [@var{system}]" msgstr "" #. type: deffn #: doc/guix.texi:3895 msgid "" "Return the @code{} object of @var{package} for @var{system} " "(@pxref{Derivations})." msgstr "" #. type: deffn #: doc/guix.texi:3901 msgid "" "@var{package} must be a valid @code{} object, and @var{system} must " "be a string denoting the target system type---e.g., @code{\"x86_64-linux\"} " "for an x86_64 Linux-based GNU system. @var{store} must be a connection to " "the daemon, which operates on the store (@pxref{The Store})." msgstr "" #. type: Plain text #: doc/guix.texi:3907 msgid "" "Similarly, it is possible to compute a derivation that cross-builds a " "package for some other system:" msgstr "" #. type: deffn #: doc/guix.texi:3908 #, no-wrap msgid "{Scheme Procedure} package-cross-derivation @var{store} @" msgstr "" #. type: deffn #: doc/guix.texi:3912 msgid "" "@var{package} @var{target} [@var{system}] Return the @code{} " "object of @var{package} cross-built from @var{system} to @var{target}." msgstr "" #. type: deffn #: doc/guix.texi:3917 msgid "" "@var{target} must be a valid GNU triplet denoting the target hardware and " "operating system, such as @code{\"mips64el-linux-gnu\"} " "(@pxref{Configuration Names, GNU configuration triplets,, configure, GNU " "Configure and Build System})." msgstr "" #. type: cindex #: doc/guix.texi:3919 #, no-wrap msgid "package transformations" msgstr "" #. type: cindex #: doc/guix.texi:3920 #, no-wrap msgid "input rewriting" msgstr "" #. type: cindex #: doc/guix.texi:3921 #, no-wrap msgid "dependency tree rewriting" msgstr "" #. type: Plain text #: doc/guix.texi:3925 msgid "" "Packages can be manipulated in arbitrary ways. An example of a useful " "transformation is @dfn{input rewriting}, whereby the dependency tree of a " "package is rewritten by replacing specific inputs by others:" msgstr "" #. type: deffn #: doc/guix.texi:3926 #, no-wrap msgid "{Scheme Procedure} package-input-rewriting @var{replacements} @" msgstr "" #. type: deffn #: doc/guix.texi:3933 msgid "" "[@var{rewrite-name}] Return a procedure that, when passed a package, " "replaces its direct and indirect dependencies (but not its implicit inputs) " "according to @var{replacements}. @var{replacements} is a list of package " "pairs; the first element of each pair is the package to replace, and the " "second one is the replacement." msgstr "" #. type: deffn #: doc/guix.texi:3936 msgid "" "Optionally, @var{rewrite-name} is a one-argument procedure that takes the " "name of a package and returns its new name after rewrite." msgstr "" #. type: Plain text #: doc/guix.texi:3940 msgid "Consider this example:" msgstr "" #. type: example #: doc/guix.texi:3946 #, no-wrap msgid "" "(define libressl-instead-of-openssl\n" " ;; This is a procedure to replace OPENSSL by LIBRESSL,\n" " ;; recursively.\n" " (package-input-rewriting `((,openssl . ,libressl))))\n" "\n" msgstr "" #. type: example #: doc/guix.texi:3949 #, no-wrap msgid "" "(define git-with-libressl\n" " (libressl-instead-of-openssl git))\n" msgstr "" #. type: Plain text #: doc/guix.texi:3957 msgid "" "Here we first define a rewriting procedure that replaces @var{openssl} with " "@var{libressl}. Then we use it to define a @dfn{variant} of the @var{git} " "package that uses @var{libressl} instead of @var{openssl}. This is exactly " "what the @option{--with-input} command-line option does (@pxref{Package " "Transformation Options, @option{--with-input}})." msgstr "" #. type: Plain text #: doc/guix.texi:3961 msgid "" "A more generic procedure to rewrite a package dependency graph is " "@code{package-mapping}: it supports arbitrary changes to nodes in the graph." msgstr "" #. type: deffn #: doc/guix.texi:3962 #, no-wrap msgid "{Scheme Procedure} package-mapping @var{proc} [@var{cut?}]" msgstr "" #. type: deffn #: doc/guix.texi:3966 msgid "" "Return a procedure that, given a package, applies @var{proc} to all the " "packages depended on and returns the resulting package. The procedure stops " "recursion when @var{cut?} returns true for a given package." msgstr "" #. type: subsection #: doc/guix.texi:3975 #, no-wrap msgid "@code{package} Reference" msgstr "" #. type: Plain text #: doc/guix.texi:3979 msgid "" "This section summarizes all the options available in @code{package} " "declarations (@pxref{Defining Packages})." msgstr "" #. type: deftp #: doc/guix.texi:3980 #, no-wrap msgid "{Data Type} package" msgstr "" #. type: deftp #: doc/guix.texi:3982 msgid "This is the data type representing a package recipe." msgstr "" #. type: table #: doc/guix.texi:3986 msgid "The name of the package, as a string." msgstr "" #. type: code{#1} #: doc/guix.texi:3987 #, no-wrap msgid "version" msgstr "" #. type: table #: doc/guix.texi:3989 msgid "The version of the package, as a string." msgstr "" #. type: code{#1} #: doc/guix.texi:3990 doc/guix.texi:7589 doc/guix.texi:10265 #: doc/guix.texi:10553 #, no-wrap msgid "source" msgstr "" #. type: table #: doc/guix.texi:3997 msgid "" "An object telling how the source code for the package should be acquired. " "Most of the time, this is an @code{origin} object, which denotes a file " "fetched from the Internet (@pxref{origin Reference}). It can also be any " "other ``file-like'' object such as a @code{local-file}, which denotes a file " "from the local file system (@pxref{G-Expressions, @code{local-file}})." msgstr "" #. type: code{#1} #: doc/guix.texi:3998 #, no-wrap msgid "build-system" msgstr "" #. type: table #: doc/guix.texi:4001 msgid "" "The build system that should be used to build the package (@pxref{Build " "Systems})." msgstr "" #. type: item #: doc/guix.texi:4002 doc/guix.texi:12176 #, no-wrap msgid "@code{arguments} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:4005 msgid "" "The arguments that should be passed to the build system. This is a list, " "typically containing sequential keyword-value pairs." msgstr "" #. type: item #: doc/guix.texi:4006 #, no-wrap msgid "@code{inputs} (default: @code{'()})" msgstr "" #. type: itemx #: doc/guix.texi:4007 #, no-wrap msgid "@code{native-inputs} (default: @code{'()})" msgstr "" #. type: itemx #: doc/guix.texi:4008 #, no-wrap msgid "@code{propagated-inputs} (default: @code{'()})" msgstr "" #. type: cindex #: doc/guix.texi:4009 #, no-wrap msgid "inputs, of packages" msgstr "" #. type: table #: doc/guix.texi:4017 msgid "" "These fields list dependencies of the package. Each one is a list of " "tuples, where each tuple has a label for the input (a string) as its first " "element, a package, origin, or derivation as its second element, and " "optionally the name of the output thereof that should be used, which " "defaults to @code{\"out\"} (@pxref{Packages with Multiple Outputs}, for more " "on package outputs). For example, the list below specifies three inputs:" msgstr "" #. type: example #: doc/guix.texi:4022 #, no-wrap msgid "" "`((\"libffi\" ,libffi)\n" " (\"libunistring\" ,libunistring)\n" " (\"glib:bin\" ,glib \"bin\")) ;the \"bin\" output of Glib\n" msgstr "" #. type: cindex #: doc/guix.texi:4024 #, no-wrap msgid "cross compilation, package dependencies" msgstr "" #. type: table #: doc/guix.texi:4030 msgid "" "The distinction between @code{native-inputs} and @code{inputs} is necessary " "when considering cross-compilation. When cross-compiling, dependencies " "listed in @code{inputs} are built for the @emph{target} architecture; " "conversely, dependencies listed in @code{native-inputs} are built for the " "architecture of the @emph{build} machine." msgstr "" #. type: table #: doc/guix.texi:4035 msgid "" "@code{native-inputs} is typically used to list tools needed at build time, " "but not at run time, such as Autoconf, Automake, pkg-config, Gettext, or " "Bison. @command{guix lint} can report likely mistakes in this area " "(@pxref{Invoking guix lint})." msgstr "" #. type: anchor{#1} #: doc/guix.texi:4042 msgid "package-propagated-inputs" msgstr "" #. type: table #: doc/guix.texi:4042 msgid "" "Lastly, @code{propagated-inputs} is similar to @code{inputs}, but the " "specified packages will be automatically installed alongside the package " "they belong to (@pxref{package-cmd-propagated-inputs, @command{guix " "package}}, for information on how @command{guix package} deals with " "propagated inputs.)" msgstr "" #. type: table #: doc/guix.texi:4046 msgid "" "For example this is necessary when a C/C++ library needs headers of another " "library to compile, or when a pkg-config file refers to another one @i{via} " "its @code{Requires} field." msgstr "" #. type: table #: doc/guix.texi:4053 msgid "" "Another example where @code{propagated-inputs} is useful is for languages " "that lack a facility to record the run-time search path akin to the " "@code{RUNPATH} of ELF files; this includes Guile, Python, Perl, and more. " "To ensure that libraries written in those languages can find library code " "they depend on at run time, run-time dependencies must be listed in " "@code{propagated-inputs} rather than @code{inputs}." msgstr "" #. type: item #: doc/guix.texi:4054 #, no-wrap msgid "@code{self-native-input?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:4057 msgid "" "This is a Boolean field telling whether the package should use itself as a " "native input when cross-compiling." msgstr "" #. type: item #: doc/guix.texi:4058 #, no-wrap msgid "@code{outputs} (default: @code{'(\"out\")})" msgstr "" #. type: table #: doc/guix.texi:4061 msgid "" "The list of output names of the package. @xref{Packages with Multiple " "Outputs}, for typical uses of additional outputs." msgstr "" #. type: item #: doc/guix.texi:4062 #, no-wrap msgid "@code{native-search-paths} (default: @code{'()})" msgstr "" #. type: itemx #: doc/guix.texi:4063 #, no-wrap msgid "@code{search-paths} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:4066 msgid "" "A list of @code{search-path-specification} objects describing search-path " "environment variables honored by the package." msgstr "" #. type: item #: doc/guix.texi:4067 #, no-wrap msgid "@code{replacement} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:4071 msgid "" "This must be either @code{#f} or a package object that will be used as a " "@dfn{replacement} for this package. @xref{Security Updates, grafts}, for " "details." msgstr "" #. type: item #: doc/guix.texi:4072 doc/guix.texi:7581 #, no-wrap msgid "synopsis" msgstr "" #. type: table #: doc/guix.texi:4074 msgid "A one-line description of the package." msgstr "" #. type: item #: doc/guix.texi:4075 doc/guix.texi:7582 doc/guix.texi:22969 #, no-wrap msgid "description" msgstr "" #. type: table #: doc/guix.texi:4077 msgid "A more elaborate description of the package." msgstr "" #. type: code{#1} #: doc/guix.texi:4078 #, no-wrap msgid "license" msgstr "" #. type: cindex #: doc/guix.texi:4079 #, no-wrap msgid "license, of packages" msgstr "" #. type: table #: doc/guix.texi:4082 msgid "" "The license of the package; a value from @code{(guix licenses)}, or a list " "of such values." msgstr "" #. type: itemx #: doc/guix.texi:4083 doc/guix.texi:7590 #, no-wrap msgid "home-page" msgstr "" #. type: table #: doc/guix.texi:4085 msgid "The URL to the home-page of the package, as a string." msgstr "" #. type: item #: doc/guix.texi:4086 #, no-wrap msgid "@code{supported-systems} (default: @var{%supported-systems})" msgstr "" #. type: table #: doc/guix.texi:4089 msgid "" "The list of systems supported by the package, as strings of the form " "@code{architecture-kernel}, for example @code{\"x86_64-linux\"}." msgstr "" #. type: item #: doc/guix.texi:4090 #, no-wrap msgid "@code{maintainers} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:4092 msgid "The list of maintainers of the package, as @code{maintainer} objects." msgstr "" #. type: item #: doc/guix.texi:4093 #, no-wrap msgid "@code{location} (default: source location of the @code{package} form)" msgstr "" #. type: table #: doc/guix.texi:4097 msgid "" "The source location of the package. It is useful to override this when " "inheriting from another package, in which case this field is not " "automatically corrected." msgstr "" #. type: subsection #: doc/guix.texi:4102 #, no-wrap msgid "@code{origin} Reference" msgstr "" #. type: Plain text #: doc/guix.texi:4106 msgid "" "This section summarizes all the options available in @code{origin} " "declarations (@pxref{Defining Packages})." msgstr "" #. type: deftp #: doc/guix.texi:4107 #, no-wrap msgid "{Data Type} origin" msgstr "" #. type: deftp #: doc/guix.texi:4109 msgid "This is the data type representing a source code origin." msgstr "" #. type: code{#1} #: doc/guix.texi:4111 doc/guix.texi:17137 #, no-wrap msgid "uri" msgstr "" #. type: table #: doc/guix.texi:4116 msgid "" "An object containing the URI of the source. The object type depends on the " "@code{method} (see below). For example, when using the @var{url-fetch} " "method of @code{(guix download)}, the valid @code{uri} values are: a URL " "represented as a string, or a list thereof." msgstr "" #. type: code{#1} #: doc/guix.texi:4117 #, no-wrap msgid "method" msgstr "" #. type: table #: doc/guix.texi:4119 msgid "A procedure that handles the URI." msgstr "" #. type: table #: doc/guix.texi:4121 msgid "Examples include:" msgstr "" #. type: item #: doc/guix.texi:4123 #, no-wrap msgid "@var{url-fetch} from @code{(guix download)}" msgstr "" #. type: table #: doc/guix.texi:4126 msgid "" "download a file from the HTTP, HTTPS, or FTP URL specified in the @code{uri} " "field;" msgstr "" #. type: vindex #: doc/guix.texi:4127 doc/guix.texi:6875 #, no-wrap msgid "git-fetch" msgstr "" #. type: item #: doc/guix.texi:4128 #, no-wrap msgid "@var{git-fetch} from @code{(guix git-download)}" msgstr "" #. type: table #: doc/guix.texi:4132 msgid "" "clone the Git version control repository, and check out the revision " "specified in the @code{uri} field as a @code{git-reference} object; a " "@code{git-reference} looks like this:" msgstr "" #. type: example #: doc/guix.texi:4137 #, no-wrap msgid "" "(git-reference\n" " (url \"git://git.debian.org/git/pkg-shadow/shadow\")\n" " (commit \"v4.1.5.1\"))\n" msgstr "" #. type: code{#1} #: doc/guix.texi:4140 #, no-wrap msgid "sha256" msgstr "" #. type: table #: doc/guix.texi:4144 msgid "" "A bytevector containing the SHA-256 hash of the source. Typically the " "@code{base32} form is used here to generate the bytevector from a base-32 " "string." msgstr "" #. type: table #: doc/guix.texi:4148 msgid "" "You can obtain this information using @code{guix download} (@pxref{Invoking " "guix download}) or @code{guix hash} (@pxref{Invoking guix hash})." msgstr "" #. type: item #: doc/guix.texi:4149 #, no-wrap msgid "@code{file-name} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:4155 msgid "" "The file name under which the source code should be saved. When this is " "@code{#f}, a sensible default value will be used in most cases. In case the " "source is fetched from a URL, the file name from the URL will be used. For " "version control checkouts, it is recommended to provide the file name " "explicitly because the default is not very descriptive." msgstr "" #. type: item #: doc/guix.texi:4156 #, no-wrap msgid "@code{patches} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:4159 msgid "" "A list of file names, origins, or file-like objects (@pxref{G-Expressions, " "file-like objects}) pointing to patches to be applied to the source." msgstr "" #. type: table #: doc/guix.texi:4163 msgid "" "This list of patches must be unconditional. In particular, it cannot depend " "on the value of @code{%current-system} or @code{%current-target-system}." msgstr "" #. type: item #: doc/guix.texi:4164 #, no-wrap msgid "@code{snippet} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:4168 msgid "" "A G-expression (@pxref{G-Expressions}) or S-expression that will be run in " "the source directory. This is a convenient way to modify the source, " "sometimes more convenient than a patch." msgstr "" #. type: item #: doc/guix.texi:4169 #, no-wrap msgid "@code{patch-flags} (default: @code{'(\"-p1\")})" msgstr "" #. type: table #: doc/guix.texi:4172 msgid "" "A list of command-line flags that should be passed to the @code{patch} " "command." msgstr "" #. type: item #: doc/guix.texi:4173 #, no-wrap msgid "@code{patch-inputs} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:4177 msgid "" "Input packages or derivations to the patching process. When this is " "@code{#f}, the usual set of inputs necessary for patching are provided, such " "as GNU@tie{}Patch." msgstr "" #. type: item #: doc/guix.texi:4178 #, no-wrap msgid "@code{modules} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:4181 msgid "" "A list of Guile modules that should be loaded during the patching process " "and while running the code in the @code{snippet} field." msgstr "" #. type: item #: doc/guix.texi:4182 #, no-wrap msgid "@code{patch-guile} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:4185 msgid "" "The Guile package that should be used in the patching process. When this is " "@code{#f}, a sensible default is used." msgstr "" #. type: cindex #: doc/guix.texi:4192 #, no-wrap msgid "build system" msgstr "" #. type: Plain text #: doc/guix.texi:4197 msgid "" "Each package definition specifies a @dfn{build system} and arguments for " "that build system (@pxref{Defining Packages}). This @code{build-system} " "field represents the build procedure of the package, as well as implicit " "dependencies of that build procedure." msgstr "" #. type: Plain text #: doc/guix.texi:4201 msgid "" "Build systems are @code{} objects. The interface to create " "and manipulate them is provided by the @code{(guix build-system)} module, " "and actual build systems are exported by specific modules." msgstr "" #. type: cindex #: doc/guix.texi:4202 #, no-wrap msgid "bag (low-level package representation)" msgstr "" #. type: Plain text #: doc/guix.texi:4209 msgid "" "Under the hood, build systems first compile package objects to @dfn{bags}. " "A @dfn{bag} is like a package, but with less ornamentation---in other words, " "a bag is a lower-level representation of a package, which includes all the " "inputs of that package, including some that were implicitly added by the " "build system. This intermediate representation is then compiled to a " "derivation (@pxref{Derivations})." msgstr "" #. type: Plain text #: doc/guix.texi:4217 msgid "" "Build systems accept an optional list of @dfn{arguments}. In package " "definitions, these are passed @i{via} the @code{arguments} field " "(@pxref{Defining Packages}). They are typically keyword arguments " "(@pxref{Optional Arguments, keyword arguments in Guile,, guile, GNU Guile " "Reference Manual}). The value of these arguments is usually evaluated in " "the @dfn{build stratum}---i.e., by a Guile process launched by the daemon " "(@pxref{Derivations})." msgstr "" #. type: Plain text #: doc/guix.texi:4221 msgid "" "The main build system is @var{gnu-build-system}, which implements the " "standard build procedure for GNU and many other packages. It is provided by " "the @code{(guix build-system gnu)} module." msgstr "" #. type: defvr #: doc/guix.texi:4222 #, no-wrap msgid "{Scheme Variable} gnu-build-system" msgstr "" #. type: defvr #: doc/guix.texi:4226 msgid "" "@var{gnu-build-system} represents the GNU Build System, and variants thereof " "(@pxref{Configuration, configuration and makefile conventions,, standards, " "GNU Coding Standards})." msgstr "" #. type: cindex #: doc/guix.texi:4227 #, no-wrap msgid "build phases" msgstr "" #. type: defvr #: doc/guix.texi:4234 msgid "" "In a nutshell, packages using it are configured, built, and installed with " "the usual @code{./configure && make && make check && make install} command " "sequence. In practice, a few additional steps are often needed. All these " "steps are split up in separate @dfn{phases}, notably@footnote{Please see the " "@code{(guix build gnu-build-system)} modules for more details about the " "build phases.}:" msgstr "" #. type: item #: doc/guix.texi:4236 #, no-wrap msgid "unpack" msgstr "" #. type: table #: doc/guix.texi:4240 msgid "" "Unpack the source tarball, and change the current directory to the extracted " "source tree. If the source is actually a directory, copy it to the build " "tree, and enter that directory." msgstr "" #. type: item #: doc/guix.texi:4241 #, no-wrap msgid "patch-source-shebangs" msgstr "" #. type: table #: doc/guix.texi:4245 msgid "" "Patch shebangs encountered in source files so they refer to the right store " "file names. For instance, this changes @code{#!/bin/sh} to @code{#!/gnu/" "store/@dots{}-bash-4.3/bin/sh}." msgstr "" #. type: item #: doc/guix.texi:4246 doc/guix.texi:4803 #, no-wrap msgid "configure" msgstr "" #. type: table #: doc/guix.texi:4250 msgid "" "Run the @file{configure} script with a number of default options, such as " "@code{--prefix=/gnu/store/@dots{}}, as well as the options specified by the " "@code{#:configure-flags} argument." msgstr "" #. type: item #: doc/guix.texi:4251 doc/guix.texi:4440 doc/guix.texi:4808 doc/guix.texi:22379 #, no-wrap msgid "build" msgstr "" #. type: table #: doc/guix.texi:4255 msgid "" "Run @code{make} with the list of flags specified with @code{#:make-flags}. " "If the @code{#:parallel-build?} argument is true (the default), build with " "@code{make -j}." msgstr "" #. type: item #: doc/guix.texi:4256 doc/guix.texi:4450 doc/guix.texi:4812 #, no-wrap msgid "check" msgstr "" #. type: table #: doc/guix.texi:4261 msgid "" "Run @code{make check}, or some other target specified with @code{#:test-" "target}, unless @code{#:tests? #f} is passed. If the @code{#:parallel-" "tests?} argument is true (the default), run @code{make check -j}." msgstr "" #. type: item #: doc/guix.texi:4262 doc/guix.texi:4458 doc/guix.texi:4816 #, no-wrap msgid "install" msgstr "" #. type: table #: doc/guix.texi:4264 msgid "Run @code{make install} with the flags listed in @code{#:make-flags}." msgstr "" #. type: item #: doc/guix.texi:4265 #, no-wrap msgid "patch-shebangs" msgstr "" #. type: table #: doc/guix.texi:4267 msgid "Patch shebangs on the installed executable files." msgstr "" #. type: item #: doc/guix.texi:4268 #, no-wrap msgid "strip" msgstr "" #. type: table #: doc/guix.texi:4272 msgid "" "Strip debugging symbols from ELF files (unless @code{#:strip-binaries?} is " "false), copying them to the @code{debug} output when available " "(@pxref{Installing Debugging Files})." msgstr "" #. type: vindex #: doc/guix.texi:4274 #, no-wrap msgid "%standard-phases" msgstr "" #. type: defvr #: doc/guix.texi:4279 msgid "" "The build-side module @code{(guix build gnu-build-system)} defines " "@var{%standard-phases} as the default list of build phases. @var{%standard-" "phases} is a list of symbol/procedure pairs, where the procedure implements " "the actual phase." msgstr "" #. type: defvr #: doc/guix.texi:4282 msgid "" "The list of phases used for a particular package can be changed with the " "@code{#:phases} parameter. For instance, passing:" msgstr "" #. type: example #: doc/guix.texi:4285 #, no-wrap msgid "#:phases (modify-phases %standard-phases (delete 'configure))\n" msgstr "" #. type: defvr #: doc/guix.texi:4289 msgid "" "means that all the phases described above will be used, except the " "@code{configure} phase." msgstr "" #. type: defvr #: doc/guix.texi:4296 msgid "" "In addition, this build system ensures that the ``standard'' environment for " "GNU packages is available. This includes tools such as GCC, libc, " "Coreutils, Bash, Make, Diffutils, grep, and sed (see the @code{(guix build-" "system gnu)} module for a complete list). We call these the @dfn{implicit " "inputs} of a package, because package definitions do not have to mention " "them." msgstr "" #. type: Plain text #: doc/guix.texi:4303 msgid "" "Other @code{} objects are defined to support other conventions " "and tools used by free software packages. They inherit most of @var{gnu-" "build-system}, and differ mainly in the set of inputs implicitly added to " "the build process, and in the list of phases executed. Some of these build " "systems are listed below." msgstr "" #. type: defvr #: doc/guix.texi:4304 #, no-wrap msgid "{Scheme Variable} ant-build-system" msgstr "" #. type: defvr #: doc/guix.texi:4308 msgid "" "This variable is exported by @code{(guix build-system ant)}. It implements " "the build procedure for Java packages that can be built with @url{http://ant." "apache.org/, Ant build tool}." msgstr "" #. type: defvr #: doc/guix.texi:4313 msgid "" "It adds both @code{ant} and the @dfn{Java Development Kit} (JDK) as provided " "by the @code{icedtea} package to the set of inputs. Different packages can " "be specified with the @code{#:ant} and @code{#:jdk} parameters, respectively." msgstr "" #. type: defvr #: doc/guix.texi:4319 msgid "" "When the original package does not provide a suitable Ant build file, the " "parameter @code{#:jar-name} can be used to generate a minimal Ant build file " "@file{build.xml} with tasks to build the specified jar archive. In this " "case the parameter @code{#:source-dir} can be used to specify the source sub-" "directory, defaulting to ``src''." msgstr "" #. type: defvr #: doc/guix.texi:4327 msgid "" "The @code{#:main-class} parameter can be used with the minimal ant buildfile " "to specify the main class of the resulting jar. This makes the jar file " "executable. The @code{#:test-include} parameter can be used to specify the " "list of junit tests to run. It defaults to @code{(list \"**/*Test.java\")}. " "The @code{#:test-exclude} can be used to disable some tests. It defaults to " "@code{(list \"**/Abstract*.java\")}, because abstract classes cannot be run " "as tests." msgstr "" #. type: defvr #: doc/guix.texi:4331 msgid "" "The parameter @code{#:build-target} can be used to specify the Ant task that " "should be run during the @code{build} phase. By default the ``jar'' task " "will be run." msgstr "" #. type: defvr #: doc/guix.texi:4334 #, no-wrap msgid "{Scheme Variable} android-ndk-build-system" msgstr "" #. type: cindex #: doc/guix.texi:4335 #, no-wrap msgid "Android distribution" msgstr "" #. type: cindex #: doc/guix.texi:4336 #, no-wrap msgid "Android NDK build system" msgstr "" #. type: defvr #: doc/guix.texi:4340 msgid "" "This variable is exported by @code{(guix build-system android-ndk)}. It " "implements a build procedure for Android NDK (native development kit) " "packages using a Guix-specific build process." msgstr "" #. type: defvr #: doc/guix.texi:4344 msgid "" "The build system assumes that packages install their public interface " "(header) files to the subdirectory \"include\" of the \"out\" output and " "their libraries to the subdirectory \"lib\" of the \"out\" output." msgstr "" #. type: defvr #: doc/guix.texi:4347 msgid "" "It's also assumed that the union of all the dependencies of a package has no " "conflicting files." msgstr "" #. type: defvr #: doc/guix.texi:4350 msgid "" "For the time being, cross-compilation is not supported - so right now the " "libraries and header files are assumed to be host tools." msgstr "" #. type: defvr #: doc/guix.texi:4353 #, no-wrap msgid "{Scheme Variable} asdf-build-system/source" msgstr "" #. type: defvrx #: doc/guix.texi:4354 #, no-wrap msgid "{Scheme Variable} asdf-build-system/sbcl" msgstr "" #. type: defvrx #: doc/guix.texi:4355 #, no-wrap msgid "{Scheme Variable} asdf-build-system/ecl" msgstr "" #. type: defvr #: doc/guix.texi:4361 msgid "" "These variables, exported by @code{(guix build-system asdf)}, implement " "build procedures for Common Lisp packages using @url{https://common-lisp.net/" "project/asdf/, ``ASDF''}. ASDF is a system definition facility for Common " "Lisp programs and libraries." msgstr "" #. type: defvr #: doc/guix.texi:4368 msgid "" "The @code{asdf-build-system/source} system installs the packages in source " "form, and can be loaded using any common lisp implementation, via ASDF. The " "others, such as @code{asdf-build-system/sbcl}, install binary systems in the " "format which a particular implementation understands. These build systems " "can also be used to produce executable programs, or lisp images which " "contain a set of packages pre-loaded." msgstr "" #. type: defvr #: doc/guix.texi:4372 msgid "" "The build system uses naming conventions. For binary packages, the package " "name should be prefixed with the lisp implementation, such as @code{sbcl-} " "for @code{asdf-build-system/sbcl}." msgstr "" #. type: defvr #: doc/guix.texi:4376 msgid "" "Additionally, the corresponding source package should be labeled using the " "same convention as python packages (see @ref{Python Modules}), using the " "@code{cl-} prefix." msgstr "" #. type: defvr #: doc/guix.texi:4381 msgid "" "For binary packages, each system should be defined as a Guix package. If " "one package @code{origin} contains several systems, package variants can be " "created in order to build all the systems. Source packages, which use " "@code{asdf-build-system/source}, may contain several systems." msgstr "" #. type: defvr #: doc/guix.texi:4388 msgid "" "In order to create executable programs and images, the build-side procedures " "@code{build-program} and @code{build-image} can be used. They should be " "called in a build phase after the @code{create-symlinks} phase, so that the " "system which was just built can be used within the resulting image. " "@code{build-program} requires a list of Common Lisp expressions to be passed " "as the @code{#:entry-program} argument." msgstr "" #. type: defvr #: doc/guix.texi:4397 msgid "" "If the system is not defined within its own @code{.asd} file of the same " "name, then the @code{#:asd-file} parameter should be used to specify which " "file the system is defined in. Furthermore, if the package defines a system " "for its tests in a separate file, it will be loaded before the tests are run " "if it is specified by the @code{#:test-asd-file} parameter. If it is not " "set, the files @code{-tests.asd}, @code{-test.asd}, " "@code{tests.asd}, and @code{test.asd} will be tried if they exist." msgstr "" #. type: defvr #: doc/guix.texi:4401 msgid "" "If for some reason the package must be named in a different way than the " "naming conventions suggest, the @code{#:asd-system-name} parameter can be " "used to specify the name of the system." msgstr "" #. type: defvr #: doc/guix.texi:4404 #, no-wrap msgid "{Scheme Variable} cargo-build-system" msgstr "" #. type: cindex #: doc/guix.texi:4405 #, no-wrap msgid "Rust programming language" msgstr "" #. type: cindex #: doc/guix.texi:4406 #, no-wrap msgid "Cargo (Rust build system)" msgstr "" #. type: defvr #: doc/guix.texi:4410 msgid "" "This variable is exported by @code{(guix build-system cargo)}. It supports " "builds of packages using Cargo, the build tool of the @uref{https://www.rust-" "lang.org, Rust programming language}." msgstr "" #. type: defvr #: doc/guix.texi:4415 msgid "" "In its @code{configure} phase, this build system replaces dependencies " "specified in the @file{Carto.toml} file with inputs to the Guix package. " "The @code{install} phase installs the binaries, and it also installs the " "source code and @file{Cargo.toml} file." msgstr "" #. type: cindex #: doc/guix.texi:4417 #, no-wrap msgid "Clojure (programming language)" msgstr "" #. type: cindex #: doc/guix.texi:4418 #, no-wrap msgid "simple Clojure build system" msgstr "" #. type: defvr #: doc/guix.texi:4419 #, no-wrap msgid "{Scheme Variable} clojure-build-system" msgstr "" #. type: defvr #: doc/guix.texi:4424 msgid "" "This variable is exported by @code{(guix build-system clojure)}. It " "implements a simple build procedure for @uref{https://clojure.org/, Clojure} " "packages using plain old @code{compile} in Clojure. Cross-compilation is " "not supported yet." msgstr "" #. type: defvr #: doc/guix.texi:4428 msgid "" "It adds @code{clojure}, @code{icedtea} and @code{zip} to the set of inputs. " "Different packages can be specified with the @code{#:clojure}, @code{#:jdk} " "and @code{#:zip} parameters, respectively." msgstr "" #. type: defvr #: doc/guix.texi:4434 msgid "" "A list of source directories, test directories and jar names can be " "specified with the @code{#:source-dirs}, @code{#:test-dirs} and @code{#:jar-" "names} parameters, respectively. Compile directory and main class can be " "specified with the @code{#:compile-dir} and @code{#:main-class} parameters, " "respectively. Other parameters are documented below." msgstr "" #. type: defvr #: doc/guix.texi:4437 msgid "" "This build system is an extension of @var{ant-build-system}, but with the " "following phases changed:" msgstr "" #. type: table #: doc/guix.texi:4449 msgid "" "This phase calls @code{compile} in Clojure to compile source files and runs " "@command{jar} to create jars from both source files and compiled files " "according to the include list and exclude list specified in @code{#:aot-" "include} and @code{#:aot-exclude}, respectively. The exclude list has " "priority over the include list. These lists consist of symbols representing " "Clojure libraries or the special keyword @code{#:all} representing all " "Clojure libraries found under the source directories. The parameter @code{#:" "omit-source?} decides if source should be included into the jars." msgstr "" #. type: table #: doc/guix.texi:4457 msgid "" "This phase runs tests according to the include list and exclude list " "specified in @code{#:test-include} and @code{#:test-exclude}, respectively. " "Their meanings are analogous to that of @code{#:aot-include} and @code{#:aot-" "exclude}, except that the special keyword @code{#:all} now stands for all " "Clojure libraries found under the test directories. The parameter @code{#:" "tests?} decides if tests should be run." msgstr "" #. type: table #: doc/guix.texi:4460 msgid "This phase installs all jars built previously." msgstr "" #. type: defvr #: doc/guix.texi:4463 msgid "" "Apart from the above, this build system also contains an additional phase:" msgstr "" #. type: item #: doc/guix.texi:4466 #, no-wrap msgid "install-doc" msgstr "" #. type: table #: doc/guix.texi:4471 msgid "" "This phase installs all top-level files with base name matching @var{%doc-" "regex}. A different regex can be specified with the @code{#:doc-regex} " "parameter. All files (recursively) inside the documentation directories " "specified in @code{#:doc-dirs} are installed as well." msgstr "" #. type: defvr #: doc/guix.texi:4474 #, no-wrap msgid "{Scheme Variable} cmake-build-system" msgstr "" #. type: defvr #: doc/guix.texi:4478 msgid "" "This variable is exported by @code{(guix build-system cmake)}. It " "implements the build procedure for packages using the @url{http://www.cmake." "org, CMake build tool}." msgstr "" #. type: defvr #: doc/guix.texi:4482 msgid "" "It automatically adds the @code{cmake} package to the set of inputs. Which " "package is used can be specified with the @code{#:cmake} parameter." msgstr "" #. type: defvr #: doc/guix.texi:4489 msgid "" "The @code{#:configure-flags} parameter is taken as a list of flags passed to " "the @command{cmake} command. The @code{#:build-type} parameter specifies in " "abstract terms the flags passed to the compiler; it defaults to " "@code{\"RelWithDebInfo\"} (short for ``release mode with debugging " "information''), which roughly means that code is compiled with @code{-O2 -" "g}, as is the case for Autoconf-based packages by default." msgstr "" #. type: defvr #: doc/guix.texi:4491 #, no-wrap msgid "{Scheme Variable} go-build-system" msgstr "" #. type: defvr #: doc/guix.texi:4496 msgid "" "This variable is exported by @code{(guix build-system go)}. It implements a " "build procedure for Go packages using the standard @url{https://golang.org/" "cmd/go/#hdr-Compile_packages_and_dependencies, Go build mechanisms}." msgstr "" #. type: defvr #: doc/guix.texi:4507 msgid "" "The user is expected to provide a value for the key @code{#:import-path} " "and, in some cases, @code{#:unpack-path}. The @url{https://golang.org/doc/" "code.html#ImportPaths, import path} corresponds to the file system path " "expected by the package's build scripts and any referring packages, and " "provides a unique way to refer to a Go package. It is typically based on a " "combination of the package source code's remote URI and file system " "hierarchy structure. In some cases, you will need to unpack the package's " "source code to a different directory structure than the one indicated by the " "import path, and @code{#:unpack-path} should be used in such cases." msgstr "" #. type: defvr #: doc/guix.texi:4512 msgid "" "Packages that provide Go libraries should be installed along with their " "source code. The key @code{#:install-source?}, which defaults to @code{#t}, " "controls whether or not the source code is installed. It can be set to " "@code{#f} for packages that only provide executable files." msgstr "" #. type: defvr #: doc/guix.texi:4514 #, no-wrap msgid "{Scheme Variable} glib-or-gtk-build-system" msgstr "" #. type: defvr #: doc/guix.texi:4517 msgid "" "This variable is exported by @code{(guix build-system glib-or-gtk)}. It is " "intended for use with packages making use of GLib or GTK+." msgstr "" #. type: defvr #: doc/guix.texi:4520 msgid "" "This build system adds the following two phases to the ones defined by " "@var{gnu-build-system}:" msgstr "" #. type: item #: doc/guix.texi:4522 doc/guix.texi:4832 #, no-wrap msgid "glib-or-gtk-wrap" msgstr "" #. type: table #: doc/guix.texi:4529 msgid "" "The phase @code{glib-or-gtk-wrap} ensures that programs in @file{bin/} are " "able to find GLib ``schemas'' and @uref{https://developer.gnome.org/gtk3/" "stable/gtk-running.html, GTK+ modules}. This is achieved by wrapping the " "programs in launch scripts that appropriately set the @code{XDG_DATA_DIRS} " "and @code{GTK_PATH} environment variables." msgstr "" #. type: table #: doc/guix.texi:4536 msgid "" "It is possible to exclude specific package outputs from that wrapping " "process by listing their names in the @code{#:glib-or-gtk-wrap-excluded-" "outputs} parameter. This is useful when an output is known not to contain " "any GLib or GTK+ binaries, and where wrapping would gratuitously add a " "dependency of that output on GLib and GTK+." msgstr "" #. type: item #: doc/guix.texi:4537 doc/guix.texi:4836 #, no-wrap msgid "glib-or-gtk-compile-schemas" msgstr "" #. type: table #: doc/guix.texi:4545 msgid "" "The phase @code{glib-or-gtk-compile-schemas} makes sure that all " "@uref{https://developer.gnome.org/gio/stable/glib-compile-schemas.html, " "GSettings schemas} of GLib are compiled. Compilation is performed by the " "@command{glib-compile-schemas} program. It is provided by the package " "@code{glib:bin} which is automatically imported by the build system. The " "@code{glib} package providing @command{glib-compile-schemas} can be " "specified with the @code{#:glib} parameter." msgstr "" #. type: defvr #: doc/guix.texi:4548 msgid "Both phases are executed after the @code{install} phase." msgstr "" #. type: defvr #: doc/guix.texi:4550 #, no-wrap msgid "{Scheme Variable} guile-build-system" msgstr "" #. type: defvr #: doc/guix.texi:4557 msgid "" "This build system is for Guile packages that consist exclusively of Scheme " "code and that are so lean that they don't even have a makefile, let alone a " "@file{configure} script. It compiles Scheme code using @command{guild " "compile} (@pxref{Compilation,,, guile, GNU Guile Reference Manual}) and " "installs the @file{.scm} and @file{.go} files in the right place. It also " "installs documentation." msgstr "" #. type: defvr #: doc/guix.texi:4560 msgid "" "This build system supports cross-compilation by using the @code{--target} " "option of @command{guild compile}." msgstr "" #. type: defvr #: doc/guix.texi:4563 msgid "" "Packages built with @code{guile-build-system} must provide a Guile package " "in their @code{native-inputs} field." msgstr "" #. type: defvr #: doc/guix.texi:4565 #, no-wrap msgid "{Scheme Variable} minify-build-system" msgstr "" #. type: defvr #: doc/guix.texi:4568 msgid "" "This variable is exported by @code{(guix build-system minify)}. It " "implements a minification procedure for simple JavaScript packages." msgstr "" #. type: defvr #: doc/guix.texi:4574 msgid "" "It adds @code{uglify-js} to the set of inputs and uses it to compress all " "JavaScript files in the @file{src} directory. A different minifier package " "can be specified with the @code{#:uglify-js} parameter, but it is expected " "that the package writes the minified code to the standard output." msgstr "" #. type: defvr #: doc/guix.texi:4578 msgid "" "When the input JavaScript files are not all located in the @file{src} " "directory, the parameter @code{#:javascript-files} can be used to specify a " "list of file names to feed to the minifier." msgstr "" #. type: defvr #: doc/guix.texi:4580 #, no-wrap msgid "{Scheme Variable} ocaml-build-system" msgstr "" #. type: defvr #: doc/guix.texi:4586 msgid "" "This variable is exported by @code{(guix build-system ocaml)}. It " "implements a build procedure for @uref{https://ocaml.org, OCaml} packages, " "which consists of choosing the correct set of commands to run for each " "package. OCaml packages can expect many different commands to be run. This " "build system will try some of them." msgstr "" #. type: defvr #: doc/guix.texi:4596 msgid "" "When the package has a @file{setup.ml} file present at the top-level, it " "will run @code{ocaml setup.ml -configure}, @code{ocaml setup.ml -build} and " "@code{ocaml setup.ml -install}. The build system will assume that this file " "was generated by @uref{http://oasis.forge.ocamlcore.org/, OASIS} and will " "take care of setting the prefix and enabling tests if they are not " "disabled. You can pass configure and build flags with the @code{#:configure-" "flags} and @code{#:build-flags}. The @code{#:test-flags} key can be passed " "to change the set of flags used to enable tests. The @code{#:use-make?} key " "can be used to bypass this system in the build and install phases." msgstr "" #. type: defvr #: doc/guix.texi:4601 msgid "" "When the package has a @file{configure} file, it is assumed that it is a " "hand-made configure script that requires a different argument format than in " "the @code{gnu-build-system}. You can add more flags with the @code{#:" "configure-flags} key." msgstr "" #. type: defvr #: doc/guix.texi:4605 msgid "" "When the package has a @file{Makefile} file (or @code{#:use-make?} is " "@code{#t}), it will be used and more flags can be passed to the build and " "install phases with the @code{#:make-flags} key." msgstr "" #. type: defvr #: doc/guix.texi:4613 msgid "" "Finally, some packages do not have these files and use a somewhat standard " "location for its build system. In that case, the build system will run " "@code{ocaml pkg/pkg.ml} or @code{ocaml pkg/build.ml} and take care of " "providing the path to the required findlib module. Additional flags can be " "passed via the @code{#:build-flags} key. Install is taken care of by " "@command{opam-installer}. In this case, the @code{opam} package must be " "added to the @code{native-inputs} field of the package definition." msgstr "" #. type: defvr #: doc/guix.texi:4621 msgid "" "Note that most OCaml packages assume they will be installed in the same " "directory as OCaml, which is not what we want in guix. In particular, they " "will install @file{.so} files in their module's directory, which is usually " "fine because it is in the OCaml compiler directory. In guix though, these " "libraries cannot be found and we use @code{CAML_LD_LIBRARY_PATH}. This " "variable points to @file{lib/ocaml/site-lib/stubslibs} and this is where " "@file{.so} libraries should be installed." msgstr "" #. type: defvr #: doc/guix.texi:4623 #, no-wrap msgid "{Scheme Variable} python-build-system" msgstr "" #. type: defvr #: doc/guix.texi:4628 msgid "" "This variable is exported by @code{(guix build-system python)}. It " "implements the more or less standard build procedure used by Python " "packages, which consists in running @code{python setup.py build} and then " "@code{python setup.py install --prefix=/gnu/store/@dots{}}." msgstr "" #. type: defvr #: doc/guix.texi:4632 msgid "" "For packages that install stand-alone Python programs under @code{bin/}, it " "takes care of wrapping these programs so that their @code{PYTHONPATH} " "environment variable points to all the Python libraries they depend on." msgstr "" #. type: defvr #: doc/guix.texi:4638 msgid "" "Which Python package is used to perform the build can be specified with the " "@code{#:python} parameter. This is a useful way to force a package to be " "built for a specific version of the Python interpreter, which might be " "necessary if the package is only compatible with a single interpreter " "version." msgstr "" #. type: defvr #: doc/guix.texi:4643 msgid "" "By default guix calls @code{setup.py} under control of @code{setuptools}, " "much like @command{pip} does. Some packages are not compatible with " "setuptools (and pip), thus you can disable this by setting the @code{#:use-" "setuptools} parameter to @code{#f}." msgstr "" #. type: defvr #: doc/guix.texi:4645 #, no-wrap msgid "{Scheme Variable} perl-build-system" msgstr "" #. type: defvr #: doc/guix.texi:4657 msgid "" "This variable is exported by @code{(guix build-system perl)}. It implements " "the standard build procedure for Perl packages, which either consists in " "running @code{perl Build.PL --prefix=/gnu/store/@dots{}}, followed by " "@code{Build} and @code{Build install}; or in running @code{perl Makefile.PL " "PREFIX=/gnu/store/@dots{}}, followed by @code{make} and @code{make install}, " "depending on which of @code{Build.PL} or @code{Makefile.PL} is present in " "the package distribution. Preference is given to the former if both " "@code{Build.PL} and @code{Makefile.PL} exist in the package distribution. " "This preference can be reversed by specifying @code{#t} for the @code{#:make-" "maker?} parameter." msgstr "" #. type: defvr #: doc/guix.texi:4661 msgid "" "The initial @code{perl Makefile.PL} or @code{perl Build.PL} invocation " "passes flags specified by the @code{#:make-maker-flags} or @code{#:module-" "build-flags} parameter, respectively." msgstr "" #. type: defvr #: doc/guix.texi:4663 msgid "Which Perl package is used can be specified with @code{#:perl}." msgstr "" #. type: defvr #: doc/guix.texi:4665 #, no-wrap msgid "{Scheme Variable} r-build-system" msgstr "" #. type: defvr #: doc/guix.texi:4673 msgid "" "This variable is exported by @code{(guix build-system r)}. It implements " "the build procedure used by @uref{http://r-project.org, R} packages, which " "essentially is little more than running @code{R CMD INSTALL --library=/gnu/" "store/@dots{}} in an environment where @code{R_LIBS_SITE} contains the paths " "to all R package inputs. Tests are run after installation using the R " "function @code{tools::testInstalledPackage}." msgstr "" #. type: defvr #: doc/guix.texi:4675 #, no-wrap msgid "{Scheme Variable} texlive-build-system" msgstr "" #. type: defvr #: doc/guix.texi:4680 msgid "" "This variable is exported by @code{(guix build-system texlive)}. It is used " "to build TeX packages in batch mode with a specified engine. The build " "system sets the @code{TEXINPUTS} variable to find all TeX source files in " "the inputs." msgstr "" #. type: defvr #: doc/guix.texi:4689 msgid "" "By default it runs @code{luatex} on all files ending on @code{ins}. A " "different engine and format can be specified with the @code{#:tex-format} " "argument. Different build targets can be specified with the @code{#:build-" "targets} argument, which expects a list of file names. The build system " "adds only @code{texlive-bin} and @code{texlive-latex-base} (both from " "@code{(gnu packages tex}) to the inputs. Both can be overridden with the " "arguments @code{#:texlive-bin} and @code{#:texlive-latex-base}, respectively." msgstr "" #. type: defvr #: doc/guix.texi:4692 msgid "" "The @code{#:tex-directory} parameter tells the build system where to install " "the built files under the texmf tree." msgstr "" #. type: defvr #: doc/guix.texi:4694 #, no-wrap msgid "{Scheme Variable} ruby-build-system" msgstr "" #. type: defvr #: doc/guix.texi:4698 msgid "" "This variable is exported by @code{(guix build-system ruby)}. It implements " "the RubyGems build procedure used by Ruby packages, which involves running " "@code{gem build} followed by @code{gem install}." msgstr "" #. type: defvr #: doc/guix.texi:4706 msgid "" "The @code{source} field of a package that uses this build system typically " "references a gem archive, since this is the format that Ruby developers use " "when releasing their software. The build system unpacks the gem archive, " "potentially patches the source, runs the test suite, repackages the gem, and " "installs it. Additionally, directories and tarballs may be referenced to " "allow building unreleased gems from Git or a traditional source release " "tarball." msgstr "" #. type: defvr #: doc/guix.texi:4710 msgid "" "Which Ruby package is used can be specified with the @code{#:ruby} " "parameter. A list of additional flags to be passed to the @command{gem} " "command can be specified with the @code{#:gem-flags} parameter." msgstr "" #. type: defvr #: doc/guix.texi:4712 #, no-wrap msgid "{Scheme Variable} waf-build-system" msgstr "" #. type: defvr #: doc/guix.texi:4718 msgid "" "This variable is exported by @code{(guix build-system waf)}. It implements " "a build procedure around the @code{waf} script. The common phases---" "@code{configure}, @code{build}, and @code{install}---are implemented by " "passing their names as arguments to the @code{waf} script." msgstr "" #. type: defvr #: doc/guix.texi:4722 msgid "" "The @code{waf} script is executed by the Python interpreter. Which Python " "package is used to run the script can be specified with the @code{#:python} " "parameter." msgstr "" #. type: defvr #: doc/guix.texi:4724 #, no-wrap msgid "{Scheme Variable} scons-build-system" msgstr "" #. type: defvr #: doc/guix.texi:4730 msgid "" "This variable is exported by @code{(guix build-system scons)}. It " "implements the build procedure used by the SCons software construction " "tool. This build system runs @code{scons} to build the package, @code{scons " "test} to run tests, and then @code{scons install} to install the package." msgstr "" #. type: defvr #: doc/guix.texi:4735 msgid "" "Additional flags to be passed to @code{scons} can be specified with the " "@code{#:scons-flags} parameter. The version of Python used to run SCons can " "be specified by selecting the appropriate SCons package with the @code{#:" "scons} parameter." msgstr "" #. type: defvr #: doc/guix.texi:4737 #, no-wrap msgid "{Scheme Variable} haskell-build-system" msgstr "" #. type: defvr #: doc/guix.texi:4751 msgid "" "This variable is exported by @code{(guix build-system haskell)}. It " "implements the Cabal build procedure used by Haskell packages, which " "involves running @code{runhaskell Setup.hs configure --prefix=/gnu/store/" "@dots{}} and @code{runhaskell Setup.hs build}. Instead of installing the " "package by running @code{runhaskell Setup.hs install}, to avoid trying to " "register libraries in the read-only compiler store directory, the build " "system uses @code{runhaskell Setup.hs copy}, followed by @code{runhaskell " "Setup.hs register}. In addition, the build system generates the package " "documentation by running @code{runhaskell Setup.hs haddock}, unless @code{#:" "haddock? #f} is passed. Optional Haddock parameters can be passed with the " "help of the @code{#:haddock-flags} parameter. If the file @code{Setup.hs} " "is not found, the build system looks for @code{Setup.lhs} instead." msgstr "" #. type: defvr #: doc/guix.texi:4754 msgid "" "Which Haskell compiler is used can be specified with the @code{#:haskell} " "parameter which defaults to @code{ghc}." msgstr "" #. type: defvr #: doc/guix.texi:4756 #, no-wrap msgid "{Scheme Variable} dub-build-system" msgstr "" #. type: defvr #: doc/guix.texi:4761 msgid "" "This variable is exported by @code{(guix build-system dub)}. It implements " "the Dub build procedure used by D packages, which involves running @code{dub " "build} and @code{dub run}. Installation is done by copying the files " "manually." msgstr "" #. type: defvr #: doc/guix.texi:4764 msgid "" "Which D compiler is used can be specified with the @code{#:ldc} parameter " "which defaults to @code{ldc}." msgstr "" #. type: defvr #: doc/guix.texi:4766 #, no-wrap msgid "{Scheme Variable} emacs-build-system" msgstr "" #. type: defvr #: doc/guix.texi:4770 msgid "" "This variable is exported by @code{(guix build-system emacs)}. It " "implements an installation procedure similar to the packaging system of " "Emacs itself (@pxref{Packages,,, emacs, The GNU Emacs Manual})." msgstr "" #. type: defvr #: doc/guix.texi:4777 msgid "" "It first creates the @code{@var{package}-autoloads.el} file, then it byte " "compiles all Emacs Lisp files. Differently from the Emacs packaging system, " "the Info documentation files are moved to the standard documentation " "directory and the @file{dir} file is deleted. Each package is installed in " "its own directory under @file{share/emacs/site-lisp/guix.d}." msgstr "" #. type: defvr #: doc/guix.texi:4779 #, no-wrap msgid "{Scheme Variable} font-build-system" msgstr "" #. type: defvr #: doc/guix.texi:4785 msgid "" "This variable is exported by @code{(guix build-system font)}. It implements " "an installation procedure for font packages where upstream provides pre-" "compiled TrueType, OpenType, etc. font files that merely need to be copied " "into place. It copies font files to standard locations in the output " "directory." msgstr "" #. type: defvr #: doc/guix.texi:4787 #, no-wrap msgid "{Scheme Variable} meson-build-system" msgstr "" #. type: defvr #: doc/guix.texi:4791 msgid "" "This variable is exported by @code{(guix build-system meson)}. It " "implements the build procedure for packages that use @url{http://mesonbuild." "com, Meson} as their build system." msgstr "" #. type: defvr #: doc/guix.texi:4797 msgid "" "It adds both Meson and @uref{https://ninja-build.org/, Ninja} to the set of " "inputs, and they can be changed with the parameters @code{#:meson} and " "@code{#:ninja} if needed. The default Meson is @code{meson-for-build}, " "which is special because it doesn't clear the @code{RUNPATH} of binaries and " "libraries when they are installed." msgstr "" #. type: defvr #: doc/guix.texi:4800 msgid "" "This build system is an extension of @var{gnu-build-system}, but with the " "following phases changed to some specific for Meson:" msgstr "" #. type: table #: doc/guix.texi:4807 msgid "" "The phase runs @code{meson} with the flags specified in @code{#:configure-" "flags}. The flag @code{--build-type} is always set to @code{plain} unless " "something else is specified in @code{#:build-type}." msgstr "" #. type: table #: doc/guix.texi:4811 msgid "" "The phase runs @code{ninja} to build the package in parallel by default, but " "this can be changed with @code{#:parallel-build?}." msgstr "" #. type: table #: doc/guix.texi:4815 msgid "" "The phase runs @code{ninja} with the target specified in @code{#:test-" "target}, which is @code{\"test\"} by default." msgstr "" #. type: table #: doc/guix.texi:4818 msgid "The phase runs @code{ninja install} and can not be changed." msgstr "" #. type: defvr #: doc/guix.texi:4821 msgid "Apart from that, the build system also adds the following phases:" msgstr "" #. type: item #: doc/guix.texi:4824 #, no-wrap msgid "fix-runpath" msgstr "" #. type: table #: doc/guix.texi:4831 msgid "" "This phase ensures that all binaries can find the libraries they need. It " "searches for required libraries in subdirectories of the package being " "built, and adds those to @code{RUNPATH} where needed. It also removes " "references to libraries left over from the build phase by @code{meson-for-" "build}, such as test dependencies, that aren't actually required for the " "program to run." msgstr "" #. type: table #: doc/guix.texi:4835 doc/guix.texi:4839 msgid "" "This phase is the phase provided by @code{glib-or-gtk-build-system}, and it " "is not enabled by default. It can be enabled with @code{#:glib-or-gtk?}." msgstr "" #. type: Plain text #: doc/guix.texi:4846 msgid "" "Lastly, for packages that do not need anything as sophisticated, a " "``trivial'' build system is provided. It is trivial in the sense that it " "provides basically no support: it does not pull any implicit inputs, and " "does not have a notion of build phases." msgstr "" #. type: defvr #: doc/guix.texi:4847 #, no-wrap msgid "{Scheme Variable} trivial-build-system" msgstr "" #. type: defvr #: doc/guix.texi:4849 msgid "This variable is exported by @code{(guix build-system trivial)}." msgstr "" #. type: defvr #: doc/guix.texi:4854 msgid "" "This build system requires a @code{#:builder} argument. This argument must " "be a Scheme expression that builds the package output(s)---as with " "@code{build-expression->derivation} (@pxref{Derivations, @code{build-" "expression->derivation}})." msgstr "" #. type: cindex #: doc/guix.texi:4860 #, no-wrap msgid "store items" msgstr "" #. type: cindex #: doc/guix.texi:4861 #, no-wrap msgid "store paths" msgstr "" #. type: Plain text #: doc/guix.texi:4872 msgid "" "Conceptually, the @dfn{store} is the place where derivations that have been " "built successfully are stored---by default, @file{/gnu/store}. Sub-" "directories in the store are referred to as @dfn{store items} or sometimes " "@dfn{store paths}. The store has an associated database that contains " "information such as the store paths referred to by each store path, and the " "list of @emph{valid} store items---results of successful builds. This " "database resides in @file{@var{localstatedir}/guix/db}, where " "@var{localstatedir} is the state directory specified @i{via} @option{--" "localstatedir} at configure time, usually @file{/var}." msgstr "" #. type: Plain text #: doc/guix.texi:4877 msgid "" "The store is @emph{always} accessed by the daemon on behalf of its clients " "(@pxref{Invoking guix-daemon}). To manipulate the store, clients connect to " "the daemon over a Unix-domain socket, send requests to it, and read the " "result---these are remote procedure calls, or RPCs." msgstr "" #. type: quotation #: doc/guix.texi:4882 msgid "" "Users must @emph{never} modify files under @file{/gnu/store} directly. This " "would lead to inconsistencies and break the immutability assumptions of " "Guix's functional model (@pxref{Introduction})." msgstr "" #. type: quotation #: doc/guix.texi:4886 msgid "" "@xref{Invoking guix gc, @command{guix gc --verify}}, for information on how " "to check the integrity of the store and attempt recovery from accidental " "modifications." msgstr "" #. type: Plain text #: doc/guix.texi:4893 msgid "" "The @code{(guix store)} module provides procedures to connect to the daemon, " "and to perform RPCs. These are described below. By default, @code{open-" "connection}, and thus all the @command{guix} commands, connect to the local " "daemon or to the URI specified by the @code{GUIX_DAEMON_SOCKET} environment " "variable." msgstr "" #. type: defvr #: doc/guix.texi:4894 #, no-wrap msgid "{Environment Variable} GUIX_DAEMON_SOCKET" msgstr "" #. type: defvr #: doc/guix.texi:4899 msgid "" "When set, the value of this variable should be a file name or a URI " "designating the daemon endpoint. When it is a file name, it denotes a Unix-" "domain socket to connect to. In addition to file names, the supported URI " "schemes are:" msgstr "" #. type: code{#1} #: doc/guix.texi:4901 doc/guix.texi:16813 #, no-wrap msgid "file" msgstr "" #. type: itemx #: doc/guix.texi:4902 #, no-wrap msgid "unix" msgstr "" #. type: table #: doc/guix.texi:4906 msgid "" "These are for Unix-domain sockets. @code{file:///var/guix/daemon-socket/" "socket} is equivalent to @file{/var/guix/daemon-socket/socket}." msgstr "" #. type: item #: doc/guix.texi:4907 #, no-wrap msgid "guix" msgstr "" #. type: table #: doc/guix.texi:4915 msgid "" "These URIs denote connections over TCP/IP, without encryption nor " "authentication of the remote host. The URI must specify the host name and " "optionally a port number (by default port 44146 is used):" msgstr "" #. type: example #: doc/guix.texi:4918 #, no-wrap msgid "guix://master.guix.example.org:1234\n" msgstr "" #. type: table #: doc/guix.texi:4923 msgid "" "This setup is suitable on local networks, such as clusters, where only " "trusted nodes may connect to the build daemon at @code{master.guix.example." "org}." msgstr "" #. type: table #: doc/guix.texi:4927 msgid "" "The @code{--listen} option of @command{guix-daemon} can be used to instruct " "it to listen for TCP connections (@pxref{Invoking guix-daemon, @code{--" "listen}})." msgstr "" #. type: item #: doc/guix.texi:4928 #, no-wrap msgid "ssh" msgstr "" #. type: cindex #: doc/guix.texi:4929 #, no-wrap msgid "SSH access to build daemons" msgstr "" #. type: table #: doc/guix.texi:4933 msgid "" "These URIs allow you to connect to a remote daemon over SSH@footnote{This " "feature requires Guile-SSH (@pxref{Requirements}).}. A typical URL might " "look like this:" msgstr "" #. type: example #: doc/guix.texi:4936 #, no-wrap msgid "ssh://charlie@@guix.example.org:22\n" msgstr "" #. type: table #: doc/guix.texi:4940 msgid "" "As for @command{guix copy}, the usual OpenSSH client configuration files are " "honored (@pxref{Invoking guix copy})." msgstr "" #. type: defvr #: doc/guix.texi:4943 msgid "Additional URI schemes may be supported in the future." msgstr "" #. type: quotation #: doc/guix.texi:4950 msgid "" "The ability to connect to remote build daemons is considered experimental as " "of @value{VERSION}. Please get in touch with us to share any problems or " "suggestions you may have (@pxref{Contributing})." msgstr "" #. type: deffn #: doc/guix.texi:4953 #, no-wrap msgid "{Scheme Procedure} open-connection [@var{uri}] [#:reserve-space? #t]" msgstr "" #. type: deffn #: doc/guix.texi:4958 msgid "" "Connect to the daemon over the Unix-domain socket at @var{uri} (a string). " "When @var{reserve-space?} is true, instruct it to reserve a little bit of " "extra space on the file system so that the garbage collector can still " "operate should the disk become full. Return a server object." msgstr "" #. type: deffn #: doc/guix.texi:4961 msgid "" "@var{file} defaults to @var{%default-socket-path}, which is the normal " "location given the options that were passed to @command{configure}." msgstr "" #. type: deffn #: doc/guix.texi:4963 #, no-wrap msgid "{Scheme Procedure} close-connection @var{server}" msgstr "" #. type: deffn #: doc/guix.texi:4965 msgid "Close the connection to @var{server}." msgstr "" #. type: defvr #: doc/guix.texi:4967 #, no-wrap msgid "{Scheme Variable} current-build-output-port" msgstr "" #. type: defvr #: doc/guix.texi:4970 msgid "" "This variable is bound to a SRFI-39 parameter, which refers to the port " "where build and error logs sent by the daemon should be written." msgstr "" #. type: Plain text #: doc/guix.texi:4974 msgid "" "Procedures that make RPCs all take a server object as their first argument." msgstr "" #. type: deffn #: doc/guix.texi:4975 #, no-wrap msgid "{Scheme Procedure} valid-path? @var{server} @var{path}" msgstr "" #. type: cindex #: doc/guix.texi:4976 #, no-wrap msgid "invalid store items" msgstr "" #. type: deffn #: doc/guix.texi:4981 msgid "" "Return @code{#t} when @var{path} designates a valid store item and @code{#f} " "otherwise (an invalid item may exist on disk but still be invalid, for " "instance because it is the result of an aborted or failed build.)" msgstr "" #. type: deffn #: doc/guix.texi:4984 msgid "" "A @code{&nix-protocol-error} condition is raised if @var{path} is not " "prefixed by the store directory (@file{/gnu/store})." msgstr "" #. type: deffn #: doc/guix.texi:4986 #, no-wrap msgid "{Scheme Procedure} add-text-to-store @var{server} @var{name} @var{text} [@var{references}]" msgstr "" #. type: deffn #: doc/guix.texi:4990 msgid "" "Add @var{text} under file @var{name} in the store, and return its store " "path. @var{references} is the list of store paths referred to by the " "resulting store path." msgstr "" #. type: deffn #: doc/guix.texi:4992 #, no-wrap msgid "{Scheme Procedure} build-derivations @var{server} @var{derivations}" msgstr "" #. type: deffn #: doc/guix.texi:4996 msgid "" "Build @var{derivations} (a list of @code{} objects or derivation " "paths), and return when the worker is done building them. Return @code{#t} " "on success." msgstr "" #. type: Plain text #: doc/guix.texi:5002 msgid "" "Note that the @code{(guix monads)} module provides a monad as well as " "monadic versions of the above procedures, with the goal of making it more " "convenient to work with code that accesses the store (@pxref{The Store " "Monad})." msgstr "" #. type: i{#1} #: doc/guix.texi:5005 msgid "This section is currently incomplete." msgstr "" #. type: cindex #: doc/guix.texi:5009 #, no-wrap msgid "derivations" msgstr "" #. type: Plain text #: doc/guix.texi:5013 msgid "" "Low-level build actions and the environment in which they are performed are " "represented by @dfn{derivations}. A derivation contains the following " "pieces of information:" msgstr "" #. type: itemize #: doc/guix.texi:5018 msgid "" "The outputs of the derivation---derivations produce at least one file or " "directory in the store, but may produce more." msgstr "" #. type: itemize #: doc/guix.texi:5022 msgid "" "The inputs of the derivations, which may be other derivations or plain files " "in the store (patches, build scripts, etc.)" msgstr "" #. type: itemize #: doc/guix.texi:5025 msgid "The system type targeted by the derivation---e.g., @code{x86_64-linux}." msgstr "" #. type: itemize #: doc/guix.texi:5029 msgid "" "The file name of a build script in the store, along with the arguments to be " "passed." msgstr "" #. type: itemize #: doc/guix.texi:5032 msgid "A list of environment variables to be defined." msgstr "" #. type: cindex #: doc/guix.texi:5035 #, no-wrap msgid "derivation path" msgstr "" #. type: Plain text #: doc/guix.texi:5043 msgid "" "Derivations allow clients of the daemon to communicate build actions to the " "store. They exist in two forms: as an in-memory representation, both on the " "client- and daemon-side, and as files in the store whose name end in @code{." "drv}---these files are referred to as @dfn{derivation paths}. Derivations " "paths can be passed to the @code{build-derivations} procedure to perform the " "build actions they prescribe (@pxref{The Store})." msgstr "" #. type: cindex #: doc/guix.texi:5044 #, no-wrap msgid "fixed-output derivations" msgstr "" #. type: Plain text #: doc/guix.texi:5051 msgid "" "Operations such as file downloads and version-control checkouts for which " "the expected content hash is known in advance are modeled as @dfn{fixed-" "output derivations}. Unlike regular derivations, the outputs of a fixed-" "output derivation are independent of its inputs---e.g., a source code " "download produces the same result regardless of the download method and " "tools being used." msgstr "" #. type: Plain text #: doc/guix.texi:5056 msgid "" "The @code{(guix derivations)} module provides a representation of " "derivations as Scheme objects, along with procedures to create and otherwise " "manipulate derivations. The lowest-level primitive to create a derivation " "is the @code{derivation} procedure:" msgstr "" #. type: deffn #: doc/guix.texi:5057 #, no-wrap msgid "{Scheme Procedure} derivation @var{store} @var{name} @var{builder} @" msgstr "" #. type: deffn #: doc/guix.texi:5066 msgid "" "@var{args} [#:outputs '(\"out\")] [#:hash #f] [#:hash-algo #f] @ [#:" "recursive? #f] [#:inputs '()] [#:env-vars '()] @ [#:system (%current-" "system)] [#:references-graphs #f] @ [#:allowed-references #f] [#:disallowed-" "references #f] @ [#:leaked-env-vars #f] [#:local-build? #f] @ [#:" "substitutable? #t] [#:properties '()] Build a derivation with the given " "arguments, and return the resulting @code{} object." msgstr "" #. type: deffn #: doc/guix.texi:5073 msgid "" "When @var{hash} and @var{hash-algo} are given, a @dfn{fixed-output " "derivation} is created---i.e., one whose result is known in advance, such as " "a file download. If, in addition, @var{recursive?} is true, then that fixed " "output may be an executable file or a directory and @var{hash} must be the " "hash of an archive containing this output." msgstr "" #. type: deffn #: doc/guix.texi:5078 msgid "" "When @var{references-graphs} is true, it must be a list of file name/store " "path pairs. In that case, the reference graph of each store path is " "exported in the build environment in the corresponding file, in a simple " "text format." msgstr "" #. type: deffn #: doc/guix.texi:5083 msgid "" "When @var{allowed-references} is true, it must be a list of store items or " "outputs that the derivation's output may refer to. Likewise, " "@var{disallowed-references}, if true, must be a list of things the outputs " "may @emph{not} refer to." msgstr "" #. type: deffn #: doc/guix.texi:5090 msgid "" "When @var{leaked-env-vars} is true, it must be a list of strings denoting " "environment variables that are allowed to ``leak'' from the daemon's " "environment to the build environment. This is only applicable to fixed-" "output derivations---i.e., when @var{hash} is true. The main use is to " "allow variables such as @code{http_proxy} to be passed to derivations that " "download files." msgstr "" #. type: deffn #: doc/guix.texi:5095 msgid "" "When @var{local-build?} is true, declare that the derivation is not a good " "candidate for offloading and should rather be built locally (@pxref{Daemon " "Offload Setup}). This is the case for small derivations where the costs of " "data transfers would outweigh the benefits." msgstr "" #. type: deffn #: doc/guix.texi:5100 msgid "" "When @var{substitutable?} is false, declare that substitutes of the " "derivation's output should not be used (@pxref{Substitutes}). This is " "useful, for instance, when building packages that capture details of the " "host CPU instruction set." msgstr "" #. type: deffn #: doc/guix.texi:5103 msgid "" "@var{properties} must be an association list describing ``properties'' of " "the derivation. It is kept as-is, uninterpreted, in the derivation." msgstr "" #. type: Plain text #: doc/guix.texi:5109 msgid "" "Here's an example with a shell script as its builder, assuming @var{store} " "is an open connection to the daemon, and @var{bash} points to a Bash " "executable in the store:" msgstr "" #. type: lisp #: doc/guix.texi:5114 #, no-wrap msgid "" "(use-modules (guix utils)\n" " (guix store)\n" " (guix derivations))\n" "\n" msgstr "" #. type: lisp #: doc/guix.texi:5123 #, no-wrap msgid "" "(let ((builder ; add the Bash script to the store\n" " (add-text-to-store store \"my-builder.sh\"\n" " \"echo hello world > $out\\n\" '())))\n" " (derivation store \"foo\"\n" " bash `(\"-e\" ,builder)\n" " #:inputs `((,bash) (,builder))\n" " #:env-vars '((\"HOME\" . \"/homeless\"))))\n" "@result{} # /gnu/store/@dots{}-foo>\n" msgstr "" #. type: Plain text #: doc/guix.texi:5130 msgid "" "As can be guessed, this primitive is cumbersome to use directly. A better " "approach is to write build scripts in Scheme, of course! The best course of " "action for that is to write the build code as a ``G-expression'', and to " "pass it to @code{gexp->derivation}. For more information, @pxref{G-" "Expressions}." msgstr "" #. type: Plain text #: doc/guix.texi:5135 msgid "" "Once upon a time, @code{gexp->derivation} did not exist and constructing " "derivations with build code written in Scheme was achieved with @code{build-" "expression->derivation}, documented below. This procedure is now deprecated " "in favor of the much nicer @code{gexp->derivation}." msgstr "" #. type: deffn #: doc/guix.texi:5136 #, no-wrap msgid "{Scheme Procedure} build-expression->derivation @var{store} @" msgstr "" #. type: deffn #: doc/guix.texi:5152 msgid "" "@var{name} @var{exp} @ [#:system (%current-system)] [#:inputs '()] @ [#:" "outputs '(\"out\")] [#:hash #f] [#:hash-algo #f] @ [#:recursive? #f] [#:env-" "vars '()] [#:modules '()] @ [#:references-graphs #f] [#:allowed-references " "#f] @ [#:disallowed-references #f] @ [#:local-build? #f] [#:substitutable? " "#t] [#:guile-for-build #f] Return a derivation that executes Scheme " "expression @var{exp} as a builder for derivation @var{name}. @var{inputs} " "must be a list of @code{(name drv-path sub-drv)} tuples; when @var{sub-drv} " "is omitted, @code{\"out\"} is assumed. @var{modules} is a list of names of " "Guile modules from the current search path to be copied in the store, " "compiled, and made available in the load path during the execution of " "@var{exp}---e.g., @code{((guix build utils) (guix build gnu-build-system))}." msgstr "" #. type: deffn #: doc/guix.texi:5160 msgid "" "@var{exp} is evaluated in an environment where @code{%outputs} is bound to a " "list of output/path pairs, and where @code{%build-inputs} is bound to a list " "of string/output-path pairs made from @var{inputs}. Optionally, @var{env-" "vars} is a list of string pairs specifying the name and value of environment " "variables visible to the builder. The builder terminates by passing the " "result of @var{exp} to @code{exit}; thus, when @var{exp} returns @code{#f}, " "the build is considered to have failed." msgstr "" #. type: deffn #: doc/guix.texi:5164 msgid "" "@var{exp} is built using @var{guile-for-build} (a derivation). When " "@var{guile-for-build} is omitted or is @code{#f}, the value of the " "@code{%guile-for-build} fluid is used instead." msgstr "" #. type: deffn #: doc/guix.texi:5169 msgid "" "See the @code{derivation} procedure for the meaning of @var{references-" "graphs}, @var{allowed-references}, @var{disallowed-references}, @var{local-" "build?}, and @var{substitutable?}." msgstr "" #. type: Plain text #: doc/guix.texi:5174 msgid "" "Here's an example of a single-output derivation that creates a directory " "containing one file:" msgstr "" #. type: lisp #: doc/guix.texi:5182 #, no-wrap msgid "" "(let ((builder '(let ((out (assoc-ref %outputs \"out\")))\n" " (mkdir out) ; create /gnu/store/@dots{}-goo\n" " (call-with-output-file (string-append out \"/test\")\n" " (lambda (p)\n" " (display '(hello guix) p))))))\n" " (build-expression->derivation store \"goo\" builder))\n" "\n" msgstr "" #. type: lisp #: doc/guix.texi:5184 #, no-wrap msgid "@result{} # @dots{}>\n" msgstr "" #. type: cindex #: doc/guix.texi:5190 #, no-wrap msgid "monad" msgstr "" #. type: Plain text #: doc/guix.texi:5196 msgid "" "The procedures that operate on the store described in the previous sections " "all take an open connection to the build daemon as their first argument. " "Although the underlying model is functional, they either have side effects " "or depend on the current state of the store." msgstr "" #. type: Plain text #: doc/guix.texi:5202 msgid "" "The former is inconvenient: the connection to the build daemon has to be " "carried around in all those functions, making it impossible to compose " "functions that do not take that parameter with functions that do. The " "latter can be problematic: since store operations have side effects and/or " "depend on external state, they have to be properly sequenced." msgstr "" #. type: cindex #: doc/guix.texi:5203 #, no-wrap msgid "monadic values" msgstr "" #. type: cindex #: doc/guix.texi:5204 #, no-wrap msgid "monadic functions" msgstr "" #. type: Plain text #: doc/guix.texi:5214 msgid "" "This is where the @code{(guix monads)} module comes in. This module " "provides a framework for working with @dfn{monads}, and a particularly " "useful monad for our uses, the @dfn{store monad}. Monads are a construct " "that allows two things: associating ``context'' with values (in our case, " "the context is the store), and building sequences of computations (here " "computations include accesses to the store). Values in a monad---values " "that carry this additional context---are called @dfn{monadic values}; " "procedures that return such values are called @dfn{monadic procedures}." msgstr "" #. type: Plain text #: doc/guix.texi:5216 msgid "Consider this ``normal'' procedure:" msgstr "" #. type: example #: doc/guix.texi:5225 #, no-wrap msgid "" "(define (sh-symlink store)\n" " ;; Return a derivation that symlinks the 'bash' executable.\n" " (let* ((drv (package-derivation store bash))\n" " (out (derivation->output-path drv))\n" " (sh (string-append out \"/bin/bash\")))\n" " (build-expression->derivation store \"sh\"\n" " `(symlink ,sh %output))))\n" msgstr "" #. type: Plain text #: doc/guix.texi:5229 msgid "" "Using @code{(guix monads)} and @code{(guix gexp)}, it may be rewritten as a " "monadic function:" msgstr "" #. type: example #: doc/guix.texi:5237 #, no-wrap msgid "" "(define (sh-symlink)\n" " ;; Same, but return a monadic value.\n" " (mlet %store-monad ((drv (package->derivation bash)))\n" " (gexp->derivation \"sh\"\n" " #~(symlink (string-append #$drv \"/bin/bash\")\n" " #$output))))\n" msgstr "" #. type: Plain text #: doc/guix.texi:5244 msgid "" "There are several things to note in the second version: the @code{store} " "parameter is now implicit and is ``threaded'' in the calls to the " "@code{package->derivation} and @code{gexp->derivation} monadic procedures, " "and the monadic value returned by @code{package->derivation} is @dfn{bound} " "using @code{mlet} instead of plain @code{let}." msgstr "" #. type: Plain text #: doc/guix.texi:5248 msgid "" "As it turns out, the call to @code{package->derivation} can even be omitted " "since it will take place implicitly, as we will see later (@pxref{G-" "Expressions}):" msgstr "" #. type: example #: doc/guix.texi:5254 #, no-wrap msgid "" "(define (sh-symlink)\n" " (gexp->derivation \"sh\"\n" " #~(symlink (string-append #$bash \"/bin/bash\")\n" " #$output)))\n" msgstr "" #. type: Plain text #: doc/guix.texi:5263 msgid "" "Calling the monadic @code{sh-symlink} has no effect. As someone once said, " "``you exit a monad like you exit a building on fire: by running''. So, to " "exit the monad and get the desired effect, one must use @code{run-with-" "store}:" msgstr "" #. type: example #: doc/guix.texi:5267 #, no-wrap msgid "" "(run-with-store (open-connection) (sh-symlink))\n" "@result{} /gnu/store/...-sh-symlink\n" msgstr "" #. type: Plain text #: doc/guix.texi:5273 msgid "" "Note that the @code{(guix monad-repl)} module extends the Guile REPL with " "new ``meta-commands'' to make it easier to deal with monadic procedures: " "@code{run-in-store}, and @code{enter-store-monad}. The former is used to " "``run'' a single monadic value through the store:" msgstr "" #. type: example #: doc/guix.texi:5277 #, no-wrap msgid "" "scheme@@(guile-user)> ,run-in-store (package->derivation hello)\n" "$1 = # @dots{}>\n" msgstr "" #. type: Plain text #: doc/guix.texi:5281 msgid "" "The latter enters a recursive REPL, where all the return values are " "automatically run through the store:" msgstr "" #. type: example #: doc/guix.texi:5290 #, no-wrap msgid "" "scheme@@(guile-user)> ,enter-store-monad\n" "store-monad@@(guile-user) [1]> (package->derivation hello)\n" "$2 = # @dots{}>\n" "store-monad@@(guile-user) [1]> (text-file \"foo\" \"Hello!\")\n" "$3 = \"/gnu/store/@dots{}-foo\"\n" "store-monad@@(guile-user) [1]> ,q\n" "scheme@@(guile-user)>\n" msgstr "" #. type: Plain text #: doc/guix.texi:5295 msgid "" "Note that non-monadic values cannot be returned in the @code{store-monad} " "REPL." msgstr "" #. type: Plain text #: doc/guix.texi:5298 msgid "" "The main syntactic forms to deal with monads in general are provided by the " "@code{(guix monads)} module and are described below." msgstr "" #. type: deffn #: doc/guix.texi:5299 #, no-wrap msgid "{Scheme Syntax} with-monad @var{monad} @var{body} ..." msgstr "" #. type: deffn #: doc/guix.texi:5302 msgid "" "Evaluate any @code{>>=} or @code{return} forms in @var{body} as being in " "@var{monad}." msgstr "" #. type: deffn #: doc/guix.texi:5304 #, no-wrap msgid "{Scheme Syntax} return @var{val}" msgstr "" #. type: deffn #: doc/guix.texi:5306 msgid "Return a monadic value that encapsulates @var{val}." msgstr "" #. type: deffn #: doc/guix.texi:5308 #, no-wrap msgid "{Scheme Syntax} >>= @var{mval} @var{mproc} ..." msgstr "" #. type: deffn #: doc/guix.texi:5315 msgid "" "@dfn{Bind} monadic value @var{mval}, passing its ``contents'' to monadic " "procedures @var{mproc}@dots{}@footnote{This operation is commonly referred " "to as ``bind'', but that name denotes an unrelated procedure in Guile. Thus " "we use this somewhat cryptic symbol inherited from the Haskell language.}. " "There can be one @var{mproc} or several of them, as in this example:" msgstr "" #. type: example #: doc/guix.texi:5323 #, no-wrap msgid "" "(run-with-state\n" " (with-monad %state-monad\n" " (>>= (return 1)\n" " (lambda (x) (return (+ 1 x)))\n" " (lambda (x) (return (* 2 x)))))\n" " 'some-state)\n" "\n" msgstr "" #. type: example #: doc/guix.texi:5326 #, no-wrap msgid "" "@result{} 4\n" "@result{} some-state\n" msgstr "" #. type: deffn #: doc/guix.texi:5329 #, no-wrap msgid "{Scheme Syntax} mlet @var{monad} ((@var{var} @var{mval}) ...) @" msgstr "" #. type: deffn #: doc/guix.texi:5331 msgid "@var{body} ..." msgstr "" #. type: deffnx #: doc/guix.texi:5331 #, no-wrap msgid "{Scheme Syntax} mlet* @var{monad} ((@var{var} @var{mval}) ...) @" msgstr "" #. type: deffn #: doc/guix.texi:5343 msgid "" "@var{body} ... Bind the variables @var{var} to the monadic values " "@var{mval} in @var{body}, which is a sequence of expressions. As with the " "bind operator, this can be thought of as ``unpacking'' the raw, non-monadic " "value ``contained'' in @var{mval} and making @var{var} refer to that raw, " "non-monadic value within the scope of the @var{body}. The form (@var{var} -" "> @var{val}) binds @var{var} to the ``normal'' value @var{val}, as per " "@code{let}. The binding operations occur in sequence from left to right. " "The last expression of @var{body} must be a monadic expression, and its " "result will become the result of the @code{mlet} or @code{mlet*} when run in " "the @var{monad}." msgstr "" #. type: deffn #: doc/guix.texi:5346 msgid "" "@code{mlet*} is to @code{mlet} what @code{let*} is to @code{let} " "(@pxref{Local Bindings,,, guile, GNU Guile Reference Manual})." msgstr "" #. type: deffn #: doc/guix.texi:5348 #, no-wrap msgid "{Scheme System} mbegin @var{monad} @var{mexp} ..." msgstr "" #. type: deffn #: doc/guix.texi:5352 msgid "" "Bind @var{mexp} and the following monadic expressions in sequence, returning " "the result of the last expression. Every expression in the sequence must be " "a monadic expression." msgstr "" #. type: deffn #: doc/guix.texi:5356 msgid "" "This is akin to @code{mlet}, except that the return values of the monadic " "expressions are ignored. In that sense, it is analogous to @code{begin}, " "but applied to monadic expressions." msgstr "" #. type: deffn #: doc/guix.texi:5358 #, no-wrap msgid "{Scheme System} mwhen @var{condition} @var{mexp0} @var{mexp*} ..." msgstr "" #. type: deffn #: doc/guix.texi:5363 msgid "" "When @var{condition} is true, evaluate the sequence of monadic expressions " "@var{mexp0}..@var{mexp*} as in an @code{mbegin}. When @var{condition} is " "false, return @code{*unspecified*} in the current monad. Every expression " "in the sequence must be a monadic expression." msgstr "" #. type: deffn #: doc/guix.texi:5365 #, no-wrap msgid "{Scheme System} munless @var{condition} @var{mexp0} @var{mexp*} ..." msgstr "" #. type: deffn #: doc/guix.texi:5370 msgid "" "When @var{condition} is false, evaluate the sequence of monadic expressions " "@var{mexp0}..@var{mexp*} as in an @code{mbegin}. When @var{condition} is " "true, return @code{*unspecified*} in the current monad. Every expression in " "the sequence must be a monadic expression." msgstr "" #. type: cindex #: doc/guix.texi:5372 #, no-wrap msgid "state monad" msgstr "" #. type: Plain text #: doc/guix.texi:5376 msgid "" "The @code{(guix monads)} module provides the @dfn{state monad}, which allows " "an additional value---the state---to be @emph{threaded} through monadic " "procedure calls." msgstr "" #. type: defvr #: doc/guix.texi:5377 #, no-wrap msgid "{Scheme Variable} %state-monad" msgstr "" #. type: defvr #: doc/guix.texi:5380 msgid "" "The state monad. Procedures in the state monad can access and change the " "state that is threaded." msgstr "" #. type: defvr #: doc/guix.texi:5384 msgid "" "Consider the example below. The @code{square} procedure returns a value in " "the state monad. It returns the square of its argument, but also increments " "the current state value:" msgstr "" #. type: example #: doc/guix.texi:5391 #, no-wrap msgid "" "(define (square x)\n" " (mlet %state-monad ((count (current-state)))\n" " (mbegin %state-monad\n" " (set-current-state (+ 1 count))\n" " (return (* x x)))))\n" "\n" msgstr "" #. type: example #: doc/guix.texi:5395 #, no-wrap msgid "" "(run-with-state (sequence %state-monad (map square (iota 3))) 0)\n" "@result{} (0 1 4)\n" "@result{} 3\n" msgstr "" #. type: defvr #: doc/guix.texi:5399 msgid "" "When ``run'' through @var{%state-monad}, we obtain that additional state " "value, which is the number of @code{square} calls." msgstr "" #. type: deffn #: doc/guix.texi:5401 #, no-wrap msgid "{Monadic Procedure} current-state" msgstr "" #. type: deffn #: doc/guix.texi:5403 msgid "Return the current state as a monadic value." msgstr "" #. type: deffn #: doc/guix.texi:5405 #, no-wrap msgid "{Monadic Procedure} set-current-state @var{value}" msgstr "" #. type: deffn #: doc/guix.texi:5408 msgid "" "Set the current state to @var{value} and return the previous state as a " "monadic value." msgstr "" #. type: deffn #: doc/guix.texi:5410 #, no-wrap msgid "{Monadic Procedure} state-push @var{value}" msgstr "" #. type: deffn #: doc/guix.texi:5413 msgid "" "Push @var{value} to the current state, which is assumed to be a list, and " "return the previous state as a monadic value." msgstr "" #. type: deffn #: doc/guix.texi:5415 #, no-wrap msgid "{Monadic Procedure} state-pop" msgstr "" #. type: deffn #: doc/guix.texi:5418 msgid "" "Pop a value from the current state and return it as a monadic value. The " "state is assumed to be a list." msgstr "" #. type: deffn #: doc/guix.texi:5420 #, no-wrap msgid "{Scheme Procedure} run-with-state @var{mval} [@var{state}]" msgstr "" #. type: deffn #: doc/guix.texi:5423 msgid "" "Run monadic value @var{mval} starting with @var{state} as the initial " "state. Return two values: the resulting value, and the resulting state." msgstr "" #. type: Plain text #: doc/guix.texi:5427 msgid "" "The main interface to the store monad, provided by the @code{(guix store)} " "module, is as follows." msgstr "" #. type: defvr #: doc/guix.texi:5428 #, no-wrap msgid "{Scheme Variable} %store-monad" msgstr "" #. type: defvr #: doc/guix.texi:5430 msgid "The store monad---an alias for @var{%state-monad}." msgstr "" #. type: defvr #: doc/guix.texi:5434 msgid "" "Values in the store monad encapsulate accesses to the store. When its " "effect is needed, a value of the store monad must be ``evaluated'' by " "passing it to the @code{run-with-store} procedure (see below.)" msgstr "" #. type: deffn #: doc/guix.texi:5436 #, no-wrap msgid "{Scheme Procedure} run-with-store @var{store} @var{mval} [#:guile-for-build] [#:system (%current-system)]" msgstr "" #. type: deffn #: doc/guix.texi:5439 msgid "" "Run @var{mval}, a monadic value in the store monad, in @var{store}, an open " "store connection." msgstr "" #. type: deffn #: doc/guix.texi:5441 #, no-wrap msgid "{Monadic Procedure} text-file @var{name} @var{text} [@var{references}]" msgstr "" #. type: deffn #: doc/guix.texi:5445 msgid "" "Return as a monadic value the absolute file name in the store of the file " "containing @var{text}, a string. @var{references} is a list of store items " "that the resulting text file refers to; it defaults to the empty list." msgstr "" #. type: deffn #: doc/guix.texi:5447 #, no-wrap msgid "{Monadic Procedure} binary-file @var{name} @var{data} [@var{references}]" msgstr "" #. type: deffn #: doc/guix.texi:5451 msgid "" "Return as a monadic value the absolute file name in the store of the file " "containing @var{data}, a bytevector. @var{references} is a list of store " "items that the resulting binary file refers to; it defaults to the empty " "list." msgstr "" #. type: deffn #: doc/guix.texi:5453 #, no-wrap msgid "{Monadic Procedure} interned-file @var{file} [@var{name}] @" msgstr "" #. type: deffn #: doc/guix.texi:5458 msgid "" "[#:recursive? #t] [#:select? (const #t)] Return the name of @var{file} once " "interned in the store. Use @var{name} as its store name, or the basename of " "@var{file} if @var{name} is omitted." msgstr "" #. type: deffn #: doc/guix.texi:5462 doc/guix.texi:5875 msgid "" "When @var{recursive?} is true, the contents of @var{file} are added " "recursively; if @var{file} designates a flat file and @var{recursive?} is " "true, its contents are added, and its permission bits are kept." msgstr "" #. type: deffn #: doc/guix.texi:5467 doc/guix.texi:5880 msgid "" "When @var{recursive?} is true, call @code{(@var{select?} @var{file} " "@var{stat})} for each directory entry, where @var{file} is the entry's " "absolute file name and @var{stat} is the result of @code{lstat}; exclude " "entries for which @var{select?} does not return true." msgstr "" #. type: deffn #: doc/guix.texi:5469 msgid "The example below adds a file to the store, under two different names:" msgstr "" #. type: example #: doc/guix.texi:5475 #, no-wrap msgid "" "(run-with-store (open-connection)\n" " (mlet %store-monad ((a (interned-file \"README\"))\n" " (b (interned-file \"README\" \"LEGU-MIN\")))\n" " (return (list a b))))\n" "\n" msgstr "" #. type: example #: doc/guix.texi:5477 #, no-wrap msgid "@result{} (\"/gnu/store/rwm@dots{}-README\" \"/gnu/store/44i@dots{}-LEGU-MIN\")\n" msgstr "" #. type: Plain text #: doc/guix.texi:5483 msgid "" "The @code{(guix packages)} module exports the following package-related " "monadic procedures:" msgstr "" #. type: deffn #: doc/guix.texi:5484 #, no-wrap msgid "{Monadic Procedure} package-file @var{package} [@var{file}] @" msgstr "" #. type: deffn #: doc/guix.texi:5492 msgid "" "[#:system (%current-system)] [#:target #f] @ [#:output \"out\"] Return as a " "monadic value in the absolute file name of @var{file} within the " "@var{output} directory of @var{package}. When @var{file} is omitted, return " "the name of the @var{output} directory of @var{package}. When @var{target} " "is true, use it as a cross-compilation target triplet." msgstr "" #. type: deffn #: doc/guix.texi:5494 #, no-wrap msgid "{Monadic Procedure} package->derivation @var{package} [@var{system}]" msgstr "" #. type: deffnx #: doc/guix.texi:5495 #, no-wrap msgid "{Monadic Procedure} package->cross-derivation @var{package} @" msgstr "" #. type: deffn #: doc/guix.texi:5499 msgid "" "@var{target} [@var{system}] Monadic version of @code{package-derivation} and " "@code{package-cross-derivation} (@pxref{Defining Packages})." msgstr "" #. type: cindex #: doc/guix.texi:5505 #, no-wrap msgid "G-expression" msgstr "" #. type: cindex #: doc/guix.texi:5506 #, no-wrap msgid "build code quoting" msgstr "" #. type: Plain text #: doc/guix.texi:5512 msgid "" "So we have ``derivations'', which represent a sequence of build actions to " "be performed to produce an item in the store (@pxref{Derivations}). These " "build actions are performed when asking the daemon to actually build the " "derivations; they are run by the daemon in a container (@pxref{Invoking guix-" "daemon})." msgstr "" #. type: cindex #: doc/guix.texi:5513 #, no-wrap msgid "strata of code" msgstr "" #. type: Plain text #: doc/guix.texi:5525 msgid "" "It should come as no surprise that we like to write these build actions in " "Scheme. When we do that, we end up with two @dfn{strata} of Scheme " "code@footnote{The term @dfn{stratum} in this context was coined by Manuel " "Serrano et al.@: in the context of their work on Hop. Oleg Kiselyov, who " "has written insightful @url{http://okmij.org/ftp/meta-programming/#meta-" "scheme, essays and code on this topic}, refers to this kind of code " "generation as @dfn{staging}.}: the ``host code''---code that defines " "packages, talks to the daemon, etc.---and the ``build code''---code that " "actually performs build actions, such as making directories, invoking " "@command{make}, etc." msgstr "" #. type: Plain text #: doc/guix.texi:5532 msgid "" "To describe a derivation and its build actions, one typically needs to embed " "build code inside host code. It boils down to manipulating build code as " "data, and the homoiconicity of Scheme---code has a direct representation as " "data---comes in handy for that. But we need more than the normal " "@code{quasiquote} mechanism in Scheme to construct build expressions." msgstr "" #. type: Plain text #: doc/guix.texi:5541 msgid "" "The @code{(guix gexp)} module implements @dfn{G-expressions}, a form of S-" "expressions adapted to build expressions. G-expressions, or @dfn{gexps}, " "consist essentially of three syntactic forms: @code{gexp}, @code{ungexp}, " "and @code{ungexp-splicing} (or simply: @code{#~}, @code{#$}, and @code{#" "$@@}), which are comparable to @code{quasiquote}, @code{unquote}, and " "@code{unquote-splicing}, respectively (@pxref{Expression Syntax, " "@code{quasiquote},, guile, GNU Guile Reference Manual}). However, there are " "major differences:" msgstr "" #. type: itemize #: doc/guix.texi:5546 msgid "" "Gexps are meant to be written to a file and run or manipulated by other " "processes." msgstr "" #. type: itemize #: doc/guix.texi:5551 msgid "" "When a high-level object such as a package or derivation is unquoted inside " "a gexp, the result is as if its output file name had been introduced." msgstr "" #. type: itemize #: doc/guix.texi:5556 msgid "" "Gexps carry information about the packages or derivations they refer to, and " "these dependencies are automatically added as inputs to the build processes " "that use them." msgstr "" #. type: cindex #: doc/guix.texi:5558 doc/guix.texi:6062 #, no-wrap msgid "lowering, of high-level objects in gexps" msgstr "" #. type: Plain text #: doc/guix.texi:5568 msgid "" "This mechanism is not limited to package and derivation objects: " "@dfn{compilers} able to ``lower'' other high-level objects to derivations or " "files in the store can be defined, such that these objects can also be " "inserted into gexps. For example, a useful type of high-level objects that " "can be inserted in a gexp is ``file-like objects'', which make it easy to " "add files to the store and to refer to them in derivations and such (see " "@code{local-file} and @code{plain-file} below.)" msgstr "" #. type: Plain text #: doc/guix.texi:5570 msgid "To illustrate the idea, here is an example of a gexp:" msgstr "" #. type: example #: doc/guix.texi:5578 #, no-wrap msgid "" "(define build-exp\n" " #~(begin\n" " (mkdir #$output)\n" " (chdir #$output)\n" " (symlink (string-append #$coreutils \"/bin/ls\")\n" " \"list-files\")))\n" msgstr "" #. type: Plain text #: doc/guix.texi:5583 msgid "" "This gexp can be passed to @code{gexp->derivation}; we obtain a derivation " "that builds a directory containing exactly one symlink to @file{/gnu/store/" "@dots{}-coreutils-8.22/bin/ls}:" msgstr "" #. type: example #: doc/guix.texi:5586 #, no-wrap msgid "(gexp->derivation \"the-thing\" build-exp)\n" msgstr "" #. type: Plain text #: doc/guix.texi:5594 msgid "" "As one would expect, the @code{\"/gnu/store/@dots{}-coreutils-8.22\"} string " "is substituted to the reference to the @var{coreutils} package in the actual " "build code, and @var{coreutils} is automatically made an input to the " "derivation. Likewise, @code{#$output} (equivalent to @code{(ungexp " "output)}) is replaced by a string containing the directory name of the " "output of the derivation." msgstr "" #. type: cindex #: doc/guix.texi:5595 #, no-wrap msgid "cross compilation" msgstr "" #. type: Plain text #: doc/guix.texi:5601 msgid "" "In a cross-compilation context, it is useful to distinguish between " "references to the @emph{native} build of a package---that can run on the " "host---versus references to cross builds of a package. To that end, the " "@code{#+} plays the same role as @code{#$}, but is a reference to a native " "package build:" msgstr "" #. type: example #: doc/guix.texi:5611 #, no-wrap msgid "" "(gexp->derivation \"vi\"\n" " #~(begin\n" " (mkdir #$output)\n" " (system* (string-append #+coreutils \"/bin/ln\")\n" " \"-s\"\n" " (string-append #$emacs \"/bin/emacs\")\n" " (string-append #$output \"/bin/vi\")))\n" " #:target \"mips64el-linux-gnu\")\n" msgstr "" #. type: Plain text #: doc/guix.texi:5617 msgid "" "In the example above, the native build of @var{coreutils} is used, so that " "@command{ln} can actually run on the host; but then the cross-compiled build " "of @var{emacs} is referenced." msgstr "" #. type: cindex #: doc/guix.texi:5618 #, no-wrap msgid "imported modules, for gexps" msgstr "" #. type: findex #: doc/guix.texi:5619 #, no-wrap msgid "with-imported-modules" msgstr "" #. type: Plain text #: doc/guix.texi:5624 msgid "" "Another gexp feature is @dfn{imported modules}: sometimes you want to be " "able to use certain Guile modules from the ``host environment'' in the gexp, " "so those modules should be imported in the ``build environment''. The " "@code{with-imported-modules} form allows you to express that:" msgstr "" #. type: example #: doc/guix.texi:5635 #, no-wrap msgid "" "(let ((build (with-imported-modules '((guix build utils))\n" " #~(begin\n" " (use-modules (guix build utils))\n" " (mkdir-p (string-append #$output \"/bin\"))))))\n" " (gexp->derivation \"empty-dir\"\n" " #~(begin\n" " #$build\n" " (display \"success!\\n\")\n" " #t)))\n" msgstr "" #. type: Plain text #: doc/guix.texi:5641 msgid "" "In this example, the @code{(guix build utils)} module is automatically " "pulled into the isolated build environment of our gexp, such that @code{(use-" "modules (guix build utils))} works as expected." msgstr "" #. type: cindex #: doc/guix.texi:5642 #, no-wrap msgid "module closure" msgstr "" #. type: findex #: doc/guix.texi:5643 #, no-wrap msgid "source-module-closure" msgstr "" #. type: Plain text #: doc/guix.texi:5650 msgid "" "Usually you want the @emph{closure} of the module to be imported---i.e., the " "module itself and all the modules it depends on---rather than just the " "module; failing to do that, attempts to use the module will fail because of " "missing dependent modules. The @code{source-module-closure} procedure " "computes the closure of a module by looking at its source file headers, " "which comes in handy in this case:" msgstr "" #. type: example #: doc/guix.texi:5653 #, no-wrap msgid "" "(use-modules (guix modules)) ;for 'source-module-closure'\n" "\n" msgstr "" #. type: example #: doc/guix.texi:5662 #, no-wrap msgid "" "(with-imported-modules (source-module-closure\n" " '((guix build utils)\n" " (gnu build vm)))\n" " (gexp->derivation \"something-with-vms\"\n" " #~(begin\n" " (use-modules (guix build utils)\n" " (gnu build vm))\n" " @dots{})))\n" msgstr "" #. type: cindex #: doc/guix.texi:5664 #, no-wrap msgid "extensions, for gexps" msgstr "" #. type: findex #: doc/guix.texi:5665 #, no-wrap msgid "with-extensions" msgstr "" #. type: Plain text #: doc/guix.texi:5670 msgid "" "In the same vein, sometimes you want to import not just pure-Scheme modules, " "but also ``extensions'' such as Guile bindings to C libraries or other " "``full-blown'' packages. Say you need the @code{guile-json} package " "available on the build side, here's how you would do it:" msgstr "" #. type: example #: doc/guix.texi:5673 #, no-wrap msgid "" "(use-modules (gnu packages guile)) ;for 'guile-json'\n" "\n" msgstr "" #. type: example #: doc/guix.texi:5679 #, no-wrap msgid "" "(with-extensions (list guile-json)\n" " (gexp->derivation \"something-with-json\"\n" " #~(begin\n" " (use-modules (json))\n" " @dots{})))\n" msgstr "" #. type: Plain text #: doc/guix.texi:5682 msgid "The syntactic form to construct gexps is summarized below." msgstr "" #. type: deffn #: doc/guix.texi:5683 #, no-wrap msgid "{Scheme Syntax} #~@var{exp}" msgstr "" #. type: deffnx #: doc/guix.texi:5684 #, no-wrap msgid "{Scheme Syntax} (gexp @var{exp})" msgstr "" #. type: deffn #: doc/guix.texi:5687 msgid "" "Return a G-expression containing @var{exp}. @var{exp} may contain one or " "more of the following forms:" msgstr "" #. type: item #: doc/guix.texi:5689 #, no-wrap msgid "#$@var{obj}" msgstr "" #. type: itemx #: doc/guix.texi:5690 #, no-wrap msgid "(ungexp @var{obj})" msgstr "" #. type: table #: doc/guix.texi:5695 msgid "" "Introduce a reference to @var{obj}. @var{obj} may have one of the supported " "types, for example a package or a derivation, in which case the " "@code{ungexp} form is replaced by its output file name---e.g., @code{\"/gnu/" "store/@dots{}-coreutils-8.22}." msgstr "" #. type: table #: doc/guix.texi:5698 msgid "" "If @var{obj} is a list, it is traversed and references to supported objects " "are substituted similarly." msgstr "" #. type: table #: doc/guix.texi:5701 msgid "" "If @var{obj} is another gexp, its contents are inserted and its dependencies " "are added to those of the containing gexp." msgstr "" #. type: table #: doc/guix.texi:5703 msgid "If @var{obj} is another kind of object, it is inserted as is." msgstr "" #. type: item #: doc/guix.texi:5704 #, no-wrap msgid "#$@var{obj}:@var{output}" msgstr "" #. type: itemx #: doc/guix.texi:5705 #, no-wrap msgid "(ungexp @var{obj} @var{output})" msgstr "" #. type: table #: doc/guix.texi:5709 msgid "" "This is like the form above, but referring explicitly to the @var{output} of " "@var{obj}---this is useful when @var{obj} produces multiple outputs " "(@pxref{Packages with Multiple Outputs})." msgstr "" #. type: item #: doc/guix.texi:5710 #, no-wrap msgid "#+@var{obj}" msgstr "" #. type: itemx #: doc/guix.texi:5711 #, no-wrap msgid "#+@var{obj}:output" msgstr "" #. type: itemx #: doc/guix.texi:5712 #, no-wrap msgid "(ungexp-native @var{obj})" msgstr "" #. type: itemx #: doc/guix.texi:5713 #, no-wrap msgid "(ungexp-native @var{obj} @var{output})" msgstr "" #. type: table #: doc/guix.texi:5716 msgid "" "Same as @code{ungexp}, but produces a reference to the @emph{native} build " "of @var{obj} when used in a cross compilation context." msgstr "" #. type: item #: doc/guix.texi:5717 #, no-wrap msgid "#$output[:@var{output}]" msgstr "" #. type: itemx #: doc/guix.texi:5718 #, no-wrap msgid "(ungexp output [@var{output}])" msgstr "" #. type: table #: doc/guix.texi:5721 msgid "" "Insert a reference to derivation output @var{output}, or to the main output " "when @var{output} is omitted." msgstr "" #. type: table #: doc/guix.texi:5723 msgid "This only makes sense for gexps passed to @code{gexp->derivation}." msgstr "" #. type: item #: doc/guix.texi:5724 #, no-wrap msgid "#$@@@var{lst}" msgstr "" #. type: itemx #: doc/guix.texi:5725 #, no-wrap msgid "(ungexp-splicing @var{lst})" msgstr "" #. type: table #: doc/guix.texi:5728 msgid "" "Like the above, but splices the contents of @var{lst} inside the containing " "list." msgstr "" #. type: item #: doc/guix.texi:5729 #, no-wrap msgid "#+@@@var{lst}" msgstr "" #. type: itemx #: doc/guix.texi:5730 #, no-wrap msgid "(ungexp-native-splicing @var{lst})" msgstr "" #. type: table #: doc/guix.texi:5733 msgid "" "Like the above, but refers to native builds of the objects listed in " "@var{lst}." msgstr "" #. type: deffn #: doc/guix.texi:5738 msgid "" "G-expressions created by @code{gexp} or @code{#~} are run-time objects of " "the @code{gexp?} type (see below.)" msgstr "" #. type: deffn #: doc/guix.texi:5740 #, no-wrap msgid "{Scheme Syntax} with-imported-modules @var{modules} @var{body}@dots{}" msgstr "" #. type: deffn #: doc/guix.texi:5743 msgid "" "Mark the gexps defined in @var{body}@dots{} as requiring @var{modules} in " "their execution environment." msgstr "" #. type: deffn #: doc/guix.texi:5747 msgid "" "Each item in @var{modules} can be the name of a module, such as @code{(guix " "build utils)}, or it can be a module name, followed by an arrow, followed by " "a file-like object:" msgstr "" #. type: example #: doc/guix.texi:5753 #, no-wrap msgid "" "`((guix build utils)\n" " (guix gcrypt)\n" " ((guix config) => ,(scheme-file \"config.scm\"\n" " #~(define-module @dots{}))))\n" msgstr "" #. type: deffn #: doc/guix.texi:5758 msgid "" "In the example above, the first two modules are taken from the search path, " "and the last one is created from the given file-like object." msgstr "" #. type: deffn #: doc/guix.texi:5762 msgid "" "This form has @emph{lexical} scope: it has an effect on the gexps directly " "defined in @var{body}@dots{}, but not on those defined, say, in procedures " "called from @var{body}@dots{}." msgstr "" #. type: deffn #: doc/guix.texi:5764 #, no-wrap msgid "{Scheme Syntax} with-extensions @var{extensions} @var{body}@dots{}" msgstr "" #. type: deffn #: doc/guix.texi:5769 msgid "" "Mark the gexps defined in @var{body}@dots{} as requiring @var{extensions} in " "their build and execution environment. @var{extensions} is typically a list " "of package objects such as those defined in the @code{(gnu packages guile)} " "module." msgstr "" #. type: deffn #: doc/guix.texi:5774 msgid "" "Concretely, the packages listed in @var{extensions} are added to the load " "path while compiling imported modules in @var{body}@dots{}; they are also " "added to the load path of the gexp returned by @var{body}@dots{}." msgstr "" #. type: deffn #: doc/guix.texi:5776 #, no-wrap msgid "{Scheme Procedure} gexp? @var{obj}" msgstr "" #. type: deffn #: doc/guix.texi:5778 msgid "Return @code{#t} if @var{obj} is a G-expression." msgstr "" #. type: Plain text #: doc/guix.texi:5784 msgid "" "G-expressions are meant to be written to disk, either as code building some " "derivation, or as plain files in the store. The monadic procedures below " "allow you to do that (@pxref{The Store Monad}, for more information about " "monads.)" msgstr "" #. type: deffn #: doc/guix.texi:5785 #, no-wrap msgid "{Monadic Procedure} gexp->derivation @var{name} @var{exp} @" msgstr "" #. type: deffn #: doc/guix.texi:5803 msgid "" "[#:system (%current-system)] [#:target #f] [#:graft? #t] @ [#:hash #f] [#:" "hash-algo #f] @ [#:recursive? #f] [#:env-vars '()] [#:modules '()] @ [#:" "module-path @var{%load-path}] @ [#:effective-version \"2.2\"] @ [#:" "references-graphs #f] [#:allowed-references #f] @ [#:disallowed-references " "#f] @ [#:leaked-env-vars #f] @ [#:script-name (string-append @var{name} \"-" "builder\")] @ [#:deprecation-warnings #f] @ [#:local-build? #f] [#:" "substitutable? #t] @ [#:properties '()] [#:guile-for-build #f] Return a " "derivation @var{name} that runs @var{exp} (a gexp) with @var{guile-for-" "build} (a derivation) on @var{system}; @var{exp} is stored in a file called " "@var{script-name}. When @var{target} is true, it is used as the cross-" "compilation target triplet for packages referred to by @var{exp}." msgstr "" #. type: deffn #: doc/guix.texi:5811 msgid "" "@var{modules} is deprecated in favor of @code{with-imported-modules}. Its " "meaning is to make @var{modules} available in the evaluation context of " "@var{exp}; @var{modules} is a list of names of Guile modules searched in " "@var{module-path} to be copied in the store, compiled, and made available in " "the load path during the execution of @var{exp}---e.g., @code{((guix build " "utils) (guix build gnu-build-system))}." msgstr "" #. type: deffn #: doc/guix.texi:5814 msgid "" "@var{effective-version} determines the string to use when adding extensions " "of @var{exp} (see @code{with-extensions}) to the search path---e.g., " "@code{\"2.2\"}." msgstr "" #. type: deffn #: doc/guix.texi:5817 msgid "" "@var{graft?} determines whether packages referred to by @var{exp} should be " "grafted when applicable." msgstr "" #. type: deffn #: doc/guix.texi:5820 msgid "" "When @var{references-graphs} is true, it must be a list of tuples of one of " "the following forms:" msgstr "" #. type: example #: doc/guix.texi:5827 #, no-wrap msgid "" "(@var{file-name} @var{package})\n" "(@var{file-name} @var{package} @var{output})\n" "(@var{file-name} @var{derivation})\n" "(@var{file-name} @var{derivation} @var{output})\n" "(@var{file-name} @var{store-item})\n" msgstr "" #. type: deffn #: doc/guix.texi:5833 msgid "" "The right-hand-side of each element of @var{references-graphs} is " "automatically made an input of the build process of @var{exp}. In the build " "environment, each @var{file-name} contains the reference graph of the " "corresponding item, in a simple text format." msgstr "" #. type: deffn #: doc/guix.texi:5839 msgid "" "@var{allowed-references} must be either @code{#f} or a list of output names " "and packages. In the latter case, the list denotes store items that the " "result is allowed to refer to. Any reference to another store item will " "lead to a build error. Similarly for @var{disallowed-references}, which can " "list items that must not be referenced by the outputs." msgstr "" #. type: deffn #: doc/guix.texi:5842 msgid "" "@var{deprecation-warnings} determines whether to show deprecation warnings " "while compiling modules. It can be @code{#f}, @code{#t}, or " "@code{'detailed}." msgstr "" #. type: deffn #: doc/guix.texi:5844 msgid "The other arguments are as for @code{derivation} (@pxref{Derivations})." msgstr "" #. type: cindex #: doc/guix.texi:5846 #, no-wrap msgid "file-like objects" msgstr "" #. type: Plain text #: doc/guix.texi:5851 msgid "" "The @code{local-file}, @code{plain-file}, @code{computed-file}, " "@code{program-file}, and @code{scheme-file} procedures below return " "@dfn{file-like objects}. That is, when unquoted in a G-expression, these " "objects lead to a file in the store. Consider this G-expression:" msgstr "" #. type: example #: doc/guix.texi:5855 #, no-wrap msgid "" "#~(system* #$(file-append glibc \"/sbin/nscd\") \"-f\"\n" " #$(local-file \"/tmp/my-nscd.conf\"))\n" msgstr "" #. type: Plain text #: doc/guix.texi:5864 msgid "" "The effect here is to ``intern'' @file{/tmp/my-nscd.conf} by copying it to " "the store. Once expanded, for instance @i{via} @code{gexp->derivation}, the " "G-expression refers to that copy under @file{/gnu/store}; thus, modifying or " "removing the file in @file{/tmp} does not have any effect on what the G-" "expression does. @code{plain-file} can be used similarly; it differs in " "that the file content is directly passed as a string." msgstr "" #. type: deffn #: doc/guix.texi:5865 #, no-wrap msgid "{Scheme Procedure} local-file @var{file} [@var{name}] @" msgstr "" #. type: deffn #: doc/guix.texi:5871 msgid "" "[#:recursive? #f] [#:select? (const #t)] Return an object representing local " "file @var{file} to add to the store; this object can be used in a gexp. If " "@var{file} is a relative file name, it is looked up relative to the source " "file where this form appears. @var{file} will be added to the store under " "@var{name}--by default the base name of @var{file}." msgstr "" #. type: deffn #: doc/guix.texi:5883 msgid "" "This is the declarative counterpart of the @code{interned-file} monadic " "procedure (@pxref{The Store Monad, @code{interned-file}})." msgstr "" #. type: deffn #: doc/guix.texi:5885 #, no-wrap msgid "{Scheme Procedure} plain-file @var{name} @var{content}" msgstr "" #. type: deffn #: doc/guix.texi:5888 msgid "" "Return an object representing a text file called @var{name} with the given " "@var{content} (a string or a bytevector) to be added to the store." msgstr "" #. type: deffn #: doc/guix.texi:5890 msgid "This is the declarative counterpart of @code{text-file}." msgstr "" #. type: deffn #: doc/guix.texi:5892 #, no-wrap msgid "{Scheme Procedure} computed-file @var{name} @var{gexp} @" msgstr "" #. type: deffn #: doc/guix.texi:5897 msgid "" "[#:options '(#:local-build? #t)] Return an object representing the store " "item @var{name}, a file or directory computed by @var{gexp}. @var{options} " "is a list of additional arguments to pass to @code{gexp->derivation}." msgstr "" #. type: deffn #: doc/guix.texi:5899 msgid "This is the declarative counterpart of @code{gexp->derivation}." msgstr "" #. type: deffn #: doc/guix.texi:5901 #, no-wrap msgid "{Monadic Procedure} gexp->script @var{name} @var{exp} @" msgstr "" #. type: deffn #: doc/guix.texi:5906 msgid "" "[#:guile (default-guile)] [#:module-path %load-path] Return an executable " "script @var{name} that runs @var{exp} using @var{guile}, with @var{exp}'s " "imported modules in its search path. Look up @var{exp}'s modules in " "@var{module-path}." msgstr "" #. type: deffn #: doc/guix.texi:5909 msgid "" "The example below builds a script that simply invokes the @command{ls} " "command:" msgstr "" #. type: example #: doc/guix.texi:5912 #, no-wrap msgid "" "(use-modules (guix gexp) (gnu packages base))\n" "\n" msgstr "" #. type: example #: doc/guix.texi:5916 #, no-wrap msgid "" "(gexp->script \"list-files\"\n" " #~(execl #$(file-append coreutils \"/bin/ls\")\n" " \"ls\"))\n" msgstr "" #. type: deffn #: doc/guix.texi:5921 msgid "" "When ``running'' it through the store (@pxref{The Store Monad, @code{run-" "with-store}}), we obtain a derivation that produces an executable file " "@file{/gnu/store/@dots{}-list-files} along these lines:" msgstr "" #. type: example #: doc/guix.texi:5926 #, no-wrap msgid "" "#!/gnu/store/@dots{}-guile-2.0.11/bin/guile -ds\n" "!#\n" "(execl \"/gnu/store/@dots{}-coreutils-8.22\"/bin/ls\" \"ls\")\n" msgstr "" #. type: deffn #: doc/guix.texi:5929 #, no-wrap msgid "{Scheme Procedure} program-file @var{name} @var{exp} @" msgstr "" #. type: deffn #: doc/guix.texi:5934 msgid "" "[#:guile #f] [#:module-path %load-path] Return an object representing the " "executable store item @var{name} that runs @var{gexp}. @var{guile} is the " "Guile package used to execute that script. Imported modules of @var{gexp} " "are looked up in @var{module-path}." msgstr "" #. type: deffn #: doc/guix.texi:5936 msgid "This is the declarative counterpart of @code{gexp->script}." msgstr "" #. type: deffn #: doc/guix.texi:5938 #, no-wrap msgid "{Monadic Procedure} gexp->file @var{name} @var{exp} @" msgstr "" #. type: deffn #: doc/guix.texi:5945 msgid "" "[#:set-load-path? #t] [#:module-path %load-path] @ [#:splice? #f] @ [#:guile " "(default-guile)] Return a derivation that builds a file @var{name} " "containing @var{exp}. When @var{splice?} is true, @var{exp} is considered " "to be a list of expressions that will be spliced in the resulting file." msgstr "" #. type: deffn #: doc/guix.texi:5950 msgid "" "When @var{set-load-path?} is true, emit code in the resulting file to set " "@code{%load-path} and @code{%load-compiled-path} to honor @var{exp}'s " "imported modules. Look up @var{exp}'s modules in @var{module-path}." msgstr "" #. type: deffn #: doc/guix.texi:5953 msgid "" "The resulting file holds references to all the dependencies of @var{exp} or " "a subset thereof." msgstr "" #. type: deffn #: doc/guix.texi:5955 #, no-wrap msgid "{Scheme Procedure} scheme-file @var{name} @var{exp} [#:splice? #f]" msgstr "" #. type: deffn #: doc/guix.texi:5958 msgid "" "Return an object representing the Scheme file @var{name} that contains " "@var{exp}." msgstr "" #. type: deffn #: doc/guix.texi:5960 msgid "This is the declarative counterpart of @code{gexp->file}." msgstr "" #. type: deffn #: doc/guix.texi:5962 #, no-wrap msgid "{Monadic Procedure} text-file* @var{name} @var{text} @dots{}" msgstr "" #. type: deffn #: doc/guix.texi:5968 msgid "" "Return as a monadic value a derivation that builds a text file containing " "all of @var{text}. @var{text} may list, in addition to strings, objects of " "any type that can be used in a gexp: packages, derivations, local file " "objects, etc. The resulting store file holds references to all these." msgstr "" #. type: deffn #: doc/guix.texi:5973 msgid "" "This variant should be preferred over @code{text-file} anytime the file to " "create will reference items from the store. This is typically the case when " "building a configuration file that embeds store file names, like this:" msgstr "" #. type: example #: doc/guix.texi:5981 #, no-wrap msgid "" "(define (profile.sh)\n" " ;; Return the name of a shell script in the store that\n" " ;; initializes the 'PATH' environment variable.\n" " (text-file* \"profile.sh\"\n" " \"export PATH=\" coreutils \"/bin:\"\n" " grep \"/bin:\" sed \"/bin\\n\"))\n" msgstr "" #. type: deffn #: doc/guix.texi:5986 msgid "" "In this example, the resulting @file{/gnu/store/@dots{}-profile.sh} file " "will reference @var{coreutils}, @var{grep}, and @var{sed}, thereby " "preventing them from being garbage-collected during its lifetime." msgstr "" #. type: deffn #: doc/guix.texi:5988 #, no-wrap msgid "{Scheme Procedure} mixed-text-file @var{name} @var{text} @dots{}" msgstr "" #. type: deffn #: doc/guix.texi:5992 msgid "" "Return an object representing store file @var{name} containing @var{text}. " "@var{text} is a sequence of strings and file-like objects, as in:" msgstr "" #. type: example #: doc/guix.texi:5996 #, no-wrap msgid "" "(mixed-text-file \"profile\"\n" " \"export PATH=\" coreutils \"/bin:\" grep \"/bin\")\n" msgstr "" #. type: deffn #: doc/guix.texi:5999 msgid "This is the declarative counterpart of @code{text-file*}." msgstr "" #. type: deffn #: doc/guix.texi:6001 #, no-wrap msgid "{Scheme Procedure} file-union @var{name} @var{files}" msgstr "" #. type: deffn #: doc/guix.texi:6006 msgid "" "Return a @code{} that builds a directory containing all of " "@var{files}. Each item in @var{files} must be a two-element list where the " "first element is the file name to use in the new directory, and the second " "element is a gexp denoting the target file. Here's an example:" msgstr "" #. type: example #: doc/guix.texi:6013 #, no-wrap msgid "" "(file-union \"etc\"\n" " `((\"hosts\" ,(plain-file \"hosts\"\n" " \"127.0.0.1 localhost\"))\n" " (\"bashrc\" ,(plain-file \"bashrc\"\n" " \"alias ls='ls --color=auto'\"))))\n" msgstr "" #. type: deffn #: doc/guix.texi:6016 msgid "This yields an @code{etc} directory containing these two files." msgstr "" #. type: deffn #: doc/guix.texi:6018 #, no-wrap msgid "{Scheme Procedure} directory-union @var{name} @var{things}" msgstr "" #. type: deffn #: doc/guix.texi:6021 msgid "" "Return a directory that is the union of @var{things}, where @var{things} is " "a list of file-like objects denoting directories. For example:" msgstr "" #. type: example #: doc/guix.texi:6024 #, no-wrap msgid "(directory-union \"guile+emacs\" (list guile emacs))\n" msgstr "" #. type: deffn #: doc/guix.texi:6027 msgid "" "yields a directory that is the union of the @code{guile} and @code{emacs} " "packages." msgstr "" #. type: deffn #: doc/guix.texi:6029 #, no-wrap msgid "{Scheme Procedure} file-append @var{obj} @var{suffix} @dots{}" msgstr "" #. type: deffn #: doc/guix.texi:6033 msgid "" "Return a file-like object that expands to the concatenation of @var{obj} and " "@var{suffix}, where @var{obj} is a lowerable object and each @var{suffix} is " "a string." msgstr "" #. type: deffn #: doc/guix.texi:6035 msgid "As an example, consider this gexp:" msgstr "" #. type: example #: doc/guix.texi:6040 #, no-wrap msgid "" "(gexp->script \"run-uname\"\n" " #~(system* #$(file-append coreutils\n" " \"/bin/uname\")))\n" msgstr "" #. type: deffn #: doc/guix.texi:6043 msgid "The same effect could be achieved with:" msgstr "" #. type: example #: doc/guix.texi:6048 #, no-wrap msgid "" "(gexp->script \"run-uname\"\n" " #~(system* (string-append #$coreutils\n" " \"/bin/uname\")))\n" msgstr "" #. type: deffn #: doc/guix.texi:6054 msgid "" "There is one difference though: in the @code{file-append} case, the " "resulting script contains the absolute file name as a string, whereas in the " "second case, the resulting script contains a @code{(string-append @dots{})} " "expression to construct the file name @emph{at run time}." msgstr "" #. type: Plain text #: doc/guix.texi:6061 msgid "" "Of course, in addition to gexps embedded in ``host'' code, there are also " "modules containing build tools. To make it clear that they are meant to be " "used in the build stratum, these modules are kept in the @code{(guix build " "@dots{})} name space." msgstr "" #. type: Plain text #: doc/guix.texi:6067 msgid "" "Internally, high-level objects are @dfn{lowered}, using their compiler, to " "either derivations or store items. For instance, lowering a package yields " "a derivation, and lowering a @code{plain-file} yields a store item. This is " "achieved using the @code{lower-object} monadic procedure." msgstr "" #. type: deffn #: doc/guix.texi:6068 #, no-wrap msgid "{Monadic Procedure} lower-object @var{obj} [@var{system}] @" msgstr "" #. type: deffn #: doc/guix.texi:6074 msgid "" "[#:target #f] Return as a value in @var{%store-monad} the derivation or " "store item corresponding to @var{obj} for @var{system}, cross-compiling for " "@var{target} if @var{target} is true. @var{obj} must be an object that has " "an associated gexp compiler, such as a @code{}." msgstr "" #. type: section #: doc/guix.texi:6077 #, no-wrap msgid "Invoking @command{guix repl}" msgstr "" #. type: cindex #: doc/guix.texi:6079 #, no-wrap msgid "REPL, read-eval-print loop" msgstr "" #. type: Plain text #: doc/guix.texi:6085 msgid "" "The @command{guix repl} command spawns a Guile @dfn{read-eval-print loop} " "(REPL) for interactive programming (@pxref{Using Guile Interactively,,, " "guile, GNU Guile Reference Manual}). Compared to just launching the " "@command{guile} command, @command{guix repl} guarantees that all the Guix " "modules and all its dependencies are available in the search path. You can " "use it this way:" msgstr "" #. type: example #: doc/guix.texi:6091 #, no-wrap msgid "" "$ guix repl\n" "scheme@@(guile-user)> ,use (gnu packages base)\n" "scheme@@(guile-user)> coreutils\n" "$1 = #\n" msgstr "" #. type: Plain text #: doc/guix.texi:6098 msgid "" "In addition, @command{guix repl} implements a simple machine-readable REPL " "protocol for use by @code{(guix inferior)}, a facility to interact with " "@dfn{inferiors}, separate processes running a potentially different revision " "of Guix." msgstr "" #. type: Plain text #: doc/guix.texi:6100 msgid "The available options are as follows:" msgstr "" #. type: item #: doc/guix.texi:6102 doc/guix.texi:7952 #, no-wrap msgid "--type=@var{type}" msgstr "" #. type: itemx #: doc/guix.texi:6103 doc/guix.texi:7953 doc/guix.texi:22545 #, no-wrap msgid "-t @var{type}" msgstr "" #. type: table #: doc/guix.texi:6105 msgid "" "Start a REPL of the given @var{TYPE}, which can be one of the following:" msgstr "" #. type: item #: doc/guix.texi:6107 #, no-wrap msgid "guile" msgstr "" #. type: table #: doc/guix.texi:6109 msgid "This is default, and it spawns a standard full-featured Guile REPL." msgstr "" #. type: item #: doc/guix.texi:6109 #, no-wrap msgid "machine" msgstr "" #. type: table #: doc/guix.texi:6112 msgid "" "Spawn a REPL that uses the machine-readable protocol. This is the protocol " "that the @code{(guix inferior)} module speaks." msgstr "" #. type: table #: doc/guix.texi:6118 msgid "" "By default, @command{guix repl} reads from standard input and writes to " "standard output. When this option is passed, it will instead listen for " "connections on @var{endpoint}. Here are examples of valid options:" msgstr "" #. type: item #: doc/guix.texi:6120 #, no-wrap msgid "--listen=tcp:37146" msgstr "" #. type: table #: doc/guix.texi:6122 msgid "Accept connections on localhost on port 37146." msgstr "" #. type: item #: doc/guix.texi:6123 #, no-wrap msgid "--listen=unix:/tmp/socket" msgstr "" #. type: table #: doc/guix.texi:6125 msgid "Accept connections on the Unix-domain socket @file{/tmp/socket}." msgstr "" #. type: Plain text #: doc/guix.texi:6136 msgid "" "This section describes Guix command-line utilities. Some of them are " "primarily targeted at developers and users who write new package " "definitions, while others are more generally useful. They complement the " "Scheme programming interface of Guix in a convenient way." msgstr "" #. type: cindex #: doc/guix.texi:6159 #, no-wrap msgid "package building" msgstr "" #. type: command{#1} #: doc/guix.texi:6160 #, no-wrap msgid "guix build" msgstr "" #. type: Plain text #: doc/guix.texi:6166 msgid "" "The @command{guix build} command builds packages or derivations and their " "dependencies, and prints the resulting store paths. Note that it does not " "modify the user's profile---this is the job of the @command{guix package} " "command (@pxref{Invoking guix package}). Thus, it is mainly useful for " "distribution developers." msgstr "" #. type: Plain text #: doc/guix.texi:6168 doc/guix.texi:6835 doc/guix.texi:6902 doc/guix.texi:7657 #: doc/guix.texi:8002 doc/guix.texi:8332 doc/guix.texi:8637 doc/guix.texi:8703 #: doc/guix.texi:8742 msgid "The general syntax is:" msgstr "" #. type: example #: doc/guix.texi:6171 #, no-wrap msgid "guix build @var{options} @var{package-or-derivation}@dots{}\n" msgstr "" #. type: Plain text #: doc/guix.texi:6176 msgid "" "As an example, the following command builds the latest versions of Emacs and " "of Guile, displays their build logs, and finally displays the resulting " "directories:" msgstr "" #. type: example #: doc/guix.texi:6179 #, no-wrap msgid "guix build emacs guile\n" msgstr "" #. type: Plain text #: doc/guix.texi:6182 msgid "Similarly, the following command builds all the available packages:" msgstr "" #. type: example #: doc/guix.texi:6186 #, no-wrap msgid "" "guix build --quiet --keep-going \\\n" " `guix package -A | cut -f1,2 --output-delimiter=@@`\n" msgstr "" #. type: Plain text #: doc/guix.texi:6194 msgid "" "@var{package-or-derivation} may be either the name of a package found in the " "software distribution such as @code{coreutils} or @code{coreutils@@8.20}, or " "a derivation such as @file{/gnu/store/@dots{}-coreutils-8.19.drv}. In the " "former case, a package with the corresponding name (and optionally version) " "is searched for among the GNU distribution modules (@pxref{Package Modules})." msgstr "" #. type: Plain text #: doc/guix.texi:6199 msgid "" "Alternatively, the @code{--expression} option may be used to specify a " "Scheme expression that evaluates to a package; this is useful when " "disambiguating among several same-named packages or package variants is " "needed." msgstr "" #. type: Plain text #: doc/guix.texi:6202 msgid "" "There may be zero or more @var{options}. The available options are " "described in the subsections below." msgstr "" #. type: Plain text #: doc/guix.texi:6217 msgid "" "A number of options that control the build process are common to " "@command{guix build} and other commands that can spawn builds, such as " "@command{guix package} or @command{guix archive}. These are the following:" msgstr "" #. type: item #: doc/guix.texi:6220 #, no-wrap msgid "--load-path=@var{directory}" msgstr "" #. type: itemx #: doc/guix.texi:6221 #, no-wrap msgid "-L @var{directory}" msgstr "" #. type: table #: doc/guix.texi:6224 msgid "" "Add @var{directory} to the front of the package module search path " "(@pxref{Package Modules})." msgstr "" #. type: table #: doc/guix.texi:6227 msgid "" "This allows users to define their own packages and make them visible to the " "command-line tools." msgstr "" #. type: item #: doc/guix.texi:6228 #, no-wrap msgid "--keep-failed" msgstr "" #. type: itemx #: doc/guix.texi:6229 #, no-wrap msgid "-K" msgstr "" #. type: table #: doc/guix.texi:6235 msgid "" "Keep the build tree of failed builds. Thus, if a build fails, its build " "tree is kept under @file{/tmp}, in a directory whose name is shown at the " "end of the build log. This is useful when debugging build issues. " "@xref{Debugging Build Failures}, for tips and tricks on how to debug build " "issues." msgstr "" #. type: table #: doc/guix.texi:6239 msgid "" "This option has no effect when connecting to a remote daemon with a " "@code{guix://} URI (@pxref{The Store, the @code{GUIX_DAEMON_SOCKET} " "variable})." msgstr "" #. type: item #: doc/guix.texi:6240 #, no-wrap msgid "--keep-going" msgstr "" #. type: itemx #: doc/guix.texi:6241 #, no-wrap msgid "-k" msgstr "" #. type: table #: doc/guix.texi:6244 msgid "" "Keep going when some of the derivations fail to build; return only once all " "the builds have either completed or failed." msgstr "" #. type: table #: doc/guix.texi:6247 msgid "" "The default behavior is to stop as soon as one of the specified derivations " "has failed." msgstr "" #. type: table #: doc/guix.texi:6251 msgid "Do not build the derivations." msgstr "" #. type: anchor{#1} #: doc/guix.texi:6253 msgid "fallback-option" msgstr "" #. type: item #: doc/guix.texi:6253 #, no-wrap msgid "--fallback" msgstr "" #. type: table #: doc/guix.texi:6256 msgid "" "When substituting a pre-built binary fails, fall back to building packages " "locally (@pxref{Substitution Failure})." msgstr "" #. type: anchor{#1} #: doc/guix.texi:6262 msgid "client-substitute-urls" msgstr "" #. type: table #: doc/guix.texi:6262 msgid "" "Consider @var{urls} the whitespace-separated list of substitute source URLs, " "overriding the default list of URLs of @command{guix-daemon} (@pxref{daemon-" "substitute-urls,, @command{guix-daemon} URLs})." msgstr "" #. type: table #: doc/guix.texi:6266 msgid "" "This means that substitutes may be downloaded from @var{urls}, provided they " "are signed by a key authorized by the system administrator " "(@pxref{Substitutes})." msgstr "" #. type: table #: doc/guix.texi:6269 msgid "" "When @var{urls} is the empty string, substitutes are effectively disabled." msgstr "" #. type: item #: doc/guix.texi:6275 #, no-wrap msgid "--no-grafts" msgstr "" #. type: table #: doc/guix.texi:6279 msgid "" "Do not ``graft'' packages. In practice, this means that package updates " "available as grafts are not applied. @xref{Security Updates}, for more " "information on grafts." msgstr "" #. type: item #: doc/guix.texi:6280 #, no-wrap msgid "--rounds=@var{n}" msgstr "" #. type: table #: doc/guix.texi:6283 msgid "" "Build each derivation @var{n} times in a row, and raise an error if " "consecutive build results are not bit-for-bit identical." msgstr "" #. type: table #: doc/guix.texi:6288 msgid "" "This is a useful way to detect non-deterministic builds processes. Non-" "deterministic build processes are a problem because they make it practically " "impossible for users to @emph{verify} whether third-party binaries are " "genuine. @xref{Invoking guix challenge}, for more." msgstr "" #. type: table #: doc/guix.texi:6294 msgid "" "Note that, currently, the differing build results are not kept around, so " "you will have to manually investigate in case of an error---e.g., by " "stashing one of the build results with @code{guix archive --export} " "(@pxref{Invoking guix archive}), then rebuilding, and finally comparing the " "two results." msgstr "" #. type: table #: doc/guix.texi:6299 msgid "" "Do not attempt to offload builds @i{via} the ``build hook'' of the daemon " "(@pxref{Daemon Offload Setup}). That is, always build things locally " "instead of offloading builds to remote machines." msgstr "" #. type: table #: doc/guix.texi:6306 msgid "" "By default, the daemon's setting is honored (@pxref{Invoking guix-daemon, " "@code{--max-silent-time}})." msgstr "" #. type: table #: doc/guix.texi:6313 msgid "" "By default, the daemon's setting is honored (@pxref{Invoking guix-daemon, " "@code{--timeout}})." msgstr "" #. type: item #: doc/guix.texi:6314 #, no-wrap msgid "--verbosity=@var{level}" msgstr "" #. type: table #: doc/guix.texi:6318 msgid "" "Use the given verbosity level. @var{level} must be an integer between 0 and " "5; higher means more verbose output. Setting a level of 4 or more may be " "helpful when debugging setup issues with the build daemon." msgstr "" #. type: table #: doc/guix.texi:6323 msgid "" "Allow the use of up to @var{n} CPU cores for the build. The special value " "@code{0} means to use as many CPU cores as available." msgstr "" #. type: table #: doc/guix.texi:6329 msgid "" "Allow at most @var{n} build jobs in parallel. @xref{Invoking guix-daemon, " "@code{--max-jobs}}, for details about this option and the equivalent " "@command{guix-daemon} option." msgstr "" #. type: Plain text #: doc/guix.texi:6336 msgid "" "Behind the scenes, @command{guix build} is essentially an interface to the " "@code{package-derivation} procedure of the @code{(guix packages)} module, " "and to the @code{build-derivations} procedure of the @code{(guix " "derivations)} module." msgstr "" #. type: Plain text #: doc/guix.texi:6340 msgid "" "In addition to options explicitly passed on the command line, @command{guix " "build} and other @command{guix} commands that support building honor the " "@code{GUIX_BUILD_OPTIONS} environment variable." msgstr "" #. type: defvr #: doc/guix.texi:6341 #, no-wrap msgid "{Environment Variable} GUIX_BUILD_OPTIONS" msgstr "" #. type: defvr #: doc/guix.texi:6346 msgid "" "Users can define this variable to a list of command line options that will " "automatically be used by @command{guix build} and other @command{guix} " "commands that can perform builds, as in the example below:" msgstr "" #. type: example #: doc/guix.texi:6349 #, no-wrap msgid "$ export GUIX_BUILD_OPTIONS=\"--no-substitutes -c 2 -L /foo/bar\"\n" msgstr "" #. type: defvr #: doc/guix.texi:6353 msgid "" "These options are parsed independently, and the result is appended to the " "parsed command-line options." msgstr "" #. type: cindex #: doc/guix.texi:6359 #, no-wrap msgid "package variants" msgstr "" #. type: Plain text #: doc/guix.texi:6367 msgid "" "Another set of command-line options supported by @command{guix build} and " "also @command{guix package} are @dfn{package transformation options}. These " "are options that make it possible to define @dfn{package variants}---for " "instance, packages built from different source code. This is a convenient " "way to create customized packages on the fly without having to type in the " "definitions of package variants (@pxref{Defining Packages})." msgstr "" #. type: item #: doc/guix.texi:6370 #, no-wrap msgid "--with-source=@var{source}" msgstr "" #. type: itemx #: doc/guix.texi:6371 #, no-wrap msgid "--with-source=@var{package}=@var{source}" msgstr "" #. type: itemx #: doc/guix.texi:6372 #, no-wrap msgid "--with-source=@var{package}@@@var{version}=@var{source}" msgstr "" #. type: table #: doc/guix.texi:6377 msgid "" "Use @var{source} as the source of @var{package}, and @var{version} as its " "version number. @var{source} must be a file name or a URL, as for " "@command{guix download} (@pxref{Invoking guix download})." msgstr "" #. type: table #: doc/guix.texi:6383 msgid "" "When @var{package} is omitted, it is taken to be the package name specified " "on the command line that matches the base of @var{source}---e.g., if " "@var{source} is @code{/src/guile-2.0.10.tar.gz}, the corresponding package " "is @code{guile}." msgstr "" #. type: table #: doc/guix.texi:6386 msgid "" "Likewise, when @var{version} is omitted, the version string is inferred from " "@var{source}; in the previous example, it is @code{2.0.10}." msgstr "" #. type: table #: doc/guix.texi:6391 msgid "" "This option allows users to try out versions of packages other than the one " "provided by the distribution. The example below downloads @file{ed-1.7.tar." "gz} from a GNU mirror and uses that as the source for the @code{ed} package:" msgstr "" #. type: example #: doc/guix.texi:6394 #, no-wrap msgid "guix build ed --with-source=mirror://gnu/ed/ed-1.7.tar.gz\n" msgstr "" #. type: table #: doc/guix.texi:6398 msgid "" "As a developer, @code{--with-source} makes it easy to test release " "candidates:" msgstr "" #. type: example #: doc/guix.texi:6401 #, no-wrap msgid "guix build guile --with-source=../guile-2.0.9.219-e1bb7.tar.xz\n" msgstr "" #. type: table #: doc/guix.texi:6404 msgid "@dots{} or to build from a checkout in a pristine environment:" msgstr "" #. type: example #: doc/guix.texi:6408 #, no-wrap msgid "" "$ git clone git://git.sv.gnu.org/guix.git\n" "$ guix build guix --with-source=guix@@1.0=./guix\n" msgstr "" #. type: item #: doc/guix.texi:6410 #, no-wrap msgid "--with-input=@var{package}=@var{replacement}" msgstr "" #. type: table #: doc/guix.texi:6415 msgid "" "Replace dependency on @var{package} by a dependency on @var{replacement}. " "@var{package} must be a package name, and @var{replacement} must be a " "package specification such as @code{guile} or @code{guile@@1.8}." msgstr "" #. type: table #: doc/guix.texi:6419 msgid "" "For instance, the following command builds Guix, but replaces its dependency " "on the current stable version of Guile with a dependency on the legacy " "version of Guile, @code{guile@@2.0}:" msgstr "" #. type: example #: doc/guix.texi:6422 #, no-wrap msgid "guix build --with-input=guile=guile@@2.0 guix\n" msgstr "" #. type: table #: doc/guix.texi:6427 msgid "" "This is a recursive, deep replacement. So in this example, both @code{guix} " "and its dependency @code{guile-json} (which also depends on @code{guile}) " "get rebuilt against @code{guile@@2.0}." msgstr "" #. type: table #: doc/guix.texi:6430 msgid "" "This is implemented using the @code{package-input-rewriting} Scheme " "procedure (@pxref{Defining Packages, @code{package-input-rewriting}})." msgstr "" #. type: item #: doc/guix.texi:6431 #, no-wrap msgid "--with-graft=@var{package}=@var{replacement}" msgstr "" #. type: table #: doc/guix.texi:6437 msgid "" "This is similar to @code{--with-input} but with an important difference: " "instead of rebuilding the whole dependency chain, @var{replacement} is built " "and then @dfn{grafted} onto the binaries that were initially referring to " "@var{package}. @xref{Security Updates}, for more information on grafts." msgstr "" #. type: table #: doc/guix.texi:6441 msgid "" "For example, the command below grafts version 3.5.4 of GnuTLS onto Wget and " "all its dependencies, replacing references to the version of GnuTLS they " "currently refer to:" msgstr "" #. type: example #: doc/guix.texi:6444 #, no-wrap msgid "guix build --with-graft=gnutls=gnutls@@3.5.4 wget\n" msgstr "" #. type: table #: doc/guix.texi:6453 msgid "" "This has the advantage of being much faster than rebuilding everything. But " "there is a caveat: it works if and only if @var{package} and " "@var{replacement} are strictly compatible---for example, if they provide a " "library, the application binary interface (ABI) of those libraries must be " "compatible. If @var{replacement} is somehow incompatible with " "@var{package}, then the resulting package may be unusable. Use with care!" msgstr "" #. type: Plain text #: doc/guix.texi:6461 msgid "" "The command-line options presented below are specific to @command{guix " "build}." msgstr "" #. type: item #: doc/guix.texi:6464 #, no-wrap msgid "--quiet" msgstr "" #. type: itemx #: doc/guix.texi:6465 #, no-wrap msgid "-q" msgstr "" #. type: table #: doc/guix.texi:6469 msgid "" "Build quietly, without displaying the build log. Upon completion, the build " "log is kept in @file{/var} (or similar) and can always be retrieved using " "the @option{--log-file} option." msgstr "" #. type: item #: doc/guix.texi:6470 #, no-wrap msgid "--file=@var{file}" msgstr "" #. type: table #: doc/guix.texi:6474 msgid "" "Build the package, derivation, or other file-like object that the code " "within @var{file} evaluates to (@pxref{G-Expressions, file-like objects})." msgstr "" #. type: table #: doc/guix.texi:6477 msgid "" "As an example, @var{file} might contain a package definition like this " "(@pxref{Defining Packages}):" msgstr "" #. type: table #: doc/guix.texi:6485 msgid "Build the package or derivation @var{expr} evaluates to." msgstr "" #. type: table #: doc/guix.texi:6489 msgid "" "For example, @var{expr} may be @code{(@@ (gnu packages guile) guile-1.8)}, " "which unambiguously designates this specific variant of version 1.8 of Guile." msgstr "" #. type: table #: doc/guix.texi:6493 msgid "" "Alternatively, @var{expr} may be a G-expression, in which case it is used as " "a build program passed to @code{gexp->derivation} (@pxref{G-Expressions})." msgstr "" #. type: table #: doc/guix.texi:6497 msgid "" "Lastly, @var{expr} may refer to a zero-argument monadic procedure " "(@pxref{The Store Monad}). The procedure must return a derivation as a " "monadic value, which is then passed through @code{run-with-store}." msgstr "" #. type: item #: doc/guix.texi:6498 #, no-wrap msgid "--source" msgstr "" #. type: itemx #: doc/guix.texi:6499 #, no-wrap msgid "-S" msgstr "" #. type: table #: doc/guix.texi:6502 msgid "" "Build the source derivations of the packages, rather than the packages " "themselves." msgstr "" #. type: table #: doc/guix.texi:6506 msgid "" "For instance, @code{guix build -S gcc} returns something like @file{/gnu/" "store/@dots{}-gcc-4.7.2.tar.bz2}, which is the GCC source tarball." msgstr "" #. type: table #: doc/guix.texi:6510 msgid "" "The returned source tarball is the result of applying any patches and code " "snippets specified in the package @code{origin} (@pxref{Defining Packages})." msgstr "" #. type: item #: doc/guix.texi:6511 #, no-wrap msgid "--sources" msgstr "" #. type: table #: doc/guix.texi:6518 msgid "" "Fetch and return the source of @var{package-or-derivation} and all their " "dependencies, recursively. This is a handy way to obtain a local copy of " "all the source code needed to build @var{packages}, allowing you to " "eventually build them even without network access. It is an extension of " "the @code{--source} option and can accept one of the following optional " "argument values:" msgstr "" #. type: item #: doc/guix.texi:6520 doc/guix.texi:7846 #, no-wrap msgid "package" msgstr "" #. type: table #: doc/guix.texi:6523 msgid "" "This value causes the @code{--sources} option to behave in the same way as " "the @code{--source} option." msgstr "" #. type: item #: doc/guix.texi:6524 doc/guix.texi:13054 #, no-wrap msgid "all" msgstr "" #. type: table #: doc/guix.texi:6527 msgid "" "Build the source derivations of all packages, including any source that " "might be listed as @code{inputs}. This is the default value." msgstr "" #. type: example #: doc/guix.texi:6533 #, no-wrap msgid "" "$ guix build --sources tzdata\n" "The following derivations will be built:\n" " /gnu/store/@dots{}-tzdata2015b.tar.gz.drv\n" " /gnu/store/@dots{}-tzcode2015b.tar.gz.drv\n" msgstr "" #. type: item #: doc/guix.texi:6535 #, no-wrap msgid "transitive" msgstr "" #. type: table #: doc/guix.texi:6539 msgid "" "Build the source derivations of all packages, as well of all transitive " "inputs to the packages. This can be used e.g. to prefetch package source " "for later offline building." msgstr "" #. type: example #: doc/guix.texi:6550 #, no-wrap msgid "" "$ guix build --sources=transitive tzdata\n" "The following derivations will be built:\n" " /gnu/store/@dots{}-tzcode2015b.tar.gz.drv\n" " /gnu/store/@dots{}-findutils-4.4.2.tar.xz.drv\n" " /gnu/store/@dots{}-grep-2.21.tar.xz.drv\n" " /gnu/store/@dots{}-coreutils-8.23.tar.xz.drv\n" " /gnu/store/@dots{}-make-4.1.tar.xz.drv\n" " /gnu/store/@dots{}-bash-4.3.tar.xz.drv\n" "@dots{}\n" msgstr "" #. type: quotation #: doc/guix.texi:6563 msgid "" "The @code{--system} flag is for @emph{native} compilation and must not be " "confused with cross-compilation. See @code{--target} below for information " "on cross-compilation." msgstr "" #. type: table #: doc/guix.texi:6570 msgid "" "An example use of this is on Linux-based systems, which can emulate " "different personalities. For instance, passing @code{--system=i686-linux} " "on an @code{x86_64-linux} system or @code{--system=armhf-linux} on an " "@code{aarch64-linux} system allows you to build packages in a complete 32-" "bit environment." msgstr "" #. type: quotation #: doc/guix.texi:6575 msgid "" "Building for an @code{armhf-linux} system is unconditionally enabled on " "@code{aarch64-linux} machines, although certain aarch64 chipsets do not " "allow for this functionality, notably the ThunderX." msgstr "" #. type: table #: doc/guix.texi:6581 msgid "" "Similarly, when transparent emulation with QEMU and @code{binfmt_misc} is " "enabled (@pxref{Virtualization Services, @code{qemu-binfmt-service-type}}), " "you can build for any system for which a QEMU @code{binfmt_misc} handler is " "installed." msgstr "" #. type: table #: doc/guix.texi:6585 msgid "" "Builds for a system other than that of the machine you are using can also be " "offloaded to a remote machine of the right architecture. @xref{Daemon " "Offload Setup}, for more information on offloading." msgstr "" #. type: anchor{#1} #: doc/guix.texi:6593 msgid "build-check" msgstr "" #. type: item #: doc/guix.texi:6593 #, no-wrap msgid "--check" msgstr "" #. type: cindex #: doc/guix.texi:6594 #, no-wrap msgid "determinism, checking" msgstr "" #. type: cindex #: doc/guix.texi:6595 #, no-wrap msgid "reproducibility, checking" msgstr "" #. type: table #: doc/guix.texi:6599 msgid "" "Rebuild @var{package-or-derivation}, which are already available in the " "store, and raise an error if the build results are not bit-for-bit identical." msgstr "" #. type: table #: doc/guix.texi:6604 msgid "" "This mechanism allows you to check whether previously installed substitutes " "are genuine (@pxref{Substitutes}), or whether the build result of a package " "is deterministic. @xref{Invoking guix challenge}, for more background " "information and tools." msgstr "" #. type: item #: doc/guix.texi:6609 #, no-wrap msgid "--repair" msgstr "" #. type: cindex #: doc/guix.texi:6610 #, no-wrap msgid "repairing store items" msgstr "" #. type: table #: doc/guix.texi:6614 msgid "" "Attempt to repair the specified store items, if they are corrupt, by re-" "downloading or rebuilding them." msgstr "" #. type: table #: doc/guix.texi:6616 msgid "This operation is not atomic and thus restricted to @code{root}." msgstr "" #. type: item #: doc/guix.texi:6617 #, no-wrap msgid "--derivations" msgstr "" #. type: table #: doc/guix.texi:6621 msgid "" "Return the derivation paths, not the output paths, of the given packages." msgstr "" #. type: item #: doc/guix.texi:6622 doc/guix.texi:8110 doc/guix.texi:22567 #, no-wrap msgid "--root=@var{file}" msgstr "" #. type: itemx #: doc/guix.texi:6623 doc/guix.texi:8111 doc/guix.texi:22568 #, no-wrap msgid "-r @var{file}" msgstr "" #. type: cindex #: doc/guix.texi:6624 #, no-wrap msgid "GC roots, adding" msgstr "" #. type: cindex #: doc/guix.texi:6625 #, no-wrap msgid "garbage collector roots, adding" msgstr "" #. type: table #: doc/guix.texi:6628 doc/guix.texi:22571 msgid "" "Make @var{file} a symlink to the result, and register it as a garbage " "collector root." msgstr "" #. type: table #: doc/guix.texi:6634 msgid "" "Consequently, the results of this @command{guix build} invocation are " "protected from garbage collection until @var{file} is removed. When that " "option is omitted, build results are eligible for garbage collection as soon " "as the build completes. @xref{Invoking guix gc}, for more on GC roots." msgstr "" #. type: item #: doc/guix.texi:6635 #, no-wrap msgid "--log-file" msgstr "" #. type: cindex #: doc/guix.texi:6636 #, no-wrap msgid "build logs, access" msgstr "" #. type: table #: doc/guix.texi:6640 msgid "" "Return the build log file names or URLs for the given @var{package-or-" "derivation}, or raise an error if build logs are missing." msgstr "" #. type: table #: doc/guix.texi:6643 msgid "" "This works regardless of how packages or derivations are specified. For " "instance, the following invocations are equivalent:" msgstr "" #. type: example #: doc/guix.texi:6649 #, no-wrap msgid "" "guix build --log-file `guix build -d guile`\n" "guix build --log-file `guix build guile`\n" "guix build --log-file guile\n" "guix build --log-file -e '(@@ (gnu packages guile) guile-2.0)'\n" msgstr "" #. type: table #: doc/guix.texi:6654 msgid "" "If a log is unavailable locally, and unless @code{--no-substitutes} is " "passed, the command looks for a corresponding log on one of the substitute " "servers (as specified with @code{--substitute-urls}.)" msgstr "" #. type: table #: doc/guix.texi:6657 msgid "" "So for instance, imagine you want to see the build log of GDB on MIPS, but " "you are actually on an @code{x86_64} machine:" msgstr "" #. type: example #: doc/guix.texi:6661 #, no-wrap msgid "" "$ guix build --log-file gdb -s mips64el-linux\n" "https://hydra.gnu.org/log/@dots{}-gdb-7.10\n" msgstr "" #. type: table #: doc/guix.texi:6664 msgid "You can freely access a huge library of build logs!" msgstr "" #. type: cindex #: doc/guix.texi:6669 #, no-wrap msgid "build failures, debugging" msgstr "" #. type: Plain text #: doc/guix.texi:6675 msgid "" "When defining a new package (@pxref{Defining Packages}), you will probably " "find yourself spending some time debugging and tweaking the build until it " "succeeds. To do that, you need to operate the build commands yourself in an " "environment as close as possible to the one the build daemon uses." msgstr "" #. type: Plain text #: doc/guix.texi:6680 msgid "" "To that end, the first thing to do is to use the @option{--keep-failed} or " "@option{-K} option of @command{guix build}, which will keep the failed build " "tree in @file{/tmp} or whatever directory you specified as @code{TMPDIR} " "(@pxref{Invoking guix build, @code{--keep-failed}})." msgstr "" #. type: Plain text #: doc/guix.texi:6686 msgid "" "From there on, you can @command{cd} to the failed build tree and source the " "@file{environment-variables} file, which contains all the environment " "variable definitions that were in place when the build failed. So let's say " "you're debugging a build failure in package @code{foo}; a typical session " "would look like this:" msgstr "" #. type: example #: doc/guix.texi:6693 #, no-wrap msgid "" "$ guix build foo -K\n" "@dots{} @i{build fails}\n" "$ cd /tmp/guix-build-foo.drv-0\n" "$ source ./environment-variables\n" "$ cd foo-1.2\n" msgstr "" #. type: Plain text #: doc/guix.texi:6697 msgid "" "Now, you can invoke commands as if you were the daemon (almost) and " "troubleshoot your build process." msgstr "" #. type: Plain text #: doc/guix.texi:6703 msgid "" "Sometimes it happens that, for example, a package's tests pass when you run " "them manually but they fail when the daemon runs them. This can happen " "because the daemon runs builds in containers where, unlike in our " "environment above, network access is missing, @file{/bin/sh} does not exist, " "etc. (@pxref{Build Environment Setup})." msgstr "" #. type: Plain text #: doc/guix.texi:6706 msgid "" "In such cases, you may need to run inspect the build process from within a " "container similar to the one the build daemon creates:" msgstr "" #. type: example #: doc/guix.texi:6714 #, no-wrap msgid "" "$ guix build -K foo\n" "@dots{}\n" "$ cd /tmp/guix-build-foo.drv-0\n" "$ guix environment --no-grafts -C foo --ad-hoc strace gdb\n" "[env]# source ./environment-variables\n" "[env]# cd foo-1.2\n" msgstr "" #. type: Plain text #: doc/guix.texi:6723 msgid "" "Here, @command{guix environment -C} creates a container and spawns a new " "shell in it (@pxref{Invoking guix environment}). The @command{--ad-hoc " "strace gdb} part adds the @command{strace} and @command{gdb} commands to the " "container, which would may find handy while debugging. The @option{--no-" "grafts} option makes sure we get the exact same environment, with ungrafted " "packages (@pxref{Security Updates}, for more info on grafts)." msgstr "" #. type: Plain text #: doc/guix.texi:6726 msgid "" "To get closer to a container like that used by the build daemon, we can " "remove @file{/bin/sh}:" msgstr "" #. type: example #: doc/guix.texi:6729 #, no-wrap msgid "[env]# rm /bin/sh\n" msgstr "" #. type: Plain text #: doc/guix.texi:6733 msgid "" "(Don't worry, this is harmless: this is all happening in the throw-away " "container created by @command{guix environment}.)" msgstr "" #. type: Plain text #: doc/guix.texi:6736 msgid "" "The @command{strace} command is probably not in the search path, but we can " "run:" msgstr "" #. type: example #: doc/guix.texi:6739 #, no-wrap msgid "[env]# $GUIX_ENVIRONMENT/bin/strace -f -o log make check\n" msgstr "" #. type: Plain text #: doc/guix.texi:6744 msgid "" "In this way, not only you will have reproduced the environment variables the " "daemon uses, you will also be running the build process in a container " "similar to the one the daemon uses." msgstr "" #. type: section #: doc/guix.texi:6747 #, no-wrap msgid "Invoking @command{guix edit}" msgstr "" #. type: command{#1} #: doc/guix.texi:6749 #, no-wrap msgid "guix edit" msgstr "" #. type: cindex #: doc/guix.texi:6750 #, no-wrap msgid "package definition, editing" msgstr "" #. type: Plain text #: doc/guix.texi:6755 msgid "" "So many packages, so many source files! The @command{guix edit} command " "facilitates the life of users and packagers by pointing their editor at the " "source file containing the definition of the specified packages. For " "instance:" msgstr "" #. type: example #: doc/guix.texi:6758 #, no-wrap msgid "guix edit gcc@@4.9 vim\n" msgstr "" #. type: Plain text #: doc/guix.texi:6764 msgid "" "launches the program specified in the @code{VISUAL} or in the @code{EDITOR} " "environment variable to view the recipe of GCC@tie{}4.9.3 and that of Vim." msgstr "" #. type: Plain text #: doc/guix.texi:6770 msgid "" "If you are using a Guix Git checkout (@pxref{Building from Git}), or have " "created your own packages on @code{GUIX_PACKAGE_PATH} (@pxref{Package " "Modules}), you will be able to edit the package recipes. In other cases, " "you will be able to examine the read-only recipes for packages currently in " "the store." msgstr "" #. type: section #: doc/guix.texi:6773 #, no-wrap msgid "Invoking @command{guix download}" msgstr "" #. type: command{#1} #: doc/guix.texi:6775 #, no-wrap msgid "guix download" msgstr "" #. type: cindex #: doc/guix.texi:6776 #, no-wrap msgid "downloading package sources" msgstr "" #. type: Plain text #: doc/guix.texi:6783 msgid "" "When writing a package definition, developers typically need to download a " "source tarball, compute its SHA256 hash, and write that hash in the package " "definition (@pxref{Defining Packages}). The @command{guix download} tool " "helps with this task: it downloads a file from the given URI, adds it to the " "store, and prints both its file name in the store and its SHA256 hash." msgstr "" #. type: Plain text #: doc/guix.texi:6790 msgid "" "The fact that the downloaded file is added to the store saves bandwidth: " "when the developer eventually tries to build the newly defined package with " "@command{guix build}, the source tarball will not have to be downloaded " "again because it is already in the store. It is also a convenient way to " "temporarily stash files, which may be deleted eventually (@pxref{Invoking " "guix gc})." msgstr "" #. type: Plain text #: doc/guix.texi:6798 msgid "" "The @command{guix download} command supports the same URIs as used in " "package definitions. In particular, it supports @code{mirror://} URIs. " "@code{https} URIs (HTTP over TLS) are supported @emph{provided} the Guile " "bindings for GnuTLS are available in the user's environment; when they are " "not available, an error is raised. @xref{Guile Preparations, how to install " "the GnuTLS bindings for Guile,, gnutls-guile, GnuTLS-Guile}, for more " "information." msgstr "" #. type: Plain text #: doc/guix.texi:6803 msgid "" "@command{guix download} verifies HTTPS server certificates by loading the " "certificates of X.509 authorities from the directory pointed to by the " "@code{SSL_CERT_DIR} environment variable (@pxref{X.509 Certificates}), " "unless @option{--no-check-certificate} is used." msgstr "" #. type: Plain text #: doc/guix.texi:6805 doc/guix.texi:8390 msgid "The following options are available:" msgstr "" #. type: item #: doc/guix.texi:6807 doc/guix.texi:6846 #, no-wrap msgid "--format=@var{fmt}" msgstr "" #. type: itemx #: doc/guix.texi:6808 doc/guix.texi:6847 #, no-wrap msgid "-f @var{fmt}" msgstr "" #. type: table #: doc/guix.texi:6811 msgid "" "Write the hash in the format specified by @var{fmt}. For more information " "on the valid values for @var{fmt}, @pxref{Invoking guix hash}." msgstr "" #. type: item #: doc/guix.texi:6812 #, no-wrap msgid "--no-check-certificate" msgstr "" #. type: table #: doc/guix.texi:6814 msgid "Do not validate the X.509 certificates of HTTPS servers." msgstr "" #. type: table #: doc/guix.texi:6818 msgid "" "When using this option, you have @emph{absolutely no guarantee} that you are " "communicating with the authentic server responsible for the given URL, which " "makes you vulnerable to ``man-in-the-middle'' attacks." msgstr "" #. type: item #: doc/guix.texi:6819 #, no-wrap msgid "--output=@var{file}" msgstr "" #. type: itemx #: doc/guix.texi:6820 #, no-wrap msgid "-o @var{file}" msgstr "" #. type: table #: doc/guix.texi:6823 msgid "" "Save the downloaded file to @var{file} instead of adding it to the store." msgstr "" #. type: section #: doc/guix.texi:6826 #, no-wrap msgid "Invoking @command{guix hash}" msgstr "" #. type: command{#1} #: doc/guix.texi:6828 #, no-wrap msgid "guix hash" msgstr "" #. type: Plain text #: doc/guix.texi:6833 msgid "" "The @command{guix hash} command computes the SHA256 hash of a file. It is " "primarily a convenience tool for anyone contributing to the distribution: it " "computes the cryptographic hash of a file, which can be used in the " "definition of a package (@pxref{Defining Packages})." msgstr "" #. type: example #: doc/guix.texi:6838 #, no-wrap msgid "guix hash @var{option} @var{file}\n" msgstr "" #. type: Plain text #: doc/guix.texi:6843 msgid "" "When @var{file} is @code{-} (a hyphen), @command{guix hash} computes the " "hash of data read from standard input. @command{guix hash} has the " "following options:" msgstr "" #. type: table #: doc/guix.texi:6849 msgid "Write the hash in the format specified by @var{fmt}." msgstr "" #. type: table #: doc/guix.texi:6852 msgid "" "Supported formats: @code{nix-base32}, @code{base32}, @code{base16} " "(@code{hex} and @code{hexadecimal} can be used as well)." msgstr "" #. type: table #: doc/guix.texi:6856 msgid "" "If the @option{--format} option is not specified, @command{guix hash} will " "output the hash in @code{nix-base32}. This representation is used in the " "definitions of packages." msgstr "" #. type: table #: doc/guix.texi:6860 msgid "Compute the hash on @var{file} recursively." msgstr "" #. type: table #: doc/guix.texi:6869 msgid "" "In this case, the hash is computed on an archive containing @var{file}, " "including its children if it is a directory. Some of the metadata of " "@var{file} is part of the archive; for instance, when @var{file} is a " "regular file, the hash is different depending on whether @var{file} is " "executable or not. Metadata such as time stamps has no impact on the hash " "(@pxref{Invoking guix archive})." msgstr "" #. type: item #: doc/guix.texi:6870 #, no-wrap msgid "--exclude-vcs" msgstr "" #. type: itemx #: doc/guix.texi:6871 #, no-wrap msgid "-x" msgstr "" #. type: table #: doc/guix.texi:6874 msgid "" "When combined with @option{--recursive}, exclude version control system " "directories (@file{.bzr}, @file{.git}, @file{.hg}, etc.)" msgstr "" #. type: table #: doc/guix.texi:6879 msgid "" "As an example, here is how you would compute the hash of a Git checkout, " "which is useful when using the @code{git-fetch} method (@pxref{origin " "Reference}):" msgstr "" #. type: example #: doc/guix.texi:6884 #, no-wrap msgid "" "$ git clone http://example.org/foo.git\n" "$ cd foo\n" "$ guix hash -rx .\n" msgstr "" #. type: cindex #: doc/guix.texi:6888 doc/guix.texi:6893 #, no-wrap msgid "Invoking @command{guix import}" msgstr "" #. type: cindex #: doc/guix.texi:6890 #, no-wrap msgid "importing packages" msgstr "" #. type: cindex #: doc/guix.texi:6891 #, no-wrap msgid "package import" msgstr "" #. type: cindex #: doc/guix.texi:6892 #, no-wrap msgid "package conversion" msgstr "" #. type: Plain text #: doc/guix.texi:6900 msgid "" "The @command{guix import} command is useful for people who would like to add " "a package to the distribution with as little work as possible---a legitimate " "demand. The command knows of a few repositories from which it can " "``import'' package metadata. The result is a package definition, or a " "template thereof, in the format we know (@pxref{Defining Packages})." msgstr "" #. type: example #: doc/guix.texi:6905 #, no-wrap msgid "guix import @var{importer} @var{options}@dots{}\n" msgstr "" #. type: Plain text #: doc/guix.texi:6911 msgid "" "@var{importer} specifies the source from which to import package metadata, " "and @var{options} specifies a package identifier and other options specific " "to @var{importer}. Currently, the available ``importers'' are:" msgstr "" #. type: item #: doc/guix.texi:6913 doc/guix.texi:7404 #, no-wrap msgid "gnu" msgstr "" #. type: table #: doc/guix.texi:6917 msgid "" "Import metadata for the given GNU package. This provides a template for the " "latest version of that GNU package, including the hash of its source " "tarball, and its canonical synopsis and description." msgstr "" #. type: table #: doc/guix.texi:6920 msgid "" "Additional information such as the package dependencies and its license " "needs to be figured out manually." msgstr "" #. type: table #: doc/guix.texi:6923 msgid "" "For example, the following command returns a package definition for GNU@tie{}" "Hello:" msgstr "" #. type: example #: doc/guix.texi:6926 #, no-wrap msgid "guix import gnu hello\n" msgstr "" #. type: table #: doc/guix.texi:6929 doc/guix.texi:7163 doc/guix.texi:7213 doc/guix.texi:7242 msgid "Specific command-line options are:" msgstr "" #. type: item #: doc/guix.texi:6931 doc/guix.texi:7535 #, no-wrap msgid "--key-download=@var{policy}" msgstr "" #. type: table #: doc/guix.texi:6935 msgid "" "As for @code{guix refresh}, specify the policy to handle missing OpenPGP " "keys when verifying the package signature. @xref{Invoking guix refresh, " "@code{--key-download}}." msgstr "" #. type: item #: doc/guix.texi:6937 doc/guix.texi:6938 doc/guix.texi:7422 #, no-wrap msgid "pypi" msgstr "" #. type: table #: doc/guix.texi:6946 msgid "" "Import metadata from the @uref{https://pypi.python.org/, Python Package " "Index}@footnote{This functionality requires Guile-JSON to be installed. " "@xref{Requirements}.}. Information is taken from the JSON-formatted " "description available at @code{pypi.python.org} and usually includes all the " "relevant information, including package dependencies. For maximum " "efficiency, it is recommended to install the @command{unzip} utility, so " "that the importer can unzip Python wheels and gather data from them." msgstr "" #. type: table #: doc/guix.texi:6949 msgid "" "The command below imports metadata for the @code{itsdangerous} Python " "package:" msgstr "" #. type: example #: doc/guix.texi:6952 #, no-wrap msgid "guix import pypi itsdangerous\n" msgstr "" #. type: table #: doc/guix.texi:6960 doc/guix.texi:6987 doc/guix.texi:7186 doc/guix.texi:7227 #: doc/guix.texi:7274 msgid "" "Traverse the dependency graph of the given upstream package recursively and " "generate package expressions for all those packages that are not yet in Guix." msgstr "" #. type: item #: doc/guix.texi:6962 doc/guix.texi:6963 doc/guix.texi:7424 #, no-wrap msgid "gem" msgstr "" #. type: table #: doc/guix.texi:6974 msgid "" "Import metadata from @uref{https://rubygems.org/, RubyGems}@footnote{This " "functionality requires Guile-JSON to be installed. @xref{Requirements}.}. " "Information is taken from the JSON-formatted description available at " "@code{rubygems.org} and includes most relevant information, including " "runtime dependencies. There are some caveats, however. The metadata " "doesn't distinguish between synopses and descriptions, so the same string is " "used for both fields. Additionally, the details of non-Ruby dependencies " "required to build native extensions is unavailable and left as an exercise " "to the packager." msgstr "" #. type: table #: doc/guix.texi:6976 msgid "The command below imports metadata for the @code{rails} Ruby package:" msgstr "" #. type: example #: doc/guix.texi:6979 #, no-wrap msgid "guix import gem rails\n" msgstr "" #. type: item #: doc/guix.texi:6989 doc/guix.texi:7420 #, no-wrap msgid "cpan" msgstr "" #. type: cindex #: doc/guix.texi:6990 #, no-wrap msgid "CPAN" msgstr "" #. type: table #: doc/guix.texi:7000 msgid "" "Import metadata from @uref{https://www.metacpan.org/, MetaCPAN}" "@footnote{This functionality requires Guile-JSON to be installed. " "@xref{Requirements}.}. Information is taken from the JSON-formatted " "metadata provided through @uref{https://fastapi.metacpan.org/, MetaCPAN's " "API} and includes most relevant information, such as module dependencies. " "License information should be checked closely. If Perl is available in the " "store, then the @code{corelist} utility will be used to filter core modules " "out of the list of dependencies." msgstr "" #. type: table #: doc/guix.texi:7003 msgid "" "The command command below imports metadata for the @code{Acme::Boolean} Perl " "module:" msgstr "" #. type: example #: doc/guix.texi:7006 #, no-wrap msgid "guix import cpan Acme::Boolean\n" msgstr "" #. type: item #: doc/guix.texi:7008 doc/guix.texi:7416 #, no-wrap msgid "cran" msgstr "" #. type: cindex #: doc/guix.texi:7009 #, no-wrap msgid "CRAN" msgstr "" #. type: cindex #: doc/guix.texi:7010 #, no-wrap msgid "Bioconductor" msgstr "" #. type: table #: doc/guix.texi:7014 msgid "" "Import metadata from @uref{https://cran.r-project.org/, CRAN}, the central " "repository for the @uref{http://r-project.org, GNU@tie{}R statistical and " "graphical environment}." msgstr "" #. type: table #: doc/guix.texi:7016 msgid "" "Information is extracted from the @code{DESCRIPTION} file of the package." msgstr "" #. type: table #: doc/guix.texi:7019 msgid "" "The command command below imports metadata for the @code{Cairo} R package:" msgstr "" #. type: example #: doc/guix.texi:7022 #, no-wrap msgid "guix import cran Cairo\n" msgstr "" #. type: table #: doc/guix.texi:7027 msgid "" "When @code{--recursive} is added, the importer will traverse the dependency " "graph of the given upstream package recursively and generate package " "expressions for all those packages that are not yet in Guix." msgstr "" #. type: table #: doc/guix.texi:7032 msgid "" "When @code{--archive=bioconductor} is added, metadata is imported from " "@uref{https://www.bioconductor.org/, Bioconductor}, a repository of R " "packages for for the analysis and comprehension of high-throughput genomic " "data in bioinformatics." msgstr "" #. type: table #: doc/guix.texi:7035 msgid "" "Information is extracted from the @code{DESCRIPTION} file of a package " "published on the web interface of the Bioconductor SVN repository." msgstr "" #. type: table #: doc/guix.texi:7038 msgid "" "The command below imports metadata for the @code{GenomicRanges} R package:" msgstr "" #. type: example #: doc/guix.texi:7041 #, no-wrap msgid "guix import cran --archive=bioconductor GenomicRanges\n" msgstr "" #. type: item #: doc/guix.texi:7043 #, no-wrap msgid "texlive" msgstr "" #. type: cindex #: doc/guix.texi:7044 #, no-wrap msgid "TeX Live" msgstr "" #. type: cindex #: doc/guix.texi:7045 #, no-wrap msgid "CTAN" msgstr "" #. type: table #: doc/guix.texi:7049 msgid "" "Import metadata from @uref{http://www.ctan.org/, CTAN}, the comprehensive " "TeX archive network for TeX packages that are part of the @uref{https://www." "tug.org/texlive/, TeX Live distribution}." msgstr "" #. type: table #: doc/guix.texi:7054 msgid "" "Information about the package is obtained through the XML API provided by " "CTAN, while the source code is downloaded from the SVN repository of the Tex " "Live project. This is done because the CTAN does not keep versioned " "archives." msgstr "" #. type: table #: doc/guix.texi:7057 msgid "" "The command command below imports metadata for the @code{fontspec} TeX " "package:" msgstr "" #. type: example #: doc/guix.texi:7060 #, no-wrap msgid "guix import texlive fontspec\n" msgstr "" #. type: table #: doc/guix.texi:7066 msgid "" "When @code{--archive=DIRECTORY} is added, the source code is downloaded not " "from the @file{latex} sub-directory of the @file{texmf-dist/source} tree in " "the TeX Live SVN repository, but from the specified sibling directory under " "the same root." msgstr "" #. type: table #: doc/guix.texi:7070 msgid "" "The command below imports metadata for the @code{ifxetex} package from CTAN " "while fetching the sources from the directory @file{texmf/source/generic}:" msgstr "" #. type: example #: doc/guix.texi:7073 #, no-wrap msgid "guix import texlive --archive=generic ifxetex\n" msgstr "" #. type: cindex #: doc/guix.texi:7076 #, no-wrap msgid "JSON, import" msgstr "" #. type: table #: doc/guix.texi:7081 msgid "" "Import package metadata from a local JSON file@footnote{This functionality " "requires Guile-JSON to be installed. @xref{Requirements}.}. Consider the " "following example package definition in JSON format:" msgstr "" #. type: example #: doc/guix.texi:7094 #, no-wrap msgid "" "@{\n" " \"name\": \"hello\",\n" " \"version\": \"2.10\",\n" " \"source\": \"mirror://gnu/hello/hello-2.10.tar.gz\",\n" " \"build-system\": \"gnu\",\n" " \"home-page\": \"https://www.gnu.org/software/hello/\",\n" " \"synopsis\": \"Hello, GNU world: An example GNU package\",\n" " \"description\": \"GNU Hello prints a greeting.\",\n" " \"license\": \"GPL-3.0+\",\n" " \"native-inputs\": [\"gcc@@6\"]\n" "@}\n" msgstr "" #. type: table #: doc/guix.texi:7100 msgid "" "The field names are the same as for the @code{} record " "(@xref{Defining Packages}). References to other packages are provided as " "JSON lists of quoted package specification strings such as @code{guile} or " "@code{guile@@2.0}." msgstr "" #. type: table #: doc/guix.texi:7103 msgid "" "The importer also supports a more explicit source definition using the " "common fields for @code{} records:" msgstr "" #. type: example #: doc/guix.texi:7116 #, no-wrap msgid "" "@{\n" " @dots{}\n" " \"source\": @{\n" " \"method\": \"url-fetch\",\n" " \"uri\": \"mirror://gnu/hello/hello-2.10.tar.gz\",\n" " \"sha256\": @{\n" " \"base32\": \"0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i\"\n" " @}\n" " @}\n" " @dots{}\n" "@}\n" msgstr "" #. type: table #: doc/guix.texi:7120 msgid "" "The command below reads metadata from the JSON file @code{hello.json} and " "outputs a package expression:" msgstr "" #. type: example #: doc/guix.texi:7123 #, no-wrap msgid "guix import json hello.json\n" msgstr "" #. type: item #: doc/guix.texi:7125 #, no-wrap msgid "nix" msgstr "" #. type: table #: doc/guix.texi:7134 msgid "" "Import metadata from a local copy of the source of the @uref{http://nixos." "org/nixpkgs/, Nixpkgs distribution}@footnote{This relies on the @command{nix-" "instantiate} command of @uref{http://nixos.org/nix/, Nix}.}. Package " "definitions in Nixpkgs are typically written in a mixture of Nix-language " "and Bash code. This command only imports the high-level package structure " "that is written in the Nix language. It normally includes all the basic " "fields of a package definition." msgstr "" #. type: table #: doc/guix.texi:7137 msgid "" "When importing a GNU package, the synopsis and descriptions are replaced by " "their canonical upstream variant." msgstr "" #. type: table #: doc/guix.texi:7139 msgid "Usually, you will first need to do:" msgstr "" #. type: example #: doc/guix.texi:7142 #, no-wrap msgid "export NIX_REMOTE=daemon\n" msgstr "" #. type: table #: doc/guix.texi:7146 msgid "" "so that @command{nix-instantiate} does not try to open the Nix database." msgstr "" #. type: table #: doc/guix.texi:7150 msgid "" "As an example, the command below imports the package definition of " "LibreOffice (more precisely, it imports the definition of the package bound " "to the @code{libreoffice} top-level attribute):" msgstr "" #. type: example #: doc/guix.texi:7153 #, no-wrap msgid "guix import nix ~/path/to/nixpkgs libreoffice\n" msgstr "" #. type: item #: doc/guix.texi:7155 doc/guix.texi:7156 doc/guix.texi:7428 #, no-wrap msgid "hackage" msgstr "" #. type: table #: doc/guix.texi:7161 msgid "" "Import metadata from the Haskell community's central package archive " "@uref{https://hackage.haskell.org/, Hackage}. Information is taken from " "Cabal files and includes all the relevant information, including package " "dependencies." msgstr "" #. type: item #: doc/guix.texi:7165 #, no-wrap msgid "--stdin" msgstr "" #. type: itemx #: doc/guix.texi:7166 #, no-wrap msgid "-s" msgstr "" #. type: table #: doc/guix.texi:7168 msgid "Read a Cabal file from standard input." msgstr "" #. type: item #: doc/guix.texi:7168 doc/guix.texi:7215 #, no-wrap msgid "--no-test-dependencies" msgstr "" #. type: itemx #: doc/guix.texi:7169 doc/guix.texi:7216 #, no-wrap msgid "-t" msgstr "" #. type: table #: doc/guix.texi:7171 doc/guix.texi:7218 msgid "Do not include dependencies required only by the test suites." msgstr "" #. type: item #: doc/guix.texi:7171 #, no-wrap msgid "--cabal-environment=@var{alist}" msgstr "" #. type: itemx #: doc/guix.texi:7172 #, no-wrap msgid "-e @var{alist}" msgstr "" #. type: table #: doc/guix.texi:7181 msgid "" "@var{alist} is a Scheme alist defining the environment in which the Cabal " "conditionals are evaluated. The accepted keys are: @code{os}, @code{arch}, " "@code{impl} and a string representing the name of a flag. The value " "associated with a flag has to be either the symbol @code{true} or " "@code{false}. The value associated with other keys has to conform to the " "Cabal file format definition. The default value associated with the keys " "@code{os}, @code{arch} and @code{impl} is @samp{linux}, @samp{x86_64} and " "@samp{ghc}, respectively." msgstr "" #. type: table #: doc/guix.texi:7191 msgid "" "The command below imports metadata for the latest version of the @code{HTTP} " "Haskell package without including test dependencies and specifying the value " "of the flag @samp{network-uri} as @code{false}:" msgstr "" #. type: example #: doc/guix.texi:7194 #, no-wrap msgid "guix import hackage -t -e \"'((\\\"network-uri\\\" . false))\" HTTP\n" msgstr "" #. type: table #: doc/guix.texi:7198 msgid "" "A specific package version may optionally be specified by following the " "package name by an at-sign and a version number as in the following example:" msgstr "" #. type: example #: doc/guix.texi:7201 #, no-wrap msgid "guix import hackage mtl@@2.1.3.1\n" msgstr "" #. type: item #: doc/guix.texi:7203 doc/guix.texi:7204 doc/guix.texi:7430 #, no-wrap msgid "stackage" msgstr "" #. type: table #: doc/guix.texi:7211 msgid "" "The @code{stackage} importer is a wrapper around the @code{hackage} one. It " "takes a package name, looks up the package version included in a long-term " "support (LTS) @uref{https://www.stackage.org, Stackage} release and uses the " "@code{hackage} importer to retrieve its metadata. Note that it is up to you " "to select an LTS release compatible with the GHC compiler used by Guix." msgstr "" #. type: item #: doc/guix.texi:7218 #, no-wrap msgid "--lts-version=@var{version}" msgstr "" #. type: itemx #: doc/guix.texi:7219 #, no-wrap msgid "-l @var{version}" msgstr "" #. type: table #: doc/guix.texi:7222 msgid "" "@var{version} is the desired LTS release version. If omitted the latest " "release is used." msgstr "" #. type: table #: doc/guix.texi:7231 msgid "" "The command below imports metadata for the @code{HTTP} Haskell package " "included in the LTS Stackage release version 7.18:" msgstr "" #. type: example #: doc/guix.texi:7234 #, no-wrap msgid "guix import stackage --lts-version=7.18 HTTP\n" msgstr "" #. type: item #: doc/guix.texi:7236 doc/guix.texi:7237 doc/guix.texi:7414 #, no-wrap msgid "elpa" msgstr "" #. type: table #: doc/guix.texi:7240 msgid "" "Import metadata from an Emacs Lisp Package Archive (ELPA) package repository " "(@pxref{Packages,,, emacs, The GNU Emacs Manual})." msgstr "" #. type: item #: doc/guix.texi:7244 #, no-wrap msgid "--archive=@var{repo}" msgstr "" #. type: itemx #: doc/guix.texi:7245 #, no-wrap msgid "-a @var{repo}" msgstr "" #. type: table #: doc/guix.texi:7249 msgid "" "@var{repo} identifies the archive repository from which to retrieve the " "information. Currently the supported repositories and their identifiers are:" msgstr "" #. type: itemize #: doc/guix.texi:7253 msgid "" "@uref{http://elpa.gnu.org/packages, GNU}, selected by the @code{gnu} " "identifier. This is the default." msgstr "" #. type: itemize #: doc/guix.texi:7259 msgid "" "Packages from @code{elpa.gnu.org} are signed with one of the keys contained " "in the GnuPG keyring at @file{share/emacs/25.1/etc/package-keyring.gpg} (or " "similar) in the @code{emacs} package (@pxref{Package Installation, ELPA " "package signatures,, emacs, The GNU Emacs Manual})." msgstr "" #. type: itemize #: doc/guix.texi:7263 msgid "" "@uref{http://stable.melpa.org/packages, MELPA-Stable}, selected by the " "@code{melpa-stable} identifier." msgstr "" #. type: itemize #: doc/guix.texi:7267 msgid "" "@uref{http://melpa.org/packages, MELPA}, selected by the @code{melpa} " "identifier." msgstr "" #. type: item #: doc/guix.texi:7276 doc/guix.texi:7277 doc/guix.texi:7432 #, no-wrap msgid "crate" msgstr "" #. type: table #: doc/guix.texi:7280 msgid "" "Import metadata from the crates.io Rust package repository @uref{https://" "crates.io, crates.io}." msgstr "" #. type: item #: doc/guix.texi:7281 #, no-wrap msgid "opam" msgstr "" #. type: cindex #: doc/guix.texi:7282 #, no-wrap msgid "OPAM" msgstr "" #. type: cindex #: doc/guix.texi:7283 #, no-wrap msgid "OCaml" msgstr "" #. type: table #: doc/guix.texi:7286 msgid "" "Import metadata from the @uref{https://opam.ocaml.org/, OPAM} package " "repository used by the OCaml community." msgstr "" #. type: Plain text #: doc/guix.texi:7291 msgid "" "The structure of the @command{guix import} code is modular. It would be " "useful to have more importers for other package formats, and your help is " "welcome here (@pxref{Contributing})." msgstr "" #. type: section #: doc/guix.texi:7293 #, no-wrap msgid "Invoking @command{guix refresh}" msgstr "" #. type: command{#1} #: doc/guix.texi:7295 #, no-wrap msgid "guix refresh" msgstr "" #. type: Plain text #: doc/guix.texi:7300 msgid "" "The primary audience of the @command{guix refresh} command is developers of " "the GNU software distribution. By default, it reports any packages provided " "by the distribution that are outdated compared to the latest upstream " "version, like this:" msgstr "" #. type: example #: doc/guix.texi:7305 #, no-wrap msgid "" "$ guix refresh\n" "gnu/packages/gettext.scm:29:13: gettext would be upgraded from 0.18.1.1 to 0.18.2.1\n" "gnu/packages/glib.scm:77:12: glib would be upgraded from 2.34.3 to 2.37.0\n" msgstr "" #. type: Plain text #: doc/guix.texi:7309 msgid "" "Alternately, one can specify packages to consider, in which case a warning " "is emitted for packages that lack an updater:" msgstr "" #. type: example #: doc/guix.texi:7314 #, no-wrap msgid "" "$ guix refresh coreutils guile guile-ssh\n" "gnu/packages/ssh.scm:205:2: warning: no updater for guile-ssh\n" "gnu/packages/guile.scm:136:12: guile would be upgraded from 2.0.12 to 2.0.13\n" msgstr "" #. type: Plain text #: doc/guix.texi:7323 msgid "" "@command{guix refresh} browses the upstream repository of each package and " "determines the highest version number of the releases therein. The command " "knows how to update specific types of packages: GNU packages, ELPA packages, " "etc.---see the documentation for @option{--type} below. There are many " "packages, though, for which it lacks a method to determine whether a new " "upstream release is available. However, the mechanism is extensible, so " "feel free to get in touch with us to add a new method!" msgstr "" #. type: Plain text #: doc/guix.texi:7328 msgid "" "Sometimes the upstream name differs from the package name used in Guix, and " "@command{guix refresh} needs a little help. Most updaters honor the " "@code{upstream-name} property in package definitions, which can be used to " "that effect:" msgstr "" #. type: example #: doc/guix.texi:7335 #, no-wrap msgid "" "(define-public network-manager\n" " (package\n" " (name \"network-manager\")\n" " ;; @dots{}\n" " (properties '((upstream-name . \"NetworkManager\")))))\n" msgstr "" #. type: Plain text #: doc/guix.texi:7347 msgid "" "When passed @code{--update}, it modifies distribution source files to update " "the version numbers and source tarball hashes of those package recipes " "(@pxref{Defining Packages}). This is achieved by downloading each package's " "latest source tarball and its associated OpenPGP signature, authenticating " "the downloaded tarball against its signature using @command{gpg}, and " "finally computing its hash. When the public key used to sign the tarball is " "missing from the user's keyring, an attempt is made to automatically " "retrieve it from a public key server; when this is successful, the key is " "added to the user's keyring; otherwise, @command{guix refresh} reports an " "error." msgstr "" #. type: Plain text #: doc/guix.texi:7349 msgid "The following options are supported:" msgstr "" #. type: table #: doc/guix.texi:7357 doc/guix.texi:7974 msgid "This is useful to precisely refer to a package, as in this example:" msgstr "" #. type: example #: doc/guix.texi:7360 #, no-wrap msgid "guix refresh -l -e '(@@@@ (gnu packages commencement) glibc-final)'\n" msgstr "" #. type: table #: doc/guix.texi:7364 msgid "" "This command lists the dependents of the ``final'' libc (essentially all the " "packages.)" msgstr "" #. type: item #: doc/guix.texi:7365 #, no-wrap msgid "--update" msgstr "" #. type: itemx #: doc/guix.texi:7366 #, no-wrap msgid "-u" msgstr "" #. type: table #: doc/guix.texi:7370 msgid "" "Update distribution source files (package recipes) in place. This is " "usually run from a checkout of the Guix source tree (@pxref{Running Guix " "Before It Is Installed}):" msgstr "" #. type: example #: doc/guix.texi:7373 #, no-wrap msgid "$ ./pre-inst-env guix refresh -s non-core -u\n" msgstr "" #. type: table #: doc/guix.texi:7376 msgid "@xref{Defining Packages}, for more information on package definitions." msgstr "" #. type: item #: doc/guix.texi:7377 #, no-wrap msgid "--select=[@var{subset}]" msgstr "" #. type: itemx #: doc/guix.texi:7378 #, no-wrap msgid "-s @var{subset}" msgstr "" #. type: table #: doc/guix.texi:7381 msgid "" "Select all the packages in @var{subset}, one of @code{core} or @code{non-" "core}." msgstr "" #. type: table #: doc/guix.texi:7388 msgid "" "The @code{core} subset refers to all the packages at the core of the " "distribution---i.e., packages that are used to build ``everything else''. " "This includes GCC, libc, Binutils, Bash, etc. Usually, changing one of " "these packages in the distribution entails a rebuild of all the others. " "Thus, such updates are an inconvenience to users in terms of build time or " "bandwidth used to achieve the upgrade." msgstr "" #. type: table #: doc/guix.texi:7392 msgid "" "The @code{non-core} subset refers to the remaining packages. It is " "typically useful in cases where an update of the core packages would be " "inconvenient." msgstr "" #. type: table #: doc/guix.texi:7397 msgid "" "Select all the packages from the manifest in @var{file}. This is useful to " "check if any packages of the user manifest can be updated." msgstr "" #. type: item #: doc/guix.texi:7398 #, no-wrap msgid "--type=@var{updater}" msgstr "" #. type: itemx #: doc/guix.texi:7399 #, no-wrap msgid "-t @var{updater}" msgstr "" #. type: table #: doc/guix.texi:7402 msgid "" "Select only packages handled by @var{updater} (may be a comma-separated list " "of updaters). Currently, @var{updater} may be one of:" msgstr "" #. type: table #: doc/guix.texi:7406 msgid "the updater for GNU packages;" msgstr "" #. type: item #: doc/guix.texi:7406 #, no-wrap msgid "gnome" msgstr "" #. type: table #: doc/guix.texi:7408 msgid "the updater for GNOME packages;" msgstr "" #. type: item #: doc/guix.texi:7408 #, no-wrap msgid "kde" msgstr "" #. type: table #: doc/guix.texi:7410 msgid "the updater for KDE packages;" msgstr "" #. type: item #: doc/guix.texi:7410 #, no-wrap msgid "xorg" msgstr "" #. type: table #: doc/guix.texi:7412 msgid "the updater for X.org packages;" msgstr "" #. type: item #: doc/guix.texi:7412 #, no-wrap msgid "kernel.org" msgstr "" #. type: table #: doc/guix.texi:7414 msgid "the updater for packages hosted on kernel.org;" msgstr "" #. type: table #: doc/guix.texi:7416 msgid "the updater for @uref{http://elpa.gnu.org/, ELPA} packages;" msgstr "" #. type: table #: doc/guix.texi:7418 msgid "the updater for @uref{https://cran.r-project.org/, CRAN} packages;" msgstr "" #. type: item #: doc/guix.texi:7418 #, no-wrap msgid "bioconductor" msgstr "" #. type: table #: doc/guix.texi:7420 msgid "" "the updater for @uref{https://www.bioconductor.org/, Bioconductor} R " "packages;" msgstr "" #. type: table #: doc/guix.texi:7422 msgid "the updater for @uref{http://www.cpan.org/, CPAN} packages;" msgstr "" #. type: table #: doc/guix.texi:7424 msgid "the updater for @uref{https://pypi.python.org, PyPI} packages." msgstr "" #. type: table #: doc/guix.texi:7426 msgid "the updater for @uref{https://rubygems.org, RubyGems} packages." msgstr "" #. type: item #: doc/guix.texi:7426 #, no-wrap msgid "github" msgstr "" #. type: table #: doc/guix.texi:7428 msgid "the updater for @uref{https://github.com, GitHub} packages." msgstr "" #. type: table #: doc/guix.texi:7430 msgid "the updater for @uref{https://hackage.haskell.org, Hackage} packages." msgstr "" #. type: table #: doc/guix.texi:7432 msgid "the updater for @uref{https://www.stackage.org, Stackage} packages." msgstr "" #. type: table #: doc/guix.texi:7434 msgid "the updater for @uref{https://crates.io, Crates} packages." msgstr "" #. type: table #: doc/guix.texi:7438 msgid "" "For instance, the following command only checks for updates of Emacs " "packages hosted at @code{elpa.gnu.org} and for updates of CRAN packages:" msgstr "" #. type: example #: doc/guix.texi:7443 #, no-wrap msgid "" "$ guix refresh --type=elpa,cran\n" "gnu/packages/statistics.scm:819:13: r-testthat would be upgraded from 0.10.0 to 0.11.0\n" "gnu/packages/emacs.scm:856:13: emacs-auctex would be upgraded from 11.88.6 to 11.88.9\n" msgstr "" #. type: Plain text #: doc/guix.texi:7449 msgid "" "In addition, @command{guix refresh} can be passed one or more package names, " "as in this example:" msgstr "" #. type: example #: doc/guix.texi:7452 #, no-wrap msgid "$ ./pre-inst-env guix refresh -u emacs idutils gcc@@4.8\n" msgstr "" #. type: Plain text #: doc/guix.texi:7458 msgid "" "The command above specifically updates the @code{emacs} and @code{idutils} " "packages. The @code{--select} option would have no effect in this case." msgstr "" #. type: Plain text #: doc/guix.texi:7463 msgid "" "When considering whether to upgrade a package, it is sometimes convenient to " "know which packages would be affected by the upgrade and should be checked " "for compatibility. For this the following option may be used when passing " "@command{guix refresh} one or more package names:" msgstr "" #. type: item #: doc/guix.texi:7466 #, no-wrap msgid "--list-updaters" msgstr "" #. type: itemx #: doc/guix.texi:7467 #, no-wrap msgid "-L" msgstr "" #. type: table #: doc/guix.texi:7469 msgid "List available updaters and exit (see @option{--type} above.)" msgstr "" #. type: table #: doc/guix.texi:7472 msgid "" "For each updater, display the fraction of packages it covers; at the end, " "display the fraction of packages covered by all these updaters." msgstr "" #. type: item #: doc/guix.texi:7473 #, no-wrap msgid "--list-dependent" msgstr "" #. type: itemx #: doc/guix.texi:7474 doc/guix.texi:7667 #, no-wrap msgid "-l" msgstr "" #. type: table #: doc/guix.texi:7477 msgid "" "List top-level dependent packages that would need to be rebuilt as a result " "of upgrading one or more packages." msgstr "" #. type: table #: doc/guix.texi:7481 msgid "" "@xref{Invoking guix graph, the @code{reverse-package} type of @command{guix " "graph}}, for information on how to visualize the list of dependents of a " "package." msgstr "" #. type: Plain text #: doc/guix.texi:7487 msgid "" "Be aware that the @code{--list-dependent} option only @emph{approximates} " "the rebuilds that would be required as a result of an upgrade. More " "rebuilds might be required under some circumstances." msgstr "" #. type: example #: doc/guix.texi:7492 #, no-wrap msgid "" "$ guix refresh --list-dependent flex\n" "Building the following 120 packages would ensure 213 dependent packages are rebuilt:\n" "hop@@2.4.0 geiser@@0.4 notmuch@@0.18 mu@@0.9.9.5 cflow@@1.4 idutils@@4.6 @dots{}\n" msgstr "" #. type: Plain text #: doc/guix.texi:7496 msgid "" "The command above lists a set of packages that could be built to check for " "compatibility with an upgraded @code{flex} package." msgstr "" #. type: Plain text #: doc/guix.texi:7498 msgid "The following options can be used to customize GnuPG operation:" msgstr "" #. type: item #: doc/guix.texi:7501 #, no-wrap msgid "--gpg=@var{command}" msgstr "" #. type: table #: doc/guix.texi:7504 msgid "" "Use @var{command} as the GnuPG 2.x command. @var{command} is searched for " "in @code{$PATH}." msgstr "" #. type: item #: doc/guix.texi:7505 #, no-wrap msgid "--keyring=@var{file}" msgstr "" #. type: table #: doc/guix.texi:7511 msgid "" "Use @var{file} as the keyring for upstream keys. @var{file} must be in the " "@dfn{keybox format}. Keybox files usually have a name ending in @file{.kbx} " "and the GNU@tie{}Privacy Guard (GPG) can manipulate these files " "(@pxref{kbxutil, @command{kbxutil},, gnupg, Using the GNU Privacy Guard}, " "for information on a tool to manipulate keybox files)." msgstr "" #. type: table #: doc/guix.texi:7517 msgid "" "When this option is omitted, @command{guix refresh} uses @file{~/.config/" "guix/upstream/trustedkeys.kbx} as the keyring for upstream signing keys. " "OpenPGP signatures are checked against keys from this keyring; missing keys " "are downloaded to this keyring as well (see @option{--key-download} below.)" msgstr "" #. type: table #: doc/guix.texi:7520 msgid "" "You can export keys from your default GPG keyring into a keybox file using " "commands like this one:" msgstr "" #. type: example #: doc/guix.texi:7523 #, no-wrap msgid "gpg --export rms@@gnu.org | kbxutil --import-openpgp >> mykeyring.kbx\n" msgstr "" #. type: table #: doc/guix.texi:7526 msgid "Likewise, you can fetch keys to a specific keybox file like this:" msgstr "" #. type: example #: doc/guix.texi:7530 #, no-wrap msgid "" "gpg --no-default-keyring --keyring mykeyring.kbx \\\n" " --recv-keys @value{OPENPGP-SIGNING-KEY-ID}\n" msgstr "" #. type: table #: doc/guix.texi:7534 msgid "" "@ref{GPG Configuration Options, @option{--keyring},, gnupg, Using the GNU " "Privacy Guard}, for more information on GPG's @option{--keyring} option." msgstr "" #. type: table #: doc/guix.texi:7538 msgid "" "Handle missing OpenPGP keys according to @var{policy}, which may be one of:" msgstr "" #. type: item #: doc/guix.texi:7540 doc/guix.texi:15086 #, no-wrap msgid "always" msgstr "" #. type: table #: doc/guix.texi:7543 msgid "" "Always download missing OpenPGP keys from the key server, and add them to " "the user's GnuPG keyring." msgstr "" #. type: item #: doc/guix.texi:7544 doc/guix.texi:15088 #, no-wrap msgid "never" msgstr "" #. type: table #: doc/guix.texi:7546 msgid "Never try to download missing OpenPGP keys. Instead just bail out." msgstr "" #. type: item #: doc/guix.texi:7547 #, no-wrap msgid "interactive" msgstr "" #. type: table #: doc/guix.texi:7550 msgid "" "When a package signed with an unknown OpenPGP key is encountered, ask the " "user whether to download it or not. This is the default behavior." msgstr "" #. type: item #: doc/guix.texi:7552 #, no-wrap msgid "--key-server=@var{host}" msgstr "" #. type: table #: doc/guix.texi:7554 msgid "Use @var{host} as the OpenPGP key server when importing a public key." msgstr "" #. type: Plain text #: doc/guix.texi:7567 msgid "" "The @code{github} updater uses the @uref{https://developer.github.com/v3/, " "GitHub API} to query for new releases. When used repeatedly e.g. when " "refreshing all packages, GitHub will eventually refuse to answer any further " "API requests. By default 60 API requests per hour are allowed, and a full " "refresh on all GitHub packages in Guix requires more than this. " "Authentication with GitHub through the use of an API token alleviates these " "limits. To use an API token, set the environment variable " "@code{GUIX_GITHUB_TOKEN} to a token procured from @uref{https://github.com/" "settings/tokens} or otherwise." msgstr "" #. type: section #: doc/guix.texi:7570 #, no-wrap msgid "Invoking @command{guix lint}" msgstr "" #. type: command{#1} #: doc/guix.texi:7572 #, no-wrap msgid "guix lint" msgstr "" #. type: cindex #: doc/guix.texi:7573 #, no-wrap msgid "package, checking for errors" msgstr "" #. type: Plain text #: doc/guix.texi:7579 msgid "" "The @command{guix lint} command is meant to help package developers avoid " "common errors and use a consistent style. It runs a number of checks on a " "given set of packages in order to find common mistakes in their " "definitions. Available @dfn{checkers} include (see @code{--list-checkers} " "for a complete list):" msgstr "" #. type: table #: doc/guix.texi:7585 msgid "" "Validate certain typographical and stylistic rules about package " "descriptions and synopses." msgstr "" #. type: item #: doc/guix.texi:7586 #, no-wrap msgid "inputs-should-be-native" msgstr "" #. type: table #: doc/guix.texi:7588 msgid "Identify inputs that should most likely be native inputs." msgstr "" #. type: itemx #: doc/guix.texi:7591 #, no-wrap msgid "mirror-url" msgstr "" #. type: itemx #: doc/guix.texi:7592 #, no-wrap msgid "source-file-name" msgstr "" #. type: table #: doc/guix.texi:7598 msgid "" "Probe @code{home-page} and @code{source} URLs and report those that are " "invalid. Suggest a @code{mirror://} URL when applicable. Check that the " "source file name is meaningful, e.g. is not just a version number or ``git-" "checkout'', without a declared @code{file-name} (@pxref{origin Reference})." msgstr "" #. type: item #: doc/guix.texi:7599 #, no-wrap msgid "cve" msgstr "" #. type: cindex #: doc/guix.texi:7600 doc/guix.texi:23486 #, no-wrap msgid "security vulnerabilities" msgstr "" #. type: cindex #: doc/guix.texi:7601 #, no-wrap msgid "CVE, Common Vulnerabilities and Exposures" msgstr "" #. type: table #: doc/guix.texi:7606 msgid "" "Report known vulnerabilities found in the Common Vulnerabilities and " "Exposures (CVE) databases of the current and past year @uref{https://nvd." "nist.gov/download.cfm#CVE_FEED, published by the US NIST}." msgstr "" #. type: table #: doc/guix.texi:7608 msgid "" "To view information about a particular vulnerability, visit pages such as:" msgstr "" #. type: indicateurl{#1} #: doc/guix.texi:7612 msgid "https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-YYYY-ABCD" msgstr "" #. type: indicateurl{#1} #: doc/guix.texi:7614 msgid "https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-YYYY-ABCD" msgstr "" #. type: table #: doc/guix.texi:7619 msgid "" "where @code{CVE-YYYY-ABCD} is the CVE identifier---e.g., " "@code{CVE-2015-7554}." msgstr "" #. type: table #: doc/guix.texi:7624 msgid "" "Package developers can specify in package recipes the @uref{https://nvd.nist." "gov/cpe.cfm,Common Platform Enumeration (CPE)} name and version of the " "package when they differ from the name or version that Guix uses, as in this " "example:" msgstr "" #. type: example #: doc/guix.texi:7632 #, no-wrap msgid "" "(package\n" " (name \"grub\")\n" " ;; @dots{}\n" " ;; CPE calls this package \"grub2\".\n" " (properties '((cpe-name . \"grub2\")\n" " (cpe-version . \"2.3\")))\n" msgstr "" #. type: table #: doc/guix.texi:7639 msgid "" "Some entries in the CVE database do not specify which version of a package " "they apply to, and would thus ``stick around'' forever. Package developers " "who found CVE alerts and verified they can be ignored can declare them as in " "this example:" msgstr "" #. type: example #: doc/guix.texi:7649 #, no-wrap msgid "" "(package\n" " (name \"t1lib\")\n" " ;; @dots{}\n" " ;; These CVEs no longer apply and can be safely ignored.\n" " (properties `((lint-hidden-cve . (\"CVE-2011-0433\"\n" " \"CVE-2011-1553\"\n" " \"CVE-2011-1554\"\n" " \"CVE-2011-5244\")))))\n" msgstr "" #. type: item #: doc/guix.texi:7651 #, no-wrap msgid "formatting" msgstr "" #. type: table #: doc/guix.texi:7654 msgid "" "Warn about obvious source code formatting issues: trailing white space, use " "of tabulations, etc." msgstr "" #. type: example #: doc/guix.texi:7660 #, no-wrap msgid "guix lint @var{options} @var{package}@dots{}\n" msgstr "" #. type: Plain text #: doc/guix.texi:7664 msgid "" "If no package is given on the command line, then all packages are checked. " "The @var{options} may be zero or more of the following:" msgstr "" #. type: item #: doc/guix.texi:7666 #, no-wrap msgid "--list-checkers" msgstr "" #. type: table #: doc/guix.texi:7670 msgid "" "List and describe all the available checkers that will be run on packages " "and exit." msgstr "" #. type: item #: doc/guix.texi:7671 #, no-wrap msgid "--checkers" msgstr "" #. type: itemx #: doc/guix.texi:7672 #, no-wrap msgid "-c" msgstr "" #. type: table #: doc/guix.texi:7675 msgid "" "Only enable the checkers specified in a comma-separated list using the names " "returned by @code{--list-checkers}." msgstr "" #. type: section #: doc/guix.texi:7679 #, no-wrap msgid "Invoking @command{guix size}" msgstr "" #. type: cindex #: doc/guix.texi:7681 #, no-wrap msgid "size" msgstr "" #. type: cindex #: doc/guix.texi:7682 #, no-wrap msgid "package size" msgstr "" #. type: command{#1} #: doc/guix.texi:7684 #, no-wrap msgid "guix size" msgstr "" #. type: Plain text #: doc/guix.texi:7691 msgid "" "The @command{guix size} command helps package developers profile the disk " "usage of packages. It is easy to overlook the impact of an additional " "dependency added to a package, or the impact of using a single output for a " "package that could easily be split (@pxref{Packages with Multiple " "Outputs}). Such are the typical issues that @command{guix size} can " "highlight." msgstr "" #. type: Plain text #: doc/guix.texi:7696 msgid "" "The command can be passed one or more package specifications such as " "@code{gcc@@4.8} or @code{guile:debug}, or a file name in the store. " "Consider this example:" msgstr "" #. type: example #: doc/guix.texi:7709 #, no-wrap msgid "" "$ guix size coreutils\n" "store item total self\n" "/gnu/store/@dots{}-gcc-5.5.0-lib 60.4 30.1 38.1%\n" "/gnu/store/@dots{}-glibc-2.27 30.3 28.8 36.6%\n" "/gnu/store/@dots{}-coreutils-8.28 78.9 15.0 19.0%\n" "/gnu/store/@dots{}-gmp-6.1.2 63.1 2.7 3.4%\n" "/gnu/store/@dots{}-bash-static-4.4.12 1.5 1.5 1.9%\n" "/gnu/store/@dots{}-acl-2.2.52 61.1 0.4 0.5%\n" "/gnu/store/@dots{}-attr-2.4.47 60.6 0.2 0.3%\n" "/gnu/store/@dots{}-libcap-2.25 60.5 0.2 0.2%\n" "total: 78.9 MiB\n" msgstr "" #. type: Plain text #: doc/guix.texi:7715 msgid "" "The store items listed here constitute the @dfn{transitive closure} of " "Coreutils---i.e., Coreutils and all its dependencies, recursively---as would " "be returned by:" msgstr "" #. type: example #: doc/guix.texi:7718 #, no-wrap msgid "$ guix gc -R /gnu/store/@dots{}-coreutils-8.23\n" msgstr "" #. type: Plain text #: doc/guix.texi:7726 msgid "" "Here the output shows three columns next to store items. The first column, " "labeled ``total'', shows the size in mebibytes (MiB) of the closure of the " "store item---that is, its own size plus the size of all its dependencies. " "The next column, labeled ``self'', shows the size of the item itself. The " "last column shows the ratio of the size of the item itself to the space " "occupied by all the items listed here." msgstr "" #. type: Plain text #: doc/guix.texi:7732 msgid "" "In this example, we see that the closure of Coreutils weighs in at 79@tie{}" "MiB, most of which is taken by libc and GCC's run-time support libraries. " "(That libc and GCC's libraries represent a large fraction of the closure is " "not a problem @i{per se} because they are always available on the system " "anyway.)" msgstr "" #. type: Plain text #: doc/guix.texi:7741 msgid "" "When the package(s) passed to @command{guix size} are available in the " "store@footnote{More precisely, @command{guix size} looks for the " "@emph{ungrafted} variant of the given package(s), as returned by @code{guix " "build @var{package} --no-grafts}. @xref{Security Updates}, for information " "on grafts.}, @command{guix size} queries the daemon to determine its " "dependencies, and measures its size in the store, similar to @command{du -ms " "--apparent-size} (@pxref{du invocation,,, coreutils, GNU Coreutils})." msgstr "" #. type: Plain text #: doc/guix.texi:7746 msgid "" "When the given packages are @emph{not} in the store, @command{guix size} " "reports information based on the available substitutes " "(@pxref{Substitutes}). This makes it possible it to profile disk usage of " "store items that are not even on disk, only available remotely." msgstr "" #. type: Plain text #: doc/guix.texi:7748 msgid "You can also specify several package names:" msgstr "" #. type: example #: doc/guix.texi:7758 #, no-wrap msgid "" "$ guix size coreutils grep sed bash\n" "store item total self\n" "/gnu/store/@dots{}-coreutils-8.24 77.8 13.8 13.4%\n" "/gnu/store/@dots{}-grep-2.22 73.1 0.8 0.8%\n" "/gnu/store/@dots{}-bash-4.3.42 72.3 4.7 4.6%\n" "/gnu/store/@dots{}-readline-6.3 67.6 1.2 1.2%\n" "@dots{}\n" "total: 102.3 MiB\n" msgstr "" #. type: Plain text #: doc/guix.texi:7764 msgid "" "In this example we see that the combination of the four packages takes " "102.3@tie{}MiB in total, which is much less than the sum of each closure " "since they have a lot of dependencies in common." msgstr "" #. type: Plain text #: doc/guix.texi:7766 msgid "The available options are:" msgstr "" #. type: table #: doc/guix.texi:7772 msgid "" "Use substitute information from @var{urls}. @xref{client-substitute-urls, " "the same option for @code{guix build}}." msgstr "" #. type: item #: doc/guix.texi:7773 #, no-wrap msgid "--sort=@var{key}" msgstr "" #. type: table #: doc/guix.texi:7775 msgid "Sort lines according to @var{key}, one of the following options:" msgstr "" #. type: item #: doc/guix.texi:7777 #, no-wrap msgid "self" msgstr "" #. type: table #: doc/guix.texi:7779 msgid "the size of each item (the default);" msgstr "" #. type: table #: doc/guix.texi:7781 msgid "the total size of the item's closure." msgstr "" #. type: item #: doc/guix.texi:7783 #, no-wrap msgid "--map-file=@var{file}" msgstr "" #. type: table #: doc/guix.texi:7785 msgid "Write a graphical map of disk usage in PNG format to @var{file}." msgstr "" #. type: table #: doc/guix.texi:7787 msgid "For the example above, the map looks like this:" msgstr "" #. type: table #: doc/guix.texi:7790 msgid "" "@image{images/coreutils-size-map,5in,, map of Coreutils disk usage produced " "by @command{guix size}}" msgstr "" #. type: table #: doc/guix.texi:7795 msgid "" "This option requires that @uref{http://wingolog.org/software/guile-" "charting/, Guile-Charting} be installed and visible in Guile's module search " "path. When that is not the case, @command{guix size} fails as it tries to " "load it." msgstr "" #. type: table #: doc/guix.texi:7799 msgid "Consider packages for @var{system}---e.g., @code{x86_64-linux}." msgstr "" #. type: section #: doc/guix.texi:7803 #, no-wrap msgid "Invoking @command{guix graph}" msgstr "" #. type: cindex #: doc/guix.texi:7805 #, no-wrap msgid "DAG" msgstr "" #. type: command{#1} #: doc/guix.texi:7806 #, no-wrap msgid "guix graph" msgstr "" #. type: Plain text #: doc/guix.texi:7820 msgid "" "Packages and their dependencies form a @dfn{graph}, specifically a directed " "acyclic graph (DAG). It can quickly become difficult to have a mental model " "of the package DAG, so the @command{guix graph} command provides a visual " "representation of the DAG. By default, @command{guix graph} emits a DAG " "representation in the input format of @uref{http://www.graphviz.org/, " "Graphviz}, so its output can be passed directly to the @command{dot} command " "of Graphviz. It can also emit an HTML page with embedded JavaScript code to " "display a ``chord diagram'' in a Web browser, using the @uref{https://d3js." "org/, d3.js} library, or emit Cypher queries to construct a graph in a graph " "database supporting the @uref{http://www.opencypher.org/, openCypher} query " "language. The general syntax is:" msgstr "" #. type: example #: doc/guix.texi:7823 #, no-wrap msgid "guix graph @var{options} @var{package}@dots{}\n" msgstr "" #. type: Plain text #: doc/guix.texi:7828 msgid "" "For example, the following command generates a PDF file representing the " "package DAG for the GNU@tie{}Core Utilities, showing its build-time " "dependencies:" msgstr "" #. type: example #: doc/guix.texi:7831 #, no-wrap msgid "guix graph coreutils | dot -Tpdf > dag.pdf\n" msgstr "" #. type: Plain text #: doc/guix.texi:7834 msgid "The output looks like this:" msgstr "" #. type: Plain text #: doc/guix.texi:7836 msgid "" "@image{images/coreutils-graph,2in,,Dependency graph of the GNU Coreutils}" msgstr "" #. type: Plain text #: doc/guix.texi:7838 msgid "Nice little graph, no?" msgstr "" #. type: Plain text #: doc/guix.texi:7844 msgid "" "But there is more than one graph! The one above is concise: it is the graph " "of package objects, omitting implicit inputs such as GCC, libc, grep, etc. " "It is often useful to have such a concise graph, but sometimes one may want " "to see more details. @command{guix graph} supports several types of graphs, " "allowing you to choose the level of detail:" msgstr "" #. type: table #: doc/guix.texi:7850 msgid "" "This is the default type used in the example above. It shows the DAG of " "package objects, excluding implicit dependencies. It is concise, but " "filters out many details." msgstr "" #. type: item #: doc/guix.texi:7851 #, no-wrap msgid "reverse-package" msgstr "" #. type: table #: doc/guix.texi:7853 msgid "This shows the @emph{reverse} DAG of packages. For example:" msgstr "" #. type: example #: doc/guix.texi:7856 #, no-wrap msgid "guix graph --type=reverse-package ocaml\n" msgstr "" #. type: table #: doc/guix.texi:7859 msgid "... yields the graph of packages that depend on OCaml." msgstr "" #. type: table #: doc/guix.texi:7864 msgid "" "Note that for core packages this can yield huge graphs. If all you want is " "to know the number of packages that depend on a given package, use " "@command{guix refresh --list-dependent} (@pxref{Invoking guix refresh, " "@option{--list-dependent}})." msgstr "" #. type: item #: doc/guix.texi:7865 #, no-wrap msgid "bag-emerged" msgstr "" #. type: table #: doc/guix.texi:7867 msgid "This is the package DAG, @emph{including} implicit inputs." msgstr "" #. type: table #: doc/guix.texi:7869 msgid "For instance, the following command:" msgstr "" #. type: example #: doc/guix.texi:7872 #, no-wrap msgid "guix graph --type=bag-emerged coreutils | dot -Tpdf > dag.pdf\n" msgstr "" #. type: table #: doc/guix.texi:7875 msgid "... yields this bigger graph:" msgstr "" #. type: table #: doc/guix.texi:7877 msgid "" "@image{images/coreutils-bag-graph,,5in,Detailed dependency graph of the GNU " "Coreutils}" msgstr "" #. type: table #: doc/guix.texi:7880 msgid "" "At the bottom of the graph, we see all the implicit inputs of @var{gnu-build-" "system} (@pxref{Build Systems, @code{gnu-build-system}})." msgstr "" #. type: table #: doc/guix.texi:7884 msgid "" "Now, note that the dependencies of these implicit inputs---that is, the " "@dfn{bootstrap dependencies} (@pxref{Bootstrapping})---are not shown here, " "for conciseness." msgstr "" #. type: item #: doc/guix.texi:7885 #, no-wrap msgid "bag" msgstr "" #. type: table #: doc/guix.texi:7888 msgid "" "Similar to @code{bag-emerged}, but this time including all the bootstrap " "dependencies." msgstr "" #. type: item #: doc/guix.texi:7889 #, no-wrap msgid "bag-with-origins" msgstr "" #. type: table #: doc/guix.texi:7891 msgid "Similar to @code{bag}, but also showing origins and their dependencies." msgstr "" #. type: table #: doc/guix.texi:7897 msgid "" "This is the most detailed representation: It shows the DAG of derivations " "(@pxref{Derivations}) and plain store items. Compared to the above " "representation, many additional nodes are visible, including build scripts, " "patches, Guile modules, etc." msgstr "" #. type: table #: doc/guix.texi:7900 msgid "" "For this type of graph, it is also possible to pass a @file{.drv} file name " "instead of a package name, as in:" msgstr "" #. type: example #: doc/guix.texi:7903 #, no-wrap msgid "guix graph -t derivation `guix system build -d my-config.scm`\n" msgstr "" #. type: item #: doc/guix.texi:7905 #, no-wrap msgid "module" msgstr "" #. type: table #: doc/guix.texi:7909 msgid "" "This is the graph of @dfn{package modules} (@pxref{Package Modules}). For " "example, the following command shows the graph for the package module that " "defines the @code{guile} package:" msgstr "" #. type: example #: doc/guix.texi:7912 #, no-wrap msgid "guix graph -t module guile | dot -Tpdf > module-graph.pdf\n" msgstr "" #. type: Plain text #: doc/guix.texi:7917 msgid "" "All the types above correspond to @emph{build-time dependencies}. The " "following graph type represents the @emph{run-time dependencies}:" msgstr "" #. type: item #: doc/guix.texi:7919 #, no-wrap msgid "references" msgstr "" #. type: table #: doc/guix.texi:7922 msgid "" "This is the graph of @dfn{references} of a package output, as returned by " "@command{guix gc --references} (@pxref{Invoking guix gc})." msgstr "" #. type: table #: doc/guix.texi:7925 msgid "" "If the given package output is not available in the store, @command{guix " "graph} attempts to obtain dependency information from substitutes." msgstr "" #. type: table #: doc/guix.texi:7929 msgid "" "Here you can also pass a store file name instead of a package name. For " "example, the command below produces the reference graph of your profile " "(which can be big!):" msgstr "" #. type: example #: doc/guix.texi:7932 #, no-wrap msgid "guix graph -t references `readlink -f ~/.guix-profile`\n" msgstr "" #. type: item #: doc/guix.texi:7934 #, no-wrap msgid "referrers" msgstr "" #. type: table #: doc/guix.texi:7937 msgid "" "This is the graph of the @dfn{referrers} of a store item, as returned by " "@command{guix gc --referrers} (@pxref{Invoking guix gc})." msgstr "" #. type: table #: doc/guix.texi:7943 msgid "" "This relies exclusively on local information from your store. For instance, " "let us suppose that the current Inkscape is available in 10 profiles on your " "machine; @command{guix graph -t referrers inkscape} will show a graph rooted " "at Inkscape and with those 10 profiles linked to it." msgstr "" #. type: table #: doc/guix.texi:7946 msgid "" "It can help determine what is preventing a store item from being garbage " "collected." msgstr "" #. type: Plain text #: doc/guix.texi:7950 msgid "The available options are the following:" msgstr "" #. type: table #: doc/guix.texi:7956 msgid "" "Produce a graph output of @var{type}, where @var{type} must be one of the " "values listed above." msgstr "" #. type: item #: doc/guix.texi:7957 #, no-wrap msgid "--list-types" msgstr "" #. type: table #: doc/guix.texi:7959 msgid "List the supported graph types." msgstr "" #. type: item #: doc/guix.texi:7960 #, no-wrap msgid "--backend=@var{backend}" msgstr "" #. type: itemx #: doc/guix.texi:7961 #, no-wrap msgid "-b @var{backend}" msgstr "" #. type: table #: doc/guix.texi:7963 msgid "Produce a graph using the selected @var{backend}." msgstr "" #. type: item #: doc/guix.texi:7964 #, no-wrap msgid "--list-backends" msgstr "" #. type: table #: doc/guix.texi:7966 msgid "List the supported graph backends." msgstr "" #. type: table #: doc/guix.texi:7968 msgid "Currently, the available backends are Graphviz and d3.js." msgstr "" #. type: example #: doc/guix.texi:7977 #, no-wrap msgid "guix graph -e '(@@@@ (gnu packages commencement) gnu-make-final)'\n" msgstr "" #. type: table #: doc/guix.texi:7982 msgid "Display the graph for @var{system}---e.g., @code{i686-linux}." msgstr "" #. type: table #: doc/guix.texi:7985 msgid "" "The package dependency graph is largely architecture-independent, but there " "are some architecture-dependent bits that this option allows you to " "visualize." msgstr "" #. type: section #: doc/guix.texi:7989 #, no-wrap msgid "Invoking @command{guix environment}" msgstr "" #. type: cindex #: doc/guix.texi:7991 #, no-wrap msgid "reproducible build environments" msgstr "" #. type: cindex #: doc/guix.texi:7992 #, no-wrap msgid "development environments" msgstr "" #. type: command{#1} #: doc/guix.texi:7993 #, no-wrap msgid "guix environment" msgstr "" #. type: cindex #: doc/guix.texi:7994 #, no-wrap msgid "environment, package build environment" msgstr "" #. type: Plain text #: doc/guix.texi:8000 msgid "" "The purpose of @command{guix environment} is to assist hackers in creating " "reproducible development environments without polluting their package " "profile. The @command{guix environment} tool takes one or more packages, " "builds all of their inputs, and creates a shell environment to use them." msgstr "" #. type: example #: doc/guix.texi:8005 #, no-wrap msgid "guix environment @var{options} @var{package}@dots{}\n" msgstr "" #. type: Plain text #: doc/guix.texi:8009 msgid "" "The following example spawns a new shell set up for the development of " "GNU@tie{}Guile:" msgstr "" #. type: example #: doc/guix.texi:8012 #, no-wrap msgid "guix environment guile\n" msgstr "" #. type: Plain text #: doc/guix.texi:8029 msgid "" "If the needed dependencies are not built yet, @command{guix environment} " "automatically builds them. The environment of the new shell is an augmented " "version of the environment that @command{guix environment} was run in. It " "contains the necessary search paths for building the given package added to " "the existing environment variables. To create a ``pure'' environment, in " "which the original environment variables have been unset, use the @code{--" "pure} option@footnote{Users sometimes wrongfully augment environment " "variables such as @code{PATH} in their @file{~/.bashrc} file. As a " "consequence, when @code{guix environment} launches it, Bash may read " "@file{~/.bashrc}, thereby introducing ``impurities'' in these environment " "variables. It is an error to define such environment variables in @file{." "bashrc}; instead, they should be defined in @file{.bash_profile}, which is " "sourced only by log-in shells. @xref{Bash Startup Files,,, bash, The GNU " "Bash Reference Manual}, for details on Bash start-up files.}." msgstr "" #. type: vindex #: doc/guix.texi:8030 #, no-wrap msgid "GUIX_ENVIRONMENT" msgstr "" #. type: Plain text #: doc/guix.texi:8036 msgid "" "@command{guix environment} defines the @code{GUIX_ENVIRONMENT} variable in " "the shell it spawns; its value is the file name of the profile of this " "environment. This allows users to, say, define a specific prompt for " "development environments in their @file{.bashrc} (@pxref{Bash Startup " "Files,,, bash, The GNU Bash Reference Manual}):" msgstr "" #. type: example #: doc/guix.texi:8042 #, no-wrap msgid "" "if [ -n \"$GUIX_ENVIRONMENT\" ]\n" "then\n" " export PS1=\"\\u@@\\h \\w [dev]\\$ \"\n" "fi\n" msgstr "" #. type: Plain text #: doc/guix.texi:8046 msgid "... or to browse the profile:" msgstr "" #. type: example #: doc/guix.texi:8049 #, no-wrap msgid "$ ls \"$GUIX_ENVIRONMENT/bin\"\n" msgstr "" #. type: Plain text #: doc/guix.texi:8055 msgid "" "Additionally, more than one package may be specified, in which case the " "union of the inputs for the given packages are used. For example, the " "command below spawns a shell where all of the dependencies of both Guile and " "Emacs are available:" msgstr "" #. type: example #: doc/guix.texi:8058 #, no-wrap msgid "guix environment guile emacs\n" msgstr "" #. type: Plain text #: doc/guix.texi:8063 msgid "" "Sometimes an interactive shell session is not desired. An arbitrary command " "may be invoked by placing the @code{--} token to separate the command from " "the rest of the arguments:" msgstr "" #. type: example #: doc/guix.texi:8066 #, no-wrap msgid "guix environment guile -- make -j4\n" msgstr "" #. type: Plain text #: doc/guix.texi:8072 msgid "" "In other situations, it is more convenient to specify the list of packages " "needed in the environment. For example, the following command runs " "@command{python} from an environment containing Python@tie{}2.7 and NumPy:" msgstr "" #. type: example #: doc/guix.texi:8075 #, no-wrap msgid "guix environment --ad-hoc python2-numpy python-2.7 -- python\n" msgstr "" #. type: Plain text #: doc/guix.texi:8086 msgid "" "Furthermore, one might want the dependencies of a package and also some " "additional packages that are not build-time or runtime dependencies, but are " "useful when developing nonetheless. Because of this, the @code{--ad-hoc} " "flag is positional. Packages appearing before @code{--ad-hoc} are " "interpreted as packages whose dependencies will be added to the " "environment. Packages appearing after are interpreted as packages that will " "be added to the environment directly. For example, the following command " "creates a Guix development environment that additionally includes Git and " "strace:" msgstr "" #. type: example #: doc/guix.texi:8089 #, no-wrap msgid "guix environment guix --ad-hoc git strace\n" msgstr "" #. type: Plain text #: doc/guix.texi:8098 msgid "" "Sometimes it is desirable to isolate the environment as much as possible, " "for maximal purity and reproducibility. In particular, when using Guix on a " "host distro that is not GuixSD, it is desirable to prevent access to @file{/" "usr/bin} and other system-wide resources from the development environment. " "For example, the following command spawns a Guile REPL in a ``container'' " "where only the store and the current working directory are mounted:" msgstr "" #. type: example #: doc/guix.texi:8101 #, no-wrap msgid "guix environment --ad-hoc --container guile -- guile\n" msgstr "" #. type: quotation #: doc/guix.texi:8105 msgid "The @code{--container} option requires Linux-libre 3.19 or newer." msgstr "" #. type: Plain text #: doc/guix.texi:8108 msgid "The available options are summarized below." msgstr "" #. type: cindex #: doc/guix.texi:8112 #, no-wrap msgid "persistent environment" msgstr "" #. type: cindex #: doc/guix.texi:8113 #, no-wrap msgid "garbage collector root, for environments" msgstr "" #. type: table #: doc/guix.texi:8116 msgid "" "Make @var{file} a symlink to the profile for this environment, and register " "it as a garbage collector root." msgstr "" #. type: table #: doc/guix.texi:8119 msgid "" "This is useful if you want to protect your environment from garbage " "collection, to make it ``persistent''." msgstr "" #. type: table #: doc/guix.texi:8125 msgid "" "When this option is omitted, the environment is protected from garbage " "collection only for the duration of the @command{guix environment} session. " "This means that next time you recreate the same environment, you could have " "to rebuild or re-download packages. @xref{Invoking guix gc}, for more on GC " "roots." msgstr "" #. type: table #: doc/guix.texi:8130 msgid "" "Create an environment for the package or list of packages that @var{expr} " "evaluates to." msgstr "" #. type: table #: doc/guix.texi:8132 msgid "For example, running:" msgstr "" #. type: example #: doc/guix.texi:8135 #, no-wrap msgid "guix environment -e '(@@ (gnu packages maths) petsc-openmpi)'\n" msgstr "" #. type: table #: doc/guix.texi:8139 msgid "" "starts a shell with the environment for this specific variant of the PETSc " "package." msgstr "" #. type: table #: doc/guix.texi:8141 msgid "Running:" msgstr "" #. type: example #: doc/guix.texi:8144 #, no-wrap msgid "guix environment --ad-hoc -e '(@@ (gnu) %base-packages)'\n" msgstr "" #. type: table #: doc/guix.texi:8147 msgid "starts a shell with all the GuixSD base packages available." msgstr "" #. type: table #: doc/guix.texi:8150 msgid "" "The above commands only use the default output of the given packages. To " "select other outputs, two element tuples can be specified:" msgstr "" #. type: example #: doc/guix.texi:8153 #, no-wrap msgid "guix environment --ad-hoc -e '(list (@@ (gnu packages bash) bash) \"include\")'\n" msgstr "" #. type: item #: doc/guix.texi:8155 #, no-wrap msgid "--load=@var{file}" msgstr "" #. type: itemx #: doc/guix.texi:8156 #, no-wrap msgid "-l @var{file}" msgstr "" #. type: table #: doc/guix.texi:8159 msgid "" "Create an environment for the package or list of packages that the code " "within @var{file} evaluates to." msgstr "" #. type: example #: doc/guix.texi:8165 #, no-wrap msgid "@verbatiminclude environment-gdb.scm\n" msgstr "" #. type: table #: doc/guix.texi:8171 msgid "" "Create an environment for the packages contained in the manifest object " "returned by the Scheme code in @var{file}." msgstr "" #. type: table #: doc/guix.texi:8175 msgid "" "This is similar to the same-named option in @command{guix package} " "(@pxref{profile-manifest, @option{--manifest}}) and uses the same manifest " "files." msgstr "" #. type: item #: doc/guix.texi:8176 #, no-wrap msgid "--ad-hoc" msgstr "" #. type: table #: doc/guix.texi:8181 msgid "" "Include all specified packages in the resulting environment, as if an @i{ad " "hoc} package were defined with them as inputs. This option is useful for " "quickly creating an environment without having to write a package expression " "to contain the desired inputs." msgstr "" #. type: table #: doc/guix.texi:8183 msgid "For instance, the command:" msgstr "" #. type: example #: doc/guix.texi:8186 #, no-wrap msgid "guix environment --ad-hoc guile guile-sdl -- guile\n" msgstr "" #. type: table #: doc/guix.texi:8190 msgid "" "runs @command{guile} in an environment where Guile and Guile-SDL are " "available." msgstr "" #. type: table #: doc/guix.texi:8195 msgid "" "Note that this example implicitly asks for the default output of " "@code{guile} and @code{guile-sdl}, but it is possible to ask for a specific " "output---e.g., @code{glib:bin} asks for the @code{bin} output of @code{glib} " "(@pxref{Packages with Multiple Outputs})." msgstr "" #. type: table #: doc/guix.texi:8201 msgid "" "This option may be composed with the default behavior of @command{guix " "environment}. Packages appearing before @code{--ad-hoc} are interpreted as " "packages whose dependencies will be added to the environment, the default " "behavior. Packages appearing after are interpreted as packages that will be " "added to the environment directly." msgstr "" #. type: item #: doc/guix.texi:8202 #, no-wrap msgid "--pure" msgstr "" #. type: table #: doc/guix.texi:8206 msgid "" "Unset existing environment variables when building the new environment. " "This has the effect of creating an environment in which search paths only " "contain package inputs." msgstr "" #. type: item #: doc/guix.texi:8207 #, no-wrap msgid "--search-paths" msgstr "" #. type: table #: doc/guix.texi:8210 msgid "" "Display the environment variable definitions that make up the environment." msgstr "" #. type: table #: doc/guix.texi:8214 msgid "Attempt to build for @var{system}---e.g., @code{i686-linux}." msgstr "" #. type: item #: doc/guix.texi:8215 #, no-wrap msgid "--container" msgstr "" #. type: itemx #: doc/guix.texi:8216 #, no-wrap msgid "-C" msgstr "" #. type: item #: doc/guix.texi:8217 doc/guix.texi:8728 doc/guix.texi:22494 #, no-wrap msgid "container" msgstr "" #. type: table #: doc/guix.texi:8225 msgid "" "Run @var{command} within an isolated container. The current working " "directory outside the container is mapped inside the container. " "Additionally, unless overridden with @code{--user}, a dummy home directory " "is created that matches the current user's home directory, and @file{/etc/" "passwd} is configured accordingly. The spawned process runs as the current " "user outside the container, but has root privileges in the context of the " "container." msgstr "" #. type: item #: doc/guix.texi:8226 #, no-wrap msgid "--network" msgstr "" #. type: itemx #: doc/guix.texi:8227 #, no-wrap msgid "-N" msgstr "" #. type: table #: doc/guix.texi:8231 msgid "" "For containers, share the network namespace with the host system. " "Containers created without this flag only have access to the loopback device." msgstr "" #. type: item #: doc/guix.texi:8232 #, no-wrap msgid "--link-profile" msgstr "" #. type: itemx #: doc/guix.texi:8233 #, no-wrap msgid "-P" msgstr "" #. type: table #: doc/guix.texi:8240 msgid "" "For containers, link the environment profile to @file{~/.guix-profile} " "within the container. This is equivalent to running the command @command{ln " "-s $GUIX_ENVIRONMENT ~/.guix-profile} within the container. Linking will " "fail and abort the environment if the directory already exists, which will " "certainly be the case if @command{guix environment} was invoked in the " "user's home directory." msgstr "" #. type: table #: doc/guix.texi:8247 msgid "" "Certain packages are configured to look in @code{~/.guix-profile} for " "configuration files and data;@footnote{For example, the @code{fontconfig} " "package inspects @file{~/.guix-profile/share/fonts} for additional fonts.} " "@code{--link-profile} allows these programs to behave as expected within the " "environment." msgstr "" #. type: item #: doc/guix.texi:8248 doc/guix.texi:8400 #, no-wrap msgid "--user=@var{user}" msgstr "" #. type: itemx #: doc/guix.texi:8249 doc/guix.texi:8401 #, no-wrap msgid "-u @var{user}" msgstr "" #. type: table #: doc/guix.texi:8255 msgid "" "For containers, use the username @var{user} in place of the current user. " "The generated @file{/etc/passwd} entry within the container will contain the " "name @var{user}; the home directory will be @file{/home/USER}; and no user " "GECOS data will be copied. @var{user} need not exist on the system." msgstr "" #. type: table #: doc/guix.texi:8260 msgid "" "Additionally, any shared or exposed path (see @code{--share} and @code{--" "expose} respectively) whose target is within the current user's home " "directory will be remapped relative to @file{/home/USER}; this includes the " "automatic mapping of the current working directory." msgstr "" #. type: example #: doc/guix.texi:8267 #, no-wrap msgid "" "# will expose paths as /home/foo/wd, /home/foo/test, and /home/foo/target\n" "cd $HOME/wd\n" "guix environment --container --user=foo \\\n" " --expose=$HOME/test \\\n" " --expose=/tmp/target=$HOME/target\n" msgstr "" #. type: table #: doc/guix.texi:8272 msgid "" "While this will limit the leaking of user identity through home paths and " "each of the user fields, this is only one useful component of a broader " "privacy/anonymity solution---not one in and of itself." msgstr "" #. type: item #: doc/guix.texi:8273 #, no-wrap msgid "--expose=@var{source}[=@var{target}]" msgstr "" #. type: table #: doc/guix.texi:8278 msgid "" "For containers, expose the file system @var{source} from the host system as " "the read-only file system @var{target} within the container. If " "@var{target} is not specified, @var{source} is used as the target mount " "point in the container." msgstr "" #. type: table #: doc/guix.texi:8282 msgid "" "The example below spawns a Guile REPL in a container in which the user's " "home directory is accessible read-only via the @file{/exchange} directory:" msgstr "" #. type: example #: doc/guix.texi:8285 #, no-wrap msgid "guix environment --container --expose=$HOME=/exchange --ad-hoc guile -- guile\n" msgstr "" #. type: item #: doc/guix.texi:8287 #, no-wrap msgid "--share=@var{source}[=@var{target}]" msgstr "" #. type: table #: doc/guix.texi:8292 msgid "" "For containers, share the file system @var{source} from the host system as " "the writable file system @var{target} within the container. If @var{target} " "is not specified, @var{source} is used as the target mount point in the " "container." msgstr "" #. type: table #: doc/guix.texi:8296 msgid "" "The example below spawns a Guile REPL in a container in which the user's " "home directory is accessible for both reading and writing via the @file{/" "exchange} directory:" msgstr "" #. type: example #: doc/guix.texi:8299 #, no-wrap msgid "guix environment --container --share=$HOME=/exchange --ad-hoc guile -- guile\n" msgstr "" #. type: Plain text #: doc/guix.texi:8305 msgid "" "@command{guix environment} also supports all of the common build options " "that @command{guix build} supports (@pxref{Common Build Options})." msgstr "" #. type: section #: doc/guix.texi:8308 #, no-wrap msgid "Invoking @command{guix publish}" msgstr "" #. type: command{#1} #: doc/guix.texi:8310 #, no-wrap msgid "guix publish" msgstr "" #. type: Plain text #: doc/guix.texi:8314 msgid "" "The purpose of @command{guix publish} is to enable users to easily share " "their store with others, who can then use it as a substitute server " "(@pxref{Substitutes})." msgstr "" #. type: Plain text #: doc/guix.texi:8320 msgid "" "When @command{guix publish} runs, it spawns an HTTP server which allows " "anyone with network access to obtain substitutes from it. This means that " "any machine running Guix can also act as if it were a build farm, since the " "HTTP interface is compatible with Hydra, the software behind the @code{hydra." "gnu.org} build farm." msgstr "" #. type: Plain text #: doc/guix.texi:8326 msgid "" "For security, each substitute is signed, allowing recipients to check their " "authenticity and integrity (@pxref{Substitutes}). Because @command{guix " "publish} uses the signing key of the system, which is only readable by the " "system administrator, it must be started as root; the @code{--user} option " "makes it drop root privileges early on." msgstr "" #. type: Plain text #: doc/guix.texi:8330 msgid "" "The signing key pair must be generated before @command{guix publish} is " "launched, using @command{guix archive --generate-key} (@pxref{Invoking guix " "archive})." msgstr "" #. type: example #: doc/guix.texi:8335 #, no-wrap msgid "guix publish @var{options}@dots{}\n" msgstr "" #. type: Plain text #: doc/guix.texi:8339 msgid "" "Running @command{guix publish} without any additional arguments will spawn " "an HTTP server on port 8080:" msgstr "" #. type: example #: doc/guix.texi:8342 #, no-wrap msgid "guix publish\n" msgstr "" #. type: Plain text #: doc/guix.texi:8346 msgid "" "Once a publishing server has been authorized (@pxref{Invoking guix " "archive}), the daemon may download substitutes from it:" msgstr "" #. type: example #: doc/guix.texi:8349 #, no-wrap msgid "guix-daemon --substitute-urls=http://example.org:8080\n" msgstr "" #. type: Plain text #: doc/guix.texi:8358 msgid "" "By default, @command{guix publish} compresses archives on the fly as it " "serves them. This ``on-the-fly'' mode is convenient in that it requires no " "setup and is immediately available. However, when serving lots of clients, " "we recommend using the @option{--cache} option, which enables caching of the " "archives before they are sent to clients---see below for details. The " "@command{guix weather} command provides a handy way to check what a server " "provides (@pxref{Invoking guix weather})." msgstr "" #. type: Plain text #: doc/guix.texi:8365 msgid "" "As a bonus, @command{guix publish} also serves as a content-addressed mirror " "for source files referenced in @code{origin} records (@pxref{origin " "Reference}). For instance, assuming @command{guix publish} is running on " "@code{example.org}, the following URL returns the raw @file{hello-2.10.tar." "gz} file with the given SHA256 hash (represented in @code{nix-base32} " "format, @pxref{Invoking guix hash}):" msgstr "" #. type: example #: doc/guix.texi:8368 #, no-wrap msgid "http://example.org/file/hello-2.10.tar.gz/sha256/0ssi1@dots{}ndq1i\n" msgstr "" #. type: Plain text #: doc/guix.texi:8372 msgid "" "Obviously, these URLs only work for files that are in the store; in other " "cases, they return 404 (``Not Found'')." msgstr "" #. type: cindex #: doc/guix.texi:8373 #, no-wrap msgid "build logs, publication" msgstr "" #. type: Plain text #: doc/guix.texi:8375 msgid "Build logs are available from @code{/log} URLs like:" msgstr "" #. type: example #: doc/guix.texi:8378 #, no-wrap msgid "http://example.org/log/gwspk@dots{}-guile-2.2.3\n" msgstr "" #. type: Plain text #: doc/guix.texi:8388 msgid "" "When @command{guix-daemon} is configured to save compressed build logs, as " "is the case by default (@pxref{Invoking guix-daemon}), @code{/log} URLs " "return the compressed log as-is, with an appropriate @code{Content-Type} and/" "or @code{Content-Encoding} header. We recommend running @command{guix-" "daemon} with @code{--log-compression=gzip} since Web browsers can " "automatically decompress it, which is not the case with bzip2 compression." msgstr "" #. type: item #: doc/guix.texi:8392 #, no-wrap msgid "--port=@var{port}" msgstr "" #. type: itemx #: doc/guix.texi:8393 #, no-wrap msgid "-p @var{port}" msgstr "" #. type: table #: doc/guix.texi:8395 msgid "Listen for HTTP requests on @var{port}." msgstr "" #. type: item #: doc/guix.texi:8396 doc/guix.texi:18819 #, no-wrap msgid "--listen=@var{host}" msgstr "" #. type: table #: doc/guix.texi:8399 msgid "" "Listen on the network interface for @var{host}. The default is to accept " "connections from any interface." msgstr "" #. type: table #: doc/guix.texi:8404 msgid "" "Change privileges to @var{user} as soon as possible---i.e., once the server " "socket is open and the signing key has been read." msgstr "" #. type: item #: doc/guix.texi:8405 #, no-wrap msgid "--compression[=@var{level}]" msgstr "" #. type: itemx #: doc/guix.texi:8406 #, no-wrap msgid "-C [@var{level}]" msgstr "" #. type: table #: doc/guix.texi:8411 msgid "" "Compress data using the given @var{level}. When @var{level} is zero, " "disable compression. The range 1 to 9 corresponds to different gzip " "compression levels: 1 is the fastest, and 9 is the best (CPU-intensive). " "The default is 3." msgstr "" #. type: table #: doc/guix.texi:8420 msgid "" "Unless @option{--cache} is used, compression occurs on the fly and the " "compressed streams are not cached. Thus, to reduce load on the machine that " "runs @command{guix publish}, it may be a good idea to choose a low " "compression level, to run @command{guix publish} behind a caching proxy, or " "to use @option{--cache}. Using @option{--cache} has the advantage that it " "allows @command{guix publish} to add @code{Content-Length} HTTP header to " "its responses." msgstr "" #. type: item #: doc/guix.texi:8421 #, no-wrap msgid "--cache=@var{directory}" msgstr "" #. type: itemx #: doc/guix.texi:8422 #, no-wrap msgid "-c @var{directory}" msgstr "" #. type: table #: doc/guix.texi:8425 msgid "" "Cache archives and meta-data (@code{.narinfo} URLs) to @var{directory} and " "only serve archives that are in cache." msgstr "" #. type: table #: doc/guix.texi:8433 msgid "" "When this option is omitted, archives and meta-data are created on-the-fly. " "This can reduce the available bandwidth, especially when compression is " "enabled, since this may become CPU-bound. Another drawback of the default " "mode is that the length of archives is not known in advance, so " "@command{guix publish} does not add a @code{Content-Length} HTTP header to " "its responses, which in turn prevents clients from knowing the amount of " "data being downloaded." msgstr "" #. type: table #: doc/guix.texi:8441 msgid "" "Conversely, when @option{--cache} is used, the first request for a store " "item (@i{via} a @code{.narinfo} URL) returns 404 and triggers a background " "process to @dfn{bake} the archive---computing its @code{.narinfo} and " "compressing the archive, if needed. Once the archive is cached in " "@var{directory}, subsequent requests succeed and are served directly from " "the cache, which guarantees that clients get the best possible bandwidth." msgstr "" #. type: table #: doc/guix.texi:8445 msgid "" "The ``baking'' process is performed by worker threads. By default, one " "thread per CPU core is created, but this can be customized. See @option{--" "workers} below." msgstr "" #. type: table #: doc/guix.texi:8448 msgid "" "When @option{--ttl} is used, cached entries are automatically deleted when " "they have expired." msgstr "" #. type: item #: doc/guix.texi:8449 #, no-wrap msgid "--workers=@var{N}" msgstr "" #. type: table #: doc/guix.texi:8452 msgid "" "When @option{--cache} is used, request the allocation of @var{N} worker " "threads to ``bake'' archives." msgstr "" #. type: item #: doc/guix.texi:8453 #, no-wrap msgid "--ttl=@var{ttl}" msgstr "" #. type: table #: doc/guix.texi:8457 msgid "" "Produce @code{Cache-Control} HTTP headers that advertise a time-to-live " "(TTL) of @var{ttl}. @var{ttl} must denote a duration: @code{5d} means 5 " "days, @code{1m} means 1 month, and so on." msgstr "" #. type: table #: doc/guix.texi:8462 msgid "" "This allows the user's Guix to keep substitute information in cache for " "@var{ttl}. However, note that @code{guix publish} does not itself guarantee " "that the store items it provides will indeed remain available for as long as " "@var{ttl}." msgstr "" #. type: table #: doc/guix.texi:8466 msgid "" "Additionally, when @option{--cache} is used, cached entries that have not " "been accessed for @var{ttl} and that no longer have a corresponding item in " "the store, may be deleted." msgstr "" #. type: item #: doc/guix.texi:8467 #, no-wrap msgid "--nar-path=@var{path}" msgstr "" #. type: table #: doc/guix.texi:8470 msgid "" "Use @var{path} as the prefix for the URLs of ``nar'' files (@pxref{Invoking " "guix archive, normalized archives})." msgstr "" #. type: table #: doc/guix.texi:8474 msgid "" "By default, nars are served at a URL such as @code{/nar/gzip/@dots{}-" "coreutils-8.25}. This option allows you to change the @code{/nar} part to " "@var{path}." msgstr "" #. type: item #: doc/guix.texi:8475 #, no-wrap msgid "--public-key=@var{file}" msgstr "" #. type: itemx #: doc/guix.texi:8476 #, no-wrap msgid "--private-key=@var{file}" msgstr "" #. type: table #: doc/guix.texi:8479 msgid "" "Use the specific @var{file}s as the public/private key pair used to sign the " "store items being published." msgstr "" #. type: table #: doc/guix.texi:8486 msgid "" "The files must correspond to the same key pair (the private key is used for " "signing and the public key is merely advertised in the signature metadata). " "They must contain keys in the canonical s-expression format as produced by " "@command{guix archive --generate-key} (@pxref{Invoking guix archive}). By " "default, @file{/etc/guix/signing-key.pub} and @file{/etc/guix/signing-key." "sec} are used." msgstr "" #. type: item #: doc/guix.texi:8487 #, no-wrap msgid "--repl[=@var{port}]" msgstr "" #. type: itemx #: doc/guix.texi:8488 #, no-wrap msgid "-r [@var{port}]" msgstr "" #. type: table #: doc/guix.texi:8492 msgid "" "Spawn a Guile REPL server (@pxref{REPL Servers,,, guile, GNU Guile Reference " "Manual}) on @var{port} (37146 by default). This is used primarily for " "debugging a running @command{guix publish} server." msgstr "" #. type: Plain text #: doc/guix.texi:8498 msgid "" "Enabling @command{guix publish} on a GuixSD system is a one-liner: just " "instantiate a @code{guix-publish-service-type} service in the " "@code{services} field of the @code{operating-system} declaration " "(@pxref{guix-publish-service-type, @code{guix-publish-service-type}})." msgstr "" #. type: Plain text #: doc/guix.texi:8501 msgid "" "If you are instead running Guix on a ``foreign distro'', follow these " "instructions:”" msgstr "" #. type: itemize #: doc/guix.texi:8505 msgid "If your host distro uses the systemd init system:" msgstr "" #. type: example #: doc/guix.texi:8510 #, no-wrap msgid "" "# ln -s ~root/.guix-profile/lib/systemd/system/guix-publish.service \\\n" " /etc/systemd/system/\n" "# systemctl start guix-publish && systemctl enable guix-publish\n" msgstr "" #. type: example #: doc/guix.texi:8518 #, no-wrap msgid "" "# ln -s ~root/.guix-profile/lib/upstart/system/guix-publish.conf /etc/init/\n" "# start guix-publish\n" msgstr "" #. type: itemize #: doc/guix.texi:8522 msgid "Otherwise, proceed similarly with your distro's init system." msgstr "" #. type: section #: doc/guix.texi:8525 #, no-wrap msgid "Invoking @command{guix challenge}" msgstr "" #. type: cindex #: doc/guix.texi:8528 #, no-wrap msgid "verifiable builds" msgstr "" #. type: command{#1} #: doc/guix.texi:8529 #, no-wrap msgid "guix challenge" msgstr "" #. type: cindex #: doc/guix.texi:8530 #, no-wrap msgid "challenge" msgstr "" #. type: Plain text #: doc/guix.texi:8535 msgid "" "Do the binaries provided by this server really correspond to the source code " "it claims to build? Is a package build process deterministic? These are the " "questions the @command{guix challenge} command attempts to answer." msgstr "" #. type: Plain text #: doc/guix.texi:8543 msgid "" "The former is obviously an important question: Before using a substitute " "server (@pxref{Substitutes}), one had better @emph{verify} that it provides " "the right binaries, and thus @emph{challenge} it. The latter is what " "enables the former: If package builds are deterministic, then independent " "builds of the package should yield the exact same result, bit for bit; if a " "server provides a binary different from the one obtained locally, it may be " "either corrupt or malicious." msgstr "" #. type: Plain text #: doc/guix.texi:8552 msgid "" "We know that the hash that shows up in @file{/gnu/store} file names is the " "hash of all the inputs of the process that built the file or directory---" "compilers, libraries, build scripts, etc. (@pxref{Introduction}). Assuming " "deterministic build processes, one store file name should map to exactly one " "build output. @command{guix challenge} checks whether there is, indeed, a " "single mapping by comparing the build outputs of several independent builds " "of any given store item." msgstr "" #. type: Plain text #: doc/guix.texi:8554 msgid "The command output looks like this:" msgstr "" #. type: smallexample #: doc/guix.texi:8571 #, no-wrap msgid "" "$ guix challenge --substitute-urls=\"https://hydra.gnu.org https://guix.example.org\"\n" "updating list of substitutes from 'https://hydra.gnu.org'... 100.0%\n" "updating list of substitutes from 'https://guix.example.org'... 100.0%\n" "/gnu/store/@dots{}-openssl-1.0.2d contents differ:\n" " local hash: 0725l22r5jnzazaacncwsvp9kgf42266ayyp814v7djxs7nk963q\n" " https://hydra.gnu.org/nar/@dots{}-openssl-1.0.2d: 0725l22r5jnzazaacncwsvp9kgf42266ayyp814v7djxs7nk963q\n" " https://guix.example.org/nar/@dots{}-openssl-1.0.2d: 1zy4fmaaqcnjrzzajkdn3f5gmjk754b43qkq47llbyak9z0qjyim\n" "/gnu/store/@dots{}-git-2.5.0 contents differ:\n" " local hash: 00p3bmryhjxrhpn2gxs2fy0a15lnip05l97205pgbk5ra395hyha\n" " https://hydra.gnu.org/nar/@dots{}-git-2.5.0: 069nb85bv4d4a6slrwjdy8v1cn4cwspm3kdbmyb81d6zckj3nq9f\n" " https://guix.example.org/nar/@dots{}-git-2.5.0: 0mdqa9w1p6cmli6976v4wi0sw9r4p5prkj7lzfd1877wk11c9c73\n" "/gnu/store/@dots{}-pius-2.1.1 contents differ:\n" " local hash: 0k4v3m9z1zp8xzzizb7d8kjj72f9172xv078sq4wl73vnq9ig3ax\n" " https://hydra.gnu.org/nar/@dots{}-pius-2.1.1: 0k4v3m9z1zp8xzzizb7d8kjj72f9172xv078sq4wl73vnq9ig3ax\n" " https://guix.example.org/nar/@dots{}-pius-2.1.1: 1cy25x1a4fzq5rk0pmvc8xhwyffnqz95h2bpvqsz2mpvlbccy0gs\n" "\n" msgstr "" #. type: smallexample #: doc/guix.texi:8573 #, no-wrap msgid "" "@dots{}\n" "\n" msgstr "" #. type: smallexample #: doc/guix.texi:8578 #, no-wrap msgid "" "6,406 store items were analyzed:\n" " - 4,749 (74.1%) were identical\n" " - 525 (8.2%) differed\n" " - 1,132 (17.7%) were inconclusive\n" msgstr "" #. type: Plain text #: doc/guix.texi:8586 msgid "" "In this example, @command{guix challenge} first scans the store to determine " "the set of locally-built derivations---as opposed to store items that were " "downloaded from a substitute server---and then queries all the substitute " "servers. It then reports those store items for which the servers obtained a " "result different from the local build." msgstr "" #. type: cindex #: doc/guix.texi:8587 #, no-wrap msgid "non-determinism, in package builds" msgstr "" #. type: Plain text #: doc/guix.texi:8598 msgid "" "As an example, @code{guix.example.org} always gets a different answer. " "Conversely, @code{hydra.gnu.org} agrees with local builds, except in the " "case of Git. This might indicate that the build process of Git is non-" "deterministic, meaning that its output varies as a function of various " "things that Guix does not fully control, in spite of building packages in " "isolated environments (@pxref{Features}). Most common sources of non-" "determinism include the addition of timestamps in build results, the " "inclusion of random numbers, and directory listings sorted by inode number. " "See @uref{https://reproducible-builds.org/docs/}, for more information." msgstr "" #. type: Plain text #: doc/guix.texi:8601 msgid "" "To find out what is wrong with this Git binary, we can do something along " "these lines (@pxref{Invoking guix archive}):" msgstr "" #. type: example #: doc/guix.texi:8606 #, no-wrap msgid "" "$ wget -q -O - https://hydra.gnu.org/nar/@dots{}-git-2.5.0 \\\n" " | guix archive -x /tmp/git\n" "$ diff -ur --no-dereference /gnu/store/@dots{}-git.2.5.0 /tmp/git\n" msgstr "" #. type: Plain text #: doc/guix.texi:8615 msgid "" "This command shows the difference between the files resulting from the local " "build, and the files resulting from the build on @code{hydra.gnu.org} " "(@pxref{Overview, Comparing and Merging Files,, diffutils, Comparing and " "Merging Files}). The @command{diff} command works great for text files. " "When binary files differ, a better option is @uref{https://diffoscope.org/, " "Diffoscope}, a tool that helps visualize differences for all kinds of files." msgstr "" #. type: Plain text #: doc/guix.texi:8623 msgid "" "Once you have done that work, you can tell whether the differences are due " "to a non-deterministic build process or to a malicious server. We try hard " "to remove sources of non-determinism in packages to make it easier to verify " "substitutes, but of course, this is a process that involves not just Guix, " "but a large part of the free software community. In the meantime, " "@command{guix challenge} is one tool to help address the problem." msgstr "" #. type: Plain text #: doc/guix.texi:8627 msgid "" "If you are writing packages for Guix, you are encouraged to check whether " "@code{hydra.gnu.org} and other substitute servers obtain the same build " "result as you did with:" msgstr "" #. type: example #: doc/guix.texi:8630 #, no-wrap msgid "$ guix challenge @var{package}\n" msgstr "" #. type: Plain text #: doc/guix.texi:8635 msgid "" "where @var{package} is a package specification such as @code{guile@@2.0} or " "@code{glibc:debug}." msgstr "" #. type: example #: doc/guix.texi:8640 #, no-wrap msgid "guix challenge @var{options} [@var{packages}@dots{}]\n" msgstr "" #. type: Plain text #: doc/guix.texi:8647 msgid "" "When a difference is found between the hash of a locally-built item and that " "of a server-provided substitute, or among substitutes provided by different " "servers, the command displays it as in the example above and its exit code " "is 2 (other non-zero exit codes denote other kinds of errors.)" msgstr "" #. type: Plain text #: doc/guix.texi:8649 msgid "The one option that matters is:" msgstr "" #. type: table #: doc/guix.texi:8655 msgid "" "Consider @var{urls} the whitespace-separated list of substitute source URLs " "to compare to." msgstr "" #. type: itemx #: doc/guix.texi:8657 #, no-wrap msgid "-v" msgstr "" #. type: table #: doc/guix.texi:8660 msgid "" "Show details about matches (identical contents) in addition to information " "about mismatches." msgstr "" #. type: section #: doc/guix.texi:8664 #, no-wrap msgid "Invoking @command{guix copy}" msgstr "" #. type: cindex #: doc/guix.texi:8666 #, no-wrap msgid "copy, of store items, over SSH" msgstr "" #. type: cindex #: doc/guix.texi:8667 #, no-wrap msgid "SSH, copy of store items" msgstr "" #. type: cindex #: doc/guix.texi:8668 #, no-wrap msgid "sharing store items across machines" msgstr "" #. type: cindex #: doc/guix.texi:8669 #, no-wrap msgid "transferring store items across machines" msgstr "" #. type: Plain text #: doc/guix.texi:8676 msgid "" "The @command{guix copy} command copies items from the store of one machine " "to that of another machine over a secure shell (SSH) " "connection@footnote{This command is available only when Guile-SSH was " "found. @xref{Requirements}, for details.}. For example, the following " "command copies the @code{coreutils} package, the user's profile, and all " "their dependencies over to @var{host}, logged in as @var{user}:" msgstr "" #. type: example #: doc/guix.texi:8680 #, no-wrap msgid "" "guix copy --to=@var{user}@@@var{host} \\\n" " coreutils `readlink -f ~/.guix-profile`\n" msgstr "" #. type: Plain text #: doc/guix.texi:8684 msgid "" "If some of the items to be copied are already present on @var{host}, they " "are not actually sent." msgstr "" #. type: Plain text #: doc/guix.texi:8687 msgid "" "The command below retrieves @code{libreoffice} and @code{gimp} from " "@var{host}, assuming they are available there:" msgstr "" #. type: example #: doc/guix.texi:8690 #, no-wrap msgid "guix copy --from=@var{host} libreoffice gimp\n" msgstr "" #. type: Plain text #: doc/guix.texi:8695 msgid "" "The SSH connection is established using the Guile-SSH client, which is " "compatible with OpenSSH: it honors @file{~/.ssh/known_hosts} and @file{~/." "ssh/config}, and uses the SSH agent for authentication." msgstr "" #. type: Plain text #: doc/guix.texi:8701 msgid "" "The key used to sign items that are sent must be accepted by the remote " "machine. Likewise, the key used by the remote machine to sign items you are " "retrieving must be in @file{/etc/guix/acl} so it is accepted by your own " "daemon. @xref{Invoking guix archive}, for more information about store item " "authentication." msgstr "" #. type: example #: doc/guix.texi:8706 #, no-wrap msgid "guix copy [--to=@var{spec}|--from=@var{spec}] @var{items}@dots{}\n" msgstr "" #. type: Plain text #: doc/guix.texi:8709 msgid "You must always specify one of the following options:" msgstr "" #. type: item #: doc/guix.texi:8711 #, no-wrap msgid "--to=@var{spec}" msgstr "" #. type: itemx #: doc/guix.texi:8712 #, no-wrap msgid "--from=@var{spec}" msgstr "" #. type: table #: doc/guix.texi:8716 msgid "" "Specify the host to send to or receive from. @var{spec} must be an SSH spec " "such as @code{example.org}, @code{charlie@@example.org}, or " "@code{charlie@@example.org:2222}." msgstr "" #. type: Plain text #: doc/guix.texi:8720 msgid "" "The @var{items} can be either package names, such as @code{gimp}, or store " "items, such as @file{/gnu/store/@dots{}-idutils-4.6}." msgstr "" #. type: Plain text #: doc/guix.texi:8724 msgid "" "When specifying the name of a package to send, it is first built if needed, " "unless @option{--dry-run} was specified. Common build options are supported " "(@pxref{Common Build Options})." msgstr "" #. type: section #: doc/guix.texi:8727 #, no-wrap msgid "Invoking @command{guix container}" msgstr "" #. type: command{#1} #: doc/guix.texi:8729 #, no-wrap msgid "guix container" msgstr "" #. type: quotation #: doc/guix.texi:8733 msgid "" "As of version @value{VERSION}, this tool is experimental. The interface is " "subject to radical change in the future." msgstr "" #. type: Plain text #: doc/guix.texi:8740 msgid "" "The purpose of @command{guix container} is to manipulate processes running " "within an isolated environment, commonly known as a ``container'', typically " "created by the @command{guix environment} (@pxref{Invoking guix " "environment}) and @command{guix system container} (@pxref{Invoking guix " "system}) commands." msgstr "" #. type: example #: doc/guix.texi:8745 #, no-wrap msgid "guix container @var{action} @var{options}@dots{}\n" msgstr "" #. type: Plain text #: doc/guix.texi:8749 msgid "" "@var{action} specifies the operation to perform with a container, and " "@var{options} specifies the context-specific arguments for the action." msgstr "" #. type: Plain text #: doc/guix.texi:8751 msgid "The following actions are available:" msgstr "" #. type: item #: doc/guix.texi:8753 #, no-wrap msgid "exec" msgstr "" #. type: table #: doc/guix.texi:8755 msgid "Execute a command within the context of a running container." msgstr "" #. type: table #: doc/guix.texi:8757 msgid "The syntax is:" msgstr "" #. type: example #: doc/guix.texi:8760 #, no-wrap msgid "guix container exec @var{pid} @var{program} @var{arguments}@dots{}\n" msgstr "" #. type: table #: doc/guix.texi:8766 msgid "" "@var{pid} specifies the process ID of the running container. @var{program} " "specifies an executable file name within the root file system of the " "container. @var{arguments} are the additional options that will be passed " "to @var{program}." msgstr "" #. type: table #: doc/guix.texi:8770 msgid "" "The following command launches an interactive login shell inside a GuixSD " "container, started by @command{guix system container}, and whose process ID " "is 9001:" msgstr "" #. type: example #: doc/guix.texi:8773 #, no-wrap msgid "guix container exec 9001 /run/current-system/profile/bin/bash --login\n" msgstr "" #. type: table #: doc/guix.texi:8777 msgid "" "Note that the @var{pid} cannot be the parent process of a container. It " "must be PID 1 of the container or one of its child processes." msgstr "" #. type: section #: doc/guix.texi:8781 #, no-wrap msgid "Invoking @command{guix weather}" msgstr "" #. type: Plain text #: doc/guix.texi:8790 msgid "" "Occasionally you're grumpy because substitutes are lacking and you end up " "building packages by yourself (@pxref{Substitutes}). The @command{guix " "weather} command reports on substitute availability on the specified servers " "so you can have an idea of whether you'll be grumpy today. It can sometimes " "be useful info as a user, but it is primarily useful to people running " "@command{guix publish} (@pxref{Invoking guix publish})." msgstr "" #. type: cindex #: doc/guix.texi:8791 #, no-wrap msgid "statistics, for substitutes" msgstr "" #. type: cindex #: doc/guix.texi:8792 #, no-wrap msgid "availability of substitutes" msgstr "" #. type: cindex #: doc/guix.texi:8793 #, no-wrap msgid "substitute availability" msgstr "" #. type: cindex #: doc/guix.texi:8794 #, no-wrap msgid "weather, substitute availability" msgstr "" #. type: Plain text #: doc/guix.texi:8796 msgid "Here's a sample run:" msgstr "" #. type: example #: doc/guix.texi:8808 #, no-wrap msgid "" "$ guix weather --substitute-urls=https://guix.example.org\n" "computing 5,872 package derivations for x86_64-linux...\n" "looking for 6,128 store items on https://guix.example.org..\n" "updating list of substitutes from 'https://guix.example.org'... 100.0%\n" "https://guix.example.org\n" " 43.4% substitutes available (2,658 out of 6,128)\n" " 7,032.5 MiB of nars (compressed)\n" " 19,824.2 MiB on disk (uncompressed)\n" " 0.030 seconds per request (182.9 seconds in total)\n" " 33.5 requests per second\n" "\n" msgstr "" #. type: example #: doc/guix.texi:8818 #, no-wrap msgid "" " 9.8% (342 out of 3,470) of the missing items are queued\n" " 867 queued builds\n" " x86_64-linux: 518 (59.7%)\n" " i686-linux: 221 (25.5%)\n" " aarch64-linux: 128 (14.8%)\n" " build rate: 23.41 builds per hour\n" " x86_64-linux: 11.16 builds per hour\n" " i686-linux: 6.03 builds per hour\n" " aarch64-linux: 6.41 builds per hour\n" msgstr "" #. type: cindex #: doc/guix.texi:8820 #, no-wrap msgid "continuous integration, statistics" msgstr "" #. type: Plain text #: doc/guix.texi:8829 msgid "" "As you can see, it reports the fraction of all the packages for which " "substitutes are available on the server---regardless of whether substitutes " "are enabled, and regardless of whether this server's signing key is " "authorized. It also reports the size of the compressed archives (``nars'') " "provided by the server, the size the corresponding store items occupy in the " "store (assuming deduplication is turned off), and the server's throughput. " "The second part gives continuous integration (CI) statistics, if the server " "supports it." msgstr "" #. type: Plain text #: doc/guix.texi:8835 msgid "" "To achieve that, @command{guix weather} queries over HTTP(S) meta-data " "(@dfn{narinfos}) for all the relevant store items. Like @command{guix " "challenge}, it ignores signatures on those substitutes, which is innocuous " "since the command only gathers statistics and cannot install those " "substitutes." msgstr "" #. type: Plain text #: doc/guix.texi:8838 msgid "" "Among other things, it is possible to query specific system types and " "specific package sets. The available options are listed below." msgstr "" #. type: table #: doc/guix.texi:8844 msgid "" "@var{urls} is the space-separated list of substitute server URLs to query. " "When this option is omitted, the default set of substitute servers is " "queried." msgstr "" #. type: table #: doc/guix.texi:8850 msgid "" "Query substitutes for @var{system}---e.g., @code{aarch64-linux}. This " "option can be repeated, in which case @command{guix weather} will query " "substitutes for several system types." msgstr "" #. type: table #: doc/guix.texi:8856 msgid "" "Instead of querying substitutes for all the packages, only ask for those " "specified in @var{file}. @var{file} must contain a @dfn{manifest}, as with " "the @code{-m} option of @command{guix package} (@pxref{Invoking guix " "package})." msgstr "" #. type: section #: doc/guix.texi:8859 #, no-wrap msgid "Invoking @command{guix processes}" msgstr "" #. type: Plain text #: doc/guix.texi:8867 msgid "" "The @command{guix processes} command can be useful to developers and system " "administrators, especially on multi-user machines and on build farms: it " "lists the current sessions (connections to the daemon), as well as " "information about the processes involved@footnote{Remote sessions, when " "@command{guix-daemon} is started with @option{--listen} specifying a TCP " "endpoint, are @emph{not} listed.}. Here's an example of the information it " "returns:" msgstr "" #. type: example #: doc/guix.texi:8873 #, no-wrap msgid "" "$ sudo guix processes\n" "SessionPID: 19002\n" "ClientPID: 19090\n" "ClientCommand: guix environment --ad-hoc python\n" "\n" msgstr "" #. type: example #: doc/guix.texi:8877 #, no-wrap msgid "" "SessionPID: 19402\n" "ClientPID: 19367\n" "ClientCommand: guix publish -u guix-publish -p 3000 -C 9 @dots{}\n" "\n" msgstr "" #. type: example #: doc/guix.texi:8887 #, no-wrap msgid "" "SessionPID: 19444\n" "ClientPID: 19419\n" "ClientCommand: cuirass --cache-directory /var/cache/cuirass @dots{}\n" "LockHeld: /gnu/store/@dots{}-perl-ipc-cmd-0.96.lock\n" "LockHeld: /gnu/store/@dots{}-python-six-bootstrap-1.11.0.lock\n" "LockHeld: /gnu/store/@dots{}-libjpeg-turbo-2.0.0.lock\n" "ChildProcess: 20495: guix offload x86_64-linux 7200 1 28800\n" "ChildProcess: 27733: guix offload x86_64-linux 7200 1 28800\n" "ChildProcess: 27793: guix offload x86_64-linux 7200 1 28800\n" msgstr "" #. type: Plain text #: doc/guix.texi:8894 msgid "" "In this example we see that @command{guix-daemon} has three clients: " "@command{guix environment}, @command{guix publish}, and the Cuirass " "continuous integration tool; their process identifier (PID) is given by the " "@code{ClientPID} field. The @code{SessionPID} field gives the PID of the " "@command{guix-daemon} sub-process of this particular session." msgstr "" #. type: Plain text #: doc/guix.texi:8901 msgid "" "The @code{LockHeld} fields show which store items are currently locked by " "this session, which corresponds to store items being built or substituted " "(the @code{LockHeld} field is not displayed when @command{guix processes} is " "not running as root.) Last, by looking at the @code{ChildProcess} field, we " "understand that these three builds are being offloaded (@pxref{Daemon " "Offload Setup})." msgstr "" #. type: Plain text #: doc/guix.texi:8906 msgid "" "The output is in Recutils format so we can use the handy @command{recsel} " "command to select sessions of interest (@pxref{Selection Expressions,,, " "recutils, GNU recutils manual}). As an example, the command shows the " "command line and PID of the client that triggered the build of a Perl " "package:" msgstr "" #. type: example #: doc/guix.texi:8912 #, no-wrap msgid "" "$ sudo guix processes | \\\n" " recsel -p ClientPID,ClientCommand -e 'LockHeld ~ \"perl\"'\n" "ClientPID: 19419\n" "ClientCommand: cuirass --cache-directory /var/cache/cuirass @dots{}\n" msgstr "" #. type: Plain text #: doc/guix.texi:8929 msgid "" "Guix comes with a distribution of the GNU system consisting entirely of free " "software@footnote{The term ``free'' here refers to the @url{http://www.gnu." "org/philosophy/free-sw.html,freedom provided to users of that software}.}. " "The distribution can be installed on its own (@pxref{System Installation}), " "but it is also possible to install Guix as a package manager on top of an " "installed GNU/Linux system (@pxref{Installation}). To distinguish between " "the two, we refer to the standalone distribution as the Guix System " "Distribution, or GuixSD." msgstr "" #. type: Plain text #: doc/guix.texi:8935 msgid "" "The distribution provides core GNU packages such as GNU libc, GCC, and " "Binutils, as well as many GNU and non-GNU applications. The complete list " "of available packages can be browsed @url{http://www.gnu.org/software/guix/" "packages,on-line} or by running @command{guix package} (@pxref{Invoking guix " "package}):" msgstr "" #. type: example #: doc/guix.texi:8938 #, no-wrap msgid "guix package --list-available\n" msgstr "" #. type: Plain text #: doc/guix.texi:8944 msgid "" "Our goal is to provide a practical 100% free software distribution of Linux-" "based and other variants of GNU, with a focus on the promotion and tight " "integration of GNU components, and an emphasis on programs and tools that " "help users exert that freedom." msgstr "" #. type: Plain text #: doc/guix.texi:8946 msgid "Packages are currently available on the following platforms:" msgstr "" #. type: item #: doc/guix.texi:8949 doc/guix.texi:9114 #, no-wrap msgid "x86_64-linux" msgstr "" #. type: table #: doc/guix.texi:8951 msgid "Intel/AMD @code{x86_64} architecture, Linux-Libre kernel;" msgstr "" #. type: item #: doc/guix.texi:8952 doc/guix.texi:9117 #, no-wrap msgid "i686-linux" msgstr "" #. type: table #: doc/guix.texi:8954 msgid "Intel 32-bit architecture (IA32), Linux-Libre kernel;" msgstr "" #. type: item #: doc/guix.texi:8955 #, no-wrap msgid "armhf-linux" msgstr "" #. type: table #: doc/guix.texi:8959 msgid "" "ARMv7-A architecture with hard float, Thumb-2 and NEON, using the EABI hard-" "float application binary interface (ABI), and Linux-Libre kernel." msgstr "" #. type: item #: doc/guix.texi:8960 #, no-wrap msgid "aarch64-linux" msgstr "" #. type: table #: doc/guix.texi:8964 msgid "" "little-endian 64-bit ARMv8-A processors, Linux-Libre kernel. This is " "currently in an experimental stage, with limited support. " "@xref{Contributing}, for how to help!" msgstr "" #. type: item #: doc/guix.texi:8965 #, no-wrap msgid "mips64el-linux" msgstr "" #. type: table #: doc/guix.texi:8968 msgid "" "little-endian 64-bit MIPS processors, specifically the Loongson series, n32 " "ABI, and Linux-Libre kernel." msgstr "" #. type: Plain text #: doc/guix.texi:8972 msgid "" "GuixSD itself is currently only available on @code{i686} and @code{x86_64}." msgstr "" #. type: Plain text #: doc/guix.texi:8976 msgid "" "For information on porting to other architectures or kernels, " "@pxref{Porting}." msgstr "" #. type: Plain text #: doc/guix.texi:8991 msgid "" "Building this distribution is a cooperative effort, and you are invited to " "join! @xref{Contributing}, for information about how you can help." msgstr "" #. type: cindex #: doc/guix.texi:8995 #, no-wrap msgid "installing GuixSD" msgstr "" #. type: Plain text #: doc/guix.texi:9001 msgid "" "This section explains how to install the Guix System Distribution (GuixSD) " "on a machine. The Guix package manager can also be installed on top of a " "running GNU/Linux system, @pxref{Installation}." msgstr "" #. type: quotation #: doc/guix.texi:9010 msgid "" "You are reading this documentation with an Info reader. For details on how " "to use it, hit the @key{RET} key (``return'' or ``enter'') on the link that " "follows: @pxref{Top, Info reader,, info-stnd, Stand-alone GNU Info}. Hit " "@kbd{l} afterwards to come back here." msgstr "" #. type: quotation #: doc/guix.texi:9013 msgid "" "Alternately, run @command{info info} in another tty to keep the manual " "available." msgstr "" #. type: Plain text #: doc/guix.texi:9038 msgid "" "As of version @value{VERSION}, the Guix System Distribution (GuixSD) is not " "production-ready. It may contain bugs and lack important features. Thus, " "if you are looking for a stable production system that respects your freedom " "as a computer user, a good solution at this point is to consider @url{http://" "www.gnu.org/distros/free-distros.html, one of the more established GNU/Linux " "distributions}. We hope you can soon switch to the GuixSD without fear, of " "course. In the meantime, you can also keep using your distribution and try " "out the package manager on top of it (@pxref{Installation})." msgstr "" #. type: Plain text #: doc/guix.texi:9041 msgid "" "Before you proceed with the installation, be aware of the following " "noteworthy limitations applicable to version @value{VERSION}:" msgstr "" #. type: itemize #: doc/guix.texi:9047 msgid "" "The installation process does not include a graphical user interface and " "requires familiarity with GNU/Linux (see the following subsections to get a " "feel of what that means.)" msgstr "" #. type: itemize #: doc/guix.texi:9050 msgid "Support for the Logical Volume Manager (LVM) is missing." msgstr "" #. type: itemize #: doc/guix.texi:9054 msgid "" "More and more system services are provided (@pxref{Services}), but some may " "be missing." msgstr "" #. type: itemize #: doc/guix.texi:9058 msgid "" "More than 7,500 packages are available, but you might occasionally find that " "a useful package is missing." msgstr "" #. type: itemize #: doc/guix.texi:9063 msgid "" "GNOME, Xfce, LXDE, and Enlightenment are available (@pxref{Desktop " "Services}), as well as a number of X11 window managers. However, some " "graphical applications may be missing, as well as KDE." msgstr "" #. type: Plain text #: doc/guix.texi:9068 msgid "" "You have been warned! But more than a disclaimer, this is an invitation to " "report issues (and success stories!), and to join us in improving it. " "@xref{Contributing}, for more info." msgstr "" #. type: cindex #: doc/guix.texi:9073 #, no-wrap msgid "hardware support on GuixSD" msgstr "" #. type: Plain text #: doc/guix.texi:9082 msgid "" "GNU@tie{}GuixSD focuses on respecting the user's computing freedom. It " "builds around the kernel Linux-libre, which means that only hardware for " "which free software drivers and firmware exist is supported. Nowadays, a " "wide range of off-the-shelf hardware is supported on GNU/Linux-libre---from " "keyboards to graphics cards to scanners and Ethernet controllers. " "Unfortunately, there are still areas where hardware vendors deny users " "control over their own computing, and such hardware is not supported on " "GuixSD." msgstr "" #. type: cindex #: doc/guix.texi:9083 #, no-wrap msgid "WiFi, hardware support" msgstr "" #. type: Plain text #: doc/guix.texi:9092 msgid "" "One of the main areas where free drivers or firmware are lacking is WiFi " "devices. WiFi devices known to work include those using Atheros chips " "(AR9271 and AR7010), which corresponds to the @code{ath9k} Linux-libre " "driver, and those using Broadcom/AirForce chips (BCM43xx with Wireless-Core " "Revision 5), which corresponds to the @code{b43-open} Linux-libre driver. " "Free firmware exists for both and is available out-of-the-box on GuixSD, as " "part of @var{%base-firmware} (@pxref{operating-system Reference, " "@code{firmware}})." msgstr "" #. type: cindex #: doc/guix.texi:9093 #, no-wrap msgid "RYF, Respects Your Freedom" msgstr "" #. type: Plain text #: doc/guix.texi:9099 msgid "" "The @uref{https://www.fsf.org/, Free Software Foundation} runs @uref{https://" "www.fsf.org/ryf, @dfn{Respects Your Freedom}} (RYF), a certification program " "for hardware products that respect your freedom and your privacy and ensure " "that you have control over your device. We encourage you to check the list " "of RYF-certified devices." msgstr "" #. type: Plain text #: doc/guix.texi:9103 msgid "" "Another useful resource is the @uref{https://www.h-node.org/, H-Node} web " "site. It contains a catalog of hardware devices with information about " "their support in GNU/Linux." msgstr "" #. type: Plain text #: doc/guix.texi:9112 msgid "" "An ISO-9660 installation image that can be written to a USB stick or burnt " "to a DVD can be downloaded from @indicateurl{https://alpha.gnu.org/gnu/guix/" "guixsd-install-@value{VERSION}.@var{system}.iso.xz}, where @var{system} is " "one of:" msgstr "" #. type: table #: doc/guix.texi:9116 msgid "for a GNU/Linux system on Intel/AMD-compatible 64-bit CPUs;" msgstr "" #. type: table #: doc/guix.texi:9119 msgid "for a 32-bit GNU/Linux system on Intel-compatible CPUs." msgstr "" #. type: Plain text #: doc/guix.texi:9124 msgid "" "Make sure to download the associated @file{.sig} file and to verify the " "authenticity of the image against it, along these lines:" msgstr "" #. type: example #: doc/guix.texi:9128 #, no-wrap msgid "" "$ wget https://alpha.gnu.org/gnu/guix/guixsd-install-@value{VERSION}.@var{system}.iso.xz.sig\n" "$ gpg --verify guixsd-install-@value{VERSION}.@var{system}.iso.xz.sig\n" msgstr "" #. type: Plain text #: doc/guix.texi:9144 msgid "" "This image contains the tools necessary for an installation. It is meant to " "be copied @emph{as is} to a large-enough USB stick or DVD." msgstr "" #. type: unnumberedsubsubsec #: doc/guix.texi:9145 #, no-wrap msgid "Copying to a USB Stick" msgstr "" #. type: Plain text #: doc/guix.texi:9148 msgid "To copy the image to a USB stick, follow these steps:" msgstr "" #. type: enumerate #: doc/guix.texi:9152 doc/guix.texi:9177 msgid "Decompress the image using the @command{xz} command:" msgstr "" #. type: example #: doc/guix.texi:9155 doc/guix.texi:9180 #, no-wrap msgid "xz -d guixsd-install-@value{VERSION}.@var{system}.iso.xz\n" msgstr "" #. type: enumerate #: doc/guix.texi:9161 msgid "" "Insert a USB stick of 1@tie{}GiB or more into your machine, and determine " "its device name. Assuming that the USB stick is known as @file{/dev/sdX}, " "copy the image with:" msgstr "" #. type: example #: doc/guix.texi:9165 #, no-wrap msgid "" "dd if=guixsd-install-@value{VERSION}.x86_64-linux.iso of=/dev/sdX\n" "sync\n" msgstr "" #. type: enumerate #: doc/guix.texi:9168 msgid "Access to @file{/dev/sdX} usually requires root privileges." msgstr "" #. type: unnumberedsubsubsec #: doc/guix.texi:9170 #, no-wrap msgid "Burning on a DVD" msgstr "" #. type: Plain text #: doc/guix.texi:9173 msgid "To copy the image to a DVD, follow these steps:" msgstr "" #. type: enumerate #: doc/guix.texi:9186 msgid "" "Insert a blank DVD into your machine, and determine its device name. " "Assuming that the DVD drive is known as @file{/dev/srX}, copy the image with:" msgstr "" #. type: example #: doc/guix.texi:9189 #, no-wrap msgid "growisofs -dvd-compat -Z /dev/srX=guixsd-install-@value{VERSION}.x86_64.iso\n" msgstr "" #. type: enumerate #: doc/guix.texi:9192 msgid "Access to @file{/dev/srX} usually requires root privileges." msgstr "" #. type: unnumberedsubsubsec #: doc/guix.texi:9194 #, no-wrap msgid "Booting" msgstr "" #. type: Plain text #: doc/guix.texi:9199 msgid "" "Once this is done, you should be able to reboot the system and boot from the " "USB stick or DVD. The latter usually requires you to get in the BIOS or " "UEFI boot menu, where you can choose to boot from the USB stick." msgstr "" #. type: Plain text #: doc/guix.texi:9202 msgid "" "@xref{Installing GuixSD in a VM}, if, instead, you would like to install " "GuixSD in a virtual machine (VM)." msgstr "" #. type: Plain text #: doc/guix.texi:9214 msgid "" "Once you have successfully booted your computer using the installation " "medium, you should end up with a root prompt. Several console TTYs are " "configured and can be used to run commands as root. TTY2 shows this " "documentation, browsable using the Info reader commands (@pxref{Top,,, info-" "stnd, Stand-alone GNU Info}). The installation system runs the GPM mouse " "daemon, which allows you to select text with the left mouse button and to " "paste it with the middle button." msgstr "" #. type: quotation #: doc/guix.texi:9219 msgid "" "Installation requires access to the Internet so that any missing " "dependencies of your system configuration can be downloaded. See the " "``Networking'' section below." msgstr "" #. type: Plain text #: doc/guix.texi:9225 msgid "" "The installation system includes many common tools needed for this task. " "But it is also a full-blown GuixSD system, which means that you can install " "additional packages, should you need it, using @command{guix package} " "(@pxref{Invoking guix package})." msgstr "" #. type: subsubsection #: doc/guix.texi:9226 #, no-wrap msgid "Keyboard Layout" msgstr "" #. type: cindex #: doc/guix.texi:9228 doc/guix.texi:11378 doc/guix.texi:12878 #, no-wrap msgid "keyboard layout" msgstr "" #. type: Plain text #: doc/guix.texi:9232 msgid "" "The installation image uses the US qwerty keyboard layout. If you want to " "change it, you can use the @command{loadkeys} command. For example, the " "following command selects the Dvorak keyboard layout:" msgstr "" #. type: example #: doc/guix.texi:9235 #, no-wrap msgid "loadkeys dvorak\n" msgstr "" #. type: Plain text #: doc/guix.texi:9240 msgid "" "See the files under @file{/run/current-system/profile/share/keymaps} for a " "list of available keyboard layouts. Run @command{man loadkeys} for more " "information." msgstr "" #. type: subsubsection #: doc/guix.texi:9241 #, no-wrap msgid "Networking" msgstr "" #. type: Plain text #: doc/guix.texi:9244 msgid "" "Run the following command to see what your network interfaces are called:" msgstr "" #. type: example #: doc/guix.texi:9247 #, no-wrap msgid "ifconfig -a\n" msgstr "" #. type: Plain text #: doc/guix.texi:9251 msgid "@dots{} or, using the GNU/Linux-specific @command{ip} command:" msgstr "" #. type: example #: doc/guix.texi:9254 #, no-wrap msgid "ip a\n" msgstr "" #. type: Plain text #: doc/guix.texi:9261 msgid "" "Wired interfaces have a name starting with @samp{e}; for example, the " "interface corresponding to the first on-board Ethernet controller is called " "@samp{eno1}. Wireless interfaces have a name starting with @samp{w}, like " "@samp{w1p2s0}." msgstr "" #. type: item #: doc/guix.texi:9263 #, no-wrap msgid "Wired connection" msgstr "" #. type: table #: doc/guix.texi:9266 msgid "" "To configure a wired network run the following command, substituting " "@var{interface} with the name of the wired interface you want to use." msgstr "" #. type: example #: doc/guix.texi:9269 #, no-wrap msgid "ifconfig @var{interface} up\n" msgstr "" #. type: item #: doc/guix.texi:9271 #, no-wrap msgid "Wireless connection" msgstr "" #. type: cindex #: doc/guix.texi:9272 doc/guix.texi:11817 #, no-wrap msgid "wireless" msgstr "" #. type: cindex #: doc/guix.texi:9273 doc/guix.texi:11818 #, no-wrap msgid "WiFi" msgstr "" #. type: table #: doc/guix.texi:9278 msgid "" "To configure wireless networking, you can create a configuration file for " "the @command{wpa_supplicant} configuration tool (its location is not " "important) using one of the available text editors such as @command{nano}:" msgstr "" #. type: example #: doc/guix.texi:9281 #, no-wrap msgid "nano wpa_supplicant.conf\n" msgstr "" #. type: table #: doc/guix.texi:9286 msgid "" "As an example, the following stanza can go to this file and will work for " "many wireless networks, provided you give the actual SSID and passphrase for " "the network you are connecting to:" msgstr "" #. type: example #: doc/guix.texi:9293 #, no-wrap msgid "" "network=@{\n" " ssid=\"@var{my-ssid}\"\n" " key_mgmt=WPA-PSK\n" " psk=\"the network's secret passphrase\"\n" "@}\n" msgstr "" #. type: table #: doc/guix.texi:9298 msgid "" "Start the wireless service and run it in the background with the following " "command (substitute @var{interface} with the name of the network interface " "you want to use):" msgstr "" #. type: example #: doc/guix.texi:9301 #, no-wrap msgid "wpa_supplicant -c wpa_supplicant.conf -i @var{interface} -B\n" msgstr "" #. type: table #: doc/guix.texi:9304 msgid "Run @command{man wpa_supplicant} for more information." msgstr "" #. type: cindex #: doc/guix.texi:9306 #, no-wrap msgid "DHCP" msgstr "" #. type: Plain text #: doc/guix.texi:9309 msgid "" "At this point, you need to acquire an IP address. On a network where IP " "addresses are automatically assigned @i{via} DHCP, you can run:" msgstr "" #. type: example #: doc/guix.texi:9312 #, no-wrap msgid "dhclient -v @var{interface}\n" msgstr "" #. type: Plain text #: doc/guix.texi:9315 msgid "Try to ping a server to see if networking is up and running:" msgstr "" #. type: example #: doc/guix.texi:9318 #, no-wrap msgid "ping -c 3 gnu.org\n" msgstr "" #. type: Plain text #: doc/guix.texi:9322 msgid "" "Setting up network access is almost always a requirement because the image " "does not contain all the software and tools that may be needed." msgstr "" #. type: cindex #: doc/guix.texi:9323 #, no-wrap msgid "installing over SSH" msgstr "" #. type: Plain text #: doc/guix.texi:9326 msgid "" "If you want to, you can continue the installation remotely by starting an " "SSH server:" msgstr "" #. type: example #: doc/guix.texi:9329 #, no-wrap msgid "herd start ssh-daemon\n" msgstr "" #. type: Plain text #: doc/guix.texi:9333 msgid "" "Make sure to either set a password with @command{passwd}, or configure " "OpenSSH public key authentication before logging in." msgstr "" #. type: subsubsection #: doc/guix.texi:9334 #, no-wrap msgid "Disk Partitioning" msgstr "" #. type: Plain text #: doc/guix.texi:9338 msgid "" "Unless this has already been done, the next step is to partition, and then " "format the target partition(s)." msgstr "" #. type: Plain text #: doc/guix.texi:9343 msgid "" "The installation image includes several partitioning tools, including Parted " "(@pxref{Overview,,, parted, GNU Parted User Manual}), @command{fdisk}, and " "@command{cfdisk}. Run it and set up your disk with the partition layout you " "want:" msgstr "" #. type: example #: doc/guix.texi:9346 #, no-wrap msgid "cfdisk\n" msgstr "" #. type: Plain text #: doc/guix.texi:9352 msgid "" "If your disk uses the GUID Partition Table (GPT) format and you plan to " "install BIOS-based GRUB (which is the default), make sure a BIOS Boot " "Partition is available (@pxref{BIOS installation,,, grub, GNU GRUB manual})." msgstr "" #. type: cindex #: doc/guix.texi:9353 #, no-wrap msgid "EFI, installation" msgstr "" #. type: cindex #: doc/guix.texi:9354 #, no-wrap msgid "UEFI, installation" msgstr "" #. type: cindex #: doc/guix.texi:9355 #, no-wrap msgid "ESP, EFI system partition" msgstr "" #. type: Plain text #: doc/guix.texi:9359 msgid "" "If you instead wish to use EFI-based GRUB, a FAT32 @dfn{EFI System " "Partition} (ESP) is required. This partition should be mounted at @file{/" "boot/efi} and must have the @code{esp} flag set. E.g., for @command{parted}:" msgstr "" #. type: example #: doc/guix.texi:9362 #, no-wrap msgid "parted /dev/sda set 1 esp on\n" msgstr "" #. type: vindex #: doc/guix.texi:9365 doc/guix.texi:22092 #, no-wrap msgid "grub-bootloader" msgstr "" #. type: vindex #: doc/guix.texi:9366 doc/guix.texi:22086 #, no-wrap msgid "grub-efi-bootloader" msgstr "" #. type: quotation #: doc/guix.texi:9373 msgid "" "Unsure whether to use EFI- or BIOS-based GRUB? If the directory @file{/sys/" "firmware/efi} exists in the installation image, then you should probably " "perform an EFI installation, using @code{grub-efi-bootloader}. Otherwise " "you should use the BIOS-based GRUB, known as @code{grub-bootloader}. " "@xref{Bootloader Configuration}, for more info on bootloaders." msgstr "" #. type: Plain text #: doc/guix.texi:9381 msgid "" "Once you are done partitioning the target hard disk drive, you have to " "create a file system on the relevant partition(s)@footnote{Currently GuixSD " "only supports ext4 and btrfs file systems. In particular, code that reads " "file system UUIDs and labels only works for these file system types.}. For " "the ESP, if you have one and assuming it is @file{/dev/sda1}, run:" msgstr "" #. type: example #: doc/guix.texi:9384 #, no-wrap msgid "mkfs.fat -F32 /dev/sda1\n" msgstr "" #. type: Plain text #: doc/guix.texi:9392 msgid "" "Preferably, assign file systems a label so that you can easily and reliably " "refer to them in @code{file-system} declarations (@pxref{File Systems}). " "This is typically done using the @code{-L} option of @command{mkfs.ext4} and " "related commands. So, assuming the target root partition lives at @file{/" "dev/sda2}, a file system with the label @code{my-root} can be created with:" msgstr "" #. type: example #: doc/guix.texi:9395 #, no-wrap msgid "mkfs.ext4 -L my-root /dev/sda2\n" msgstr "" #. type: cindex #: doc/guix.texi:9397 doc/guix.texi:9823 #, no-wrap msgid "encrypted disk" msgstr "" #. type: Plain text #: doc/guix.texi:9404 msgid "" "If you are instead planning to encrypt the root partition, you can use the " "Cryptsetup/LUKS utilities to do that (see @inlinefmtifelse{html, " "@uref{https://linux.die.net/man/8/cryptsetup, @code{man cryptsetup}}, " "@code{man cryptsetup}} for more information.) Assuming you want to store " "the root partition on @file{/dev/sda2}, the command sequence would be along " "these lines:" msgstr "" #. type: example #: doc/guix.texi:9409 #, no-wrap msgid "" "cryptsetup luksFormat /dev/sda2\n" "cryptsetup open --type luks /dev/sda2 my-partition\n" "mkfs.ext4 -L my-root /dev/mapper/my-partition\n" msgstr "" #. type: Plain text #: doc/guix.texi:9414 msgid "" "Once that is done, mount the target file system under @file{/mnt} with a " "command like (again, assuming @code{my-root} is the label of the root file " "system):" msgstr "" #. type: example #: doc/guix.texi:9417 #, no-wrap msgid "mount LABEL=my-root /mnt\n" msgstr "" #. type: Plain text #: doc/guix.texi:9423 msgid "" "Also mount any other file systems you would like to use on the target system " "relative to this path. If you have @file{/boot} on a separate partition for " "example, mount it at @file{/mnt/boot} now so it is found by @code{guix " "system init} afterwards." msgstr "" #. type: Plain text #: doc/guix.texi:9428 msgid "" "Finally, if you plan to use one or more swap partitions (@pxref{Memory " "Concepts, swap space,, libc, The GNU C Library Reference Manual}), make sure " "to initialize them with @command{mkswap}. Assuming you have one swap " "partition on @file{/dev/sda3}, you would run:" msgstr "" #. type: example #: doc/guix.texi:9432 #, no-wrap msgid "" "mkswap /dev/sda3\n" "swapon /dev/sda3\n" msgstr "" #. type: Plain text #: doc/guix.texi:9440 msgid "" "Alternatively, you may use a swap file. For example, assuming that in the " "new system you want to use the file @file{/swapfile} as a swap file, you " "would run@footnote{This example will work for many types of file systems (e." "g., ext4). However, for copy-on-write file systems (e.g., btrfs), the " "required steps may be different. For details, see the manual pages for " "@command{mkswap} and @command{swapon}.}:" msgstr "" #. type: example #: doc/guix.texi:9448 #, no-wrap msgid "" "# This is 10 GiB of swap space. Adjust \"count\" to change the size.\n" "dd if=/dev/zero of=/mnt/swapfile bs=1MiB count=10240\n" "# For security, make the file readable and writable only by root.\n" "chmod 600 /mnt/swapfile\n" "mkswap /mnt/swapfile\n" "swapon /mnt/swapfile\n" msgstr "" #. type: Plain text #: doc/guix.texi:9453 msgid "" "Note that if you have encrypted the root partition and created a swap file " "in its file system as described above, then the encryption also protects the " "swap file, just like any other file in that file system." msgstr "" #. type: Plain text #: doc/guix.texi:9459 msgid "" "With the target partitions ready and the target root mounted on @file{/mnt}, " "we're ready to go. First, run:" msgstr "" #. type: example #: doc/guix.texi:9462 #, no-wrap msgid "herd start cow-store /mnt\n" msgstr "" #. type: Plain text #: doc/guix.texi:9469 msgid "" "This makes @file{/gnu/store} copy-on-write, such that packages added to it " "during the installation phase are written to the target disk on @file{/mnt} " "rather than kept in memory. This is necessary because the first phase of " "the @command{guix system init} command (see below) entails downloads or " "builds to @file{/gnu/store} which, initially, is an in-memory file system." msgstr "" #. type: Plain text #: doc/guix.texi:9480 msgid "" "Next, you have to edit a file and provide the declaration of the operating " "system to be installed. To that end, the installation system comes with " "three text editors. We recommend GNU nano (@pxref{Top,,, nano, GNU nano " "Manual}), which supports syntax highlighting and parentheses matching; other " "editors include GNU Zile (an Emacs clone), and nvi (a clone of the original " "BSD @command{vi} editor). We strongly recommend storing that file on the " "target root file system, say, as @file{/mnt/etc/config.scm}. Failing to do " "that, you will have lost your configuration file once you have rebooted into " "the newly-installed system." msgstr "" #. type: Plain text #: doc/guix.texi:9487 msgid "" "@xref{Using the Configuration System}, for an overview of the configuration " "file. The example configurations discussed in that section are available " "under @file{/etc/configuration} in the installation image. Thus, to get " "started with a system configuration providing a graphical display server (a " "``desktop'' system), you can run something along these lines:" msgstr "" #. type: example #: doc/guix.texi:9492 #, no-wrap msgid "" "# mkdir /mnt/etc\n" "# cp /etc/configuration/desktop.scm /mnt/etc/config.scm\n" "# nano /mnt/etc/config.scm\n" msgstr "" #. type: Plain text #: doc/guix.texi:9496 msgid "" "You should pay attention to what your configuration file contains, and in " "particular:" msgstr "" #. type: itemize #: doc/guix.texi:9506 msgid "" "Make sure the @code{bootloader-configuration} form refers to the target you " "want to install GRUB on. It should mention @code{grub-bootloader} if you " "are installing GRUB in the legacy way, or @code{grub-efi-bootloader} for " "newer UEFI systems. For legacy systems, the @code{target} field names a " "device, like @code{/dev/sda}; for UEFI systems it names a path to a mounted " "EFI partition, like @code{/boot/efi}, and do make sure the path is actually " "mounted." msgstr "" #. type: itemize #: doc/guix.texi:9512 msgid "" "Be sure that your file system labels match the value of their respective " "@code{device} fields in your @code{file-system} configuration, assuming your " "@code{file-system} configuration uses the @code{file-system-label} procedure " "in its @code{device} field." msgstr "" #. type: itemize #: doc/guix.texi:9516 msgid "" "If there are encrypted or RAID partitions, make sure to add a @code{mapped-" "devices} field to describe them (@pxref{Mapped Devices})." msgstr "" #. type: Plain text #: doc/guix.texi:9521 msgid "" "Once you are done preparing the configuration file, the new system must be " "initialized (remember that the target root file system is mounted under " "@file{/mnt}):" msgstr "" #. type: example #: doc/guix.texi:9524 #, no-wrap msgid "guix system init /mnt/etc/config.scm /mnt\n" msgstr "" #. type: Plain text #: doc/guix.texi:9531 msgid "" "This copies all the necessary files and installs GRUB on @file{/dev/sdX}, " "unless you pass the @option{--no-bootloader} option. For more information, " "@pxref{Invoking guix system}. This command may trigger downloads or builds " "of missing packages, which can take some time." msgstr "" #. type: Plain text #: doc/guix.texi:9538 msgid "" "Once that command has completed---and hopefully succeeded!---you can run " "@command{reboot} and boot into the new system. The @code{root} password in " "the new system is initially empty; other users' passwords need to be " "initialized by running the @command{passwd} command as @code{root}, unless " "your configuration specifies otherwise (@pxref{user-account-password, user " "account passwords})." msgstr "" #. type: cindex #: doc/guix.texi:9539 #, no-wrap msgid "upgrading GuixSD" msgstr "" #. type: Plain text #: doc/guix.texi:9546 msgid "" "From then on, you can update GuixSD whenever you want by running " "@command{guix pull} as @code{root} (@pxref{Invoking guix pull}), and then " "running @command{guix system reconfigure} to build a new system generation " "with the latest packages and services (@pxref{Invoking guix system}). We " "recommend doing that regularly so that your system includes the latest " "security updates (@pxref{Security Updates})." msgstr "" #. type: Plain text #: doc/guix.texi:9550 msgid "" "Join us on @code{#guix} on the Freenode IRC network or on @file{guix-" "devel@@gnu.org} to share your experience---good or not so good." msgstr "" #. type: subsection #: doc/guix.texi:9552 #, no-wrap msgid "Installing GuixSD in a Virtual Machine" msgstr "" #. type: cindex #: doc/guix.texi:9554 #, no-wrap msgid "virtual machine, GuixSD installation" msgstr "" #. type: cindex #: doc/guix.texi:9555 #, no-wrap msgid "virtual private server (VPS)" msgstr "" #. type: cindex #: doc/guix.texi:9556 #, no-wrap msgid "VPS (virtual private server)" msgstr "" #. type: Plain text #: doc/guix.texi:9560 msgid "" "If you'd like to install GuixSD in a virtual machine (VM) or on a virtual " "private server (VPS) rather than on your beloved machine, this section is " "for you." msgstr "" #. type: Plain text #: doc/guix.texi:9563 msgid "" "To boot a @uref{http://qemu.org/,QEMU} VM for installing GuixSD in a disk " "image, follow these steps:" msgstr "" #. type: enumerate #: doc/guix.texi:9568 msgid "" "First, retrieve and decompress the GuixSD installation image as described " "previously (@pxref{USB Stick and DVD Installation})." msgstr "" #. type: enumerate #: doc/guix.texi:9572 msgid "" "Create a disk image that will hold the installed system. To make a qcow2-" "formatted disk image, use the @command{qemu-img} command:" msgstr "" #. type: example #: doc/guix.texi:9575 #, no-wrap msgid "qemu-img create -f qcow2 guixsd.img 50G\n" msgstr "" #. type: enumerate #: doc/guix.texi:9579 msgid "" "The resulting file will be much smaller than 50 GB (typically less than 1 " "MB), but it will grow as the virtualized storage device is filled up." msgstr "" #. type: enumerate #: doc/guix.texi:9582 msgid "Boot the USB installation image in an VM:" msgstr "" #. type: example #: doc/guix.texi:9588 #, no-wrap msgid "" "qemu-system-x86_64 -m 1024 -smp 1 \\\n" " -net user -net nic,model=virtio -boot menu=on \\\n" " -drive file=guixsd-install-@value{VERSION}.@var{system}.iso \\\n" " -drive file=guixsd.img\n" msgstr "" #. type: enumerate #: doc/guix.texi:9591 msgid "The ordering of the drives matters." msgstr "" #. type: enumerate #: doc/guix.texi:9595 msgid "" "In the VM console, quickly press the @kbd{F12} key to enter the boot menu. " "Then press the @kbd{2} key and the @kbd{RET} key to validate your selection." msgstr "" #. type: enumerate #: doc/guix.texi:9599 msgid "" "You're now root in the VM, proceed with the installation process. " "@xref{Preparing for Installation}, and follow the instructions." msgstr "" #. type: Plain text #: doc/guix.texi:9604 msgid "" "Once installation is complete, you can boot the system that's on your " "@file{guixsd.img} image. @xref{Running GuixSD in a VM}, for how to do that." msgstr "" #. type: cindex #: doc/guix.texi:9608 #, no-wrap msgid "installation image" msgstr "" #. type: Plain text #: doc/guix.texi:9611 msgid "" "The installation image described above was built using the @command{guix " "system} command, specifically:" msgstr "" #. type: example #: doc/guix.texi:9614 #, no-wrap msgid "guix system disk-image gnu/system/install.scm\n" msgstr "" #. type: Plain text #: doc/guix.texi:9619 msgid "" "Have a look at @file{gnu/system/install.scm} in the source tree, and see " "also @ref{Invoking guix system} for more information about the installation " "image." msgstr "" #. type: subsection #: doc/guix.texi:9620 #, no-wrap msgid "Building the Installation Image for ARM Boards" msgstr "" #. type: Plain text #: doc/guix.texi:9624 msgid "" "Many ARM boards require a specific variant of the @uref{http://www.denx.de/" "wiki/U-Boot/, U-Boot} bootloader." msgstr "" #. type: Plain text #: doc/guix.texi:9628 msgid "" "If you build a disk image and the bootloader is not available otherwise (on " "another boot drive etc), it's advisable to build an image that includes the " "bootloader, specifically:" msgstr "" #. type: example #: doc/guix.texi:9631 #, no-wrap msgid "guix system disk-image --system=armhf-linux -e '((@@ (gnu system install) os-with-u-boot) (@@ (gnu system install) installation-os) \"A20-OLinuXino-Lime2\")'\n" msgstr "" #. type: Plain text #: doc/guix.texi:9635 msgid "" "@code{A20-OLinuXino-Lime2} is the name of the board. If you specify an " "invalid board, a list of possible boards will be printed." msgstr "" #. type: cindex #: doc/guix.texi:9639 #, no-wrap msgid "system configuration" msgstr "" #. type: Plain text #: doc/guix.texi:9645 msgid "" "The Guix System Distribution supports a consistent whole-system " "configuration mechanism. By that we mean that all aspects of the global " "system configuration---such as the available system services, timezone and " "locale settings, user accounts---are declared in a single place. Such a " "@dfn{system configuration} can be @dfn{instantiated}---i.e., effected." msgstr "" #. type: Plain text #: doc/guix.texi:9655 msgid "" "One of the advantages of putting all the system configuration under the " "control of Guix is that it supports transactional system upgrades, and makes " "it possible to roll back to a previous system instantiation, should " "something go wrong with the new one (@pxref{Features}). Another advantage " "is that it makes it easy to replicate the exact same configuration across " "different machines, or at different points in time, without having to resort " "to additional administration tools layered on top of the own tools of the " "system." msgstr "" #. type: Plain text #: doc/guix.texi:9660 msgid "" "This section describes this mechanism. First we focus on the system " "administrator's viewpoint---explaining how the system is configured and " "instantiated. Then we show how this mechanism can be extended, for instance " "to support new system services." msgstr "" #. type: Plain text #: doc/guix.texi:9687 msgid "" "The operating system is configured by providing an @code{operating-system} " "declaration in a file that can then be passed to the @command{guix system} " "command (@pxref{Invoking guix system}). A simple setup, with the default " "system services, the default Linux-Libre kernel, initial RAM disk, and boot " "loader looks like this:" msgstr "" #. type: findex #: doc/guix.texi:9688 #, no-wrap msgid "operating-system" msgstr "" #. type: include #: doc/guix.texi:9690 #, no-wrap msgid "os-config-bare-bones.texi" msgstr "" #. type: Plain text #: doc/guix.texi:9697 msgid "" "This example should be self-describing. Some of the fields defined above, " "such as @code{host-name} and @code{bootloader}, are mandatory. Others, such " "as @code{packages} and @code{services}, can be omitted, in which case they " "get a default value." msgstr "" #. type: Plain text #: doc/guix.texi:9702 msgid "" "Below we discuss the effect of some of the most important fields " "(@pxref{operating-system Reference}, for details about all the available " "fields), and how to @dfn{instantiate} the operating system using " "@command{guix system}." msgstr "" #. type: unnumberedsubsubsec #: doc/guix.texi:9703 #, no-wrap msgid "Bootloader" msgstr "" #. type: cindex #: doc/guix.texi:9705 #, no-wrap msgid "legacy boot, on Intel machines" msgstr "" #. type: cindex #: doc/guix.texi:9706 #, no-wrap msgid "BIOS boot, on Intel machines" msgstr "" #. type: cindex #: doc/guix.texi:9707 #, no-wrap msgid "UEFI boot" msgstr "" #. type: cindex #: doc/guix.texi:9708 #, no-wrap msgid "EFI boot" msgstr "" #. type: Plain text #: doc/guix.texi:9714 msgid "" "The @code{bootloader} field describes the method that will be used to boot " "your system. Machines based on Intel processors can boot in ``legacy'' BIOS " "mode, as in the example above. However, more recent machines rely instead " "on the @dfn{Unified Extensible Firmware Interface} (UEFI) to boot. In that " "case, the @code{bootloader} field should contain something along these lines:" msgstr "" #. type: example #: doc/guix.texi:9719 #, no-wrap msgid "" "(bootloader-configuration\n" " (bootloader grub-efi-bootloader)\n" " (target \"/boot/efi\"))\n" msgstr "" #. type: Plain text #: doc/guix.texi:9723 msgid "" "@xref{Bootloader Configuration}, for more information on the available " "configuration options." msgstr "" #. type: unnumberedsubsubsec #: doc/guix.texi:9724 #, no-wrap msgid "Globally-Visible Packages" msgstr "" #. type: vindex #: doc/guix.texi:9726 #, no-wrap msgid "%base-packages" msgstr "" #. type: Plain text #: doc/guix.texi:9739 msgid "" "The @code{packages} field lists packages that will be globally visible on " "the system, for all user accounts---i.e., in every user's @code{PATH} " "environment variable---in addition to the per-user profiles (@pxref{Invoking " "guix package}). The @var{%base-packages} variable provides all the tools " "one would expect for basic user and administrator tasks---including the GNU " "Core Utilities, the GNU Networking Utilities, the GNU Zile lightweight text " "editor, @command{find}, @command{grep}, etc. The example above adds " "GNU@tie{}Screen to those, taken from the @code{(gnu packages screen)} module " "(@pxref{Package Modules}). The @code{(list package output)} syntax can be " "used to add a specific output of a package:" msgstr "" #. type: lisp #: doc/guix.texi:9743 #, no-wrap msgid "" "(use-modules (gnu packages))\n" "(use-modules (gnu packages dns))\n" "\n" msgstr "" #. type: lisp #: doc/guix.texi:9748 #, no-wrap msgid "" "(operating-system\n" " ;; ...\n" " (packages (cons (list bind \"utils\")\n" " %base-packages)))\n" msgstr "" #. type: findex #: doc/guix.texi:9750 #, no-wrap msgid "specification->package" msgstr "" #. type: Plain text #: doc/guix.texi:9759 msgid "" "Referring to packages by variable name, like @code{bind} above, has the " "advantage of being unambiguous; it also allows typos and such to be " "diagnosed right away as ``unbound variables''. The downside is that one " "needs to know which module defines which package, and to augment the " "@code{use-package-modules} line accordingly. To avoid that, one can use the " "@code{specification->package} procedure of the @code{(gnu packages)} module, " "which returns the best package for a given name or name and version:" msgstr "" #. type: lisp #: doc/guix.texi:9762 #, no-wrap msgid "" "(use-modules (gnu packages))\n" "\n" msgstr "" #. type: lisp #: doc/guix.texi:9768 #, no-wrap msgid "" "(operating-system\n" " ;; ...\n" " (packages (append (map specification->package\n" " '(\"tcpdump\" \"htop\" \"gnupg@@2.0\"))\n" " %base-packages)))\n" msgstr "" #. type: unnumberedsubsubsec #: doc/guix.texi:9770 #, no-wrap msgid "System Services" msgstr "" #. type: cindex #: doc/guix.texi:9772 doc/guix.texi:21862 doc/guix.texi:22793 #, no-wrap msgid "services" msgstr "" #. type: vindex #: doc/guix.texi:9773 #, no-wrap msgid "%base-services" msgstr "" #. type: Plain text #: doc/guix.texi:9783 msgid "" "The @code{services} field lists @dfn{system services} to be made available " "when the system starts (@pxref{Services}). The @code{operating-system} " "declaration above specifies that, in addition to the basic services, we want " "the @command{lshd} secure shell daemon listening on port 2222 " "(@pxref{Networking Services, @code{lsh-service}}). Under the hood, " "@code{lsh-service} arranges so that @code{lshd} is started with the right " "command-line options, possibly with supporting configuration files generated " "as needed (@pxref{Defining Services})." msgstr "" #. type: cindex #: doc/guix.texi:9784 #, no-wrap msgid "customization, of services" msgstr "" #. type: findex #: doc/guix.texi:9785 #, no-wrap msgid "modify-services" msgstr "" #. type: Plain text #: doc/guix.texi:9789 msgid "" "Occasionally, instead of using the base services as is, you will want to " "customize them. To do this, use @code{modify-services} (@pxref{Service " "Reference, @code{modify-services}}) to modify the list." msgstr "" #. type: Plain text #: doc/guix.texi:9794 msgid "" "For example, suppose you want to modify @code{guix-daemon} and Mingetty (the " "console log-in) in the @var{%base-services} list (@pxref{Base Services, " "@code{%base-services}}). To do that, you can write the following in your " "operating system declaration:" msgstr "" #. type: lisp #: doc/guix.texi:9807 #, no-wrap msgid "" "(define %my-services\n" " ;; My very own list of services.\n" " (modify-services %base-services\n" " (guix-service-type config =>\n" " (guix-configuration\n" " (inherit config)\n" " (use-substitutes? #f)\n" " (extra-options '(\"--gc-keep-derivations\"))))\n" " (mingetty-service-type config =>\n" " (mingetty-configuration\n" " (inherit config)))))\n" "\n" msgstr "" #. type: lisp #: doc/guix.texi:9811 #, no-wrap msgid "" "(operating-system\n" " ;; @dots{}\n" " (services %my-services))\n" msgstr "" #. type: Plain text #: doc/guix.texi:9822 msgid "" "This changes the configuration---i.e., the service parameters---of the " "@code{guix-service-type} instance, and that of all the @code{mingetty-" "service-type} instances in the @var{%base-services} list. Observe how this " "is accomplished: first, we arrange for the original configuration to be " "bound to the identifier @code{config} in the @var{body}, and then we write " "the @var{body} so that it evaluates to the desired configuration. In " "particular, notice how we use @code{inherit} to create a new configuration " "which has the same values as the old configuration, but with a few " "modifications." msgstr "" #. type: Plain text #: doc/guix.texi:9829 msgid "" "The configuration for a typical ``desktop'' usage, with an encrypted root " "partition, the X11 display server, GNOME and Xfce (users can choose which of " "these desktop environments to use at the log-in screen by pressing " "@kbd{F1}), network management, power management, and more, would look like " "this:" msgstr "" #. type: include #: doc/guix.texi:9831 #, no-wrap msgid "os-config-desktop.texi" msgstr "" #. type: Plain text #: doc/guix.texi:9836 msgid "" "A graphical system with a choice of lightweight window managers instead of " "full-blown desktop environments would look like this:" msgstr "" #. type: include #: doc/guix.texi:9838 #, no-wrap msgid "os-config-lightweight-desktop.texi" msgstr "" #. type: Plain text #: doc/guix.texi:9844 msgid "" "This example refers to the @file{/boot/efi} file system by its UUID, " "@code{1234-ABCD}. Replace this UUID with the right UUID on your system, as " "returned by the @command{blkid} command." msgstr "" #. type: Plain text #: doc/guix.texi:9848 msgid "" "@xref{Desktop Services}, for the exact list of services provided by " "@var{%desktop-services}. @xref{X.509 Certificates}, for background " "information about the @code{nss-certs} package that is used here." msgstr "" #. type: Plain text #: doc/guix.texi:9855 msgid "" "Again, @var{%desktop-services} is just a list of service objects. If you " "want to remove services from there, you can do so using the procedures for " "list filtering (@pxref{SRFI-1 Filtering and Partitioning,,, guile, GNU Guile " "Reference Manual}). For instance, the following expression returns a list " "that contains all the services in @var{%desktop-services} minus the Avahi " "service:" msgstr "" #. type: example #: doc/guix.texi:9860 #, no-wrap msgid "" "(remove (lambda (service)\n" " (eq? (service-kind service) avahi-service-type))\n" " %desktop-services)\n" msgstr "" #. type: unnumberedsubsubsec #: doc/guix.texi:9862 #, no-wrap msgid "Instantiating the System" msgstr "" #. type: Plain text #: doc/guix.texi:9869 msgid "" "Assuming the @code{operating-system} declaration is stored in the @file{my-" "system-config.scm} file, the @command{guix system reconfigure my-system-" "config.scm} command instantiates that configuration, and makes it the " "default GRUB boot entry (@pxref{Invoking guix system})." msgstr "" #. type: Plain text #: doc/guix.texi:9877 msgid "" "The normal way to change the system configuration is by updating this file " "and re-running @command{guix system reconfigure}. One should never have to " "touch files in @file{/etc} or to run commands that modify the system state " "such as @command{useradd} or @command{grub-install}. In fact, you must " "avoid that since that would not only void your warranty but also prevent you " "from rolling back to previous versions of your system, should you ever need " "to." msgstr "" #. type: cindex #: doc/guix.texi:9878 #, no-wrap msgid "roll-back, of the operating system" msgstr "" #. type: Plain text #: doc/guix.texi:9888 msgid "" "Speaking of roll-back, each time you run @command{guix system reconfigure}, " "a new @dfn{generation} of the system is created---without modifying or " "deleting previous generations. Old system generations get an entry in the " "bootloader boot menu, allowing you to boot them in case something went wrong " "with the latest generation. Reassuring, no? The @command{guix system list-" "generations} command lists the system generations available on disk. It is " "also possible to roll back the system via the commands @command{guix system " "roll-back} and @command{guix system switch-generation}." msgstr "" #. type: Plain text #: doc/guix.texi:9894 msgid "" "Although the @command{guix system reconfigure} command will not modify " "previous generations, you must take care when the current generation is not " "the latest (e.g., after invoking @command{guix system roll-back}), since the " "operation might overwrite a later generation (@pxref{Invoking guix system})." msgstr "" #. type: unnumberedsubsubsec #: doc/guix.texi:9895 #, no-wrap msgid "The Programming Interface" msgstr "" #. type: Plain text #: doc/guix.texi:9900 msgid "" "At the Scheme level, the bulk of an @code{operating-system} declaration is " "instantiated with the following monadic procedure (@pxref{The Store Monad}):" msgstr "" #. type: deffn #: doc/guix.texi:9901 #, no-wrap msgid "{Monadic Procedure} operating-system-derivation os" msgstr "" #. type: deffn #: doc/guix.texi:9904 msgid "" "Return a derivation that builds @var{os}, an @code{operating-system} object " "(@pxref{Derivations})." msgstr "" #. type: deffn #: doc/guix.texi:9908 msgid "" "The output of the derivation is a single directory that refers to all the " "packages, configuration files, and other supporting files needed to " "instantiate @var{os}." msgstr "" #. type: Plain text #: doc/guix.texi:9913 msgid "" "This procedure is provided by the @code{(gnu system)} module. Along with " "@code{(gnu services)} (@pxref{Services}), this module contains the guts of " "GuixSD. Make sure to visit it!" msgstr "" #. type: subsection #: doc/guix.texi:9916 #, no-wrap msgid "@code{operating-system} Reference" msgstr "" #. type: Plain text #: doc/guix.texi:9921 msgid "" "This section summarizes all the options available in @code{operating-system} " "declarations (@pxref{Using the Configuration System})." msgstr "" #. type: deftp #: doc/guix.texi:9922 #, no-wrap msgid "{Data Type} operating-system" msgstr "" #. type: deftp #: doc/guix.texi:9926 msgid "" "This is the data type representing an operating system configuration. By " "that, we mean all the global system configuration, not per-user " "configuration (@pxref{Using the Configuration System})." msgstr "" #. type: item #: doc/guix.texi:9928 #, no-wrap msgid "@code{kernel} (default: @var{linux-libre})" msgstr "" #. type: table #: doc/guix.texi:9932 msgid "" "The package object of the operating system kernel to use@footnote{Currently " "only the Linux-libre kernel is supported. In the future, it will be " "possible to use the GNU@tie{}Hurd.}." msgstr "" #. type: item #: doc/guix.texi:9933 #, no-wrap msgid "@code{kernel-arguments} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:9936 msgid "" "List of strings or gexps representing additional arguments to pass on the " "command-line of the kernel---e.g., @code{(\"console=ttyS0\")}." msgstr "" #. type: code{#1} #: doc/guix.texi:9937 doc/guix.texi:22059 doc/guix.texi:22078 #, no-wrap msgid "bootloader" msgstr "" #. type: table #: doc/guix.texi:9939 msgid "" "The system bootloader configuration object. @xref{Bootloader Configuration}." msgstr "" #. type: item #: doc/guix.texi:9940 #, no-wrap msgid "@code{initrd-modules} (default: @code{%base-initrd-modules})" msgstr "" #. type: code{#1} #: doc/guix.texi:9941 doc/guix.texi:21899 doc/guix.texi:22002 #: doc/guix.texi:22210 #, no-wrap msgid "initrd" msgstr "" #. type: cindex #: doc/guix.texi:9942 doc/guix.texi:21900 doc/guix.texi:22003 #, no-wrap msgid "initial RAM disk" msgstr "" #. type: table #: doc/guix.texi:9945 msgid "" "The list of Linux kernel modules that need to be available in the initial " "RAM disk. @xref{Initial RAM Disk}." msgstr "" #. type: item #: doc/guix.texi:9946 #, no-wrap msgid "@code{initrd} (default: @code{base-initrd})" msgstr "" #. type: table #: doc/guix.texi:9950 msgid "" "A procedure that returns an initial RAM disk for the Linux kernel. This " "field is provided to support low-level customization and should rarely be " "needed for casual use. @xref{Initial RAM Disk}." msgstr "" #. type: item #: doc/guix.texi:9951 #, no-wrap msgid "@code{firmware} (default: @var{%base-firmware})" msgstr "" #. type: cindex #: doc/guix.texi:9952 #, no-wrap msgid "firmware" msgstr "" #. type: table #: doc/guix.texi:9954 msgid "List of firmware packages loadable by the operating system kernel." msgstr "" #. type: table #: doc/guix.texi:9959 msgid "" "The default includes firmware needed for Atheros- and Broadcom-based WiFi " "devices (Linux-libre modules @code{ath9k} and @code{b43-open}, " "respectively). @xref{Hardware Considerations}, for more info on supported " "hardware." msgstr "" #. type: code{#1} #: doc/guix.texi:9960 #, no-wrap msgid "host-name" msgstr "" #. type: table #: doc/guix.texi:9962 msgid "The host name." msgstr "" #. type: code{#1} #: doc/guix.texi:9963 #, no-wrap msgid "hosts-file" msgstr "" #. type: cindex #: doc/guix.texi:9964 #, no-wrap msgid "hosts file" msgstr "" #. type: table #: doc/guix.texi:9969 msgid "" "A file-like object (@pxref{G-Expressions, file-like objects}) for use as " "@file{/etc/hosts} (@pxref{Host Names,,, libc, The GNU C Library Reference " "Manual}). The default is a file with entries for @code{localhost} and " "@var{host-name}." msgstr "" #. type: item #: doc/guix.texi:9970 #, no-wrap msgid "@code{mapped-devices} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:9972 msgid "A list of mapped devices. @xref{Mapped Devices}." msgstr "" #. type: code{#1} #: doc/guix.texi:9973 #, no-wrap msgid "file-systems" msgstr "" #. type: table #: doc/guix.texi:9975 msgid "A list of file systems. @xref{File Systems}." msgstr "" #. type: item #: doc/guix.texi:9976 #, no-wrap msgid "@code{swap-devices} (default: @code{'()})" msgstr "" #. type: cindex #: doc/guix.texi:9977 #, no-wrap msgid "swap devices" msgstr "" #. type: table #: doc/guix.texi:9984 msgid "" "A list of strings identifying devices or files to be used for ``swap " "space'' (@pxref{Memory Concepts,,, libc, The GNU C Library Reference " "Manual}). For example, @code{'(\"/dev/sda3\")} or @code{'(\"/swapfile\")}. " "It is possible to specify a swap file in a file system on a mapped device, " "provided that the necessary device mapping and file system are also " "specified. @xref{Mapped Devices} and @ref{File Systems}." msgstr "" #. type: item #: doc/guix.texi:9985 #, no-wrap msgid "@code{users} (default: @code{%base-user-accounts})" msgstr "" #. type: itemx #: doc/guix.texi:9986 #, no-wrap msgid "@code{groups} (default: @var{%base-groups})" msgstr "" #. type: table #: doc/guix.texi:9988 msgid "List of user accounts and groups. @xref{User Accounts}." msgstr "" #. type: table #: doc/guix.texi:9991 msgid "" "If the @code{users} list lacks a user account with UID@tie{}0, a ``root'' " "account with UID@tie{}0 is automatically added." msgstr "" #. type: item #: doc/guix.texi:9992 #, no-wrap msgid "@code{skeletons} (default: @code{(default-skeletons)})" msgstr "" #. type: table #: doc/guix.texi:9996 msgid "" "A list target file name/file-like object tuples (@pxref{G-Expressions, file-" "like objects}). These are the skeleton files that will be added to the home " "directory of newly-created user accounts." msgstr "" #. type: table #: doc/guix.texi:9998 msgid "For instance, a valid value may look like this:" msgstr "" #. type: example #: doc/guix.texi:10004 #, no-wrap msgid "" "`((\".bashrc\" ,(plain-file \"bashrc\" \"echo Hello\\n\"))\n" " (\".guile\" ,(plain-file \"guile\"\n" " \"(use-modules (ice-9 readline))\n" " (activate-readline)\")))\n" msgstr "" #. type: item #: doc/guix.texi:10006 #, no-wrap msgid "@code{issue} (default: @var{%default-issue})" msgstr "" #. type: table #: doc/guix.texi:10009 msgid "" "A string denoting the contents of the @file{/etc/issue} file, which is " "displayed when users log in on a text console." msgstr "" #. type: item #: doc/guix.texi:10010 #, no-wrap msgid "@code{packages} (default: @var{%base-packages})" msgstr "" #. type: table #: doc/guix.texi:10013 msgid "" "The set of packages installed in the global profile, which is accessible at " "@file{/run/current-system/profile}." msgstr "" #. type: table #: doc/guix.texi:10017 msgid "" "The default set includes core utilities and it is good practice to install " "non-core utilities in user profiles (@pxref{Invoking guix package})." msgstr "" #. type: code{#1} #: doc/guix.texi:10018 #, no-wrap msgid "timezone" msgstr "" #. type: table #: doc/guix.texi:10020 msgid "A timezone identifying string---e.g., @code{\"Europe/Paris\"}." msgstr "" #. type: table #: doc/guix.texi:10024 msgid "" "You can run the @command{tzselect} command to find out which timezone string " "corresponds to your region. Choosing an invalid timezone name causes " "@command{guix system} to fail." msgstr "" #. type: item #: doc/guix.texi:10025 #, no-wrap msgid "@code{locale} (default: @code{\"en_US.utf8\"})" msgstr "" #. type: table #: doc/guix.texi:10028 msgid "" "The name of the default locale (@pxref{Locale Names,,, libc, The GNU C " "Library Reference Manual}). @xref{Locales}, for more information." msgstr "" #. type: item #: doc/guix.texi:10029 #, no-wrap msgid "@code{locale-definitions} (default: @var{%default-locale-definitions})" msgstr "" #. type: table #: doc/guix.texi:10032 msgid "" "The list of locale definitions to be compiled and that may be used at run " "time. @xref{Locales}." msgstr "" #. type: item #: doc/guix.texi:10033 #, no-wrap msgid "@code{locale-libcs} (default: @code{(list @var{glibc})})" msgstr "" #. type: table #: doc/guix.texi:10037 msgid "" "The list of GNU@tie{}libc packages whose locale data and tools are used to " "build the locale definitions. @xref{Locales}, for compatibility " "considerations that justify this option." msgstr "" #. type: item #: doc/guix.texi:10038 #, no-wrap msgid "@code{name-service-switch} (default: @var{%default-nss})" msgstr "" #. type: table #: doc/guix.texi:10042 msgid "" "Configuration of the libc name service switch (NSS)---a @code{} object. @xref{Name Service Switch}, for details." msgstr "" #. type: item #: doc/guix.texi:10043 #, no-wrap msgid "@code{services} (default: @var{%base-services})" msgstr "" #. type: table #: doc/guix.texi:10045 msgid "A list of service objects denoting system services. @xref{Services}." msgstr "" #. type: item #: doc/guix.texi:10046 #, no-wrap msgid "@code{pam-services} (default: @code{(base-pam-services)})" msgstr "" #. type: cindex #: doc/guix.texi:10047 #, no-wrap msgid "PAM" msgstr "" #. type: cindex #: doc/guix.texi:10048 #, no-wrap msgid "pluggable authentication modules" msgstr "" #. type: table #: doc/guix.texi:10051 msgid "Linux @dfn{pluggable authentication module} (PAM) services." msgstr "" #. type: item #: doc/guix.texi:10052 #, no-wrap msgid "@code{setuid-programs} (default: @var{%setuid-programs})" msgstr "" #. type: table #: doc/guix.texi:10055 msgid "" "List of string-valued G-expressions denoting setuid programs. @xref{Setuid " "Programs}." msgstr "" #. type: item #: doc/guix.texi:10056 #, no-wrap msgid "@code{sudoers-file} (default: @var{%sudoers-specification})" msgstr "" #. type: cindex #: doc/guix.texi:10057 #, no-wrap msgid "sudoers file" msgstr "" #. type: table #: doc/guix.texi:10060 msgid "" "The contents of the @file{/etc/sudoers} file as a file-like object (@pxref{G-" "Expressions, @code{local-file} and @code{plain-file}})." msgstr "" #. type: table #: doc/guix.texi:10065 msgid "" "This file specifies which users can use the @command{sudo} command, what " "they are allowed to do, and what privileges they may gain. The default is " "that only @code{root} and members of the @code{wheel} group may use " "@code{sudo}." msgstr "" #. type: Plain text #: doc/guix.texi:10076 msgid "" "The list of file systems to be mounted is specified in the @code{file-" "systems} field of the operating system declaration (@pxref{Using the " "Configuration System}). Each file system is declared using the @code{file-" "system} form, like this:" msgstr "" #. type: example #: doc/guix.texi:10082 #, no-wrap msgid "" "(file-system\n" " (mount-point \"/home\")\n" " (device \"/dev/sda3\")\n" " (type \"ext4\"))\n" msgstr "" #. type: Plain text #: doc/guix.texi:10086 msgid "" "As usual, some of the fields are mandatory---those shown in the example " "above---while others can be omitted. These are described below." msgstr "" #. type: deftp #: doc/guix.texi:10087 #, no-wrap msgid "{Data Type} file-system" msgstr "" #. type: deftp #: doc/guix.texi:10090 msgid "" "Objects of this type represent file systems to be mounted. They contain the " "following members:" msgstr "" #. type: item #: doc/guix.texi:10092 doc/guix.texi:10278 #, no-wrap msgid "type" msgstr "" #. type: table #: doc/guix.texi:10095 msgid "" "This is a string specifying the type of the file system---e.g., " "@code{\"ext4\"}." msgstr "" #. type: code{#1} #: doc/guix.texi:10096 #, no-wrap msgid "mount-point" msgstr "" #. type: table #: doc/guix.texi:10098 msgid "This designates the place where the file system is to be mounted." msgstr "" #. type: code{#1} #: doc/guix.texi:10099 #, no-wrap msgid "device" msgstr "" #. type: table #: doc/guix.texi:10109 msgid "" "This names the ``source'' of the file system. It can be one of three " "things: a file system label, a file system UUID, or the name of a @file{/" "dev} node. Labels and UUIDs offer a way to refer to file systems without " "having to hard-code their actual device name@footnote{Note that, while it is " "tempting to use @file{/dev/disk/by-uuid} and similar device names to achieve " "the same result, this is not recommended: These special device nodes are " "created by the udev daemon and may be unavailable at the time the device is " "mounted.}." msgstr "" #. type: findex #: doc/guix.texi:10110 #, no-wrap msgid "file-system-label" msgstr "" #. type: table #: doc/guix.texi:10115 msgid "" "File system labels are created using the @code{file-system-label} procedure, " "UUIDs are created using @code{uuid}, and @file{/dev} node are plain " "strings. Here's an example of a file system referred to by its label, as " "shown by the @command{e2label} command:" msgstr "" #. type: example #: doc/guix.texi:10121 #, no-wrap msgid "" "(file-system\n" " (mount-point \"/home\")\n" " (type \"ext4\")\n" " (device (file-system-label \"my-home\")))\n" msgstr "" #. type: findex #: doc/guix.texi:10123 #, no-wrap msgid "uuid" msgstr "" #. type: table #: doc/guix.texi:10131 msgid "" "UUIDs are converted from their string representation (as shown by the " "@command{tune2fs -l} command) using the @code{uuid} form@footnote{The " "@code{uuid} form expects 16-byte UUIDs as defined in @uref{https://tools." "ietf.org/html/rfc4122, RFC@tie{}4122}. This is the form of UUID used by the " "ext2 family of file systems and others, but it is different from ``UUIDs'' " "found in FAT file systems, for instance.}, like this:" msgstr "" #. type: example #: doc/guix.texi:10137 #, no-wrap msgid "" "(file-system\n" " (mount-point \"/home\")\n" " (type \"ext4\")\n" " (device (uuid \"4dab5feb-d176-45de-b287-9b0a6e4c01cb\")))\n" msgstr "" #. type: table #: doc/guix.texi:10145 msgid "" "When the source of a file system is a mapped device (@pxref{Mapped " "Devices}), its @code{device} field @emph{must} refer to the mapped device " "name---e.g., @file{\"/dev/mapper/root-partition\"}. This is required so " "that the system knows that mounting the file system depends on having the " "corresponding device mapping established." msgstr "" #. type: item #: doc/guix.texi:10146 #, no-wrap msgid "@code{flags} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:10151 msgid "" "This is a list of symbols denoting mount flags. Recognized flags include " "@code{read-only}, @code{bind-mount}, @code{no-dev} (disallow access to " "special files), @code{no-suid} (ignore setuid and setgid bits), and @code{no-" "exec} (disallow program execution.)" msgstr "" #. type: item #: doc/guix.texi:10152 #, no-wrap msgid "@code{options} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10154 msgid "This is either @code{#f}, or a string denoting mount options." msgstr "" #. type: item #: doc/guix.texi:10155 #, no-wrap msgid "@code{mount?} (default: @code{#t})" msgstr "" #. type: table #: doc/guix.texi:10160 msgid "" "This value indicates whether to automatically mount the file system when the " "system is brought up. When set to @code{#f}, the file system gets an entry " "in @file{/etc/fstab} (read by the @command{mount} command) but is not " "automatically mounted." msgstr "" #. type: item #: doc/guix.texi:10161 #, no-wrap msgid "@code{needed-for-boot?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10166 msgid "" "This Boolean value indicates whether the file system is needed when " "booting. If that is true, then the file system is mounted when the initial " "RAM disk (initrd) is loaded. This is always the case, for instance, for the " "root file system." msgstr "" #. type: item #: doc/guix.texi:10167 #, no-wrap msgid "@code{check?} (default: @code{#t})" msgstr "" #. type: table #: doc/guix.texi:10170 msgid "" "This Boolean indicates whether the file system needs to be checked for " "errors before being mounted." msgstr "" #. type: item #: doc/guix.texi:10171 #, no-wrap msgid "@code{create-mount-point?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10173 msgid "When true, the mount point is created if it does not exist yet." msgstr "" #. type: item #: doc/guix.texi:10174 #, no-wrap msgid "@code{dependencies} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:10178 msgid "" "This is a list of @code{} or @code{} objects " "representing file systems that must be mounted or mapped devices that must " "be opened before (and unmounted or closed after) this one." msgstr "" #. type: table #: doc/guix.texi:10182 msgid "" "As an example, consider a hierarchy of mounts: @file{/sys/fs/cgroup} is a " "dependency of @file{/sys/fs/cgroup/cpu} and @file{/sys/fs/cgroup/memory}." msgstr "" #. type: table #: doc/guix.texi:10185 msgid "" "Another example is a file system that depends on a mapped device, for " "example for an encrypted partition (@pxref{Mapped Devices})." msgstr "" #. type: Plain text #: doc/guix.texi:10190 msgid "" "The @code{(gnu system file-systems)} exports the following useful variables." msgstr "" #. type: defvr #: doc/guix.texi:10191 #, no-wrap msgid "{Scheme Variable} %base-file-systems" msgstr "" #. type: defvr #: doc/guix.texi:10196 msgid "" "These are essential file systems that are required on normal systems, such " "as @var{%pseudo-terminal-file-system} and @var{%immutable-store} (see " "below.) Operating system declarations should always contain at least these." msgstr "" #. type: defvr #: doc/guix.texi:10198 #, no-wrap msgid "{Scheme Variable} %pseudo-terminal-file-system" msgstr "" #. type: defvr #: doc/guix.texi:10204 msgid "" "This is the file system to be mounted as @file{/dev/pts}. It supports " "@dfn{pseudo-terminals} created @i{via} @code{openpty} and similar functions " "(@pxref{Pseudo-Terminals,,, libc, The GNU C Library Reference Manual}). " "Pseudo-terminals are used by terminal emulators such as @command{xterm}." msgstr "" #. type: defvr #: doc/guix.texi:10206 #, no-wrap msgid "{Scheme Variable} %shared-memory-file-system" msgstr "" #. type: defvr #: doc/guix.texi:10210 msgid "" "This file system is mounted as @file{/dev/shm} and is used to support memory " "sharing across processes (@pxref{Memory-mapped I/O, @code{shm_open},, libc, " "The GNU C Library Reference Manual})." msgstr "" #. type: defvr #: doc/guix.texi:10212 #, no-wrap msgid "{Scheme Variable} %immutable-store" msgstr "" #. type: defvr #: doc/guix.texi:10217 msgid "" "This file system performs a read-only ``bind mount'' of @file{/gnu/store}, " "making it read-only for all the users including @code{root}. This prevents " "against accidental modification by software running as @code{root} or by " "system administrators." msgstr "" #. type: defvr #: doc/guix.texi:10220 msgid "" "The daemon itself is still able to write to the store: it remounts it read-" "write in its own ``name space.''" msgstr "" #. type: defvr #: doc/guix.texi:10222 #, no-wrap msgid "{Scheme Variable} %binary-format-file-system" msgstr "" #. type: defvr #: doc/guix.texi:10226 msgid "" "The @code{binfmt_misc} file system, which allows handling of arbitrary " "executable file types to be delegated to user space. This requires the " "@code{binfmt.ko} kernel module to be loaded." msgstr "" #. type: defvr #: doc/guix.texi:10228 #, no-wrap msgid "{Scheme Variable} %fuse-control-file-system" msgstr "" #. type: defvr #: doc/guix.texi:10232 msgid "" "The @code{fusectl} file system, which allows unprivileged users to mount and " "unmount user-space FUSE file systems. This requires the @code{fuse.ko} " "kernel module to be loaded." msgstr "" #. type: cindex #: doc/guix.texi:10237 #, no-wrap msgid "device mapping" msgstr "" #. type: cindex #: doc/guix.texi:10238 #, no-wrap msgid "mapped devices" msgstr "" #. type: Plain text #: doc/guix.texi:10256 msgid "" "The Linux kernel has a notion of @dfn{device mapping}: a block device, such " "as a hard disk partition, can be @dfn{mapped} into another device, usually " "in @code{/dev/mapper/}, with additional processing over the data that flows " "through it@footnote{Note that the GNU@tie{}Hurd makes no difference between " "the concept of a ``mapped device'' and that of a file system: both boil down " "to @emph{translating} input/output operations made on a file to operations " "on its backing store. Thus, the Hurd implements mapped devices, like file " "systems, using the generic @dfn{translator} mechanism (@pxref{Translators,,, " "hurd, The GNU Hurd Reference Manual}).}. A typical example is encryption " "device mapping: all writes to the mapped device are encrypted, and all reads " "are deciphered, transparently. Guix extends this notion by considering any " "device or set of devices that are @dfn{transformed} in some way to create a " "new device; for instance, RAID devices are obtained by @dfn{assembling} " "several other devices, such as hard disks or partitions, into a new one that " "behaves as one partition. Other examples, not yet implemented, are LVM " "logical volumes." msgstr "" #. type: Plain text #: doc/guix.texi:10259 msgid "" "Mapped devices are declared using the @code{mapped-device} form, defined as " "follows; for examples, see below." msgstr "" #. type: deftp #: doc/guix.texi:10260 #, no-wrap msgid "{Data Type} mapped-device" msgstr "" #. type: deftp #: doc/guix.texi:10263 msgid "" "Objects of this type represent device mappings that will be made when the " "system boots up." msgstr "" #. type: table #: doc/guix.texi:10269 msgid "" "This is either a string specifying the name of the block device to be " "mapped, such as @code{\"/dev/sda3\"}, or a list of such strings when several " "devices need to be assembled for creating a new one." msgstr "" #. type: code{#1} #: doc/guix.texi:10270 doc/guix.texi:22103 #, no-wrap msgid "target" msgstr "" #. type: table #: doc/guix.texi:10277 msgid "" "This string specifies the name of the resulting mapped device. For kernel " "mappers such as encrypted devices of type @code{luks-device-mapping}, " "specifying @code{\"my-partition\"} leads to the creation of the @code{\"/dev/" "mapper/my-partition\"} device. For RAID devices of type @code{raid-device-" "mapping}, the full device name such as @code{\"/dev/md0\"} needs to be given." msgstr "" #. type: table #: doc/guix.texi:10281 msgid "" "This must be a @code{mapped-device-kind} object, which specifies how " "@var{source} is mapped to @var{target}." msgstr "" #. type: defvr #: doc/guix.texi:10284 #, no-wrap msgid "{Scheme Variable} luks-device-mapping" msgstr "" #. type: defvr #: doc/guix.texi:10288 msgid "" "This defines LUKS block device encryption using the @command{cryptsetup} " "command from the package with the same name. It relies on the @code{dm-" "crypt} Linux kernel module." msgstr "" #. type: defvr #: doc/guix.texi:10290 #, no-wrap msgid "{Scheme Variable} raid-device-mapping" msgstr "" #. type: defvr #: doc/guix.texi:10295 msgid "" "This defines a RAID device, which is assembled using the @code{mdadm} " "command from the package with the same name. It requires a Linux kernel " "module for the appropriate RAID level to be loaded, such as @code{raid456} " "for RAID-4, RAID-5 or RAID-6, or @code{raid10} for RAID-10." msgstr "" #. type: cindex #: doc/guix.texi:10297 #, no-wrap msgid "disk encryption" msgstr "" #. type: cindex #: doc/guix.texi:10298 #, no-wrap msgid "LUKS" msgstr "" #. type: Plain text #: doc/guix.texi:10306 msgid "" "The following example specifies a mapping from @file{/dev/sda3} to @file{/" "dev/mapper/home} using LUKS---the @url{https://gitlab.com/cryptsetup/" "cryptsetup,Linux Unified Key Setup}, a standard mechanism for disk " "encryption. The @file{/dev/mapper/home} device can then be used as the " "@code{device} of a @code{file-system} declaration (@pxref{File Systems})." msgstr "" #. type: example #: doc/guix.texi:10312 #, no-wrap msgid "" "(mapped-device\n" " (source \"/dev/sda3\")\n" " (target \"home\")\n" " (type luks-device-mapping))\n" msgstr "" #. type: Plain text #: doc/guix.texi:10317 msgid "" "Alternatively, to become independent of device numbering, one may obtain the " "LUKS UUID (@dfn{unique identifier}) of the source device by a command like:" msgstr "" #. type: example #: doc/guix.texi:10320 #, no-wrap msgid "cryptsetup luksUUID /dev/sda3\n" msgstr "" #. type: Plain text #: doc/guix.texi:10323 msgid "and use it as follows:" msgstr "" #. type: example #: doc/guix.texi:10329 #, no-wrap msgid "" "(mapped-device\n" " (source (uuid \"cb67fc72-0d54-4c88-9d4b-b225f30b0f44\"))\n" " (target \"home\")\n" " (type luks-device-mapping))\n" msgstr "" #. type: cindex #: doc/guix.texi:10331 #, no-wrap msgid "swap encryption" msgstr "" #. type: Plain text #: doc/guix.texi:10337 msgid "" "It is also desirable to encrypt swap space, since swap space may contain " "sensitive data. One way to accomplish that is to use a swap file in a file " "system on a device mapped via LUKS encryption. In this way, the swap file " "is encrypted because the entire device is encrypted. @xref{Preparing for " "Installation,,Disk Partitioning}, for an example." msgstr "" #. type: Plain text #: doc/guix.texi:10340 msgid "" "A RAID device formed of the partitions @file{/dev/sda1} and @file{/dev/sdb1} " "may be declared as follows:" msgstr "" #. type: example #: doc/guix.texi:10346 #, no-wrap msgid "" "(mapped-device\n" " (source (list \"/dev/sda1\" \"/dev/sdb1\"))\n" " (target \"/dev/md0\")\n" " (type raid-device-mapping))\n" msgstr "" #. type: Plain text #: doc/guix.texi:10353 msgid "" "The @file{/dev/md0} device can then be used as the @code{device} of a " "@code{file-system} declaration (@pxref{File Systems}). Note that the RAID " "level need not be given; it is chosen during the initial creation and " "formatting of the RAID device and is determined automatically later." msgstr "" #. type: cindex #: doc/guix.texi:10358 #, no-wrap msgid "users" msgstr "" #. type: cindex #: doc/guix.texi:10359 #, no-wrap msgid "accounts" msgstr "" #. type: cindex #: doc/guix.texi:10360 #, no-wrap msgid "user accounts" msgstr "" #. type: Plain text #: doc/guix.texi:10364 msgid "" "User accounts and groups are entirely managed through the @code{operating-" "system} declaration. They are specified with the @code{user-account} and " "@code{user-group} forms:" msgstr "" #. type: example #: doc/guix.texi:10375 #, no-wrap msgid "" "(user-account\n" " (name \"alice\")\n" " (group \"users\")\n" " (supplementary-groups '(\"wheel\" ;allow use of sudo, etc.\n" " \"audio\" ;sound card\n" " \"video\" ;video devices such as webcams\n" " \"cdrom\")) ;the good ol' CD-ROM\n" " (comment \"Bob's sister\")\n" " (home-directory \"/home/alice\"))\n" msgstr "" #. type: Plain text #: doc/guix.texi:10384 msgid "" "When booting or upon completion of @command{guix system reconfigure}, the " "system ensures that only the user accounts and groups specified in the " "@code{operating-system} declaration exist, and with the specified " "properties. Thus, account or group creations or modifications made by " "directly invoking commands such as @command{useradd} are lost upon " "reconfiguration or reboot. This ensures that the system remains exactly as " "declared." msgstr "" #. type: deftp #: doc/guix.texi:10385 #, no-wrap msgid "{Data Type} user-account" msgstr "" #. type: deftp #: doc/guix.texi:10388 msgid "" "Objects of this type represent user accounts. The following members may be " "specified:" msgstr "" #. type: table #: doc/guix.texi:10392 msgid "The name of the user account." msgstr "" #. type: itemx #: doc/guix.texi:10393 doc/guix.texi:21853 #, no-wrap msgid "group" msgstr "" #. type: cindex #: doc/guix.texi:10394 doc/guix.texi:10443 #, no-wrap msgid "groups" msgstr "" #. type: table #: doc/guix.texi:10397 msgid "" "This is the name (a string) or identifier (a number) of the user group this " "account belongs to." msgstr "" #. type: item #: doc/guix.texi:10398 #, no-wrap msgid "@code{supplementary-groups} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:10401 msgid "" "Optionally, this can be defined as a list of group names that this account " "belongs to." msgstr "" #. type: item #: doc/guix.texi:10402 #, no-wrap msgid "@code{uid} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10406 msgid "" "This is the user ID for this account (a number), or @code{#f}. In the " "latter case, a number is automatically chosen by the system when the account " "is created." msgstr "" #. type: item #: doc/guix.texi:10407 #, no-wrap msgid "@code{comment} (default: @code{\"\"})" msgstr "" #. type: table #: doc/guix.texi:10409 msgid "A comment about the account, such as the account owner's full name." msgstr "" #. type: code{#1} #: doc/guix.texi:10410 #, no-wrap msgid "home-directory" msgstr "" #. type: table #: doc/guix.texi:10412 msgid "This is the name of the home directory for the account." msgstr "" #. type: item #: doc/guix.texi:10413 #, no-wrap msgid "@code{create-home-directory?} (default: @code{#t})" msgstr "" #. type: table #: doc/guix.texi:10416 msgid "" "Indicates whether the home directory of this account should be created if it " "does not exist yet." msgstr "" #. type: item #: doc/guix.texi:10417 #, no-wrap msgid "@code{shell} (default: Bash)" msgstr "" #. type: table #: doc/guix.texi:10420 msgid "" "This is a G-expression denoting the file name of a program to be used as the " "shell (@pxref{G-Expressions})." msgstr "" #. type: item #: doc/guix.texi:10421 doc/guix.texi:10461 #, no-wrap msgid "@code{system?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10425 msgid "" "This Boolean value indicates whether the account is a ``system'' account. " "System accounts are sometimes treated specially; for instance, graphical " "login managers do not list them." msgstr "" #. type: anchor{#1} #: doc/guix.texi:10427 msgid "user-account-password" msgstr "" #. type: item #: doc/guix.texi:10427 doc/guix.texi:10465 #, no-wrap msgid "@code{password} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10433 msgid "" "You would normally leave this field to @code{#f}, initialize user passwords " "as @code{root} with the @command{passwd} command, and then let users change " "it with @command{passwd}. Passwords set with @command{passwd} are of course " "preserved across reboot and reconfiguration." msgstr "" #. type: table #: doc/guix.texi:10439 msgid "" "If you @emph{do} want to have a preset password for an account, then this " "field must contain the encrypted password, as a string. @xref{crypt,,, " "libc, The GNU C Library Reference Manual}, for more information on password " "encryption, and @ref{Encryption,,, guile, GNU Guile Reference Manual}, for " "information on Guile's @code{crypt} procedure." msgstr "" #. type: Plain text #: doc/guix.texi:10445 msgid "User group declarations are even simpler:" msgstr "" #. type: example #: doc/guix.texi:10448 #, no-wrap msgid "(user-group (name \"students\"))\n" msgstr "" #. type: deftp #: doc/guix.texi:10450 #, no-wrap msgid "{Data Type} user-group" msgstr "" #. type: deftp #: doc/guix.texi:10452 msgid "This type is for, well, user groups. There are just a few fields:" msgstr "" #. type: table #: doc/guix.texi:10456 msgid "The name of the group." msgstr "" #. type: item #: doc/guix.texi:10457 #, no-wrap msgid "@code{id} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10460 msgid "" "The group identifier (a number). If @code{#f}, a new number is " "automatically allocated when the group is created." msgstr "" #. type: table #: doc/guix.texi:10464 msgid "" "This Boolean value indicates whether the group is a ``system'' group. " "System groups have low numerical IDs." msgstr "" #. type: table #: doc/guix.texi:10468 msgid "" "What, user groups can have a password? Well, apparently yes. Unless " "@code{#f}, this field specifies the password of the group." msgstr "" #. type: Plain text #: doc/guix.texi:10474 msgid "" "For convenience, a variable lists all the basic user groups one may expect:" msgstr "" #. type: defvr #: doc/guix.texi:10475 #, no-wrap msgid "{Scheme Variable} %base-groups" msgstr "" #. type: defvr #: doc/guix.texi:10480 msgid "" "This is the list of basic user groups that users and/or packages expect to " "be present on the system. This includes groups such as ``root'', ``wheel'', " "and ``users'', as well as groups used to control access to specific devices " "such as ``audio'', ``disk'', and ``cdrom''." msgstr "" #. type: defvr #: doc/guix.texi:10482 #, no-wrap msgid "{Scheme Variable} %base-user-accounts" msgstr "" #. type: defvr #: doc/guix.texi:10485 msgid "" "This is the list of basic system accounts that programs may expect to find " "on a GNU/Linux system, such as the ``nobody'' account." msgstr "" #. type: defvr #: doc/guix.texi:10488 msgid "" "Note that the ``root'' account is not included here. It is a special-case " "and is automatically added whether or not it is specified." msgstr "" #. type: cindex #: doc/guix.texi:10493 #, no-wrap msgid "locale" msgstr "" #. type: Plain text #: doc/guix.texi:10500 msgid "" "A @dfn{locale} defines cultural conventions for a particular language and " "region of the world (@pxref{Locales,,, libc, The GNU C Library Reference " "Manual}). Each locale has a name that typically has the form " "@code{@var{language}_@var{territory}.@var{codeset}}---e.g., @code{fr_LU." "utf8} designates the locale for the French language, with cultural " "conventions from Luxembourg, and using the UTF-8 encoding." msgstr "" #. type: cindex #: doc/guix.texi:10501 #, no-wrap msgid "locale definition" msgstr "" #. type: Plain text #: doc/guix.texi:10505 msgid "" "Usually, you will want to specify the default locale for the machine using " "the @code{locale} field of the @code{operating-system} declaration " "(@pxref{operating-system Reference, @code{locale}})." msgstr "" #. type: Plain text #: doc/guix.texi:10514 msgid "" "The selected locale is automatically added to the @dfn{locale definitions} " "known to the system if needed, with its codeset inferred from its name---e." "g., @code{bo_CN.utf8} will be assumed to use the @code{UTF-8} codeset. " "Additional locale definitions can be specified in the @code{locale-" "definitions} slot of @code{operating-system}---this is useful, for instance, " "if the codeset could not be inferred from the locale name. The default set " "of locale definitions includes some widely used locales, but not all the " "available locales, in order to save space." msgstr "" #. type: Plain text #: doc/guix.texi:10517 msgid "" "For instance, to add the North Frisian locale for Germany, the value of that " "field may be:" msgstr "" #. type: example #: doc/guix.texi:10522 #, no-wrap msgid "" "(cons (locale-definition\n" " (name \"fy_DE.utf8\") (source \"fy_DE\"))\n" " %default-locale-definitions)\n" msgstr "" #. type: Plain text #: doc/guix.texi:10526 msgid "" "Likewise, to save space, one might want @code{locale-definitions} to list " "only the locales that are actually used, as in:" msgstr "" #. type: example #: doc/guix.texi:10531 #, no-wrap msgid "" "(list (locale-definition\n" " (name \"ja_JP.eucjp\") (source \"ja_JP\")\n" " (charset \"EUC-JP\")))\n" msgstr "" #. type: Plain text #: doc/guix.texi:10540 msgid "" "The compiled locale definitions are available at @file{/run/current-system/" "locale/X.Y}, where @code{X.Y} is the libc version, which is the default " "location where the GNU@tie{}libc provided by Guix looks for locale data. " "This can be overridden using the @code{LOCPATH} environment variable " "(@pxref{locales-and-locpath, @code{LOCPATH} and locale packages})." msgstr "" #. type: Plain text #: doc/guix.texi:10543 msgid "" "The @code{locale-definition} form is provided by the @code{(gnu system " "locale)} module. Details are given below." msgstr "" #. type: deftp #: doc/guix.texi:10544 #, no-wrap msgid "{Data Type} locale-definition" msgstr "" #. type: deftp #: doc/guix.texi:10546 msgid "This is the data type of a locale definition." msgstr "" #. type: table #: doc/guix.texi:10552 msgid "" "The name of the locale. @xref{Locale Names,,, libc, The GNU C Library " "Reference Manual}, for more information on locale names." msgstr "" #. type: table #: doc/guix.texi:10556 msgid "" "The name of the source for that locale. This is typically the " "@code{@var{language}_@var{territory}} part of the locale name." msgstr "" #. type: item #: doc/guix.texi:10557 #, no-wrap msgid "@code{charset} (default: @code{\"UTF-8\"})" msgstr "" #. type: table #: doc/guix.texi:10561 msgid "" "The ``character set'' or ``code set'' for that locale, @uref{http://www.iana." "org/assignments/character-sets, as defined by IANA}." msgstr "" #. type: defvr #: doc/guix.texi:10565 #, no-wrap msgid "{Scheme Variable} %default-locale-definitions" msgstr "" #. type: defvr #: doc/guix.texi:10569 msgid "" "A list of commonly used UTF-8 locales, used as the default value of the " "@code{locale-definitions} field of @code{operating-system} declarations." msgstr "" #. type: cindex #: doc/guix.texi:10570 #, no-wrap msgid "locale name" msgstr "" #. type: cindex #: doc/guix.texi:10571 #, no-wrap msgid "normalized codeset in locale names" msgstr "" #. type: defvr #: doc/guix.texi:10577 msgid "" "These locale definitions use the @dfn{normalized codeset} for the part that " "follows the dot in the name (@pxref{Using gettextized software, normalized " "codeset,, libc, The GNU C Library Reference Manual}). So for instance it " "has @code{uk_UA.utf8} but @emph{not}, say, @code{uk_UA.UTF-8}." msgstr "" #. type: subsubsection #: doc/guix.texi:10579 #, no-wrap msgid "Locale Data Compatibility Considerations" msgstr "" #. type: cindex #: doc/guix.texi:10581 #, no-wrap msgid "incompatibility, of locale data" msgstr "" #. type: Plain text #: doc/guix.texi:10588 msgid "" "@code{operating-system} declarations provide a @code{locale-libcs} field to " "specify the GNU@tie{}libc packages that are used to compile locale " "declarations (@pxref{operating-system Reference}). ``Why would I care?'', " "you may ask. Well, it turns out that the binary format of locale data is " "occasionally incompatible from one libc version to another." msgstr "" #. type: Plain text #: doc/guix.texi:10600 msgid "" "For instance, a program linked against libc version 2.21 is unable to read " "locale data produced with libc 2.22; worse, that program @emph{aborts} " "instead of simply ignoring the incompatible locale data@footnote{Versions " "2.23 and later of GNU@tie{}libc will simply skip the incompatible locale " "data, which is already an improvement.}. Similarly, a program linked " "against libc 2.22 can read most, but not all, of the locale data from libc " "2.21 (specifically, @code{LC_COLLATE} data is incompatible); thus calls to " "@code{setlocale} may fail, but programs will not abort." msgstr "" #. type: Plain text #: doc/guix.texi:10605 msgid "" "The ``problem'' in GuixSD is that users have a lot of freedom: They can " "choose whether and when to upgrade software in their profiles, and might be " "using a libc version different from the one the system administrator used to " "build the system-wide locale data." msgstr "" #. type: Plain text #: doc/guix.texi:10609 msgid "" "Fortunately, unprivileged users can also install their own locale data and " "define @var{GUIX_LOCPATH} accordingly (@pxref{locales-and-locpath, " "@code{GUIX_LOCPATH} and locale packages})." msgstr "" #. type: Plain text #: doc/guix.texi:10616 msgid "" "Still, it is best if the system-wide locale data at @file{/run/current-" "system/locale} is built for all the libc versions actually in use on the " "system, so that all the programs can access it---this is especially crucial " "on a multi-user system. To do that, the administrator can specify several " "libc packages in the @code{locale-libcs} field of @code{operating-system}:" msgstr "" #. type: example #: doc/guix.texi:10619 #, no-wrap msgid "" "(use-package-modules base)\n" "\n" msgstr "" #. type: example #: doc/guix.texi:10623 #, no-wrap msgid "" "(operating-system\n" " ;; @dots{}\n" " (locale-libcs (list glibc-2.21 (canonical-package glibc))))\n" msgstr "" #. type: Plain text #: doc/guix.texi:10628 msgid "" "This example would lead to a system containing locale definitions for both " "libc 2.21 and the current version of libc in @file{/run/current-system/" "locale}." msgstr "" #. type: cindex #: doc/guix.texi:10633 #, no-wrap msgid "system services" msgstr "" #. type: Plain text #: doc/guix.texi:10639 msgid "" "An important part of preparing an @code{operating-system} declaration is " "listing @dfn{system services} and their configuration (@pxref{Using the " "Configuration System}). System services are typically daemons launched when " "the system boots, or other actions needed at that time---e.g., configuring " "network access." msgstr "" #. type: Plain text #: doc/guix.texi:10646 msgid "" "GuixSD has a broad definition of ``service'' (@pxref{Service Composition}), " "but many services are managed by the GNU@tie{}Shepherd (@pxref{Shepherd " "Services}). On a running system, the @command{herd} command allows you to " "list the available services, show their status, start and stop them, or do " "other specific operations (@pxref{Jump Start,,, shepherd, The GNU Shepherd " "Manual}). For example:" msgstr "" #. type: example #: doc/guix.texi:10649 #, no-wrap msgid "# herd status\n" msgstr "" #. type: Plain text #: doc/guix.texi:10654 msgid "" "The above command, run as @code{root}, lists the currently defined " "services. The @command{herd doc} command shows a synopsis of the given " "service and its associated actions:" msgstr "" #. type: example #: doc/guix.texi:10658 #, no-wrap msgid "" "# herd doc nscd\n" "Run libc's name service cache daemon (nscd).\n" "\n" msgstr "" #. type: example #: doc/guix.texi:10661 #, no-wrap msgid "" "# herd doc nscd action invalidate\n" "invalidate: Invalidate the given cache--e.g., 'hosts' for host name lookups.\n" msgstr "" #. type: Plain text #: doc/guix.texi:10666 msgid "" "The @command{start}, @command{stop}, and @command{restart} sub-commands have " "the effect you would expect. For instance, the commands below stop the nscd " "service and restart the Xorg display server:" msgstr "" #. type: example #: doc/guix.texi:10673 #, no-wrap msgid "" "# herd stop nscd\n" "Service nscd has been stopped.\n" "# herd restart xorg-server\n" "Service xorg-server has been stopped.\n" "Service xorg-server has been started.\n" msgstr "" #. type: Plain text #: doc/guix.texi:10678 msgid "" "The following sections document the available services, starting with the " "core services, that may be used in an @code{operating-system} declaration." msgstr "" #. type: Plain text #: doc/guix.texi:10714 msgid "" "The @code{(gnu services base)} module provides definitions for the basic " "services that one expects from the system. The services exported by this " "module are listed below." msgstr "" #. type: defvr #: doc/guix.texi:10715 #, no-wrap msgid "{Scheme Variable} %base-services" msgstr "" #. type: defvr #: doc/guix.texi:10721 msgid "" "This variable contains a list of basic services (@pxref{Service Types and " "Services}, for more information on service objects) one would expect from " "the system: a login service (mingetty) on each tty, syslogd, the libc name " "service cache daemon (nscd), the udev device manager, and more." msgstr "" #. type: defvr #: doc/guix.texi:10726 msgid "" "This is the default value of the @code{services} field of @code{operating-" "system} declarations. Usually, when customizing a system, you will want to " "append services to @var{%base-services}, like this:" msgstr "" #. type: example #: doc/guix.texi:10729 #, no-wrap msgid "(cons* (avahi-service) (lsh-service) %base-services)\n" msgstr "" #. type: defvr #: doc/guix.texi:10732 #, no-wrap msgid "{Scheme Variable} special-files-service-type" msgstr "" #. type: defvr #: doc/guix.texi:10735 msgid "" "This is the service that sets up ``special files'' such as @file{/bin/sh}; " "an instance of it is part of @code{%base-services}." msgstr "" #. type: defvr #: doc/guix.texi:10739 msgid "" "The value associated with @code{special-files-service-type} services must be " "a list of tuples where the first element is the ``special file'' and the " "second element is its target. By default it is:" msgstr "" #. type: file{#1} #: doc/guix.texi:10740 #, no-wrap msgid "/bin/sh" msgstr "" #. type: cindex #: doc/guix.texi:10741 #, no-wrap msgid "@file{sh}, in @file{/bin}" msgstr "" #. type: example #: doc/guix.texi:10744 #, no-wrap msgid "`((\"/bin/sh\" ,(file-append @var{bash} \"/bin/sh\")))\n" msgstr "" #. type: file{#1} #: doc/guix.texi:10746 #, no-wrap msgid "/usr/bin/env" msgstr "" #. type: cindex #: doc/guix.texi:10747 #, no-wrap msgid "@file{env}, in @file{/usr/bin}" msgstr "" #. type: defvr #: doc/guix.texi:10750 msgid "" "If you want to add, say, @code{/usr/bin/env} to your system, you can change " "it to:" msgstr "" #. type: example #: doc/guix.texi:10754 #, no-wrap msgid "" "`((\"/bin/sh\" ,(file-append @var{bash} \"/bin/sh\"))\n" " (\"/usr/bin/env\" ,(file-append @var{coreutils} \"/bin/env\")))\n" msgstr "" #. type: defvr #: doc/guix.texi:10761 msgid "" "Since this is part of @code{%base-services}, you can use @code{modify-" "services} to customize the set of special files (@pxref{Service Reference, " "@code{modify-services}}). But the simple way to add a special file is " "@i{via} the @code{extra-special-file} procedure (see below.)" msgstr "" #. type: deffn #: doc/guix.texi:10763 #, no-wrap msgid "{Scheme Procedure} extra-special-file @var{file} @var{target}" msgstr "" #. type: deffn #: doc/guix.texi:10765 msgid "Use @var{target} as the ``special file'' @var{file}." msgstr "" #. type: deffn #: doc/guix.texi:10769 msgid "" "For example, adding the following lines to the @code{services} field of your " "operating system declaration leads to a @file{/usr/bin/env} symlink:" msgstr "" #. type: example #: doc/guix.texi:10773 #, no-wrap msgid "" "(extra-special-file \"/usr/bin/env\"\n" " (file-append coreutils \"/bin/env\"))\n" msgstr "" #. type: deffn #: doc/guix.texi:10776 #, no-wrap msgid "{Scheme Procedure} host-name-service @var{name}" msgstr "" #. type: deffn #: doc/guix.texi:10778 msgid "Return a service that sets the host name to @var{name}." msgstr "" #. type: deffn #: doc/guix.texi:10780 #, no-wrap msgid "{Scheme Procedure} login-service @var{config}" msgstr "" #. type: deffn #: doc/guix.texi:10784 msgid "" "Return a service to run login according to @var{config}, a @code{} object, which specifies the message of the day, among other " "things." msgstr "" #. type: deftp #: doc/guix.texi:10786 #, no-wrap msgid "{Data Type} login-configuration" msgstr "" #. type: deftp #: doc/guix.texi:10788 msgid "This is the data type representing the configuration of login." msgstr "" #. type: code{#1} #: doc/guix.texi:10791 #, no-wrap msgid "motd" msgstr "" #. type: cindex #: doc/guix.texi:10792 #, no-wrap msgid "message of the day" msgstr "" #. type: table #: doc/guix.texi:10794 msgid "A file-like object containing the ``message of the day''." msgstr "" #. type: item #: doc/guix.texi:10795 doc/guix.texi:12683 #, no-wrap msgid "@code{allow-empty-passwords?} (default: @code{#t})" msgstr "" #. type: table #: doc/guix.texi:10798 msgid "" "Allow empty passwords by default so that first-time users can log in when " "the 'root' account has just been created." msgstr "" #. type: deffn #: doc/guix.texi:10802 #, no-wrap msgid "{Scheme Procedure} mingetty-service @var{config}" msgstr "" #. type: deffn #: doc/guix.texi:10806 msgid "" "Return a service to run mingetty according to @var{config}, a " "@code{} object, which specifies the tty to run, " "among other things." msgstr "" #. type: deftp #: doc/guix.texi:10808 #, no-wrap msgid "{Data Type} mingetty-configuration" msgstr "" #. type: deftp #: doc/guix.texi:10811 msgid "" "This is the data type representing the configuration of Mingetty, which " "provides the default implementation of virtual console log-in." msgstr "" #. type: code{#1} #: doc/guix.texi:10814 doc/guix.texi:10850 #, no-wrap msgid "tty" msgstr "" #. type: table #: doc/guix.texi:10816 msgid "The name of the console this Mingetty runs on---e.g., @code{\"tty1\"}." msgstr "" #. type: item #: doc/guix.texi:10817 doc/guix.texi:10879 doc/guix.texi:11038 #, no-wrap msgid "@code{auto-login} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10821 msgid "" "When true, this field must be a string denoting the user name under which " "the system automatically logs in. When it is @code{#f}, a user name and " "password must be entered to log in." msgstr "" #. type: item #: doc/guix.texi:10822 #, no-wrap msgid "@code{login-program} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10826 msgid "" "This must be either @code{#f}, in which case the default log-in program is " "used (@command{login} from the Shadow tool suite), or a gexp denoting the " "name of the log-in program." msgstr "" #. type: item #: doc/guix.texi:10827 #, no-wrap msgid "@code{login-pause?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10830 msgid "" "When set to @code{#t} in conjunction with @var{auto-login}, the user will " "have to press a key before the log-in shell is launched." msgstr "" #. type: item #: doc/guix.texi:10831 #, no-wrap msgid "@code{mingetty} (default: @var{mingetty})" msgstr "" #. type: table #: doc/guix.texi:10833 msgid "The Mingetty package to use." msgstr "" #. type: deffn #: doc/guix.texi:10837 #, no-wrap msgid "{Scheme Procedure} agetty-service @var{config}" msgstr "" #. type: deffn #: doc/guix.texi:10841 msgid "" "Return a service to run agetty according to @var{config}, an @code{} object, which specifies the tty to run, among other things." msgstr "" #. type: deftp #: doc/guix.texi:10843 #, no-wrap msgid "{Data Type} agetty-configuration" msgstr "" #. type: deftp #: doc/guix.texi:10847 msgid "" "This is the data type representing the configuration of agetty, which " "implements virtual and serial console log-in. See the @code{agetty(8)} man " "page for more information." msgstr "" #. type: table #: doc/guix.texi:10854 msgid "" "The name of the console this agetty runs on, as a string---e.g., " "@code{\"ttyS0\"}. This argument is optional, it will default to a reasonable " "default serial port used by the kernel Linux." msgstr "" #. type: table #: doc/guix.texi:10858 msgid "" "For this, if there is a value for an option @code{agetty.tty} in the kernel " "command line, agetty will extract the device name of the serial port from it " "and use that." msgstr "" #. type: table #: doc/guix.texi:10862 msgid "" "If not and if there is a value for an option @code{console} with a tty in " "the Linux command line, agetty will extract the device name of the serial " "port from it and use that." msgstr "" #. type: table #: doc/guix.texi:10866 msgid "" "In both cases, agetty will leave the other serial device settings (baud rate " "etc.) alone---in the hope that Linux pinned them to the correct values." msgstr "" #. type: item #: doc/guix.texi:10867 #, no-wrap msgid "@code{baud-rate} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10870 msgid "" "A string containing a comma-separated list of one or more baud rates, in " "descending order." msgstr "" #. type: item #: doc/guix.texi:10871 #, no-wrap msgid "@code{term} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10874 msgid "" "A string containing the value used for the @code{TERM} environment variable." msgstr "" #. type: item #: doc/guix.texi:10875 #, no-wrap msgid "@code{eight-bits?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10878 msgid "" "When @code{#t}, the tty is assumed to be 8-bit clean, and parity detection " "is disabled." msgstr "" #. type: table #: doc/guix.texi:10882 doc/guix.texi:11041 msgid "" "When passed a login name, as a string, the specified user will be logged in " "automatically without prompting for their login name or password." msgstr "" #. type: item #: doc/guix.texi:10883 #, no-wrap msgid "@code{no-reset?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10885 msgid "When @code{#t}, don't reset terminal cflags (control modes)." msgstr "" #. type: item #: doc/guix.texi:10886 #, no-wrap msgid "@code{host} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10889 msgid "" "This accepts a string containing the \"login_host\", which will be written " "into the @file{/var/run/utmpx} file." msgstr "" #. type: item #: doc/guix.texi:10890 #, no-wrap msgid "@code{remote?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10894 msgid "" "When set to @code{#t} in conjunction with @var{host}, this will add an " "@code{-r} fakehost option to the command line of the login program specified " "in @var{login-program}." msgstr "" #. type: item #: doc/guix.texi:10895 #, no-wrap msgid "@code{flow-control?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10897 msgid "When set to @code{#t}, enable hardware (RTS/CTS) flow control." msgstr "" #. type: item #: doc/guix.texi:10898 #, no-wrap msgid "@code{no-issue?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10901 msgid "" "When set to @code{#t}, the contents of the @file{/etc/issue} file will not " "be displayed before presenting the login prompt." msgstr "" #. type: item #: doc/guix.texi:10902 #, no-wrap msgid "@code{init-string} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10905 msgid "" "This accepts a string that will be sent to the tty or modem before sending " "anything else. It can be used to initialize a modem." msgstr "" #. type: item #: doc/guix.texi:10906 #, no-wrap msgid "@code{no-clear?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10909 msgid "" "When set to @code{#t}, agetty will not clear the screen before showing the " "login prompt." msgstr "" #. type: item #: doc/guix.texi:10910 #, no-wrap msgid "@code{login-program} (default: (file-append shadow \"/bin/login\"))" msgstr "" #. type: table #: doc/guix.texi:10914 msgid "" "This must be either a gexp denoting the name of a log-in program, or unset, " "in which case the default value is the @command{login} from the Shadow tool " "suite." msgstr "" #. type: item #: doc/guix.texi:10915 #, no-wrap msgid "@code{local-line} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10919 msgid "" "Control the CLOCAL line flag. This accepts one of three symbols as " "arguments, @code{'auto}, @code{'always}, or @code{'never}. If @code{#f}, the " "default value chosen by agetty is @code{'auto}." msgstr "" #. type: item #: doc/guix.texi:10920 #, no-wrap msgid "@code{extract-baud?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10923 msgid "" "When set to @code{#t}, instruct agetty to try to extract the baud rate from " "the status messages produced by certain types of modems." msgstr "" #. type: item #: doc/guix.texi:10924 #, no-wrap msgid "@code{skip-login?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10928 msgid "" "When set to @code{#t}, do not prompt the user for a login name. This can be " "used with @var{login-program} field to use non-standard login systems." msgstr "" #. type: item #: doc/guix.texi:10929 #, no-wrap msgid "@code{no-newline?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10932 msgid "" "When set to @code{#t}, do not print a newline before printing the @file{/etc/" "issue} file." msgstr "" #. type: item #: doc/guix.texi:10934 #, no-wrap msgid "@code{login-options} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10939 msgid "" "This option accepts a string containing options that are passed to the login " "program. When used with the @var{login-program}, be aware that a malicious " "user could try to enter a login name containing embedded options that could " "be parsed by the login program." msgstr "" #. type: item #: doc/guix.texi:10940 #, no-wrap msgid "@code{login-pause} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10944 msgid "" "When set to @code{#t}, wait for any key before showing the login prompt. " "This can be used in conjunction with @var{auto-login} to save memory by " "lazily spawning shells." msgstr "" #. type: item #: doc/guix.texi:10945 #, no-wrap msgid "@code{chroot} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10948 msgid "" "Change root to the specified directory. This option accepts a directory " "path as a string." msgstr "" #. type: item #: doc/guix.texi:10949 #, no-wrap msgid "@code{hangup?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10952 msgid "" "Use the Linux system call @code{vhangup} to do a virtual hangup of the " "specified terminal." msgstr "" #. type: item #: doc/guix.texi:10953 #, no-wrap msgid "@code{keep-baud?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10957 msgid "" "When set to @code{#t}, try to keep the existing baud rate. The baud rates " "from @var{baud-rate} are used when agetty receives a @key{BREAK} character." msgstr "" #. type: item #: doc/guix.texi:10958 #, no-wrap msgid "@code{timeout} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10961 msgid "" "When set to an integer value, terminate if no user name could be read within " "@var{timeout} seconds." msgstr "" #. type: item #: doc/guix.texi:10962 #, no-wrap msgid "@code{detect-case?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10968 msgid "" "When set to @code{#t}, turn on support for detecting an uppercase-only " "terminal. This setting will detect a login name containing only uppercase " "letters as indicating an uppercase-only terminal and turn on some upper-to-" "lower case conversions. Note that this will not support Unicode characters." msgstr "" #. type: item #: doc/guix.texi:10969 #, no-wrap msgid "@code{wait-cr?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10974 msgid "" "When set to @code{#t}, wait for the user or modem to send a carriage-return " "or linefeed character before displaying @file{/etc/issue} or login prompt. " "This is typically used with the @var{init-string} option." msgstr "" #. type: item #: doc/guix.texi:10975 #, no-wrap msgid "@code{no-hints?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10978 msgid "" "When set to @code{#t}, do not print hints about Num, Caps, and Scroll locks." msgstr "" #. type: item #: doc/guix.texi:10979 #, no-wrap msgid "@code{no-hostname?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10982 msgid "" "By default, the hostname is printed. When this option is set to @code{#t}, " "no hostname will be shown at all." msgstr "" #. type: item #: doc/guix.texi:10983 #, no-wrap msgid "@code{long-hostname?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10987 msgid "" "By default, the hostname is only printed until the first dot. When this " "option is set to @code{#t}, the fully qualified hostname by " "@code{gethostname} or @code{getaddrinfo} is shown." msgstr "" #. type: item #: doc/guix.texi:10988 #, no-wrap msgid "@code{erase-characters} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10991 msgid "" "This option accepts a string of additional characters that should be " "interpreted as backspace when the user types their login name." msgstr "" #. type: item #: doc/guix.texi:10992 #, no-wrap msgid "@code{kill-characters} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:10996 msgid "" "This option accepts a string that should be interpreted to mean \"ignore all " "previous characters\" (also called a \"kill\" character) when the types " "their login name." msgstr "" #. type: item #: doc/guix.texi:10997 #, no-wrap msgid "@code{chdir} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:11000 msgid "" "This option accepts, as a string, a directory path that will be changed to " "before login." msgstr "" #. type: item #: doc/guix.texi:11001 #, no-wrap msgid "@code{delay} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:11004 msgid "" "This options accepts, as an integer, the number of seconds to sleep before " "opening the tty and displaying the login prompt." msgstr "" #. type: item #: doc/guix.texi:11005 #, no-wrap msgid "@code{nice} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:11008 msgid "" "This option accepts, as an integer, the nice value with which to run the " "@command{login} program." msgstr "" #. type: item #: doc/guix.texi:11009 doc/guix.texi:11240 doc/guix.texi:11955 #: doc/guix.texi:17244 #, no-wrap msgid "@code{extra-options} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:11012 msgid "" "This option provides an \"escape hatch\" for the user to provide arbitrary " "command-line arguments to @command{agetty} as a list of strings." msgstr "" #. type: deffn #: doc/guix.texi:11016 #, no-wrap msgid "{Scheme Procedure} kmscon-service-type @var{config}" msgstr "" #. type: deffn #: doc/guix.texi:11020 msgid "" "Return a service to run @uref{https://www.freedesktop.org/wiki/Software/" "kmscon,kmscon} according to @var{config}, a @code{} " "object, which specifies the tty to run, among other things." msgstr "" #. type: deftp #: doc/guix.texi:11022 #, no-wrap msgid "{Data Type} kmscon-configuration" msgstr "" #. type: deftp #: doc/guix.texi:11025 msgid "" "This is the data type representing the configuration of Kmscon, which " "implements virtual console log-in." msgstr "" #. type: code{#1} #: doc/guix.texi:11028 #, no-wrap msgid "virtual-terminal" msgstr "" #. type: table #: doc/guix.texi:11030 msgid "The name of the console this Kmscon runs on---e.g., @code{\"tty1\"}." msgstr "" #. type: item #: doc/guix.texi:11031 #, no-wrap msgid "@code{login-program} (default: @code{#~(string-append #$shadow \"/bin/login\")})" msgstr "" #. type: table #: doc/guix.texi:11034 msgid "" "A gexp denoting the name of the log-in program. The default log-in program " "is @command{login} from the Shadow tool suite." msgstr "" #. type: item #: doc/guix.texi:11035 #, no-wrap msgid "@code{login-arguments} (default: @code{'(\"-p\")})" msgstr "" #. type: table #: doc/guix.texi:11037 msgid "A list of arguments to pass to @command{login}." msgstr "" #. type: item #: doc/guix.texi:11042 #, no-wrap msgid "@code{hardware-acceleration?} (default: #f)" msgstr "" #. type: table #: doc/guix.texi:11044 msgid "Whether to use hardware acceleration." msgstr "" #. type: item #: doc/guix.texi:11045 #, no-wrap msgid "@code{kmscon} (default: @var{kmscon})" msgstr "" #. type: table #: doc/guix.texi:11047 msgid "The Kmscon package to use." msgstr "" #. type: cindex #: doc/guix.texi:11051 #, no-wrap msgid "name service cache daemon" msgstr "" #. type: cindex #: doc/guix.texi:11052 #, no-wrap msgid "nscd" msgstr "" #. type: deffn #: doc/guix.texi:11053 #, no-wrap msgid "{Scheme Procedure} nscd-service [@var{config}] [#:glibc glibc] @" msgstr "" #. type: deffn #: doc/guix.texi:11058 msgid "" "[#:name-services '()] Return a service that runs the libc name service cache " "daemon (nscd) with the given @var{config}---an @code{} " "object. @xref{Name Service Switch}, for an example." msgstr "" #. type: deffn #: doc/guix.texi:11060 msgid "" "For convenience, the Shepherd service for nscd provides the following " "actions:" msgstr "" #. type: item #: doc/guix.texi:11062 #, no-wrap msgid "invalidate" msgstr "" #. type: cindex #: doc/guix.texi:11063 #, no-wrap msgid "cache invalidation, nscd" msgstr "" #. type: cindex #: doc/guix.texi:11064 #, no-wrap msgid "nscd, cache invalidation" msgstr "" #. type: table #: doc/guix.texi:11066 msgid "This invalidate the given cache. For instance, running:" msgstr "" #. type: example #: doc/guix.texi:11069 #, no-wrap msgid "herd invalidate nscd hosts\n" msgstr "" #. type: table #: doc/guix.texi:11073 msgid "invalidates the host name lookup cache of nscd." msgstr "" #. type: item #: doc/guix.texi:11074 #, no-wrap msgid "statistics" msgstr "" #. type: table #: doc/guix.texi:11077 msgid "" "Running @command{herd statistics nscd} displays information about nscd usage " "and caches." msgstr "" #. type: defvr #: doc/guix.texi:11081 #, no-wrap msgid "{Scheme Variable} %nscd-default-configuration" msgstr "" #. type: defvr #: doc/guix.texi:11085 msgid "" "This is the default @code{} value (see below) used by " "@code{nscd-service}. It uses the caches defined by @var{%nscd-default-" "caches}; see below." msgstr "" #. type: deftp #: doc/guix.texi:11087 #, no-wrap msgid "{Data Type} nscd-configuration" msgstr "" #. type: deftp #: doc/guix.texi:11090 msgid "" "This is the data type representing the name service cache daemon (nscd) " "configuration." msgstr "" #. type: item #: doc/guix.texi:11093 #, no-wrap msgid "@code{name-services} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:11096 msgid "" "List of packages denoting @dfn{name services} that must be visible to the " "nscd---e.g., @code{(list @var{nss-mdns})}." msgstr "" #. type: item #: doc/guix.texi:11097 #, no-wrap msgid "@code{glibc} (default: @var{glibc})" msgstr "" #. type: table #: doc/guix.texi:11100 msgid "" "Package object denoting the GNU C Library providing the @command{nscd} " "command." msgstr "" #. type: item #: doc/guix.texi:11101 #, no-wrap msgid "@code{log-file} (default: @code{\"/var/log/nscd.log\"})" msgstr "" #. type: table #: doc/guix.texi:11104 msgid "" "Name of the nscd log file. This is where debugging output goes when " "@code{debug-level} is strictly positive." msgstr "" #. type: item #: doc/guix.texi:11105 #, no-wrap msgid "@code{debug-level} (default: @code{0})" msgstr "" #. type: table #: doc/guix.texi:11108 msgid "" "Integer denoting the debugging levels. Higher numbers mean that more " "debugging output is logged." msgstr "" #. type: item #: doc/guix.texi:11109 #, no-wrap msgid "@code{caches} (default: @var{%nscd-default-caches})" msgstr "" #. type: table #: doc/guix.texi:11112 msgid "" "List of @code{} objects denoting things to be cached; see below." msgstr "" #. type: deftp #: doc/guix.texi:11116 #, no-wrap msgid "{Data Type} nscd-cache" msgstr "" #. type: deftp #: doc/guix.texi:11118 msgid "Data type representing a cache database of nscd and its parameters." msgstr "" #. type: cindex #: doc/guix.texi:11121 doc/guix.texi:14162 #, no-wrap msgid "database" msgstr "" #. type: table #: doc/guix.texi:11126 msgid "" "This is a symbol representing the name of the database to be cached. Valid " "values are @code{passwd}, @code{group}, @code{hosts}, and @code{services}, " "which designate the corresponding NSS database (@pxref{NSS Basics,,, libc, " "The GNU C Library Reference Manual})." msgstr "" #. type: code{#1} #: doc/guix.texi:11127 #, no-wrap msgid "positive-time-to-live" msgstr "" #. type: itemx #: doc/guix.texi:11128 #, no-wrap msgid "@code{negative-time-to-live} (default: @code{20})" msgstr "" #. type: table #: doc/guix.texi:11131 msgid "" "A number representing the number of seconds during which a positive or " "negative lookup result remains in cache." msgstr "" #. type: item #: doc/guix.texi:11132 #, no-wrap msgid "@code{check-files?} (default: @code{#t})" msgstr "" #. type: table #: doc/guix.texi:11135 msgid "" "Whether to check for updates of the files corresponding to @var{database}." msgstr "" #. type: table #: doc/guix.texi:11139 msgid "" "For instance, when @var{database} is @code{hosts}, setting this flag " "instructs nscd to check for updates in @file{/etc/hosts} and to take them " "into account." msgstr "" #. type: item #: doc/guix.texi:11140 #, no-wrap msgid "@code{persistent?} (default: @code{#t})" msgstr "" #. type: table #: doc/guix.texi:11142 msgid "Whether the cache should be stored persistently on disk." msgstr "" #. type: item #: doc/guix.texi:11143 #, no-wrap msgid "@code{shared?} (default: @code{#t})" msgstr "" #. type: table #: doc/guix.texi:11145 msgid "Whether the cache should be shared among users." msgstr "" #. type: item #: doc/guix.texi:11146 #, no-wrap msgid "@code{max-database-size} (default: 32@tie{}MiB)" msgstr "" #. type: table #: doc/guix.texi:11148 msgid "Maximum size in bytes of the database cache." msgstr "" #. type: defvr #: doc/guix.texi:11155 #, no-wrap msgid "{Scheme Variable} %nscd-default-caches" msgstr "" #. type: defvr #: doc/guix.texi:11158 msgid "" "List of @code{} objects used by default by @code{nscd-" "configuration} (see above)." msgstr "" #. type: defvr #: doc/guix.texi:11164 msgid "" "It enables persistent and aggressive caching of service and host name " "lookups. The latter provides better host name lookup performance, " "resilience in the face of unreliable name servers, and also better privacy---" "often the result of host name lookups is in local cache, so external name " "servers do not even need to be queried." msgstr "" #. type: anchor{#1} #: doc/guix.texi:11167 msgid "syslog-configuration-type" msgstr "" #. type: cindex #: doc/guix.texi:11167 doc/guix.texi:11183 #, no-wrap msgid "syslog" msgstr "" #. type: cindex #: doc/guix.texi:11168 doc/guix.texi:11633 #, no-wrap msgid "logging" msgstr "" #. type: deftp #: doc/guix.texi:11169 #, no-wrap msgid "{Data Type} syslog-configuration" msgstr "" #. type: deftp #: doc/guix.texi:11171 msgid "This data type represents the configuration of the syslog daemon." msgstr "" #. type: item #: doc/guix.texi:11173 #, no-wrap msgid "@code{syslogd} (default: @code{#~(string-append #$inetutils \"/libexec/syslogd\")})" msgstr "" #. type: table #: doc/guix.texi:11175 msgid "The syslog daemon to use." msgstr "" #. type: item #: doc/guix.texi:11176 #, no-wrap msgid "@code{config-file} (default: @code{%default-syslog.conf})" msgstr "" #. type: table #: doc/guix.texi:11178 msgid "The syslog configuration file to use." msgstr "" #. type: anchor{#1} #: doc/guix.texi:11183 msgid "syslog-service" msgstr "" #. type: deffn #: doc/guix.texi:11184 #, no-wrap msgid "{Scheme Procedure} syslog-service @var{config}" msgstr "" #. type: deffn #: doc/guix.texi:11186 msgid "Return a service that runs a syslog daemon according to @var{config}." msgstr "" #. type: deffn #: doc/guix.texi:11189 msgid "" "@xref{syslogd invocation,,, inetutils, GNU Inetutils}, for more information " "on the configuration file syntax." msgstr "" #. type: defvr #: doc/guix.texi:11191 #, no-wrap msgid "{Scheme Variable} guix-service-type" msgstr "" #. type: defvr #: doc/guix.texi:11195 msgid "" "This is the type of the service that runs the build daemon, @command{guix-" "daemon} (@pxref{Invoking guix-daemon}). Its value must be a @code{guix-" "configuration} record as described below." msgstr "" #. type: anchor{#1} #: doc/guix.texi:11198 msgid "guix-configuration-type" msgstr "" #. type: deftp #: doc/guix.texi:11198 #, no-wrap msgid "{Data Type} guix-configuration" msgstr "" #. type: deftp #: doc/guix.texi:11201 msgid "" "This data type represents the configuration of the Guix build daemon. " "@xref{Invoking guix-daemon}, for more information." msgstr "" #. type: item #: doc/guix.texi:11203 #, no-wrap msgid "@code{guix} (default: @var{guix})" msgstr "" #. type: table #: doc/guix.texi:11205 doc/guix.texi:11444 msgid "The Guix package to use." msgstr "" #. type: item #: doc/guix.texi:11206 #, no-wrap msgid "@code{build-group} (default: @code{\"guixbuild\"})" msgstr "" #. type: table #: doc/guix.texi:11208 msgid "Name of the group for build user accounts." msgstr "" #. type: item #: doc/guix.texi:11209 #, no-wrap msgid "@code{build-accounts} (default: @code{10})" msgstr "" #. type: table #: doc/guix.texi:11211 msgid "Number of build user accounts to create." msgstr "" #. type: item #: doc/guix.texi:11212 #, no-wrap msgid "@code{authorize-key?} (default: @code{#t})" msgstr "" #. type: table #: doc/guix.texi:11217 msgid "" "Whether to authorize the substitute keys listed in @code{authorized-keys}---" "by default that of @code{hydra.gnu.org} (@pxref{Substitutes})." msgstr "" #. type: vindex #: doc/guix.texi:11218 #, no-wrap msgid "%default-authorized-guix-keys" msgstr "" #. type: item #: doc/guix.texi:11219 #, no-wrap msgid "@code{authorized-keys} (default: @var{%default-authorized-guix-keys})" msgstr "" #. type: table #: doc/guix.texi:11223 msgid "" "The list of authorized key files for archive imports, as a list of string-" "valued gexps (@pxref{Invoking guix archive}). By default, it contains that " "of @code{hydra.gnu.org} (@pxref{Substitutes})." msgstr "" #. type: item #: doc/guix.texi:11224 #, no-wrap msgid "@code{use-substitutes?} (default: @code{#t})" msgstr "" #. type: table #: doc/guix.texi:11226 msgid "Whether to use substitutes." msgstr "" #. type: item #: doc/guix.texi:11227 #, no-wrap msgid "@code{substitute-urls} (default: @var{%default-substitute-urls})" msgstr "" #. type: table #: doc/guix.texi:11229 msgid "The list of URLs where to look for substitutes by default." msgstr "" #. type: item #: doc/guix.texi:11230 #, no-wrap msgid "@code{max-silent-time} (default: @code{0})" msgstr "" #. type: itemx #: doc/guix.texi:11231 #, no-wrap msgid "@code{timeout} (default: @code{0})" msgstr "" #. type: table #: doc/guix.texi:11235 msgid "" "The number of seconds of silence and the number of seconds of activity, " "respectively, after which a build process times out. A value of zero " "disables the timeout." msgstr "" #. type: item #: doc/guix.texi:11236 #, no-wrap msgid "@code{log-compression} (default: @code{'bzip2})" msgstr "" #. type: table #: doc/guix.texi:11239 msgid "" "The type of compression used for build logs---one of @code{gzip}, " "@code{bzip2}, or @code{none}." msgstr "" #. type: table #: doc/guix.texi:11242 msgid "List of extra command-line options for @command{guix-daemon}." msgstr "" #. type: item #: doc/guix.texi:11243 #, no-wrap msgid "@code{log-file} (default: @code{\"/var/log/guix-daemon.log\"})" msgstr "" #. type: table #: doc/guix.texi:11246 msgid "" "File where @command{guix-daemon}'s standard output and standard error are " "written." msgstr "" #. type: item #: doc/guix.texi:11247 #, no-wrap msgid "@code{http-proxy} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:11250 msgid "" "The HTTP proxy used for downloading fixed-output derivations and substitutes." msgstr "" #. type: item #: doc/guix.texi:11251 #, no-wrap msgid "@code{tmpdir} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:11253 msgid "A directory path where the @command{guix-daemon} will perform builds." msgstr "" #. type: deffn #: doc/guix.texi:11257 #, no-wrap msgid "{Scheme Procedure} udev-service [#:udev @var{eudev} #:rules @code{'()}]" msgstr "" #. type: deffn #: doc/guix.texi:11262 msgid "" "Run @var{udev}, which populates the @file{/dev} directory dynamically. udev " "rules can be provided as a list of files through the @var{rules} variable. " "The procedures @var{udev-rule} and @var{file->udev-rule} from @code{(gnu " "services base)} simplify the creation of such rule files." msgstr "" #. type: deffn #: doc/guix.texi:11263 #, no-wrap msgid "{Scheme Procedure} udev-rule [@var{file-name} @var{contents}]" msgstr "" #. type: deffn #: doc/guix.texi:11266 msgid "" "Return a udev-rule file named @var{file-name} containing the rules defined " "by the @var{contents} literal." msgstr "" #. type: deffn #: doc/guix.texi:11270 msgid "" "In the following example, a rule for a USB device is defined to be stored in " "the file @file{90-usb-thing.rules}. The rule runs a script upon detecting a " "USB device with a given product identifier." msgstr "" #. type: example #: doc/guix.texi:11278 #, no-wrap msgid "" "(define %example-udev-rule\n" " (udev-rule\n" " \"90-usb-thing.rules\"\n" " (string-append \"ACTION==\\\"add\\\", SUBSYSTEM==\\\"usb\\\", \"\n" " \"ATTR@{product@}==\\\"Example\\\", \"\n" " \"RUN+=\\\"/path/to/script\\\"\")))\n" msgstr "" #. type: deffn #: doc/guix.texi:11282 msgid "" "Here we show how the default @var{udev-service} can be extended with it." msgstr "" #. type: example #: doc/guix.texi:11292 #, no-wrap msgid "" "(operating-system\n" " ;; @dots{}\n" " (services\n" " (modify-services %desktop-services\n" " (udev-service-type config =>\n" " (udev-configuration (inherit config)\n" " (rules (append (udev-configuration-rules config)\n" " (list %example-udev-rule))))))))\n" msgstr "" #. type: deffn #: doc/guix.texi:11294 #, no-wrap msgid "{Scheme Procedure} file->udev-rule [@var{file-name} @var{file}]" msgstr "" #. type: deffn #: doc/guix.texi:11297 msgid "" "Return a udev file named @var{file-name} containing the rules defined within " "@var{file}, a file-like object." msgstr "" #. type: deffn #: doc/guix.texi:11299 msgid "The following example showcases how we can use an existing rule file." msgstr "" #. type: example #: doc/guix.texi:11304 #, no-wrap msgid "" "(use-modules (guix download) ;for url-fetch\n" " (guix packages) ;for origin\n" " ;; @dots{})\n" "\n" msgstr "" #. type: example #: doc/guix.texi:11315 #, no-wrap msgid "" "(define %android-udev-rules\n" " (file->udev-rule\n" " \"51-android-udev.rules\"\n" " (let ((version \"20170910\"))\n" " (origin\n" " (method url-fetch)\n" " (uri (string-append \"https://raw.githubusercontent.com/M0Rf30/\"\n" " \"android-udev-rules/\" version \"/51-android.rules\"))\n" " (sha256\n" " (base32 \"0lmmagpyb6xsq6zcr2w1cyx9qmjqmajkvrdbhjx32gqf1d9is003\"))))))\n" msgstr "" #. type: deffn #: doc/guix.texi:11324 msgid "" "Additionally, Guix package definitions can be included in @var{rules} in " "order to extend the udev rules with the definitions found under their " "@file{lib/udev/rules.d} sub-directory. In lieu of the previous @var{file-" ">udev-rule} example, we could have used the @var{android-udev-rules} package " "which exists in Guix in the @code{(gnu packages android)} module." msgstr "" #. type: deffn #: doc/guix.texi:11333 msgid "" "The following example shows how to use the @var{android-udev-rules} package " "so that the Android tool @command{adb} can detect devices without root " "privileges. It also details how to create the @code{adbusers} group, which " "is required for the proper functioning of the rules defined within the " "@var{android-udev-rules} package. To create such a group, we must define it " "both as part of the @var{supplementary-groups} of our @var{user-account} " "declaration, as well as in the @var{groups} field of the @var{operating-" "system} record." msgstr "" #. type: example #: doc/guix.texi:11338 #, no-wrap msgid "" "(use-modules (gnu packages android) ;for android-udev-rules\n" " (gnu system shadow) ;for user-group\n" " ;; @dots{})\n" "\n" msgstr "" #. type: example #: doc/guix.texi:11347 #, no-wrap msgid "" "(operating-system\n" " ;; @dots{}\n" " (users (cons (user-acount\n" " ;; @dots{}\n" " (supplementary-groups\n" " '(\"adbusers\" ;for adb\n" " \"wheel\" \"netdev\" \"audio\" \"video\"))\n" " ;; @dots{})))\n" "\n" msgstr "" #. type: example #: doc/guix.texi:11350 #, no-wrap msgid "" " (groups (cons (user-group (system? #t) (name \"adbusers\"))\n" " %base-groups))\n" "\n" msgstr "" #. type: example #: doc/guix.texi:11352 #, no-wrap msgid "" " ;; @dots{}\n" "\n" msgstr "" #. type: example #: doc/guix.texi:11359 #, no-wrap msgid "" " (services\n" " (modify-services %desktop-services\n" " (udev-service-type config =>\n" " (udev-configuration (inherit config)\n" " (rules (cons* android-udev-rules\n" " (udev-configuration-rules config))))))))\n" msgstr "" #. type: defvr #: doc/guix.texi:11362 #, no-wrap msgid "{Scheme Variable} urandom-seed-service-type" msgstr "" #. type: defvr #: doc/guix.texi:11367 msgid "" "Save some entropy in @var{%random-seed-file} to seed @file{/dev/urandom} " "when rebooting. It also tries to seed @file{/dev/urandom} from @file{/dev/" "hwrng} while booting, if @file{/dev/hwrng} exists and is readable." msgstr "" #. type: defvr #: doc/guix.texi:11369 #, no-wrap msgid "{Scheme Variable} %random-seed-file" msgstr "" #. type: defvr #: doc/guix.texi:11373 msgid "" "This is the name of the file where some random bytes are saved by " "@var{urandom-seed-service} to seed @file{/dev/urandom} when rebooting. It " "defaults to @file{/var/lib/random-seed}." msgstr "" #. type: cindex #: doc/guix.texi:11375 doc/guix.texi:12877 #, no-wrap msgid "keymap" msgstr "" #. type: cindex #: doc/guix.texi:11376 #, no-wrap msgid "keyboard" msgstr "" #. type: deffn #: doc/guix.texi:11377 #, no-wrap msgid "{Scheme Procedure} console-keymap-service @var{files} ..." msgstr "" #. type: deffn #: doc/guix.texi:11382 msgid "" "Return a service to load console keymaps from @var{files} using " "@command{loadkeys} command. Most likely, you want to load some default " "keymap, which can be done like this:" msgstr "" #. type: example #: doc/guix.texi:11385 #, no-wrap msgid "(console-keymap-service \"dvorak\")\n" msgstr "" #. type: deffn #: doc/guix.texi:11389 msgid "" "Or, for example, for a Swedish keyboard, you may need to combine the " "following keymaps:" msgstr "" #. type: example #: doc/guix.texi:11391 #, no-wrap msgid "(console-keymap-service \"se-lat6\" \"se-fi-lat6\")\n" msgstr "" #. type: deffn #: doc/guix.texi:11395 msgid "" "Also you can specify a full file name (or file names) of your keymap(s). " "See @code{man loadkeys} for details." msgstr "" #. type: cindex #: doc/guix.texi:11398 #, no-wrap msgid "mouse" msgstr "" #. type: cindex #: doc/guix.texi:11399 #, no-wrap msgid "gpm" msgstr "" #. type: defvr #: doc/guix.texi:11400 #, no-wrap msgid "{Scheme Variable} gpm-service-type" msgstr "" #. type: defvr #: doc/guix.texi:11405 msgid "" "This is the type of the service that runs GPM, the @dfn{general-purpose " "mouse daemon}, which provides mouse support to the Linux console. GPM " "allows users to use the mouse in the console, notably to select, copy, and " "paste text." msgstr "" #. type: defvr #: doc/guix.texi:11408 msgid "" "The value for services of this type must be a @code{gpm-configuration} (see " "below). This service is not part of @var{%base-services}." msgstr "" #. type: deftp #: doc/guix.texi:11410 #, no-wrap msgid "{Data Type} gpm-configuration" msgstr "" #. type: deftp #: doc/guix.texi:11412 msgid "Data type representing the configuration of GPM." msgstr "" #. type: item #: doc/guix.texi:11414 #, no-wrap msgid "@code{options} (default: @code{%default-gpm-options})" msgstr "" #. type: table #: doc/guix.texi:11419 msgid "" "Command-line options passed to @command{gpm}. The default set of options " "instruct @command{gpm} to listen to mouse events on @file{/dev/input/mice}. " "@xref{Command Line,,, gpm, gpm manual}, for more information." msgstr "" #. type: item #: doc/guix.texi:11420 #, no-wrap msgid "@code{gpm} (default: @code{gpm})" msgstr "" #. type: table #: doc/guix.texi:11422 msgid "The GPM package to use." msgstr "" #. type: anchor{#1} #: doc/guix.texi:11427 msgid "guix-publish-service-type" msgstr "" #. type: deffn #: doc/guix.texi:11427 #, no-wrap msgid "{Scheme Variable} guix-publish-service-type" msgstr "" #. type: deffn #: doc/guix.texi:11431 msgid "" "This is the service type for @command{guix publish} (@pxref{Invoking guix " "publish}). Its value must be a @code{guix-configuration} object, as " "described below." msgstr "" #. type: deffn #: doc/guix.texi:11435 msgid "" "This assumes that @file{/etc/guix} already contains a signing key pair as " "created by @command{guix archive --generate-key} (@pxref{Invoking guix " "archive}). If that is not the case, the service will fail to start." msgstr "" #. type: deftp #: doc/guix.texi:11437 #, no-wrap msgid "{Data Type} guix-publish-configuration" msgstr "" #. type: deftp #: doc/guix.texi:11440 msgid "" "Data type representing the configuration of the @code{guix publish} service." msgstr "" #. type: item #: doc/guix.texi:11442 #, no-wrap msgid "@code{guix} (default: @code{guix})" msgstr "" #. type: item #: doc/guix.texi:11445 #, no-wrap msgid "@code{port} (default: @code{80})" msgstr "" #. type: table #: doc/guix.texi:11447 msgid "The TCP port to listen for connections." msgstr "" #. type: item #: doc/guix.texi:11448 #, no-wrap msgid "@code{host} (default: @code{\"localhost\"})" msgstr "" #. type: table #: doc/guix.texi:11451 msgid "" "The host (and thus, network interface) to listen to. Use @code{\"0.0.0.0\"} " "to listen on all the network interfaces." msgstr "" #. type: table #: doc/guix.texi:11456 msgid "" "The gzip compression level at which substitutes are compressed. Use " "@code{0} to disable compression altogether, and @code{9} to get the best " "compression ratio at the expense of increased CPU usage." msgstr "" #. type: item #: doc/guix.texi:11457 #, no-wrap msgid "@code{nar-path} (default: @code{\"nar\"})" msgstr "" #. type: table #: doc/guix.texi:11460 msgid "" "The URL path at which ``nars'' can be fetched. @xref{Invoking guix publish, " "@code{--nar-path}}, for details." msgstr "" #. type: item #: doc/guix.texi:11461 #, no-wrap msgid "@code{cache} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:11467 msgid "" "When it is @code{#f}, disable caching and instead generate archives on " "demand. Otherwise, this should be the name of a directory---e.g., @code{\"/" "var/cache/guix/publish\"}---where @command{guix publish} caches archives and " "meta-data ready to be sent. @xref{Invoking guix publish, @option{--cache}}, " "for more information on the tradeoffs involved." msgstr "" #. type: item #: doc/guix.texi:11468 #, no-wrap msgid "@code{workers} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:11472 msgid "" "When it is an integer, this is the number of worker threads used for " "caching; when @code{#f}, the number of processors is used. @xref{Invoking " "guix publish, @option{--workers}}, for more information." msgstr "" #. type: item #: doc/guix.texi:11473 #, no-wrap msgid "@code{ttl} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:11477 msgid "" "When it is an integer, this denotes the @dfn{time-to-live} in seconds of the " "published archives. @xref{Invoking guix publish, @option{--ttl}}, for more " "information." msgstr "" #. type: anchor{#1} #: doc/guix.texi:11481 msgid "rngd-service" msgstr "" #. type: deffn #: doc/guix.texi:11481 #, no-wrap msgid "{Scheme Procedure} rngd-service [#:rng-tools @var{rng-tools}] @" msgstr "" #. type: deffn #: doc/guix.texi:11486 msgid "" "[#:device \"/dev/hwrng\"] Return a service that runs the @command{rngd} " "program from @var{rng-tools} to add @var{device} to the kernel's entropy " "pool. The service will fail if @var{device} does not exist." msgstr "" #. type: anchor{#1} #: doc/guix.texi:11489 msgid "pam-limits-service" msgstr "" #. type: cindex #: doc/guix.texi:11489 #, no-wrap msgid "session limits" msgstr "" #. type: cindex #: doc/guix.texi:11490 #, no-wrap msgid "ulimit" msgstr "" #. type: cindex #: doc/guix.texi:11491 #, no-wrap msgid "priority" msgstr "" #. type: cindex #: doc/guix.texi:11492 #, no-wrap msgid "realtime" msgstr "" #. type: cindex #: doc/guix.texi:11493 #, no-wrap msgid "jackd" msgstr "" #. type: deffn #: doc/guix.texi:11494 #, no-wrap msgid "{Scheme Procedure} pam-limits-service [#:limits @code{'()}]" msgstr "" #. type: deffn #: doc/guix.texi:11501 msgid "" "Return a service that installs a configuration file for the @uref{http://" "linux-pam.org/Linux-PAM-html/sag-pam_limits.html, @code{pam_limits} " "module}. The procedure optionally takes a list of @code{pam-limits-entry} " "values, which can be used to specify @code{ulimit} limits and nice priority " "limits to user sessions." msgstr "" #. type: deffn #: doc/guix.texi:11504 msgid "" "The following limits definition sets two hard and soft limits for all login " "sessions of users in the @code{realtime} group:" msgstr "" #. type: example #: doc/guix.texi:11510 #, no-wrap msgid "" "(pam-limits-service\n" " (list\n" " (pam-limits-entry \"@@realtime\" 'both 'rtprio 99)\n" " (pam-limits-entry \"@@realtime\" 'both 'memlock 'unlimited)))\n" msgstr "" #. type: deffn #: doc/guix.texi:11516 msgid "" "The first entry increases the maximum realtime priority for non-privileged " "processes; the second entry lifts any restriction of the maximum address " "space that can be locked in memory. These settings are commonly used for " "real-time audio systems." msgstr "" #. type: cindex #: doc/guix.texi:11521 #, no-wrap msgid "cron" msgstr "" #. type: cindex #: doc/guix.texi:11522 #, no-wrap msgid "mcron" msgstr "" #. type: cindex #: doc/guix.texi:11523 #, no-wrap msgid "scheduling jobs" msgstr "" #. type: Plain text #: doc/guix.texi:11530 msgid "" "The @code{(gnu services mcron)} module provides an interface to GNU@tie{}" "mcron, a daemon to run jobs at scheduled times (@pxref{Top,,, mcron, " "GNU@tie{}mcron}). GNU@tie{}mcron is similar to the traditional Unix " "@command{cron} daemon; the main difference is that it is implemented in " "Guile Scheme, which provides a lot of flexibility when specifying the " "scheduling of jobs and their actions." msgstr "" #. type: Plain text #: doc/guix.texi:11538 msgid "" "The example below defines an operating system that runs the " "@command{updatedb} (@pxref{Invoking updatedb,,, find, Finding Files}) and " "the @command{guix gc} commands (@pxref{Invoking guix gc}) daily, as well as " "the @command{mkid} command on behalf of an unprivileged user (@pxref{mkid " "invocation,,, idutils, ID Database Utilities}). It uses gexps to introduce " "job definitions that are passed to mcron (@pxref{G-Expressions})." msgstr "" #. type: lisp #: doc/guix.texi:11542 #, no-wrap msgid "" "(use-modules (guix) (gnu) (gnu services mcron))\n" "(use-package-modules base idutils)\n" "\n" msgstr "" #. type: lisp #: doc/guix.texi:11551 #, no-wrap msgid "" "(define updatedb-job\n" " ;; Run 'updatedb' at 3AM every day. Here we write the\n" " ;; job's action as a Scheme procedure.\n" " #~(job '(next-hour '(3))\n" " (lambda ()\n" " (execl (string-append #$findutils \"/bin/updatedb\")\n" " \"updatedb\"\n" " \"--prunepaths=/tmp /var/tmp /gnu/store\"))))\n" "\n" msgstr "" #. type: lisp #: doc/guix.texi:11557 #, no-wrap msgid "" "(define garbage-collector-job\n" " ;; Collect garbage 5 minutes after midnight every day.\n" " ;; The job's action is a shell command.\n" " #~(job \"5 0 * * *\" ;Vixie cron syntax\n" " \"guix gc -F 1G\"))\n" "\n" msgstr "" #. type: lisp #: doc/guix.texi:11564 #, no-wrap msgid "" "(define idutils-job\n" " ;; Update the index database as user \"charlie\" at 12:15PM\n" " ;; and 19:15PM. This runs from the user's home directory.\n" " #~(job '(next-minute-from (next-hour '(12 19)) '(15))\n" " (string-append #$idutils \"/bin/mkid src\")\n" " #:user \"charlie\"))\n" "\n" msgstr "" #. type: lisp #: doc/guix.texi:11571 #, no-wrap msgid "" "(operating-system\n" " ;; @dots{}\n" " (services (cons (mcron-service (list garbage-collector-job\n" " updatedb-job\n" " idutils-job))\n" " %base-services)))\n" msgstr "" #. type: Plain text #: doc/guix.texi:11576 msgid "" "@xref{Guile Syntax, mcron job specifications,, mcron, GNU@tie{}mcron}, for " "more information on mcron job specifications. Below is the reference of the " "mcron service." msgstr "" #. type: Plain text #: doc/guix.texi:11579 msgid "" "On a running system, you can use the @code{schedule} action of the service " "to visualize the mcron jobs that will be executed next:" msgstr "" #. type: example #: doc/guix.texi:11582 #, no-wrap msgid "# herd schedule mcron\n" msgstr "" #. type: Plain text #: doc/guix.texi:11587 msgid "" "The example above lists the next five tasks that will be executed, but you " "can also specify the number of tasks to display:" msgstr "" #. type: example #: doc/guix.texi:11590 #, no-wrap msgid "# herd schedule mcron 10\n" msgstr "" #. type: deffn #: doc/guix.texi:11592 #, no-wrap msgid "{Scheme Procedure} mcron-service @var{jobs} [#:mcron @var{mcron}]" msgstr "" #. type: deffn #: doc/guix.texi:11595 msgid "" "Return an mcron service running @var{mcron} that schedules @var{jobs}, a " "list of gexps denoting mcron job specifications." msgstr "" #. type: deffn #: doc/guix.texi:11597 msgid "This is a shorthand for:" msgstr "" #. type: example #: doc/guix.texi:11600 #, no-wrap msgid "" "(service mcron-service-type\n" " (mcron-configuration (mcron mcron) (jobs jobs)))\n" msgstr "" #. type: defvr #: doc/guix.texi:11603 #, no-wrap msgid "{Scheme Variable} mcron-service-type" msgstr "" #. type: defvr #: doc/guix.texi:11606 msgid "" "This is the type of the @code{mcron} service, whose value is an @code{mcron-" "configuration} object." msgstr "" #. type: defvr #: doc/guix.texi:11611 msgid "" "This service type can be the target of a service extension that provides it " "additional job specifications (@pxref{Service Composition}). In other " "words, it is possible to define services that provide additional mcron jobs " "to run." msgstr "" #. type: deftp #: doc/guix.texi:11613 #, no-wrap msgid "{Data Type} mcron-configuration" msgstr "" #. type: deftp #: doc/guix.texi:11615 msgid "Data type representing the configuration of mcron." msgstr "" #. type: item #: doc/guix.texi:11617 #, no-wrap msgid "@code{mcron} (default: @var{mcron})" msgstr "" #. type: table #: doc/guix.texi:11619 msgid "The mcron package to use." msgstr "" #. type: code{#1} #: doc/guix.texi:11620 doc/guix.texi:11679 #, no-wrap msgid "jobs" msgstr "" #. type: table #: doc/guix.texi:11624 msgid "" "This is a list of gexps (@pxref{G-Expressions}), where each gexp corresponds " "to an mcron job specification (@pxref{Syntax, mcron job specifications,, " "mcron, GNU@tie{}mcron})." msgstr "" #. type: cindex #: doc/guix.texi:11631 #, no-wrap msgid "rottlog" msgstr "" #. type: cindex #: doc/guix.texi:11632 #, no-wrap msgid "log rotation" msgstr "" #. type: Plain text #: doc/guix.texi:11639 msgid "" "Log files such as those found in @file{/var/log} tend to grow endlessly, so " "it's a good idea to @dfn{rotate} them once in a while---i.e., archive their " "contents in separate files, possibly compressed. The @code{(gnu services " "admin)} module provides an interface to GNU@tie{}Rot[t]log, a log rotation " "tool (@pxref{Top,,, rottlog, GNU Rot[t]log Manual})." msgstr "" #. type: Plain text #: doc/guix.texi:11642 msgid "" "The example below defines an operating system that provides log rotation " "with the default settings, for commonly encountered log files." msgstr "" #. type: lisp #: doc/guix.texi:11647 #, no-wrap msgid "" "(use-modules (guix) (gnu))\n" "(use-service-modules admin mcron)\n" "(use-package-modules base idutils)\n" "\n" msgstr "" #. type: lisp #: doc/guix.texi:11652 #, no-wrap msgid "" "(operating-system\n" " ;; @dots{}\n" " (services (cons (service rottlog-service-type)\n" " %base-services)))\n" msgstr "" #. type: defvr #: doc/guix.texi:11654 #, no-wrap msgid "{Scheme Variable} rottlog-service-type" msgstr "" #. type: defvr #: doc/guix.texi:11657 msgid "" "This is the type of the Rottlog service, whose value is a @code{rottlog-" "configuration} object." msgstr "" #. type: defvr #: doc/guix.texi:11660 msgid "" "Other services can extend this one with new @code{log-rotation} objects (see " "below), thereby augmenting the set of files to be rotated." msgstr "" #. type: defvr #: doc/guix.texi:11663 msgid "" "This service type can define mcron jobs (@pxref{Scheduled Job Execution}) to " "run the rottlog service." msgstr "" #. type: deftp #: doc/guix.texi:11665 #, no-wrap msgid "{Data Type} rottlog-configuration" msgstr "" #. type: deftp #: doc/guix.texi:11667 msgid "Data type representing the configuration of rottlog." msgstr "" #. type: item #: doc/guix.texi:11669 #, no-wrap msgid "@code{rottlog} (default: @code{rottlog})" msgstr "" #. type: table #: doc/guix.texi:11671 msgid "The Rottlog package to use." msgstr "" #. type: item #: doc/guix.texi:11672 #, no-wrap msgid "@code{rc-file} (default: @code{(file-append rottlog \"/etc/rc\")})" msgstr "" #. type: table #: doc/guix.texi:11675 msgid "" "The Rottlog configuration file to use (@pxref{Mandatory RC Variables,,, " "rottlog, GNU Rot[t]log Manual})." msgstr "" #. type: item #: doc/guix.texi:11676 #, no-wrap msgid "@code{rotations} (default: @code{%default-rotations})" msgstr "" #. type: table #: doc/guix.texi:11678 msgid "A list of @code{log-rotation} objects as defined below." msgstr "" #. type: table #: doc/guix.texi:11682 msgid "" "This is a list of gexps where each gexp corresponds to an mcron job " "specification (@pxref{Scheduled Job Execution})." msgstr "" #. type: deftp #: doc/guix.texi:11685 #, no-wrap msgid "{Data Type} log-rotation" msgstr "" #. type: deftp #: doc/guix.texi:11687 msgid "Data type representing the rotation of a group of log files." msgstr "" #. type: deftp #: doc/guix.texi:11691 msgid "" "Taking an example from the Rottlog manual (@pxref{Period Related File " "Examples,,, rottlog, GNU Rot[t]log Manual}), a log rotation might be defined " "like this:" msgstr "" #. type: example #: doc/guix.texi:11700 #, no-wrap msgid "" "(log-rotation\n" " (frequency 'daily)\n" " (files '(\"/var/log/apache/*\"))\n" " (options '(\"storedir apache-archives\"\n" " \"rotate 6\"\n" " \"notifempty\"\n" " \"nocompress\")))\n" msgstr "" #. type: deftp #: doc/guix.texi:11703 msgid "The list of fields is as follows:" msgstr "" #. type: item #: doc/guix.texi:11705 #, no-wrap msgid "@code{frequency} (default: @code{'weekly})" msgstr "" #. type: table #: doc/guix.texi:11707 msgid "The log rotation frequency, a symbol." msgstr "" #. type: code{#1} #: doc/guix.texi:11708 #, no-wrap msgid "files" msgstr "" #. type: table #: doc/guix.texi:11710 msgid "The list of files or file glob patterns to rotate." msgstr "" #. type: item #: doc/guix.texi:11711 #, no-wrap msgid "@code{options} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:11714 msgid "" "The list of rottlog options for this rotation (@pxref{Configuration " "parameters,,, rottlog, GNU Rot[t]lg Manual})." msgstr "" #. type: item #: doc/guix.texi:11715 #, no-wrap msgid "@code{post-rotate} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:11717 msgid "Either @code{#f} or a gexp to execute once the rotation has completed." msgstr "" #. type: defvr #: doc/guix.texi:11720 #, no-wrap msgid "{Scheme Variable} %default-rotations" msgstr "" #. type: defvr #: doc/guix.texi:11723 msgid "" "Specifies weekly rotation of @var{%rotated-files} and a couple of other " "files." msgstr "" #. type: defvr #: doc/guix.texi:11725 #, no-wrap msgid "{Scheme Variable} %rotated-files" msgstr "" #. type: defvr #: doc/guix.texi:11728 msgid "" "The list of syslog-controlled files to be rotated. By default it is: " "@code{'(\"/var/log/messages\" \"/var/log/secure\")}." msgstr "" #. type: Plain text #: doc/guix.texi:11735 msgid "" "The @code{(gnu services networking)} module provides services to configure " "the network interface." msgstr "" #. type: cindex #: doc/guix.texi:11736 #, no-wrap msgid "DHCP, networking service" msgstr "" #. type: defvr #: doc/guix.texi:11737 #, no-wrap msgid "{Scheme Variable} dhcp-client-service-type" msgstr "" #. type: defvr #: doc/guix.texi:11741 msgid "" "This is the type of services that run @var{dhcp}, a Dynamic Host " "Configuration Protocol (DHCP) client, on all the non-loopback network " "interfaces. Its value is the DHCP client package to use, @code{isc-dhcp} by " "default." msgstr "" #. type: deffn #: doc/guix.texi:11743 #, no-wrap msgid "{Scheme Procedure} dhcpd-service-type" msgstr "" #. type: deffn #: doc/guix.texi:11747 msgid "" "This type defines a service that runs a DHCP daemon. To create a service of " "this type, you must supply a @code{}. For example:" msgstr "" #. type: example #: doc/guix.texi:11753 #, no-wrap msgid "" "(service dhcpd-service-type\n" " (dhcpd-configuration\n" " (config-file (local-file \"my-dhcpd.conf\"))\n" " (interfaces '(\"enp0s25\"))))\n" msgstr "" #. type: deftp #: doc/guix.texi:11756 #, no-wrap msgid "{Data Type} dhcpd-configuration" msgstr "" #. type: item #: doc/guix.texi:11758 #, no-wrap msgid "@code{package} (default: @code{isc-dhcp})" msgstr "" #. type: table #: doc/guix.texi:11763 msgid "" "The package that provides the DHCP daemon. This package is expected to " "provide the daemon at @file{sbin/dhcpd} relative to its output directory. " "The default package is the @uref{http://www.isc.org/products/DHCP, ISC's " "DHCP server}." msgstr "" #. type: item #: doc/guix.texi:11763 doc/guix.texi:11952 doc/guix.texi:15716 #, no-wrap msgid "@code{config-file} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:11768 msgid "" "The configuration file to use. This is required. It will be passed to " "@code{dhcpd} via its @code{-cf} option. This may be any ``file-like'' " "object (@pxref{G-Expressions, file-like objects}). See @code{man dhcpd." "conf} for details on the configuration file syntax." msgstr "" #. type: item #: doc/guix.texi:11768 #, no-wrap msgid "@code{version} (default: @code{\"4\"})" msgstr "" #. type: table #: doc/guix.texi:11773 msgid "" "The DHCP version to use. The ISC DHCP server supports the values ``4'', " "``6'', and ``4o6''. These correspond to the @code{dhcpd} program options " "@code{-4}, @code{-6}, and @code{-4o6}. See @code{man dhcpd} for details." msgstr "" #. type: item #: doc/guix.texi:11773 #, no-wrap msgid "@code{run-directory} (default: @code{\"/run/dhcpd\"})" msgstr "" #. type: table #: doc/guix.texi:11776 msgid "" "The run directory to use. At service activation time, this directory will " "be created if it does not exist." msgstr "" #. type: item #: doc/guix.texi:11776 #, no-wrap msgid "@code{pid-file} (default: @code{\"/run/dhcpd/dhcpd.pid\"})" msgstr "" #. type: table #: doc/guix.texi:11779 msgid "" "The PID file to use. This corresponds to the @code{-pf} option of " "@code{dhcpd}. See @code{man dhcpd} for details." msgstr "" #. type: item #: doc/guix.texi:11779 #, no-wrap msgid "@code{interfaces} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:11785 msgid "" "The names of the network interfaces on which dhcpd should listen for " "broadcasts. If this list is not empty, then its elements (which must be " "strings) will be appended to the @code{dhcpd} invocation when starting the " "daemon. It may not be necessary to explicitly specify any interfaces here; " "see @code{man dhcpd} for details." msgstr "" #. type: defvr #: doc/guix.texi:11788 #, no-wrap msgid "{Scheme Variable} static-networking-service-type" msgstr "" #. type: defvr #: doc/guix.texi:11791 msgid "This is the type for statically-configured network interfaces." msgstr "" #. type: deffn #: doc/guix.texi:11793 #, no-wrap msgid "{Scheme Procedure} static-networking-service @var{interface} @var{ip} @" msgstr "" #. type: deffn #: doc/guix.texi:11801 msgid "" "[#:netmask #f] [#:gateway #f] [#:name-servers @code{'()}] @ [#:requirement " "@code{'(udev)}] Return a service that starts @var{interface} with address " "@var{ip}. If @var{netmask} is true, use it as the network mask. If " "@var{gateway} is true, it must be a string specifying the default network " "gateway. @var{requirement} can be used to declare a dependency on another " "service before configuring the interface." msgstr "" #. type: deffn #: doc/guix.texi:11806 msgid "" "This procedure can be called several times, one for each network interface " "of interest. Behind the scenes what it does is extend @code{static-" "networking-service-type} with additional network interfaces to handle." msgstr "" #. type: deffn #: doc/guix.texi:11808 msgid "For example:" msgstr "" #. type: example #: doc/guix.texi:11813 #, no-wrap msgid "" "(static-networking-service \"eno1\" \"192.168.1.82\"\n" " #:gateway \"192.168.1.2\"\n" " #:name-servers '(\"192.168.1.2\"))\n" msgstr "" #. type: cindex #: doc/guix.texi:11816 #, no-wrap msgid "wicd" msgstr "" #. type: cindex #: doc/guix.texi:11819 #, no-wrap msgid "network management" msgstr "" #. type: deffn #: doc/guix.texi:11820 #, no-wrap msgid "{Scheme Procedure} wicd-service [#:wicd @var{wicd}]" msgstr "" #. type: deffn #: doc/guix.texi:11823 msgid "" "Return a service that runs @url{https://launchpad.net/wicd,Wicd}, a network " "management daemon that aims to simplify wired and wireless networking." msgstr "" #. type: deffn #: doc/guix.texi:11828 msgid "" "This service adds the @var{wicd} package to the global profile, providing " "several commands to interact with the daemon and configure networking: " "@command{wicd-client}, a graphical user interface, and the @command{wicd-" "cli} and @command{wicd-curses} user interfaces." msgstr "" #. type: cindex #: doc/guix.texi:11830 #, no-wrap msgid "ModemManager" msgstr "" #. type: defvr #: doc/guix.texi:11832 #, no-wrap msgid "{Scheme Variable} modem-manager-service-type" msgstr "" #. type: defvr #: doc/guix.texi:11837 msgid "" "This is the service type for the @uref{https://wiki.gnome.org/Projects/" "ModemManager, ModemManager} service. The value for this service type is a " "@code{modem-manager-configuration} record." msgstr "" #. type: defvr #: doc/guix.texi:11840 doc/guix.texi:11862 msgid "" "This service is part of @code{%desktop-services} (@pxref{Desktop Services})." msgstr "" #. type: deftp #: doc/guix.texi:11842 #, no-wrap msgid "{Data Type} modem-manager-configuration" msgstr "" #. type: deftp #: doc/guix.texi:11844 msgid "Data type representing the configuration of ModemManager." msgstr "" #. type: item #: doc/guix.texi:11846 #, no-wrap msgid "@code{modem-manager} (default: @code{modem-manager})" msgstr "" #. type: table #: doc/guix.texi:11848 msgid "The ModemManager package to use." msgstr "" #. type: cindex #: doc/guix.texi:11852 #, no-wrap msgid "NetworkManager" msgstr "" #. type: defvr #: doc/guix.texi:11854 #, no-wrap msgid "{Scheme Variable} network-manager-service-type" msgstr "" #. type: defvr #: doc/guix.texi:11859 msgid "" "This is the service type for the @uref{https://wiki.gnome.org/Projects/" "NetworkManager, NetworkManager} service. The value for this service type is " "a @code{network-manager-configuration} record." msgstr "" #. type: deftp #: doc/guix.texi:11864 #, no-wrap msgid "{Data Type} network-manager-configuration" msgstr "" #. type: deftp #: doc/guix.texi:11866 msgid "Data type representing the configuration of NetworkManager." msgstr "" #. type: item #: doc/guix.texi:11868 #, no-wrap msgid "@code{network-manager} (default: @code{network-manager})" msgstr "" #. type: table #: doc/guix.texi:11870 msgid "The NetworkManager package to use." msgstr "" #. type: item #: doc/guix.texi:11871 #, no-wrap msgid "@code{dns} (default: @code{\"default\"})" msgstr "" #. type: table #: doc/guix.texi:11874 msgid "" "Processing mode for DNS, which affects how NetworkManager uses the " "@code{resolv.conf} configuration file." msgstr "" #. type: item #: doc/guix.texi:11876 #, no-wrap msgid "default" msgstr "" #. type: table #: doc/guix.texi:11879 msgid "" "NetworkManager will update @code{resolv.conf} to reflect the nameservers " "provided by currently active connections." msgstr "" #. type: item #: doc/guix.texi:11880 #, no-wrap msgid "dnsmasq" msgstr "" #. type: table #: doc/guix.texi:11884 msgid "" "NetworkManager will run @code{dnsmasq} as a local caching nameserver, using " "a \"split DNS\" configuration if you are connected to a VPN, and then update " "@code{resolv.conf} to point to the local nameserver." msgstr "" #. type: item #: doc/guix.texi:11885 doc/guix.texi:13051 #, no-wrap msgid "none" msgstr "" #. type: table #: doc/guix.texi:11887 msgid "NetworkManager will not modify @code{resolv.conf}." msgstr "" #. type: item #: doc/guix.texi:11889 #, no-wrap msgid "@code{vpn-plugins} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:11893 msgid "" "This is the list of available plugins for virtual private networks (VPNs). " "An example of this is the @code{network-manager-openvpn} package, which " "allows NetworkManager to manage VPNs @i{via} OpenVPN." msgstr "" #. type: cindex #: doc/guix.texi:11897 #, no-wrap msgid "Connman" msgstr "" #. type: deffn #: doc/guix.texi:11898 #, no-wrap msgid "{Scheme Variable} connman-service-type" msgstr "" #. type: deffn #: doc/guix.texi:11901 msgid "" "This is the service type to run @url{https://01.org/connman,Connman}, a " "network connection manager." msgstr "" #. type: deffn #: doc/guix.texi:11904 msgid "" "Its value must be an @code{connman-configuration} record as in this example:" msgstr "" #. type: example #: doc/guix.texi:11909 #, no-wrap msgid "" "(service connman-service-type\n" " (connman-configuration\n" " (disable-vpn? #t)))\n" msgstr "" #. type: deffn #: doc/guix.texi:11912 msgid "See below for details about @code{connman-configuration}." msgstr "" #. type: deftp #: doc/guix.texi:11914 #, no-wrap msgid "{Data Type} connman-configuration" msgstr "" #. type: deftp #: doc/guix.texi:11916 msgid "Data Type representing the configuration of connman." msgstr "" #. type: item #: doc/guix.texi:11918 #, no-wrap msgid "@code{connman} (default: @var{connman})" msgstr "" #. type: table #: doc/guix.texi:11920 msgid "The connman package to use." msgstr "" #. type: item #: doc/guix.texi:11921 #, no-wrap msgid "@code{disable-vpn?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:11923 msgid "When true, disable connman's vpn plugin." msgstr "" #. type: cindex #: doc/guix.texi:11926 #, no-wrap msgid "WPA Supplicant" msgstr "" #. type: defvr #: doc/guix.texi:11927 #, no-wrap msgid "{Scheme Variable} wpa-supplicant-service-type" msgstr "" #. type: defvr #: doc/guix.texi:11931 msgid "" "This is the service type to run @url{https://w1.fi/wpa_supplicant/,WPA " "supplicant}, an authentication daemon required to authenticate against " "encrypted WiFi or ethernet networks." msgstr "" #. type: deftp #: doc/guix.texi:11933 #, no-wrap msgid "{Data Type} wpa-supplicant-configuration" msgstr "" #. type: deftp #: doc/guix.texi:11935 msgid "Data type representing the configuration of WPA Supplicant." msgstr "" #. type: deftp #: doc/guix.texi:11937 msgid "It takes the following parameters:" msgstr "" #. type: item #: doc/guix.texi:11939 #, no-wrap msgid "@code{wpa-supplicant} (default: @code{wpa-supplicant})" msgstr "" #. type: table #: doc/guix.texi:11941 msgid "The WPA Supplicant package to use." msgstr "" #. type: item #: doc/guix.texi:11942 #, no-wrap msgid "@code{dbus?} (default: @code{#t})" msgstr "" #. type: table #: doc/guix.texi:11944 msgid "Whether to listen for requests on D-Bus." msgstr "" #. type: item #: doc/guix.texi:11945 #, no-wrap msgid "@code{pid-file} (default: @code{\"/var/run/wpa_supplicant.pid\"})" msgstr "" #. type: table #: doc/guix.texi:11947 msgid "Where to store the PID file." msgstr "" #. type: item #: doc/guix.texi:11948 #, no-wrap msgid "@code{interface} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:11951 msgid "" "If this is set, it must specify the name of a network interface that WPA " "supplicant will control." msgstr "" #. type: table #: doc/guix.texi:11954 msgid "Optional configuration file to use." msgstr "" #. type: table #: doc/guix.texi:11957 msgid "List of additional command-line arguments to pass to the daemon." msgstr "" #. type: cindex #: doc/guix.texi:11960 #, no-wrap msgid "iptables" msgstr "" #. type: defvr #: doc/guix.texi:11961 #, no-wrap msgid "{Scheme Variable} iptables-service-type" msgstr "" #. type: defvr #: doc/guix.texi:11967 msgid "" "This is the service type to set up an iptables configuration. iptables is a " "packet filtering framework supported by the Linux kernel. This service " "supports configuring iptables for both IPv4 and IPv6. A simple example " "configuration rejecting all incoming connections except those to the ssh " "port 22 is shown below." msgstr "" #. type: lisp #: doc/guix.texi:11987 #, no-wrap msgid "" "(service iptables-service-type\n" " (iptables-configuration\n" " (ipv4-rules (plain-file \"iptables.rules\" \"*filter\n" ":INPUT ACCEPT\n" ":FORWARD ACCEPT\n" ":OUTPUT ACCEPT\n" "-A INPUT -p tcp --dport 22 -j ACCEPT\n" "-A INPUT -j REJECT --reject-with icmp-port-unreachable\n" "COMMIT\n" "\"))\n" " (ipv6-rules (plain-file \"ip6tables.rules\" \"*filter\n" ":INPUT ACCEPT\n" ":FORWARD ACCEPT\n" ":OUTPUT ACCEPT\n" "-A INPUT -p tcp --dport 22 -j ACCEPT\n" "-A INPUT -j REJECT --reject-with icmp6-port-unreachable\n" "COMMIT\n" "\"))))\n" msgstr "" #. type: deftp #: doc/guix.texi:11990 #, no-wrap msgid "{Data Type} iptables-configuration" msgstr "" #. type: deftp #: doc/guix.texi:11992 msgid "The data type representing the configuration of iptables." msgstr "" #. type: item #: doc/guix.texi:11994 #, no-wrap msgid "@code{iptables} (default: @code{iptables})" msgstr "" #. type: table #: doc/guix.texi:11997 msgid "" "The iptables package that provides @code{iptables-restore} and " "@code{ip6tables-restore}." msgstr "" #. type: item #: doc/guix.texi:11997 #, no-wrap msgid "@code{ipv4-rules} (default: @code{%iptables-accept-all-rules})" msgstr "" #. type: table #: doc/guix.texi:12001 msgid "" "The iptables rules to use. It will be passed to @code{iptables-restore}. " "This may be any ``file-like'' object (@pxref{G-Expressions, file-like " "objects})." msgstr "" #. type: item #: doc/guix.texi:12001 #, no-wrap msgid "@code{ipv6-rules} (default: @code{%iptables-accept-all-rules})" msgstr "" #. type: table #: doc/guix.texi:12005 msgid "" "The ip6tables rules to use. It will be passed to @code{ip6tables-restore}. " "This may be any ``file-like'' object (@pxref{G-Expressions, file-like " "objects})." msgstr "" #. type: cindex #: doc/guix.texi:12008 #, no-wrap msgid "NTP (Network Time Protocol), service" msgstr "" #. type: cindex #: doc/guix.texi:12009 #, no-wrap msgid "real time clock" msgstr "" #. type: defvr #: doc/guix.texi:12010 #, no-wrap msgid "{Scheme Variable} ntp-service-type" msgstr "" #. type: defvr #: doc/guix.texi:12014 msgid "" "This is the type of the service running the the @uref{http://www.ntp.org, " "Network Time Protocol (NTP)} daemon, @command{ntpd}. The daemon will keep " "the system clock synchronized with that of the specified NTP servers." msgstr "" #. type: defvr #: doc/guix.texi:12017 msgid "" "The value of this service is an @code{ntpd-configuration} object, as " "described below." msgstr "" #. type: deftp #: doc/guix.texi:12019 #, no-wrap msgid "{Data Type} ntp-configuration" msgstr "" #. type: deftp #: doc/guix.texi:12021 msgid "This is the data type for the NTP service configuration." msgstr "" #. type: item #: doc/guix.texi:12023 #, no-wrap msgid "@code{servers} (default: @code{%ntp-servers})" msgstr "" #. type: table #: doc/guix.texi:12026 msgid "" "This is the list of servers (host names) with which @command{ntpd} will be " "synchronized." msgstr "" #. type: item #: doc/guix.texi:12027 doc/guix.texi:12088 #, no-wrap msgid "@code{allow-large-adjustment?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:12030 msgid "" "This determines whether @command{ntpd} is allowed to make an initial " "adjustment of more than 1,000 seconds." msgstr "" #. type: item #: doc/guix.texi:12031 #, no-wrap msgid "@code{ntp} (default: @code{ntp})" msgstr "" #. type: table #: doc/guix.texi:12033 msgid "The NTP package to use." msgstr "" #. type: defvr #: doc/guix.texi:12036 #, no-wrap msgid "{Scheme Variable} %ntp-servers" msgstr "" #. type: defvr #: doc/guix.texi:12039 msgid "" "List of host names used as the default NTP servers. These are servers of " "the @uref{https://www.ntppool.org/en/, NTP Pool Project}." msgstr "" #. type: cindex #: doc/guix.texi:12041 #, no-wrap msgid "OpenNTPD" msgstr "" #. type: deffn #: doc/guix.texi:12042 #, no-wrap msgid "{Scheme Procedure} openntpd-service-type" msgstr "" #. type: deffn #: doc/guix.texi:12046 msgid "" "Run the @command{ntpd}, the Network Time Protocol (NTP) daemon, as " "implemented by @uref{http://www.openntpd.org, OpenNTPD}. The daemon will " "keep the system clock synchronized with that of the given servers." msgstr "" #. type: example #: doc/guix.texi:12056 #, no-wrap msgid "" "(service\n" " openntpd-service-type\n" " (openntpd-configuration\n" " (listen-on '(\"127.0.0.1\" \"::1\"))\n" " (sensor '(\"udcf0 correction 70000\"))\n" " (constraint-from '(\"www.gnu.org\"))\n" " (constraints-from '(\"https://www.google.com/\"))\n" " (allow-large-adjustment? #t)))\n" "\n" msgstr "" #. type: deftp #: doc/guix.texi:12060 #, no-wrap msgid "{Data Type} openntpd-configuration" msgstr "" #. type: item #: doc/guix.texi:12062 #, no-wrap msgid "@code{openntpd} (default: @code{(file-append openntpd \"/sbin/ntpd\")})" msgstr "" #. type: table #: doc/guix.texi:12064 msgid "The openntpd executable to use." msgstr "" #. type: item #: doc/guix.texi:12064 #, no-wrap msgid "@code{listen-on} (default: @code{'(\"127.0.0.1\" \"::1\")})" msgstr "" #. type: table #: doc/guix.texi:12066 msgid "" "A list of local IP addresses or hostnames the ntpd daemon should listen on." msgstr "" #. type: item #: doc/guix.texi:12066 #, no-wrap msgid "@code{query-from} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:12068 msgid "" "A list of local IP address the ntpd daemon should use for outgoing queries." msgstr "" #. type: item #: doc/guix.texi:12068 #, no-wrap msgid "@code{sensor} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:12073 msgid "" "Specify a list of timedelta sensor devices ntpd should use. @code{ntpd} " "will listen to each sensor that acutally exists and ignore non-existant " "ones. See @uref{https://man.openbsd.org/ntpd.conf, upstream documentation} " "for more information." msgstr "" #. type: item #: doc/guix.texi:12073 #, no-wrap msgid "@code{server} (default: @var{%ntp-servers})" msgstr "" #. type: table #: doc/guix.texi:12075 msgid "" "Specify a list of IP addresses or hostnames of NTP servers to synchronize to." msgstr "" #. type: item #: doc/guix.texi:12075 doc/guix.texi:18135 #, no-wrap msgid "@code{servers} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:12077 msgid "" "Specify a list of IP addresses or hostnames of NTP pools to synchronize to." msgstr "" #. type: item #: doc/guix.texi:12077 #, no-wrap msgid "@code{constraint-from} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:12084 msgid "" "@code{ntpd} can be configured to query the ‘Date’ from trusted HTTPS servers " "via TLS. This time information is not used for precision but acts as an " "authenticated constraint, thereby reducing the impact of unauthenticated NTP " "man-in-the-middle attacks. Specify a list of URLs, IP addresses or " "hostnames of HTTPS servers to provide a constraint." msgstr "" #. type: item #: doc/guix.texi:12084 #, no-wrap msgid "@code{constraints-from} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:12088 msgid "" "As with constraint from, specify a list of URLs, IP addresses or hostnames " "of HTTPS servers to provide a constraint. Should the hostname resolve to " "multiple IP addresses, @code{ntpd} will calculate a median constraint from " "all of them." msgstr "" #. type: table #: doc/guix.texi:12091 msgid "" "Determines if @code{ntpd} is allowed to make an initial adjustment of more " "than 180 seconds." msgstr "" #. type: cindex #: doc/guix.texi:12094 #, no-wrap msgid "inetd" msgstr "" #. type: deffn #: doc/guix.texi:12095 #, no-wrap msgid "{Scheme variable} inetd-service-type" msgstr "" #. type: deffn #: doc/guix.texi:12100 msgid "" "This service runs the @command{inetd} (@pxref{inetd invocation,,, inetutils, " "GNU Inetutils}) daemon. @command{inetd} listens for connections on internet " "sockets, and lazily starts the specified server program when a connection is " "made on one of these sockets." msgstr "" #. type: deffn #: doc/guix.texi:12106 msgid "" "The value of this service is an @code{inetd-configuration} object. The " "following example configures the @command{inetd} daemon to provide the built-" "in @command{echo} service, as well as an smtp service which forwards smtp " "traffic over ssh to a server @code{smtp-server} behind a gateway " "@code{hostname}:" msgstr "" #. type: example #: doc/guix.texi:12129 #, no-wrap msgid "" "(service\n" " inetd-service-type\n" " (inetd-configuration\n" " (entries (list\n" " (inetd-entry\n" " (name \"echo\")\n" " (socket-type 'stream)\n" " (protocol \"tcp\")\n" " (wait? #f)\n" " (user \"root\"))\n" " (inetd-entry\n" " (node \"127.0.0.1\")\n" " (name \"smtp\")\n" " (socket-type 'stream)\n" " (protocol \"tcp\")\n" " (wait? #f)\n" " (user \"root\")\n" " (program (file-append openssh \"/bin/ssh\"))\n" " (arguments\n" " '(\"ssh\" \"-qT\" \"-i\" \"/path/to/ssh_key\"\n" " \"-W\" \"smtp-server:25\" \"user@@hostname\")))))\n" msgstr "" #. type: deffn #: doc/guix.texi:12132 msgid "See below for more details about @code{inetd-configuration}." msgstr "" #. type: deftp #: doc/guix.texi:12134 #, no-wrap msgid "{Data Type} inetd-configuration" msgstr "" #. type: deftp #: doc/guix.texi:12136 msgid "Data type representing the configuration of @command{inetd}." msgstr "" #. type: item #: doc/guix.texi:12138 #, no-wrap msgid "@code{program} (default: @code{(file-append inetutils \"/libexec/inetd\")})" msgstr "" #. type: table #: doc/guix.texi:12140 msgid "The @command{inetd} executable to use." msgstr "" #. type: item #: doc/guix.texi:12141 doc/guix.texi:17841 #, no-wrap msgid "@code{entries} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:12144 msgid "" "A list of @command{inetd} service entries. Each entry should be created by " "the @code{inetd-entry} constructor." msgstr "" #. type: deftp #: doc/guix.texi:12147 #, no-wrap msgid "{Data Type} inetd-entry" msgstr "" #. type: deftp #: doc/guix.texi:12151 msgid "" "Data type representing an entry in the @command{inetd} configuration. Each " "entry corresponds to a socket where @command{inetd} will listen for requests." msgstr "" #. type: item #: doc/guix.texi:12153 #, no-wrap msgid "@code{node} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:12158 msgid "" "Optional string, a comma-separated list of local addresses @command{inetd} " "should use when listening for this service. @xref{Configuration file,,, " "inetutils, GNU Inetutils} for a complete description of all options." msgstr "" #. type: table #: doc/guix.texi:12160 msgid "A string, the name must correspond to an entry in @code{/etc/services}." msgstr "" #. type: code{#1} #: doc/guix.texi:12160 #, no-wrap msgid "socket-type" msgstr "" #. type: table #: doc/guix.texi:12163 msgid "" "One of @code{'stream}, @code{'dgram}, @code{'raw}, @code{'rdm} or " "@code{'seqpacket}." msgstr "" #. type: code{#1} #: doc/guix.texi:12163 #, no-wrap msgid "protocol" msgstr "" #. type: table #: doc/guix.texi:12165 msgid "A string, must correspond to an entry in @code{/etc/protocols}." msgstr "" #. type: item #: doc/guix.texi:12165 #, no-wrap msgid "@code{wait?} (default: @code{#t})" msgstr "" #. type: table #: doc/guix.texi:12168 msgid "" "Whether @command{inetd} should wait for the server to exit before listening " "to new service requests." msgstr "" #. type: table #: doc/guix.texi:12173 msgid "" "A string containing the user (and, optionally, group) name of the user as " "whom the server should run. The group name can be specified in a suffix, " "separated by a colon or period, i.e. @code{\"user\"}, @code{\"user:group\"} " "or @code{\"user.group\"}." msgstr "" #. type: item #: doc/guix.texi:12173 #, no-wrap msgid "@code{program} (default: @code{\"internal\"})" msgstr "" #. type: table #: doc/guix.texi:12176 msgid "" "The server program which will serve the requests, or @code{\"internal\"} if " "@command{inetd} should use a built-in service." msgstr "" #. type: table #: doc/guix.texi:12181 msgid "" "A list strings or file-like objects, which are the server program's " "arguments, starting with the zeroth argument, i.e. the name of the program " "itself. For @command{inetd}'s internal services, this entry must be " "@code{'()} or @code{'(\"internal\")}." msgstr "" #. type: deftp #: doc/guix.texi:12185 msgid "" "@xref{Configuration file,,, inetutils, GNU Inetutils} for a more detailed " "discussion of each configuration field." msgstr "" #. type: cindex #: doc/guix.texi:12187 #, no-wrap msgid "Tor" msgstr "" #. type: defvr #: doc/guix.texi:12188 #, no-wrap msgid "{Scheme Variable} tor-service-type" msgstr "" #. type: defvr #: doc/guix.texi:12193 msgid "" "This is the type for a service that runs the @uref{https://torproject.org, " "Tor} anonymous networking daemon. The service is configured using a " "@code{} record. By default, the Tor daemon runs as the " "@code{tor} unprivileged user, which is a member of the @code{tor} group." msgstr "" #. type: deffn #: doc/guix.texi:12196 #, no-wrap msgid "{Scheme Procedure} tor-service [@var{config-file}] [#:tor @var{tor}]" msgstr "" #. type: deffn #: doc/guix.texi:12200 msgid "" "This procedure is deprecated and will be removed in a future release. " "Return a service of the @code{tor-service-type} type. @var{config-file} and " "@var{tor} have the same meaning as in @code{}." msgstr "" #. type: deftp #: doc/guix.texi:12202 #, no-wrap msgid "{Data Type} tor-configuration" msgstr "" #. type: item #: doc/guix.texi:12204 #, no-wrap msgid "@code{tor} (default: @code{tor})" msgstr "" #. type: table #: doc/guix.texi:12209 msgid "" "The package that provides the Tor daemon. This package is expected to " "provide the daemon at @file{bin/tor} relative to its output directory. The " "default package is the @uref{https://www.torproject.org, Tor Project's} " "implementation." msgstr "" #. type: item #: doc/guix.texi:12210 #, no-wrap msgid "@code{config-file} (default: @code{(plain-file \"empty\" \"\")})" msgstr "" #. type: table #: doc/guix.texi:12216 msgid "" "The configuration file to use. It will be appended to a default " "configuration file, and the final configuration file will be passed to " "@code{tor} via its @code{-f} option. This may be any ``file-like'' object " "(@pxref{G-Expressions, file-like objects}). See @code{man tor} for details " "on the configuration file syntax." msgstr "" #. type: item #: doc/guix.texi:12217 #, no-wrap msgid "@code{hidden-services} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:12223 msgid "" "The list of @code{} records to use. For any hidden service " "you include in this list, appropriate configuration to enable the hidden " "service will be automatically added to the default configuration file. You " "may conveniently create @code{} records using the @code{tor-" "hidden-service} procedure described below." msgstr "" #. type: item #: doc/guix.texi:12224 #, no-wrap msgid "@code{socks-socket-type} (default: @code{'tcp})" msgstr "" #. type: table #: doc/guix.texi:12231 msgid "" "The default socket type that Tor should use for its SOCKS socket. This must " "be either @code{'tcp} or @code{'unix}. If it is @code{'tcp}, then by " "default Tor will listen on TCP port 9050 on the loopback interface (i.e., " "localhost). If it is @code{'unix}, then Tor will listen on the UNIX domain " "socket @file{/var/run/tor/socks-sock}, which will be made writable by " "members of the @code{tor} group." msgstr "" #. type: table #: doc/guix.texi:12236 msgid "" "If you want to customize the SOCKS socket in more detail, leave @code{socks-" "socket-type} at its default value of @code{'tcp} and use @code{config-file} " "to override the default by providing your own @code{SocksPort} option." msgstr "" #. type: cindex #: doc/guix.texi:12239 #, no-wrap msgid "hidden service" msgstr "" #. type: deffn #: doc/guix.texi:12240 #, no-wrap msgid "{Scheme Procedure} tor-hidden-service @var{name} @var{mapping}" msgstr "" #. type: deffn #: doc/guix.texi:12243 msgid "" "Define a new Tor @dfn{hidden service} called @var{name} and implementing " "@var{mapping}. @var{mapping} is a list of port/host tuples, such as:" msgstr "" #. type: example #: doc/guix.texi:12247 #, no-wrap msgid "" " '((22 \"127.0.0.1:22\")\n" " (80 \"127.0.0.1:8080\"))\n" msgstr "" #. type: deffn #: doc/guix.texi:12251 msgid "" "In this example, port 22 of the hidden service is mapped to local port 22, " "and port 80 is mapped to local port 8080." msgstr "" #. type: deffn #: doc/guix.texi:12255 msgid "" "This creates a @file{/var/lib/tor/hidden-services/@var{name}} directory, " "where the @file{hostname} file contains the @code{.onion} host name for the " "hidden service." msgstr "" #. type: deffn #: doc/guix.texi:12258 msgid "" "See @uref{https://www.torproject.org/docs/tor-hidden-service.html.en, the " "Tor project's documentation} for more information." msgstr "" #. type: Plain text #: doc/guix.texi:12261 msgid "The @code{(gnu services rsync)} module provides the following services:" msgstr "" #. type: Plain text #: doc/guix.texi:12265 msgid "" "You might want an rsync daemon if you have files that you want available so " "anyone (or just yourself) can download existing files or upload new files." msgstr "" #. type: deffn #: doc/guix.texi:12266 #, no-wrap msgid "{Scheme Variable} rsync-service-type" msgstr "" #. type: deffn #: doc/guix.texi:12269 msgid "" "This is the type for the @uref{https://rsync.samba.org, rsync} rsync daemon, " "@command{rsync-configuration} record as in this example:" msgstr "" #. type: example #: doc/guix.texi:12272 #, no-wrap msgid "(service rsync-service-type)\n" msgstr "" #. type: deffn #: doc/guix.texi:12275 msgid "See below for details about @code{rsync-configuration}." msgstr "" #. type: deftp #: doc/guix.texi:12277 #, no-wrap msgid "{Data Type} rsync-configuration" msgstr "" #. type: deftp #: doc/guix.texi:12279 msgid "Data type representing the configuration for @code{rsync-service}." msgstr "" #. type: item #: doc/guix.texi:12281 #, no-wrap msgid "@code{package} (default: @var{rsync})" msgstr "" #. type: table #: doc/guix.texi:12283 msgid "@code{rsync} package to use." msgstr "" #. type: item #: doc/guix.texi:12284 #, no-wrap msgid "@code{port-number} (default: @code{873})" msgstr "" #. type: table #: doc/guix.texi:12288 msgid "" "TCP port on which @command{rsync} listens for incoming connections. If port " "is less than @code{1024} @command{rsync} needs to be started as the " "@code{root} user and group." msgstr "" #. type: item #: doc/guix.texi:12289 #, no-wrap msgid "@code{pid-file} (default: @code{\"/var/run/rsyncd/rsyncd.pid\"})" msgstr "" #. type: table #: doc/guix.texi:12291 msgid "Name of the file where @command{rsync} writes its PID." msgstr "" #. type: item #: doc/guix.texi:12292 #, no-wrap msgid "@code{lock-file} (default: @code{\"/var/run/rsyncd/rsyncd.lock\"})" msgstr "" #. type: table #: doc/guix.texi:12294 msgid "Name of the file where @command{rsync} writes its lock file." msgstr "" #. type: item #: doc/guix.texi:12295 #, no-wrap msgid "@code{log-file} (default: @code{\"/var/log/rsyncd.log\"})" msgstr "" #. type: table #: doc/guix.texi:12297 msgid "Name of the file where @command{rsync} writes its log file." msgstr "" #. type: item #: doc/guix.texi:12298 #, no-wrap msgid "@code{use-chroot?} (default: @var{#t})" msgstr "" #. type: table #: doc/guix.texi:12300 msgid "Whether to use chroot for @command{rsync} shared directory." msgstr "" #. type: item #: doc/guix.texi:12301 #, no-wrap msgid "@code{share-path} (default: @file{/srv/rsync})" msgstr "" #. type: table #: doc/guix.texi:12303 msgid "Location of the @command{rsync} shared directory." msgstr "" #. type: item #: doc/guix.texi:12304 #, no-wrap msgid "@code{share-comment} (default: @code{\"Rsync share\"})" msgstr "" #. type: table #: doc/guix.texi:12306 msgid "Comment of the @command{rsync} shared directory." msgstr "" #. type: item #: doc/guix.texi:12307 #, no-wrap msgid "@code{read-only?} (default: @var{#f})" msgstr "" #. type: table #: doc/guix.texi:12309 msgid "Read-write permissions to shared directory." msgstr "" #. type: item #: doc/guix.texi:12310 #, no-wrap msgid "@code{timeout} (default: @code{300})" msgstr "" #. type: table #: doc/guix.texi:12312 msgid "I/O timeout in seconds." msgstr "" #. type: item #: doc/guix.texi:12313 #, no-wrap msgid "@code{user} (default: @var{\"root\"})" msgstr "" #. type: table #: doc/guix.texi:12315 msgid "Owner of the @code{rsync} process." msgstr "" #. type: item #: doc/guix.texi:12316 #, no-wrap msgid "@code{group} (default: @var{\"root\"})" msgstr "" #. type: table #: doc/guix.texi:12318 msgid "Group of the @code{rsync} process." msgstr "" #. type: item #: doc/guix.texi:12319 #, no-wrap msgid "@code{uid} (default: @var{\"rsyncd\"})" msgstr "" #. type: table #: doc/guix.texi:12322 msgid "" "User name or user ID that file transfers to and from that module should take " "place as when the daemon was run as @code{root}." msgstr "" #. type: item #: doc/guix.texi:12323 #, no-wrap msgid "@code{gid} (default: @var{\"rsyncd\"})" msgstr "" #. type: table #: doc/guix.texi:12325 msgid "Group name or group ID that will be used when accessing the module." msgstr "" #. type: Plain text #: doc/guix.texi:12330 msgid "Furthermore, @code{(gnu services ssh)} provides the following services." msgstr "" #. type: cindex #: doc/guix.texi:12330 doc/guix.texi:12369 doc/guix.texi:22733 #, no-wrap msgid "SSH" msgstr "" #. type: cindex #: doc/guix.texi:12331 doc/guix.texi:12370 doc/guix.texi:22734 #, no-wrap msgid "SSH server" msgstr "" #. type: deffn #: doc/guix.texi:12333 #, no-wrap msgid "{Scheme Procedure} lsh-service [#:host-key \"/etc/lsh/host-key\"] @" msgstr "" #. type: deffn #: doc/guix.texi:12342 msgid "" "[#:daemonic? #t] [#:interfaces '()] [#:port-number 22] @ [#:allow-empty-" "passwords? #f] [#:root-login? #f] @ [#:syslog-output? #t] [#:x11-forwarding? " "#t] @ [#:tcp/ip-forwarding? #t] [#:password-authentication? #t] @ [#:public-" "key-authentication? #t] [#:initialize? #t] Run the @command{lshd} program " "from @var{lsh} to listen on port @var{port-number}. @var{host-key} must " "designate a file containing the host key, and readable only by root." msgstr "" #. type: deffn #: doc/guix.texi:12348 msgid "" "When @var{daemonic?} is true, @command{lshd} will detach from the " "controlling terminal and log its output to syslogd, unless one sets " "@var{syslog-output?} to false. Obviously, it also makes lsh-service depend " "on existence of syslogd service. When @var{pid-file?} is true, " "@command{lshd} writes its PID to the file called @var{pid-file}." msgstr "" #. type: deffn #: doc/guix.texi:12352 msgid "" "When @var{initialize?} is true, automatically create the seed and host key " "upon service activation if they do not exist yet. This may take long and " "require interaction." msgstr "" #. type: deffn #: doc/guix.texi:12357 msgid "" "When @var{initialize?} is false, it is up to the user to initialize the " "randomness generator (@pxref{lsh-make-seed,,, lsh, LSH Manual}), and to " "create a key pair with the private key stored in file @var{host-key} " "(@pxref{lshd basics,,, lsh, LSH Manual})." msgstr "" #. type: deffn #: doc/guix.texi:12361 msgid "" "When @var{interfaces} is empty, lshd listens for connections on all the " "network interfaces; otherwise, @var{interfaces} must be a list of host names " "or addresses." msgstr "" #. type: deffn #: doc/guix.texi:12365 msgid "" "@var{allow-empty-passwords?} specifies whether to accept log-ins with empty " "passwords, and @var{root-login?} specifies whether to accept log-ins as root." msgstr "" #. type: deffn #: doc/guix.texi:12367 msgid "The other options should be self-descriptive." msgstr "" #. type: deffn #: doc/guix.texi:12371 #, no-wrap msgid "{Scheme Variable} openssh-service-type" msgstr "" #. type: deffn #: doc/guix.texi:12375 msgid "" "This is the type for the @uref{http://www.openssh.org, OpenSSH} secure shell " "daemon, @command{sshd}. Its value must be an @code{openssh-configuration} " "record as in this example:" msgstr "" #. type: example #: doc/guix.texi:12384 #, no-wrap msgid "" "(service openssh-service-type\n" " (openssh-configuration\n" " (x11-forwarding? #t)\n" " (permit-root-login 'without-password)\n" " (authorized-keys\n" " `((\"alice\" ,(local-file \"alice.pub\"))\n" " (\"bob\" ,(local-file \"bob.pub\"))))))\n" msgstr "" #. type: deffn #: doc/guix.texi:12387 msgid "See below for details about @code{openssh-configuration}." msgstr "" #. type: deffn #: doc/guix.texi:12390 msgid "" "This service can be extended with extra authorized keys, as in this example:" msgstr "" #. type: example #: doc/guix.texi:12395 #, no-wrap msgid "" "(service-extension openssh-service-type\n" " (const `((\"charlie\"\n" " ,(local-file \"charlie.pub\")))))\n" msgstr "" #. type: deftp #: doc/guix.texi:12398 #, no-wrap msgid "{Data Type} openssh-configuration" msgstr "" #. type: deftp #: doc/guix.texi:12400 msgid "This is the configuration record for OpenSSH's @command{sshd}." msgstr "" #. type: item #: doc/guix.texi:12402 #, no-wrap msgid "@code{pid-file} (default: @code{\"/var/run/sshd.pid\"})" msgstr "" #. type: table #: doc/guix.texi:12404 msgid "Name of the file where @command{sshd} writes its PID." msgstr "" #. type: item #: doc/guix.texi:12405 #, no-wrap msgid "@code{port-number} (default: @code{22})" msgstr "" #. type: table #: doc/guix.texi:12407 msgid "TCP port on which @command{sshd} listens for incoming connections." msgstr "" #. type: item #: doc/guix.texi:12408 #, no-wrap msgid "@code{permit-root-login} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:12413 msgid "" "This field determines whether and when to allow logins as root. If " "@code{#f}, root logins are disallowed; if @code{#t}, they are allowed. If " "it's the symbol @code{'without-password}, then root logins are permitted but " "not with password-based authentication." msgstr "" #. type: item #: doc/guix.texi:12414 doc/guix.texi:12562 #, no-wrap msgid "@code{allow-empty-passwords?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:12417 msgid "" "When true, users with empty passwords may log in. When false, they may not." msgstr "" #. type: item #: doc/guix.texi:12418 doc/guix.texi:12565 #, no-wrap msgid "@code{password-authentication?} (default: @code{#t})" msgstr "" #. type: table #: doc/guix.texi:12421 msgid "" "When true, users may log in with their password. When false, they have " "other authentication methods." msgstr "" #. type: item #: doc/guix.texi:12422 #, no-wrap msgid "@code{public-key-authentication?} (default: @code{#t})" msgstr "" #. type: table #: doc/guix.texi:12425 msgid "" "When true, users may log in using public key authentication. When false, " "users have to use other authentication method." msgstr "" #. type: table #: doc/guix.texi:12428 msgid "" "Authorized public keys are stored in @file{~/.ssh/authorized_keys}. This is " "used only by protocol version 2." msgstr "" #. type: item #: doc/guix.texi:12429 #, no-wrap msgid "@code{x11-forwarding?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:12433 msgid "" "When true, forwarding of X11 graphical client connections is enabled---in " "other words, @command{ssh} options @option{-X} and @option{-Y} will work." msgstr "" #. type: item #: doc/guix.texi:12434 #, no-wrap msgid "@code{allow-agent-forwarding?} (default: @code{#t})" msgstr "" #. type: table #: doc/guix.texi:12436 msgid "Whether to allow agent forwarding." msgstr "" #. type: item #: doc/guix.texi:12437 #, no-wrap msgid "@code{allow-tcp-forwarding?} (default: @code{#t})" msgstr "" #. type: table #: doc/guix.texi:12439 msgid "Whether to allow TCP forwarding." msgstr "" #. type: item #: doc/guix.texi:12440 #, no-wrap msgid "@code{gateway-ports?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:12442 msgid "Whether to allow gateway ports." msgstr "" #. type: item #: doc/guix.texi:12443 #, no-wrap msgid "@code{challenge-response-authentication?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:12446 msgid "" "Specifies whether challenge response authentication is allowed (e.g. via " "PAM)." msgstr "" #. type: item #: doc/guix.texi:12447 #, no-wrap msgid "@code{use-pam?} (default: @code{#t})" msgstr "" #. type: table #: doc/guix.texi:12453 msgid "" "Enables the Pluggable Authentication Module interface. If set to @code{#t}, " "this will enable PAM authentication using @code{challenge-response-" "authentication?} and @code{password-authentication?}, in addition to PAM " "account and session module processing for all authentication types." msgstr "" #. type: table #: doc/guix.texi:12458 msgid "" "Because PAM challenge response authentication usually serves an equivalent " "role to password authentication, you should disable either @code{challenge-" "response-authentication?} or @code{password-authentication?}." msgstr "" #. type: item #: doc/guix.texi:12459 #, no-wrap msgid "@code{print-last-log?} (default: @code{#t})" msgstr "" #. type: table #: doc/guix.texi:12462 msgid "" "Specifies whether @command{sshd} should print the date and time of the last " "user login when a user logs in interactively." msgstr "" #. type: item #: doc/guix.texi:12463 #, no-wrap msgid "@code{subsystems} (default: @code{'((\"sftp\" \"internal-sftp\"))})" msgstr "" #. type: table #: doc/guix.texi:12465 msgid "Configures external subsystems (e.g. file transfer daemon)." msgstr "" #. type: table #: doc/guix.texi:12469 msgid "" "This is a list of two-element lists, each of which containing the subsystem " "name and a command (with optional arguments) to execute upon subsystem " "request." msgstr "" #. type: table #: doc/guix.texi:12472 msgid "" "The command @command{internal-sftp} implements an in-process SFTP server. " "Alternately, one can specify the @command{sftp-server} command:" msgstr "" #. type: example #: doc/guix.texi:12477 #, no-wrap msgid "" "(service openssh-service-type\n" " (openssh-configuration\n" " (subsystems\n" " `((\"sftp\" ,(file-append openssh \"/libexec/sftp-server\"))))))\n" msgstr "" #. type: item #: doc/guix.texi:12479 #, no-wrap msgid "@code{accepted-environment} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:12481 msgid "List of strings describing which environment variables may be exported." msgstr "" #. type: table #: doc/guix.texi:12484 msgid "" "Each string gets on its own line. See the @code{AcceptEnv} option in " "@code{man sshd_config}." msgstr "" #. type: table #: doc/guix.texi:12489 msgid "" "This example allows ssh-clients to export the @code{COLORTERM} variable. It " "is set by terminal emulators, which support colors. You can use it in your " "shell's ressource file to enable colors for the prompt and commands if this " "variable is set." msgstr "" #. type: example #: doc/guix.texi:12494 #, no-wrap msgid "" "(service openssh-service-type\n" " (openssh-configuration\n" " (accepted-environment '(\"COLORTERM\"))))\n" msgstr "" #. type: item #: doc/guix.texi:12496 #, no-wrap msgid "@code{authorized-keys} (default: @code{'()})" msgstr "" #. type: cindex #: doc/guix.texi:12497 #, no-wrap msgid "authorized keys, SSH" msgstr "" #. type: cindex #: doc/guix.texi:12498 #, no-wrap msgid "SSH authorized keys" msgstr "" #. type: table #: doc/guix.texi:12502 msgid "" "This is the list of authorized keys. Each element of the list is a user " "name followed by one or more file-like objects that represent SSH public " "keys. For example:" msgstr "" #. type: example #: doc/guix.texi:12509 #, no-wrap msgid "" "(openssh-configuration\n" " (authorized-keys\n" " `((\"rekado\" ,(local-file \"rekado.pub\"))\n" " (\"chris\" ,(local-file \"chris.pub\"))\n" " (\"root\" ,(local-file \"rekado.pub\") ,(local-file \"chris.pub\")))))\n" msgstr "" #. type: table #: doc/guix.texi:12514 msgid "" "registers the specified public keys for user accounts @code{rekado}, " "@code{chris}, and @code{root}." msgstr "" #. type: table #: doc/guix.texi:12517 msgid "" "Additional authorized keys can be specified @i{via} @code{service-extension}." msgstr "" #. type: table #: doc/guix.texi:12520 msgid "" "Note that this does @emph{not} interfere with the use of @file{~/.ssh/" "authorized_keys}." msgstr "" #. type: item #: doc/guix.texi:12521 #, no-wrap msgid "@code{log-level} (default: @code{'info})" msgstr "" #. type: table #: doc/guix.texi:12525 msgid "" "This is a symbol specifying the logging level: @code{quiet}, @code{fatal}, " "@code{error}, @code{info}, @code{verbose}, @code{debug}, etc. See the man " "page for @file{sshd_config} for the full list of level names." msgstr "" #. type: deffn #: doc/guix.texi:12529 #, no-wrap msgid "{Scheme Procedure} dropbear-service [@var{config}]" msgstr "" #. type: deffn #: doc/guix.texi:12533 msgid "" "Run the @uref{https://matt.ucc.asn.au/dropbear/dropbear.html,Dropbear SSH " "daemon} with the given @var{config}, a @code{} " "object." msgstr "" #. type: deffn #: doc/guix.texi:12536 msgid "" "For example, to specify a Dropbear service listening on port 1234, add this " "call to the operating system's @code{services} field:" msgstr "" #. type: example #: doc/guix.texi:12540 #, no-wrap msgid "" "(dropbear-service (dropbear-configuration\n" " (port-number 1234)))\n" msgstr "" #. type: deftp #: doc/guix.texi:12543 #, no-wrap msgid "{Data Type} dropbear-configuration" msgstr "" #. type: deftp #: doc/guix.texi:12545 msgid "This data type represents the configuration of a Dropbear SSH daemon." msgstr "" #. type: item #: doc/guix.texi:12547 #, no-wrap msgid "@code{dropbear} (default: @var{dropbear})" msgstr "" #. type: table #: doc/guix.texi:12549 msgid "The Dropbear package to use." msgstr "" #. type: item #: doc/guix.texi:12550 #, no-wrap msgid "@code{port-number} (default: 22)" msgstr "" #. type: table #: doc/guix.texi:12552 msgid "The TCP port where the daemon waits for incoming connections." msgstr "" #. type: item #: doc/guix.texi:12553 #, no-wrap msgid "@code{syslog-output?} (default: @code{#t})" msgstr "" #. type: table #: doc/guix.texi:12555 msgid "Whether to enable syslog output." msgstr "" #. type: item #: doc/guix.texi:12556 #, no-wrap msgid "@code{pid-file} (default: @code{\"/var/run/dropbear.pid\"})" msgstr "" #. type: table #: doc/guix.texi:12558 msgid "File name of the daemon's PID file." msgstr "" #. type: item #: doc/guix.texi:12559 #, no-wrap msgid "@code{root-login?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:12561 msgid "Whether to allow @code{root} logins." msgstr "" #. type: table #: doc/guix.texi:12564 msgid "Whether to allow empty passwords." msgstr "" #. type: table #: doc/guix.texi:12567 msgid "Whether to enable password-based authentication." msgstr "" #. type: defvr #: doc/guix.texi:12570 #, no-wrap msgid "{Scheme Variable} %facebook-host-aliases" msgstr "" #. type: defvr #: doc/guix.texi:12576 msgid "" "This variable contains a string for use in @file{/etc/hosts} (@pxref{Host " "Names,,, libc, The GNU C Library Reference Manual}). Each line contains a " "entry that maps a known server name of the Facebook on-line service---e.g., " "@code{www.facebook.com}---to the local host---@code{127.0.0.1} or its IPv6 " "equivalent, @code{::1}." msgstr "" #. type: defvr #: doc/guix.texi:12580 msgid "" "This variable is typically used in the @code{hosts-file} field of an " "@code{operating-system} declaration (@pxref{operating-system Reference, " "@file{/etc/hosts}}):" msgstr "" #. type: example #: doc/guix.texi:12583 #, no-wrap msgid "" "(use-modules (gnu) (guix))\n" "\n" msgstr "" #. type: example #: doc/guix.texi:12593 #, no-wrap msgid "" "(operating-system\n" " (host-name \"mymachine\")\n" " ;; ...\n" " (hosts-file\n" " ;; Create a /etc/hosts file with aliases for \"localhost\"\n" " ;; and \"mymachine\", as well as for Facebook servers.\n" " (plain-file \"hosts\"\n" " (string-append (local-host-aliases host-name)\n" " %facebook-host-aliases))))\n" msgstr "" #. type: defvr #: doc/guix.texi:12597 msgid "" "This mechanism can prevent programs running locally, such as Web browsers, " "from accessing Facebook." msgstr "" #. type: Plain text #: doc/guix.texi:12600 msgid "The @code{(gnu services avahi)} provides the following definition." msgstr "" #. type: deffn #: doc/guix.texi:12601 #, no-wrap msgid "{Scheme Procedure} avahi-service [#:avahi @var{avahi}] @" msgstr "" #. type: deffn #: doc/guix.texi:12613 msgid "" "[#:host-name #f] [#:publish? #t] [#:ipv4? #t] @ [#:ipv6? #t] [#:wide-area? " "#f] @ [#:domains-to-browse '()] [#:debug? #f] Return a service that runs " "@command{avahi-daemon}, a system-wide mDNS/DNS-SD responder that allows for " "service discovery and \"zero-configuration\" host name lookups (see " "@uref{http://avahi.org/}), and extends the name service cache daemon (nscd) " "so that it can resolve @code{.local} host names using @uref{http://0pointer." "de/lennart/projects/nss-mdns/, nss-mdns}. Additionally, add the @var{avahi} " "package to the system profile so that commands such as @command{avahi-" "browse} are directly usable." msgstr "" #. type: deffn #: doc/guix.texi:12616 msgid "" "If @var{host-name} is different from @code{#f}, use that as the host name to " "publish for this machine; otherwise, use the machine's actual host name." msgstr "" #. type: deffn #: doc/guix.texi:12620 msgid "" "When @var{publish?} is true, publishing of host names and services is " "allowed; in particular, avahi-daemon will publish the machine's host name " "and IP address via mDNS on the local network." msgstr "" #. type: deffn #: doc/guix.texi:12622 msgid "When @var{wide-area?} is true, DNS-SD over unicast DNS is enabled." msgstr "" #. type: deffn #: doc/guix.texi:12625 msgid "" "Boolean values @var{ipv4?} and @var{ipv6?} determine whether to use IPv4/" "IPv6 sockets." msgstr "" #. type: deffn #: doc/guix.texi:12627 #, no-wrap msgid "{Scheme Variable} openvswitch-service-type" msgstr "" #. type: deffn #: doc/guix.texi:12631 msgid "" "This is the type of the @uref{http://www.openvswitch.org, Open vSwitch} " "service, whose value should be an @code{openvswitch-configuration} object." msgstr "" #. type: deftp #: doc/guix.texi:12633 #, no-wrap msgid "{Data Type} openvswitch-configuration" msgstr "" #. type: deftp #: doc/guix.texi:12637 msgid "" "Data type representing the configuration of Open vSwitch, a multilayer " "virtual switch which is designed to enable massive network automation " "through programmatic extension." msgstr "" #. type: item #: doc/guix.texi:12639 #, no-wrap msgid "@code{package} (default: @var{openvswitch})" msgstr "" #. type: table #: doc/guix.texi:12641 msgid "Package object of the Open vSwitch." msgstr "" #. type: cindex #: doc/guix.texi:12648 #, no-wrap msgid "X11" msgstr "" #. type: cindex #: doc/guix.texi:12649 #, no-wrap msgid "X Window System" msgstr "" #. type: cindex #: doc/guix.texi:12650 doc/guix.texi:12827 #, no-wrap msgid "login manager" msgstr "" #. type: Plain text #: doc/guix.texi:12655 msgid "" "Support for the X Window graphical display system---specifically Xorg---is " "provided by the @code{(gnu services xorg)} module. Note that there is no " "@code{xorg-service} procedure. Instead, the X server is started by the " "@dfn{login manager}, by default SLiM." msgstr "" #. type: cindex #: doc/guix.texi:12656 #, no-wrap msgid "window manager" msgstr "" #. type: Plain text #: doc/guix.texi:12661 msgid "" "To use X11, you must install at least one @dfn{window manager}---for example " "the @code{windowmaker} or @code{openbox} packages---preferably by adding it " "to the @code{packages} field of your operating system definition " "(@pxref{operating-system Reference, system-wide packages})." msgstr "" #. type: defvr #: doc/guix.texi:12662 #, no-wrap msgid "{Scheme Variable} slim-service-type" msgstr "" #. type: defvr #: doc/guix.texi:12664 msgid "This is the type for the SLiM graphical login manager for X11." msgstr "" #. type: cindex #: doc/guix.texi:12665 #, no-wrap msgid "session types (X11)" msgstr "" #. type: cindex #: doc/guix.texi:12666 #, no-wrap msgid "X11 session types" msgstr "" #. type: defvr #: doc/guix.texi:12673 msgid "" "SLiM looks for @dfn{session types} described by the @file{.desktop} files in " "@file{/run/current-system/profile/share/xsessions} and allows users to " "choose a session from the log-in screen using @kbd{F1}. Packages such as " "@code{xfce}, @code{sawfish}, and @code{ratpoison} provide @file{.desktop} " "files; adding them to the system-wide set of packages automatically makes " "them available at the log-in screen." msgstr "" #. type: defvr #: doc/guix.texi:12677 msgid "" "In addition, @file{~/.xsession} files are honored. When available, @file{~/." "xsession} must be an executable that starts a window manager and/or other X " "clients." msgstr "" #. type: deftp #: doc/guix.texi:12679 #, no-wrap msgid "{Data Type} slim-configuration" msgstr "" #. type: deftp #: doc/guix.texi:12681 msgid "Data type representing the configuration of @code{slim-service-type}." msgstr "" #. type: table #: doc/guix.texi:12685 msgid "Whether to allow logins with empty passwords." msgstr "" #. type: item #: doc/guix.texi:12686 #, no-wrap msgid "@code{auto-login?} (default: @code{#f})" msgstr "" #. type: itemx #: doc/guix.texi:12687 #, no-wrap msgid "@code{default-user} (default: @code{\"\"})" msgstr "" #. type: table #: doc/guix.texi:12689 msgid "When @code{auto-login?} is false, SLiM presents a log-in screen." msgstr "" #. type: table #: doc/guix.texi:12692 msgid "" "When @code{auto-login?} is true, SLiM logs in directly as @code{default-" "user}." msgstr "" #. type: item #: doc/guix.texi:12693 #, no-wrap msgid "@code{theme} (default: @code{%default-slim-theme})" msgstr "" #. type: itemx #: doc/guix.texi:12694 #, no-wrap msgid "@code{theme-name} (default: @code{%default-slim-theme-name})" msgstr "" #. type: table #: doc/guix.texi:12696 msgid "The graphical theme to use and its name." msgstr "" #. type: item #: doc/guix.texi:12697 #, no-wrap msgid "@code{auto-login-session} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:12700 msgid "" "If true, this must be the name of the executable to start as the default " "session---e.g., @code{(file-append windowmaker \"/bin/windowmaker\")}." msgstr "" #. type: table #: doc/guix.texi:12704 msgid "" "If false, a session described by one of the available @file{.desktop} files " "in @code{/run/current-system/profile} and @code{~/.guix-profile} will be " "used." msgstr "" #. type: quotation #: doc/guix.texi:12709 msgid "" "You must install at least one window manager in the system profile or in " "your user profile. Failing to do that, if @code{auto-login-session} is " "false, you will be unable to log in." msgstr "" #. type: item #: doc/guix.texi:12711 #, no-wrap msgid "@code{startx} (default: @code{(xorg-start-command)})" msgstr "" #. type: table #: doc/guix.texi:12713 msgid "The command used to start the X11 graphical server." msgstr "" #. type: item #: doc/guix.texi:12714 #, no-wrap msgid "@code{xauth} (default: @code{xauth})" msgstr "" #. type: table #: doc/guix.texi:12716 msgid "The XAuth package to use." msgstr "" #. type: item #: doc/guix.texi:12717 #, no-wrap msgid "@code{shepherd} (default: @code{shepherd})" msgstr "" #. type: table #: doc/guix.texi:12720 msgid "" "The Shepherd package used when invoking @command{halt} and @command{reboot}." msgstr "" #. type: item #: doc/guix.texi:12721 #, no-wrap msgid "@code{sessreg} (default: @code{sessreg})" msgstr "" #. type: table #: doc/guix.texi:12723 msgid "The sessreg package used in order to register the session." msgstr "" #. type: item #: doc/guix.texi:12724 #, no-wrap msgid "@code{slim} (default: @code{slim})" msgstr "" #. type: table #: doc/guix.texi:12726 msgid "The SLiM package to use." msgstr "" #. type: defvr #: doc/guix.texi:12729 doc/guix.texi:22230 #, no-wrap msgid "{Scheme Variable} %default-theme" msgstr "" #. type: defvrx #: doc/guix.texi:12730 #, no-wrap msgid "{Scheme Variable} %default-theme-name" msgstr "" #. type: defvr #: doc/guix.texi:12732 msgid "The default SLiM theme and its name." msgstr "" #. type: deftp #: doc/guix.texi:12735 #, no-wrap msgid "{Data Type} sddm-configuration" msgstr "" #. type: deftp #: doc/guix.texi:12737 msgid "This is the data type representing the sddm service configuration." msgstr "" #. type: item #: doc/guix.texi:12739 #, no-wrap msgid "@code{display-server} (default: \"x11\")" msgstr "" #. type: table #: doc/guix.texi:12742 msgid "" "Select display server to use for the greeter. Valid values are \"x11\" or " "\"wayland\"." msgstr "" #. type: item #: doc/guix.texi:12743 #, no-wrap msgid "@code{numlock} (default: \"on\")" msgstr "" #. type: table #: doc/guix.texi:12745 msgid "Valid values are \"on\", \"off\" or \"none\"." msgstr "" #. type: item #: doc/guix.texi:12746 #, no-wrap msgid "@code{halt-command} (default @code{#~(string-apppend #$shepherd \"/sbin/halt\")})" msgstr "" #. type: table #: doc/guix.texi:12748 msgid "Command to run when halting." msgstr "" #. type: item #: doc/guix.texi:12749 #, no-wrap msgid "@code{reboot-command} (default @code{#~(string-append #$shepherd \"/sbin/reboot\")})" msgstr "" #. type: table #: doc/guix.texi:12751 msgid "Command to run when rebooting." msgstr "" #. type: item #: doc/guix.texi:12752 #, no-wrap msgid "@code{theme} (default \"maldives\")" msgstr "" #. type: table #: doc/guix.texi:12754 msgid "" "Theme to use. Default themes provided by SDDM are \"elarun\" or \"maldives\"." msgstr "" #. type: item #: doc/guix.texi:12755 #, no-wrap msgid "@code{themes-directory} (default \"/run/current-system/profile/share/sddm/themes\")" msgstr "" #. type: table #: doc/guix.texi:12757 msgid "Directory to look for themes." msgstr "" #. type: item #: doc/guix.texi:12758 #, no-wrap msgid "@code{faces-directory} (default \"/run/current-system/profile/share/sddm/faces\")" msgstr "" #. type: table #: doc/guix.texi:12760 msgid "Directory to look for faces." msgstr "" #. type: item #: doc/guix.texi:12761 #, no-wrap msgid "@code{default-path} (default \"/run/current-system/profile/bin\")" msgstr "" #. type: table #: doc/guix.texi:12763 msgid "Default PATH to use." msgstr "" #. type: item #: doc/guix.texi:12764 #, no-wrap msgid "@code{minimum-uid} (default 1000)" msgstr "" #. type: table #: doc/guix.texi:12766 msgid "Minimum UID to display in SDDM." msgstr "" #. type: item #: doc/guix.texi:12767 #, no-wrap msgid "@code{maximum-uid} (default 2000)" msgstr "" #. type: table #: doc/guix.texi:12769 msgid "Maximum UID to display in SDDM" msgstr "" #. type: item #: doc/guix.texi:12770 #, no-wrap msgid "@code{remember-last-user?} (default #t)" msgstr "" #. type: table #: doc/guix.texi:12772 msgid "Remember last user." msgstr "" #. type: item #: doc/guix.texi:12773 #, no-wrap msgid "@code{remember-last-session?} (default #t)" msgstr "" #. type: table #: doc/guix.texi:12775 msgid "Remember last session." msgstr "" #. type: item #: doc/guix.texi:12776 #, no-wrap msgid "@code{hide-users} (default \"\")" msgstr "" #. type: table #: doc/guix.texi:12778 msgid "Usernames to hide from SDDM greeter." msgstr "" #. type: item #: doc/guix.texi:12779 #, no-wrap msgid "@code{hide-shells} (default @code{#~(string-append #$shadow \"/sbin/nologin\")})" msgstr "" #. type: table #: doc/guix.texi:12781 msgid "Users with shells listed will be hidden from the SDDM greeter." msgstr "" #. type: item #: doc/guix.texi:12782 #, no-wrap msgid "@code{session-command} (default @code{#~(string-append #$sddm \"/share/sddm/scripts/wayland-session\")})" msgstr "" #. type: table #: doc/guix.texi:12784 msgid "Script to run before starting a wayland session." msgstr "" #. type: item #: doc/guix.texi:12785 #, no-wrap msgid "@code{sessions-directory} (default \"/run/current-system/profile/share/wayland-sessions\")" msgstr "" #. type: table #: doc/guix.texi:12787 msgid "Directory to look for desktop files starting wayland sessions." msgstr "" #. type: item #: doc/guix.texi:12788 #, no-wrap msgid "@code{xorg-server-path} (default @code{xorg-start-command})" msgstr "" #. type: table #: doc/guix.texi:12790 msgid "Path to xorg-server." msgstr "" #. type: item #: doc/guix.texi:12791 #, no-wrap msgid "@code{xauth-path} (default @code{#~(string-append #$xauth \"/bin/xauth\")})" msgstr "" #. type: table #: doc/guix.texi:12793 msgid "Path to xauth." msgstr "" #. type: item #: doc/guix.texi:12794 #, no-wrap msgid "@code{xephyr-path} (default @code{#~(string-append #$xorg-server \"/bin/Xephyr\")})" msgstr "" #. type: table #: doc/guix.texi:12796 msgid "Path to Xephyr." msgstr "" #. type: item #: doc/guix.texi:12797 #, no-wrap msgid "@code{xdisplay-start} (default @code{#~(string-append #$sddm \"/share/sddm/scripts/Xsetup\")})" msgstr "" #. type: table #: doc/guix.texi:12799 msgid "Script to run after starting xorg-server." msgstr "" #. type: item #: doc/guix.texi:12800 #, no-wrap msgid "@code{xdisplay-stop} (default @code{#~(string-append #$sddm \"/share/sddm/scripts/Xstop\")})" msgstr "" #. type: table #: doc/guix.texi:12802 msgid "Script to run before stopping xorg-server." msgstr "" #. type: item #: doc/guix.texi:12803 #, no-wrap msgid "@code{xsession-command} (default: @code{xinitrc})" msgstr "" #. type: table #: doc/guix.texi:12805 msgid "Script to run before starting a X session." msgstr "" #. type: item #: doc/guix.texi:12806 #, no-wrap msgid "@code{xsessions-directory} (default: \"/run/current-system/profile/share/xsessions\")" msgstr "" #. type: table #: doc/guix.texi:12808 msgid "Directory to look for desktop files starting X sessions." msgstr "" #. type: item #: doc/guix.texi:12809 #, no-wrap msgid "@code{minimum-vt} (default: 7)" msgstr "" #. type: table #: doc/guix.texi:12811 msgid "Minimum VT to use." msgstr "" #. type: item #: doc/guix.texi:12812 #, no-wrap msgid "@code{xserver-arguments} (default \"-nolisten tcp\")" msgstr "" #. type: table #: doc/guix.texi:12814 msgid "Arguments to pass to xorg-server." msgstr "" #. type: item #: doc/guix.texi:12815 #, no-wrap msgid "@code{auto-login-user} (default \"\")" msgstr "" #. type: table #: doc/guix.texi:12817 msgid "User to use for auto-login." msgstr "" #. type: item #: doc/guix.texi:12818 #, no-wrap msgid "@code{auto-login-session} (default \"\")" msgstr "" #. type: table #: doc/guix.texi:12820 msgid "Desktop file to use for auto-login." msgstr "" #. type: item #: doc/guix.texi:12821 #, no-wrap msgid "@code{relogin?} (default #f)" msgstr "" #. type: table #: doc/guix.texi:12823 msgid "Relogin after logout." msgstr "" #. type: cindex #: doc/guix.texi:12828 #, no-wrap msgid "X11 login" msgstr "" #. type: deffn #: doc/guix.texi:12829 #, no-wrap msgid "{Scheme Procedure} sddm-service config" msgstr "" #. type: deffn #: doc/guix.texi:12832 msgid "" "Return a service that spawns the SDDM graphical login manager for config of " "type @code{}." msgstr "" #. type: example #: doc/guix.texi:12837 #, no-wrap msgid "" " (sddm-service (sddm-configuration\n" " (auto-login-user \"Alice\")\n" " (auto-login-session \"xfce.desktop\")))\n" msgstr "" #. type: deffn #: doc/guix.texi:12840 #, no-wrap msgid "{Scheme Procedure} xorg-start-command [#:guile] @" msgstr "" #. type: deffn #: doc/guix.texi:12849 msgid "" "[#:modules %default-xorg-modules] @ [#:fonts %default-xorg-fonts] @ [#:" "configuration-file (xorg-configuration-file @dots{})] @ [#:xorg-server " "@var{xorg-server}] Return a @code{startx} script in which @var{modules}, a " "list of X module packages, and @var{fonts}, a list of X font directories, " "are available. See @code{xorg-wrapper} for more details on the arguments. " "The result should be used in place of @code{startx}." msgstr "" #. type: deffn #: doc/guix.texi:12851 msgid "Usually the X server is started by a login manager." msgstr "" #. type: deffn #: doc/guix.texi:12853 #, no-wrap msgid "{Scheme Procedure} xorg-configuration-file @" msgstr "" #. type: deffn #: doc/guix.texi:12859 msgid "" "[#:modules %default-xorg-modules] @ [#:fonts %default-xorg-fonts] @ [#:" "drivers '()] [#:resolutions '()] [#:extra-config '()] Return a configuration " "file for the Xorg server containing search paths for all the common drivers." msgstr "" #. type: deffn #: doc/guix.texi:12864 msgid "" "@var{modules} must be a list of @dfn{module packages} loaded by the Xorg " "server---e.g., @code{xf86-video-vesa}, @code{xf86-input-keyboard}, and so " "on. @var{fonts} must be a list of font directories to add to the server's " "@dfn{font path}." msgstr "" #. type: deffn #: doc/guix.texi:12868 msgid "" "@var{drivers} must be either the empty list, in which case Xorg chooses a " "graphics driver automatically, or a list of driver names that will be tried " "in this order---e.g., @code{(\"modesetting\" \"vesa\")}." msgstr "" #. type: deffn #: doc/guix.texi:12872 msgid "" "Likewise, when @var{resolutions} is the empty list, Xorg chooses an " "appropriate screen resolution; otherwise, it must be a list of resolutions---" "e.g., @code{((1024 768) (640 480))}." msgstr "" #. type: deffn #: doc/guix.texi:12876 msgid "" "Last, @var{extra-config} is a list of strings or objects appended to the " "configuration file. It is used to pass extra text to be added verbatim to " "the configuration file." msgstr "" #. type: deffn #: doc/guix.texi:12882 msgid "" "This procedure is especially useful to configure a different keyboard layout " "than the default US keymap. For instance, to use the ``bépo'' keymap by " "default on the display manager:" msgstr "" #. type: example #: doc/guix.texi:12892 #, no-wrap msgid "" "(define bepo-evdev\n" " \"Section \\\"InputClass\\\"\n" " Identifier \\\"evdev keyboard catchall\\\"\n" " Driver \\\"evdev\\\"\n" " MatchIsKeyboard \\\"on\\\"\n" " Option \\\"xkb_layout\\\" \\\"fr\\\"\n" " Option \\\"xkb_variant\\\" \\\"bepo\\\"\n" "EndSection\")\n" "\n" msgstr "" #. type: example #: doc/guix.texi:12905 #, no-wrap msgid "" "(operating-system\n" " ...\n" " (services\n" " (modify-services %desktop-services\n" " (slim-service-type config =>\n" " (slim-configuration\n" " (inherit config)\n" " (startx (xorg-start-command\n" " #:configuration-file\n" " (xorg-configuration-file\n" " #:extra-config\n" " (list bepo-evdev)))))))))\n" msgstr "" #. type: deffn #: doc/guix.texi:12914 msgid "" "The @code{MatchIsKeyboard} line specifies that we only apply the " "configuration to keyboards. Without this line, other devices such as " "touchpad may not work correctly because they will be attached to the wrong " "driver. In this example, the user typically used @code{setxkbmap fr bepo} " "to set their favorite keymap once logged in. The first argument corresponds " "to the layout, while the second argument corresponds to the variant. The " "@code{xkb_variant} line can be omitted to select the default variant." msgstr "" #. type: deffn #: doc/guix.texi:12916 #, no-wrap msgid "{Scheme Procedure} screen-locker-service @var{package} [@var{program}]" msgstr "" #. type: deffn #: doc/guix.texi:12920 msgid "" "Add @var{package}, a package for a screen locker or screen saver whose " "command is @var{program}, to the set of setuid programs and add a PAM entry " "for it. For example:" msgstr "" #. type: lisp #: doc/guix.texi:12923 #, no-wrap msgid "(screen-locker-service xlockmore \"xlock\")\n" msgstr "" #. type: deffn #: doc/guix.texi:12926 msgid "makes the good ol' XlockMore usable." msgstr "" #. type: cindex #: doc/guix.texi:12932 #, no-wrap msgid "printer support with CUPS" msgstr "" #. type: Plain text #: doc/guix.texi:12936 msgid "" "The @code{(gnu services cups)} module provides a Guix service definition for " "the CUPS printing service. To add printer support to a GuixSD system, add a " "@code{cups-service} to the operating system definition:" msgstr "" #. type: deffn #: doc/guix.texi:12937 #, no-wrap msgid "{Scheme Variable} cups-service-type" msgstr "" #. type: deffn #: doc/guix.texi:12941 msgid "" "The service type for the CUPS print server. Its value should be a valid " "CUPS configuration (see below). To use the default settings, simply write:" msgstr "" #. type: example #: doc/guix.texi:12943 #, no-wrap msgid "(service cups-service-type)\n" msgstr "" #. type: Plain text #: doc/guix.texi:12953 msgid "" "The CUPS configuration controls the basic things about your CUPS " "installation: what interfaces it listens on, what to do if a print job " "fails, how much logging to do, and so on. To actually add a printer, you " "have to visit the @url{http://localhost:631} URL, or use a tool such as " "GNOME's printer configuration services. By default, configuring a CUPS " "service will generate a self-signed certificate if needed, for secure " "connections to the print server." msgstr "" #. type: Plain text #: doc/guix.texi:12958 msgid "" "Suppose you want to enable the Web interface of CUPS and also add support " "for Epson printers @i{via} the @code{escpr} package and for HP printers " "@i{via} the @code{hplip-minimal} package. You can do that directly, like " "this (you need to use the @code{(gnu packages cups)} module):" msgstr "" #. type: example #: doc/guix.texi:12965 #, no-wrap msgid "" "(service cups-service-type\n" " (cups-configuration\n" " (web-interface? #t)\n" " (extensions\n" " (list cups-filters escpr hplip-minimal))))\n" msgstr "" #. type: Plain text #: doc/guix.texi:12970 msgid "" "Note: If you wish to use the Qt5 based GUI which comes with the hplip " "package then it is suggested that you install the @code{hplip} package, " "either in your OS configuration file or as your user." msgstr "" #. type: Plain text #: doc/guix.texi:12977 msgid "" "The available configuration parameters follow. Each parameter definition is " "preceded by its type; for example, @samp{string-list foo} indicates that the " "@code{foo} parameter should be specified as a list of strings. There is " "also a way to specify the configuration as a string, if you have an old " "@code{cupsd.conf} file that you want to port over from some other system; " "see the end for more details." msgstr "" #. type: Plain text #: doc/guix.texi:12988 msgid "Available @code{cups-configuration} fields are:" msgstr "" #. type: deftypevr #: doc/guix.texi:12989 #, no-wrap msgid "{@code{cups-configuration} parameter} package cups" msgstr "" #. type: deftypevr #: doc/guix.texi:12991 doc/guix.texi:13748 msgid "The CUPS package." msgstr "" #. type: deftypevr #: doc/guix.texi:12993 #, no-wrap msgid "{@code{cups-configuration} parameter} package-list extensions" msgstr "" #. type: deftypevr #: doc/guix.texi:12995 msgid "Drivers and other extensions to the CUPS package." msgstr "" #. type: deftypevr #: doc/guix.texi:12997 #, no-wrap msgid "{@code{cups-configuration} parameter} files-configuration files-configuration" msgstr "" #. type: deftypevr #: doc/guix.texi:13000 msgid "" "Configuration of where to write logs, what directories to use for print " "spools, and related privileged configuration parameters." msgstr "" #. type: deftypevr #: doc/guix.texi:13002 msgid "Available @code{files-configuration} fields are:" msgstr "" #. type: deftypevr #: doc/guix.texi:13003 #, no-wrap msgid "{@code{files-configuration} parameter} log-location access-log" msgstr "" #. type: deftypevr #: doc/guix.texi:13011 msgid "" "Defines the access log filename. Specifying a blank filename disables " "access log generation. The value @code{stderr} causes log entries to be " "sent to the standard error file when the scheduler is running in the " "foreground, or to the system log daemon when run in the background. The " "value @code{syslog} causes log entries to be sent to the system log daemon. " "The server name may be included in filenames using the string @code{%s}, as " "in @code{/var/log/cups/%s-access_log}." msgstr "" #. type: deftypevr #: doc/guix.texi:13013 msgid "Defaults to @samp{\"/var/log/cups/access_log\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:13015 #, no-wrap msgid "{@code{files-configuration} parameter} file-name cache-dir" msgstr "" #. type: deftypevr #: doc/guix.texi:13017 msgid "Where CUPS should cache data." msgstr "" #. type: deftypevr #: doc/guix.texi:13019 msgid "Defaults to @samp{\"/var/cache/cups\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:13021 #, no-wrap msgid "{@code{files-configuration} parameter} string config-file-perm" msgstr "" #. type: deftypevr #: doc/guix.texi:13024 msgid "" "Specifies the permissions for all configuration files that the scheduler " "writes." msgstr "" #. type: deftypevr #: doc/guix.texi:13030 msgid "" "Note that the permissions for the printers.conf file are currently masked to " "only allow access from the scheduler user (typically root). This is done " "because printer device URIs sometimes contain sensitive authentication " "information that should not be generally known on the system. There is no " "way to disable this security feature." msgstr "" #. type: deftypevr #: doc/guix.texi:13032 msgid "Defaults to @samp{\"0640\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:13034 #, no-wrap msgid "{@code{files-configuration} parameter} log-location error-log" msgstr "" #. type: deftypevr #: doc/guix.texi:13042 msgid "" "Defines the error log filename. Specifying a blank filename disables access " "log generation. The value @code{stderr} causes log entries to be sent to " "the standard error file when the scheduler is running in the foreground, or " "to the system log daemon when run in the background. The value " "@code{syslog} causes log entries to be sent to the system log daemon. The " "server name may be included in filenames using the string @code{%s}, as in " "@code{/var/log/cups/%s-error_log}." msgstr "" #. type: deftypevr #: doc/guix.texi:13044 msgid "Defaults to @samp{\"/var/log/cups/error_log\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:13046 #, no-wrap msgid "{@code{files-configuration} parameter} string fatal-errors" msgstr "" #. type: deftypevr #: doc/guix.texi:13049 msgid "" "Specifies which errors are fatal, causing the scheduler to exit. The kind " "strings are:" msgstr "" #. type: table #: doc/guix.texi:13053 msgid "No errors are fatal." msgstr "" #. type: table #: doc/guix.texi:13056 msgid "All of the errors below are fatal." msgstr "" #. type: item #: doc/guix.texi:13057 #, no-wrap msgid "browse" msgstr "" #. type: table #: doc/guix.texi:13060 msgid "" "Browsing initialization errors are fatal, for example failed connections to " "the DNS-SD daemon." msgstr "" #. type: item #: doc/guix.texi:13061 #, no-wrap msgid "config" msgstr "" #. type: table #: doc/guix.texi:13063 msgid "Configuration file syntax errors are fatal." msgstr "" #. type: item #: doc/guix.texi:13064 #, no-wrap msgid "listen" msgstr "" #. type: table #: doc/guix.texi:13067 msgid "" "Listen or Port errors are fatal, except for IPv6 failures on the loopback or " "@code{any} addresses." msgstr "" #. type: item #: doc/guix.texi:13068 #, no-wrap msgid "log" msgstr "" #. type: table #: doc/guix.texi:13070 msgid "Log file creation or write errors are fatal." msgstr "" #. type: item #: doc/guix.texi:13071 #, no-wrap msgid "permissions" msgstr "" #. type: table #: doc/guix.texi:13074 msgid "" "Bad startup file permissions are fatal, for example shared TLS certificate " "and key files with world-read permissions." msgstr "" #. type: deftypevr #: doc/guix.texi:13077 msgid "Defaults to @samp{\"all -browse\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:13079 #, no-wrap msgid "{@code{files-configuration} parameter} boolean file-device?" msgstr "" #. type: deftypevr #: doc/guix.texi:13082 msgid "" "Specifies whether the file pseudo-device can be used for new printer " "queues. The URI @uref{file:///dev/null} is always allowed." msgstr "" #. type: deftypevr #: doc/guix.texi:13084 doc/guix.texi:13154 doc/guix.texi:13190 #: doc/guix.texi:13202 doc/guix.texi:13208 doc/guix.texi:13224 #: doc/guix.texi:13312 doc/guix.texi:13406 doc/guix.texi:13722 #: doc/guix.texi:13735 doc/guix.texi:18368 doc/guix.texi:18382 #: doc/guix.texi:18504 doc/guix.texi:18525 doc/guix.texi:18546 #: doc/guix.texi:18553 doc/guix.texi:18598 doc/guix.texi:18605 #: doc/guix.texi:19032 doc/guix.texi:19046 doc/guix.texi:19218 #: doc/guix.texi:19263 doc/guix.texi:19350 doc/guix.texi:19482 #: doc/guix.texi:19515 doc/guix.texi:19655 doc/guix.texi:19666 #: doc/guix.texi:19916 doc/guix.texi:20558 doc/guix.texi:20567 #: doc/guix.texi:20575 doc/guix.texi:20583 doc/guix.texi:20599 #: doc/guix.texi:20615 doc/guix.texi:20623 doc/guix.texi:20631 #: doc/guix.texi:20640 doc/guix.texi:20649 doc/guix.texi:20665 #: doc/guix.texi:20729 doc/guix.texi:20835 doc/guix.texi:20843 #: doc/guix.texi:20851 doc/guix.texi:20876 doc/guix.texi:20930 #: doc/guix.texi:20978 doc/guix.texi:21179 doc/guix.texi:21186 msgid "Defaults to @samp{#f}." msgstr "" #. type: deftypevr #: doc/guix.texi:13086 #, no-wrap msgid "{@code{files-configuration} parameter} string group" msgstr "" #. type: deftypevr #: doc/guix.texi:13089 msgid "" "Specifies the group name or ID that will be used when executing external " "programs." msgstr "" #. type: deftypevr #: doc/guix.texi:13091 doc/guix.texi:13171 msgid "Defaults to @samp{\"lp\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:13093 #, no-wrap msgid "{@code{files-configuration} parameter} string log-file-perm" msgstr "" #. type: deftypevr #: doc/guix.texi:13095 msgid "Specifies the permissions for all log files that the scheduler writes." msgstr "" #. type: deftypevr #: doc/guix.texi:13097 msgid "Defaults to @samp{\"0644\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:13099 #, no-wrap msgid "{@code{files-configuration} parameter} log-location page-log" msgstr "" #. type: deftypevr #: doc/guix.texi:13107 msgid "" "Defines the page log filename. Specifying a blank filename disables access " "log generation. The value @code{stderr} causes log entries to be sent to " "the standard error file when the scheduler is running in the foreground, or " "to the system log daemon when run in the background. The value " "@code{syslog} causes log entries to be sent to the system log daemon. The " "server name may be included in filenames using the string @code{%s}, as in " "@code{/var/log/cups/%s-page_log}." msgstr "" #. type: deftypevr #: doc/guix.texi:13109 msgid "Defaults to @samp{\"/var/log/cups/page_log\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:13111 #, no-wrap msgid "{@code{files-configuration} parameter} string remote-root" msgstr "" #. type: deftypevr #: doc/guix.texi:13114 msgid "" "Specifies the username that is associated with unauthenticated accesses by " "clients claiming to be the root user. The default is @code{remroot}." msgstr "" #. type: deftypevr #: doc/guix.texi:13116 msgid "Defaults to @samp{\"remroot\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:13118 #, no-wrap msgid "{@code{files-configuration} parameter} file-name request-root" msgstr "" #. type: deftypevr #: doc/guix.texi:13121 msgid "" "Specifies the directory that contains print jobs and other HTTP request data." msgstr "" #. type: deftypevr #: doc/guix.texi:13123 msgid "Defaults to @samp{\"/var/spool/cups\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:13125 #, no-wrap msgid "{@code{files-configuration} parameter} sandboxing sandboxing" msgstr "" #. type: deftypevr #: doc/guix.texi:13130 msgid "" "Specifies the level of security sandboxing that is applied to print filters, " "backends, and other child processes of the scheduler; either @code{relaxed} " "or @code{strict}. This directive is currently only used/supported on macOS." msgstr "" #. type: deftypevr #: doc/guix.texi:13132 msgid "Defaults to @samp{strict}." msgstr "" #. type: deftypevr #: doc/guix.texi:13134 #, no-wrap msgid "{@code{files-configuration} parameter} file-name server-keychain" msgstr "" #. type: deftypevr #: doc/guix.texi:13139 msgid "" "Specifies the location of TLS certificates and private keys. CUPS will look " "for public and private keys in this directory: a @code{.crt} files for PEM-" "encoded certificates and corresponding @code{.key} files for PEM-encoded " "private keys." msgstr "" #. type: deftypevr #: doc/guix.texi:13141 msgid "Defaults to @samp{\"/etc/cups/ssl\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:13143 #, no-wrap msgid "{@code{files-configuration} parameter} file-name server-root" msgstr "" #. type: deftypevr #: doc/guix.texi:13145 msgid "Specifies the directory containing the server configuration files." msgstr "" #. type: deftypevr #: doc/guix.texi:13147 msgid "Defaults to @samp{\"/etc/cups\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:13149 #, no-wrap msgid "{@code{files-configuration} parameter} boolean sync-on-close?" msgstr "" #. type: deftypevr #: doc/guix.texi:13152 msgid "" "Specifies whether the scheduler calls fsync(2) after writing configuration " "or state files." msgstr "" #. type: deftypevr #: doc/guix.texi:13156 #, no-wrap msgid "{@code{files-configuration} parameter} space-separated-string-list system-group" msgstr "" #. type: deftypevr #: doc/guix.texi:13158 msgid "Specifies the group(s) to use for @code{@@SYSTEM} group authentication." msgstr "" #. type: deftypevr #: doc/guix.texi:13160 #, no-wrap msgid "{@code{files-configuration} parameter} file-name temp-dir" msgstr "" #. type: deftypevr #: doc/guix.texi:13162 msgid "Specifies the directory where temporary files are stored." msgstr "" #. type: deftypevr #: doc/guix.texi:13164 msgid "Defaults to @samp{\"/var/spool/cups/tmp\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:13166 #, no-wrap msgid "{@code{files-configuration} parameter} string user" msgstr "" #. type: deftypevr #: doc/guix.texi:13169 msgid "" "Specifies the user name or ID that is used when running external programs." msgstr "" #. type: deftypevr #: doc/guix.texi:13174 #, no-wrap msgid "{@code{cups-configuration} parameter} access-log-level access-log-level" msgstr "" #. type: deftypevr #: doc/guix.texi:13181 msgid "" "Specifies the logging level for the AccessLog file. The @code{config} level " "logs when printers and classes are added, deleted, or modified and when " "configuration files are accessed or updated. The @code{actions} level logs " "when print jobs are submitted, held, released, modified, or canceled, and " "any of the conditions for @code{config}. The @code{all} level logs all " "requests." msgstr "" #. type: deftypevr #: doc/guix.texi:13183 msgid "Defaults to @samp{actions}." msgstr "" #. type: deftypevr #: doc/guix.texi:13185 #, no-wrap msgid "{@code{cups-configuration} parameter} boolean auto-purge-jobs?" msgstr "" #. type: deftypevr #: doc/guix.texi:13188 msgid "" "Specifies whether to purge job history data automatically when it is no " "longer required for quotas." msgstr "" #. type: deftypevr #: doc/guix.texi:13192 #, no-wrap msgid "{@code{cups-configuration} parameter} browse-local-protocols browse-local-protocols" msgstr "" #. type: deftypevr #: doc/guix.texi:13194 msgid "Specifies which protocols to use for local printer sharing." msgstr "" #. type: deftypevr #: doc/guix.texi:13196 msgid "Defaults to @samp{dnssd}." msgstr "" #. type: deftypevr #: doc/guix.texi:13198 #, no-wrap msgid "{@code{cups-configuration} parameter} boolean browse-web-if?" msgstr "" #. type: deftypevr #: doc/guix.texi:13200 msgid "Specifies whether the CUPS web interface is advertised." msgstr "" #. type: deftypevr #: doc/guix.texi:13204 #, no-wrap msgid "{@code{cups-configuration} parameter} boolean browsing?" msgstr "" #. type: deftypevr #: doc/guix.texi:13206 msgid "Specifies whether shared printers are advertised." msgstr "" #. type: deftypevr #: doc/guix.texi:13210 #, no-wrap msgid "{@code{cups-configuration} parameter} string classification" msgstr "" #. type: deftypevr #: doc/guix.texi:13215 msgid "" "Specifies the security classification of the server. Any valid banner name " "can be used, including \"classified\", \"confidential\", \"secret\", " "\"topsecret\", and \"unclassified\", or the banner can be omitted to disable " "secure printing functions." msgstr "" #. type: deftypevr #: doc/guix.texi:13217 doc/guix.texi:13554 doc/guix.texi:15028 #: doc/guix.texi:15040 doc/guix.texi:19621 doc/guix.texi:19629 #: doc/guix.texi:19637 doc/guix.texi:19645 doc/guix.texi:19923 #: doc/guix.texi:20401 doc/guix.texi:20409 doc/guix.texi:20417 #: doc/guix.texi:20525 doc/guix.texi:20550 doc/guix.texi:20681 #: doc/guix.texi:20689 doc/guix.texi:20697 doc/guix.texi:20705 #: doc/guix.texi:20713 doc/guix.texi:20721 doc/guix.texi:20744 #: doc/guix.texi:20752 doc/guix.texi:20804 doc/guix.texi:20820 #: doc/guix.texi:20828 doc/guix.texi:20867 doc/guix.texi:20890 #: doc/guix.texi:20912 doc/guix.texi:20919 doc/guix.texi:20954 #: doc/guix.texi:20962 doc/guix.texi:20986 doc/guix.texi:21018 #: doc/guix.texi:21047 doc/guix.texi:21054 doc/guix.texi:21061 #: doc/guix.texi:21069 doc/guix.texi:21083 doc/guix.texi:21092 #: doc/guix.texi:21102 doc/guix.texi:21109 doc/guix.texi:21116 #: doc/guix.texi:21123 doc/guix.texi:21194 doc/guix.texi:21201 #: doc/guix.texi:21208 doc/guix.texi:21217 doc/guix.texi:21233 #: doc/guix.texi:21240 doc/guix.texi:21247 doc/guix.texi:21254 #: doc/guix.texi:21262 doc/guix.texi:21270 msgid "Defaults to @samp{\"\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:13219 #, no-wrap msgid "{@code{cups-configuration} parameter} boolean classify-override?" msgstr "" #. type: deftypevr #: doc/guix.texi:13222 msgid "" "Specifies whether users may override the classification (cover page) of " "individual print jobs using the @code{job-sheets} option." msgstr "" #. type: deftypevr #: doc/guix.texi:13226 #, no-wrap msgid "{@code{cups-configuration} parameter} default-auth-type default-auth-type" msgstr "" #. type: deftypevr #: doc/guix.texi:13228 msgid "Specifies the default type of authentication to use." msgstr "" #. type: deftypevr #: doc/guix.texi:13230 msgid "Defaults to @samp{Basic}." msgstr "" #. type: deftypevr #: doc/guix.texi:13232 #, no-wrap msgid "{@code{cups-configuration} parameter} default-encryption default-encryption" msgstr "" #. type: deftypevr #: doc/guix.texi:13234 msgid "Specifies whether encryption will be used for authenticated requests." msgstr "" #. type: deftypevr #: doc/guix.texi:13236 msgid "Defaults to @samp{Required}." msgstr "" #. type: deftypevr #: doc/guix.texi:13238 #, no-wrap msgid "{@code{cups-configuration} parameter} string default-language" msgstr "" #. type: deftypevr #: doc/guix.texi:13240 msgid "Specifies the default language to use for text and web content." msgstr "" #. type: deftypevr #: doc/guix.texi:13242 msgid "Defaults to @samp{\"en\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:13244 #, no-wrap msgid "{@code{cups-configuration} parameter} string default-paper-size" msgstr "" #. type: deftypevr #: doc/guix.texi:13249 msgid "" "Specifies the default paper size for new print queues. @samp{\"Auto\"} uses " "a locale-specific default, while @samp{\"None\"} specifies there is no " "default paper size. Specific size names are typically @samp{\"Letter\"} or " "@samp{\"A4\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:13251 msgid "Defaults to @samp{\"Auto\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:13253 #, no-wrap msgid "{@code{cups-configuration} parameter} string default-policy" msgstr "" #. type: deftypevr #: doc/guix.texi:13255 msgid "Specifies the default access policy to use." msgstr "" #. type: deftypevr #: doc/guix.texi:13257 msgid "Defaults to @samp{\"default\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:13259 #, no-wrap msgid "{@code{cups-configuration} parameter} boolean default-shared?" msgstr "" #. type: deftypevr #: doc/guix.texi:13261 msgid "Specifies whether local printers are shared by default." msgstr "" #. type: deftypevr #: doc/guix.texi:13263 doc/guix.texi:13343 doc/guix.texi:13639 #: doc/guix.texi:18190 doc/guix.texi:18218 doc/guix.texi:18338 #: doc/guix.texi:18345 doc/guix.texi:18353 doc/guix.texi:18375 #: doc/guix.texi:18389 doc/guix.texi:18474 doc/guix.texi:18481 #: doc/guix.texi:18489 doc/guix.texi:18899 doc/guix.texi:19039 #: doc/guix.texi:19225 doc/guix.texi:19232 doc/guix.texi:19254 #: doc/guix.texi:19293 doc/guix.texi:19313 doc/guix.texi:19327 #: doc/guix.texi:19470 doc/guix.texi:20503 doc/guix.texi:20591 #: doc/guix.texi:20607 doc/guix.texi:20657 msgid "Defaults to @samp{#t}." msgstr "" #. type: deftypevr #: doc/guix.texi:13265 #, no-wrap msgid "{@code{cups-configuration} parameter} non-negative-integer dirty-clean-interval" msgstr "" #. type: deftypevr #: doc/guix.texi:13269 msgid "" "Specifies the delay for updating of configuration and state files, in " "seconds. A value of 0 causes the update to happen as soon as possible, " "typically within a few milliseconds." msgstr "" #. type: deftypevr #: doc/guix.texi:13271 doc/guix.texi:13319 doc/guix.texi:13328 #: doc/guix.texi:13349 doc/guix.texi:13646 msgid "Defaults to @samp{30}." msgstr "" #. type: deftypevr #: doc/guix.texi:13273 #, no-wrap msgid "{@code{cups-configuration} parameter} error-policy error-policy" msgstr "" #. type: deftypevr #: doc/guix.texi:13279 msgid "" "Specifies what to do when an error occurs. Possible values are @code{abort-" "job}, which will discard the failed print job; @code{retry-job}, which will " "retry the job at a later time; @code{retry-this-job}, which retries the " "failed job immediately; and @code{stop-printer}, which stops the printer." msgstr "" #. type: deftypevr #: doc/guix.texi:13281 msgid "Defaults to @samp{stop-printer}." msgstr "" #. type: deftypevr #: doc/guix.texi:13283 #, no-wrap msgid "{@code{cups-configuration} parameter} non-negative-integer filter-limit" msgstr "" #. type: deftypevr #: doc/guix.texi:13291 msgid "" "Specifies the maximum cost of filters that are run concurrently, which can " "be used to minimize disk, memory, and CPU resource problems. A limit of 0 " "disables filter limiting. An average print to a non-PostScript printer " "needs a filter limit of about 200. A PostScript printer needs about half " "that (100). Setting the limit below these thresholds will effectively limit " "the scheduler to printing a single job at any time." msgstr "" #. type: deftypevr #: doc/guix.texi:13293 doc/guix.texi:13301 doc/guix.texi:13356 #: doc/guix.texi:13472 doc/guix.texi:13486 doc/guix.texi:13493 #: doc/guix.texi:14470 doc/guix.texi:14486 doc/guix.texi:15132 #: doc/guix.texi:15144 doc/guix.texi:18915 doc/guix.texi:19240 #: doc/guix.texi:20496 doc/guix.texi:20796 doc/guix.texi:20970 msgid "Defaults to @samp{0}." msgstr "" #. type: deftypevr #: doc/guix.texi:13295 #, no-wrap msgid "{@code{cups-configuration} parameter} non-negative-integer filter-nice" msgstr "" #. type: deftypevr #: doc/guix.texi:13299 msgid "" "Specifies the scheduling priority of filters that are run to print a job. " "The nice value ranges from 0, the highest priority, to 19, the lowest " "priority." msgstr "" #. type: deftypevr #: doc/guix.texi:13303 #, no-wrap msgid "{@code{cups-configuration} parameter} host-name-lookups host-name-lookups" msgstr "" #. type: deftypevr #: doc/guix.texi:13310 msgid "" "Specifies whether to do reverse lookups on connecting clients. The " "@code{double} setting causes @code{cupsd} to verify that the hostname " "resolved from the address matches one of the addresses returned for that " "hostname. Double lookups also prevent clients with unregistered addresses " "from connecting to your server. Only set this option to @code{#t} or " "@code{double} if absolutely required." msgstr "" #. type: deftypevr #: doc/guix.texi:13314 #, no-wrap msgid "{@code{cups-configuration} parameter} non-negative-integer job-kill-delay" msgstr "" #. type: deftypevr #: doc/guix.texi:13317 msgid "" "Specifies the number of seconds to wait before killing the filters and " "backend associated with a canceled or held job." msgstr "" #. type: deftypevr #: doc/guix.texi:13321 #, no-wrap msgid "{@code{cups-configuration} parameter} non-negative-integer job-retry-interval" msgstr "" #. type: deftypevr #: doc/guix.texi:13326 msgid "" "Specifies the interval between retries of jobs in seconds. This is " "typically used for fax queues but can also be used with normal print queues " "whose error policy is @code{retry-job} or @code{retry-current-job}." msgstr "" #. type: deftypevr #: doc/guix.texi:13330 #, no-wrap msgid "{@code{cups-configuration} parameter} non-negative-integer job-retry-limit" msgstr "" #. type: deftypevr #: doc/guix.texi:13335 msgid "" "Specifies the number of retries that are done for jobs. This is typically " "used for fax queues but can also be used with normal print queues whose " "error policy is @code{retry-job} or @code{retry-current-job}." msgstr "" #. type: deftypevr #: doc/guix.texi:13337 doc/guix.texi:19722 doc/guix.texi:19742 #: doc/guix.texi:19758 doc/guix.texi:19772 doc/guix.texi:19779 #: doc/guix.texi:19786 doc/guix.texi:19793 doc/guix.texi:19952 #: doc/guix.texi:19968 doc/guix.texi:19975 doc/guix.texi:19982 #: doc/guix.texi:19993 doc/guix.texi:20448 doc/guix.texi:20456 #: doc/guix.texi:20464 doc/guix.texi:20488 msgid "Defaults to @samp{5}." msgstr "" #. type: deftypevr #: doc/guix.texi:13339 #, no-wrap msgid "{@code{cups-configuration} parameter} boolean keep-alive?" msgstr "" #. type: deftypevr #: doc/guix.texi:13341 msgid "Specifies whether to support HTTP keep-alive connections." msgstr "" #. type: deftypevr #: doc/guix.texi:13345 #, no-wrap msgid "{@code{cups-configuration} parameter} non-negative-integer keep-alive-timeout" msgstr "" #. type: deftypevr #: doc/guix.texi:13347 msgid "Specifies how long an idle client connection remains open, in seconds." msgstr "" #. type: deftypevr #: doc/guix.texi:13351 #, no-wrap msgid "{@code{cups-configuration} parameter} non-negative-integer limit-request-body" msgstr "" #. type: deftypevr #: doc/guix.texi:13354 msgid "" "Specifies the maximum size of print files, IPP requests, and HTML form " "data. A limit of 0 disables the limit check." msgstr "" #. type: deftypevr #: doc/guix.texi:13358 #, no-wrap msgid "{@code{cups-configuration} parameter} multiline-string-list listen" msgstr "" #. type: deftypevr #: doc/guix.texi:13365 msgid "" "Listens on the specified interfaces for connections. Valid values are of " "the form @var{address}:@var{port}, where @var{address} is either an IPv6 " "address enclosed in brackets, an IPv4 address, or @code{*} to indicate all " "addresses. Values can also be file names of local UNIX domain sockets. The " "Listen directive is similar to the Port directive but allows you to restrict " "access to specific interfaces or networks." msgstr "" #. type: deftypevr #: doc/guix.texi:13367 #, no-wrap msgid "{@code{cups-configuration} parameter} non-negative-integer listen-back-log" msgstr "" #. type: deftypevr #: doc/guix.texi:13374 msgid "" "Specifies the number of pending connections that will be allowed. This " "normally only affects very busy servers that have reached the MaxClients " "limit, but can also be triggered by large numbers of simultaneous " "connections. When the limit is reached, the operating system will refuse " "additional connections until the scheduler can accept the pending ones." msgstr "" #. type: deftypevr #: doc/guix.texi:13376 msgid "Defaults to @samp{128}." msgstr "" #. type: deftypevr #: doc/guix.texi:13378 #, no-wrap msgid "{@code{cups-configuration} parameter} location-access-control-list location-access-controls" msgstr "" #. type: deftypevr #: doc/guix.texi:13380 msgid "Specifies a set of additional access controls." msgstr "" #. type: deftypevr #: doc/guix.texi:13382 msgid "Available @code{location-access-controls} fields are:" msgstr "" #. type: deftypevr #: doc/guix.texi:13383 #, no-wrap msgid "{@code{location-access-controls} parameter} file-name path" msgstr "" #. type: deftypevr #: doc/guix.texi:13385 msgid "Specifies the URI path to which the access control applies." msgstr "" #. type: deftypevr #: doc/guix.texi:13387 #, no-wrap msgid "{@code{location-access-controls} parameter} access-control-list access-controls" msgstr "" #. type: deftypevr #: doc/guix.texi:13390 msgid "" "Access controls for all access to this path, in the same format as the " "@code{access-controls} of @code{operation-access-control}." msgstr "" #. type: deftypevr #: doc/guix.texi:13392 doc/guix.texi:13398 doc/guix.texi:13412 #: doc/guix.texi:13419 doc/guix.texi:13561 doc/guix.texi:13620 #: doc/guix.texi:13704 doc/guix.texi:13715 doc/guix.texi:15618 #: doc/guix.texi:18249 doc/guix.texi:18396 doc/guix.texi:18584 #: doc/guix.texi:19613 doc/guix.texi:19673 doc/guix.texi:19681 #: doc/guix.texi:20511 doc/guix.texi:20518 doc/guix.texi:20860 #: doc/guix.texi:20938 doc/guix.texi:21032 doc/guix.texi:21040 #: doc/guix.texi:21076 doc/guix.texi:21226 doc/guix.texi:21277 #: doc/guix.texi:21286 msgid "Defaults to @samp{()}." msgstr "" #. type: deftypevr #: doc/guix.texi:13394 #, no-wrap msgid "{@code{location-access-controls} parameter} method-access-control-list method-access-controls" msgstr "" #. type: deftypevr #: doc/guix.texi:13396 msgid "Access controls for method-specific access to this path." msgstr "" #. type: deftypevr #: doc/guix.texi:13400 msgid "Available @code{method-access-controls} fields are:" msgstr "" #. type: deftypevr #: doc/guix.texi:13401 #, no-wrap msgid "{@code{method-access-controls} parameter} boolean reverse?" msgstr "" #. type: deftypevr #: doc/guix.texi:13404 msgid "" "If @code{#t}, apply access controls to all methods except the listed " "methods. Otherwise apply to only the listed methods." msgstr "" #. type: deftypevr #: doc/guix.texi:13408 #, no-wrap msgid "{@code{method-access-controls} parameter} method-list methods" msgstr "" #. type: deftypevr #: doc/guix.texi:13410 msgid "Methods to which this access control applies." msgstr "" #. type: deftypevr #: doc/guix.texi:13414 #, no-wrap msgid "{@code{method-access-controls} parameter} access-control-list access-controls" msgstr "" #. type: deftypevr #: doc/guix.texi:13417 msgid "" "Access control directives, as a list of strings. Each string should be one " "directive, such as \"Order allow,deny\"." msgstr "" #. type: deftypevr #: doc/guix.texi:13423 #, no-wrap msgid "{@code{cups-configuration} parameter} non-negative-integer log-debug-history" msgstr "" #. type: deftypevr #: doc/guix.texi:13427 msgid "" "Specifies the number of debugging messages that are retained for logging if " "an error occurs in a print job. Debug messages are logged regardless of the " "LogLevel setting." msgstr "" #. type: deftypevr #: doc/guix.texi:13429 doc/guix.texi:13450 doc/guix.texi:13457 #: doc/guix.texi:15378 doc/guix.texi:18569 msgid "Defaults to @samp{100}." msgstr "" #. type: deftypevr #: doc/guix.texi:13431 #, no-wrap msgid "{@code{cups-configuration} parameter} log-level log-level" msgstr "" #. type: deftypevr #: doc/guix.texi:13434 msgid "" "Specifies the level of logging for the ErrorLog file. The value @code{none} " "stops all logging while @code{debug2} logs everything." msgstr "" #. type: deftypevr #: doc/guix.texi:13436 msgid "Defaults to @samp{info}." msgstr "" #. type: deftypevr #: doc/guix.texi:13438 #, no-wrap msgid "{@code{cups-configuration} parameter} log-time-format log-time-format" msgstr "" #. type: deftypevr #: doc/guix.texi:13441 msgid "" "Specifies the format of the date and time in the log files. The value " "@code{standard} logs whole seconds while @code{usecs} logs microseconds." msgstr "" #. type: deftypevr #: doc/guix.texi:13443 msgid "Defaults to @samp{standard}." msgstr "" #. type: deftypevr #: doc/guix.texi:13445 #, no-wrap msgid "{@code{cups-configuration} parameter} non-negative-integer max-clients" msgstr "" #. type: deftypevr #: doc/guix.texi:13448 msgid "" "Specifies the maximum number of simultaneous clients that are allowed by the " "scheduler." msgstr "" #. type: deftypevr #: doc/guix.texi:13452 #, no-wrap msgid "{@code{cups-configuration} parameter} non-negative-integer max-clients-per-host" msgstr "" #. type: deftypevr #: doc/guix.texi:13455 msgid "" "Specifies the maximum number of simultaneous clients that are allowed from a " "single address." msgstr "" #. type: deftypevr #: doc/guix.texi:13459 #, no-wrap msgid "{@code{cups-configuration} parameter} non-negative-integer max-copies" msgstr "" #. type: deftypevr #: doc/guix.texi:13462 msgid "" "Specifies the maximum number of copies that a user can print of each job." msgstr "" #. type: deftypevr #: doc/guix.texi:13464 msgid "Defaults to @samp{9999}." msgstr "" #. type: deftypevr #: doc/guix.texi:13466 #, no-wrap msgid "{@code{cups-configuration} parameter} non-negative-integer max-hold-time" msgstr "" #. type: deftypevr #: doc/guix.texi:13470 msgid "" "Specifies the maximum time a job may remain in the @code{indefinite} hold " "state before it is canceled. A value of 0 disables cancellation of held " "jobs." msgstr "" #. type: deftypevr #: doc/guix.texi:13474 #, no-wrap msgid "{@code{cups-configuration} parameter} non-negative-integer max-jobs" msgstr "" #. type: deftypevr #: doc/guix.texi:13477 msgid "" "Specifies the maximum number of simultaneous jobs that are allowed. Set to " "0 to allow an unlimited number of jobs." msgstr "" #. type: deftypevr #: doc/guix.texi:13479 msgid "Defaults to @samp{500}." msgstr "" #. type: deftypevr #: doc/guix.texi:13481 #, no-wrap msgid "{@code{cups-configuration} parameter} non-negative-integer max-jobs-per-printer" msgstr "" #. type: deftypevr #: doc/guix.texi:13484 msgid "" "Specifies the maximum number of simultaneous jobs that are allowed per " "printer. A value of 0 allows up to MaxJobs jobs per printer." msgstr "" #. type: deftypevr #: doc/guix.texi:13488 #, no-wrap msgid "{@code{cups-configuration} parameter} non-negative-integer max-jobs-per-user" msgstr "" #. type: deftypevr #: doc/guix.texi:13491 msgid "" "Specifies the maximum number of simultaneous jobs that are allowed per " "user. A value of 0 allows up to MaxJobs jobs per user." msgstr "" #. type: deftypevr #: doc/guix.texi:13495 #, no-wrap msgid "{@code{cups-configuration} parameter} non-negative-integer max-job-time" msgstr "" #. type: deftypevr #: doc/guix.texi:13498 msgid "" "Specifies the maximum time a job may take to print before it is canceled, in " "seconds. Set to 0 to disable cancellation of \"stuck\" jobs." msgstr "" #. type: deftypevr #: doc/guix.texi:13500 msgid "Defaults to @samp{10800}." msgstr "" #. type: deftypevr #: doc/guix.texi:13502 #, no-wrap msgid "{@code{cups-configuration} parameter} non-negative-integer max-log-size" msgstr "" #. type: deftypevr #: doc/guix.texi:13505 msgid "" "Specifies the maximum size of the log files before they are rotated, in " "bytes. The value 0 disables log rotation." msgstr "" #. type: deftypevr #: doc/guix.texi:13507 msgid "Defaults to @samp{1048576}." msgstr "" #. type: deftypevr #: doc/guix.texi:13509 #, no-wrap msgid "{@code{cups-configuration} parameter} non-negative-integer multiple-operation-timeout" msgstr "" #. type: deftypevr #: doc/guix.texi:13512 msgid "" "Specifies the maximum amount of time to allow between files in a multiple " "file print job, in seconds." msgstr "" #. type: deftypevr #: doc/guix.texi:13514 doc/guix.texi:13728 doc/guix.texi:18183 msgid "Defaults to @samp{300}." msgstr "" #. type: deftypevr #: doc/guix.texi:13516 #, no-wrap msgid "{@code{cups-configuration} parameter} string page-log-format" msgstr "" #. type: deftypevr #: doc/guix.texi:13521 msgid "" "Specifies the format of PageLog lines. Sequences beginning with percent " "(@samp{%}) characters are replaced with the corresponding information, while " "all other characters are copied literally. The following percent sequences " "are recognized:" msgstr "" #. type: item #: doc/guix.texi:13523 #, no-wrap msgid "%%" msgstr "" #. type: table #: doc/guix.texi:13525 msgid "insert a single percent character" msgstr "" #. type: item #: doc/guix.texi:13526 #, no-wrap msgid "%@{name@}" msgstr "" #. type: table #: doc/guix.texi:13528 msgid "insert the value of the specified IPP attribute" msgstr "" #. type: item #: doc/guix.texi:13529 #, no-wrap msgid "%C" msgstr "" #. type: table #: doc/guix.texi:13531 msgid "insert the number of copies for the current page" msgstr "" #. type: item #: doc/guix.texi:13532 #, no-wrap msgid "%P" msgstr "" #. type: table #: doc/guix.texi:13534 msgid "insert the current page number" msgstr "" #. type: item #: doc/guix.texi:13535 #, no-wrap msgid "%T" msgstr "" #. type: table #: doc/guix.texi:13537 msgid "insert the current date and time in common log format" msgstr "" #. type: item #: doc/guix.texi:13538 #, no-wrap msgid "%j" msgstr "" #. type: table #: doc/guix.texi:13540 msgid "insert the job ID" msgstr "" #. type: item #: doc/guix.texi:13541 doc/guix.texi:14988 #, no-wrap msgid "%p" msgstr "" #. type: table #: doc/guix.texi:13543 msgid "insert the printer name" msgstr "" #. type: item #: doc/guix.texi:13544 doc/guix.texi:15011 #, no-wrap msgid "%u" msgstr "" #. type: table #: doc/guix.texi:13546 msgid "insert the username" msgstr "" #. type: deftypevr #: doc/guix.texi:13552 msgid "" "A value of the empty string disables page logging. The string @code{%p %u " "%j %T %P %C %@{job-billing@} %@{job-originating-host-name@} %@{job-name@} " "%@{media@} %@{sides@}} creates a page log with the standard items." msgstr "" #. type: deftypevr #: doc/guix.texi:13556 #, no-wrap msgid "{@code{cups-configuration} parameter} environment-variables environment-variables" msgstr "" #. type: deftypevr #: doc/guix.texi:13559 msgid "" "Passes the specified environment variable(s) to child processes; a list of " "strings." msgstr "" #. type: deftypevr #: doc/guix.texi:13563 #, no-wrap msgid "{@code{cups-configuration} parameter} policy-configuration-list policies" msgstr "" #. type: deftypevr #: doc/guix.texi:13565 msgid "Specifies named access control policies." msgstr "" #. type: deftypevr #: doc/guix.texi:13567 msgid "Available @code{policy-configuration} fields are:" msgstr "" #. type: deftypevr #: doc/guix.texi:13568 #, no-wrap msgid "{@code{policy-configuration} parameter} string name" msgstr "" #. type: deftypevr #: doc/guix.texi:13570 msgid "Name of the policy." msgstr "" #. type: deftypevr #: doc/guix.texi:13572 #, no-wrap msgid "{@code{policy-configuration} parameter} string job-private-access" msgstr "" #. type: deftypevr #: doc/guix.texi:13582 msgid "" "Specifies an access list for a job's private values. @code{@@ACL} maps to " "the printer's requesting-user-name-allowed or requesting-user-name-denied " "values. @code{@@OWNER} maps to the job's owner. @code{@@SYSTEM} maps to " "the groups listed for the @code{system-group} field of the @code{files-" "config} configuration, which is reified into the @code{cups-files.conf(5)} " "file. Other possible elements of the access list include specific user " "names, and @code{@@@var{group}} to indicate members of a specific group. " "The access list may also be simply @code{all} or @code{default}." msgstr "" #. type: deftypevr #: doc/guix.texi:13584 doc/guix.texi:13606 msgid "Defaults to @samp{\"@@OWNER @@SYSTEM\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:13586 #, no-wrap msgid "{@code{policy-configuration} parameter} string job-private-values" msgstr "" #. type: deftypevr #: doc/guix.texi:13589 doc/guix.texi:13611 msgid "" "Specifies the list of job values to make private, or @code{all}, " "@code{default}, or @code{none}." msgstr "" #. type: deftypevr #: doc/guix.texi:13592 msgid "" "Defaults to @samp{\"job-name job-originating-host-name job-originating-user-" "name phone\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:13594 #, no-wrap msgid "{@code{policy-configuration} parameter} string subscription-private-access" msgstr "" #. type: deftypevr #: doc/guix.texi:13604 msgid "" "Specifies an access list for a subscription's private values. @code{@@ACL} " "maps to the printer's requesting-user-name-allowed or requesting-user-name-" "denied values. @code{@@OWNER} maps to the job's owner. @code{@@SYSTEM} " "maps to the groups listed for the @code{system-group} field of the " "@code{files-config} configuration, which is reified into the @code{cups-" "files.conf(5)} file. Other possible elements of the access list include " "specific user names, and @code{@@@var{group}} to indicate members of a " "specific group. The access list may also be simply @code{all} or " "@code{default}." msgstr "" #. type: deftypevr #: doc/guix.texi:13608 #, no-wrap msgid "{@code{policy-configuration} parameter} string subscription-private-values" msgstr "" #. type: deftypevr #: doc/guix.texi:13614 msgid "" "Defaults to @samp{\"notify-events notify-pull-method notify-recipient-uri " "notify-subscriber-user-name notify-user-data\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:13616 #, no-wrap msgid "{@code{policy-configuration} parameter} operation-access-control-list access-controls" msgstr "" #. type: deftypevr #: doc/guix.texi:13618 msgid "Access control by IPP operation." msgstr "" #. type: deftypevr #: doc/guix.texi:13623 #, no-wrap msgid "{@code{cups-configuration} parameter} boolean-or-non-negative-integer preserve-job-files" msgstr "" #. type: deftypevr #: doc/guix.texi:13628 msgid "" "Specifies whether job files (documents) are preserved after a job is " "printed. If a numeric value is specified, job files are preserved for the " "indicated number of seconds after printing. Otherwise a boolean value " "applies indefinitely." msgstr "" #. type: deftypevr #: doc/guix.texi:13630 msgid "Defaults to @samp{86400}." msgstr "" #. type: deftypevr #: doc/guix.texi:13632 #, no-wrap msgid "{@code{cups-configuration} parameter} boolean-or-non-negative-integer preserve-job-history" msgstr "" #. type: deftypevr #: doc/guix.texi:13637 msgid "" "Specifies whether the job history is preserved after a job is printed. If a " "numeric value is specified, the job history is preserved for the indicated " "number of seconds after printing. If @code{#t}, the job history is " "preserved until the MaxJobs limit is reached." msgstr "" #. type: deftypevr #: doc/guix.texi:13641 #, no-wrap msgid "{@code{cups-configuration} parameter} non-negative-integer reload-timeout" msgstr "" #. type: deftypevr #: doc/guix.texi:13644 msgid "" "Specifies the amount of time to wait for job completion before restarting " "the scheduler." msgstr "" #. type: deftypevr #: doc/guix.texi:13648 #, no-wrap msgid "{@code{cups-configuration} parameter} string rip-cache" msgstr "" #. type: deftypevr #: doc/guix.texi:13651 msgid "" "Specifies the maximum amount of memory to use when converting documents into " "bitmaps for a printer." msgstr "" #. type: deftypevr #: doc/guix.texi:13653 msgid "Defaults to @samp{\"128m\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:13655 #, no-wrap msgid "{@code{cups-configuration} parameter} string server-admin" msgstr "" #. type: deftypevr #: doc/guix.texi:13657 msgid "Specifies the email address of the server administrator." msgstr "" #. type: deftypevr #: doc/guix.texi:13659 msgid "Defaults to @samp{\"root@@localhost.localdomain\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:13661 #, no-wrap msgid "{@code{cups-configuration} parameter} host-name-list-or-* server-alias" msgstr "" #. type: deftypevr #: doc/guix.texi:13669 msgid "" "The ServerAlias directive is used for HTTP Host header validation when " "clients connect to the scheduler from external interfaces. Using the " "special name @code{*} can expose your system to known browser-based DNS " "rebinding attacks, even when accessing sites through a firewall. If the " "auto-discovery of alternate names does not work, we recommend listing each " "alternate name with a ServerAlias directive instead of using @code{*}." msgstr "" #. type: deftypevr #: doc/guix.texi:13671 msgid "Defaults to @samp{*}." msgstr "" #. type: deftypevr #: doc/guix.texi:13673 #, no-wrap msgid "{@code{cups-configuration} parameter} string server-name" msgstr "" #. type: deftypevr #: doc/guix.texi:13675 msgid "Specifies the fully-qualified host name of the server." msgstr "" #. type: deftypevr #: doc/guix.texi:13677 msgid "Defaults to @samp{\"localhost\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:13679 #, no-wrap msgid "{@code{cups-configuration} parameter} server-tokens server-tokens" msgstr "" #. type: deftypevr #: doc/guix.texi:13687 msgid "" "Specifies what information is included in the Server header of HTTP " "responses. @code{None} disables the Server header. @code{ProductOnly} " "reports @code{CUPS}. @code{Major} reports @code{CUPS 2}. @code{Minor} " "reports @code{CUPS 2.0}. @code{Minimal} reports @code{CUPS 2.0.0}. " "@code{OS} reports @code{CUPS 2.0.0 (@var{uname})} where @var{uname} is the " "output of the @code{uname} command. @code{Full} reports @code{CUPS 2.0.0 " "(@var{uname}) IPP/2.0}." msgstr "" #. type: deftypevr #: doc/guix.texi:13689 msgid "Defaults to @samp{Minimal}." msgstr "" #. type: deftypevr #: doc/guix.texi:13691 #, no-wrap msgid "{@code{cups-configuration} parameter} string set-env" msgstr "" #. type: deftypevr #: doc/guix.texi:13693 msgid "Set the specified environment variable to be passed to child processes." msgstr "" #. type: deftypevr #: doc/guix.texi:13695 msgid "Defaults to @samp{\"variable value\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:13697 #, no-wrap msgid "{@code{cups-configuration} parameter} multiline-string-list ssl-listen" msgstr "" #. type: deftypevr #: doc/guix.texi:13702 msgid "" "Listens on the specified interfaces for encrypted connections. Valid values " "are of the form @var{address}:@var{port}, where @var{address} is either an " "IPv6 address enclosed in brackets, an IPv4 address, or @code{*} to indicate " "all addresses." msgstr "" #. type: deftypevr #: doc/guix.texi:13706 #, no-wrap msgid "{@code{cups-configuration} parameter} ssl-options ssl-options" msgstr "" #. type: deftypevr #: doc/guix.texi:13713 msgid "" "Sets encryption options. By default, CUPS only supports encryption using " "TLS v1.0 or higher using known secure cipher suites. The @code{AllowRC4} " "option enables the 128-bit RC4 cipher suites, which are required for some " "older clients that do not implement newer ones. The @code{AllowSSL3} option " "enables SSL v3.0, which is required for some older clients that do not " "support TLS v1.0." msgstr "" #. type: deftypevr #: doc/guix.texi:13717 #, no-wrap msgid "{@code{cups-configuration} parameter} boolean strict-conformance?" msgstr "" #. type: deftypevr #: doc/guix.texi:13720 msgid "" "Specifies whether the scheduler requires clients to strictly adhere to the " "IPP specifications." msgstr "" #. type: deftypevr #: doc/guix.texi:13724 #, no-wrap msgid "{@code{cups-configuration} parameter} non-negative-integer timeout" msgstr "" #. type: deftypevr #: doc/guix.texi:13726 msgid "Specifies the HTTP request timeout, in seconds." msgstr "" #. type: deftypevr #: doc/guix.texi:13731 #, no-wrap msgid "{@code{cups-configuration} parameter} boolean web-interface?" msgstr "" #. type: deftypevr #: doc/guix.texi:13733 msgid "Specifies whether the web interface is enabled." msgstr "" #. type: Plain text #: doc/guix.texi:13743 msgid "" "At this point you're probably thinking ``oh dear, Guix manual, I like you " "but you can stop already with the configuration options''. Indeed. " "However, one more point: it could be that you have an existing @code{cupsd." "conf} that you want to use. In that case, you can pass an @code{opaque-cups-" "configuration} as the configuration of a @code{cups-service-type}." msgstr "" #. type: Plain text #: doc/guix.texi:13745 msgid "Available @code{opaque-cups-configuration} fields are:" msgstr "" #. type: deftypevr #: doc/guix.texi:13746 #, no-wrap msgid "{@code{opaque-cups-configuration} parameter} package cups" msgstr "" #. type: deftypevr #: doc/guix.texi:13750 #, no-wrap msgid "{@code{opaque-cups-configuration} parameter} string cupsd.conf" msgstr "" #. type: deftypevr #: doc/guix.texi:13752 msgid "The contents of the @code{cupsd.conf}, as a string." msgstr "" #. type: deftypevr #: doc/guix.texi:13754 #, no-wrap msgid "{@code{opaque-cups-configuration} parameter} string cups-files.conf" msgstr "" #. type: deftypevr #: doc/guix.texi:13756 msgid "The contents of the @code{cups-files.conf} file, as a string." msgstr "" #. type: Plain text #: doc/guix.texi:13761 msgid "" "For example, if your @code{cupsd.conf} and @code{cups-files.conf} are in " "strings of the same name, you could instantiate a CUPS service like this:" msgstr "" #. type: example #: doc/guix.texi:13767 #, no-wrap msgid "" "(service cups-service-type\n" " (opaque-cups-configuration\n" " (cupsd.conf cupsd.conf)\n" " (cups-files.conf cups-files.conf)))\n" msgstr "" #. type: Plain text #: doc/guix.texi:13778 msgid "" "The @code{(gnu services desktop)} module provides services that are usually " "useful in the context of a ``desktop'' setup---that is, on a machine running " "a graphical display server, possibly with graphical user interfaces, etc. " "It also defines services that provide specific desktop environments like " "GNOME, XFCE or MATE." msgstr "" #. type: Plain text #: doc/guix.texi:13782 msgid "" "To simplify things, the module defines a variable containing the set of " "services that users typically expect on a machine with a graphical " "environment and networking:" msgstr "" #. type: defvr #: doc/guix.texi:13783 #, no-wrap msgid "{Scheme Variable} %desktop-services" msgstr "" #. type: defvr #: doc/guix.texi:13786 msgid "" "This is a list of services that builds upon @var{%base-services} and adds or " "adjusts services for a typical ``desktop'' setup." msgstr "" #. type: defvr #: doc/guix.texi:13796 msgid "" "In particular, it adds a graphical login manager (@pxref{X Window, " "@code{slim-service}}), screen lockers, a network management tool " "(@pxref{Networking Services, @code{network-manager-service-type}}), energy " "and color management services, the @code{elogind} login and seat manager, " "the Polkit privilege service, the GeoClue location service, the " "AccountsService daemon that allows authorized users change system passwords, " "an NTP client (@pxref{Networking Services}), the Avahi daemon, and has the " "name service switch service configured to be able to use @code{nss-mdns} " "(@pxref{Name Service Switch, mDNS})." msgstr "" #. type: Plain text #: doc/guix.texi:13801 msgid "" "The @var{%desktop-services} variable can be used as the @code{services} " "field of an @code{operating-system} declaration (@pxref{operating-system " "Reference, @code{services}})." msgstr "" #. type: Plain text #: doc/guix.texi:13824 msgid "" "Additionally, the @code{gnome-desktop-service}, @code{xfce-desktop-service}, " "@code{mate-desktop-service} and @code{enlightenment-desktop-service-type} " "procedures can add GNOME, XFCE, MATE and/or Enlightenment to a system. To " "``add GNOME'' means that system-level services like the backlight adjustment " "helpers and the power management utilities are added to the system, " "extending @code{polkit} and @code{dbus} appropriately, allowing GNOME to " "operate with elevated privileges on a limited number of special-purpose " "system interfaces. Additionally, adding a service made by @code{gnome-" "desktop-service} adds the GNOME metapackage to the system profile. " "Likewise, adding the XFCE service not only adds the @code{xfce} metapackage " "to the system profile, but it also gives the Thunar file manager the ability " "to open a ``root-mode'' file management window, if the user authenticates " "using the administrator's password via the standard polkit graphical " "interface. To ``add MATE'' means that @code{polkit} and @code{dbus} are " "extended appropriately, allowing MATE to operate with elevated privileges on " "a limited number of special-purpose system interfaces. Additionally, adding " "a service made by @code{mate-desktop-service} adds the MATE metapackage to " "the system profile. ``Adding ENLIGHTENMENT'' means that @code{dbus} is " "extended appropriately, and several of Enlightenment's binaries are set as " "setuid, allowing Enlightenment's screen locker and other functionality to " "work as expetected." msgstr "" #. type: Plain text #: doc/guix.texi:13833 msgid "" "The desktop environments in Guix use the Xorg display server by default. If " "you'd like to use the newer display server protocol called Wayland, you need " "to use the @code{sddm-service} instead of the @code{slim-service} for the " "graphical login manager. You should then select the ``GNOME (Wayland)'' " "session in SDDM. Alternatively you can also try starting GNOME on Wayland " "manually from a TTY with the command ``XDG_SESSION_TYPE=wayland exec dbus-" "run-session gnome-session``. Currently only GNOME has support for Wayland." msgstr "" #. type: deffn #: doc/guix.texi:13834 #, no-wrap msgid "{Scheme Procedure} gnome-desktop-service" msgstr "" #. type: deffn #: doc/guix.texi:13838 msgid "" "Return a service that adds the @code{gnome} package to the system profile, " "and extends polkit with the actions from @code{gnome-settings-daemon}." msgstr "" #. type: deffn #: doc/guix.texi:13840 #, no-wrap msgid "{Scheme Procedure} xfce-desktop-service" msgstr "" #. type: deffn #: doc/guix.texi:13845 msgid "" "Return a service that adds the @code{xfce} package to the system profile, " "and extends polkit with the ability for @code{thunar} to manipulate the file " "system as root from within a user session, after the user has authenticated " "with the administrator's password." msgstr "" #. type: deffn #: doc/guix.texi:13847 #, no-wrap msgid "{Scheme Procedure} mate-desktop-service" msgstr "" #. type: deffn #: doc/guix.texi:13851 msgid "" "Return a service that adds the @code{mate} package to the system profile, " "and extends polkit with the actions from @code{mate-settings-daemon}." msgstr "" #. type: deffn #: doc/guix.texi:13853 #, no-wrap msgid "{Scheme Procedure} enlightenment-desktop-service-type" msgstr "" #. type: deffn #: doc/guix.texi:13856 msgid "" "Return a service that adds the @code{enlightenment} package to the system " "profile, and extends dbus with actions from @code{efl}." msgstr "" #. type: deftp #: doc/guix.texi:13858 #, no-wrap msgid "{Data Type} enlightenment-desktop-service-configuration" msgstr "" #. type: item #: doc/guix.texi:13860 #, no-wrap msgid "@code{enlightenment} (default @code{enlightenment})" msgstr "" #. type: table #: doc/guix.texi:13862 msgid "The enlightenment package to use." msgstr "" #. type: Plain text #: doc/guix.texi:13870 msgid "" "Because the GNOME, XFCE and MATE desktop services pull in so many packages, " "the default @code{%desktop-services} variable doesn't include any of them by " "default. To add GNOME, XFCE or MATE, just @code{cons} them onto " "@code{%desktop-services} in the @code{services} field of your " "@code{operating-system}:" msgstr "" #. type: example #: doc/guix.texi:13881 #, no-wrap msgid "" "(use-modules (gnu))\n" "(use-service-modules desktop)\n" "(operating-system\n" " ...\n" " ;; cons* adds items to the list given as its last argument.\n" " (services (cons* (gnome-desktop-service)\n" " (xfce-desktop-service)\n" " %desktop-services))\n" " ...)\n" msgstr "" #. type: Plain text #: doc/guix.texi:13885 msgid "" "These desktop environments will then be available as options in the " "graphical login window." msgstr "" #. type: Plain text #: doc/guix.texi:13889 msgid "" "The actual service definitions included in @code{%desktop-services} and " "provided by @code{(gnu services dbus)} and @code{(gnu services desktop)} are " "described below." msgstr "" #. type: deffn #: doc/guix.texi:13890 #, no-wrap msgid "{Scheme Procedure} dbus-service [#:dbus @var{dbus}] [#:services '()]" msgstr "" #. type: deffn #: doc/guix.texi:13893 msgid "" "Return a service that runs the ``system bus'', using @var{dbus}, with " "support for @var{services}." msgstr "" #. type: deffn #: doc/guix.texi:13897 msgid "" "@uref{http://dbus.freedesktop.org/, D-Bus} is an inter-process communication " "facility. Its system bus is used to allow system services to communicate " "and to be notified of system-wide events." msgstr "" #. type: deffn #: doc/guix.texi:13902 msgid "" "@var{services} must be a list of packages that provide an @file{etc/dbus-1/" "system.d} directory containing additional D-Bus configuration and policy " "files. For example, to allow avahi-daemon to use the system bus, " "@var{services} must be equal to @code{(list avahi)}." msgstr "" #. type: deffn #: doc/guix.texi:13904 #, no-wrap msgid "{Scheme Procedure} elogind-service [#:config @var{config}]" msgstr "" #. type: deffn #: doc/guix.texi:13910 msgid "" "Return a service that runs the @code{elogind} login and seat management " "daemon. @uref{https://github.com/elogind/elogind, Elogind} exposes a D-Bus " "interface that can be used to know which users are logged in, know what kind " "of sessions they have open, suspend the system, inhibit system suspend, " "reboot the system, and other tasks." msgstr "" #. type: deffn #: doc/guix.texi:13914 msgid "" "Elogind handles most system-level power events for a computer, for example " "suspending the system when a lid is closed, or shutting it down when the " "power button is pressed." msgstr "" #. type: deffn #: doc/guix.texi:13919 msgid "" "The @var{config} keyword argument specifies the configuration for elogind, " "and should be the result of an @code{(elogind-configuration (@var{parameter} " "@var{value})...)} invocation. Available parameters and their default values " "are:" msgstr "" #. type: item #: doc/guix.texi:13921 #, no-wrap msgid "kill-user-processes?" msgstr "" #. type: code{#1} #: doc/guix.texi:13923 doc/guix.texi:13941 doc/guix.texi:13943 #: doc/guix.texi:13945 doc/guix.texi:13957 msgid "#f" msgstr "" #. type: item #: doc/guix.texi:13923 #, no-wrap msgid "kill-only-users" msgstr "" #. type: code{#1} #: doc/guix.texi:13925 doc/guix.texi:13963 msgid "()" msgstr "" #. type: item #: doc/guix.texi:13925 #, no-wrap msgid "kill-exclude-users" msgstr "" #. type: code{#1} #: doc/guix.texi:13927 msgid "(\"root\")" msgstr "" #. type: item #: doc/guix.texi:13927 #, no-wrap msgid "inhibit-delay-max-seconds" msgstr "" #. type: code{#1} #: doc/guix.texi:13929 msgid "5" msgstr "" #. type: item #: doc/guix.texi:13929 #, no-wrap msgid "handle-power-key" msgstr "" #. type: code{#1} #: doc/guix.texi:13931 msgid "poweroff" msgstr "" #. type: item #: doc/guix.texi:13931 #, no-wrap msgid "handle-suspend-key" msgstr "" #. type: code{#1} #: doc/guix.texi:13933 doc/guix.texi:13937 msgid "suspend" msgstr "" #. type: item #: doc/guix.texi:13933 #, no-wrap msgid "handle-hibernate-key" msgstr "" #. type: code{#1} #: doc/guix.texi:13935 msgid "hibernate" msgstr "" #. type: item #: doc/guix.texi:13935 #, no-wrap msgid "handle-lid-switch" msgstr "" #. type: item #: doc/guix.texi:13937 #, no-wrap msgid "handle-lid-switch-docked" msgstr "" #. type: code{#1} #: doc/guix.texi:13939 doc/guix.texi:13951 msgid "ignore" msgstr "" #. type: item #: doc/guix.texi:13939 #, no-wrap msgid "power-key-ignore-inhibited?" msgstr "" #. type: item #: doc/guix.texi:13941 #, no-wrap msgid "suspend-key-ignore-inhibited?" msgstr "" #. type: item #: doc/guix.texi:13943 #, no-wrap msgid "hibernate-key-ignore-inhibited?" msgstr "" #. type: item #: doc/guix.texi:13945 #, no-wrap msgid "lid-switch-ignore-inhibited?" msgstr "" #. type: code{#1} #: doc/guix.texi:13947 doc/guix.texi:13959 msgid "#t" msgstr "" #. type: item #: doc/guix.texi:13947 #, no-wrap msgid "holdoff-timeout-seconds" msgstr "" #. type: code{#1} #: doc/guix.texi:13949 msgid "30" msgstr "" #. type: item #: doc/guix.texi:13949 #, no-wrap msgid "idle-action" msgstr "" #. type: item #: doc/guix.texi:13951 #, no-wrap msgid "idle-action-seconds" msgstr "" #. type: code{#1} #: doc/guix.texi:13953 msgid "(* 30 60)" msgstr "" #. type: item #: doc/guix.texi:13953 #, no-wrap msgid "runtime-directory-size-percent" msgstr "" #. type: code{#1} #: doc/guix.texi:13955 msgid "10" msgstr "" #. type: item #: doc/guix.texi:13955 #, no-wrap msgid "runtime-directory-size" msgstr "" #. type: item #: doc/guix.texi:13957 #, no-wrap msgid "remove-ipc?" msgstr "" #. type: item #: doc/guix.texi:13959 #, no-wrap msgid "suspend-state" msgstr "" #. type: code{#1} #: doc/guix.texi:13961 msgid "(\"mem\" \"standby\" \"freeze\")" msgstr "" #. type: item #: doc/guix.texi:13961 #, no-wrap msgid "suspend-mode" msgstr "" #. type: item #: doc/guix.texi:13963 #, no-wrap msgid "hibernate-state" msgstr "" #. type: code{#1} #: doc/guix.texi:13965 doc/guix.texi:13969 msgid "(\"disk\")" msgstr "" #. type: item #: doc/guix.texi:13965 #, no-wrap msgid "hibernate-mode" msgstr "" #. type: code{#1} #: doc/guix.texi:13967 msgid "(\"platform\" \"shutdown\")" msgstr "" #. type: item #: doc/guix.texi:13967 #, no-wrap msgid "hybrid-sleep-state" msgstr "" #. type: item #: doc/guix.texi:13969 #, no-wrap msgid "hybrid-sleep-mode" msgstr "" #. type: code{#1} #: doc/guix.texi:13971 msgid "(\"suspend\" \"platform\" \"shutdown\")" msgstr "" #. type: deffn #: doc/guix.texi:13974 #, no-wrap msgid "{Scheme Procedure} accountsservice-service @" msgstr "" #. type: deffn #: doc/guix.texi:13982 msgid "" "[#:accountsservice @var{accountsservice}] Return a service that runs " "AccountsService, a system service that can list available accounts, change " "their passwords, and so on. AccountsService integrates with PolicyKit to " "enable unprivileged users to acquire the capability to modify their system " "configuration. @uref{https://www.freedesktop.org/wiki/Software/" "AccountsService/, the accountsservice web site} for more information." msgstr "" #. type: deffn #: doc/guix.texi:13985 msgid "" "The @var{accountsservice} keyword argument is the @code{accountsservice} " "package to expose as a service." msgstr "" #. type: deffn #: doc/guix.texi:13987 #, no-wrap msgid "{Scheme Procedure} polkit-service @" msgstr "" #. type: deffn #: doc/guix.texi:13996 msgid "" "[#:polkit @var{polkit}] Return a service that runs the @uref{http://www." "freedesktop.org/wiki/Software/polkit/, Polkit privilege management service}, " "which allows system administrators to grant access to privileged operations " "in a structured way. By querying the Polkit service, a privileged system " "component can know when it should grant additional capabilities to ordinary " "users. For example, an ordinary user can be granted the capability to " "suspend the system if the user is logged in locally." msgstr "" #. type: deffn #: doc/guix.texi:13998 #, no-wrap msgid "{Scheme Procedure} upower-service [#:upower @var{upower}] @" msgstr "" #. type: deffn #: doc/guix.texi:14015 msgid "" "[#:watts-up-pro? #f] @ [#:poll-batteries? #t] @ [#:ignore-lid? #f] @ [#:use-" "percentage-for-policy? #f] @ [#:percentage-low 10] @ [#:percentage-critical " "3] @ [#:percentage-action 2] @ [#:time-low 1200] @ [#:time-critical 300] @ " "[#:time-action 120] @ [#:critical-power-action 'hybrid-sleep] Return a " "service that runs @uref{http://upower.freedesktop.org/, @command{upowerd}}, " "a system-wide monitor for power consumption and battery levels, with the " "given configuration settings. It implements the @code{org.freedesktop." "UPower} D-Bus interface, and is notably used by GNOME." msgstr "" #. type: deffn #: doc/guix.texi:14017 #, no-wrap msgid "{Scheme Procedure} udisks-service [#:udisks @var{udisks}]" msgstr "" #. type: deffn #: doc/guix.texi:14022 msgid "" "Return a service for @uref{http://udisks.freedesktop.org/docs/latest/, " "UDisks}, a @dfn{disk management} daemon that provides user interfaces with " "notifications and ways to mount/unmount disks. Programs that talk to UDisks " "include the @command{udisksctl} command, part of UDisks, and GNOME Disks." msgstr "" #. type: deffn #: doc/guix.texi:14024 #, no-wrap msgid "{Scheme Procedure} colord-service [#:colord @var{colord}]" msgstr "" #. type: deffn #: doc/guix.texi:14030 msgid "" "Return a service that runs @command{colord}, a system service with a D-Bus " "interface to manage the color profiles of input and output devices such as " "screens and scanners. It is notably used by the GNOME Color Manager " "graphical tool. See @uref{http://www.freedesktop.org/software/colord/, the " "colord web site} for more information." msgstr "" #. type: deffn #: doc/guix.texi:14032 #, no-wrap msgid "{Scheme Procedure} geoclue-application name [#:allowed? #t] [#:system? #f] [#:users '()]" msgstr "" #. type: deffn #: doc/guix.texi:14041 msgid "" "Return a configuration allowing an application to access GeoClue location " "data. @var{name} is the Desktop ID of the application, without the @code{." "desktop} part. If @var{allowed?} is true, the application will have access " "to location information by default. The boolean @var{system?} value " "indicates whether an application is a system component or not. Finally " "@var{users} is a list of UIDs of all users for which this application is " "allowed location info access. An empty users list means that all users are " "allowed." msgstr "" #. type: defvr #: doc/guix.texi:14043 #, no-wrap msgid "{Scheme Variable} %standard-geoclue-applications" msgstr "" #. type: defvr #: doc/guix.texi:14050 msgid "" "The standard list of well-known GeoClue application configurations, granting " "authority to the GNOME date-and-time utility to ask for the current location " "in order to set the time zone, and allowing the IceCat and Epiphany web " "browsers to request location information. IceCat and Epiphany both query " "the user before allowing a web page to know the user's location." msgstr "" #. type: deffn #: doc/guix.texi:14052 #, no-wrap msgid "{Scheme Procedure} geoclue-service [#:colord @var{colord}] @" msgstr "" #. type: deffn #: doc/guix.texi:14065 msgid "" "[#:whitelist '()] @ [#:wifi-geolocation-url \"https://location.services." "mozilla.com/v1/geolocate?key=geoclue\"] @ [#:submit-data? #f] [#:wifi-" "submission-url \"https://location.services.mozilla.com/v1/submit?key=geoclue" "\"] @ [#:submission-nick \"geoclue\"] @ [#:applications %standard-geoclue-" "applications] Return a service that runs the GeoClue location service. This " "service provides a D-Bus interface to allow applications to request access " "to a user's physical location, and optionally to add information to online " "location databases. See @uref{https://wiki.freedesktop.org/www/Software/" "GeoClue/, the GeoClue web site} for more information." msgstr "" #. type: deffn #: doc/guix.texi:14067 #, no-wrap msgid "{Scheme Procedure} bluetooth-service [#:bluez @var{bluez}] @" msgstr "" #. type: deffn #: doc/guix.texi:14074 msgid "" "[@w{#:auto-enable? #f}] Return a service that runs the @command{bluetoothd} " "daemon, which manages all the Bluetooth devices and provides a number of D-" "Bus interfaces. When AUTO-ENABLE? is true, the bluetooth controller is " "powered automatically at boot, which can be useful when using a bluetooth " "keyboard or mouse." msgstr "" #. type: deffn #: doc/guix.texi:14076 msgid "Users need to be in the @code{lp} group to access the D-Bus service." msgstr "" #. type: cindex #: doc/guix.texi:14081 #, no-wrap msgid "sound support" msgstr "" #. type: cindex #: doc/guix.texi:14082 #, no-wrap msgid "ALSA" msgstr "" #. type: cindex #: doc/guix.texi:14083 #, no-wrap msgid "PulseAudio, sound support" msgstr "" #. type: Plain text #: doc/guix.texi:14088 msgid "" "The @code{(gnu services sound)} module provides a service to configure the " "Advanced Linux Sound Architecture (ALSA) system, which makes PulseAudio the " "preferred ALSA output driver." msgstr "" #. type: deffn #: doc/guix.texi:14089 #, no-wrap msgid "{Scheme Variable} alsa-service-type" msgstr "" #. type: deffn #: doc/guix.texi:14094 msgid "" "This is the type for the @uref{https://alsa-project.org/, Advanced Linux " "Sound Architecture} (ALSA) system, which generates the @file{/etc/asound." "conf} configuration file. The value for this type is a @command{alsa-" "configuration} record as in this example:" msgstr "" #. type: example #: doc/guix.texi:14097 #, no-wrap msgid "(service alsa-service-type)\n" msgstr "" #. type: deffn #: doc/guix.texi:14100 msgid "See below for details about @code{alsa-configuration}." msgstr "" #. type: deftp #: doc/guix.texi:14102 #, no-wrap msgid "{Data Type} alsa-configuration" msgstr "" #. type: deftp #: doc/guix.texi:14104 msgid "Data type representing the configuration for @code{alsa-service}." msgstr "" #. type: item #: doc/guix.texi:14106 #, no-wrap msgid "@code{alsa-plugins} (default: @var{alsa-plugins})" msgstr "" #. type: table #: doc/guix.texi:14108 msgid "@code{alsa-plugins} package to use." msgstr "" #. type: item #: doc/guix.texi:14109 #, no-wrap msgid "@code{pulseaudio?} (default: @var{#t})" msgstr "" #. type: table #: doc/guix.texi:14112 msgid "" "Whether ALSA applications should transparently be made to use the " "@uref{http://www.pulseaudio.org/, PulseAudio} sound server." msgstr "" #. type: table #: doc/guix.texi:14116 msgid "" "Using PulseAudio allows you to run several sound-producing applications at " "the same time and to individual control them @i{via} @command{pavucontrol}, " "among other things." msgstr "" #. type: item #: doc/guix.texi:14117 #, no-wrap msgid "@code{extra-options} (default: @var{\"\"})" msgstr "" #. type: table #: doc/guix.texi:14119 msgid "String to append to the @file{/etc/asound.conf} file." msgstr "" #. type: Plain text #: doc/guix.texi:14125 msgid "" "Individual users who want to override the system configuration of ALSA can " "do it with the @file{~/.asoundrc} file:" msgstr "" #. type: example #: doc/guix.texi:14131 #, no-wrap msgid "" "# In guix, we have to specify the absolute path for plugins.\n" "pcm_type.jack @{\n" " lib \"/home/alice/.guix-profile/lib/alsa-lib/libasound_module_pcm_jack.so\"\n" "@}\n" "\n" msgstr "" #. type: example #: doc/guix.texi:14140 #, no-wrap msgid "" "# Routing ALSA to jack:\n" "# .\n" "pcm.rawjack @{\n" " type jack\n" " playback_ports @{\n" " 0 system:playback_1\n" " 1 system:playback_2\n" " @}\n" "\n" msgstr "" #. type: example #: doc/guix.texi:14146 #, no-wrap msgid "" " capture_ports @{\n" " 0 system:capture_1\n" " 1 system:capture_2\n" " @}\n" "@}\n" "\n" msgstr "" #. type: example #: doc/guix.texi:14153 #, no-wrap msgid "" "pcm.!default @{\n" " type plug\n" " slave @{\n" " pcm \"rawjack\"\n" " @}\n" "@}\n" msgstr "" #. type: Plain text #: doc/guix.texi:14157 msgid "" "See @uref{https://www.alsa-project.org/main/index.php/Asoundrc} for the " "details." msgstr "" #. type: cindex #: doc/guix.texi:14163 #, no-wrap msgid "SQL" msgstr "" #. type: Plain text #: doc/guix.texi:14165 msgid "" "The @code{(gnu services databases)} module provides the following services." msgstr "" #. type: deffn #: doc/guix.texi:14166 #, no-wrap msgid "{Scheme Procedure} postgresql-service [#:postgresql postgresql] @" msgstr "" #. type: deffn #: doc/guix.texi:14171 msgid "" "[#:config-file] [#:data-directory ``/var/lib/postgresql/data''] @ [#:port " "5432] [#:locale ``en_US.utf8''] Return a service that runs @var{postgresql}, " "the PostgreSQL database server." msgstr "" #. type: deffn #: doc/guix.texi:14175 msgid "" "The PostgreSQL daemon loads its runtime configuration from @var{config-" "file}, creates a database cluster with @var{locale} as the default locale, " "stored in @var{data-directory}. It then listens on @var{port}." msgstr "" #. type: deffn #: doc/guix.texi:14177 #, no-wrap msgid "{Scheme Procedure} mysql-service [#:config (mysql-configuration)]" msgstr "" #. type: deffn #: doc/guix.texi:14180 msgid "" "Return a service that runs @command{mysqld}, the MySQL or MariaDB database " "server." msgstr "" #. type: deffn #: doc/guix.texi:14183 msgid "" "The optional @var{config} argument specifies the configuration for " "@command{mysqld}, which should be a @code{} object." msgstr "" #. type: deftp #: doc/guix.texi:14185 #, no-wrap msgid "{Data Type} mysql-configuration" msgstr "" #. type: deftp #: doc/guix.texi:14187 msgid "Data type representing the configuration of @var{mysql-service}." msgstr "" #. type: item #: doc/guix.texi:14189 #, no-wrap msgid "@code{mysql} (default: @var{mariadb})" msgstr "" #. type: table #: doc/guix.texi:14192 msgid "" "Package object of the MySQL database server, can be either @var{mariadb} or " "@var{mysql}." msgstr "" #. type: table #: doc/guix.texi:14195 msgid "" "For MySQL, a temporary root password will be displayed at activation time. " "For MariaDB, the root password is empty." msgstr "" #. type: item #: doc/guix.texi:14196 #, no-wrap msgid "@code{port} (default: @code{3306})" msgstr "" #. type: table #: doc/guix.texi:14198 msgid "TCP port on which the database server listens for incoming connections." msgstr "" #. type: defvr #: doc/guix.texi:14201 #, no-wrap msgid "{Scheme Variable} memcached-service-type" msgstr "" #. type: defvr #: doc/guix.texi:14205 msgid "" "This is the service type for the @uref{https://memcached.org/, Memcached} " "service, which provides a distributed in memory cache. The value for the " "service type is a @code{memcached-configuration} object." msgstr "" #. type: example #: doc/guix.texi:14209 #, no-wrap msgid "(service memcached-service-type)\n" msgstr "" #. type: deftp #: doc/guix.texi:14211 #, no-wrap msgid "{Data Type} memcached-configuration" msgstr "" #. type: deftp #: doc/guix.texi:14213 msgid "Data type representing the configuration of memcached." msgstr "" #. type: item #: doc/guix.texi:14215 #, no-wrap msgid "@code{memcached} (default: @code{memcached})" msgstr "" #. type: table #: doc/guix.texi:14217 msgid "The Memcached package to use." msgstr "" #. type: item #: doc/guix.texi:14218 #, no-wrap msgid "@code{interfaces} (default: @code{'(\"0.0.0.0\")})" msgstr "" #. type: table #: doc/guix.texi:14220 msgid "Network interfaces on which to listen." msgstr "" #. type: item #: doc/guix.texi:14221 #, no-wrap msgid "@code{tcp-port} (default: @code{11211})" msgstr "" #. type: table #: doc/guix.texi:14223 msgid "Port on which to accept connections on," msgstr "" #. type: item #: doc/guix.texi:14224 #, no-wrap msgid "@code{udp-port} (default: @code{11211})" msgstr "" #. type: table #: doc/guix.texi:14227 msgid "" "Port on which to accept UDP connections on, a value of 0 will disable " "listening on a UDP socket." msgstr "" #. type: item #: doc/guix.texi:14228 #, no-wrap msgid "@code{additional-options} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:14230 msgid "Additional command line options to pass to @code{memcached}." msgstr "" #. type: defvr #: doc/guix.texi:14233 #, no-wrap msgid "{Scheme Variable} mongodb-service-type" msgstr "" #. type: defvr #: doc/guix.texi:14236 msgid "" "This is the service type for @uref{https://www.mongodb.com/, MongoDB}. The " "value for the service type is a @code{mongodb-configuration} object." msgstr "" #. type: example #: doc/guix.texi:14240 #, no-wrap msgid "(service mongodb-service-type)\n" msgstr "" #. type: deftp #: doc/guix.texi:14242 #, no-wrap msgid "{Data Type} mongodb-configuration" msgstr "" #. type: deftp #: doc/guix.texi:14244 msgid "Data type representing the configuration of mongodb." msgstr "" #. type: item #: doc/guix.texi:14246 #, no-wrap msgid "@code{mongodb} (default: @code{mongodb})" msgstr "" #. type: table #: doc/guix.texi:14248 msgid "The MongoDB package to use." msgstr "" #. type: item #: doc/guix.texi:14249 #, no-wrap msgid "@code{config-file} (default: @code{%default-mongodb-configuration-file})" msgstr "" #. type: table #: doc/guix.texi:14251 msgid "The configuration file for MongoDB." msgstr "" #. type: item #: doc/guix.texi:14252 #, no-wrap msgid "@code{data-directory} (default: @code{\"/var/lib/mongodb\"})" msgstr "" #. type: table #: doc/guix.texi:14256 msgid "" "This value is used to create the directory, so that it exists and is owned " "by the mongodb user. It should match the data-directory which MongoDB is " "configured to use through the configuration file." msgstr "" #. type: defvr #: doc/guix.texi:14259 #, no-wrap msgid "{Scheme Variable} redis-service-type" msgstr "" #. type: defvr #: doc/guix.texi:14262 msgid "" "This is the service type for the @uref{https://redis.io/, Redis} key/value " "store, whose value is a @code{redis-configuration} object." msgstr "" #. type: deftp #: doc/guix.texi:14264 #, no-wrap msgid "{Data Type} redis-configuration" msgstr "" #. type: deftp #: doc/guix.texi:14266 msgid "Data type representing the configuration of redis." msgstr "" #. type: item #: doc/guix.texi:14268 #, no-wrap msgid "@code{redis} (default: @code{redis})" msgstr "" #. type: table #: doc/guix.texi:14270 msgid "The Redis package to use." msgstr "" #. type: item #: doc/guix.texi:14271 #, no-wrap msgid "@code{bind} (default: @code{\"127.0.0.1\"})" msgstr "" #. type: table #: doc/guix.texi:14273 msgid "Network interface on which to listen." msgstr "" #. type: item #: doc/guix.texi:14274 #, no-wrap msgid "@code{port} (default: @code{6379})" msgstr "" #. type: table #: doc/guix.texi:14277 msgid "" "Port on which to accept connections on, a value of 0 will disable listening " "on a TCP socket." msgstr "" #. type: item #: doc/guix.texi:14278 #, no-wrap msgid "@code{working-directory} (default: @code{\"/var/lib/redis\"})" msgstr "" #. type: table #: doc/guix.texi:14280 msgid "Directory in which to store the database and related files." msgstr "" #. type: cindex #: doc/guix.texi:14286 #, no-wrap msgid "mail" msgstr "" #. type: code{#1} #: doc/guix.texi:14287 doc/guix.texi:17627 #, no-wrap msgid "email" msgstr "" #. type: Plain text #: doc/guix.texi:14292 msgid "" "The @code{(gnu services mail)} module provides Guix service definitions for " "email services: IMAP, POP3, and LMTP servers, as well as mail transport " "agents (MTAs). Lots of acronyms! These services are detailed in the " "subsections below." msgstr "" #. type: subsubheading #: doc/guix.texi:14293 #, no-wrap msgid "Dovecot Service" msgstr "" #. type: deffn #: doc/guix.texi:14295 #, no-wrap msgid "{Scheme Procedure} dovecot-service [#:config (dovecot-configuration)]" msgstr "" #. type: deffn #: doc/guix.texi:14297 msgid "Return a service that runs the Dovecot IMAP/POP3/LMTP mail server." msgstr "" #. type: Plain text #: doc/guix.texi:14307 msgid "" "By default, Dovecot does not need much configuration; the default " "configuration object created by @code{(dovecot-configuration)} will suffice " "if your mail is delivered to @code{~/Maildir}. A self-signed certificate " "will be generated for TLS-protected connections, though Dovecot will also " "listen on cleartext ports by default. There are a number of options, " "though, which mail administrators might need to change, and as is the case " "with other services, Guix allows the system administrator to specify these " "parameters via a uniform Scheme interface." msgstr "" #. type: Plain text #: doc/guix.texi:14310 msgid "" "For example, to specify that mail is located at @code{maildir~/.mail}, one " "would instantiate the Dovecot service like this:" msgstr "" #. type: example #: doc/guix.texi:14315 #, no-wrap msgid "" "(dovecot-service #:config\n" " (dovecot-configuration\n" " (mail-location \"maildir:~/.mail\")))\n" msgstr "" #. type: Plain text #: doc/guix.texi:14323 msgid "" "The available configuration parameters follow. Each parameter definition is " "preceded by its type; for example, @samp{string-list foo} indicates that the " "@code{foo} parameter should be specified as a list of strings. There is " "also a way to specify the configuration as a string, if you have an old " "@code{dovecot.conf} file that you want to port over from some other system; " "see the end for more details." msgstr "" #. type: Plain text #: doc/guix.texi:14333 msgid "Available @code{dovecot-configuration} fields are:" msgstr "" #. type: deftypevr #: doc/guix.texi:14334 #, no-wrap msgid "{@code{dovecot-configuration} parameter} package dovecot" msgstr "" #. type: deftypevr #: doc/guix.texi:14336 doc/guix.texi:15642 msgid "The dovecot package." msgstr "" #. type: deftypevr #: doc/guix.texi:14338 #, no-wrap msgid "{@code{dovecot-configuration} parameter} comma-separated-string-list listen" msgstr "" #. type: deftypevr #: doc/guix.texi:14344 msgid "" "A list of IPs or hosts where to listen for connections. @samp{*} listens on " "all IPv4 interfaces, @samp{::} listens on all IPv6 interfaces. If you want " "to specify non-default ports or anything more complex, customize the address " "and port fields of the @samp{inet-listener} of the specific services you are " "interested in." msgstr "" #. type: deftypevr #: doc/guix.texi:14346 #, no-wrap msgid "{@code{dovecot-configuration} parameter} protocol-configuration-list protocols" msgstr "" #. type: deftypevr #: doc/guix.texi:14349 msgid "" "List of protocols we want to serve. Available protocols include " "@samp{imap}, @samp{pop3}, and @samp{lmtp}." msgstr "" #. type: deftypevr #: doc/guix.texi:14351 msgid "Available @code{protocol-configuration} fields are:" msgstr "" #. type: deftypevr #: doc/guix.texi:14352 #, no-wrap msgid "{@code{protocol-configuration} parameter} string name" msgstr "" #. type: deftypevr #: doc/guix.texi:14354 msgid "The name of the protocol." msgstr "" #. type: deftypevr #: doc/guix.texi:14356 #, no-wrap msgid "{@code{protocol-configuration} parameter} string auth-socket-path" msgstr "" #. type: deftypevr #: doc/guix.texi:14360 msgid "" "UNIX socket path to the master authentication server to find users. This is " "used by imap (for shared users) and lda. It defaults to @samp{\"/var/run/" "dovecot/auth-userdb\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14362 #, no-wrap msgid "{@code{protocol-configuration} parameter} space-separated-string-list mail-plugins" msgstr "" #. type: deftypevr #: doc/guix.texi:14364 msgid "Space separated list of plugins to load." msgstr "" #. type: deftypevr #: doc/guix.texi:14366 #, no-wrap msgid "{@code{protocol-configuration} parameter} non-negative-integer mail-max-userip-connections" msgstr "" #. type: deftypevr #: doc/guix.texi:14370 msgid "" "Maximum number of IMAP connections allowed for a user from each IP address. " "NOTE: The username is compared case-sensitively. Defaults to @samp{10}." msgstr "" #. type: deftypevr #: doc/guix.texi:14374 #, no-wrap msgid "{@code{dovecot-configuration} parameter} service-configuration-list services" msgstr "" #. type: deftypevr #: doc/guix.texi:14378 msgid "" "List of services to enable. Available services include @samp{imap}, " "@samp{imap-login}, @samp{pop3}, @samp{pop3-login}, @samp{auth}, and " "@samp{lmtp}." msgstr "" #. type: deftypevr #: doc/guix.texi:14380 msgid "Available @code{service-configuration} fields are:" msgstr "" #. type: deftypevr #: doc/guix.texi:14381 #, no-wrap msgid "{@code{service-configuration} parameter} string kind" msgstr "" #. type: deftypevr #: doc/guix.texi:14386 msgid "" "The service kind. Valid values include @code{director}, @code{imap-login}, " "@code{pop3-login}, @code{lmtp}, @code{imap}, @code{pop3}, @code{auth}, " "@code{auth-worker}, @code{dict}, @code{tcpwrap}, @code{quota-warning}, or " "anything else." msgstr "" #. type: deftypevr #: doc/guix.texi:14388 #, no-wrap msgid "{@code{service-configuration} parameter} listener-configuration-list listeners" msgstr "" #. type: deftypevr #: doc/guix.texi:14393 msgid "" "Listeners for the service. A listener is either a @code{unix-listener-" "configuration}, a @code{fifo-listener-configuration}, or an @code{inet-" "listener-configuration}. Defaults to @samp{()}." msgstr "" #. type: deftypevr #: doc/guix.texi:14395 msgid "Available @code{unix-listener-configuration} fields are:" msgstr "" #. type: deftypevr #: doc/guix.texi:14396 #, no-wrap msgid "{@code{unix-listener-configuration} parameter} string path" msgstr "" #. type: deftypevr #: doc/guix.texi:14399 doc/guix.texi:14422 msgid "" "Path to the file, relative to @code{base-dir} field. This is also used as " "the section name." msgstr "" #. type: deftypevr #: doc/guix.texi:14401 #, no-wrap msgid "{@code{unix-listener-configuration} parameter} string mode" msgstr "" #. type: deftypevr #: doc/guix.texi:14404 doc/guix.texi:14427 msgid "The access mode for the socket. Defaults to @samp{\"0600\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14406 #, no-wrap msgid "{@code{unix-listener-configuration} parameter} string user" msgstr "" #. type: deftypevr #: doc/guix.texi:14409 doc/guix.texi:14432 msgid "The user to own the socket. Defaults to @samp{\"\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14411 #, no-wrap msgid "{@code{unix-listener-configuration} parameter} string group" msgstr "" #. type: deftypevr #: doc/guix.texi:14414 doc/guix.texi:14437 msgid "The group to own the socket. Defaults to @samp{\"\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14418 msgid "Available @code{fifo-listener-configuration} fields are:" msgstr "" #. type: deftypevr #: doc/guix.texi:14419 #, no-wrap msgid "{@code{fifo-listener-configuration} parameter} string path" msgstr "" #. type: deftypevr #: doc/guix.texi:14424 #, no-wrap msgid "{@code{fifo-listener-configuration} parameter} string mode" msgstr "" #. type: deftypevr #: doc/guix.texi:14429 #, no-wrap msgid "{@code{fifo-listener-configuration} parameter} string user" msgstr "" #. type: deftypevr #: doc/guix.texi:14434 #, no-wrap msgid "{@code{fifo-listener-configuration} parameter} string group" msgstr "" #. type: deftypevr #: doc/guix.texi:14441 msgid "Available @code{inet-listener-configuration} fields are:" msgstr "" #. type: deftypevr #: doc/guix.texi:14442 #, no-wrap msgid "{@code{inet-listener-configuration} parameter} string protocol" msgstr "" #. type: deftypevr #: doc/guix.texi:14444 msgid "The protocol to listen for." msgstr "" #. type: deftypevr #: doc/guix.texi:14446 #, no-wrap msgid "{@code{inet-listener-configuration} parameter} string address" msgstr "" #. type: deftypevr #: doc/guix.texi:14449 msgid "" "The address on which to listen, or empty for all addresses. Defaults to " "@samp{\"\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14451 #, no-wrap msgid "{@code{inet-listener-configuration} parameter} non-negative-integer port" msgstr "" #. type: deftypevr #: doc/guix.texi:14453 msgid "The port on which to listen." msgstr "" #. type: deftypevr #: doc/guix.texi:14455 #, no-wrap msgid "{@code{inet-listener-configuration} parameter} boolean ssl?" msgstr "" #. type: deftypevr #: doc/guix.texi:14459 msgid "" "Whether to use SSL for this service; @samp{yes}, @samp{no}, or " "@samp{required}. Defaults to @samp{#t}." msgstr "" #. type: deftypevr #: doc/guix.texi:14463 #, no-wrap msgid "{@code{service-configuration} parameter} non-negative-integer client-limit" msgstr "" #. type: deftypevr #: doc/guix.texi:14468 msgid "" "Maximum number of simultaneous client connections per process. Once this " "number of connections is received, the next incoming connection will prompt " "Dovecot to spawn another process. If set to 0, @code{default-client-limit} " "is used instead." msgstr "" #. type: deftypevr #: doc/guix.texi:14473 #, no-wrap msgid "{@code{service-configuration} parameter} non-negative-integer service-count" msgstr "" #. type: deftypevr #: doc/guix.texi:14478 msgid "" "Number of connections to handle before starting a new process. Typically " "the only useful values are 0 (unlimited) or 1. 1 is more secure, but 0 is " "faster. . Defaults to @samp{1}." msgstr "" #. type: deftypevr #: doc/guix.texi:14481 #, no-wrap msgid "{@code{service-configuration} parameter} non-negative-integer process-limit" msgstr "" #. type: deftypevr #: doc/guix.texi:14484 msgid "" "Maximum number of processes that can exist for this service. If set to 0, " "@code{default-process-limit} is used instead." msgstr "" #. type: deftypevr #: doc/guix.texi:14489 #, no-wrap msgid "{@code{service-configuration} parameter} non-negative-integer process-min-avail" msgstr "" #. type: deftypevr #: doc/guix.texi:14492 msgid "" "Number of processes to always keep waiting for more connections. Defaults " "to @samp{0}." msgstr "" #. type: deftypevr #: doc/guix.texi:14494 #, no-wrap msgid "{@code{service-configuration} parameter} non-negative-integer vsz-limit" msgstr "" #. type: deftypevr #: doc/guix.texi:14498 msgid "" "If you set @samp{service-count 0}, you probably need to grow this. Defaults " "to @samp{256000000}." msgstr "" #. type: deftypevr #: doc/guix.texi:14502 #, no-wrap msgid "{@code{dovecot-configuration} parameter} dict-configuration dict" msgstr "" #. type: deftypevr #: doc/guix.texi:14505 msgid "" "Dict configuration, as created by the @code{dict-configuration} constructor." msgstr "" #. type: deftypevr #: doc/guix.texi:14507 msgid "Available @code{dict-configuration} fields are:" msgstr "" #. type: deftypevr #: doc/guix.texi:14508 #, no-wrap msgid "{@code{dict-configuration} parameter} free-form-fields entries" msgstr "" #. type: deftypevr #: doc/guix.texi:14511 msgid "" "A list of key-value pairs that this dict should hold. Defaults to @samp{()}." msgstr "" #. type: deftypevr #: doc/guix.texi:14515 #, no-wrap msgid "{@code{dovecot-configuration} parameter} passdb-configuration-list passdbs" msgstr "" #. type: deftypevr #: doc/guix.texi:14518 msgid "" "A list of passdb configurations, each one created by the @code{passdb-" "configuration} constructor." msgstr "" #. type: deftypevr #: doc/guix.texi:14520 msgid "Available @code{passdb-configuration} fields are:" msgstr "" #. type: deftypevr #: doc/guix.texi:14521 #, no-wrap msgid "{@code{passdb-configuration} parameter} string driver" msgstr "" #. type: deftypevr #: doc/guix.texi:14526 msgid "" "The driver that the passdb should use. Valid values include @samp{pam}, " "@samp{passwd}, @samp{shadow}, @samp{bsdauth}, and @samp{static}. Defaults " "to @samp{\"pam\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14528 #, no-wrap msgid "{@code{passdb-configuration} parameter} space-separated-string-list args" msgstr "" #. type: deftypevr #: doc/guix.texi:14531 msgid "" "Space separated list of arguments to the passdb driver. Defaults to " "@samp{\"\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14535 #, no-wrap msgid "{@code{dovecot-configuration} parameter} userdb-configuration-list userdbs" msgstr "" #. type: deftypevr #: doc/guix.texi:14538 msgid "" "List of userdb configurations, each one created by the @code{userdb-" "configuration} constructor." msgstr "" #. type: deftypevr #: doc/guix.texi:14540 msgid "Available @code{userdb-configuration} fields are:" msgstr "" #. type: deftypevr #: doc/guix.texi:14541 #, no-wrap msgid "{@code{userdb-configuration} parameter} string driver" msgstr "" #. type: deftypevr #: doc/guix.texi:14545 msgid "" "The driver that the userdb should use. Valid values include @samp{passwd} " "and @samp{static}. Defaults to @samp{\"passwd\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14547 #, no-wrap msgid "{@code{userdb-configuration} parameter} space-separated-string-list args" msgstr "" #. type: deftypevr #: doc/guix.texi:14550 msgid "" "Space separated list of arguments to the userdb driver. Defaults to " "@samp{\"\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14552 #, no-wrap msgid "{@code{userdb-configuration} parameter} free-form-args override-fields" msgstr "" #. type: deftypevr #: doc/guix.texi:14555 msgid "Override fields from passwd. Defaults to @samp{()}." msgstr "" #. type: deftypevr #: doc/guix.texi:14559 #, no-wrap msgid "{@code{dovecot-configuration} parameter} plugin-configuration plugin-configuration" msgstr "" #. type: deftypevr #: doc/guix.texi:14562 msgid "" "Plug-in configuration, created by the @code{plugin-configuration} " "constructor." msgstr "" #. type: deftypevr #: doc/guix.texi:14564 #, no-wrap msgid "{@code{dovecot-configuration} parameter} list-of-namespace-configuration namespaces" msgstr "" #. type: deftypevr #: doc/guix.texi:14567 msgid "" "List of namespaces. Each item in the list is created by the @code{namespace-" "configuration} constructor." msgstr "" #. type: deftypevr #: doc/guix.texi:14569 msgid "Available @code{namespace-configuration} fields are:" msgstr "" #. type: deftypevr #: doc/guix.texi:14570 #, no-wrap msgid "{@code{namespace-configuration} parameter} string name" msgstr "" #. type: deftypevr #: doc/guix.texi:14572 msgid "Name for this namespace." msgstr "" #. type: deftypevr #: doc/guix.texi:14574 #, no-wrap msgid "{@code{namespace-configuration} parameter} string type" msgstr "" #. type: deftypevr #: doc/guix.texi:14577 msgid "" "Namespace type: @samp{private}, @samp{shared} or @samp{public}. Defaults to " "@samp{\"private\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14579 #, no-wrap msgid "{@code{namespace-configuration} parameter} string separator" msgstr "" #. type: deftypevr #: doc/guix.texi:14585 msgid "" "Hierarchy separator to use. You should use the same separator for all " "namespaces or some clients get confused. @samp{/} is usually a good one. " "The default however depends on the underlying mail storage format. Defaults " "to @samp{\"\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14587 #, no-wrap msgid "{@code{namespace-configuration} parameter} string prefix" msgstr "" #. type: deftypevr #: doc/guix.texi:14591 msgid "" "Prefix required to access this namespace. This needs to be different for " "all namespaces. For example @samp{Public/}. Defaults to @samp{\"\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14593 #, no-wrap msgid "{@code{namespace-configuration} parameter} string location" msgstr "" #. type: deftypevr #: doc/guix.texi:14597 msgid "" "Physical location of the mailbox. This is in the same format as " "mail_location, which is also the default for it. Defaults to @samp{\"\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14599 #, no-wrap msgid "{@code{namespace-configuration} parameter} boolean inbox?" msgstr "" #. type: deftypevr #: doc/guix.texi:14603 msgid "" "There can be only one INBOX, and this setting defines which namespace has " "it. Defaults to @samp{#f}." msgstr "" #. type: deftypevr #: doc/guix.texi:14605 #, no-wrap msgid "{@code{namespace-configuration} parameter} boolean hidden?" msgstr "" #. type: deftypevr #: doc/guix.texi:14613 msgid "" "If namespace is hidden, it's not advertised to clients via NAMESPACE " "extension. You'll most likely also want to set @samp{list? #f}. This is " "mostly useful when converting from another server with different namespaces " "which you want to deprecate but still keep working. For example you can " "create hidden namespaces with prefixes @samp{~/mail/}, @samp{~%u/mail/} and " "@samp{mail/}. Defaults to @samp{#f}." msgstr "" #. type: deftypevr #: doc/guix.texi:14615 #, no-wrap msgid "{@code{namespace-configuration} parameter} boolean list?" msgstr "" #. type: deftypevr #: doc/guix.texi:14621 msgid "" "Show the mailboxes under this namespace with the LIST command. This makes " "the namespace visible for clients that do not support the NAMESPACE " "extension. The special @code{children} value lists child mailboxes, but " "hides the namespace prefix. Defaults to @samp{#t}." msgstr "" #. type: deftypevr #: doc/guix.texi:14623 #, no-wrap msgid "{@code{namespace-configuration} parameter} boolean subscriptions?" msgstr "" #. type: deftypevr #: doc/guix.texi:14628 msgid "" "Namespace handles its own subscriptions. If set to @code{#f}, the parent " "namespace handles them. The empty prefix should always have this as " "@code{#t}). Defaults to @samp{#t}." msgstr "" #. type: deftypevr #: doc/guix.texi:14630 #, no-wrap msgid "{@code{namespace-configuration} parameter} mailbox-configuration-list mailboxes" msgstr "" #. type: deftypevr #: doc/guix.texi:14633 msgid "List of predefined mailboxes in this namespace. Defaults to @samp{()}." msgstr "" #. type: deftypevr #: doc/guix.texi:14635 msgid "Available @code{mailbox-configuration} fields are:" msgstr "" #. type: deftypevr #: doc/guix.texi:14636 #, no-wrap msgid "{@code{mailbox-configuration} parameter} string name" msgstr "" #. type: deftypevr #: doc/guix.texi:14638 msgid "Name for this mailbox." msgstr "" #. type: deftypevr #: doc/guix.texi:14640 #, no-wrap msgid "{@code{mailbox-configuration} parameter} string auto" msgstr "" #. type: deftypevr #: doc/guix.texi:14644 msgid "" "@samp{create} will automatically create this mailbox. @samp{subscribe} will " "both create and subscribe to the mailbox. Defaults to @samp{\"no\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14646 #, no-wrap msgid "{@code{mailbox-configuration} parameter} space-separated-string-list special-use" msgstr "" #. type: deftypevr #: doc/guix.texi:14651 msgid "" "List of IMAP @code{SPECIAL-USE} attributes as specified by RFC 6154. Valid " "values are @code{\\All}, @code{\\Archive}, @code{\\Drafts}, " "@code{\\Flagged}, @code{\\Junk}, @code{\\Sent}, and @code{\\Trash}. " "Defaults to @samp{()}." msgstr "" #. type: deftypevr #: doc/guix.texi:14657 #, no-wrap msgid "{@code{dovecot-configuration} parameter} file-name base-dir" msgstr "" #. type: deftypevr #: doc/guix.texi:14660 msgid "" "Base directory where to store runtime data. Defaults to @samp{\"/var/run/" "dovecot/\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14662 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string login-greeting" msgstr "" #. type: deftypevr #: doc/guix.texi:14665 msgid "Greeting message for clients. Defaults to @samp{\"Dovecot ready.\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14667 #, no-wrap msgid "{@code{dovecot-configuration} parameter} space-separated-string-list login-trusted-networks" msgstr "" #. type: deftypevr #: doc/guix.texi:14674 msgid "" "List of trusted network ranges. Connections from these IPs are allowed to " "override their IP addresses and ports (for logging and for authentication " "checks). @samp{disable-plaintext-auth} is also ignored for these networks. " "Typically you would specify your IMAP proxy servers here. Defaults to " "@samp{()}." msgstr "" #. type: deftypevr #: doc/guix.texi:14676 #, no-wrap msgid "{@code{dovecot-configuration} parameter} space-separated-string-list login-access-sockets" msgstr "" #. type: deftypevr #: doc/guix.texi:14679 msgid "" "List of login access check sockets (e.g. tcpwrap). Defaults to @samp{()}." msgstr "" #. type: deftypevr #: doc/guix.texi:14681 #, no-wrap msgid "{@code{dovecot-configuration} parameter} boolean verbose-proctitle?" msgstr "" #. type: deftypevr #: doc/guix.texi:14687 msgid "" "Show more verbose process titles (in ps). Currently shows user name and IP " "address. Useful for seeing who is actually using the IMAP processes (e.g. " "shared mailboxes or if the same uid is used for multiple accounts). " "Defaults to @samp{#f}." msgstr "" #. type: deftypevr #: doc/guix.texi:14689 #, no-wrap msgid "{@code{dovecot-configuration} parameter} boolean shutdown-clients?" msgstr "" #. type: deftypevr #: doc/guix.texi:14695 msgid "" "Should all processes be killed when Dovecot master process shuts down. " "Setting this to @code{#f} means that Dovecot can be upgraded without forcing " "existing client connections to close (although that could also be a problem " "if the upgrade is e.g. due to a security fix). Defaults to @samp{#t}." msgstr "" #. type: deftypevr #: doc/guix.texi:14697 #, no-wrap msgid "{@code{dovecot-configuration} parameter} non-negative-integer doveadm-worker-count" msgstr "" #. type: deftypevr #: doc/guix.texi:14701 msgid "" "If non-zero, run mail commands via this many connections to doveadm server, " "instead of running them directly in the same process. Defaults to @samp{0}." msgstr "" #. type: deftypevr #: doc/guix.texi:14703 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string doveadm-socket-path" msgstr "" #. type: deftypevr #: doc/guix.texi:14706 msgid "" "UNIX socket or host:port used for connecting to doveadm server. Defaults to " "@samp{\"doveadm-server\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14708 #, no-wrap msgid "{@code{dovecot-configuration} parameter} space-separated-string-list import-environment" msgstr "" #. type: deftypevr #: doc/guix.texi:14712 msgid "" "List of environment variables that are preserved on Dovecot startup and " "passed down to all of its child processes. You can also give key=value " "pairs to always set specific settings." msgstr "" #. type: deftypevr #: doc/guix.texi:14714 #, no-wrap msgid "{@code{dovecot-configuration} parameter} boolean disable-plaintext-auth?" msgstr "" #. type: deftypevr #: doc/guix.texi:14721 msgid "" "Disable LOGIN command and all other plaintext authentications unless SSL/TLS " "is used (LOGINDISABLED capability). Note that if the remote IP matches the " "local IP (i.e. you're connecting from the same computer), the connection is " "considered secure and plaintext authentication is allowed. See also " "ssl=required setting. Defaults to @samp{#t}." msgstr "" #. type: deftypevr #: doc/guix.texi:14723 #, no-wrap msgid "{@code{dovecot-configuration} parameter} non-negative-integer auth-cache-size" msgstr "" #. type: deftypevr #: doc/guix.texi:14728 msgid "" "Authentication cache size (e.g. @samp{#e10e6}). 0 means it's disabled. " "Note that bsdauth, PAM and vpopmail require @samp{cache-key} to be set for " "caching to be used. Defaults to @samp{0}." msgstr "" #. type: deftypevr #: doc/guix.texi:14730 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string auth-cache-ttl" msgstr "" #. type: deftypevr #: doc/guix.texi:14738 msgid "" "Time to live for cached data. After TTL expires the cached record is no " "longer used, *except* if the main database lookup returns internal failure. " "We also try to handle password changes automatically: If user's previous " "authentication was successful, but this one wasn't, the cache isn't used. " "For now this works only with plaintext authentication. Defaults to " "@samp{\"1 hour\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14740 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string auth-cache-negative-ttl" msgstr "" #. type: deftypevr #: doc/guix.texi:14744 msgid "" "TTL for negative hits (user not found, password mismatch). 0 disables " "caching them completely. Defaults to @samp{\"1 hour\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14746 #, no-wrap msgid "{@code{dovecot-configuration} parameter} space-separated-string-list auth-realms" msgstr "" #. type: deftypevr #: doc/guix.texi:14752 msgid "" "List of realms for SASL authentication mechanisms that need them. You can " "leave it empty if you don't want to support multiple realms. Many clients " "simply use the first one listed here, so keep the default realm first. " "Defaults to @samp{()}." msgstr "" #. type: deftypevr #: doc/guix.texi:14754 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string auth-default-realm" msgstr "" #. type: deftypevr #: doc/guix.texi:14759 msgid "" "Default realm/domain to use if none was specified. This is used for both " "SASL realms and appending @@domain to username in plaintext logins. " "Defaults to @samp{\"\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14761 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string auth-username-chars" msgstr "" #. type: deftypevr #: doc/guix.texi:14768 msgid "" "List of allowed characters in username. If the user-given username contains " "a character not listed in here, the login automatically fails. This is just " "an extra check to make sure user can't exploit any potential quote escaping " "vulnerabilities with SQL/LDAP databases. If you want to allow all " "characters, set this value to empty. Defaults to " "@samp{\"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@@" "\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14770 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string auth-username-translation" msgstr "" #. type: deftypevr #: doc/guix.texi:14776 msgid "" "Username character translations before it's looked up from databases. The " "value contains series of from -> to characters. For example @samp{#@@/@@} " "means that @samp{#} and @samp{/} characters are translated to @samp{@@}. " "Defaults to @samp{\"\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14778 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string auth-username-format" msgstr "" #. type: deftypevr #: doc/guix.texi:14785 msgid "" "Username formatting before it's looked up from databases. You can use the " "standard variables here, e.g. %Lu would lowercase the username, %n would " "drop away the domain if it was given, or @samp{%n-AT-%d} would change the " "@samp{@@} into @samp{-AT-}. This translation is done after @samp{auth-" "username-translation} changes. Defaults to @samp{\"%Lu\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14787 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string auth-master-user-separator" msgstr "" #. type: deftypevr #: doc/guix.texi:14795 msgid "" "If you want to allow master users to log in by specifying the master " "username within the normal username string (i.e. not using SASL mechanism's " "support for it), you can specify the separator character here. The format " "is then . UW-IMAP uses @samp{*} as " "the separator, so that could be a good choice. Defaults to @samp{\"\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14797 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string auth-anonymous-username" msgstr "" #. type: deftypevr #: doc/guix.texi:14801 msgid "" "Username to use for users logging in with ANONYMOUS SASL mechanism. " "Defaults to @samp{\"anonymous\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14803 #, no-wrap msgid "{@code{dovecot-configuration} parameter} non-negative-integer auth-worker-max-count" msgstr "" #. type: deftypevr #: doc/guix.texi:14808 msgid "" "Maximum number of dovecot-auth worker processes. They're used to execute " "blocking passdb and userdb queries (e.g. MySQL and PAM). They're " "automatically created and destroyed as needed. Defaults to @samp{30}." msgstr "" #. type: deftypevr #: doc/guix.texi:14810 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string auth-gssapi-hostname" msgstr "" #. type: deftypevr #: doc/guix.texi:14815 msgid "" "Host name to use in GSSAPI principal names. The default is to use the name " "returned by gethostname(). Use @samp{$ALL} (with quotes) to allow all " "keytab entries. Defaults to @samp{\"\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14817 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string auth-krb5-keytab" msgstr "" #. type: deftypevr #: doc/guix.texi:14823 msgid "" "Kerberos keytab to use for the GSSAPI mechanism. Will use the system " "default (usually @file{/etc/krb5.keytab}) if not specified. You may need to " "change the auth service to run as root to be able to read this file. " "Defaults to @samp{\"\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14825 #, no-wrap msgid "{@code{dovecot-configuration} parameter} boolean auth-use-winbind?" msgstr "" #. type: deftypevr #: doc/guix.texi:14830 msgid "" "Do NTLM and GSS-SPNEGO authentication using Samba's winbind daemon and " "@samp{ntlm-auth} helper. . " "Defaults to @samp{#f}." msgstr "" #. type: deftypevr #: doc/guix.texi:14832 #, no-wrap msgid "{@code{dovecot-configuration} parameter} file-name auth-winbind-helper-path" msgstr "" #. type: deftypevr #: doc/guix.texi:14835 msgid "" "Path for Samba's @samp{ntlm-auth} helper binary. Defaults to @samp{\"/usr/" "bin/ntlm_auth\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14837 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string auth-failure-delay" msgstr "" #. type: deftypevr #: doc/guix.texi:14840 msgid "" "Time to delay before replying to failed authentications. Defaults to " "@samp{\"2 secs\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14842 #, no-wrap msgid "{@code{dovecot-configuration} parameter} boolean auth-ssl-require-client-cert?" msgstr "" #. type: deftypevr #: doc/guix.texi:14846 msgid "" "Require a valid SSL client certificate or the authentication fails. " "Defaults to @samp{#f}." msgstr "" #. type: deftypevr #: doc/guix.texi:14848 #, no-wrap msgid "{@code{dovecot-configuration} parameter} boolean auth-ssl-username-from-cert?" msgstr "" #. type: deftypevr #: doc/guix.texi:14853 msgid "" "Take the username from client's SSL certificate, using " "@code{X509_NAME_get_text_by_NID()} which returns the subject's DN's " "CommonName. Defaults to @samp{#f}." msgstr "" #. type: deftypevr #: doc/guix.texi:14855 #, no-wrap msgid "{@code{dovecot-configuration} parameter} space-separated-string-list auth-mechanisms" msgstr "" #. type: deftypevr #: doc/guix.texi:14861 msgid "" "List of wanted authentication mechanisms. Supported mechanisms are: " "@samp{plain}, @samp{login}, @samp{digest-md5}, @samp{cram-md5}, @samp{ntlm}, " "@samp{rpa}, @samp{apop}, @samp{anonymous}, @samp{gssapi}, @samp{otp}, " "@samp{skey}, and @samp{gss-spnego}. NOTE: See also @samp{disable-plaintext-" "auth} setting." msgstr "" #. type: deftypevr #: doc/guix.texi:14863 #, no-wrap msgid "{@code{dovecot-configuration} parameter} space-separated-string-list director-servers" msgstr "" #. type: deftypevr #: doc/guix.texi:14868 msgid "" "List of IPs or hostnames to all director servers, including ourself. Ports " "can be specified as ip:port. The default port is the same as what director " "service's @samp{inet-listener} is using. Defaults to @samp{()}." msgstr "" #. type: deftypevr #: doc/guix.texi:14870 #, no-wrap msgid "{@code{dovecot-configuration} parameter} space-separated-string-list director-mail-servers" msgstr "" #. type: deftypevr #: doc/guix.texi:14874 msgid "" "List of IPs or hostnames to all backend mail servers. Ranges are allowed " "too, like 10.0.0.10-10.0.0.30. Defaults to @samp{()}." msgstr "" #. type: deftypevr #: doc/guix.texi:14876 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string director-user-expire" msgstr "" #. type: deftypevr #: doc/guix.texi:14880 msgid "" "How long to redirect users to a specific server after it no longer has any " "connections. Defaults to @samp{\"15 min\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14882 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string director-username-hash" msgstr "" #. type: deftypevr #: doc/guix.texi:14887 msgid "" "How the username is translated before being hashed. Useful values include " "%Ln if user can log in with or without @@domain, %Ld if mailboxes are shared " "within domain. Defaults to @samp{\"%Lu\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14889 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string log-path" msgstr "" #. type: deftypevr #: doc/guix.texi:14893 msgid "" "Log file to use for error messages. @samp{syslog} logs to syslog, @samp{/" "dev/stderr} logs to stderr. Defaults to @samp{\"syslog\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14895 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string info-log-path" msgstr "" #. type: deftypevr #: doc/guix.texi:14899 msgid "" "Log file to use for informational messages. Defaults to @samp{log-path}. " "Defaults to @samp{\"\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14901 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string debug-log-path" msgstr "" #. type: deftypevr #: doc/guix.texi:14905 msgid "" "Log file to use for debug messages. Defaults to @samp{info-log-path}. " "Defaults to @samp{\"\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14907 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string syslog-facility" msgstr "" #. type: deftypevr #: doc/guix.texi:14912 msgid "" "Syslog facility to use if you're logging to syslog. Usually if you don't " "want to use @samp{mail}, you'll use local0..local7. Also other standard " "facilities are supported. Defaults to @samp{\"mail\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14914 #, no-wrap msgid "{@code{dovecot-configuration} parameter} boolean auth-verbose?" msgstr "" #. type: deftypevr #: doc/guix.texi:14918 msgid "" "Log unsuccessful authentication attempts and the reasons why they failed. " "Defaults to @samp{#f}." msgstr "" #. type: deftypevr #: doc/guix.texi:14920 #, no-wrap msgid "{@code{dovecot-configuration} parameter} boolean auth-verbose-passwords?" msgstr "" #. type: deftypevr #: doc/guix.texi:14927 msgid "" "In case of password mismatches, log the attempted password. Valid values " "are no, plain and sha1. sha1 can be useful for detecting brute force " "password attempts vs. user simply trying the same password over and over " "again. You can also truncate the value to n chars by appending \":n\" (e.g. " "sha1:6). Defaults to @samp{#f}." msgstr "" #. type: deftypevr #: doc/guix.texi:14929 #, no-wrap msgid "{@code{dovecot-configuration} parameter} boolean auth-debug?" msgstr "" #. type: deftypevr #: doc/guix.texi:14933 msgid "" "Even more verbose logging for debugging purposes. Shows for example SQL " "queries. Defaults to @samp{#f}." msgstr "" #. type: deftypevr #: doc/guix.texi:14935 #, no-wrap msgid "{@code{dovecot-configuration} parameter} boolean auth-debug-passwords?" msgstr "" #. type: deftypevr #: doc/guix.texi:14940 msgid "" "In case of password mismatches, log the passwords and used scheme so the " "problem can be debugged. Enabling this also enables @samp{auth-debug}. " "Defaults to @samp{#f}." msgstr "" #. type: deftypevr #: doc/guix.texi:14942 #, no-wrap msgid "{@code{dovecot-configuration} parameter} boolean mail-debug?" msgstr "" #. type: deftypevr #: doc/guix.texi:14946 msgid "" "Enable mail process debugging. This can help you figure out why Dovecot " "isn't finding your mails. Defaults to @samp{#f}." msgstr "" #. type: deftypevr #: doc/guix.texi:14948 #, no-wrap msgid "{@code{dovecot-configuration} parameter} boolean verbose-ssl?" msgstr "" #. type: deftypevr #: doc/guix.texi:14951 msgid "Show protocol level SSL errors. Defaults to @samp{#f}." msgstr "" #. type: deftypevr #: doc/guix.texi:14953 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string log-timestamp" msgstr "" #. type: deftypevr #: doc/guix.texi:14957 msgid "" "Prefix for each line written to log file. % codes are in strftime(3) " "format. Defaults to @samp{\"\\\"%b %d %H:%M:%S \\\"\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14959 #, no-wrap msgid "{@code{dovecot-configuration} parameter} space-separated-string-list login-log-format-elements" msgstr "" #. type: deftypevr #: doc/guix.texi:14963 msgid "" "List of elements we want to log. The elements which have a non-empty " "variable value are joined together to form a comma-separated string." msgstr "" #. type: deftypevr #: doc/guix.texi:14965 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string login-log-format" msgstr "" #. type: deftypevr #: doc/guix.texi:14969 msgid "" "Login log format. %s contains @samp{login-log-format-elements} string, %$ " "contains the data we want to log. Defaults to @samp{\"%$: %s\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14971 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string mail-log-prefix" msgstr "" #. type: deftypevr #: doc/guix.texi:14975 msgid "" "Log prefix for mail processes. See doc/wiki/Variables.txt for list of " "possible variables you can use. Defaults to @samp{\"\\\"%s(%u)<%@{pid@}><" "%@{session@}>: \\\"\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14977 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string deliver-log-format" msgstr "" #. type: deftypevr #: doc/guix.texi:14979 msgid "Format to use for logging mail deliveries. You can use variables:" msgstr "" #. type: item #: doc/guix.texi:14980 #, no-wrap msgid "%$" msgstr "" #. type: table #: doc/guix.texi:14982 msgid "Delivery status message (e.g. @samp{saved to INBOX})" msgstr "" #. type: item #: doc/guix.texi:14982 #, no-wrap msgid "%m" msgstr "" #. type: table #: doc/guix.texi:14984 msgid "Message-ID" msgstr "" #. type: item #: doc/guix.texi:14984 doc/guix.texi:15516 #, no-wrap msgid "%s" msgstr "" #. type: table #: doc/guix.texi:14986 msgid "Subject" msgstr "" #. type: item #: doc/guix.texi:14986 #, no-wrap msgid "%f" msgstr "" #. type: table #: doc/guix.texi:14988 msgid "From address" msgstr "" #. type: table #: doc/guix.texi:14990 msgid "Physical size" msgstr "" #. type: item #: doc/guix.texi:14990 #, no-wrap msgid "%w" msgstr "" #. type: table #: doc/guix.texi:14992 msgid "Virtual size." msgstr "" #. type: deftypevr #: doc/guix.texi:14994 msgid "Defaults to @samp{\"msgid=%m: %$\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:14996 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string mail-location" msgstr "" #. type: deftypevr #: doc/guix.texi:15001 msgid "" "Location for users' mailboxes. The default is empty, which means that " "Dovecot tries to find the mailboxes automatically. This won't work if the " "user doesn't yet have any mail, so you should explicitly tell Dovecot the " "full location." msgstr "" #. type: deftypevr #: doc/guix.texi:15007 msgid "" "If you're using mbox, giving a path to the INBOX file (e.g. /var/mail/%u) " "isn't enough. You'll also need to tell Dovecot where the other mailboxes " "are kept. This is called the \"root mail directory\", and it must be the " "first path given in the @samp{mail-location} setting." msgstr "" #. type: deftypevr #: doc/guix.texi:15009 msgid "There are a few special variables you can use, eg.:" msgstr "" #. type: table #: doc/guix.texi:15013 msgid "username" msgstr "" #. type: item #: doc/guix.texi:15013 doc/guix.texi:15512 #, no-wrap msgid "%n" msgstr "" #. type: table #: doc/guix.texi:15015 msgid "user part in user@@domain, same as %u if there's no domain" msgstr "" #. type: item #: doc/guix.texi:15015 #, no-wrap msgid "%d" msgstr "" #. type: table #: doc/guix.texi:15017 msgid "domain part in user@@domain, empty if there's no domain" msgstr "" #. type: item #: doc/guix.texi:15017 #, no-wrap msgid "%h" msgstr "" #. type: table #: doc/guix.texi:15019 msgid "home director" msgstr "" #. type: deftypevr #: doc/guix.texi:15022 msgid "See doc/wiki/Variables.txt for full list. Some examples:" msgstr "" #. type: item #: doc/guix.texi:15023 #, no-wrap msgid "maildir:~/Maildir" msgstr "" #. type: item #: doc/guix.texi:15024 #, no-wrap msgid "mbox:~/mail:INBOX=/var/mail/%u" msgstr "" #. type: item #: doc/guix.texi:15025 #, no-wrap msgid "mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%" msgstr "" #. type: deftypevr #: doc/guix.texi:15030 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string mail-uid" msgstr "" #. type: deftypevr #: doc/guix.texi:15035 msgid "" "System user and group used to access mails. If you use multiple, userdb can " "override these by returning uid or gid fields. You can use either numbers " "or names. . Defaults to @samp{\"\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:15037 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string mail-gid" msgstr "" #. type: deftypevr #: doc/guix.texi:15042 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string mail-privileged-group" msgstr "" #. type: deftypevr #: doc/guix.texi:15048 msgid "" "Group to enable temporarily for privileged operations. Currently this is " "used only with INBOX when either its initial creation or dotlocking fails. " "Typically this is set to \"mail\" to give access to /var/mail. Defaults to " "@samp{\"\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:15050 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string mail-access-groups" msgstr "" #. type: deftypevr #: doc/guix.texi:15058 msgid "" "Grant access to these supplementary groups for mail processes. Typically " "these are used to set up access to shared mailboxes. Note that it may be " "dangerous to set these if users can create symlinks (e.g. if \"mail\" group " "is set here, ln -s /var/mail ~/mail/var could allow a user to delete others' " "mailboxes, or ln -s /secret/shared/box ~/mail/mybox would allow reading " "it). Defaults to @samp{\"\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:15060 #, no-wrap msgid "{@code{dovecot-configuration} parameter} boolean mail-full-filesystem-access?" msgstr "" #. type: deftypevr #: doc/guix.texi:15066 msgid "" "Allow full file system access to clients. There's no access checks other " "than what the operating system does for the active UID/GID. It works with " "both maildir and mboxes, allowing you to prefix mailboxes names with e.g. /" "path/ or ~user/. Defaults to @samp{#f}." msgstr "" #. type: deftypevr #: doc/guix.texi:15068 #, no-wrap msgid "{@code{dovecot-configuration} parameter} boolean mmap-disable?" msgstr "" #. type: deftypevr #: doc/guix.texi:15072 msgid "" "Don't use mmap() at all. This is required if you store indexes to shared " "file systems (NFS or clustered file system). Defaults to @samp{#f}." msgstr "" #. type: deftypevr #: doc/guix.texi:15074 #, no-wrap msgid "{@code{dovecot-configuration} parameter} boolean dotlock-use-excl?" msgstr "" #. type: deftypevr #: doc/guix.texi:15079 msgid "" "Rely on @samp{O_EXCL} to work when creating dotlock files. NFS supports " "@samp{O_EXCL} since version 3, so this should be safe to use nowadays by " "default. Defaults to @samp{#t}." msgstr "" #. type: deftypevr #: doc/guix.texi:15081 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string mail-fsync" msgstr "" #. type: deftypevr #: doc/guix.texi:15083 msgid "When to use fsync() or fdatasync() calls:" msgstr "" #. type: item #: doc/guix.texi:15084 #, no-wrap msgid "optimized" msgstr "" #. type: table #: doc/guix.texi:15086 msgid "Whenever necessary to avoid losing important data" msgstr "" #. type: table #: doc/guix.texi:15088 msgid "Useful with e.g. NFS when write()s are delayed" msgstr "" #. type: table #: doc/guix.texi:15090 msgid "Never use it (best performance, but crashes can lose data)." msgstr "" #. type: deftypevr #: doc/guix.texi:15092 msgid "Defaults to @samp{\"optimized\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:15094 #, no-wrap msgid "{@code{dovecot-configuration} parameter} boolean mail-nfs-storage?" msgstr "" #. type: deftypevr #: doc/guix.texi:15099 msgid "" "Mail storage exists in NFS. Set this to yes to make Dovecot flush NFS " "caches whenever needed. If you're using only a single mail server this " "isn't needed. Defaults to @samp{#f}." msgstr "" #. type: deftypevr #: doc/guix.texi:15101 #, no-wrap msgid "{@code{dovecot-configuration} parameter} boolean mail-nfs-index?" msgstr "" #. type: deftypevr #: doc/guix.texi:15105 msgid "" "Mail index files also exist in NFS. Setting this to yes requires @samp{mmap-" "disable? #t} and @samp{fsync-disable? #f}. Defaults to @samp{#f}." msgstr "" #. type: deftypevr #: doc/guix.texi:15107 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string lock-method" msgstr "" #. type: deftypevr #: doc/guix.texi:15113 msgid "" "Locking method for index files. Alternatives are fcntl, flock and dotlock. " "Dotlocking uses some tricks which may create more disk I/O than other " "locking methods. NFS users: flock doesn't work, remember to change " "@samp{mmap-disable}. Defaults to @samp{\"fcntl\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:15115 #, no-wrap msgid "{@code{dovecot-configuration} parameter} file-name mail-temp-dir" msgstr "" #. type: deftypevr #: doc/guix.texi:15119 msgid "" "Directory in which LDA/LMTP temporarily stores incoming mails >128 kB. " "Defaults to @samp{\"/tmp\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:15121 #, no-wrap msgid "{@code{dovecot-configuration} parameter} non-negative-integer first-valid-uid" msgstr "" #. type: deftypevr #: doc/guix.texi:15127 msgid "" "Valid UID range for users. This is mostly to make sure that users can't log " "in as daemons or other system users. Note that denying root logins is " "hardcoded to dovecot binary and can't be done even if @samp{first-valid-uid} " "is set to 0. Defaults to @samp{500}." msgstr "" #. type: deftypevr #: doc/guix.texi:15129 #, no-wrap msgid "{@code{dovecot-configuration} parameter} non-negative-integer last-valid-uid" msgstr "" #. type: deftypevr #: doc/guix.texi:15134 #, no-wrap msgid "{@code{dovecot-configuration} parameter} non-negative-integer first-valid-gid" msgstr "" #. type: deftypevr #: doc/guix.texi:15139 msgid "" "Valid GID range for users. Users having non-valid GID as primary group ID " "aren't allowed to log in. If user belongs to supplementary groups with non-" "valid GIDs, those groups are not set. Defaults to @samp{1}." msgstr "" #. type: deftypevr #: doc/guix.texi:15141 #, no-wrap msgid "{@code{dovecot-configuration} parameter} non-negative-integer last-valid-gid" msgstr "" #. type: deftypevr #: doc/guix.texi:15146 #, no-wrap msgid "{@code{dovecot-configuration} parameter} non-negative-integer mail-max-keyword-length" msgstr "" #. type: deftypevr #: doc/guix.texi:15150 msgid "" "Maximum allowed length for mail keyword name. It's only forced when trying " "to create new keywords. Defaults to @samp{50}." msgstr "" #. type: deftypevr #: doc/guix.texi:15152 #, no-wrap msgid "{@code{dovecot-configuration} parameter} colon-separated-file-name-list valid-chroot-dirs" msgstr "" #. type: deftypevr #: doc/guix.texi:15162 msgid "" "List of directories under which chrooting is allowed for mail processes (i." "e. /var/mail will allow chrooting to /var/mail/foo/bar too). This setting " "doesn't affect @samp{login-chroot} @samp{mail-chroot} or auth chroot " "settings. If this setting is empty, \"/./\" in home dirs are ignored. " "WARNING: Never add directories here which local users can modify, that may " "lead to root exploit. Usually this should be done only if you don't allow " "shell access for users. . Defaults to @samp{()}." msgstr "" #. type: deftypevr #: doc/guix.texi:15164 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string mail-chroot" msgstr "" #. type: deftypevr #: doc/guix.texi:15173 msgid "" "Default chroot directory for mail processes. This can be overridden for " "specific users in user database by giving /./ in user's home directory (e." "g. /home/./user chroots into /home). Note that usually there is no real " "need to do chrooting, Dovecot doesn't allow users to access files outside " "their mail directory anyway. If your home directories are prefixed with the " "chroot directory, append \"/.\" to @samp{mail-chroot}. . Defaults to @samp{\"\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:15175 #, no-wrap msgid "{@code{dovecot-configuration} parameter} file-name auth-socket-path" msgstr "" #. type: deftypevr #: doc/guix.texi:15179 msgid "" "UNIX socket path to master authentication server to find users. This is " "used by imap (for shared users) and lda. Defaults to @samp{\"/var/run/" "dovecot/auth-userdb\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:15181 #, no-wrap msgid "{@code{dovecot-configuration} parameter} file-name mail-plugin-dir" msgstr "" #. type: deftypevr #: doc/guix.texi:15184 msgid "" "Directory where to look up mail plugins. Defaults to @samp{\"/usr/lib/" "dovecot\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:15186 #, no-wrap msgid "{@code{dovecot-configuration} parameter} space-separated-string-list mail-plugins" msgstr "" #. type: deftypevr #: doc/guix.texi:15190 msgid "" "List of plugins to load for all services. Plugins specific to IMAP, LDA, " "etc. are added to this list in their own .conf files. Defaults to @samp{()}." msgstr "" #. type: deftypevr #: doc/guix.texi:15192 #, no-wrap msgid "{@code{dovecot-configuration} parameter} non-negative-integer mail-cache-min-mail-count" msgstr "" #. type: deftypevr #: doc/guix.texi:15197 msgid "" "The minimum number of mails in a mailbox before updates are done to cache " "file. This allows optimizing Dovecot's behavior to do less disk writes at " "the cost of more disk reads. Defaults to @samp{0}." msgstr "" #. type: deftypevr #: doc/guix.texi:15199 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string mailbox-idle-check-interval" msgstr "" #. type: deftypevr #: doc/guix.texi:15206 msgid "" "When IDLE command is running, mailbox is checked once in a while to see if " "there are any new mails or other changes. This setting defines the minimum " "time to wait between those checks. Dovecot can also use dnotify, inotify " "and kqueue to find out immediately when changes occur. Defaults to " "@samp{\"30 secs\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:15208 #, no-wrap msgid "{@code{dovecot-configuration} parameter} boolean mail-save-crlf?" msgstr "" #. type: deftypevr #: doc/guix.texi:15215 msgid "" "Save mails with CR+LF instead of plain LF. This makes sending those mails " "take less CPU, especially with sendfile() syscall with Linux and FreeBSD. " "But it also creates a bit more disk I/O which may just make it slower. Also " "note that if other software reads the mboxes/maildirs, they may handle the " "extra CRs wrong and cause problems. Defaults to @samp{#f}." msgstr "" #. type: deftypevr #: doc/guix.texi:15217 #, no-wrap msgid "{@code{dovecot-configuration} parameter} boolean maildir-stat-dirs?" msgstr "" #. type: deftypevr #: doc/guix.texi:15225 msgid "" "By default LIST command returns all entries in maildir beginning with a " "dot. Enabling this option makes Dovecot return only entries which are " "directories. This is done by stat()ing each entry, so it causes more disk I/" "O. (For systems setting struct @samp{dirent->d_type} this check is free and " "it's done always regardless of this setting). Defaults to @samp{#f}." msgstr "" #. type: deftypevr #: doc/guix.texi:15227 #, no-wrap msgid "{@code{dovecot-configuration} parameter} boolean maildir-copy-with-hardlinks?" msgstr "" #. type: deftypevr #: doc/guix.texi:15232 msgid "" "When copying a message, do it with hard links whenever possible. This makes " "the performance much better, and it's unlikely to have any side effects. " "Defaults to @samp{#t}." msgstr "" #. type: deftypevr #: doc/guix.texi:15234 #, no-wrap msgid "{@code{dovecot-configuration} parameter} boolean maildir-very-dirty-syncs?" msgstr "" #. type: deftypevr #: doc/guix.texi:15239 msgid "" "Assume Dovecot is the only MUA accessing Maildir: Scan cur/ directory only " "when its mtime changes unexpectedly or when we can't find the mail " "otherwise. Defaults to @samp{#f}." msgstr "" #. type: deftypevr #: doc/guix.texi:15241 #, no-wrap msgid "{@code{dovecot-configuration} parameter} space-separated-string-list mbox-read-locks" msgstr "" #. type: deftypevr #: doc/guix.texi:15244 msgid "" "Which locking methods to use for locking mbox. There are four available:" msgstr "" #. type: item #: doc/guix.texi:15246 #, no-wrap msgid "dotlock" msgstr "" #. type: table #: doc/guix.texi:15250 msgid "" "Create .lock file. This is the oldest and most NFS-safe solution. " "If you want to use /var/mail/ like directory, the users will need write " "access to that directory." msgstr "" #. type: item #: doc/guix.texi:15250 #, no-wrap msgid "dotlock-try" msgstr "" #. type: table #: doc/guix.texi:15253 msgid "" "Same as dotlock, but if it fails because of permissions or because there " "isn't enough disk space, just skip it." msgstr "" #. type: item #: doc/guix.texi:15253 #, no-wrap msgid "fcntl" msgstr "" #. type: table #: doc/guix.texi:15255 msgid "Use this if possible. Works with NFS too if lockd is used." msgstr "" #. type: item #: doc/guix.texi:15255 #, no-wrap msgid "flock" msgstr "" #. type: table #: doc/guix.texi:15257 doc/guix.texi:15259 msgid "May not exist in all systems. Doesn't work with NFS." msgstr "" #. type: item #: doc/guix.texi:15257 #, no-wrap msgid "lockf" msgstr "" #. type: deftypevr #: doc/guix.texi:15265 msgid "" "You can use multiple locking methods; if you do the order they're declared " "in is important to avoid deadlocks if other MTAs/MUAs are using multiple " "locking methods as well. Some operating systems don't allow using some of " "them simultaneously." msgstr "" #. type: deftypevr #: doc/guix.texi:15267 #, no-wrap msgid "{@code{dovecot-configuration} parameter} space-separated-string-list mbox-write-locks" msgstr "" #. type: deftypevr #: doc/guix.texi:15271 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string mbox-lock-timeout" msgstr "" #. type: deftypevr #: doc/guix.texi:15274 msgid "" "Maximum time to wait for lock (all of them) before aborting. Defaults to " "@samp{\"5 mins\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:15276 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string mbox-dotlock-change-timeout" msgstr "" #. type: deftypevr #: doc/guix.texi:15280 msgid "" "If dotlock exists but the mailbox isn't modified in any way, override the " "lock file after this much time. Defaults to @samp{\"2 mins\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:15282 #, no-wrap msgid "{@code{dovecot-configuration} parameter} boolean mbox-dirty-syncs?" msgstr "" #. type: deftypevr #: doc/guix.texi:15293 msgid "" "When mbox changes unexpectedly we have to fully read it to find out what " "changed. If the mbox is large this can take a long time. Since the change " "is usually just a newly appended mail, it'd be faster to simply read the new " "mails. If this setting is enabled, Dovecot does this but still safely " "fallbacks to re-reading the whole mbox file whenever something in mbox isn't " "how it's expected to be. The only real downside to this setting is that if " "some other MUA changes message flags, Dovecot doesn't notice it " "immediately. Note that a full sync is done with SELECT, EXAMINE, EXPUNGE " "and CHECK commands. Defaults to @samp{#t}." msgstr "" #. type: deftypevr #: doc/guix.texi:15295 #, no-wrap msgid "{@code{dovecot-configuration} parameter} boolean mbox-very-dirty-syncs?" msgstr "" #. type: deftypevr #: doc/guix.texi:15300 msgid "" "Like @samp{mbox-dirty-syncs}, but don't do full syncs even with SELECT, " "EXAMINE, EXPUNGE or CHECK commands. If this is set, @samp{mbox-dirty-syncs} " "is ignored. Defaults to @samp{#f}." msgstr "" #. type: deftypevr #: doc/guix.texi:15302 #, no-wrap msgid "{@code{dovecot-configuration} parameter} boolean mbox-lazy-writes?" msgstr "" #. type: deftypevr #: doc/guix.texi:15308 msgid "" "Delay writing mbox headers until doing a full write sync (EXPUNGE and CHECK " "commands and when closing the mailbox). This is especially useful for POP3 " "where clients often delete all mails. The downside is that our changes " "aren't immediately visible to other MUAs. Defaults to @samp{#t}." msgstr "" #. type: deftypevr #: doc/guix.texi:15310 #, no-wrap msgid "{@code{dovecot-configuration} parameter} non-negative-integer mbox-min-index-size" msgstr "" #. type: deftypevr #: doc/guix.texi:15315 msgid "" "If mbox size is smaller than this (e.g. 100k), don't write index files. If " "an index file already exists it's still read, just not updated. Defaults to " "@samp{0}." msgstr "" #. type: deftypevr #: doc/guix.texi:15317 #, no-wrap msgid "{@code{dovecot-configuration} parameter} non-negative-integer mdbox-rotate-size" msgstr "" #. type: deftypevr #: doc/guix.texi:15320 msgid "" "Maximum dbox file size until it's rotated. Defaults to @samp{10000000}." msgstr "" #. type: deftypevr #: doc/guix.texi:15322 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string mdbox-rotate-interval" msgstr "" #. type: deftypevr #: doc/guix.texi:15327 msgid "" "Maximum dbox file age until it's rotated. Typically in days. Day begins " "from midnight, so 1d = today, 2d = yesterday, etc. 0 = check disabled. " "Defaults to @samp{\"1d\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:15329 #, no-wrap msgid "{@code{dovecot-configuration} parameter} boolean mdbox-preallocate-space?" msgstr "" #. type: deftypevr #: doc/guix.texi:15334 msgid "" "When creating new mdbox files, immediately preallocate their size to " "@samp{mdbox-rotate-size}. This setting currently works only in Linux with " "some file systems (ext4, xfs). Defaults to @samp{#f}." msgstr "" #. type: deftypevr #: doc/guix.texi:15336 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string mail-attachment-dir" msgstr "" #. type: deftypevr #: doc/guix.texi:15340 msgid "" "sdbox and mdbox support saving mail attachments to external files, which " "also allows single instance storage for them. Other backends don't support " "this for now." msgstr "" #. type: deftypevr #: doc/guix.texi:15342 msgid "" "WARNING: This feature hasn't been tested much yet. Use at your own risk." msgstr "" #. type: deftypevr #: doc/guix.texi:15345 msgid "" "Directory root where to store mail attachments. Disabled, if empty. " "Defaults to @samp{\"\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:15347 #, no-wrap msgid "{@code{dovecot-configuration} parameter} non-negative-integer mail-attachment-min-size" msgstr "" #. type: deftypevr #: doc/guix.texi:15352 msgid "" "Attachments smaller than this aren't saved externally. It's also possible " "to write a plugin to disable saving specific attachments externally. " "Defaults to @samp{128000}." msgstr "" #. type: deftypevr #: doc/guix.texi:15354 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string mail-attachment-fs" msgstr "" #. type: deftypevr #: doc/guix.texi:15356 msgid "File system backend to use for saving attachments:" msgstr "" #. type: item #: doc/guix.texi:15357 #, no-wrap msgid "posix" msgstr "" #. type: table #: doc/guix.texi:15359 msgid "No SiS done by Dovecot (but this might help FS's own deduplication)" msgstr "" #. type: item #: doc/guix.texi:15359 #, no-wrap msgid "sis posix" msgstr "" #. type: table #: doc/guix.texi:15361 msgid "SiS with immediate byte-by-byte comparison during saving" msgstr "" #. type: item #: doc/guix.texi:15361 #, no-wrap msgid "sis-queue posix" msgstr "" #. type: table #: doc/guix.texi:15363 msgid "SiS with delayed comparison and deduplication." msgstr "" #. type: deftypevr #: doc/guix.texi:15365 msgid "Defaults to @samp{\"sis posix\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:15367 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string mail-attachment-hash" msgstr "" #. type: deftypevr #: doc/guix.texi:15373 msgid "" "Hash format to use in attachment filenames. You can add any text and " "variables: @code{%@{md4@}}, @code{%@{md5@}}, @code{%@{sha1@}}, " "@code{%@{sha256@}}, @code{%@{sha512@}}, @code{%@{size@}}. Variables can be " "truncated, e.g. @code{%@{sha256:80@}} returns only first 80 bits. Defaults " "to @samp{\"%@{sha1@}\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:15375 #, no-wrap msgid "{@code{dovecot-configuration} parameter} non-negative-integer default-process-limit" msgstr "" #. type: deftypevr #: doc/guix.texi:15380 #, no-wrap msgid "{@code{dovecot-configuration} parameter} non-negative-integer default-client-limit" msgstr "" #. type: deftypevr #: doc/guix.texi:15383 doc/guix.texi:19707 msgid "Defaults to @samp{1000}." msgstr "" #. type: deftypevr #: doc/guix.texi:15385 #, no-wrap msgid "{@code{dovecot-configuration} parameter} non-negative-integer default-vsz-limit" msgstr "" #. type: deftypevr #: doc/guix.texi:15390 msgid "" "Default VSZ (virtual memory size) limit for service processes. This is " "mainly intended to catch and kill processes that leak memory before they eat " "up everything. Defaults to @samp{256000000}." msgstr "" #. type: deftypevr #: doc/guix.texi:15392 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string default-login-user" msgstr "" #. type: deftypevr #: doc/guix.texi:15397 msgid "" "Login user is internally used by login processes. This is the most " "untrusted user in Dovecot system. It shouldn't have access to anything at " "all. Defaults to @samp{\"dovenull\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:15399 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string default-internal-user" msgstr "" #. type: deftypevr #: doc/guix.texi:15404 msgid "" "Internal user is used by unprivileged processes. It should be separate from " "login user, so that login processes can't disturb other processes. Defaults " "to @samp{\"dovecot\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:15406 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string ssl?" msgstr "" #. type: deftypevr #: doc/guix.texi:15409 msgid "" "SSL/TLS support: yes, no, required. . Defaults to " "@samp{\"required\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:15411 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string ssl-cert" msgstr "" #. type: deftypevr #: doc/guix.texi:15414 msgid "" "PEM encoded X.509 SSL/TLS certificate (public key). Defaults to @samp{\" was automatically rejected:%n%r\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:15524 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string recipient-delimiter" msgstr "" #. type: deftypevr #: doc/guix.texi:15528 msgid "" "Delimiter character between local-part and detail in email address. " "Defaults to @samp{\"+\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:15530 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string lda-original-recipient-header" msgstr "" #. type: deftypevr #: doc/guix.texi:15536 msgid "" "Header where the original recipient address (SMTP's RCPT TO: address) is " "taken from if not available elsewhere. With dovecot-lda -a parameter " "overrides this. A commonly used header for this is X-Original-To. Defaults " "to @samp{\"\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:15538 #, no-wrap msgid "{@code{dovecot-configuration} parameter} boolean lda-mailbox-autocreate?" msgstr "" #. type: deftypevr #: doc/guix.texi:15542 msgid "" "Should saving a mail to a nonexistent mailbox automatically create it?. " "Defaults to @samp{#f}." msgstr "" #. type: deftypevr #: doc/guix.texi:15544 #, no-wrap msgid "{@code{dovecot-configuration} parameter} boolean lda-mailbox-autosubscribe?" msgstr "" #. type: deftypevr #: doc/guix.texi:15548 msgid "" "Should automatically created mailboxes be also automatically subscribed?. " "Defaults to @samp{#f}." msgstr "" #. type: deftypevr #: doc/guix.texi:15550 #, no-wrap msgid "{@code{dovecot-configuration} parameter} non-negative-integer imap-max-line-length" msgstr "" #. type: deftypevr #: doc/guix.texi:15556 msgid "" "Maximum IMAP command line length. Some clients generate very long command " "lines with huge mailboxes, so you may need to raise this if you get \"Too " "long argument\" or \"IMAP command line too large\" errors often. Defaults " "to @samp{64000}." msgstr "" #. type: deftypevr #: doc/guix.texi:15558 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string imap-logout-format" msgstr "" #. type: deftypevr #: doc/guix.texi:15560 msgid "IMAP logout format string:" msgstr "" #. type: item #: doc/guix.texi:15561 #, no-wrap msgid "%i" msgstr "" #. type: table #: doc/guix.texi:15563 msgid "total number of bytes read from client" msgstr "" #. type: item #: doc/guix.texi:15563 #, no-wrap msgid "%o" msgstr "" #. type: table #: doc/guix.texi:15565 msgid "total number of bytes sent to client." msgstr "" #. type: deftypevr #: doc/guix.texi:15568 msgid "" "See @file{doc/wiki/Variables.txt} for a list of all the variables you can " "use. Defaults to @samp{\"in=%i out=%o deleted=%@{deleted@} expunged=" "%@{expunged@} trashed=%@{trashed@} hdr_count=%@{fetch_hdr_count@} hdr_bytes=" "%@{fetch_hdr_bytes@} body_count=%@{fetch_body_count@} body_bytes=" "%@{fetch_body_bytes@}\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:15570 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string imap-capability" msgstr "" #. type: deftypevr #: doc/guix.texi:15574 msgid "" "Override the IMAP CAPABILITY response. If the value begins with '+', add " "the given capabilities on top of the defaults (e.g. +XFOO XBAR). Defaults " "to @samp{\"\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:15576 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string imap-idle-notify-interval" msgstr "" #. type: deftypevr #: doc/guix.texi:15580 msgid "" "How long to wait between \"OK Still here\" notifications when client is " "IDLEing. Defaults to @samp{\"2 mins\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:15582 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string imap-id-send" msgstr "" #. type: deftypevr #: doc/guix.texi:15588 msgid "" "ID field names and values to send to clients. Using * as the value makes " "Dovecot use the default value. The following fields have default values " "currently: name, version, os, os-version, support-url, support-email. " "Defaults to @samp{\"\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:15590 #, no-wrap msgid "{@code{dovecot-configuration} parameter} string imap-id-log" msgstr "" #. type: deftypevr #: doc/guix.texi:15593 msgid "" "ID fields sent by client to log. * means everything. Defaults to " "@samp{\"\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:15595 #, no-wrap msgid "{@code{dovecot-configuration} parameter} space-separated-string-list imap-client-workarounds" msgstr "" #. type: deftypevr #: doc/guix.texi:15597 msgid "Workarounds for various client bugs:" msgstr "" #. type: item #: doc/guix.texi:15599 #, no-wrap msgid "delay-newmail" msgstr "" #. type: table #: doc/guix.texi:15606 msgid "" "Send EXISTS/RECENT new mail notifications only when replying to NOOP and " "CHECK commands. Some clients ignore them otherwise, for example OSX Mail " "(' before setting it here, to get a feel for which cipher suites you " "will get. After setting this option, it is recommend that you inspect your " "Murmur log to ensure that Murmur is using the cipher suites that you " "expected it to." msgstr "" #. type: table #: doc/guix.texi:16391 msgid "" "Note: Changing this option may impact the backwards compatibility of your " "Murmur server, and can remove the ability for older Mumble clients to be " "able to connect to it." msgstr "" #. type: item #: doc/guix.texi:16392 #, no-wrap msgid "@code{public-registration} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:16394 msgid "" "Must be a @code{} record or " "@code{#f}." msgstr "" #. type: table #: doc/guix.texi:16399 msgid "" "You can optionally register your server in the public server list that the " "@code{mumble} client shows on startup. You cannot register your server if " "you have set a @code{server-password}, or set @code{allow-ping} to @code{#f}." msgstr "" #. type: table #: doc/guix.texi:16401 msgid "It might take a few hours until it shows up in the public list." msgstr "" #. type: item #: doc/guix.texi:16402 doc/guix.texi:17036 #, no-wrap msgid "@code{file} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:16404 msgid "Optional alternative override for this configuration." msgstr "" #. type: deftp #: doc/guix.texi:16407 #, no-wrap msgid "{Data Type} murmur-public-registration-configuration" msgstr "" #. type: deftp #: doc/guix.texi:16409 msgid "Configuration for public registration of a murmur service." msgstr "" #. type: table #: doc/guix.texi:16413 msgid "" "This is a display name for your server. Not to be confused with the hostname." msgstr "" #. type: itemx #: doc/guix.texi:16414 doc/guix.texi:21859 #, no-wrap msgid "password" msgstr "" #. type: table #: doc/guix.texi:16417 msgid "" "A password to identify your registration. Subsequent updates will need the " "same password. Don't lose your password." msgstr "" #. type: code{#1} #: doc/guix.texi:16418 #, no-wrap msgid "url" msgstr "" #. type: table #: doc/guix.texi:16421 msgid "" "This should be a @code{http://} or @code{https://} link to your web site." msgstr "" #. type: item #: doc/guix.texi:16422 #, no-wrap msgid "@code{hostname} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:16425 msgid "" "By default your server will be listed by its IP address. If it is set your " "server will be linked by this host name instead." msgstr "" #. type: subsubheading #: doc/guix.texi:16433 #, no-wrap msgid "Tailon Service" msgstr "" #. type: Plain text #: doc/guix.texi:16437 msgid "" "@uref{https://tailon.readthedocs.io/, Tailon} is a web application for " "viewing and searching log files." msgstr "" #. type: Plain text #: doc/guix.texi:16440 msgid "" "The following example will configure the service with default values. By " "default, Tailon can be accessed on port 8080 (@code{http://localhost:8080})." msgstr "" #. type: example #: doc/guix.texi:16443 #, no-wrap msgid "(service tailon-service-type)\n" msgstr "" #. type: Plain text #: doc/guix.texi:16447 msgid "" "The following example customises more of the Tailon configuration, adding " "@command{sed} to the list of allowed commands." msgstr "" #. type: example #: doc/guix.texi:16454 #, no-wrap msgid "" "(service tailon-service-type\n" " (tailon-configuration\n" " (config-file\n" " (tailon-configuration-file\n" " (allowed-commands '(\"tail\" \"grep\" \"awk\" \"sed\"))))))\n" msgstr "" #. type: deftp #: doc/guix.texi:16457 #, no-wrap msgid "{Data Type} tailon-configuration" msgstr "" #. type: deftp #: doc/guix.texi:16460 msgid "" "Data type representing the configuration of Tailon. This type has the " "following parameters:" msgstr "" #. type: item #: doc/guix.texi:16462 #, no-wrap msgid "@code{config-file} (default: @code{(tailon-configuration-file)})" msgstr "" #. type: table #: doc/guix.texi:16466 msgid "" "The configuration file to use for Tailon. This can be set to a @dfn{tailon-" "configuration-file} record value, or any gexp (@pxref{G-Expressions})." msgstr "" #. type: table #: doc/guix.texi:16469 msgid "" "For example, to instead use a local file, the @code{local-file} function can " "be used:" msgstr "" #. type: example #: doc/guix.texi:16474 #, no-wrap msgid "" "(service tailon-service-type\n" " (tailon-configuration\n" " (config-file (local-file \"./my-tailon.conf\"))))\n" msgstr "" #. type: item #: doc/guix.texi:16476 #, no-wrap msgid "@code{package} (default: @code{tailon})" msgstr "" #. type: table #: doc/guix.texi:16478 msgid "The tailon package to use." msgstr "" #. type: deftp #: doc/guix.texi:16482 #, no-wrap msgid "{Data Type} tailon-configuration-file" msgstr "" #. type: deftp #: doc/guix.texi:16485 msgid "" "Data type representing the configuration options for Tailon. This type has " "the following parameters:" msgstr "" #. type: item #: doc/guix.texi:16487 #, no-wrap msgid "@code{files} (default: @code{(list \"/var/log\")})" msgstr "" #. type: table #: doc/guix.texi:16492 msgid "" "List of files to display. The list can include strings for a single file or " "directory, or a list, where the first item is the name of a subsection, and " "the remaining items are the files or directories in that subsection." msgstr "" #. type: item #: doc/guix.texi:16493 #, no-wrap msgid "@code{bind} (default: @code{\"localhost:8080\"})" msgstr "" #. type: table #: doc/guix.texi:16495 msgid "Address and port to which Tailon should bind on." msgstr "" #. type: item #: doc/guix.texi:16496 #, no-wrap msgid "@code{relative-root} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:16498 msgid "URL path to use for Tailon, set to @code{#f} to not use a path." msgstr "" #. type: item #: doc/guix.texi:16499 #, no-wrap msgid "@code{allow-transfers?} (default: @code{#t})" msgstr "" #. type: table #: doc/guix.texi:16501 msgid "Allow downloading the log files in the web interface." msgstr "" #. type: item #: doc/guix.texi:16502 #, no-wrap msgid "@code{follow-names?} (default: @code{#t})" msgstr "" #. type: table #: doc/guix.texi:16504 msgid "Allow tailing of not-yet existent files." msgstr "" #. type: item #: doc/guix.texi:16505 #, no-wrap msgid "@code{tail-lines} (default: @code{200})" msgstr "" #. type: table #: doc/guix.texi:16507 msgid "Number of lines to read initially from each file." msgstr "" #. type: item #: doc/guix.texi:16508 #, no-wrap msgid "@code{allowed-commands} (default: @code{(list \"tail\" \"grep\" \"awk\")})" msgstr "" #. type: table #: doc/guix.texi:16510 msgid "Commands to allow running. By default, @code{sed} is disabled." msgstr "" #. type: item #: doc/guix.texi:16511 #, no-wrap msgid "@code{debug?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:16513 msgid "Set @code{debug?} to @code{#t} to show debug messages." msgstr "" #. type: item #: doc/guix.texi:16514 #, no-wrap msgid "@code{wrap-lines} (default: @code{#t})" msgstr "" #. type: table #: doc/guix.texi:16518 msgid "" "Initial line wrapping state in the web interface. Set to @code{#t} to " "initially wrap lines (the default), or to @code{#f} to initially not wrap " "lines." msgstr "" #. type: item #: doc/guix.texi:16519 #, no-wrap msgid "@code{http-auth} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:16523 msgid "" "HTTP authentication type to use. Set to @code{#f} to disable authentication " "(the default). Supported values are @code{\"digest\"} or @code{\"basic\"}." msgstr "" #. type: item #: doc/guix.texi:16524 #, no-wrap msgid "@code{users} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:16529 msgid "" "If HTTP authentication is enabled (see @code{http-auth}), access will be " "restricted to the credentials provided here. To configure users, use a list " "of pairs, where the first element of the pair is the username, and the 2nd " "element of the pair is the password." msgstr "" #. type: example #: doc/guix.texi:16535 #, no-wrap msgid "" "(tailon-configuration-file\n" " (http-auth \"basic\")\n" " (users '((\"user1\" . \"password1\")\n" " (\"user2\" . \"password2\"))))\n" msgstr "" #. type: subsubheading #: doc/guix.texi:16541 #, no-wrap msgid "Darkstat Service" msgstr "" #. type: cindex #: doc/guix.texi:16542 #, no-wrap msgid "darkstat" msgstr "" #. type: Plain text #: doc/guix.texi:16545 msgid "" "Darkstat is a packet sniffer that captures network traffic, calculates " "statistics about usage, and serves reports over HTTP." msgstr "" #. type: defvar #: doc/guix.texi:16546 #, no-wrap msgid "{Scheme Variable} darkstat-service-type" msgstr "" #. type: defvar #: doc/guix.texi:16551 msgid "" "This is the service type for the @uref{https://unix4lyfe.org/darkstat/, " "darkstat} service, its value must be a @code{darkstat-configuration} record " "as in this example:" msgstr "" #. type: example #: doc/guix.texi:16556 #, no-wrap msgid "" "(service darkstat-service-type\n" " (darkstat-configuration\n" " (interface \"eno1\")))\n" msgstr "" #. type: deftp #: doc/guix.texi:16559 #, no-wrap msgid "{Data Type} darkstat-configuration" msgstr "" #. type: deftp #: doc/guix.texi:16561 msgid "Data type representing the configuration of @command{darkstat}." msgstr "" #. type: item #: doc/guix.texi:16563 #, no-wrap msgid "@code{package} (default: @code{darkstat})" msgstr "" #. type: table #: doc/guix.texi:16565 msgid "The darkstat package to use." msgstr "" #. type: code{#1} #: doc/guix.texi:16566 #, no-wrap msgid "interface" msgstr "" #. type: table #: doc/guix.texi:16568 msgid "Capture traffic on the specified network interface." msgstr "" #. type: item #: doc/guix.texi:16569 #, no-wrap msgid "@code{port} (default: @code{\"667\"})" msgstr "" #. type: table #: doc/guix.texi:16571 msgid "Bind the web interface to the specified port." msgstr "" #. type: item #: doc/guix.texi:16572 #, no-wrap msgid "@code{bind-address} (default: @code{\"127.0.0.1\"})" msgstr "" #. type: table #: doc/guix.texi:16574 doc/guix.texi:16612 msgid "Bind the web interface to the specified address." msgstr "" #. type: item #: doc/guix.texi:16575 #, no-wrap msgid "@code{base} (default: @code{\"/\"})" msgstr "" #. type: table #: doc/guix.texi:16578 msgid "" "Specify the path of the base URL. This can be useful if @command{darkstat} " "is accessed via a reverse proxy." msgstr "" #. type: subsubheading #: doc/guix.texi:16582 #, no-wrap msgid "Prometheus Node Exporter Service" msgstr "" #. type: cindex #: doc/guix.texi:16584 #, no-wrap msgid "prometheus-node-exporter" msgstr "" #. type: Plain text #: doc/guix.texi:16589 msgid "" "The Prometheus ``node exporter'' makes hardware and operating system " "statistics provided by the Linux kernel available for the Prometheus " "monitoring system. This service should be deployed on all physical nodes " "and virtual machines, where monitoring these statistics is desirable." msgstr "" #. type: defvar #: doc/guix.texi:16590 #, no-wrap msgid "{Scheme variable} prometheus-node-exporter-service-type" msgstr "" #. type: defvar #: doc/guix.texi:16595 msgid "" "This is the service type for the @uref{https://github.com/prometheus/" "node_exporter/, prometheus-node-exporter} service, its value must be a " "@code{prometheus-node-exporter-configuration} record as in this example:" msgstr "" #. type: example #: doc/guix.texi:16600 #, no-wrap msgid "" "(service prometheus-node-exporter-service-type\n" " (prometheus-node-exporter-configuration\n" " (web-listen-address \":9100\")))\n" msgstr "" #. type: deftp #: doc/guix.texi:16603 #, no-wrap msgid "{Data Type} prometheus-node-exporter-configuration" msgstr "" #. type: deftp #: doc/guix.texi:16605 msgid "Data type representing the configuration of @command{node_exporter}." msgstr "" #. type: item #: doc/guix.texi:16607 #, no-wrap msgid "@code{package} (default: @code{go-github-com-prometheus-node-exporter})" msgstr "" #. type: table #: doc/guix.texi:16609 msgid "The prometheus-node-exporter package to use." msgstr "" #. type: item #: doc/guix.texi:16610 #, no-wrap msgid "@code{web-listen-address} (default: @code{\":9100\"})" msgstr "" #. type: cindex #: doc/guix.texi:16618 #, no-wrap msgid "Kerberos" msgstr "" #. type: Plain text #: doc/guix.texi:16622 msgid "" "The @code{(gnu services kerberos)} module provides services relating to the " "authentication protocol @dfn{Kerberos}." msgstr "" #. type: subsubheading #: doc/guix.texi:16623 #, no-wrap msgid "Krb5 Service" msgstr "" #. type: Plain text #: doc/guix.texi:16630 msgid "" "Programs using a Kerberos client library normally expect a configuration " "file in @file{/etc/krb5.conf}. This service generates such a file from a " "definition provided in the operating system declaration. It does not cause " "any daemon to be started." msgstr "" #. type: Plain text #: doc/guix.texi:16634 msgid "" "No ``keytab'' files are provided by this service---you must explicitly " "create them. This service is known to work with the MIT client library, " "@code{mit-krb5}. Other implementations have not been tested." msgstr "" #. type: defvr #: doc/guix.texi:16635 #, no-wrap msgid "{Scheme Variable} krb5-service-type" msgstr "" #. type: defvr #: doc/guix.texi:16637 msgid "A service type for Kerberos 5 clients." msgstr "" #. type: Plain text #: doc/guix.texi:16641 msgid "Here is an example of its use:" msgstr "" #. type: lisp #: doc/guix.texi:16655 #, no-wrap msgid "" "(service krb5-service-type\n" " (krb5-configuration\n" " (default-realm \"EXAMPLE.COM\")\n" " (allow-weak-crypto? #t)\n" " (realms (list\n" " (krb5-realm\n" " (name \"EXAMPLE.COM\")\n" " (admin-server \"groucho.example.com\")\n" " (kdc \"karl.example.com\"))\n" " (krb5-realm\n" " (name \"ARGRX.EDU\")\n" " (admin-server \"kerb-admin.argrx.edu\")\n" " (kdc \"keys.argrx.edu\"))))))\n" msgstr "" #. type: Plain text #: doc/guix.texi:16659 msgid "This example provides a Kerberos@tie{}5 client configuration which:" msgstr "" #. type: item #: doc/guix.texi:16660 #, no-wrap msgid "Recognizes two realms, @i{viz:} ``EXAMPLE.COM'' and ``ARGRX.EDU'', both" msgstr "" #. type: itemize #: doc/guix.texi:16662 msgid "" "of which have distinct administration servers and key distribution centers;" msgstr "" #. type: item #: doc/guix.texi:16662 #, no-wrap msgid "Will default to the realm ``EXAMPLE.COM'' if the realm is not explicitly" msgstr "" #. type: itemize #: doc/guix.texi:16664 msgid "specified by clients;" msgstr "" #. type: item #: doc/guix.texi:16664 #, no-wrap msgid "Accepts services which only support encryption types known to be weak." msgstr "" #. type: Plain text #: doc/guix.texi:16672 msgid "" "The @code{krb5-realm} and @code{krb5-configuration} types have many fields. " "Only the most commonly used ones are described here. For a full list, and " "more detailed explanation of each, see the MIT @uref{http://web.mit.edu/" "kerberos/krb5-devel/doc/admin/conf_files/krb5_conf.html,,krb5.conf} " "documentation." msgstr "" #. type: deftp #: doc/guix.texi:16674 #, no-wrap msgid "{Data Type} krb5-realm" msgstr "" #. type: cindex #: doc/guix.texi:16675 #, no-wrap msgid "realm, kerberos" msgstr "" #. type: table #: doc/guix.texi:16681 msgid "" "This field is a string identifying the name of the realm. A common " "convention is to use the fully qualified DNS name of your organization, " "converted to upper case." msgstr "" #. type: code{#1} #: doc/guix.texi:16682 #, no-wrap msgid "admin-server" msgstr "" #. type: table #: doc/guix.texi:16685 msgid "" "This field is a string identifying the host where the administration server " "is running." msgstr "" #. type: code{#1} #: doc/guix.texi:16686 #, no-wrap msgid "kdc" msgstr "" #. type: table #: doc/guix.texi:16689 msgid "" "This field is a string identifying the key distribution center for the realm." msgstr "" #. type: deftp #: doc/guix.texi:16692 #, no-wrap msgid "{Data Type} krb5-configuration" msgstr "" #. type: item #: doc/guix.texi:16695 #, no-wrap msgid "@code{allow-weak-crypto?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:16698 msgid "" "If this flag is @code{#t} then services which only offer encryption " "algorithms known to be weak will be accepted." msgstr "" #. type: item #: doc/guix.texi:16699 #, no-wrap msgid "@code{default-realm} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:16706 msgid "" "This field should be a string identifying the default Kerberos realm for the " "client. You should set this field to the name of your Kerberos realm. If " "this value is @code{#f} then a realm must be specified with every Kerberos " "principal when invoking programs such as @command{kinit}." msgstr "" #. type: code{#1} #: doc/guix.texi:16707 #, no-wrap msgid "realms" msgstr "" #. type: table #: doc/guix.texi:16712 msgid "" "This should be a non-empty list of @code{krb5-realm} objects, which clients " "may access. Normally, one of them will have a @code{name} field matching " "the @code{default-realm} field." msgstr "" #. type: subsubheading #: doc/guix.texi:16716 #, no-wrap msgid "PAM krb5 Service" msgstr "" #. type: cindex #: doc/guix.texi:16717 #, no-wrap msgid "pam-krb5" msgstr "" #. type: Plain text #: doc/guix.texi:16723 msgid "" "The @code{pam-krb5} service allows for login authentication and password " "management via Kerberos. You will need this service if you want PAM enabled " "applications to authenticate users using Kerberos." msgstr "" #. type: defvr #: doc/guix.texi:16724 #, no-wrap msgid "{Scheme Variable} pam-krb5-service-type" msgstr "" #. type: defvr #: doc/guix.texi:16726 msgid "A service type for the Kerberos 5 PAM module." msgstr "" #. type: deftp #: doc/guix.texi:16728 #, no-wrap msgid "{Data Type} pam-krb5-configuration" msgstr "" #. type: deftp #: doc/guix.texi:16731 msgid "" "Data type representing the configuration of the Kerberos 5 PAM module This " "type has the following parameters:" msgstr "" #. type: item #: doc/guix.texi:16732 #, no-wrap msgid "@code{pam-krb5} (default: @code{pam-krb5})" msgstr "" #. type: table #: doc/guix.texi:16734 msgid "The pam-krb5 package to use." msgstr "" #. type: item #: doc/guix.texi:16735 #, no-wrap msgid "@code{minimum-uid} (default: @code{1000})" msgstr "" #. type: table #: doc/guix.texi:16738 msgid "" "The smallest user ID for which Kerberos authentications should be " "attempted. Local accounts with lower values will silently fail to " "authenticate." msgstr "" #. type: cindex #: doc/guix.texi:16745 #, no-wrap msgid "web" msgstr "" #. type: cindex #: doc/guix.texi:16746 #, no-wrap msgid "www" msgstr "" #. type: cindex #: doc/guix.texi:16747 #, no-wrap msgid "HTTP" msgstr "" #. type: Plain text #: doc/guix.texi:16750 msgid "" "The @code{(gnu services web)} module provides the Apache HTTP Server, the " "nginx web server, and also a fastcgi wrapper daemon." msgstr "" #. type: subsubheading #: doc/guix.texi:16751 #, no-wrap msgid "Apache HTTP Server" msgstr "" #. type: deffn #: doc/guix.texi:16753 #, no-wrap msgid "{Scheme Variable} httpd-service-type" msgstr "" #. type: deffn #: doc/guix.texi:16757 msgid "" "Service type for the @uref{https://httpd.apache.org/,Apache HTTP} server " "(@dfn{httpd}). The value for this service type is a @code{httpd-" "configuration} record." msgstr "" #. type: deffn #: doc/guix.texi:16759 doc/guix.texi:16940 msgid "A simple example configuration is given below." msgstr "" #. type: example #: doc/guix.texi:16767 #, no-wrap msgid "" "(service httpd-service-type\n" " (httpd-configuration\n" " (config\n" " (httpd-config-file\n" " (server-name \"www.example.com\")\n" " (document-root \"/srv/http/www.example.com\")))))\n" msgstr "" #. type: deffn #: doc/guix.texi:16771 msgid "" "Other services can also extend the @code{httpd-service-type} to add to the " "configuration." msgstr "" #. type: example #: doc/guix.texi:16780 doc/guix.texi:16920 #, no-wrap msgid "" "(simple-service 'my-extra-server httpd-service-type\n" " (list\n" " (httpd-virtualhost\n" " \"*:80\"\n" " (list (string-append\n" " \"ServerName \"www.example.com\n" " DocumentRoot \\\"/srv/http/www.example.com\\\"\")))))\n" msgstr "" #. type: Plain text #: doc/guix.texi:16786 msgid "" "The details for the @code{httpd-configuration}, @code{httpd-module}, " "@code{httpd-config-file} and @code{httpd-virtualhost} record types are given " "below." msgstr "" #. type: deffn #: doc/guix.texi:16787 #, no-wrap msgid "{Data Type} httpd-configuration" msgstr "" #. type: deffn #: doc/guix.texi:16789 msgid "This data type represents the configuration for the httpd service." msgstr "" #. type: item #: doc/guix.texi:16791 #, no-wrap msgid "@code{package} (default: @code{httpd})" msgstr "" #. type: table #: doc/guix.texi:16793 msgid "The httpd package to use." msgstr "" #. type: item #: doc/guix.texi:16794 doc/guix.texi:16883 #, no-wrap msgid "@code{pid-file} (default: @code{\"/var/run/httpd\"})" msgstr "" #. type: table #: doc/guix.texi:16796 msgid "The pid file used by the shepherd-service." msgstr "" #. type: item #: doc/guix.texi:16797 #, no-wrap msgid "@code{config} (default: @code{(httpd-config-file)})" msgstr "" #. type: table #: doc/guix.texi:16802 msgid "" "The configuration file to use with the httpd service. The default value is a " "@code{httpd-config-file} record, but this can also be a different G-" "expression that generates a file, for example a @code{plain-file}. A file " "outside of the store can also be specified through a string." msgstr "" #. type: deffn #: doc/guix.texi:16806 #, no-wrap msgid "{Data Type} httpd-module" msgstr "" #. type: deffn #: doc/guix.texi:16808 msgid "This data type represents a module for the httpd service." msgstr "" #. type: table #: doc/guix.texi:16812 msgid "The name of the module." msgstr "" #. type: table #: doc/guix.texi:16818 msgid "" "The file for the module. This can be relative to the httpd package being " "used, the absolute location of a file, or a G-expression for a file within " "the store, for example @code{(file-append mod-wsgi \"/modules/mod_wsgi.so" "\")}." msgstr "" #. type: defvr #: doc/guix.texi:16822 #, no-wrap msgid "{Scheme Variable} %default-httpd-modules" msgstr "" #. type: defvr #: doc/guix.texi:16824 msgid "A default list of @code{httpd-module} objects." msgstr "" #. type: deffn #: doc/guix.texi:16826 #, no-wrap msgid "{Data Type} httpd-config-file" msgstr "" #. type: deffn #: doc/guix.texi:16828 msgid "This data type represents a configuration file for the httpd service." msgstr "" #. type: item #: doc/guix.texi:16830 #, no-wrap msgid "@code{modules} (default: @code{%default-httpd-modules})" msgstr "" #. type: table #: doc/guix.texi:16833 msgid "" "The modules to load. Additional modules can be added here, or loaded by " "additional configuration." msgstr "" #. type: table #: doc/guix.texi:16836 msgid "" "For example, in order to handle requests for PHP files, you can use Apache’s " "@code{mod_proxy_fcgi} module along with @code{php-fpm-service-type}:" msgstr "" #. type: example #: doc/guix.texi:16858 #, no-wrap msgid "" "(service httpd-service-type\n" " (httpd-configuration\n" " (config\n" " (httpd-config-file\n" " (modules (cons*\n" " (httpd-module\n" " (name \"proxy_module\")\n" " (file \"modules/mod_proxy.so\"))\n" " (httpd-module\n" " (name \"proxy_fcgi_module\")\n" " (file \"modules/mod_proxy_fcgi.so\"))\n" " %default-httpd-modules))\n" " (extra-config (list \"\\\n" "\n" " SetHandler \\\"proxy:unix:/var/run/php-fpm.sock|fcgi://localhost/\\\"\n" "\"))))))\n" "(service php-fpm-service-type\n" " (php-fpm-configuration\n" " (socket \"/var/run/php-fpm.sock\")\n" " (socket-group \"httpd\")))\n" msgstr "" #. type: item #: doc/guix.texi:16860 #, no-wrap msgid "@code{server-root} (default: @code{httpd})" msgstr "" #. type: table #: doc/guix.texi:16864 msgid "" "The @code{ServerRoot} in the configuration file, defaults to the httpd " "package. Directives including @code{Include} and @code{LoadModule} are taken " "as relative to the server root." msgstr "" #. type: item #: doc/guix.texi:16865 #, no-wrap msgid "@code{server-name} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:16869 msgid "" "The @code{ServerName} in the configuration file, used to specify the request " "scheme, hostname and port that the server uses to identify itself." msgstr "" #. type: table #: doc/guix.texi:16873 msgid "" "This doesn't need to be set in the server config, and can be specifyed in " "virtual hosts. The default is @code{#f} to not specify a @code{ServerName}." msgstr "" #. type: item #: doc/guix.texi:16874 #, no-wrap msgid "@code{document-root} (default: @code{\"/srv/http\"})" msgstr "" #. type: table #: doc/guix.texi:16876 msgid "The @code{DocumentRoot} from which files will be served." msgstr "" #. type: item #: doc/guix.texi:16877 #, no-wrap msgid "@code{listen} (default: @code{'(\"80\")})" msgstr "" #. type: table #: doc/guix.texi:16882 msgid "" "The list of values for the @code{Listen} directives in the config file. The " "value should be a list of strings, when each string can specify the port " "number to listen on, and optionally the IP address and protocol to use." msgstr "" #. type: table #: doc/guix.texi:16887 msgid "" "The @code{PidFile} to use. This should match the @code{pid-file} set in the " "@code{httpd-configuration} so that the Shepherd service is configured " "correctly." msgstr "" #. type: item #: doc/guix.texi:16888 #, no-wrap msgid "@code{error-log} (default: @code{\"/var/log/httpd/error_log\"})" msgstr "" #. type: table #: doc/guix.texi:16890 msgid "The @code{ErrorLog} to which the server will log errors." msgstr "" #. type: item #: doc/guix.texi:16891 #, no-wrap msgid "@code{user} (default: @code{\"httpd\"})" msgstr "" #. type: table #: doc/guix.texi:16893 msgid "The @code{User} which the server will answer requests as." msgstr "" #. type: item #: doc/guix.texi:16894 #, no-wrap msgid "@code{group} (default: @code{\"httpd\"})" msgstr "" #. type: table #: doc/guix.texi:16896 msgid "The @code{Group} which the server will answer requests as." msgstr "" #. type: item #: doc/guix.texi:16897 #, no-wrap msgid "@code{extra-config} (default: @code{(list \"TypesConfig etc/httpd/mime.types\")})" msgstr "" #. type: table #: doc/guix.texi:16900 msgid "" "A flat list of strings and G-expressions which will be added to the end of " "the configuration file." msgstr "" #. type: table #: doc/guix.texi:16903 msgid "" "Any values which the service is extended with will be appended to this list." msgstr "" #. type: deffn #: doc/guix.texi:16907 #, no-wrap msgid "{Data Type} httpd-virtualhost" msgstr "" #. type: deffn #: doc/guix.texi:16909 msgid "" "This data type represents a virtualhost configuration block for the httpd " "service." msgstr "" #. type: deffn #: doc/guix.texi:16911 msgid "These should be added to the extra-config for the httpd-service." msgstr "" #. type: code{#1} #: doc/guix.texi:16923 #, no-wrap msgid "addresses-and-ports" msgstr "" #. type: table #: doc/guix.texi:16925 msgid "The addresses and ports for the @code{VirtualHost} directive." msgstr "" #. type: code{#1} #: doc/guix.texi:16926 #, no-wrap msgid "contents" msgstr "" #. type: table #: doc/guix.texi:16929 msgid "" "The contents of the @code{VirtualHost} directive, this should be a list of " "strings and G-expressions." msgstr "" #. type: subsubheading #: doc/guix.texi:16933 #, no-wrap msgid "NGINX" msgstr "" #. type: deffn #: doc/guix.texi:16935 #, no-wrap msgid "{Scheme Variable} nginx-service-type" msgstr "" #. type: deffn #: doc/guix.texi:16938 msgid "" "Service type for the @uref{https://nginx.org/,NGinx} web server. The value " "for this service type is a @code{} record." msgstr "" #. type: example #: doc/guix.texi:16948 doc/guix.texi:17002 #, no-wrap msgid "" "(service nginx-service-type\n" " (nginx-configuration\n" " (server-blocks\n" " (list (nginx-server-configuration\n" " (server-name '(\"www.example.com\"))\n" " (root \"/srv/http/www.example.com\"))))))\n" msgstr "" #. type: deffn #: doc/guix.texi:16953 msgid "" "In addition to adding server blocks to the service configuration directly, " "this service can be extended by other services to add server blocks, as in " "this example:" msgstr "" #. type: example #: doc/guix.texi:16959 #, no-wrap msgid "" "(simple-service 'my-extra-server nginx-service-type\n" " (list (nginx-server-configuration\n" " (root \"/srv/http/extra-website\")\n" " (try-files (list \"$uri\" \"$uri/index.html\")))))\n" msgstr "" #. type: Plain text #: doc/guix.texi:16970 msgid "" "At startup, @command{nginx} has not yet read its configuration file, so it " "uses a default file to log error messages. If it fails to load its " "configuration file, that is where error messages are logged. After the " "configuration file is loaded, the default error log file changes as per " "configuration. In our case, startup error messages can be found in @file{/" "var/run/nginx/logs/error.log}, and after configuration in @file{/var/log/" "nginx/error.log}. The second location can be changed with the @var{log-" "directory} configuration option." msgstr "" #. type: deffn #: doc/guix.texi:16971 #, no-wrap msgid "{Data Type} nginx-configuration" msgstr "" #. type: deffn #: doc/guix.texi:16975 msgid "" "This data type represents the configuration for NGinx. Some configuration " "can be done through this and the other provided record types, or " "alternatively, a config file can be provided." msgstr "" #. type: item #: doc/guix.texi:16977 #, no-wrap msgid "@code{nginx} (default: @code{nginx})" msgstr "" #. type: table #: doc/guix.texi:16979 msgid "The nginx package to use." msgstr "" #. type: item #: doc/guix.texi:16980 #, no-wrap msgid "@code{log-directory} (default: @code{\"/var/log/nginx\"})" msgstr "" #. type: table #: doc/guix.texi:16982 msgid "The directory to which NGinx will write log files." msgstr "" #. type: item #: doc/guix.texi:16983 #, no-wrap msgid "@code{run-directory} (default: @code{\"/var/run/nginx\"})" msgstr "" #. type: table #: doc/guix.texi:16986 msgid "" "The directory in which NGinx will create a pid file, and write temporary " "files." msgstr "" #. type: item #: doc/guix.texi:16987 #, no-wrap msgid "@code{server-blocks} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:16991 msgid "" "A list of @dfn{server blocks} to create in the generated configuration file, " "the elements should be of type @code{}." msgstr "" #. type: table #: doc/guix.texi:16995 msgid "" "The following example would setup NGinx to serve @code{www.example.com} from " "the @code{/srv/http/www.example.com} directory, without using HTTPS." msgstr "" #. type: item #: doc/guix.texi:17004 #, no-wrap msgid "@code{upstream-blocks} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:17008 msgid "" "A list of @dfn{upstream blocks} to create in the generated configuration " "file, the elements should be of type @code{}." msgstr "" #. type: table #: doc/guix.texi:17015 msgid "" "Configuring upstreams through the @code{upstream-blocks} can be useful when " "combined with @code{locations} in the @code{} " "records. The following example creates a server configuration with one " "location configuration, that will proxy requests to a upstream " "configuration, which will handle requests with two servers." msgstr "" #. type: example #: doc/guix.texi:17034 #, no-wrap msgid "" "(service\n" " nginx-service-type\n" " (nginx-configuration\n" " (server-blocks\n" " (list (nginx-server-configuration\n" " (server-name '(\"www.example.com\"))\n" " (root \"/srv/http/www.example.com\")\n" " (locations\n" " (list\n" " (nginx-location-configuration\n" " (uri \"/path1\")\n" " (body '(\"proxy_pass http://server-proxy;\"))))))))\n" " (upstream-blocks\n" " (list (nginx-upstream-configuration\n" " (name \"server-proxy\")\n" " (servers (list \"server1.example.com\"\n" " \"server2.example.com\")))))))\n" msgstr "" #. type: table #: doc/guix.texi:17042 msgid "" "If a configuration @var{file} is provided, this will be used, rather than " "generating a configuration file from the provided @code{log-directory}, " "@code{run-directory}, @code{server-blocks} and @code{upstream-blocks}. For " "proper operation, these arguments should match what is in @var{file} to " "ensure that the directories are created when the service is activated." msgstr "" #. type: table #: doc/guix.texi:17046 msgid "" "This can be useful if you have an existing configuration file, or it's not " "possible to do what is required through the other parts of the nginx-" "configuration record." msgstr "" #. type: item #: doc/guix.texi:17047 #, no-wrap msgid "@code{server-names-hash-bucket-size} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:17050 msgid "" "Bucket size for the server names hash tables, defaults to @code{#f} to use " "the size of the processors cache line." msgstr "" #. type: item #: doc/guix.texi:17051 #, no-wrap msgid "@code{server-names-hash-bucket-max-size} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:17053 msgid "Maximum bucket size for the server names hash tables." msgstr "" #. type: item #: doc/guix.texi:17054 #, no-wrap msgid "@code{extra-content} (default: @code{\"\"})" msgstr "" #. type: table #: doc/guix.texi:17057 msgid "" "Extra content for the @code{http} block. Should be string or a string " "valued G-expression." msgstr "" #. type: deftp #: doc/guix.texi:17061 #, no-wrap msgid "{Data Type} nginx-server-configuration" msgstr "" #. type: deftp #: doc/guix.texi:17064 msgid "" "Data type representing the configuration of an nginx server block. This " "type has the following parameters:" msgstr "" #. type: item #: doc/guix.texi:17066 #, no-wrap msgid "@code{listen} (default: @code{'(\"80\" \"443 ssl\")})" msgstr "" #. type: table #: doc/guix.texi:17071 msgid "" "Each @code{listen} directive sets the address and port for IP, or the path " "for a UNIX-domain socket on which the server will accept requests. Both " "address and port, or only address or only port can be specified. An address " "may also be a hostname, for example:" msgstr "" #. type: example #: doc/guix.texi:17074 #, no-wrap msgid "'(\"127.0.0.1:8000\" \"127.0.0.1\" \"8000\" \"*:8000\" \"localhost:8000\")\n" msgstr "" #. type: item #: doc/guix.texi:17076 #, no-wrap msgid "@code{server-name} (default: @code{(list 'default)})" msgstr "" #. type: table #: doc/guix.texi:17079 msgid "" "A list of server names this server represents. @code{'default} represents " "the default server for connections matching no other server." msgstr "" #. type: item #: doc/guix.texi:17080 #, no-wrap msgid "@code{root} (default: @code{\"/srv/http\"})" msgstr "" #. type: table #: doc/guix.texi:17082 msgid "Root of the website nginx will serve." msgstr "" #. type: item #: doc/guix.texi:17083 #, no-wrap msgid "@code{locations} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:17087 msgid "" "A list of @dfn{nginx-location-configuration} or @dfn{nginx-named-location-" "configuration} records to use within this server block." msgstr "" #. type: item #: doc/guix.texi:17088 #, no-wrap msgid "@code{index} (default: @code{(list \"index.html\")})" msgstr "" #. type: table #: doc/guix.texi:17091 msgid "" "Index files to look for when clients ask for a directory. If it cannot be " "found, Nginx will send the list of files in the directory." msgstr "" #. type: item #: doc/guix.texi:17092 #, no-wrap msgid "@code{try-files} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:17095 msgid "" "A list of files whose existence is checked in the specified order. " "@code{nginx} will use the first file it finds to process the request." msgstr "" #. type: item #: doc/guix.texi:17096 #, no-wrap msgid "@code{ssl-certificate} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:17099 msgid "" "Where to find the certificate for secure connections. Set it to @code{#f} " "if you don't have a certificate or you don't want to use HTTPS." msgstr "" #. type: item #: doc/guix.texi:17100 #, no-wrap msgid "@code{ssl-certificate-key} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:17103 msgid "" "Where to find the private key for secure connections. Set it to @code{#f} " "if you don't have a key or you don't want to use HTTPS." msgstr "" #. type: item #: doc/guix.texi:17104 #, no-wrap msgid "@code{server-tokens?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:17106 msgid "Whether the server should add its configuration to response." msgstr "" #. type: item #: doc/guix.texi:17107 #, no-wrap msgid "@code{raw-content} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:17109 msgid "A list of raw lines added to the server block." msgstr "" #. type: deftp #: doc/guix.texi:17113 #, no-wrap msgid "{Data Type} nginx-upstream-configuration" msgstr "" #. type: deftp #: doc/guix.texi:17116 msgid "" "Data type representing the configuration of an nginx @code{upstream} block. " "This type has the following parameters:" msgstr "" #. type: table #: doc/guix.texi:17120 msgid "Name for this group of servers." msgstr "" #. type: code{#1} #: doc/guix.texi:17121 #, no-wrap msgid "servers" msgstr "" #. type: table #: doc/guix.texi:17128 msgid "" "Specify the addresses of the servers in the group. The address can be " "specified as a IP address (e.g. @samp{127.0.0.1}), domain name (e.g. " "@samp{backend1.example.com}) or a path to a UNIX socket using the prefix " "@samp{unix:}. For addresses using an IP address or domain name, the default " "port is 80, and a different port can be specified explicitly." msgstr "" #. type: deftp #: doc/guix.texi:17132 #, no-wrap msgid "{Data Type} nginx-location-configuration" msgstr "" #. type: deftp #: doc/guix.texi:17135 msgid "" "Data type representing the configuration of an nginx @code{location} block. " "This type has the following parameters:" msgstr "" #. type: table #: doc/guix.texi:17139 msgid "URI which this location block matches." msgstr "" #. type: anchor{#1} #: doc/guix.texi:17141 msgid "nginx-location-configuration body" msgstr "" #. type: code{#1} #: doc/guix.texi:17141 doc/guix.texi:17162 #, no-wrap msgid "body" msgstr "" #. type: table #: doc/guix.texi:17148 msgid "" "Body of the location block, specified as a list of strings. This can contain " "many configuration directives. For example, to pass requests to a upstream " "server group defined using an @code{nginx-upstream-configuration} block, the " "following directive would be specified in the body @samp{(list \"proxy_pass " "http://upstream-name;\")}." msgstr "" #. type: deftp #: doc/guix.texi:17152 #, no-wrap msgid "{Data Type} nginx-named-location-configuration" msgstr "" #. type: deftp #: doc/guix.texi:17157 msgid "" "Data type representing the configuration of an nginx named location block. " "Named location blocks are used for request redirection, and not used for " "regular request processing. This type has the following parameters:" msgstr "" #. type: table #: doc/guix.texi:17161 msgid "Name to identify this location block." msgstr "" #. type: table #: doc/guix.texi:17167 msgid "" "@xref{nginx-location-configuration body}, as the body for named location " "blocks can be used in a similar way to the @code{nginx-location-" "configuration body}. One restriction is that the body of a named location " "block cannot contain location blocks." msgstr "" #. type: subsubheading #: doc/guix.texi:17171 #, no-wrap msgid "Varnish Cache" msgstr "" #. type: cindex #: doc/guix.texi:17172 #, no-wrap msgid "Varnish" msgstr "" #. type: Plain text #: doc/guix.texi:17177 msgid "" "Varnish is a fast cache server that sits in between web applications and end " "users. It proxies requests from clients and caches the accessed URLs such " "that multiple requests for the same resource only creates one request to the " "back-end." msgstr "" #. type: defvr #: doc/guix.texi:17178 #, no-wrap msgid "{Scheme Variable} varnish-service-type" msgstr "" #. type: defvr #: doc/guix.texi:17180 msgid "Service type for the Varnish daemon." msgstr "" #. type: deftp #: doc/guix.texi:17182 #, no-wrap msgid "{Data Type} varnish-configuration" msgstr "" #. type: deftp #: doc/guix.texi:17185 msgid "" "Data type representing the @code{varnish} service configuration. This type " "has the following parameters:" msgstr "" #. type: item #: doc/guix.texi:17187 #, no-wrap msgid "@code{package} (default: @code{varnish})" msgstr "" #. type: table #: doc/guix.texi:17189 msgid "The Varnish package to use." msgstr "" #. type: item #: doc/guix.texi:17190 #, no-wrap msgid "@code{name} (default: @code{\"default\"})" msgstr "" #. type: table #: doc/guix.texi:17195 msgid "" "A name for this Varnish instance. Varnish will create a directory in @file{/" "var/varnish/} with this name and keep temporary files there. If the name " "starts with a forward slash, it is interpreted as an absolute directory name." msgstr "" #. type: table #: doc/guix.texi:17198 msgid "" "Pass the @code{-n} argument to other Varnish programs to connect to the " "named instance, e.g. @command{varnishncsa -n default}." msgstr "" #. type: item #: doc/guix.texi:17199 #, no-wrap msgid "@code{backend} (default: @code{\"localhost:8080\"})" msgstr "" #. type: table #: doc/guix.texi:17201 msgid "The backend to use. This option has no effect if @code{vcl} is set." msgstr "" #. type: item #: doc/guix.texi:17202 #, no-wrap msgid "@code{vcl} (default: #f)" msgstr "" #. type: table #: doc/guix.texi:17207 msgid "" "The @dfn{VCL} (Varnish Configuration Language) program to run. If this is " "@code{#f}, Varnish will proxy @code{backend} using the default " "configuration. Otherwise this must be a file-like object with valid VCL " "syntax." msgstr "" #. type: table #: doc/guix.texi:17211 msgid "" "For example, to mirror @url{http://www.gnu.org,www.gnu.org} with VCL you can " "do something along these lines:" msgstr "" #. type: example #: doc/guix.texi:17218 #, no-wrap msgid "" "(define %gnu-mirror\n" " (plain-file\n" " \"gnu.vcl\"\n" " \"vcl 4.1;\n" "backend gnu @{ .host = \"www.gnu.org\"; @}\"))\n" "\n" msgstr "" #. type: example #: doc/guix.texi:17226 #, no-wrap msgid "" "(operating-system\n" " ...\n" " (services (cons (service varnish-service-type\n" " (varnish-configuration\n" " (listen '(\":80\"))\n" " (vcl %gnu-mirror)))\n" " %base-services)))\n" msgstr "" #. type: table #: doc/guix.texi:17230 msgid "" "The configuration of an already running Varnish instance can be inspected " "and changed using the @command{varnishadm} program." msgstr "" #. type: table #: doc/guix.texi:17234 msgid "" "Consult the @url{https://varnish-cache.org/docs/,Varnish User Guide} and " "@url{https://book.varnish-software.com/4.0/,Varnish Book} for comprehensive " "documentation on Varnish and its configuration language." msgstr "" #. type: item #: doc/guix.texi:17235 #, no-wrap msgid "@code{listen} (default: @code{'(\"localhost:80\")})" msgstr "" #. type: table #: doc/guix.texi:17237 msgid "List of addresses Varnish will listen on." msgstr "" #. type: item #: doc/guix.texi:17238 #, no-wrap msgid "@code{storage} (default: @code{'(\"malloc,128m\")})" msgstr "" #. type: table #: doc/guix.texi:17240 msgid "List of storage backends that will be available in VCL." msgstr "" #. type: item #: doc/guix.texi:17241 #, no-wrap msgid "@code{parameters} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:17243 msgid "" "List of run-time parameters in the form @code{'((\"parameter\" . \"value" "\"))}." msgstr "" #. type: table #: doc/guix.texi:17246 msgid "Additional arguments to pass to the @command{varnishd} process." msgstr "" #. type: subsubheading #: doc/guix.texi:17250 #, no-wrap msgid "FastCGI" msgstr "" #. type: cindex #: doc/guix.texi:17251 #, no-wrap msgid "fastcgi" msgstr "" #. type: cindex #: doc/guix.texi:17252 #, no-wrap msgid "fcgiwrap" msgstr "" #. type: Plain text #: doc/guix.texi:17259 msgid "" "FastCGI is an interface between the front-end and the back-end of a web " "service. It is a somewhat legacy facility; new web services should " "generally just talk HTTP between the front-end and the back-end. However " "there are a number of back-end services such as PHP or the optimized HTTP " "Git repository access that use FastCGI, so we have support for it in Guix." msgstr "" #. type: Plain text #: doc/guix.texi:17266 msgid "" "To use FastCGI, you configure the front-end web server (e.g., nginx) to " "dispatch some subset of its requests to the fastcgi backend, which listens " "on a local TCP or UNIX socket. There is an intermediary @code{fcgiwrap} " "program that sits between the actual backend process and the web server. " "The front-end indicates which backend program to run, passing that " "information to the @code{fcgiwrap} process." msgstr "" #. type: defvr #: doc/guix.texi:17267 #, no-wrap msgid "{Scheme Variable} fcgiwrap-service-type" msgstr "" #. type: defvr #: doc/guix.texi:17269 msgid "A service type for the @code{fcgiwrap} FastCGI proxy." msgstr "" #. type: deftp #: doc/guix.texi:17271 #, no-wrap msgid "{Data Type} fcgiwrap-configuration" msgstr "" #. type: deftp #: doc/guix.texi:17274 msgid "" "Data type representing the configuration of the @code{fcgiwrap} serice. " "This type has the following parameters:" msgstr "" #. type: item #: doc/guix.texi:17275 #, no-wrap msgid "@code{package} (default: @code{fcgiwrap})" msgstr "" #. type: table #: doc/guix.texi:17277 msgid "The fcgiwrap package to use." msgstr "" #. type: item #: doc/guix.texi:17278 #, no-wrap msgid "@code{socket} (default: @code{tcp:127.0.0.1:9000})" msgstr "" #. type: table #: doc/guix.texi:17284 msgid "" "The socket on which the @code{fcgiwrap} process should listen, as a string. " "Valid @var{socket} values include @code{unix:@var{/path/to/unix/socket}}, " "@code{tcp:@var{dot.ted.qu.ad}:@var{port}} and @code{tcp6:[@var{ipv6_addr}]:" "port}." msgstr "" #. type: item #: doc/guix.texi:17285 #, no-wrap msgid "@code{user} (default: @code{fcgiwrap})" msgstr "" #. type: itemx #: doc/guix.texi:17286 #, no-wrap msgid "@code{group} (default: @code{fcgiwrap})" msgstr "" #. type: table #: doc/guix.texi:17291 msgid "" "The user and group names, as strings, under which to run the @code{fcgiwrap} " "process. The @code{fastcgi} service will ensure that if the user asks for " "the specific user or group names @code{fcgiwrap} that the corresponding user " "and/or group is present on the system." msgstr "" #. type: table #: doc/guix.texi:17298 msgid "" "It is possible to configure a FastCGI-backed web service to pass HTTP " "authentication information from the front-end to the back-end, and to allow " "@code{fcgiwrap} to run the back-end process as a corresponding local user. " "To enable this capability on the back-end., run @code{fcgiwrap} as the " "@code{root} user and group. Note that this capability also has to be " "configured on the front-end as well." msgstr "" #. type: cindex #: doc/guix.texi:17301 #, no-wrap msgid "php-fpm" msgstr "" #. type: Plain text #: doc/guix.texi:17304 msgid "" "PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI " "implementation with some additional features useful for sites of any size." msgstr "" #. type: Plain text #: doc/guix.texi:17306 msgid "These features include:" msgstr "" #. type: item #: doc/guix.texi:17307 #, no-wrap msgid "Adaptive process spawning" msgstr "" #. type: item #: doc/guix.texi:17308 #, no-wrap msgid "Basic statistics (similar to Apache's mod_status)" msgstr "" #. type: item #: doc/guix.texi:17309 #, no-wrap msgid "Advanced process management with graceful stop/start" msgstr "" #. type: item #: doc/guix.texi:17310 #, no-wrap msgid "Ability to start workers with different uid/gid/chroot/environment" msgstr "" #. type: itemize #: doc/guix.texi:17312 msgid "and different php.ini (replaces safe_mode)" msgstr "" #. type: item #: doc/guix.texi:17312 #, no-wrap msgid "Stdout & stderr logging" msgstr "" #. type: item #: doc/guix.texi:17313 #, no-wrap msgid "Emergency restart in case of accidental opcode cache destruction" msgstr "" #. type: item #: doc/guix.texi:17314 #, no-wrap msgid "Accelerated upload support" msgstr "" #. type: item #: doc/guix.texi:17315 #, no-wrap msgid "Support for a \"slowlog\"" msgstr "" #. type: item #: doc/guix.texi:17316 #, no-wrap msgid "Enhancements to FastCGI, such as fastcgi_finish_request() -" msgstr "" #. type: itemize #: doc/guix.texi:17319 msgid "" "a special function to finish request & flush all data while continuing to do " "something time-consuming (video converting, stats processing, etc.)" msgstr "" #. type: Plain text #: doc/guix.texi:17321 msgid "... and much more." msgstr "" #. type: defvr #: doc/guix.texi:17322 #, no-wrap msgid "{Scheme Variable} php-fpm-service-type" msgstr "" #. type: defvr #: doc/guix.texi:17324 msgid "A Service type for @code{php-fpm}." msgstr "" #. type: deftp #: doc/guix.texi:17326 #, no-wrap msgid "{Data Type} php-fpm-configuration" msgstr "" #. type: deftp #: doc/guix.texi:17328 msgid "Data Type for php-fpm service configuration." msgstr "" #. type: item #: doc/guix.texi:17329 #, no-wrap msgid "@code{php} (default: @code{php})" msgstr "" #. type: table #: doc/guix.texi:17331 msgid "The php package to use." msgstr "" #. type: item #: doc/guix.texi:17331 #, no-wrap msgid "@code{socket} (default: @code{(string-append \"/var/run/php\" (version-major (package-version php)) \"-fpm.sock\")})" msgstr "" #. type: table #: doc/guix.texi:17333 msgid "The address on which to accept FastCGI requests. Valid syntaxes are:" msgstr "" #. type: code{#1} #: doc/guix.texi:17334 #, no-wrap msgid "\"ip.add.re.ss:port\"" msgstr "" #. type: table #: doc/guix.texi:17336 msgid "Listen on a TCP socket to a specific address on a specific port." msgstr "" #. type: code{#1} #: doc/guix.texi:17336 #, no-wrap msgid "\"port\"" msgstr "" #. type: table #: doc/guix.texi:17338 msgid "Listen on a TCP socket to all addresses on a specific port." msgstr "" #. type: code{#1} #: doc/guix.texi:17338 #, no-wrap msgid "\"/path/to/unix/socket\"" msgstr "" #. type: table #: doc/guix.texi:17340 msgid "Listen on a unix socket." msgstr "" #. type: item #: doc/guix.texi:17342 #, no-wrap msgid "@code{user} (default: @code{php-fpm})" msgstr "" #. type: table #: doc/guix.texi:17344 msgid "User who will own the php worker processes." msgstr "" #. type: item #: doc/guix.texi:17344 #, no-wrap msgid "@code{group} (default: @code{php-fpm})" msgstr "" #. type: table #: doc/guix.texi:17346 msgid "Group of the worker processes." msgstr "" #. type: item #: doc/guix.texi:17346 #, no-wrap msgid "@code{socket-user} (default: @code{php-fpm})" msgstr "" #. type: table #: doc/guix.texi:17348 msgid "User who can speak to the php-fpm socket." msgstr "" #. type: item #: doc/guix.texi:17348 #, no-wrap msgid "@code{socket-group} (default: @code{php-fpm})" msgstr "" #. type: table #: doc/guix.texi:17350 msgid "Group that can speak to the php-fpm socket." msgstr "" #. type: item #: doc/guix.texi:17350 #, no-wrap msgid "@code{pid-file} (default: @code{(string-append \"/var/run/php\" (version-major (package-version php)) \"-fpm.pid\")})" msgstr "" #. type: table #: doc/guix.texi:17353 msgid "" "The process id of the php-fpm process is written to this file once the " "service has started." msgstr "" #. type: item #: doc/guix.texi:17353 #, no-wrap msgid "@code{log-file} (default: @code{(string-append \"/var/log/php\" (version-major (package-version php)) \"-fpm.log\")})" msgstr "" #. type: table #: doc/guix.texi:17355 msgid "Log for the php-fpm master process." msgstr "" #. type: item #: doc/guix.texi:17355 #, no-wrap msgid "@code{process-manager} (default: @code{(php-fpm-dynamic-process-manager-configuration)})" msgstr "" #. type: table #: doc/guix.texi:17358 msgid "Detailed settings for the php-fpm process manager. Must be either:" msgstr "" #. type: code{#1} #: doc/guix.texi:17359 #, no-wrap msgid "" msgstr "" #. type: code{#1} #: doc/guix.texi:17360 #, no-wrap msgid "" msgstr "" #. type: code{#1} #: doc/guix.texi:17361 #, no-wrap msgid "" msgstr "" #. type: item #: doc/guix.texi:17363 #, no-wrap msgid "@code{display-errors} (default @code{#f})" msgstr "" #. type: table #: doc/guix.texi:17368 msgid "" "Determines whether php errors and warning should be sent to clients and " "displayed in their browsers. This is useful for local php development, but " "a security risk for public sites, as error messages can reveal passwords and " "personal data." msgstr "" #. type: item #: doc/guix.texi:17368 #, no-wrap msgid "@code{workers-logfile} (default @code{(string-append \"/var/log/php\" (version-major (package-version php)) \"-fpm.www.log\")})" msgstr "" #. type: table #: doc/guix.texi:17371 msgid "" "This file will log the @code{stderr} outputs of php worker processes. Can " "be set to @code{#f} to disable logging." msgstr "" #. type: item #: doc/guix.texi:17371 #, no-wrap msgid "@code{file} (default @code{#f})" msgstr "" #. type: table #: doc/guix.texi:17374 msgid "" "An optional override of the whole configuration. You can use the " "@code{mixed-text-file} function or an absolute filepath for it." msgstr "" #. type: deftp #: doc/guix.texi:17377 #, no-wrap msgid "{Data type} php-fpm-dynamic-process-manager-configuration" msgstr "" #. type: deftp #: doc/guix.texi:17381 msgid "" "Data Type for the @code{dynamic} php-fpm process manager. With the " "@code{dynamic} process manager, spare worker processes are kept around based " "on it's configured limits." msgstr "" #. type: item #: doc/guix.texi:17382 doc/guix.texi:17398 doc/guix.texi:17408 #, no-wrap msgid "@code{max-children} (default: @code{5})" msgstr "" #. type: table #: doc/guix.texi:17384 doc/guix.texi:17400 doc/guix.texi:17410 msgid "Maximum of worker processes." msgstr "" #. type: item #: doc/guix.texi:17384 #, no-wrap msgid "@code{start-servers} (default: @code{2})" msgstr "" #. type: table #: doc/guix.texi:17386 msgid "How many worker processes should be started on start-up." msgstr "" #. type: item #: doc/guix.texi:17386 #, no-wrap msgid "@code{min-spare-servers} (default: @code{1})" msgstr "" #. type: table #: doc/guix.texi:17388 msgid "How many spare worker processes should be kept around at minimum." msgstr "" #. type: item #: doc/guix.texi:17388 #, no-wrap msgid "@code{max-spare-servers} (default: @code{3})" msgstr "" #. type: table #: doc/guix.texi:17390 msgid "How many spare worker processes should be kept around at maximum." msgstr "" #. type: deftp #: doc/guix.texi:17393 #, no-wrap msgid "{Data type} php-fpm-static-process-manager-configuration" msgstr "" #. type: deftp #: doc/guix.texi:17397 msgid "" "Data Type for the @code{static} php-fpm process manager. With the " "@code{static} process manager, an unchanging number of worker processes are " "created." msgstr "" #. type: deftp #: doc/guix.texi:17403 #, no-wrap msgid "{Data type} php-fpm-on-demand-process-manager-configuration" msgstr "" #. type: deftp #: doc/guix.texi:17407 msgid "" "Data Type for the @code{on-demand} php-fpm process manager. With the " "@code{on-demand} process manager, worker processes are only created as " "requests arrive." msgstr "" #. type: item #: doc/guix.texi:17410 #, no-wrap msgid "@code{process-idle-timeout} (default: @code{10})" msgstr "" #. type: table #: doc/guix.texi:17412 msgid "The time in seconds after which a process with no requests is killed." msgstr "" #. type: deffn #: doc/guix.texi:17416 #, no-wrap msgid "{Scheme Procedure} nginx-php-fpm-location @" msgstr "" #. type: deffn #: doc/guix.texi:17422 msgid "" "[#:nginx-package nginx] @ [socket (string-append \"/var/run/php\" @ (version-" "major (package-version php)) @ \"-fpm.sock\")] A helper function to quickly " "add php to an @code{nginx-server-configuration}." msgstr "" #. type: Plain text #: doc/guix.texi:17425 msgid "A simple services setup for nginx with php can look like this:" msgstr "" #. type: example #: doc/guix.texi:17438 #, no-wrap msgid "" "(services (cons* (service dhcp-client-service-type)\n" " (service php-fpm-service-type)\n" " (service nginx-service-type\n" " (nginx-server-configuration\n" " (server-name '(\"example.com\"))\n" " (root \"/srv/http/\")\n" " (locations\n" " (list (nginx-php-location)))\n" " (https-port #f)\n" " (ssl-certificate #f)\n" " (ssl-certificate-key #f)))\n" " %base-services))\n" msgstr "" #. type: cindex #: doc/guix.texi:17440 #, no-wrap msgid "cat-avatar-generator" msgstr "" #. type: Plain text #: doc/guix.texi:17444 msgid "" "The cat avatar generator is a simple service to demonstrate the use of php-" "fpm in @code{Nginx}. It is used to generate cat avatar from a seed, for " "instance the hash of a user's email address." msgstr "" #. type: deffn #: doc/guix.texi:17445 #, no-wrap msgid "{Scheme Procedure} cat-avatar-generator-serice @" msgstr "" #. type: deffn #: doc/guix.texi:17453 msgid "" "[#:cache-dir \"/var/cache/cat-avatar-generator\"] @ [#:package cat-avatar-" "generator] @ [#:configuration (nginx-server-configuration)] Returns an nginx-" "server-configuration that inherits @code{configuration}. It extends the " "nginx configuration to add a server block that serves @code{package}, a " "version of cat-avatar-generator. During execution, cat-avatar-generator " "will be able to use @code{cache-dir} as its cache directory." msgstr "" #. type: Plain text #: doc/guix.texi:17456 msgid "A simple setup for cat-avatar-generator can look like this:" msgstr "" #. type: example #: doc/guix.texi:17463 #, no-wrap msgid "" "(services (cons* (cat-avatar-generator-service\n" " #:configuration\n" " (nginx-server-configuration\n" " (server-name '(\"example.com\"))))\n" " ...\n" " %base-services))\n" msgstr "" #. type: subsubheading #: doc/guix.texi:17465 #, no-wrap msgid "Hpcguix-web" msgstr "" #. type: cindex #: doc/guix.texi:17467 #, no-wrap msgid "hpcguix-web" msgstr "" #. type: Plain text #: doc/guix.texi:17472 msgid "" "The @uref{hpcguix-web, https://github.com/UMCUGenetics/hpcguix-web/} program " "is a customizable web interface to browse Guix packages, initially designed " "for users of high-performance computing (HPC) clusters." msgstr "" #. type: defvr #: doc/guix.texi:17473 #, no-wrap msgid "{Scheme Variable} hpcguix-web-service-type" msgstr "" #. type: defvr #: doc/guix.texi:17475 msgid "The service type for @code{hpcguix-web}." msgstr "" #. type: deftp #: doc/guix.texi:17477 #, no-wrap msgid "{Data Type} hpcguix-web-configuration" msgstr "" #. type: deftp #: doc/guix.texi:17479 msgid "Data type for the hpcguix-web service configuration." msgstr "" #. type: code{#1} #: doc/guix.texi:17481 #, no-wrap msgid "specs" msgstr "" #. type: table #: doc/guix.texi:17484 msgid "" "A gexp (@pxref{G-Expressions}) specifying the hpcguix-web service " "configuration. The main items available in this spec are:" msgstr "" #. type: item #: doc/guix.texi:17486 #, no-wrap msgid "@code{title-prefix} (default: @code{\"hpcguix | \"})" msgstr "" #. type: table #: doc/guix.texi:17488 msgid "The page title prefix." msgstr "" #. type: item #: doc/guix.texi:17489 #, no-wrap msgid "@code{guix-command} (default: @code{\"guix\"})" msgstr "" #. type: table #: doc/guix.texi:17491 msgid "The @command{guix} command." msgstr "" #. type: item #: doc/guix.texi:17492 #, no-wrap msgid "@code{package-filter-proc} (default: @code{(const #t)})" msgstr "" #. type: table #: doc/guix.texi:17494 msgid "A procedure specifying how to filter packages that are displayed." msgstr "" #. type: item #: doc/guix.texi:17495 #, no-wrap msgid "@code{package-page-extension-proc} (default: @code{(const '())})" msgstr "" #. type: table #: doc/guix.texi:17497 msgid "Extension package for @code{hpcguix-web}." msgstr "" #. type: item #: doc/guix.texi:17498 #, no-wrap msgid "@code{menu} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:17500 msgid "Additional entry in page @code{menu}." msgstr "" #. type: item #: doc/guix.texi:17501 #, no-wrap msgid "@code{channels} (default: @code{%default-channels})" msgstr "" #. type: table #: doc/guix.texi:17503 msgid "" "List of channels from which the package list is built (@pxref{Channels})." msgstr "" #. type: item #: doc/guix.texi:17504 #, no-wrap msgid "@code{package-list-expiration} (default: @code{(* 12 3600)})" msgstr "" #. type: table #: doc/guix.texi:17507 msgid "" "The expiration time, in seconds, after which the package list is rebuilt " "from the latest instances of the given channels." msgstr "" #. type: table #: doc/guix.texi:17512 msgid "" "See the hpcguix-web repository for a @uref{https://github.com/UMCUGenetics/" "hpcguix-web/blob/master/hpcweb-configuration.scm, complete example}." msgstr "" #. type: item #: doc/guix.texi:17513 #, no-wrap msgid "@code{package} (default: @code{hpcguix-web})" msgstr "" #. type: table #: doc/guix.texi:17515 msgid "The hpcguix-web package to use." msgstr "" #. type: Plain text #: doc/guix.texi:17519 msgid "A typical hpcguix-web service declaration looks like this:" msgstr "" #. type: example #: doc/guix.texi:17528 #, no-wrap msgid "" "(service hpcguix-web-service-type\n" " (hpcguix-web-configuration\n" " (specs\n" " #~(define site-config\n" " (hpcweb-configuration\n" " (title-prefix \"Guix-HPC - \")\n" " (menu '((\"/about\" \"ABOUT\"))))))))\n" msgstr "" #. type: quotation #: doc/guix.texi:17535 msgid "" "The hpcguix-web service periodically updates the package list it publishes " "by pulling channels from Git. To that end, it needs to access X.509 " "certificates so that it can authenticate Git servers when communicating over " "HTTPS, and it assumes that @file{/etc/ssl/certs} contains those certificates." msgstr "" #. type: quotation #: doc/guix.texi:17539 msgid "" "Thus, make sure to add @code{nss-certs} or another certificate package to " "the @code{packages} field of your configuration. @ref{X.509 Certificates}, " "for more information on X.509 certificates." msgstr "" #. type: cindex #: doc/guix.texi:17544 #, no-wrap msgid "Web" msgstr "" #. type: cindex #: doc/guix.texi:17545 #, no-wrap msgid "HTTP, HTTPS" msgstr "" #. type: cindex #: doc/guix.texi:17546 #, no-wrap msgid "Let's Encrypt" msgstr "" #. type: cindex #: doc/guix.texi:17547 #, no-wrap msgid "TLS certificates" msgstr "" #. type: Plain text #: doc/guix.texi:17554 msgid "" "The @code{(gnu services certbot)} module provides a service to automatically " "obtain a valid TLS certificate from the Let's Encrypt certificate " "authority. These certificates can then be used to serve content securely " "over HTTPS or other TLS-based protocols, with the knowledge that the client " "will be able to verify the server's authenticity." msgstr "" #. type: Plain text #: doc/guix.texi:17566 msgid "" "@url{https://letsencrypt.org/, Let's Encrypt} provides the @code{certbot} " "tool to automate the certification process. This tool first securely " "generates a key on the server. It then makes a request to the Let's Encrypt " "certificate authority (CA) to sign the key. The CA checks that the request " "originates from the host in question by using a challenge-response protocol, " "requiring the server to provide its response over HTTP. If that protocol " "completes successfully, the CA signs the key, resulting in a certificate. " "That certificate is valid for a limited period of time, and therefore to " "continue to provide TLS services, the server needs to periodically ask the " "CA to renew its signature." msgstr "" #. type: Plain text #: doc/guix.texi:17573 msgid "" "The certbot service automates this process: the initial key generation, the " "initial certification request to the Let's Encrypt service, the web server " "challenge/response integration, writing the certificate to disk, the " "automated periodic renewals, and the deployment tasks associated with the " "renewal (e.g. reloading services, copying keys with different permissions)." msgstr "" #. type: Plain text #: doc/guix.texi:17579 msgid "" "Certbot is run twice a day, at a random minute within the hour. It won't do " "anything until your certificates are due for renewal or revoked, but running " "it regularly would give your service a chance of staying online in case a " "Let's Encrypt-initiated revocation happened for some reason." msgstr "" #. type: Plain text #: doc/guix.texi:17583 msgid "" "By using this service, you agree to the ACME Subscriber Agreement, which can " "be found there: @url{https://acme-v01.api.letsencrypt.org/directory}." msgstr "" #. type: defvr #: doc/guix.texi:17584 #, no-wrap msgid "{Scheme Variable} certbot-service-type" msgstr "" #. type: defvr #: doc/guix.texi:17587 msgid "" "A service type for the @code{certbot} Let's Encrypt client. Its value must " "be a @code{certbot-configuration} record as in this example:" msgstr "" #. type: example #: doc/guix.texi:17594 #, no-wrap msgid "" "(define %nginx-deploy-hook\n" " (program-file\n" " \"nginx-deploy-hook\"\n" " #~(let ((pid (call-with-input-file \"/var/run/nginx/pid\" read)))\n" " (kill pid SIGHUP))))\n" "\n" msgstr "" #. type: example #: doc/guix.texi:17605 #, no-wrap msgid "" "(service certbot-service-type\n" " (certbot-configuration\n" " (email \"foo@@example.net\")\n" " (certificates\n" " (list\n" " (certificate-configuration\n" " (domains '(\"example.net\" \"www.example.net\"))\n" " (deploy-hook %nginx-deploy-hook))\n" " (certificate-configuration\n" " (domains '(\"bar.example.net\")))))))\n" msgstr "" #. type: defvr #: doc/guix.texi:17608 msgid "See below for details about @code{certbot-configuration}." msgstr "" #. type: deftp #: doc/guix.texi:17610 #, no-wrap msgid "{Data Type} certbot-configuration" msgstr "" #. type: deftp #: doc/guix.texi:17613 msgid "" "Data type representing the configuration of the @code{certbot} service. " "This type has the following parameters:" msgstr "" #. type: item #: doc/guix.texi:17615 #, no-wrap msgid "@code{package} (default: @code{certbot})" msgstr "" #. type: table #: doc/guix.texi:17617 msgid "The certbot package to use." msgstr "" #. type: item #: doc/guix.texi:17618 #, no-wrap msgid "@code{webroot} (default: @code{/var/www})" msgstr "" #. type: table #: doc/guix.texi:17621 msgid "" "The directory from which to serve the Let's Encrypt challenge/response files." msgstr "" #. type: item #: doc/guix.texi:17622 #, no-wrap msgid "@code{certificates} (default: @code{()})" msgstr "" #. type: table #: doc/guix.texi:17626 msgid "" "A list of @code{certificates-configuration}s for which to generate " "certificates and request signatures. Each certificate has a @code{name} and " "several @code{domains}." msgstr "" #. type: table #: doc/guix.texi:17630 msgid "" "Mandatory email used for registration, recovery contact, and important " "account notifications." msgstr "" #. type: item #: doc/guix.texi:17631 #, no-wrap msgid "@code{rsa-key-size} (default: @code{2048})" msgstr "" #. type: table #: doc/guix.texi:17633 msgid "Size of the RSA key." msgstr "" #. type: item #: doc/guix.texi:17634 #, no-wrap msgid "@code{default-location} (default: @i{see below})" msgstr "" #. type: table #: doc/guix.texi:17643 msgid "" "The default @code{nginx-location-configuration}. Because @code{certbot} " "needs to be able to serve challenges and responses, it needs to be able to " "run a web server. It does so by extending the @code{nginx} web service with " "an @code{nginx-server-configuration} listening on the @var{domains} on port " "80, and which has a @code{nginx-location-configuration} for the @code{/.well-" "known/} URI path subspace used by Let's Encrypt. @xref{Web Services}, for " "more on these nginx configuration data types." msgstr "" #. type: table #: doc/guix.texi:17647 msgid "" "Requests to other URL paths will be matched by the @code{default-location}, " "which if present is added to all @code{nginx-server-configuration}s." msgstr "" #. type: table #: doc/guix.texi:17651 msgid "" "By default, the @code{default-location} will issue a redirect from " "@code{http://@var{domain}/...} to @code{https://@var{domain}/...}, leaving " "you to define what to serve on your site via @code{https}." msgstr "" #. type: table #: doc/guix.texi:17653 msgid "Pass @code{#f} to not issue a default location." msgstr "" #. type: deftp #: doc/guix.texi:17656 #, no-wrap msgid "{Data Type} certificate-configuration" msgstr "" #. type: deftp #: doc/guix.texi:17659 msgid "" "Data type representing the configuration of a certificate. This type has " "the following parameters:" msgstr "" #. type: item #: doc/guix.texi:17661 #, no-wrap msgid "@code{name} (default: @i{see below})" msgstr "" #. type: table #: doc/guix.texi:17665 msgid "" "This name is used by Certbot for housekeeping and in file paths; it doesn't " "affect the content of the certificate itself. To see certificate names, run " "@code{certbot certificates}." msgstr "" #. type: table #: doc/guix.texi:17667 msgid "Its default is the first provided domain." msgstr "" #. type: item #: doc/guix.texi:17668 #, no-wrap msgid "@code{domains} (default: @code{()})" msgstr "" #. type: table #: doc/guix.texi:17671 msgid "" "The first domain provided will be the subject CN of the certificate, and all " "domains will be Subject Alternative Names on the certificate." msgstr "" #. type: item #: doc/guix.texi:17672 #, no-wrap msgid "@code{deploy-hook} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:17680 msgid "" "Command to be run in a shell once for each successfully issued certificate. " "For this command, the shell variable @code{$RENEWED_LINEAGE} will point to " "the config live subdirectory (for example, @samp{\"/etc/letsencrypt/live/" "example.com\"}) containing the new certificates and keys; the shell variable " "@code{$RENEWED_DOMAINS} will contain a space-delimited list of renewed " "certificate domains (for example, @samp{\"example.com www.example.com\"}." msgstr "" #. type: Plain text #: doc/guix.texi:17687 msgid "" "For each @code{certificate-configuration}, the certificate is saved to " "@code{/etc/letsencrypt/live/@var{name}/fullchain.pem} and the key is saved " "to @code{/etc/letsencrypt/live/@var{name}/privkey.pem}." msgstr "" #. type: cindex #: doc/guix.texi:17689 #, no-wrap msgid "DNS (domain name system)" msgstr "" #. type: cindex #: doc/guix.texi:17690 #, no-wrap msgid "domain name system (DNS)" msgstr "" #. type: Plain text #: doc/guix.texi:17698 msgid "" "The @code{(gnu services dns)} module provides services related to the " "@dfn{domain name system} (DNS). It provides a server service for hosting an " "@emph{authoritative} DNS server for multiple zones, slave or master. This " "service uses @uref{https://www.knot-dns.cz/, Knot DNS}. And also a caching " "and forwarding DNS server for the LAN, which uses @uref{http://www." "thekelleys.org.uk/dnsmasq/doc.html, dnsmasq}." msgstr "" #. type: subsubheading #: doc/guix.texi:17699 #, no-wrap msgid "Knot Service" msgstr "" #. type: Plain text #: doc/guix.texi:17703 msgid "" "An example configuration of an authoritative server for two zones, one " "master and one slave, is:" msgstr "" #. type: lisp #: doc/guix.texi:17710 #, no-wrap msgid "" "(define-zone-entries example.org.zone\n" ";; Name TTL Class Type Data\n" " (\"@@\" \"\" \"IN\" \"A\" \"127.0.0.1\")\n" " (\"@@\" \"\" \"IN\" \"NS\" \"ns\")\n" " (\"ns\" \"\" \"IN\" \"A\" \"127.0.0.1\"))\n" "\n" msgstr "" #. type: lisp #: doc/guix.texi:17717 #, no-wrap msgid "" "(define master-zone\n" " (knot-zone-configuration\n" " (domain \"example.org\")\n" " (zone (zone-file\n" " (origin \"example.org\")\n" " (entries example.org.zone)))))\n" "\n" msgstr "" #. type: lisp #: doc/guix.texi:17723 #, no-wrap msgid "" "(define slave-zone\n" " (knot-zone-configuration\n" " (domain \"plop.org\")\n" " (dnssec-policy \"default\")\n" " (master (list \"plop-master\"))))\n" "\n" msgstr "" #. type: lisp #: doc/guix.texi:17728 #, no-wrap msgid "" "(define plop-master\n" " (knot-remote-configuration\n" " (id \"plop-master\")\n" " (address (list \"208.76.58.171\"))))\n" "\n" msgstr "" #. type: lisp #: doc/guix.texi:17737 #, no-wrap msgid "" "(operating-system\n" " ;; ...\n" " (services (cons* (service knot-service-type\n" " (knot-configuration\n" " (remotes (list plop-master))\n" " (zones (list master-zone slave-zone))))\n" " ;; ...\n" " %base-services)))\n" msgstr "" #. type: deffn #: doc/guix.texi:17739 #, no-wrap msgid "{Scheme Variable} knot-service-type" msgstr "" #. type: deffn #: doc/guix.texi:17741 msgid "This is the type for the Knot DNS server." msgstr "" #. type: deffn #: doc/guix.texi:17749 msgid "" "Knot DNS is an authoritative DNS server, meaning that it can serve multiple " "zones, that is to say domain names you would buy from a registrar. This " "server is not a resolver, meaning that it can only resolve names for which " "it is authoritative. This server can be configured to serve zones as a " "master server or a slave server as a per-zone basis. Slave zones will get " "their data from masters, and will serve it as an authoritative server. From " "the point of view of a resolver, there is no difference between master and " "slave." msgstr "" #. type: deffn #: doc/guix.texi:17751 msgid "The following data types are used to configure the Knot DNS server:" msgstr "" #. type: deftp #: doc/guix.texi:17753 #, no-wrap msgid "{Data Type} knot-key-configuration" msgstr "" #. type: deftp #: doc/guix.texi:17756 msgid "Data type representing a key. This type has the following parameters:" msgstr "" #. type: item #: doc/guix.texi:17758 doc/guix.texi:17778 doc/guix.texi:17893 #: doc/guix.texi:17919 doc/guix.texi:17954 #, no-wrap msgid "@code{id} (default: @code{\"\"})" msgstr "" #. type: table #: doc/guix.texi:17761 msgid "" "An identifier for other configuration fields to refer to this key. IDs must " "be unique and must not be empty." msgstr "" #. type: item #: doc/guix.texi:17762 #, no-wrap msgid "@code{algorithm} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:17766 msgid "" "The algorithm to use. Choose between @code{#f}, @code{'hmac-md5}, " "@code{'hmac-sha1}, @code{'hmac-sha224}, @code{'hmac-sha256}, @code{'hmac-" "sha384} and @code{'hmac-sha512}." msgstr "" #. type: item #: doc/guix.texi:17767 #, no-wrap msgid "@code{secret} (default: @code{\"\"})" msgstr "" #. type: table #: doc/guix.texi:17769 msgid "The secret key itself." msgstr "" #. type: deftp #: doc/guix.texi:17773 #, no-wrap msgid "{Data Type} knot-acl-configuration" msgstr "" #. type: deftp #: doc/guix.texi:17776 msgid "" "Data type representing an Access Control List (ACL) configuration. This " "type has the following parameters:" msgstr "" #. type: table #: doc/guix.texi:17781 msgid "" "An identifier for ether configuration fields to refer to this key. IDs must " "be unique and must not be empty." msgstr "" #. type: item #: doc/guix.texi:17782 doc/guix.texi:17897 #, no-wrap msgid "@code{address} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:17786 msgid "" "An ordered list of IP addresses, network subnets, or network ranges " "represented with strings. The query must match one of them. Empty value " "means that address match is not required." msgstr "" #. type: item #: doc/guix.texi:17787 #, no-wrap msgid "@code{key} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:17791 msgid "" "An ordered list of references to keys represented with strings. The string " "must match a key ID defined in a @code{knot-key-configuration}. No key " "means that a key is not require to match that ACL." msgstr "" #. type: item #: doc/guix.texi:17792 #, no-wrap msgid "@code{action} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:17796 msgid "" "An ordered list of actions that are permitted or forbidden by this ACL. " "Possible values are lists of zero or more elements from @code{'transfer}, " "@code{'notify} and @code{'update}." msgstr "" #. type: item #: doc/guix.texi:17797 #, no-wrap msgid "@code{deny?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:17800 msgid "" "When true, the ACL defines restrictions. Listed actions are forbidden. " "When false, listed actions are allowed." msgstr "" #. type: deftp #: doc/guix.texi:17804 #, no-wrap msgid "{Data Type} zone-entry" msgstr "" #. type: deftp #: doc/guix.texi:17807 msgid "" "Data type represnting a record entry in a zone file. This type has the " "following parameters:" msgstr "" #. type: item #: doc/guix.texi:17809 #, no-wrap msgid "@code{name} (default: @code{\"@@\"})" msgstr "" #. type: table #: doc/guix.texi:17815 msgid "" "The name of the record. @code{\"@@\"} refers to the origin of the zone. " "Names are relative to the origin of the zone. For example, in the " "@code{example.org} zone, @code{\"ns.example.org\"} actually refers to " "@code{ns.example.org.example.org}. Names ending with a dot are absolute, " "which means that @code{\"ns.example.org.\"} refers to @code{ns.example.org}." msgstr "" #. type: item #: doc/guix.texi:17816 #, no-wrap msgid "@code{ttl} (default: @code{\"\"})" msgstr "" #. type: table #: doc/guix.texi:17818 msgid "" "The Time-To-Live (TTL) of this record. If not set, the default TTL is used." msgstr "" #. type: item #: doc/guix.texi:17819 #, no-wrap msgid "@code{class} (default: @code{\"IN\"})" msgstr "" #. type: table #: doc/guix.texi:17822 msgid "" "The class of the record. Knot currently supports only @code{\"IN\"} and " "partially @code{\"CH\"}." msgstr "" #. type: item #: doc/guix.texi:17823 #, no-wrap msgid "@code{type} (default: @code{\"A\"})" msgstr "" #. type: table #: doc/guix.texi:17827 msgid "" "The type of the record. Common types include A (IPv4 address), AAAA (IPv6 " "address), NS (Name Server) and MX (Mail eXchange). Many other types are " "defined." msgstr "" #. type: item #: doc/guix.texi:17828 #, no-wrap msgid "@code{data} (default: @code{\"\"})" msgstr "" #. type: table #: doc/guix.texi:17832 msgid "" "The data contained in the record. For instance an IP address associated " "with an A record, or a domain name associated with an NS record. Remember " "that domain names are relative to the origin unless they end with a dot." msgstr "" #. type: deftp #: doc/guix.texi:17836 #, no-wrap msgid "{Data Type} zone-file" msgstr "" #. type: deftp #: doc/guix.texi:17839 msgid "" "Data type representing the content of a zone file. This type has the " "following parameters:" msgstr "" #. type: table #: doc/guix.texi:17848 msgid "" "The list of entries. The SOA record is taken care of, so you don't need to " "put it in the list of entries. This list should probably contain an entry " "for your primary authoritative DNS server. Other than using a list of " "entries directly, you can use @code{define-zone-entries} to define a object " "containing the list of entries more easily, that you can later pass to the " "@code{entries} field of the @code{zone-file}." msgstr "" #. type: item #: doc/guix.texi:17849 #, no-wrap msgid "@code{origin} (default: @code{\"\"})" msgstr "" #. type: table #: doc/guix.texi:17851 msgid "The name of your zone. This parameter cannot be empty." msgstr "" #. type: item #: doc/guix.texi:17852 #, no-wrap msgid "@code{ns} (default: @code{\"ns\"})" msgstr "" #. type: table #: doc/guix.texi:17857 msgid "" "The domain of your primary authoritative DNS server. The name is relative " "to the origin, unless it ends with a dot. It is mandatory that this primary " "DNS server corresponds to an NS record in the zone and that it is associated " "to an IP address in the list of entries." msgstr "" #. type: item #: doc/guix.texi:17858 #, no-wrap msgid "@code{mail} (default: @code{\"hostmaster\"})" msgstr "" #. type: table #: doc/guix.texi:17861 msgid "" "An email address people can contact you at, as the owner of the zone. This " "is translated as @code{@@}." msgstr "" #. type: item #: doc/guix.texi:17862 #, no-wrap msgid "@code{serial} (default: @code{1})" msgstr "" #. type: table #: doc/guix.texi:17866 msgid "" "The serial number of the zone. As this is used to keep track of changes by " "both slaves and resolvers, it is mandatory that it @emph{never} decreases. " "Always increment it when you make a change in your zone." msgstr "" #. type: item #: doc/guix.texi:17867 #, no-wrap msgid "@code{refresh} (default: @code{(* 2 24 3600)})" msgstr "" #. type: table #: doc/guix.texi:17871 msgid "" "The frequency at which slaves will do a zone transfer. This value is a " "number of seconds. It can be computed by multiplications or with " "@code{(string->duration)}." msgstr "" #. type: item #: doc/guix.texi:17872 #, no-wrap msgid "@code{retry} (default: @code{(* 15 60)})" msgstr "" #. type: table #: doc/guix.texi:17875 msgid "" "The period after which a slave will retry to contact its master when it " "fails to do so a first time." msgstr "" #. type: item #: doc/guix.texi:17876 #, no-wrap msgid "@code{expiry} (default: @code{(* 14 24 3600)})" msgstr "" #. type: table #: doc/guix.texi:17880 msgid "" "Default TTL of records. Existing records are considered correct for at most " "this amount of time. After this period, resolvers will invalidate their " "cache and check again that it still exists." msgstr "" #. type: item #: doc/guix.texi:17881 #, no-wrap msgid "@code{nx} (default: @code{3600})" msgstr "" #. type: table #: doc/guix.texi:17884 msgid "" "Default TTL of inexistant records. This delay is usually short because you " "want your new domains to reach everyone quickly." msgstr "" #. type: deftp #: doc/guix.texi:17888 #, no-wrap msgid "{Data Type} knot-remote-configuration" msgstr "" #. type: deftp #: doc/guix.texi:17891 msgid "" "Data type representing a remote configuration. This type has the following " "parameters:" msgstr "" #. type: table #: doc/guix.texi:17896 msgid "" "An identifier for other configuration fields to refer to this remote. IDs " "must be unique and must not be empty." msgstr "" #. type: table #: doc/guix.texi:17901 msgid "" "An ordered list of destination IP addresses. Addresses are tried in " "sequence. An optional port can be given with the @@ separator. For " "instance: @code{(list \"1.2.3.4\" \"2.3.4.5@@53\")}. Default port is 53." msgstr "" #. type: item #: doc/guix.texi:17902 #, no-wrap msgid "@code{via} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:17906 msgid "" "An ordered list of source IP addresses. An empty list will have Knot choose " "an appropriate source IP. An optional port can be given with the @@ " "separator. The default is to choose at random." msgstr "" #. type: item #: doc/guix.texi:17907 #, no-wrap msgid "@code{key} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:17910 msgid "" "A reference to a key, that is a string containing the identifier of a key " "defined in a @code{knot-key-configuration} field." msgstr "" #. type: deftp #: doc/guix.texi:17914 #, no-wrap msgid "{Data Type} knot-keystore-configuration" msgstr "" #. type: deftp #: doc/guix.texi:17917 msgid "" "Data type representing a keystore to hold dnssec keys. This type has the " "following parameters:" msgstr "" #. type: table #: doc/guix.texi:17921 msgid "The id of the keystore. It must not be empty." msgstr "" #. type: item #: doc/guix.texi:17922 #, no-wrap msgid "@code{backend} (default: @code{'pem})" msgstr "" #. type: table #: doc/guix.texi:17924 msgid "" "The backend to store the keys in. Can be @code{'pem} or @code{'pkcs11}." msgstr "" #. type: item #: doc/guix.texi:17925 #, no-wrap msgid "@code{config} (default: @code{\"/var/lib/knot/keys/keys\"})" msgstr "" #. type: table #: doc/guix.texi:17929 msgid "" "The configuration string of the backend. An example for the PKCS#11 is: " "@code{\"pkcs11:token=knot;pin-value=1234 /gnu/store/.../lib/pkcs11/" "libsofthsm2.so\"}. For the pem backend, the string reprensents a path in " "the file system." msgstr "" #. type: deftp #: doc/guix.texi:17933 #, no-wrap msgid "{Data Type} knot-policy-configuration" msgstr "" #. type: deftp #: doc/guix.texi:17937 msgid "" "Data type representing a dnssec policy. Knot DNS is able to automatically " "sign your zones. It can either generate and manage your keys automatically " "or use keys that you generate." msgstr "" #. type: deftp #: doc/guix.texi:17944 msgid "" "Dnssec is usually implemented using two keys: a Key Signing Key (KSK) that " "is used to sign the second, and a Zone Signing Key (ZSK) that is used to " "sign the zone. In order to be trusted, the KSK needs to be present in the " "parent zone (usually a top-level domain). If your registrar supports " "dnssec, you will have to send them your KSK's hash so they can add a DS " "record in their zone. This is not automated and need to be done each time " "you change your KSK." msgstr "" #. type: deftp #: doc/guix.texi:17950 msgid "" "The policy also defines the lifetime of keys. Usually, ZSK can be changed " "easily and use weaker cryptographic functions (they use lower parameters) in " "order to sign records quickly, so they are changed often. The KSK however " "requires manual interaction with the registrar, so they are changed less " "often and use stronger parameters because they sign only one record." msgstr "" #. type: deftp #: doc/guix.texi:17952 msgid "This type has the following parameters:" msgstr "" #. type: table #: doc/guix.texi:17956 msgid "The id of the policy. It must not be empty." msgstr "" #. type: item #: doc/guix.texi:17957 #, no-wrap msgid "@code{keystore} (default: @code{\"default\"})" msgstr "" #. type: table #: doc/guix.texi:17962 msgid "" "A reference to a keystore, that is a string containing the identifier of a " "keystore defined in a @code{knot-keystore-configuration} field. The " "@code{\"default\"} identifier means the default keystore (a kasp database " "that was setup by this service)." msgstr "" #. type: item #: doc/guix.texi:17963 #, no-wrap msgid "@code{manual?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:17965 msgid "Whether the key management is manual or automatic." msgstr "" #. type: item #: doc/guix.texi:17966 #, no-wrap msgid "@code{single-type-signing?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:17968 msgid "When @code{#t}, use the Single-Type Signing Scheme." msgstr "" #. type: item #: doc/guix.texi:17969 #, no-wrap msgid "@code{algorithm} (default: @code{\"ecdsap256sha256\"})" msgstr "" #. type: table #: doc/guix.texi:17971 msgid "An algorithm of signing keys and issued signatures." msgstr "" #. type: item #: doc/guix.texi:17972 #, no-wrap msgid "@code{ksk-size} (default: @code{256})" msgstr "" #. type: table #: doc/guix.texi:17975 msgid "" "The length of the KSK. Note that this value is correct for the default " "algorithm, but would be unsecure for other algorithms." msgstr "" #. type: item #: doc/guix.texi:17976 #, no-wrap msgid "@code{zsk-size} (default: @code{256})" msgstr "" #. type: table #: doc/guix.texi:17979 msgid "" "The length of the ZSK. Note that this value is correct for the default " "algorithm, but would be unsecure for other algorithms." msgstr "" #. type: item #: doc/guix.texi:17980 #, no-wrap msgid "@code{dnskey-ttl} (default: @code{'default})" msgstr "" #. type: table #: doc/guix.texi:17983 msgid "" "The TTL value for DNSKEY records added into zone apex. The special " "@code{'default} value means same as the zone SOA TTL." msgstr "" #. type: item #: doc/guix.texi:17984 #, no-wrap msgid "@code{zsk-lifetime} (default: @code{(* 30 24 3600)})" msgstr "" #. type: table #: doc/guix.texi:17986 msgid "The period between ZSK publication and the next rollover initiation." msgstr "" #. type: item #: doc/guix.texi:17987 #, no-wrap msgid "@code{propagation-delay} (default: @code{(* 24 3600)})" msgstr "" #. type: table #: doc/guix.texi:17990 msgid "" "An extra delay added for each key rollover step. This value should be high " "enough to cover propagation of data from the master server to all slaves." msgstr "" #. type: item #: doc/guix.texi:17991 #, no-wrap msgid "@code{rrsig-lifetime} (default: @code{(* 14 24 3600)})" msgstr "" #. type: table #: doc/guix.texi:17993 msgid "A validity period of newly issued signatures." msgstr "" #. type: item #: doc/guix.texi:17994 #, no-wrap msgid "@code{rrsig-refresh} (default: @code{(* 7 24 3600)})" msgstr "" #. type: table #: doc/guix.texi:17996 msgid "" "A period how long before a signature expiration the signature will be " "refreshed." msgstr "" #. type: item #: doc/guix.texi:17997 #, no-wrap msgid "@code{nsec3?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:17999 msgid "When @code{#t}, NSEC3 will be used instead of NSEC." msgstr "" #. type: item #: doc/guix.texi:18000 #, no-wrap msgid "@code{nsec3-iterations} (default: @code{5})" msgstr "" #. type: table #: doc/guix.texi:18002 msgid "The number of additional times the hashing is performed." msgstr "" #. type: item #: doc/guix.texi:18003 #, no-wrap msgid "@code{nsec3-salt-length} (default: @code{8})" msgstr "" #. type: table #: doc/guix.texi:18006 msgid "" "The length of a salt field in octets, which is appended to the original " "owner name before hashing." msgstr "" #. type: item #: doc/guix.texi:18007 #, no-wrap msgid "@code{nsec3-salt-lifetime} (default: @code{(* 30 24 3600)})" msgstr "" #. type: table #: doc/guix.texi:18009 msgid "The validity period of newly issued salt field." msgstr "" #. type: deftp #: doc/guix.texi:18013 #, no-wrap msgid "{Data Type} knot-zone-configuration" msgstr "" #. type: deftp #: doc/guix.texi:18016 msgid "" "Data type representing a zone served by Knot. This type has the following " "parameters:" msgstr "" #. type: item #: doc/guix.texi:18018 #, no-wrap msgid "@code{domain} (default: @code{\"\"})" msgstr "" #. type: table #: doc/guix.texi:18020 msgid "The domain served by this configuration. It must not be empty." msgstr "" #. type: item #: doc/guix.texi:18021 #, no-wrap msgid "@code{file} (default: @code{\"\"})" msgstr "" #. type: table #: doc/guix.texi:18024 msgid "" "The file where this zone is saved. This parameter is ignored by master " "zones. Empty means default location that depends on the domain name." msgstr "" #. type: item #: doc/guix.texi:18025 #, no-wrap msgid "@code{zone} (default: @code{(zone-file)})" msgstr "" #. type: table #: doc/guix.texi:18028 msgid "" "The content of the zone file. This parameter is ignored by slave zones. It " "must contain a zone-file record." msgstr "" #. type: item #: doc/guix.texi:18029 #, no-wrap msgid "@code{master} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:18032 msgid "" "A list of master remotes. When empty, this zone is a master. When set, " "this zone is a slave. This is a list of remotes identifiers." msgstr "" #. type: item #: doc/guix.texi:18033 #, no-wrap msgid "@code{ddns-master} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:18036 msgid "" "The main master. When empty, it defaults to the first master in the list of " "masters." msgstr "" #. type: item #: doc/guix.texi:18037 #, no-wrap msgid "@code{notify} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:18039 msgid "A list of slave remote identifiers." msgstr "" #. type: item #: doc/guix.texi:18040 #, no-wrap msgid "@code{acl} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:18042 msgid "A list of acl identifiers." msgstr "" #. type: item #: doc/guix.texi:18043 #, no-wrap msgid "@code{semantic-checks?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:18045 msgid "When set, this adds more semantic checks to the zone." msgstr "" #. type: item #: doc/guix.texi:18046 #, no-wrap msgid "@code{disable-any?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:18048 msgid "When set, this forbids queries of the ANY type." msgstr "" #. type: item #: doc/guix.texi:18049 #, no-wrap msgid "@code{zonefile-sync} (default: @code{0})" msgstr "" #. type: table #: doc/guix.texi:18052 msgid "" "The delay between a modification in memory and on disk. 0 means immediate " "synchronization." msgstr "" #. type: item #: doc/guix.texi:18053 #, no-wrap msgid "@code{serial-policy} (default: @code{'increment})" msgstr "" #. type: table #: doc/guix.texi:18055 msgid "A policy between @code{'increment} and @code{'unixtime}." msgstr "" #. type: deftp #: doc/guix.texi:18059 #, no-wrap msgid "{Data Type} knot-configuration" msgstr "" #. type: deftp #: doc/guix.texi:18062 msgid "" "Data type representing the Knot configuration. This type has the following " "parameters:" msgstr "" #. type: item #: doc/guix.texi:18064 #, no-wrap msgid "@code{knot} (default: @code{knot})" msgstr "" #. type: table #: doc/guix.texi:18066 msgid "The Knot package." msgstr "" #. type: item #: doc/guix.texi:18067 #, no-wrap msgid "@code{run-directory} (default: @code{\"/var/run/knot\"})" msgstr "" #. type: table #: doc/guix.texi:18069 msgid "" "The run directory. This directory will be used for pid file and sockets." msgstr "" #. type: item #: doc/guix.texi:18070 #, no-wrap msgid "@code{listen-v4} (default: @code{\"0.0.0.0\"})" msgstr "" #. type: table #: doc/guix.texi:18072 doc/guix.texi:18075 msgid "An ip address on which to listen." msgstr "" #. type: item #: doc/guix.texi:18073 #, no-wrap msgid "@code{listen-v6} (default: @code{\"::\"})" msgstr "" #. type: item #: doc/guix.texi:18076 #, no-wrap msgid "@code{listen-port} (default: @code{53})" msgstr "" #. type: table #: doc/guix.texi:18078 msgid "A port on which to listen." msgstr "" #. type: item #: doc/guix.texi:18079 #, no-wrap msgid "@code{keys} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:18081 msgid "The list of knot-key-configuration used by this configuration." msgstr "" #. type: item #: doc/guix.texi:18082 #, no-wrap msgid "@code{acls} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:18084 msgid "The list of knot-acl-configuration used by this configuration." msgstr "" #. type: item #: doc/guix.texi:18085 #, no-wrap msgid "@code{remotes} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:18087 msgid "The list of knot-remote-configuration used by this configuration." msgstr "" #. type: item #: doc/guix.texi:18088 #, no-wrap msgid "@code{zones} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:18090 msgid "The list of knot-zone-configuration used by this configuration." msgstr "" #. type: subsubheading #: doc/guix.texi:18094 #, no-wrap msgid "Dnsmasq Service" msgstr "" #. type: deffn #: doc/guix.texi:18096 #, no-wrap msgid "{Scheme Variable} dnsmasq-service-type" msgstr "" #. type: deffn #: doc/guix.texi:18099 msgid "" "This is the type of the dnsmasq service, whose value should be an " "@code{dnsmasq-configuration} object as in this example:" msgstr "" #. type: example #: doc/guix.texi:18105 #, no-wrap msgid "" "(service dnsmasq-service-type\n" " (dnsmasq-configuration\n" " (no-resolv? #t)\n" " (servers '(\"192.168.1.1\"))))\n" msgstr "" #. type: deftp #: doc/guix.texi:18108 #, no-wrap msgid "{Data Type} dnsmasq-configuration" msgstr "" #. type: deftp #: doc/guix.texi:18110 msgid "Data type representing the configuration of dnsmasq." msgstr "" #. type: item #: doc/guix.texi:18112 #, no-wrap msgid "@code{package} (default: @var{dnsmasq})" msgstr "" #. type: table #: doc/guix.texi:18114 msgid "Package object of the dnsmasq server." msgstr "" #. type: item #: doc/guix.texi:18115 #, no-wrap msgid "@code{no-hosts?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:18117 msgid "When true, don't read the hostnames in /etc/hosts." msgstr "" #. type: item #: doc/guix.texi:18118 #, no-wrap msgid "@code{port} (default: @code{53})" msgstr "" #. type: table #: doc/guix.texi:18121 msgid "" "The port to listen on. Setting this to zero completely disables DNS " "responses, leaving only DHCP and/or TFTP functions." msgstr "" #. type: item #: doc/guix.texi:18122 #, no-wrap msgid "@code{local-service?} (default: @code{#t})" msgstr "" #. type: table #: doc/guix.texi:18125 msgid "" "Accept DNS queries only from hosts whose address is on a local subnet, ie a " "subnet for which an interface exists on the server." msgstr "" #. type: item #: doc/guix.texi:18126 #, no-wrap msgid "@code{listen-addresses} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:18128 msgid "Listen on the given IP addresses." msgstr "" #. type: item #: doc/guix.texi:18129 #, no-wrap msgid "@code{resolv-file} (default: @code{\"/etc/resolv.conf\"})" msgstr "" #. type: table #: doc/guix.texi:18131 msgid "The file to read the IP address of the upstream nameservers from." msgstr "" #. type: item #: doc/guix.texi:18132 #, no-wrap msgid "@code{no-resolv?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:18134 msgid "When true, don't read @var{resolv-file}." msgstr "" #. type: table #: doc/guix.texi:18137 msgid "Specify IP address of upstream servers directly." msgstr "" #. type: item #: doc/guix.texi:18138 #, no-wrap msgid "@code{cache-size} (default: @code{150})" msgstr "" #. type: table #: doc/guix.texi:18141 msgid "" "Set the size of dnsmasq's cache. Setting the cache size to zero disables " "caching." msgstr "" #. type: item #: doc/guix.texi:18142 #, no-wrap msgid "@code{negative-cache?} (default: @code{#t})" msgstr "" #. type: table #: doc/guix.texi:18144 msgid "When false, disable negative caching." msgstr "" #. type: subsubheading #: doc/guix.texi:18148 #, no-wrap msgid "ddclient Service" msgstr "" #. type: cindex #: doc/guix.texi:18150 #, no-wrap msgid "ddclient" msgstr "" #. type: Plain text #: doc/guix.texi:18154 msgid "" "The ddclient service described below runs the ddclient daemon, which takes " "care of automatically updating DNS entries for service providers such as " "@uref{https://dyn.com/dns/, Dyn}." msgstr "" #. type: Plain text #: doc/guix.texi:18157 msgid "" "The following example show instantiates the service with its default " "configuration:" msgstr "" #. type: example #: doc/guix.texi:18160 #, no-wrap msgid "(service ddclient-service-type)\n" msgstr "" #. type: Plain text #: doc/guix.texi:18169 msgid "" "Note that ddclient needs to access credentials that are stored in a " "@dfn{secret file}, by default @file{/etc/ddclient/secrets} (see @code{secret-" "file} below.) You are expected to create this file manually, in an ``out-of-" "band'' fashion (you @emph{could} make this file part of the service " "configuration, for instance by using @code{plain-file}, but it will be world-" "readable @i{via} @file{/gnu/store}.) See the examples in the @file{share/" "ddclient} directory of the @code{ddclient} package." msgstr "" #. type: Plain text #: doc/guix.texi:18173 msgid "Available @code{ddclient-configuration} fields are:" msgstr "" #. type: deftypevr #: doc/guix.texi:18174 #, no-wrap msgid "{@code{ddclient-configuration} parameter} package ddclient" msgstr "" #. type: deftypevr #: doc/guix.texi:18176 msgid "The ddclient package." msgstr "" #. type: deftypevr #: doc/guix.texi:18179 #, no-wrap msgid "{@code{ddclient-configuration} parameter} integer daemon" msgstr "" #. type: deftypevr #: doc/guix.texi:18181 msgid "The period after which ddclient will retry to check IP and domain name." msgstr "" #. type: deftypevr #: doc/guix.texi:18186 #, no-wrap msgid "{@code{ddclient-configuration} parameter} boolean syslog" msgstr "" #. type: deftypevr #: doc/guix.texi:18188 msgid "Use syslog for the output." msgstr "" #. type: deftypevr #: doc/guix.texi:18193 #, no-wrap msgid "{@code{ddclient-configuration} parameter} string mail" msgstr "" #. type: deftypevr #: doc/guix.texi:18195 msgid "Mail to user." msgstr "" #. type: deftypevr #: doc/guix.texi:18197 doc/guix.texi:18204 doc/guix.texi:19532 msgid "Defaults to @samp{\"root\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:18200 #, no-wrap msgid "{@code{ddclient-configuration} parameter} string mail-failure" msgstr "" #. type: deftypevr #: doc/guix.texi:18202 msgid "Mail failed update to user." msgstr "" #. type: deftypevr #: doc/guix.texi:18207 #, no-wrap msgid "{@code{ddclient-configuration} parameter} string pid" msgstr "" #. type: deftypevr #: doc/guix.texi:18209 msgid "The ddclient PID file." msgstr "" #. type: deftypevr #: doc/guix.texi:18211 msgid "Defaults to @samp{\"/var/run/ddclient/ddclient.pid\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:18214 #, no-wrap msgid "{@code{ddclient-configuration} parameter} boolean ssl" msgstr "" #. type: deftypevr #: doc/guix.texi:18216 msgid "Enable SSL support." msgstr "" #. type: deftypevr #: doc/guix.texi:18221 #, no-wrap msgid "{@code{ddclient-configuration} parameter} string user" msgstr "" #. type: deftypevr #: doc/guix.texi:18224 msgid "" "Specifies the user name or ID that is used when running ddclient program." msgstr "" #. type: deftypevr #: doc/guix.texi:18226 doc/guix.texi:18233 msgid "Defaults to @samp{\"ddclient\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:18229 #, no-wrap msgid "{@code{ddclient-configuration} parameter} string group" msgstr "" #. type: deftypevr #: doc/guix.texi:18231 msgid "Group of the user who will run the ddclient program." msgstr "" #. type: deftypevr #: doc/guix.texi:18236 #, no-wrap msgid "{@code{ddclient-configuration} parameter} string secret-file" msgstr "" #. type: deftypevr #: doc/guix.texi:18240 msgid "" "Secret file which will be appended to @file{ddclient.conf} file. This file " "contains credentials for use by ddclient. You are expected to create it " "manually." msgstr "" #. type: deftypevr #: doc/guix.texi:18242 msgid "Defaults to @samp{\"/etc/ddclient/secrets.conf\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:18245 #, no-wrap msgid "{@code{ddclient-configuration} parameter} list extra-options" msgstr "" #. type: deftypevr #: doc/guix.texi:18247 msgid "Extra options will be appended to @file{ddclient.conf} file." msgstr "" #. type: cindex #: doc/guix.texi:18258 #, no-wrap msgid "VPN (virtual private network)" msgstr "" #. type: cindex #: doc/guix.texi:18259 #, no-wrap msgid "virtual private network (VPN)" msgstr "" #. type: Plain text #: doc/guix.texi:18265 msgid "" "The @code{(gnu services vpn)} module provides services related to " "@dfn{virtual private networks} (VPNs). It provides a @emph{client} service " "for your machine to connect to a VPN, and a @emph{servire} service for your " "machine to host a VPN. Both services use @uref{https://openvpn.net/, " "OpenVPN}." msgstr "" #. type: deffn #: doc/guix.texi:18266 #, no-wrap msgid "{Scheme Procedure} openvpn-client-service @" msgstr "" #. type: deffn #: doc/guix.texi:18268 msgid "[#:config (openvpn-client-configuration)]" msgstr "" #. type: deffn #: doc/guix.texi:18270 msgid "" "Return a service that runs @command{openvpn}, a VPN daemon, as a client." msgstr "" #. type: deffn #: doc/guix.texi:18272 #, no-wrap msgid "{Scheme Procedure} openvpn-server-service @" msgstr "" #. type: deffn #: doc/guix.texi:18274 msgid "[#:config (openvpn-server-configuration)]" msgstr "" #. type: deffn #: doc/guix.texi:18276 msgid "" "Return a service that runs @command{openvpn}, a VPN daemon, as a server." msgstr "" #. type: deffn #: doc/guix.texi:18278 msgid "Both can be run simultaneously." msgstr "" #. type: Plain text #: doc/guix.texi:18283 msgid "Available @code{openvpn-client-configuration} fields are:" msgstr "" #. type: deftypevr #: doc/guix.texi:18284 #, no-wrap msgid "{@code{openvpn-client-configuration} parameter} package openvpn" msgstr "" #. type: deftypevr #: doc/guix.texi:18286 doc/guix.texi:18422 msgid "The OpenVPN package." msgstr "" #. type: deftypevr #: doc/guix.texi:18289 #, no-wrap msgid "{@code{openvpn-client-configuration} parameter} string pid-file" msgstr "" #. type: deftypevr #: doc/guix.texi:18291 doc/guix.texi:18427 msgid "The OpenVPN pid file." msgstr "" #. type: deftypevr #: doc/guix.texi:18293 doc/guix.texi:18429 msgid "Defaults to @samp{\"/var/run/openvpn/openvpn.pid\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:18296 #, no-wrap msgid "{@code{openvpn-client-configuration} parameter} proto proto" msgstr "" #. type: deftypevr #: doc/guix.texi:18299 doc/guix.texi:18435 msgid "" "The protocol (UDP or TCP) used to open a channel between clients and servers." msgstr "" #. type: deftypevr #: doc/guix.texi:18301 doc/guix.texi:18437 msgid "Defaults to @samp{udp}." msgstr "" #. type: deftypevr #: doc/guix.texi:18304 #, no-wrap msgid "{@code{openvpn-client-configuration} parameter} dev dev" msgstr "" #. type: deftypevr #: doc/guix.texi:18306 doc/guix.texi:18442 msgid "The device type used to represent the VPN connection." msgstr "" #. type: deftypevr #: doc/guix.texi:18308 doc/guix.texi:18444 msgid "Defaults to @samp{tun}." msgstr "" #. type: deftypevr #: doc/guix.texi:18311 #, no-wrap msgid "{@code{openvpn-client-configuration} parameter} string ca" msgstr "" #. type: deftypevr #: doc/guix.texi:18313 doc/guix.texi:18449 msgid "The certificate authority to check connections against." msgstr "" #. type: deftypevr #: doc/guix.texi:18315 doc/guix.texi:18451 msgid "Defaults to @samp{\"/etc/openvpn/ca.crt\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:18318 #, no-wrap msgid "{@code{openvpn-client-configuration} parameter} string cert" msgstr "" #. type: deftypevr #: doc/guix.texi:18321 doc/guix.texi:18457 msgid "" "The certificate of the machine the daemon is running on. It should be " "signed by the authority given in @code{ca}." msgstr "" #. type: deftypevr #: doc/guix.texi:18323 doc/guix.texi:18459 msgid "Defaults to @samp{\"/etc/openvpn/client.crt\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:18326 #, no-wrap msgid "{@code{openvpn-client-configuration} parameter} string key" msgstr "" #. type: deftypevr #: doc/guix.texi:18329 doc/guix.texi:18465 msgid "" "The key of the machine the daemon is running on. It must be the key whose " "certificate is @code{cert}." msgstr "" #. type: deftypevr #: doc/guix.texi:18331 doc/guix.texi:18467 msgid "Defaults to @samp{\"/etc/openvpn/client.key\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:18334 #, no-wrap msgid "{@code{openvpn-client-configuration} parameter} boolean comp-lzo?" msgstr "" #. type: deftypevr #: doc/guix.texi:18336 doc/guix.texi:18472 msgid "Whether to use the lzo compression algorithm." msgstr "" #. type: deftypevr #: doc/guix.texi:18341 #, no-wrap msgid "{@code{openvpn-client-configuration} parameter} boolean persist-key?" msgstr "" #. type: deftypevr #: doc/guix.texi:18343 doc/guix.texi:18479 msgid "Don't re-read key files across SIGUSR1 or --ping-restart." msgstr "" #. type: deftypevr #: doc/guix.texi:18348 #, no-wrap msgid "{@code{openvpn-client-configuration} parameter} boolean persist-tun?" msgstr "" #. type: deftypevr #: doc/guix.texi:18351 doc/guix.texi:18487 msgid "" "Don't close and reopen TUN/TAP device or run up/down scripts across SIGUSR1 " "or --ping-restart restarts." msgstr "" #. type: deftypevr #: doc/guix.texi:18356 #, no-wrap msgid "{@code{openvpn-client-configuration} parameter} number verbosity" msgstr "" #. type: deftypevr #: doc/guix.texi:18358 doc/guix.texi:18494 msgid "Verbosity level." msgstr "" #. type: deftypevr #: doc/guix.texi:18360 doc/guix.texi:18496 doc/guix.texi:19800 #: doc/guix.texi:20023 msgid "Defaults to @samp{3}." msgstr "" #. type: deftypevr #: doc/guix.texi:18363 #, no-wrap msgid "{@code{openvpn-client-configuration} parameter} tls-auth-client tls-auth" msgstr "" #. type: deftypevr #: doc/guix.texi:18366 doc/guix.texi:18502 msgid "" "Add an additional layer of HMAC authentication on top of the TLS control " "channel to protect against DoS attacks." msgstr "" #. type: deftypevr #: doc/guix.texi:18371 #, no-wrap msgid "{@code{openvpn-client-configuration} parameter} key-usage verify-key-usage?" msgstr "" #. type: deftypevr #: doc/guix.texi:18373 msgid "Whether to check the server certificate has server usage extension." msgstr "" #. type: deftypevr #: doc/guix.texi:18378 #, no-wrap msgid "{@code{openvpn-client-configuration} parameter} bind bind?" msgstr "" #. type: deftypevr #: doc/guix.texi:18380 msgid "Bind to a specific local port number." msgstr "" #. type: deftypevr #: doc/guix.texi:18385 #, no-wrap msgid "{@code{openvpn-client-configuration} parameter} resolv-retry resolv-retry?" msgstr "" #. type: deftypevr #: doc/guix.texi:18387 msgid "Retry resolving server address." msgstr "" #. type: deftypevr #: doc/guix.texi:18392 #, no-wrap msgid "{@code{openvpn-client-configuration} parameter} openvpn-remote-list remote" msgstr "" #. type: deftypevr #: doc/guix.texi:18394 msgid "A list of remote servers to connect to." msgstr "" #. type: deftypevr #: doc/guix.texi:18398 msgid "Available @code{openvpn-remote-configuration} fields are:" msgstr "" #. type: deftypevr #: doc/guix.texi:18399 #, no-wrap msgid "{@code{openvpn-remote-configuration} parameter} string name" msgstr "" #. type: deftypevr #: doc/guix.texi:18401 msgid "Server name." msgstr "" #. type: deftypevr #: doc/guix.texi:18403 msgid "Defaults to @samp{\"my-server\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:18406 #, no-wrap msgid "{@code{openvpn-remote-configuration} parameter} number port" msgstr "" #. type: deftypevr #: doc/guix.texi:18408 msgid "Port number the server listens to." msgstr "" #. type: deftypevr #: doc/guix.texi:18410 doc/guix.texi:18511 msgid "Defaults to @samp{1194}." msgstr "" #. type: Plain text #: doc/guix.texi:18419 msgid "Available @code{openvpn-server-configuration} fields are:" msgstr "" #. type: deftypevr #: doc/guix.texi:18420 #, no-wrap msgid "{@code{openvpn-server-configuration} parameter} package openvpn" msgstr "" #. type: deftypevr #: doc/guix.texi:18425 #, no-wrap msgid "{@code{openvpn-server-configuration} parameter} string pid-file" msgstr "" #. type: deftypevr #: doc/guix.texi:18432 #, no-wrap msgid "{@code{openvpn-server-configuration} parameter} proto proto" msgstr "" #. type: deftypevr #: doc/guix.texi:18440 #, no-wrap msgid "{@code{openvpn-server-configuration} parameter} dev dev" msgstr "" #. type: deftypevr #: doc/guix.texi:18447 #, no-wrap msgid "{@code{openvpn-server-configuration} parameter} string ca" msgstr "" #. type: deftypevr #: doc/guix.texi:18454 #, no-wrap msgid "{@code{openvpn-server-configuration} parameter} string cert" msgstr "" #. type: deftypevr #: doc/guix.texi:18462 #, no-wrap msgid "{@code{openvpn-server-configuration} parameter} string key" msgstr "" #. type: deftypevr #: doc/guix.texi:18470 #, no-wrap msgid "{@code{openvpn-server-configuration} parameter} boolean comp-lzo?" msgstr "" #. type: deftypevr #: doc/guix.texi:18477 #, no-wrap msgid "{@code{openvpn-server-configuration} parameter} boolean persist-key?" msgstr "" #. type: deftypevr #: doc/guix.texi:18484 #, no-wrap msgid "{@code{openvpn-server-configuration} parameter} boolean persist-tun?" msgstr "" #. type: deftypevr #: doc/guix.texi:18492 #, no-wrap msgid "{@code{openvpn-server-configuration} parameter} number verbosity" msgstr "" #. type: deftypevr #: doc/guix.texi:18499 #, no-wrap msgid "{@code{openvpn-server-configuration} parameter} tls-auth-server tls-auth" msgstr "" #. type: deftypevr #: doc/guix.texi:18507 #, no-wrap msgid "{@code{openvpn-server-configuration} parameter} number port" msgstr "" #. type: deftypevr #: doc/guix.texi:18509 msgid "Specifies the port number on which the server listens." msgstr "" #. type: deftypevr #: doc/guix.texi:18514 #, no-wrap msgid "{@code{openvpn-server-configuration} parameter} ip-mask server" msgstr "" #. type: deftypevr #: doc/guix.texi:18516 msgid "An ip and mask specifying the subnet inside the virtual network." msgstr "" #. type: deftypevr #: doc/guix.texi:18518 msgid "Defaults to @samp{\"10.8.0.0 255.255.255.0\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:18521 #, no-wrap msgid "{@code{openvpn-server-configuration} parameter} cidr6 server-ipv6" msgstr "" #. type: deftypevr #: doc/guix.texi:18523 msgid "A CIDR notation specifying the IPv6 subnet inside the virtual network." msgstr "" #. type: deftypevr #: doc/guix.texi:18528 #, no-wrap msgid "{@code{openvpn-server-configuration} parameter} string dh" msgstr "" #. type: deftypevr #: doc/guix.texi:18530 msgid "The Diffie-Hellman parameters file." msgstr "" #. type: deftypevr #: doc/guix.texi:18532 msgid "Defaults to @samp{\"/etc/openvpn/dh2048.pem\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:18535 #, no-wrap msgid "{@code{openvpn-server-configuration} parameter} string ifconfig-pool-persist" msgstr "" #. type: deftypevr #: doc/guix.texi:18537 msgid "The file that records client IPs." msgstr "" #. type: deftypevr #: doc/guix.texi:18539 msgid "Defaults to @samp{\"/etc/openvpn/ipp.txt\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:18542 #, no-wrap msgid "{@code{openvpn-server-configuration} parameter} gateway redirect-gateway?" msgstr "" #. type: deftypevr #: doc/guix.texi:18544 msgid "When true, the server will act as a gateway for its clients." msgstr "" #. type: deftypevr #: doc/guix.texi:18549 #, no-wrap msgid "{@code{openvpn-server-configuration} parameter} boolean client-to-client?" msgstr "" #. type: deftypevr #: doc/guix.texi:18551 msgid "When true, clients are allowed to talk to each other inside the VPN." msgstr "" #. type: deftypevr #: doc/guix.texi:18556 #, no-wrap msgid "{@code{openvpn-server-configuration} parameter} keepalive keepalive" msgstr "" #. type: deftypevr #: doc/guix.texi:18562 msgid "" "Causes ping-like messages to be sent back and forth over the link so that " "each side knows when the other side has gone down. @code{keepalive} " "requires a pair. The first element is the period of the ping sending, and " "the second element is the timeout before considering the other side down." msgstr "" #. type: deftypevr #: doc/guix.texi:18565 #, no-wrap msgid "{@code{openvpn-server-configuration} parameter} number max-clients" msgstr "" #. type: deftypevr #: doc/guix.texi:18567 msgid "The maximum number of clients." msgstr "" #. type: deftypevr #: doc/guix.texi:18572 #, no-wrap msgid "{@code{openvpn-server-configuration} parameter} string status" msgstr "" #. type: deftypevr #: doc/guix.texi:18575 msgid "" "The status file. This file shows a small report on current connection. It " "is truncated and rewritten every minute." msgstr "" #. type: deftypevr #: doc/guix.texi:18577 msgid "Defaults to @samp{\"/var/run/openvpn/status\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:18580 #, no-wrap msgid "{@code{openvpn-server-configuration} parameter} openvpn-ccd-list client-config-dir" msgstr "" #. type: deftypevr #: doc/guix.texi:18582 msgid "The list of configuration for some clients." msgstr "" #. type: deftypevr #: doc/guix.texi:18586 msgid "Available @code{openvpn-ccd-configuration} fields are:" msgstr "" #. type: deftypevr #: doc/guix.texi:18587 #, no-wrap msgid "{@code{openvpn-ccd-configuration} parameter} string name" msgstr "" #. type: deftypevr #: doc/guix.texi:18589 msgid "Client name." msgstr "" #. type: deftypevr #: doc/guix.texi:18591 msgid "Defaults to @samp{\"client\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:18594 #, no-wrap msgid "{@code{openvpn-ccd-configuration} parameter} ip-mask iroute" msgstr "" #. type: deftypevr #: doc/guix.texi:18596 msgid "Client own network" msgstr "" #. type: deftypevr #: doc/guix.texi:18601 #, no-wrap msgid "{@code{openvpn-ccd-configuration} parameter} ip-mask ifconfig-push" msgstr "" #. type: deftypevr #: doc/guix.texi:18603 msgid "Client VPN IP." msgstr "" #. type: cindex #: doc/guix.texi:18616 #, no-wrap msgid "NFS" msgstr "" #. type: Plain text #: doc/guix.texi:18621 msgid "" "The @code{(gnu services nfs)} module provides the following services, which " "are most commonly used in relation to mounting or exporting directory trees " "as @dfn{network file systems} (NFS)." msgstr "" #. type: subsubheading #: doc/guix.texi:18622 #, no-wrap msgid "RPC Bind Service" msgstr "" #. type: cindex #: doc/guix.texi:18623 #, no-wrap msgid "rpcbind" msgstr "" #. type: Plain text #: doc/guix.texi:18629 msgid "" "The RPC Bind service provides a facility to map program numbers into " "universal addresses. Many NFS related services use this facility. Hence it " "is automatically started when a dependent service starts." msgstr "" #. type: defvr #: doc/guix.texi:18630 #, no-wrap msgid "{Scheme Variable} rpcbind-service-type" msgstr "" #. type: defvr #: doc/guix.texi:18632 msgid "A service type for the RPC portmapper daemon." msgstr "" #. type: deftp #: doc/guix.texi:18635 #, no-wrap msgid "{Data Type} rpcbind-configuration" msgstr "" #. type: deftp #: doc/guix.texi:18638 msgid "" "Data type representing the configuration of the RPC Bind Service. This type " "has the following parameters:" msgstr "" #. type: item #: doc/guix.texi:18639 #, no-wrap msgid "@code{rpcbind} (default: @code{rpcbind})" msgstr "" #. type: table #: doc/guix.texi:18641 msgid "The rpcbind package to use." msgstr "" #. type: item #: doc/guix.texi:18642 #, no-wrap msgid "@code{warm-start?} (default: @code{#t})" msgstr "" #. type: table #: doc/guix.texi:18646 msgid "" "If this parameter is @code{#t}, then the daemon will read a state file on " "startup thus reloading state information saved by a previous instance." msgstr "" #. type: subsubheading #: doc/guix.texi:18650 #, no-wrap msgid "Pipefs Pseudo File System" msgstr "" #. type: cindex #: doc/guix.texi:18651 #, no-wrap msgid "pipefs" msgstr "" #. type: cindex #: doc/guix.texi:18652 #, no-wrap msgid "rpc_pipefs" msgstr "" #. type: Plain text #: doc/guix.texi:18656 msgid "" "The pipefs file system is used to transfer NFS related data between the " "kernel and user space programs." msgstr "" #. type: defvr #: doc/guix.texi:18657 #, no-wrap msgid "{Scheme Variable} pipefs-service-type" msgstr "" #. type: defvr #: doc/guix.texi:18659 msgid "A service type for the pipefs pseudo file system." msgstr "" #. type: deftp #: doc/guix.texi:18661 #, no-wrap msgid "{Data Type} pipefs-configuration" msgstr "" #. type: deftp #: doc/guix.texi:18664 msgid "" "Data type representing the configuration of the pipefs pseudo file system " "service. This type has the following parameters:" msgstr "" #. type: item #: doc/guix.texi:18665 #, no-wrap msgid "@code{mount-point} (default: @code{\"/var/lib/nfs/rpc_pipefs\"})" msgstr "" #. type: table #: doc/guix.texi:18667 msgid "The directory to which the file system is to be attached." msgstr "" #. type: subsubheading #: doc/guix.texi:18671 #, no-wrap msgid "GSS Daemon Service" msgstr "" #. type: cindex #: doc/guix.texi:18672 #, no-wrap msgid "GSSD" msgstr "" #. type: cindex #: doc/guix.texi:18673 #, no-wrap msgid "GSS" msgstr "" #. type: cindex #: doc/guix.texi:18674 #, no-wrap msgid "global security system" msgstr "" #. type: Plain text #: doc/guix.texi:18681 msgid "" "The @dfn{global security system} (GSS) daemon provides strong security for " "RPC based protocols. Before exchanging RPC requests an RPC client must " "establish a security context. Typically this is done using the Kerberos " "command @command{kinit} or automatically at login time using PAM services " "(@pxref{Kerberos Services})." msgstr "" #. type: defvr #: doc/guix.texi:18682 #, no-wrap msgid "{Scheme Variable} gss-service-type" msgstr "" #. type: defvr #: doc/guix.texi:18684 msgid "A service type for the Global Security System (GSS) daemon." msgstr "" #. type: deftp #: doc/guix.texi:18686 #, no-wrap msgid "{Data Type} gss-configuration" msgstr "" #. type: deftp #: doc/guix.texi:18689 msgid "" "Data type representing the configuration of the GSS daemon service. This " "type has the following parameters:" msgstr "" #. type: item #: doc/guix.texi:18690 doc/guix.texi:18715 #, no-wrap msgid "@code{nfs-utils} (default: @code{nfs-utils})" msgstr "" #. type: table #: doc/guix.texi:18692 msgid "The package in which the @command{rpc.gssd} command is to be found." msgstr "" #. type: item #: doc/guix.texi:18693 doc/guix.texi:18718 #, no-wrap msgid "@code{pipefs-directory} (default: @code{\"/var/lib/nfs/rpc_pipefs\"})" msgstr "" #. type: table #: doc/guix.texi:18695 doc/guix.texi:18720 msgid "The directory where the pipefs file system is mounted." msgstr "" #. type: subsubheading #: doc/guix.texi:18700 #, no-wrap msgid "IDMAP Daemon Service" msgstr "" #. type: cindex #: doc/guix.texi:18701 #, no-wrap msgid "idmapd" msgstr "" #. type: cindex #: doc/guix.texi:18702 #, no-wrap msgid "name mapper" msgstr "" #. type: Plain text #: doc/guix.texi:18706 msgid "" "The idmap daemon service provides mapping between user IDs and user names. " "Typically it is required in order to access file systems mounted via NFSv4." msgstr "" #. type: defvr #: doc/guix.texi:18707 #, no-wrap msgid "{Scheme Variable} idmap-service-type" msgstr "" #. type: defvr #: doc/guix.texi:18709 msgid "A service type for the Identity Mapper (IDMAP) daemon." msgstr "" #. type: deftp #: doc/guix.texi:18711 #, no-wrap msgid "{Data Type} idmap-configuration" msgstr "" #. type: deftp #: doc/guix.texi:18714 msgid "" "Data type representing the configuration of the IDMAP daemon service. This " "type has the following parameters:" msgstr "" #. type: table #: doc/guix.texi:18717 msgid "The package in which the @command{rpc.idmapd} command is to be found." msgstr "" #. type: item #: doc/guix.texi:18721 #, no-wrap msgid "@code{domain} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:18725 msgid "" "The local NFSv4 domain name. This must be a string or @code{#f}. If it is " "@code{#f} then the daemon will use the host's fully qualified domain name." msgstr "" #. type: cindex #: doc/guix.texi:18732 #, no-wrap msgid "continuous integration" msgstr "" #. type: Plain text #: doc/guix.texi:18736 msgid "" "@uref{https://git.savannah.gnu.org/cgit/guix/guix-cuirass.git, Cuirass} is a " "continuous integration tool for Guix. It can be used both for development " "and for providing substitutes to others (@pxref{Substitutes})." msgstr "" #. type: Plain text #: doc/guix.texi:18738 msgid "" "The @code{(gnu services cuirass)} module provides the following service." msgstr "" #. type: defvr #: doc/guix.texi:18739 #, no-wrap msgid "{Scheme Procedure} cuirass-service-type" msgstr "" #. type: defvr #: doc/guix.texi:18742 msgid "" "The type of the Cuirass service. Its value must be a @code{cuirass-" "configuration} object, as described below." msgstr "" #. type: Plain text #: doc/guix.texi:18749 msgid "" "To add build jobs, you have to set the @code{specifications} field of the " "configuration. Here is an example of a service that polls the Guix " "repository and builds the packages from a manifest. Some of the packages " "are defined in the @code{\"custom-packages\"} input, which is the equivalent " "of @code{GUIX_PACKAGE_PATH}." msgstr "" #. type: example #: doc/guix.texi:18777 #, no-wrap msgid "" "(define %cuirass-specs\n" " #~(list\n" " '((#:name . \"my-manifest\")\n" " (#:load-path-inputs . (\"guix\"))\n" " (#:package-path-inputs . (\"custom-packages\"))\n" " (#:proc-input . \"guix\")\n" " (#:proc-file . \"build-aux/cuirass/gnu-system.scm\")\n" " (#:proc . cuirass-jobs)\n" " (#:proc-args . ((subset . \"manifests\")\n" " (systems . (\"x86_64-linux\"))\n" " (manifests . ((\"config\" . \"guix/manifest.scm\")))))\n" " (#:inputs . (((#:name . \"guix\")\n" " (#:url . \"git://git.savannah.gnu.org/guix.git\")\n" " (#:load-path . \".\")\n" " (#:branch . \"master\")\n" " (#:no-compile? . #t))\n" " ((#:name . \"config\")\n" " (#:url . \"git://git.example.org/config.git\")\n" " (#:load-path . \".\")\n" " (#:branch . \"master\")\n" " (#:no-compile? . #t))\n" " ((#:name . \"custom-packages\")\n" " (#:url . \"git://git.example.org/custom-packages.git\")\n" " (#:load-path . \".\")\n" " (#:branch . \"master\")\n" " (#:no-compile? . #t)))))))\n" "\n" msgstr "" #. type: example #: doc/guix.texi:18781 #, no-wrap msgid "" "(service cuirass-service-type\n" " (cuirass-configuration\n" " (specifications %cuirass-specs)))\n" msgstr "" #. type: Plain text #: doc/guix.texi:18786 msgid "" "While information related to build jobs is located directly in the " "specifications, global settings for the @command{cuirass} process are " "accessible in other @code{cuirass-configuration} fields." msgstr "" #. type: deftp #: doc/guix.texi:18787 #, no-wrap msgid "{Data Type} cuirass-configuration" msgstr "" #. type: deftp #: doc/guix.texi:18789 msgid "Data type representing the configuration of Cuirass." msgstr "" #. type: item #: doc/guix.texi:18791 #, no-wrap msgid "@code{log-file} (default: @code{\"/var/log/cuirass.log\"})" msgstr "" #. type: table #: doc/guix.texi:18793 msgid "Location of the log file." msgstr "" #. type: item #: doc/guix.texi:18794 #, no-wrap msgid "@code{cache-directory} (default: @code{\"/var/cache/cuirass\"})" msgstr "" #. type: table #: doc/guix.texi:18796 msgid "Location of the repository cache." msgstr "" #. type: item #: doc/guix.texi:18797 #, no-wrap msgid "@code{user} (default: @code{\"cuirass\"})" msgstr "" #. type: table #: doc/guix.texi:18799 msgid "Owner of the @code{cuirass} process." msgstr "" #. type: item #: doc/guix.texi:18800 #, no-wrap msgid "@code{group} (default: @code{\"cuirass\"})" msgstr "" #. type: table #: doc/guix.texi:18802 msgid "Owner's group of the @code{cuirass} process." msgstr "" #. type: item #: doc/guix.texi:18803 #, no-wrap msgid "@code{interval} (default: @code{60})" msgstr "" #. type: table #: doc/guix.texi:18806 msgid "" "Number of seconds between the poll of the repositories followed by the " "Cuirass jobs." msgstr "" #. type: item #: doc/guix.texi:18807 #, no-wrap msgid "@code{database} (default: @code{\"/var/lib/cuirass/cuirass.db\"})" msgstr "" #. type: table #: doc/guix.texi:18810 msgid "" "Location of sqlite database which contains the build results and previously " "added specifications." msgstr "" #. type: item #: doc/guix.texi:18811 #, no-wrap msgid "@code{ttl} (default: @code{(* 30 24 3600)})" msgstr "" #. type: table #: doc/guix.texi:18815 msgid "" "Specifies the time-to-live (TTL) in seconds of garbage collector roots that " "are registered for build results. This means that build results are " "protected from garbage collection for at least @var{ttl} seconds." msgstr "" #. type: item #: doc/guix.texi:18816 #, no-wrap msgid "@code{port} (default: @code{8081})" msgstr "" #. type: table #: doc/guix.texi:18818 msgid "Port number used by the HTTP server." msgstr "" #. type: table #: doc/guix.texi:18822 msgid "" "Listen on the network interface for @var{host}. The default is to accept " "connections from localhost." msgstr "" #. type: item #: doc/guix.texi:18823 #, no-wrap msgid "@code{specifications} (default: @code{#~'()})" msgstr "" #. type: table #: doc/guix.texi:18829 msgid "" "A gexp (@pxref{G-Expressions}) that evaluates to a list of specifications, " "where a specification is an association list (@pxref{Associations Lists,,, " "guile, GNU Guile Reference Manual}) whose keys are keywords (@code{#:keyword-" "example}) as shown in the example above." msgstr "" #. type: item #: doc/guix.texi:18830 #, no-wrap msgid "@code{use-substitutes?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:18833 msgid "" "This allows using substitutes to avoid building every dependencies of a job " "from source." msgstr "" #. type: item #: doc/guix.texi:18834 #, no-wrap msgid "@code{one-shot?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:18836 msgid "Only evaluate specifications and build derivations once." msgstr "" #. type: item #: doc/guix.texi:18837 #, no-wrap msgid "@code{fallback?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:18840 msgid "" "When substituting a pre-built binary fails, fall back to building packages " "locally." msgstr "" #. type: item #: doc/guix.texi:18841 #, no-wrap msgid "@code{cuirass} (default: @code{cuirass})" msgstr "" #. type: table #: doc/guix.texi:18843 msgid "The Cuirass package to use." msgstr "" #. type: cindex #: doc/guix.texi:18849 #, no-wrap msgid "tlp" msgstr "" #. type: cindex #: doc/guix.texi:18850 #, no-wrap msgid "power management with TLP" msgstr "" #. type: subsubheading #: doc/guix.texi:18851 #, no-wrap msgid "TLP daemon" msgstr "" #. type: Plain text #: doc/guix.texi:18855 msgid "" "The @code{(gnu services pm)} module provides a Guix service definition for " "the Linux power management tool TLP." msgstr "" #. type: Plain text #: doc/guix.texi:18861 msgid "" "TLP enables various powersaving modes in userspace and kernel. Contrary to " "@code{upower-service}, it is not a passive, monitoring tool, as it will " "apply custom settings each time a new power source is detected. More " "information can be found at @uref{http://linrunner.de/en/tlp/tlp.html, TLP " "home page}." msgstr "" #. type: deffn #: doc/guix.texi:18862 #, no-wrap msgid "{Scheme Variable} tlp-service-type" msgstr "" #. type: deffn #: doc/guix.texi:18866 msgid "" "The service type for the TLP tool. Its value should be a valid TLP " "configuration (see below). To use the default settings, simply write:" msgstr "" #. type: example #: doc/guix.texi:18868 #, no-wrap msgid "(service tlp-service-type)\n" msgstr "" #. type: Plain text #: doc/guix.texi:18873 msgid "" "By default TLP does not need much configuration but most TLP parameters can " "be tweaked using @code{tlp-configuration}." msgstr "" #. type: Plain text #: doc/guix.texi:18879 msgid "" "Each parameter definition is preceded by its type; for example, " "@samp{boolean foo} indicates that the @code{foo} parameter should be " "specified as a boolean. Types starting with @code{maybe-} denote parameters " "that won't show up in TLP config file when their value is @code{'disabled}." msgstr "" #. type: Plain text #: doc/guix.texi:18889 msgid "Available @code{tlp-configuration} fields are:" msgstr "" #. type: deftypevr #: doc/guix.texi:18890 #, no-wrap msgid "{@code{tlp-configuration} parameter} package tlp" msgstr "" #. type: deftypevr #: doc/guix.texi:18892 msgid "The TLP package." msgstr "" #. type: deftypevr #: doc/guix.texi:18895 #, no-wrap msgid "{@code{tlp-configuration} parameter} boolean tlp-enable?" msgstr "" #. type: deftypevr #: doc/guix.texi:18897 msgid "Set to true if you wish to enable TLP." msgstr "" #. type: deftypevr #: doc/guix.texi:18902 #, no-wrap msgid "{@code{tlp-configuration} parameter} string tlp-default-mode" msgstr "" #. type: deftypevr #: doc/guix.texi:18905 msgid "" "Default mode when no power supply can be detected. Alternatives are AC and " "BAT." msgstr "" #. type: deftypevr #: doc/guix.texi:18907 msgid "Defaults to @samp{\"AC\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:18910 #, no-wrap msgid "{@code{tlp-configuration} parameter} non-negative-integer disk-idle-secs-on-ac" msgstr "" #. type: deftypevr #: doc/guix.texi:18913 msgid "" "Number of seconds Linux kernel has to wait after the disk goes idle, before " "syncing on AC." msgstr "" #. type: deftypevr #: doc/guix.texi:18918 #, no-wrap msgid "{@code{tlp-configuration} parameter} non-negative-integer disk-idle-secs-on-bat" msgstr "" #. type: deftypevr #: doc/guix.texi:18920 msgid "Same as @code{disk-idle-ac} but on BAT mode." msgstr "" #. type: deftypevr #: doc/guix.texi:18922 msgid "Defaults to @samp{2}." msgstr "" #. type: deftypevr #: doc/guix.texi:18925 #, no-wrap msgid "{@code{tlp-configuration} parameter} non-negative-integer max-lost-work-secs-on-ac" msgstr "" #. type: deftypevr #: doc/guix.texi:18927 msgid "Dirty pages flushing periodicity, expressed in seconds." msgstr "" #. type: deftypevr #: doc/guix.texi:18929 doc/guix.texi:19152 doc/guix.texi:20472 #: doc/guix.texi:20480 msgid "Defaults to @samp{15}." msgstr "" #. type: deftypevr #: doc/guix.texi:18932 #, no-wrap msgid "{@code{tlp-configuration} parameter} non-negative-integer max-lost-work-secs-on-bat" msgstr "" #. type: deftypevr #: doc/guix.texi:18934 msgid "Same as @code{max-lost-work-secs-on-ac} but on BAT mode." msgstr "" #. type: deftypevr #: doc/guix.texi:18936 msgid "Defaults to @samp{60}." msgstr "" #. type: deftypevr #: doc/guix.texi:18939 #, no-wrap msgid "{@code{tlp-configuration} parameter} maybe-space-separated-string-list cpu-scaling-governor-on-ac" msgstr "" #. type: deftypevr #: doc/guix.texi:18943 msgid "" "CPU frequency scaling governor on AC mode. With intel_pstate driver, " "alternatives are powersave and performance. With acpi-cpufreq driver, " "alternatives are ondemand, powersave, performance and conservative." msgstr "" #. type: deftypevr #: doc/guix.texi:18945 doc/guix.texi:18952 doc/guix.texi:18959 #: doc/guix.texi:18966 doc/guix.texi:18973 doc/guix.texi:18980 #: doc/guix.texi:18988 doc/guix.texi:18996 doc/guix.texi:19003 #: doc/guix.texi:19010 doc/guix.texi:19017 doc/guix.texi:19024 #: doc/guix.texi:19054 doc/guix.texi:19092 doc/guix.texi:19099 #: doc/guix.texi:19108 doc/guix.texi:19130 doc/guix.texi:19138 #: doc/guix.texi:19145 doc/guix.texi:19300 doc/guix.texi:19320 #: doc/guix.texi:19335 doc/guix.texi:19342 doc/guix.texi:21131 #: doc/guix.texi:21139 doc/guix.texi:21147 doc/guix.texi:21155 #: doc/guix.texi:21163 doc/guix.texi:21171 msgid "Defaults to @samp{disabled}." msgstr "" #. type: deftypevr #: doc/guix.texi:18948 #, no-wrap msgid "{@code{tlp-configuration} parameter} maybe-space-separated-string-list cpu-scaling-governor-on-bat" msgstr "" #. type: deftypevr #: doc/guix.texi:18950 msgid "Same as @code{cpu-scaling-governor-on-ac} but on BAT mode." msgstr "" #. type: deftypevr #: doc/guix.texi:18955 #, no-wrap msgid "{@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-scaling-min-freq-on-ac" msgstr "" #. type: deftypevr #: doc/guix.texi:18957 msgid "Set the min available frequency for the scaling governor on AC." msgstr "" #. type: deftypevr #: doc/guix.texi:18962 #, no-wrap msgid "{@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-scaling-max-freq-on-ac" msgstr "" #. type: deftypevr #: doc/guix.texi:18964 msgid "Set the max available frequency for the scaling governor on AC." msgstr "" #. type: deftypevr #: doc/guix.texi:18969 #, no-wrap msgid "{@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-scaling-min-freq-on-bat" msgstr "" #. type: deftypevr #: doc/guix.texi:18971 msgid "Set the min available frequency for the scaling governor on BAT." msgstr "" #. type: deftypevr #: doc/guix.texi:18976 #, no-wrap msgid "{@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-scaling-max-freq-on-bat" msgstr "" #. type: deftypevr #: doc/guix.texi:18978 msgid "Set the max available frequency for the scaling governor on BAT." msgstr "" #. type: deftypevr #: doc/guix.texi:18983 #, no-wrap msgid "{@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-min-perf-on-ac" msgstr "" #. type: deftypevr #: doc/guix.texi:18986 msgid "" "Limit the min P-state to control the power dissipation of the CPU, in AC " "mode. Values are stated as a percentage of the available performance." msgstr "" #. type: deftypevr #: doc/guix.texi:18991 #, no-wrap msgid "{@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-max-perf-on-ac" msgstr "" #. type: deftypevr #: doc/guix.texi:18994 msgid "" "Limit the max P-state to control the power dissipation of the CPU, in AC " "mode. Values are stated as a percentage of the available performance." msgstr "" #. type: deftypevr #: doc/guix.texi:18999 #, no-wrap msgid "{@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-min-perf-on-bat" msgstr "" #. type: deftypevr #: doc/guix.texi:19001 msgid "Same as @code{cpu-min-perf-on-ac} on BAT mode." msgstr "" #. type: deftypevr #: doc/guix.texi:19006 #, no-wrap msgid "{@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-max-perf-on-bat" msgstr "" #. type: deftypevr #: doc/guix.texi:19008 msgid "Same as @code{cpu-max-perf-on-ac} on BAT mode." msgstr "" #. type: deftypevr #: doc/guix.texi:19013 #, no-wrap msgid "{@code{tlp-configuration} parameter} maybe-boolean cpu-boost-on-ac?" msgstr "" #. type: deftypevr #: doc/guix.texi:19015 msgid "Enable CPU turbo boost feature on AC mode." msgstr "" #. type: deftypevr #: doc/guix.texi:19020 #, no-wrap msgid "{@code{tlp-configuration} parameter} maybe-boolean cpu-boost-on-bat?" msgstr "" #. type: deftypevr #: doc/guix.texi:19022 msgid "Same as @code{cpu-boost-on-ac?} on BAT mode." msgstr "" #. type: deftypevr #: doc/guix.texi:19027 #, no-wrap msgid "{@code{tlp-configuration} parameter} boolean sched-powersave-on-ac?" msgstr "" #. type: deftypevr #: doc/guix.texi:19030 msgid "" "Allow Linux kernel to minimize the number of CPU cores/hyper-threads used " "under light load conditions." msgstr "" #. type: deftypevr #: doc/guix.texi:19035 #, no-wrap msgid "{@code{tlp-configuration} parameter} boolean sched-powersave-on-bat?" msgstr "" #. type: deftypevr #: doc/guix.texi:19037 msgid "Same as @code{sched-powersave-on-ac?} but on BAT mode." msgstr "" #. type: deftypevr #: doc/guix.texi:19042 #, no-wrap msgid "{@code{tlp-configuration} parameter} boolean nmi-watchdog?" msgstr "" #. type: deftypevr #: doc/guix.texi:19044 msgid "Enable Linux kernel NMI watchdog." msgstr "" #. type: deftypevr #: doc/guix.texi:19049 #, no-wrap msgid "{@code{tlp-configuration} parameter} maybe-string phc-controls" msgstr "" #. type: deftypevr #: doc/guix.texi:19052 msgid "" "For Linux kernels with PHC patch applied, change CPU voltages. An example " "value would be @samp{\"F:V F:V F:V F:V\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:19057 #, no-wrap msgid "{@code{tlp-configuration} parameter} string energy-perf-policy-on-ac" msgstr "" #. type: deftypevr #: doc/guix.texi:19060 msgid "" "Set CPU performance versus energy saving policy on AC. Alternatives are " "performance, normal, powersave." msgstr "" #. type: deftypevr #: doc/guix.texi:19062 doc/guix.texi:19160 doc/guix.texi:19190 msgid "Defaults to @samp{\"performance\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:19065 #, no-wrap msgid "{@code{tlp-configuration} parameter} string energy-perf-policy-on-bat" msgstr "" #. type: deftypevr #: doc/guix.texi:19067 msgid "Same as @code{energy-perf-policy-ac} but on BAT mode." msgstr "" #. type: deftypevr #: doc/guix.texi:19069 doc/guix.texi:19167 msgid "Defaults to @samp{\"powersave\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:19072 #, no-wrap msgid "{@code{tlp-configuration} parameter} space-separated-string-list disks-devices" msgstr "" #. type: deftypevr #: doc/guix.texi:19074 msgid "Hard disk devices." msgstr "" #. type: deftypevr #: doc/guix.texi:19077 #, no-wrap msgid "{@code{tlp-configuration} parameter} space-separated-string-list disk-apm-level-on-ac" msgstr "" #. type: deftypevr #: doc/guix.texi:19079 msgid "Hard disk advanced power management level." msgstr "" #. type: deftypevr #: doc/guix.texi:19082 #, no-wrap msgid "{@code{tlp-configuration} parameter} space-separated-string-list disk-apm-level-on-bat" msgstr "" #. type: deftypevr #: doc/guix.texi:19084 msgid "Same as @code{disk-apm-bat} but on BAT mode." msgstr "" #. type: deftypevr #: doc/guix.texi:19087 #, no-wrap msgid "{@code{tlp-configuration} parameter} maybe-space-separated-string-list disk-spindown-timeout-on-ac" msgstr "" #. type: deftypevr #: doc/guix.texi:19090 msgid "" "Hard disk spin down timeout. One value has to be specified for each " "declared hard disk." msgstr "" #. type: deftypevr #: doc/guix.texi:19095 #, no-wrap msgid "{@code{tlp-configuration} parameter} maybe-space-separated-string-list disk-spindown-timeout-on-bat" msgstr "" #. type: deftypevr #: doc/guix.texi:19097 msgid "Same as @code{disk-spindown-timeout-on-ac} but on BAT mode." msgstr "" #. type: deftypevr #: doc/guix.texi:19102 #, no-wrap msgid "{@code{tlp-configuration} parameter} maybe-space-separated-string-list disk-iosched" msgstr "" #. type: deftypevr #: doc/guix.texi:19106 msgid "" "Select IO scheduler for disk devices. One value has to be specified for " "each declared hard disk. Example alternatives are cfq, deadline and noop." msgstr "" #. type: deftypevr #: doc/guix.texi:19111 #, no-wrap msgid "{@code{tlp-configuration} parameter} string sata-linkpwr-on-ac" msgstr "" #. type: deftypevr #: doc/guix.texi:19114 msgid "" "SATA aggressive link power management (ALPM) level. Alternatives are " "min_power, medium_power, max_performance." msgstr "" #. type: deftypevr #: doc/guix.texi:19116 msgid "Defaults to @samp{\"max_performance\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:19119 #, no-wrap msgid "{@code{tlp-configuration} parameter} string sata-linkpwr-on-bat" msgstr "" #. type: deftypevr #: doc/guix.texi:19121 msgid "Same as @code{sata-linkpwr-ac} but on BAT mode." msgstr "" #. type: deftypevr #: doc/guix.texi:19123 msgid "Defaults to @samp{\"min_power\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:19126 #, no-wrap msgid "{@code{tlp-configuration} parameter} maybe-string sata-linkpwr-blacklist" msgstr "" #. type: deftypevr #: doc/guix.texi:19128 msgid "Exclude specified SATA host devices for link power management." msgstr "" #. type: deftypevr #: doc/guix.texi:19133 #, no-wrap msgid "{@code{tlp-configuration} parameter} maybe-on-off-boolean ahci-runtime-pm-on-ac?" msgstr "" #. type: deftypevr #: doc/guix.texi:19136 msgid "" "Enable Runtime Power Management for AHCI controller and disks on AC mode." msgstr "" #. type: deftypevr #: doc/guix.texi:19141 #, no-wrap msgid "{@code{tlp-configuration} parameter} maybe-on-off-boolean ahci-runtime-pm-on-bat?" msgstr "" #. type: deftypevr #: doc/guix.texi:19143 msgid "Same as @code{ahci-runtime-pm-on-ac} on BAT mode." msgstr "" #. type: deftypevr #: doc/guix.texi:19148 #, no-wrap msgid "{@code{tlp-configuration} parameter} non-negative-integer ahci-runtime-pm-timeout" msgstr "" #. type: deftypevr #: doc/guix.texi:19150 msgid "Seconds of inactivity before disk is suspended." msgstr "" #. type: deftypevr #: doc/guix.texi:19155 #, no-wrap msgid "{@code{tlp-configuration} parameter} string pcie-aspm-on-ac" msgstr "" #. type: deftypevr #: doc/guix.texi:19158 msgid "" "PCI Express Active State Power Management level. Alternatives are default, " "performance, powersave." msgstr "" #. type: deftypevr #: doc/guix.texi:19163 #, no-wrap msgid "{@code{tlp-configuration} parameter} string pcie-aspm-on-bat" msgstr "" #. type: deftypevr #: doc/guix.texi:19165 msgid "Same as @code{pcie-aspm-ac} but on BAT mode." msgstr "" #. type: deftypevr #: doc/guix.texi:19170 #, no-wrap msgid "{@code{tlp-configuration} parameter} string radeon-power-profile-on-ac" msgstr "" #. type: deftypevr #: doc/guix.texi:19173 msgid "" "Radeon graphics clock speed level. Alternatives are low, mid, high, auto, " "default." msgstr "" #. type: deftypevr #: doc/guix.texi:19175 msgid "Defaults to @samp{\"high\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:19178 #, no-wrap msgid "{@code{tlp-configuration} parameter} string radeon-power-profile-on-bat" msgstr "" #. type: deftypevr #: doc/guix.texi:19180 msgid "Same as @code{radeon-power-ac} but on BAT mode." msgstr "" #. type: deftypevr #: doc/guix.texi:19182 msgid "Defaults to @samp{\"low\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:19185 #, no-wrap msgid "{@code{tlp-configuration} parameter} string radeon-dpm-state-on-ac" msgstr "" #. type: deftypevr #: doc/guix.texi:19188 msgid "" "Radeon dynamic power management method (DPM). Alternatives are battery, " "performance." msgstr "" #. type: deftypevr #: doc/guix.texi:19193 #, no-wrap msgid "{@code{tlp-configuration} parameter} string radeon-dpm-state-on-bat" msgstr "" #. type: deftypevr #: doc/guix.texi:19195 msgid "Same as @code{radeon-dpm-state-ac} but on BAT mode." msgstr "" #. type: deftypevr #: doc/guix.texi:19197 msgid "Defaults to @samp{\"battery\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:19200 #, no-wrap msgid "{@code{tlp-configuration} parameter} string radeon-dpm-perf-level-on-ac" msgstr "" #. type: deftypevr #: doc/guix.texi:19202 msgid "Radeon DPM performance level. Alternatives are auto, low, high." msgstr "" #. type: deftypevr #: doc/guix.texi:19204 doc/guix.texi:19211 doc/guix.texi:19285 msgid "Defaults to @samp{\"auto\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:19207 #, no-wrap msgid "{@code{tlp-configuration} parameter} string radeon-dpm-perf-level-on-bat" msgstr "" #. type: deftypevr #: doc/guix.texi:19209 msgid "Same as @code{radeon-dpm-perf-ac} but on BAT mode." msgstr "" #. type: deftypevr #: doc/guix.texi:19214 #, no-wrap msgid "{@code{tlp-configuration} parameter} on-off-boolean wifi-pwr-on-ac?" msgstr "" #. type: deftypevr #: doc/guix.texi:19216 msgid "Wifi power saving mode." msgstr "" #. type: deftypevr #: doc/guix.texi:19221 #, no-wrap msgid "{@code{tlp-configuration} parameter} on-off-boolean wifi-pwr-on-bat?" msgstr "" #. type: deftypevr #: doc/guix.texi:19223 msgid "Same as @code{wifi-power-ac?} but on BAT mode." msgstr "" #. type: deftypevr #: doc/guix.texi:19228 #, no-wrap msgid "{@code{tlp-configuration} parameter} y-n-boolean wol-disable?" msgstr "" #. type: deftypevr #: doc/guix.texi:19230 msgid "Disable wake on LAN." msgstr "" #. type: deftypevr #: doc/guix.texi:19235 #, no-wrap msgid "{@code{tlp-configuration} parameter} non-negative-integer sound-power-save-on-ac" msgstr "" #. type: deftypevr #: doc/guix.texi:19238 msgid "" "Timeout duration in seconds before activating audio power saving on Intel " "HDA and AC97 devices. A value of 0 disables power saving." msgstr "" #. type: deftypevr #: doc/guix.texi:19243 #, no-wrap msgid "{@code{tlp-configuration} parameter} non-negative-integer sound-power-save-on-bat" msgstr "" #. type: deftypevr #: doc/guix.texi:19245 msgid "Same as @code{sound-powersave-ac} but on BAT mode." msgstr "" #. type: deftypevr #: doc/guix.texi:19247 doc/guix.texi:19765 doc/guix.texi:19909 msgid "Defaults to @samp{1}." msgstr "" #. type: deftypevr #: doc/guix.texi:19250 #, no-wrap msgid "{@code{tlp-configuration} parameter} y-n-boolean sound-power-save-controller?" msgstr "" #. type: deftypevr #: doc/guix.texi:19252 msgid "Disable controller in powersaving mode on Intel HDA devices." msgstr "" #. type: deftypevr #: doc/guix.texi:19257 #, no-wrap msgid "{@code{tlp-configuration} parameter} boolean bay-poweroff-on-bat?" msgstr "" #. type: deftypevr #: doc/guix.texi:19261 msgid "" "Enable optical drive in UltraBay/MediaBay on BAT mode. Drive can be powered " "on again by releasing (and reinserting) the eject lever or by pressing the " "disc eject button on newer models." msgstr "" #. type: deftypevr #: doc/guix.texi:19266 #, no-wrap msgid "{@code{tlp-configuration} parameter} string bay-device" msgstr "" #. type: deftypevr #: doc/guix.texi:19268 msgid "Name of the optical drive device to power off." msgstr "" #. type: deftypevr #: doc/guix.texi:19270 msgid "Defaults to @samp{\"sr0\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:19273 #, no-wrap msgid "{@code{tlp-configuration} parameter} string runtime-pm-on-ac" msgstr "" #. type: deftypevr #: doc/guix.texi:19276 msgid "" "Runtime Power Management for PCI(e) bus devices. Alternatives are on and " "auto." msgstr "" #. type: deftypevr #: doc/guix.texi:19278 msgid "Defaults to @samp{\"on\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:19281 #, no-wrap msgid "{@code{tlp-configuration} parameter} string runtime-pm-on-bat" msgstr "" #. type: deftypevr #: doc/guix.texi:19283 msgid "Same as @code{runtime-pm-ac} but on BAT mode." msgstr "" #. type: deftypevr #: doc/guix.texi:19288 #, no-wrap msgid "{@code{tlp-configuration} parameter} boolean runtime-pm-all?" msgstr "" #. type: deftypevr #: doc/guix.texi:19291 msgid "" "Runtime Power Management for all PCI(e) bus devices, except blacklisted ones." msgstr "" #. type: deftypevr #: doc/guix.texi:19296 #, no-wrap msgid "{@code{tlp-configuration} parameter} maybe-space-separated-string-list runtime-pm-blacklist" msgstr "" #. type: deftypevr #: doc/guix.texi:19298 msgid "" "Exclude specified PCI(e) device addresses from Runtime Power Management." msgstr "" #. type: deftypevr #: doc/guix.texi:19303 #, no-wrap msgid "{@code{tlp-configuration} parameter} space-separated-string-list runtime-pm-driver-blacklist" msgstr "" #. type: deftypevr #: doc/guix.texi:19306 msgid "" "Exclude PCI(e) devices assigned to the specified drivers from Runtime Power " "Management." msgstr "" #. type: deftypevr #: doc/guix.texi:19309 #, no-wrap msgid "{@code{tlp-configuration} parameter} boolean usb-autosuspend?" msgstr "" #. type: deftypevr #: doc/guix.texi:19311 msgid "Enable USB autosuspend feature." msgstr "" #. type: deftypevr #: doc/guix.texi:19316 #, no-wrap msgid "{@code{tlp-configuration} parameter} maybe-string usb-blacklist" msgstr "" #. type: deftypevr #: doc/guix.texi:19318 msgid "Exclude specified devices from USB autosuspend." msgstr "" #. type: deftypevr #: doc/guix.texi:19323 #, no-wrap msgid "{@code{tlp-configuration} parameter} boolean usb-blacklist-wwan?" msgstr "" #. type: deftypevr #: doc/guix.texi:19325 msgid "Exclude WWAN devices from USB autosuspend." msgstr "" #. type: deftypevr #: doc/guix.texi:19330 #, no-wrap msgid "{@code{tlp-configuration} parameter} maybe-string usb-whitelist" msgstr "" #. type: deftypevr #: doc/guix.texi:19333 msgid "" "Include specified devices into USB autosuspend, even if they are already " "excluded by the driver or via @code{usb-blacklist-wwan?}." msgstr "" #. type: deftypevr #: doc/guix.texi:19338 #, no-wrap msgid "{@code{tlp-configuration} parameter} maybe-boolean usb-autosuspend-disable-on-shutdown?" msgstr "" #. type: deftypevr #: doc/guix.texi:19340 msgid "Enable USB autosuspend before shutdown." msgstr "" #. type: deftypevr #: doc/guix.texi:19345 #, no-wrap msgid "{@code{tlp-configuration} parameter} boolean restore-device-state-on-startup?" msgstr "" #. type: deftypevr #: doc/guix.texi:19348 msgid "" "Restore radio device state (bluetooth, wifi, wwan) from previous shutdown on " "system startup." msgstr "" #. type: cindex #: doc/guix.texi:19353 #, no-wrap msgid "thermald" msgstr "" #. type: cindex #: doc/guix.texi:19354 #, no-wrap msgid "CPU frequency scaling with thermald" msgstr "" #. type: subsubheading #: doc/guix.texi:19355 #, no-wrap msgid "Thermald daemon" msgstr "" #. type: Plain text #: doc/guix.texi:19359 msgid "" "The @code{(gnu services pm)} module provides an interface to thermald, a CPU " "frequency scaling service which helps prevent overheating." msgstr "" #. type: defvr #: doc/guix.texi:19360 #, no-wrap msgid "{Scheme Variable} thermald-service-type" msgstr "" #. type: defvr #: doc/guix.texi:19365 msgid "" "This is the service type for @uref{https://01.org/linux-thermal-daemon/, " "thermald}, the Linux Thermal Daemon, which is responsible for controlling " "the thermal state of processors and preventing overheating." msgstr "" #. type: deftp #: doc/guix.texi:19367 #, no-wrap msgid "{Data Type} thermald-configuration" msgstr "" #. type: deftp #: doc/guix.texi:19369 msgid "" "Data type representing the configuration of @code{thermald-service-type}." msgstr "" #. type: item #: doc/guix.texi:19371 #, no-wrap msgid "@code{ignore-cpuid-check?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:19373 msgid "Ignore cpuid check for supported CPU models." msgstr "" #. type: item #: doc/guix.texi:19374 #, no-wrap msgid "@code{thermald} (default: @var{thermald})" msgstr "" #. type: table #: doc/guix.texi:19376 msgid "Package object of thermald." msgstr "" #. type: Plain text #: doc/guix.texi:19385 msgid "" "The @code{(gnu services audio)} module provides a service to start MPD (the " "Music Player Daemon)." msgstr "" #. type: cindex #: doc/guix.texi:19386 #, no-wrap msgid "mpd" msgstr "" #. type: subsubheading #: doc/guix.texi:19387 #, no-wrap msgid "Music Player Daemon" msgstr "" #. type: Plain text #: doc/guix.texi:19392 msgid "" "The Music Player Daemon (MPD) is a service that can play music while being " "controlled from the local machine or over the network by a variety of " "clients." msgstr "" #. type: Plain text #: doc/guix.texi:19395 msgid "" "The following example shows how one might run @code{mpd} as user @code{\"bob" "\"} on port @code{6666}. It uses pulseaudio for output." msgstr "" #. type: example #: doc/guix.texi:19401 #, no-wrap msgid "" "(service mpd-service-type\n" " (mpd-configuration\n" " (user \"bob\")\n" " (port \"6666\")))\n" msgstr "" #. type: defvr #: doc/guix.texi:19403 #, no-wrap msgid "{Scheme Variable} mpd-service-type" msgstr "" #. type: defvr #: doc/guix.texi:19405 msgid "The service type for @command{mpd}" msgstr "" #. type: deftp #: doc/guix.texi:19407 #, no-wrap msgid "{Data Type} mpd-configuration" msgstr "" #. type: deftp #: doc/guix.texi:19409 msgid "Data type representing the configuration of @command{mpd}." msgstr "" #. type: item #: doc/guix.texi:19411 #, no-wrap msgid "@code{user} (default: @code{\"mpd\"})" msgstr "" #. type: table #: doc/guix.texi:19413 msgid "The user to run mpd as." msgstr "" #. type: item #: doc/guix.texi:19414 #, no-wrap msgid "@code{music-dir} (default: @code{\"~/Music\"})" msgstr "" #. type: table #: doc/guix.texi:19416 msgid "The directory to scan for music files." msgstr "" #. type: item #: doc/guix.texi:19417 #, no-wrap msgid "@code{playlist-dir} (default: @code{\"~/.mpd/playlists\"})" msgstr "" #. type: table #: doc/guix.texi:19419 msgid "The directory to store playlists." msgstr "" #. type: item #: doc/guix.texi:19420 #, no-wrap msgid "@code{port} (default: @code{\"6600\"})" msgstr "" #. type: table #: doc/guix.texi:19422 msgid "The port to run mpd on." msgstr "" #. type: item #: doc/guix.texi:19423 #, no-wrap msgid "@code{address} (default: @code{\"any\"})" msgstr "" #. type: table #: doc/guix.texi:19426 msgid "" "The address that mpd will bind to. To use a Unix domain socket, an absolute " "path can be specified here." msgstr "" #. type: subsubsection #: doc/guix.texi:19431 #, no-wrap msgid "Virtualization services" msgstr "" #. type: Plain text #: doc/guix.texi:19436 msgid "" "The @code{(gnu services virtualization)} module provides services for the " "libvirt and virtlog daemons, as well as other virtualization-related " "services." msgstr "" #. type: subsubheading #: doc/guix.texi:19437 #, no-wrap msgid "Libvirt daemon" msgstr "" #. type: Plain text #: doc/guix.texi:19441 msgid "" "@code{libvirtd} is the server side daemon component of the libvirt " "virtualization management system. This daemon runs on host servers and " "performs required management tasks for virtualized guests." msgstr "" #. type: deffn #: doc/guix.texi:19442 #, no-wrap msgid "{Scheme Variable} libvirt-service-type" msgstr "" #. type: deffn #: doc/guix.texi:19445 msgid "" "This is the type of the @uref{https://libvirt.org, libvirt daemon}. Its " "value must be a @code{libvirt-configuration}." msgstr "" #. type: example #: doc/guix.texi:19451 #, no-wrap msgid "" "(service libvirt-service-type\n" " (libvirt-configuration\n" " (unix-sock-group \"libvirt\")\n" " (tls-port \"16555\")))\n" msgstr "" #. type: Plain text #: doc/guix.texi:19456 msgid "Available @code{libvirt-configuration} fields are:" msgstr "" #. type: deftypevr #: doc/guix.texi:19457 #, no-wrap msgid "{@code{libvirt-configuration} parameter} package libvirt" msgstr "" #. type: deftypevr #: doc/guix.texi:19459 msgid "Libvirt package." msgstr "" #. type: deftypevr #: doc/guix.texi:19462 #, no-wrap msgid "{@code{libvirt-configuration} parameter} boolean listen-tls?" msgstr "" #. type: deftypevr #: doc/guix.texi:19465 msgid "" "Flag listening for secure TLS connections on the public TCP/IP port. must " "set @code{listen} for this to have any effect." msgstr "" #. type: deftypevr #: doc/guix.texi:19468 msgid "" "It is necessary to setup a CA and issue server certificates before using " "this capability." msgstr "" #. type: deftypevr #: doc/guix.texi:19473 #, no-wrap msgid "{@code{libvirt-configuration} parameter} boolean listen-tcp?" msgstr "" #. type: deftypevr #: doc/guix.texi:19476 msgid "" "Listen for unencrypted TCP connections on the public TCP/IP port. must set " "@code{listen} for this to have any effect." msgstr "" #. type: deftypevr #: doc/guix.texi:19480 msgid "" "Using the TCP socket requires SASL authentication by default. Only SASL " "mechanisms which support data encryption are allowed. This is DIGEST_MD5 " "and GSSAPI (Kerberos5)" msgstr "" #. type: deftypevr #: doc/guix.texi:19485 #, no-wrap msgid "{@code{libvirt-configuration} parameter} string tls-port" msgstr "" #. type: deftypevr #: doc/guix.texi:19488 msgid "" "Port for accepting secure TLS connections This can be a port number, or " "service name" msgstr "" #. type: deftypevr #: doc/guix.texi:19490 msgid "Defaults to @samp{\"16514\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:19493 #, no-wrap msgid "{@code{libvirt-configuration} parameter} string tcp-port" msgstr "" #. type: deftypevr #: doc/guix.texi:19496 msgid "" "Port for accepting insecure TCP connections This can be a port number, or " "service name" msgstr "" #. type: deftypevr #: doc/guix.texi:19498 msgid "Defaults to @samp{\"16509\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:19501 #, no-wrap msgid "{@code{libvirt-configuration} parameter} string listen-addr" msgstr "" #. type: deftypevr #: doc/guix.texi:19503 msgid "IP address or hostname used for client connections." msgstr "" #. type: deftypevr #: doc/guix.texi:19505 msgid "Defaults to @samp{\"0.0.0.0\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:19508 #, no-wrap msgid "{@code{libvirt-configuration} parameter} boolean mdns-adv?" msgstr "" #. type: deftypevr #: doc/guix.texi:19510 msgid "Flag toggling mDNS advertisement of the libvirt service." msgstr "" #. type: deftypevr #: doc/guix.texi:19513 msgid "" "Alternatively can disable for all services on a host by stopping the Avahi " "daemon." msgstr "" #. type: deftypevr #: doc/guix.texi:19518 #, no-wrap msgid "{@code{libvirt-configuration} parameter} string mdns-name" msgstr "" #. type: deftypevr #: doc/guix.texi:19521 msgid "" "Default mDNS advertisement name. This must be unique on the immediate " "broadcast network." msgstr "" #. type: deftypevr #: doc/guix.texi:19523 msgid "Defaults to @samp{\"Virtualization Host \"}." msgstr "" #. type: deftypevr #: doc/guix.texi:19526 #, no-wrap msgid "{@code{libvirt-configuration} parameter} string unix-sock-group" msgstr "" #. type: deftypevr #: doc/guix.texi:19530 msgid "" "UNIX domain socket group ownership. This can be used to allow a 'trusted' " "set of users access to management capabilities without becoming root." msgstr "" #. type: deftypevr #: doc/guix.texi:19535 #, no-wrap msgid "{@code{libvirt-configuration} parameter} string unix-sock-ro-perms" msgstr "" #. type: deftypevr #: doc/guix.texi:19538 msgid "" "UNIX socket permissions for the R/O socket. This is used for monitoring VM " "status only." msgstr "" #. type: deftypevr #: doc/guix.texi:19540 doc/guix.texi:19558 msgid "Defaults to @samp{\"0777\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:19543 #, no-wrap msgid "{@code{libvirt-configuration} parameter} string unix-sock-rw-perms" msgstr "" #. type: deftypevr #: doc/guix.texi:19547 msgid "" "UNIX socket permissions for the R/W socket. Default allows only root. If " "PolicyKit is enabled on the socket, the default will change to allow " "everyone (eg, 0777)" msgstr "" #. type: deftypevr #: doc/guix.texi:19549 msgid "Defaults to @samp{\"0770\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:19552 #, no-wrap msgid "{@code{libvirt-configuration} parameter} string unix-sock-admin-perms" msgstr "" #. type: deftypevr #: doc/guix.texi:19556 msgid "" "UNIX socket permissions for the admin socket. Default allows only owner " "(root), do not change it unless you are sure to whom you are exposing the " "access to." msgstr "" #. type: deftypevr #: doc/guix.texi:19561 #, no-wrap msgid "{@code{libvirt-configuration} parameter} string unix-sock-dir" msgstr "" #. type: deftypevr #: doc/guix.texi:19563 msgid "The directory in which sockets will be found/created." msgstr "" #. type: deftypevr #: doc/guix.texi:19565 msgid "Defaults to @samp{\"/var/run/libvirt\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:19568 #, no-wrap msgid "{@code{libvirt-configuration} parameter} string auth-unix-ro" msgstr "" #. type: deftypevr #: doc/guix.texi:19571 msgid "" "Authentication scheme for UNIX read-only sockets. By default socket " "permissions allow anyone to connect" msgstr "" #. type: deftypevr #: doc/guix.texi:19573 doc/guix.texi:19582 msgid "Defaults to @samp{\"polkit\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:19576 #, no-wrap msgid "{@code{libvirt-configuration} parameter} string auth-unix-rw" msgstr "" #. type: deftypevr #: doc/guix.texi:19580 msgid "" "Authentication scheme for UNIX read-write sockets. By default socket " "permissions only allow root. If PolicyKit support was compiled into " "libvirt, the default will be to use 'polkit' auth." msgstr "" #. type: deftypevr #: doc/guix.texi:19585 #, no-wrap msgid "{@code{libvirt-configuration} parameter} string auth-tcp" msgstr "" #. type: deftypevr #: doc/guix.texi:19589 msgid "" "Authentication scheme for TCP sockets. If you don't enable SASL, then all " "TCP traffic is cleartext. Don't do this outside of a dev/test scenario." msgstr "" #. type: deftypevr #: doc/guix.texi:19591 msgid "Defaults to @samp{\"sasl\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:19594 #, no-wrap msgid "{@code{libvirt-configuration} parameter} string auth-tls" msgstr "" #. type: deftypevr #: doc/guix.texi:19598 msgid "" "Authentication scheme for TLS sockets. TLS sockets already have encryption " "provided by the TLS layer, and limited authentication is done by " "certificates." msgstr "" #. type: deftypevr #: doc/guix.texi:19601 msgid "" "It is possible to make use of any SASL authentication mechanism as well, by " "using 'sasl' for this option" msgstr "" #. type: deftypevr #: doc/guix.texi:19603 msgid "Defaults to @samp{\"none\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:19606 #, no-wrap msgid "{@code{libvirt-configuration} parameter} optional-list access-drivers" msgstr "" #. type: deftypevr #: doc/guix.texi:19608 msgid "API access control scheme." msgstr "" #. type: deftypevr #: doc/guix.texi:19611 msgid "" "By default an authenticated user is allowed access to all APIs. Access " "drivers can place restrictions on this." msgstr "" #. type: deftypevr #: doc/guix.texi:19616 #, no-wrap msgid "{@code{libvirt-configuration} parameter} string key-file" msgstr "" #. type: deftypevr #: doc/guix.texi:19619 msgid "" "Server key file path. If set to an empty string, then no private key is " "loaded." msgstr "" #. type: deftypevr #: doc/guix.texi:19624 #, no-wrap msgid "{@code{libvirt-configuration} parameter} string cert-file" msgstr "" #. type: deftypevr #: doc/guix.texi:19627 msgid "" "Server key file path. If set to an empty string, then no certificate is " "loaded." msgstr "" #. type: deftypevr #: doc/guix.texi:19632 #, no-wrap msgid "{@code{libvirt-configuration} parameter} string ca-file" msgstr "" #. type: deftypevr #: doc/guix.texi:19635 msgid "" "Server key file path. If set to an empty string, then no CA certificate is " "loaded." msgstr "" #. type: deftypevr #: doc/guix.texi:19640 #, no-wrap msgid "{@code{libvirt-configuration} parameter} string crl-file" msgstr "" #. type: deftypevr #: doc/guix.texi:19643 msgid "" "Certificate revocation list path. If set to an empty string, then no CRL is " "loaded." msgstr "" #. type: deftypevr #: doc/guix.texi:19648 #, no-wrap msgid "{@code{libvirt-configuration} parameter} boolean tls-no-sanity-cert" msgstr "" #. type: deftypevr #: doc/guix.texi:19650 msgid "Disable verification of our own server certificates." msgstr "" #. type: deftypevr #: doc/guix.texi:19653 msgid "" "When libvirtd starts it performs some sanity checks against its own " "certificates." msgstr "" #. type: deftypevr #: doc/guix.texi:19658 #, no-wrap msgid "{@code{libvirt-configuration} parameter} boolean tls-no-verify-cert" msgstr "" #. type: deftypevr #: doc/guix.texi:19660 msgid "Disable verification of client certificates." msgstr "" #. type: deftypevr #: doc/guix.texi:19664 msgid "" "Client certificate verification is the primary authentication mechanism. " "Any client which does not present a certificate signed by the CA will be " "rejected." msgstr "" #. type: deftypevr #: doc/guix.texi:19669 #, no-wrap msgid "{@code{libvirt-configuration} parameter} optional-list tls-allowed-dn-list" msgstr "" #. type: deftypevr #: doc/guix.texi:19671 msgid "Whitelist of allowed x509 Distinguished Name." msgstr "" #. type: deftypevr #: doc/guix.texi:19676 #, no-wrap msgid "{@code{libvirt-configuration} parameter} optional-list sasl-allowed-usernames" msgstr "" #. type: deftypevr #: doc/guix.texi:19679 msgid "" "Whitelist of allowed SASL usernames. The format for username depends on the " "SASL authentication mechanism." msgstr "" #. type: deftypevr #: doc/guix.texi:19684 #, no-wrap msgid "{@code{libvirt-configuration} parameter} string tls-priority" msgstr "" #. type: deftypevr #: doc/guix.texi:19688 msgid "" "Override the compile time default TLS priority string. The default is " "usually \"NORMAL\" unless overridden at build time. Only set this is it is " "desired for libvirt to deviate from the global default settings." msgstr "" #. type: deftypevr #: doc/guix.texi:19690 msgid "Defaults to @samp{\"NORMAL\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:19693 #, no-wrap msgid "{@code{libvirt-configuration} parameter} integer max-clients" msgstr "" #. type: deftypevr #: doc/guix.texi:19696 doc/guix.texi:20119 msgid "" "Maximum number of concurrent client connections to allow over all sockets " "combined." msgstr "" #. type: deftypevr #: doc/guix.texi:19698 msgid "Defaults to @samp{5000}." msgstr "" #. type: deftypevr #: doc/guix.texi:19701 #, no-wrap msgid "{@code{libvirt-configuration} parameter} integer max-queued-clients" msgstr "" #. type: deftypevr #: doc/guix.texi:19705 msgid "" "Maximum length of queue of connections waiting to be accepted by the " "daemon. Note, that some protocols supporting retransmission may obey this " "so that a later reattempt at connection succeeds." msgstr "" #. type: deftypevr #: doc/guix.texi:19710 #, no-wrap msgid "{@code{libvirt-configuration} parameter} integer max-anonymous-clients" msgstr "" #. type: deftypevr #: doc/guix.texi:19713 msgid "" "Maximum length of queue of accepted but not yet authenticated clients. Set " "this to zero to turn this feature off" msgstr "" #. type: deftypevr #: doc/guix.texi:19715 doc/guix.texi:19733 doc/guix.texi:19749 msgid "Defaults to @samp{20}." msgstr "" #. type: deftypevr #: doc/guix.texi:19718 #, no-wrap msgid "{@code{libvirt-configuration} parameter} integer min-workers" msgstr "" #. type: deftypevr #: doc/guix.texi:19720 msgid "Number of workers to start up initially." msgstr "" #. type: deftypevr #: doc/guix.texi:19725 #, no-wrap msgid "{@code{libvirt-configuration} parameter} integer max-workers" msgstr "" #. type: deftypevr #: doc/guix.texi:19727 msgid "Maximum number of worker threads." msgstr "" #. type: deftypevr #: doc/guix.texi:19731 msgid "" "If the number of active clients exceeds @code{min-workers}, then more " "threads are spawned, up to max_workers limit. Typically you'd want " "max_workers to equal maximum number of clients allowed." msgstr "" #. type: deftypevr #: doc/guix.texi:19736 #, no-wrap msgid "{@code{libvirt-configuration} parameter} integer prio-workers" msgstr "" #. type: deftypevr #: doc/guix.texi:19740 msgid "" "Number of priority workers. If all workers from above pool are stuck, some " "calls marked as high priority (notably domainDestroy) can be executed in " "this pool." msgstr "" #. type: deftypevr #: doc/guix.texi:19745 #, no-wrap msgid "{@code{libvirt-configuration} parameter} integer max-requests" msgstr "" #. type: deftypevr #: doc/guix.texi:19747 msgid "Total global limit on concurrent RPC calls." msgstr "" #. type: deftypevr #: doc/guix.texi:19752 #, no-wrap msgid "{@code{libvirt-configuration} parameter} integer max-client-requests" msgstr "" #. type: deftypevr #: doc/guix.texi:19756 msgid "" "Limit on concurrent requests from a single client connection. To avoid one " "client monopolizing the server this should be a small fraction of the global " "max_requests and max_workers parameter." msgstr "" #. type: deftypevr #: doc/guix.texi:19761 #, no-wrap msgid "{@code{libvirt-configuration} parameter} integer admin-min-workers" msgstr "" #. type: deftypevr #: doc/guix.texi:19763 msgid "Same as @code{min-workers} but for the admin interface." msgstr "" #. type: deftypevr #: doc/guix.texi:19768 #, no-wrap msgid "{@code{libvirt-configuration} parameter} integer admin-max-workers" msgstr "" #. type: deftypevr #: doc/guix.texi:19770 msgid "Same as @code{max-workers} but for the admin interface." msgstr "" #. type: deftypevr #: doc/guix.texi:19775 #, no-wrap msgid "{@code{libvirt-configuration} parameter} integer admin-max-clients" msgstr "" #. type: deftypevr #: doc/guix.texi:19777 msgid "Same as @code{max-clients} but for the admin interface." msgstr "" #. type: deftypevr #: doc/guix.texi:19782 #, no-wrap msgid "{@code{libvirt-configuration} parameter} integer admin-max-queued-clients" msgstr "" #. type: deftypevr #: doc/guix.texi:19784 msgid "Same as @code{max-queued-clients} but for the admin interface." msgstr "" #. type: deftypevr #: doc/guix.texi:19789 #, no-wrap msgid "{@code{libvirt-configuration} parameter} integer admin-max-client-requests" msgstr "" #. type: deftypevr #: doc/guix.texi:19791 msgid "Same as @code{max-client-requests} but for the admin interface." msgstr "" #. type: deftypevr #: doc/guix.texi:19796 #, no-wrap msgid "{@code{libvirt-configuration} parameter} integer log-level" msgstr "" #. type: deftypevr #: doc/guix.texi:19798 doc/guix.texi:20021 msgid "Logging level. 4 errors, 3 warnings, 2 information, 1 debug." msgstr "" #. type: deftypevr #: doc/guix.texi:19803 #, no-wrap msgid "{@code{libvirt-configuration} parameter} string log-filters" msgstr "" #. type: deftypevr #: doc/guix.texi:19805 doc/guix.texi:20028 msgid "Logging filters." msgstr "" #. type: deftypevr #: doc/guix.texi:19808 doc/guix.texi:20031 msgid "" "A filter allows to select a different logging level for a given category of " "logs The format for a filter is one of:" msgstr "" #. type: itemize #: doc/guix.texi:19812 doc/guix.texi:20035 msgid "x:name" msgstr "" #. type: itemize #: doc/guix.texi:19815 doc/guix.texi:20038 msgid "x:+name" msgstr "" #. type: deftypevr #: doc/guix.texi:19825 doc/guix.texi:20048 msgid "" "where @code{name} is a string which is matched against the category given in " "the @code{VIR_LOG_INIT()} at the top of each libvirt source file, e.g., " "\"remote\", \"qemu\", or \"util.json\" (the name in the filter can be a " "substring of the full category name, in order to match multiple similar " "categories), the optional \"+\" prefix tells libvirt to log stack trace for " "each message matching name, and @code{x} is the minimal level where matching " "messages should be logged:" msgstr "" #. type: itemize #: doc/guix.texi:19829 doc/guix.texi:19874 doc/guix.texi:20052 #: doc/guix.texi:20097 msgid "1: DEBUG" msgstr "" #. type: itemize #: doc/guix.texi:19832 doc/guix.texi:19877 doc/guix.texi:20055 #: doc/guix.texi:20100 msgid "2: INFO" msgstr "" #. type: itemize #: doc/guix.texi:19835 doc/guix.texi:19880 doc/guix.texi:20058 #: doc/guix.texi:20103 msgid "3: WARNING" msgstr "" #. type: itemize #: doc/guix.texi:19838 doc/guix.texi:19883 doc/guix.texi:20061 #: doc/guix.texi:20106 msgid "4: ERROR" msgstr "" #. type: deftypevr #: doc/guix.texi:19843 doc/guix.texi:20066 msgid "" "Multiple filters can be defined in a single filters statement, they just " "need to be separated by spaces." msgstr "" #. type: deftypevr #: doc/guix.texi:19845 doc/guix.texi:20068 msgid "Defaults to @samp{\"3:remote 4:event\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:19848 #, no-wrap msgid "{@code{libvirt-configuration} parameter} string log-outputs" msgstr "" #. type: deftypevr #: doc/guix.texi:19850 doc/guix.texi:20073 msgid "Logging outputs." msgstr "" #. type: deftypevr #: doc/guix.texi:19853 doc/guix.texi:20076 msgid "" "An output is one of the places to save logging information The format for an " "output can be:" msgstr "" #. type: item #: doc/guix.texi:19855 doc/guix.texi:20078 #, no-wrap msgid "x:stderr" msgstr "" #. type: table #: doc/guix.texi:19857 doc/guix.texi:20080 msgid "output goes to stderr" msgstr "" #. type: item #: doc/guix.texi:19858 doc/guix.texi:20081 #, no-wrap msgid "x:syslog:name" msgstr "" #. type: table #: doc/guix.texi:19860 doc/guix.texi:20083 msgid "use syslog for the output and use the given name as the ident" msgstr "" #. type: item #: doc/guix.texi:19861 doc/guix.texi:20084 #, no-wrap msgid "x:file:file_path" msgstr "" #. type: table #: doc/guix.texi:19863 doc/guix.texi:20086 msgid "output to a file, with the given filepath" msgstr "" #. type: item #: doc/guix.texi:19864 doc/guix.texi:20087 #, no-wrap msgid "x:journald" msgstr "" #. type: table #: doc/guix.texi:19866 doc/guix.texi:20089 msgid "output to journald logging system" msgstr "" #. type: deftypevr #: doc/guix.texi:19870 doc/guix.texi:20093 msgid "In all case the x prefix is the minimal level, acting as a filter" msgstr "" #. type: deftypevr #: doc/guix.texi:19888 doc/guix.texi:20111 msgid "" "Multiple outputs can be defined, they just need to be separated by spaces." msgstr "" #. type: deftypevr #: doc/guix.texi:19890 doc/guix.texi:20113 msgid "Defaults to @samp{\"3:stderr\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:19893 #, no-wrap msgid "{@code{libvirt-configuration} parameter} integer audit-level" msgstr "" #. type: deftypevr #: doc/guix.texi:19895 msgid "Allows usage of the auditing subsystem to be altered" msgstr "" #. type: itemize #: doc/guix.texi:19899 msgid "0: disable all auditing" msgstr "" #. type: itemize #: doc/guix.texi:19902 msgid "1: enable auditing, only if enabled on host" msgstr "" #. type: itemize #: doc/guix.texi:19905 msgid "2: enable auditing, and exit if disabled on host." msgstr "" #. type: deftypevr #: doc/guix.texi:19912 #, no-wrap msgid "{@code{libvirt-configuration} parameter} boolean audit-logging" msgstr "" #. type: deftypevr #: doc/guix.texi:19914 msgid "Send audit messages via libvirt logging infrastructure." msgstr "" #. type: deftypevr #: doc/guix.texi:19919 #, no-wrap msgid "{@code{libvirt-configuration} parameter} optional-string host-uuid" msgstr "" #. type: deftypevr #: doc/guix.texi:19921 msgid "Host UUID. UUID must not have all digits be the same." msgstr "" #. type: deftypevr #: doc/guix.texi:19926 #, no-wrap msgid "{@code{libvirt-configuration} parameter} string host-uuid-source" msgstr "" #. type: deftypevr #: doc/guix.texi:19928 msgid "Source to read host UUID." msgstr "" #. type: itemize #: doc/guix.texi:19932 msgid "@code{smbios}: fetch the UUID from @code{dmidecode -s system-uuid}" msgstr "" #. type: itemize #: doc/guix.texi:19935 msgid "@code{machine-id}: fetch the UUID from @code{/etc/machine-id}" msgstr "" #. type: deftypevr #: doc/guix.texi:19940 msgid "" "If @code{dmidecode} does not provide a valid UUID a temporary UUID will be " "generated." msgstr "" #. type: deftypevr #: doc/guix.texi:19942 msgid "Defaults to @samp{\"smbios\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:19945 #, no-wrap msgid "{@code{libvirt-configuration} parameter} integer keepalive-interval" msgstr "" #. type: deftypevr #: doc/guix.texi:19950 msgid "" "A keepalive message is sent to a client after @code{keepalive_interval} " "seconds of inactivity to check if the client is still responding. If set to " "-1, libvirtd will never send keepalive requests; however clients can still " "send them and the daemon will send responses." msgstr "" #. type: deftypevr #: doc/guix.texi:19955 #, no-wrap msgid "{@code{libvirt-configuration} parameter} integer keepalive-count" msgstr "" #. type: deftypevr #: doc/guix.texi:19959 msgid "" "Maximum number of keepalive messages that are allowed to be sent to the " "client without getting any response before the connection is considered " "broken." msgstr "" #. type: deftypevr #: doc/guix.texi:19966 msgid "" "In other words, the connection is automatically closed approximately after " "@code{keepalive_interval * (keepalive_count + 1)} seconds since the last " "message received from the client. When @code{keepalive-count} is set to 0, " "connections will be automatically closed after @code{keepalive-interval} " "seconds of inactivity without sending any keepalive messages." msgstr "" #. type: deftypevr #: doc/guix.texi:19971 #, no-wrap msgid "{@code{libvirt-configuration} parameter} integer admin-keepalive-interval" msgstr "" #. type: deftypevr #: doc/guix.texi:19973 doc/guix.texi:19980 msgid "Same as above but for admin interface." msgstr "" #. type: deftypevr #: doc/guix.texi:19978 #, no-wrap msgid "{@code{libvirt-configuration} parameter} integer admin-keepalive-count" msgstr "" #. type: deftypevr #: doc/guix.texi:19985 #, no-wrap msgid "{@code{libvirt-configuration} parameter} integer ovs-timeout" msgstr "" #. type: deftypevr #: doc/guix.texi:19987 msgid "Timeout for Open vSwitch calls." msgstr "" #. type: deftypevr #: doc/guix.texi:19991 msgid "" "The @code{ovs-vsctl} utility is used for the configuration and its timeout " "option is set by default to 5 seconds to avoid potential infinite waits " "blocking libvirt." msgstr "" #. type: subsubheading #: doc/guix.texi:19998 #, no-wrap msgid "Virtlog daemon" msgstr "" #. type: Plain text #: doc/guix.texi:20001 msgid "" "The virtlogd service is a server side daemon component of libvirt that is " "used to manage logs from virtual machine consoles." msgstr "" #. type: Plain text #: doc/guix.texi:20007 msgid "" "This daemon is not used directly by libvirt client applications, rather it " "is called on their behalf by @code{libvirtd}. By maintaining the logs in a " "standalone daemon, the main @code{libvirtd} daemon can be restarted without " "risk of losing logs. The @code{virtlogd} daemon has the ability to re-" "exec() itself upon receiving @code{SIGUSR1}, to allow live upgrades without " "downtime." msgstr "" #. type: deffn #: doc/guix.texi:20008 #, no-wrap msgid "{Scheme Variable} virtlog-service-type" msgstr "" #. type: deffn #: doc/guix.texi:20011 msgid "" "This is the type of the virtlog daemon. Its value must be a @code{virtlog-" "configuration}." msgstr "" #. type: example #: doc/guix.texi:20016 #, no-wrap msgid "" "(service virtlog-service-type\n" " (virtlog-configuration\n" " (max-clients 1000)))\n" msgstr "" #. type: deftypevr #: doc/guix.texi:20019 #, no-wrap msgid "{@code{virtlog-configuration} parameter} integer log-level" msgstr "" #. type: deftypevr #: doc/guix.texi:20026 #, no-wrap msgid "{@code{virtlog-configuration} parameter} string log-filters" msgstr "" #. type: deftypevr #: doc/guix.texi:20071 #, no-wrap msgid "{@code{virtlog-configuration} parameter} string log-outputs" msgstr "" #. type: deftypevr #: doc/guix.texi:20116 #, no-wrap msgid "{@code{virtlog-configuration} parameter} integer max-clients" msgstr "" #. type: deftypevr #: doc/guix.texi:20121 msgid "Defaults to @samp{1024}." msgstr "" #. type: deftypevr #: doc/guix.texi:20124 #, no-wrap msgid "{@code{virtlog-configuration} parameter} integer max-size" msgstr "" #. type: deftypevr #: doc/guix.texi:20126 msgid "Maximum file size before rolling over." msgstr "" #. type: deftypevr #: doc/guix.texi:20128 msgid "Defaults to @samp{2MB}" msgstr "" #. type: deftypevr #: doc/guix.texi:20131 #, no-wrap msgid "{@code{virtlog-configuration} parameter} integer max-backups" msgstr "" #. type: deftypevr #: doc/guix.texi:20133 msgid "Maximum number of backup files to keep." msgstr "" #. type: deftypevr #: doc/guix.texi:20135 msgid "Defaults to @samp{3}" msgstr "" #. type: subsubheading #: doc/guix.texi:20138 #, no-wrap msgid "Transparent Emulation with QEMU" msgstr "" #. type: cindex #: doc/guix.texi:20140 #, no-wrap msgid "emulation" msgstr "" #. type: code{#1} #: doc/guix.texi:20141 #, no-wrap msgid "binfmt_misc" msgstr "" #. type: Plain text #: doc/guix.texi:20147 msgid "" "@code{qemu-binfmt-service-type} provides support for transparent emulation " "of program binaries built for different architectures---e.g., it allows you " "to transparently execute an ARMv7 program on an x86_64 machine. It achieves " "this by combining the @uref{https://www.qemu.org, QEMU} emulator and the " "@code{binfmt_misc} feature of the kernel Linux." msgstr "" #. type: defvr #: doc/guix.texi:20148 #, no-wrap msgid "{Scheme Variable} qemu-binfmt-service-type" msgstr "" #. type: defvr #: doc/guix.texi:20153 msgid "" "This is the type of the QEMU/binfmt service for transparent emulation. Its " "value must be a @code{qemu-binfmt-configuration} object, which specifies the " "QEMU package to use as well as the architecture we want to emulated:" msgstr "" #. type: example #: doc/guix.texi:20158 #, no-wrap msgid "" "(service qemu-binfmt-service-type\n" " (qemu-binfmt-configuration\n" " (platforms (lookup-qemu-platforms \"arm\" \"aarch64\" \"ppc\"))))\n" msgstr "" #. type: defvr #: doc/guix.texi:20164 msgid "" "In this example, we enable transparent emulation for the ARM and aarch64 " "platforms. Running @code{herd stop qemu-binfmt} turns it off, and running " "@code{herd start qemu-binfmt} turns it back on (@pxref{Invoking herd, the " "@command{herd} command,, shepherd, The GNU Shepherd Manual})." msgstr "" #. type: deftp #: doc/guix.texi:20166 #, no-wrap msgid "{Data Type} qemu-binfmt-configuration" msgstr "" #. type: deftp #: doc/guix.texi:20168 msgid "This is the configuration for the @code{qemu-binfmt} service." msgstr "" #. type: item #: doc/guix.texi:20170 #, no-wrap msgid "@code{platforms} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:20173 msgid "" "The list of emulated QEMU platforms. Each item must be a @dfn{platform " "object} as returned by @code{lookup-qemu-platforms} (see below)." msgstr "" #. type: item #: doc/guix.texi:20174 #, no-wrap msgid "@code{guix-support?} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:20180 msgid "" "When it is true, QEMU and all its dependencies are added to the build " "environment of @command{guix-daemon} (@pxref{Invoking guix-daemon, @code{--" "chroot-directory} option}). This allows the @code{binfmt_misc} handlers to " "be used within the build environment, which in turn means that you can " "transparently build programs for another architecture." msgstr "" #. type: table #: doc/guix.texi:20183 msgid "" "For example, let's suppose you're on an x86_64 machine and you have this " "service:" msgstr "" #. type: example #: doc/guix.texi:20189 #, no-wrap msgid "" "(service qemu-binfmt-service-type\n" " (qemu-binfmt-configuration\n" " (platforms (lookup-qemu-platforms \"arm\"))\n" " (guix-support? #t)))\n" msgstr "" #. type: table #: doc/guix.texi:20192 msgid "You can run:" msgstr "" #. type: example #: doc/guix.texi:20195 #, no-wrap msgid "guix build -s armhf-linux inkscape\n" msgstr "" #. type: table #: doc/guix.texi:20202 msgid "" "and it will build Inkscape for ARMv7 @emph{as if it were a native build}, " "transparently using QEMU to emulate the ARMv7 CPU. Pretty handy if you'd " "like to test a package build for an architecture you don't have access to!" msgstr "" #. type: item #: doc/guix.texi:20203 #, no-wrap msgid "@code{qemu} (default: @code{qemu})" msgstr "" #. type: table #: doc/guix.texi:20205 msgid "The QEMU package to use." msgstr "" #. type: deffn #: doc/guix.texi:20208 #, no-wrap msgid "{Scheme Procedure} lookup-qemu-platforms @var{platforms}@dots{}" msgstr "" #. type: deffn #: doc/guix.texi:20213 msgid "" "Return the list of QEMU platform objects corresponding to @var{platforms}" "@dots{}. @var{platforms} must be a list of strings corresponding to " "platform names, such as @code{\"arm\"}, @code{\"sparc\"}, @code{\"mips64el" "\"}, and so on." msgstr "" #. type: deffn #: doc/guix.texi:20215 #, no-wrap msgid "{Scheme Procedure} qemu-platform? @var{obj}" msgstr "" #. type: deffn #: doc/guix.texi:20217 msgid "Return true if @var{obj} is a platform object." msgstr "" #. type: deffn #: doc/guix.texi:20219 #, no-wrap msgid "{Scheme Procedure} qemu-platform-name @var{platform}" msgstr "" #. type: deffn #: doc/guix.texi:20221 msgid "Return the name of @var{platform}---a string such as @code{\"arm\"}." msgstr "" #. type: Plain text #: doc/guix.texi:20233 msgid "" "The @code{(gnu services version-control)} module provides a service to allow " "remote access to local Git repositories. There are three options: the " "@code{git-daemon-service}, which provides access to repositories via the " "@code{git://} unsecured TCP-based protocol, extending the @code{nginx} web " "server to proxy some requests to @code{git-http-backend}, or providing a web " "interface with @code{cgit-service-type}." msgstr "" #. type: deffn #: doc/guix.texi:20234 #, no-wrap msgid "{Scheme Procedure} git-daemon-service [#:config (git-daemon-configuration)]" msgstr "" #. type: deffn #: doc/guix.texi:20238 msgid "" "Return a service that runs @command{git daemon}, a simple TCP server to " "expose repositories over the Git protocol for anonymous access." msgstr "" #. type: deffn #: doc/guix.texi:20244 msgid "" "The optional @var{config} argument should be a @code{} object, by default it allows read-only access to " "exported@footnote{By creating the magic file \"git-daemon-export-ok\" in the " "repository directory.} repositories under @file{/srv/git}." msgstr "" #. type: deftp #: doc/guix.texi:20247 #, no-wrap msgid "{Data Type} git-daemon-configuration" msgstr "" #. type: deftp #: doc/guix.texi:20249 msgid "Data type representing the configuration for @code{git-daemon-service}." msgstr "" #. type: item #: doc/guix.texi:20251 doc/guix.texi:20307 #, no-wrap msgid "@code{package} (default: @var{git})" msgstr "" #. type: table #: doc/guix.texi:20253 doc/guix.texi:20309 msgid "Package object of the Git distributed version control system." msgstr "" #. type: item #: doc/guix.texi:20254 doc/guix.texi:20313 #, no-wrap msgid "@code{export-all?} (default: @var{#f})" msgstr "" #. type: table #: doc/guix.texi:20257 msgid "" "Whether to allow access for all Git repositories, even if they do not have " "the @file{git-daemon-export-ok} file." msgstr "" #. type: item #: doc/guix.texi:20258 #, no-wrap msgid "@code{base-path} (default: @file{/srv/git})" msgstr "" #. type: table #: doc/guix.texi:20263 msgid "" "Whether to remap all the path requests as relative to the given path. If " "you run git daemon with @var{(base-path \"/srv/git\")} on example.com, then " "if you later try to pull @code{git://example.com/hello.git}, git daemon will " "interpret the path as @code{/srv/git/hello.git}." msgstr "" #. type: item #: doc/guix.texi:20264 #, no-wrap msgid "@code{user-path} (default: @var{#f})" msgstr "" #. type: table #: doc/guix.texi:20271 msgid "" "Whether to allow @code{~user} notation to be used in requests. When " "specified with empty string, requests to @code{git://host/~alice/foo} is " "taken as a request to access @code{foo} repository in the home directory of " "user @code{alice}. If @var{(user-path \"path\")} is specified, the same " "request is taken as a request to access @code{path/foo} repository in the " "home directory of user @code{alice}." msgstr "" #. type: item #: doc/guix.texi:20272 #, no-wrap msgid "@code{listen} (default: @var{'()})" msgstr "" #. type: table #: doc/guix.texi:20275 msgid "" "Whether to listen on specific IP addresses or hostnames, defaults to all." msgstr "" #. type: item #: doc/guix.texi:20276 #, no-wrap msgid "@code{port} (default: @var{#f})" msgstr "" #. type: table #: doc/guix.texi:20278 msgid "Whether to listen on an alternative port, which defaults to 9418." msgstr "" #. type: item #: doc/guix.texi:20279 #, no-wrap msgid "@code{whitelist} (default: @var{'()})" msgstr "" #. type: table #: doc/guix.texi:20281 msgid "If not empty, only allow access to this list of directories." msgstr "" #. type: item #: doc/guix.texi:20282 #, no-wrap msgid "@code{extra-options} (default: @var{'()})" msgstr "" #. type: table #: doc/guix.texi:20285 msgid "" "Extra options will be passed to @code{git daemon}, please run @command{man " "git-daemon} for more information." msgstr "" #. type: Plain text #: doc/guix.texi:20299 msgid "" "The @code{git://} protocol lacks authentication. When you pull from a " "repository fetched via @code{git://}, you don't know that the data you " "receive was modified is really coming from the specified host, and you have " "your connection is subject to eavesdropping. It's better to use an " "authenticated and encrypted transport, such as @code{https}. Although Git " "allows you to serve repositories using unsophisticated file-based web " "servers, there is a faster protocol implemented by the @code{git-http-" "backend} program. This program is the back-end of a proper Git web " "service. It is designed to sit behind a FastCGI proxy. @xref{Web " "Services}, for more on running the necessary @code{fcgiwrap} daemon." msgstr "" #. type: Plain text #: doc/guix.texi:20302 msgid "" "Guix has a separate configuration data type for serving Git repositories " "over HTTP." msgstr "" #. type: deftp #: doc/guix.texi:20303 #, no-wrap msgid "{Data Type} git-http-configuration" msgstr "" #. type: deftp #: doc/guix.texi:20305 msgid "Data type representing the configuration for @code{git-http-service}." msgstr "" #. type: item #: doc/guix.texi:20310 #, no-wrap msgid "@code{git-root} (default: @file{/srv/git})" msgstr "" #. type: table #: doc/guix.texi:20312 msgid "Directory containing the Git repositories to expose to the world." msgstr "" #. type: table #: doc/guix.texi:20316 msgid "" "Whether to expose access for all Git repositories in @var{git-root}, even if " "they do not have the @file{git-daemon-export-ok} file." msgstr "" #. type: item #: doc/guix.texi:20317 #, no-wrap msgid "@code{uri-path} (default: @file{/git/})" msgstr "" #. type: table #: doc/guix.texi:20322 msgid "" "Path prefix for Git access. With the default @code{/git/} prefix, this will " "map @code{http://@var{server}/git/@var{repo}.git} to @code{/srv/git/" "@var{repo}.git}. Requests whose URI paths do not begin with this prefix are " "not passed on to this Git instance." msgstr "" #. type: item #: doc/guix.texi:20323 #, no-wrap msgid "@code{fcgiwrap-socket} (default: @code{127.0.0.1:9000})" msgstr "" #. type: table #: doc/guix.texi:20326 msgid "" "The socket on which the @code{fcgiwrap} daemon is listening. @xref{Web " "Services}." msgstr "" #. type: Plain text #: doc/guix.texi:20333 msgid "" "There is no @code{git-http-service-type}, currently; instead you can create " "an @code{nginx-location-configuration} from a @code{git-http-configuration} " "and then add that location to a web server." msgstr "" #. type: deffn #: doc/guix.texi:20334 #, no-wrap msgid "{Scheme Procedure} git-http-nginx-location-configuration @" msgstr "" #. type: deffn #: doc/guix.texi:20339 msgid "" "[config=(git-http-configuration)] Compute an @code{nginx-location-" "configuration} that corresponds to the given Git http configuration. An " "example nginx service definition to serve the default @file{/srv/git} over " "HTTPS might be:" msgstr "" #. type: example #: doc/guix.texi:20356 #, no-wrap msgid "" "(service nginx-service-type\n" " (nginx-configuration\n" " (server-blocks\n" " (list\n" " (nginx-server-configuration\n" " (listen '(\"443 ssl\"))\n" " (server-name \"git.my-host.org\")\n" " (ssl-certificate\n" " \"/etc/letsencrypt/live/git.my-host.org/fullchain.pem\")\n" " (ssl-certificate-key\n" " \"/etc/letsencrypt/live/git.my-host.org/privkey.pem\")\n" " (locations\n" " (list\n" " (git-http-nginx-location-configuration\n" " (git-http-configuration (uri-path \"/\"))))))))))\n" msgstr "" #. type: deffn #: doc/guix.texi:20363 msgid "" "This example assumes that you are using Let's Encrypt to get your TLS " "certificate. @xref{Certificate Services}. The default @code{certbot} " "service will redirect all HTTP traffic on @code{git.my-host.org} to HTTPS. " "You will also need to add an @code{fcgiwrap} proxy to your system services. " "@xref{Web Services}." msgstr "" #. type: subsubheading #: doc/guix.texi:20365 #, no-wrap msgid "Cgit Service" msgstr "" #. type: cindex #: doc/guix.texi:20367 #, no-wrap msgid "Cgit service" msgstr "" #. type: cindex #: doc/guix.texi:20368 #, no-wrap msgid "Git, web interface" msgstr "" #. type: Plain text #: doc/guix.texi:20371 msgid "" "@uref{https://git.zx2c4.com/cgit/, Cgit} is a web frontend for Git " "repositories written in C." msgstr "" #. type: Plain text #: doc/guix.texi:20374 msgid "" "The following example will configure the service with default values. By " "default, Cgit can be accessed on port 80 (@code{http://localhost:80})." msgstr "" #. type: example #: doc/guix.texi:20377 #, no-wrap msgid "(service cgit-service-type)\n" msgstr "" #. type: Plain text #: doc/guix.texi:20381 msgid "" "The @code{file-object} type designates either a file-like object (@pxref{G-" "Expressions, file-like objects}) or a string." msgstr "" #. type: Plain text #: doc/guix.texi:20385 msgid "Available @code{cgit-configuration} fields are:" msgstr "" #. type: deftypevr #: doc/guix.texi:20386 #, no-wrap msgid "{@code{cgit-configuration} parameter} package package" msgstr "" #. type: deftypevr #: doc/guix.texi:20388 msgid "The CGIT package." msgstr "" #. type: deftypevr #: doc/guix.texi:20391 #, no-wrap msgid "{@code{cgit-configuration} parameter} nginx-server-configuration-list nginx" msgstr "" #. type: deftypevr #: doc/guix.texi:20393 msgid "NGINX configuration." msgstr "" #. type: deftypevr #: doc/guix.texi:20396 #, no-wrap msgid "{@code{cgit-configuration} parameter} file-object about-filter" msgstr "" #. type: deftypevr #: doc/guix.texi:20399 msgid "" "Specifies a command which will be invoked to format the content of about " "pages (both top-level and for each repository)." msgstr "" #. type: deftypevr #: doc/guix.texi:20404 #, no-wrap msgid "{@code{cgit-configuration} parameter} string agefile" msgstr "" #. type: deftypevr #: doc/guix.texi:20407 msgid "" "Specifies a path, relative to each repository path, which can be used to " "specify the date and time of the youngest commit in the repository." msgstr "" #. type: deftypevr #: doc/guix.texi:20412 #, no-wrap msgid "{@code{cgit-configuration} parameter} file-object auth-filter" msgstr "" #. type: deftypevr #: doc/guix.texi:20415 msgid "" "Specifies a command that will be invoked for authenticating repository " "access." msgstr "" #. type: deftypevr #: doc/guix.texi:20420 #, no-wrap msgid "{@code{cgit-configuration} parameter} string branch-sort" msgstr "" #. type: deftypevr #: doc/guix.texi:20423 msgid "" "Flag which, when set to @samp{age}, enables date ordering in the branch ref " "list, and when set @samp{name} enables ordering by branch name." msgstr "" #. type: deftypevr #: doc/guix.texi:20425 msgid "Defaults to @samp{\"name\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:20428 #, no-wrap msgid "{@code{cgit-configuration} parameter} string cache-root" msgstr "" #. type: deftypevr #: doc/guix.texi:20430 msgid "Path used to store the cgit cache entries." msgstr "" #. type: deftypevr #: doc/guix.texi:20432 msgid "Defaults to @samp{\"/var/cache/cgit\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:20435 #, no-wrap msgid "{@code{cgit-configuration} parameter} integer cache-static-ttl" msgstr "" #. type: deftypevr #: doc/guix.texi:20438 msgid "" "Number which specifies the time-to-live, in minutes, for the cached version " "of repository pages accessed with a fixed SHA1." msgstr "" #. type: deftypevr #: doc/guix.texi:20440 doc/guix.texi:20883 msgid "Defaults to @samp{-1}." msgstr "" #. type: deftypevr #: doc/guix.texi:20443 #, no-wrap msgid "{@code{cgit-configuration} parameter} integer cache-dynamic-ttl" msgstr "" #. type: deftypevr #: doc/guix.texi:20446 msgid "" "Number which specifies the time-to-live, in minutes, for the cached version " "of repository pages accessed without a fixed SHA1." msgstr "" #. type: deftypevr #: doc/guix.texi:20451 #, no-wrap msgid "{@code{cgit-configuration} parameter} integer cache-repo-ttl" msgstr "" #. type: deftypevr #: doc/guix.texi:20454 msgid "" "Number which specifies the time-to-live, in minutes, for the cached version " "of the repository summary page." msgstr "" #. type: deftypevr #: doc/guix.texi:20459 #, no-wrap msgid "{@code{cgit-configuration} parameter} integer cache-root-ttl" msgstr "" #. type: deftypevr #: doc/guix.texi:20462 msgid "" "Number which specifies the time-to-live, in minutes, for the cached version " "of the repository index page." msgstr "" #. type: deftypevr #: doc/guix.texi:20467 #, no-wrap msgid "{@code{cgit-configuration} parameter} integer cache-scanrc-ttl" msgstr "" #. type: deftypevr #: doc/guix.texi:20470 msgid "" "Number which specifies the time-to-live, in minutes, for the result of " "scanning a path for Git repositories." msgstr "" #. type: deftypevr #: doc/guix.texi:20475 #, no-wrap msgid "{@code{cgit-configuration} parameter} integer cache-about-ttl" msgstr "" #. type: deftypevr #: doc/guix.texi:20478 msgid "" "Number which specifies the time-to-live, in minutes, for the cached version " "of the repository about page." msgstr "" #. type: deftypevr #: doc/guix.texi:20483 #, no-wrap msgid "{@code{cgit-configuration} parameter} integer cache-snapshot-ttl" msgstr "" #. type: deftypevr #: doc/guix.texi:20486 msgid "" "Number which specifies the time-to-live, in minutes, for the cached version " "of snapshots." msgstr "" #. type: deftypevr #: doc/guix.texi:20491 #, no-wrap msgid "{@code{cgit-configuration} parameter} integer cache-size" msgstr "" #. type: deftypevr #: doc/guix.texi:20494 msgid "" "The maximum number of entries in the cgit cache. When set to @samp{0}, " "caching is disabled." msgstr "" #. type: deftypevr #: doc/guix.texi:20499 #, no-wrap msgid "{@code{cgit-configuration} parameter} boolean case-sensitive-sort?" msgstr "" #. type: deftypevr #: doc/guix.texi:20501 msgid "Sort items in the repo list case sensitively." msgstr "" #. type: deftypevr #: doc/guix.texi:20506 #, no-wrap msgid "{@code{cgit-configuration} parameter} list clone-prefix" msgstr "" #. type: deftypevr #: doc/guix.texi:20509 msgid "" "List of common prefixes which, when combined with a repository URL, " "generates valid clone URLs for the repository." msgstr "" #. type: deftypevr #: doc/guix.texi:20514 #, no-wrap msgid "{@code{cgit-configuration} parameter} list clone-url" msgstr "" #. type: deftypevr #: doc/guix.texi:20516 msgid "List of @code{clone-url} templates." msgstr "" #. type: deftypevr #: doc/guix.texi:20521 #, no-wrap msgid "{@code{cgit-configuration} parameter} file-object commit-filter" msgstr "" #. type: deftypevr #: doc/guix.texi:20523 msgid "Command which will be invoked to format commit messages." msgstr "" #. type: deftypevr #: doc/guix.texi:20528 #, no-wrap msgid "{@code{cgit-configuration} parameter} string commit-sort" msgstr "" #. type: deftypevr #: doc/guix.texi:20532 doc/guix.texi:21090 msgid "" "Flag which, when set to @samp{date}, enables strict date ordering in the " "commit log, and when set to @samp{topo} enables strict topological ordering." msgstr "" #. type: deftypevr #: doc/guix.texi:20534 msgid "Defaults to @samp{\"git log\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:20537 #, no-wrap msgid "{@code{cgit-configuration} parameter} file-object css" msgstr "" #. type: deftypevr #: doc/guix.texi:20539 msgid "URL which specifies the css document to include in all cgit pages." msgstr "" #. type: deftypevr #: doc/guix.texi:20541 msgid "Defaults to @samp{\"/share/cgit/cgit.css\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:20544 #, no-wrap msgid "{@code{cgit-configuration} parameter} file-object email-filter" msgstr "" #. type: deftypevr #: doc/guix.texi:20548 msgid "" "Specifies a command which will be invoked to format names and email address " "of committers, authors, and taggers, as represented in various places " "throughout the cgit interface." msgstr "" #. type: deftypevr #: doc/guix.texi:20553 #, no-wrap msgid "{@code{cgit-configuration} parameter} boolean embedded?" msgstr "" #. type: deftypevr #: doc/guix.texi:20556 msgid "" "Flag which, when set to @samp{#t}, will make cgit generate a HTML fragment " "suitable for embedding in other HTML pages." msgstr "" #. type: deftypevr #: doc/guix.texi:20561 #, no-wrap msgid "{@code{cgit-configuration} parameter} boolean enable-commit-graph?" msgstr "" #. type: deftypevr #: doc/guix.texi:20565 msgid "" "Flag which, when set to @samp{#t}, will make cgit print an ASCII-art commit " "history graph to the left of the commit messages in the repository log page." msgstr "" #. type: deftypevr #: doc/guix.texi:20570 #, no-wrap msgid "{@code{cgit-configuration} parameter} boolean enable-filter-overrides?" msgstr "" #. type: deftypevr #: doc/guix.texi:20573 msgid "" "Flag which, when set to @samp{#t}, allows all filter settings to be " "overridden in repository-specific cgitrc files." msgstr "" #. type: deftypevr #: doc/guix.texi:20578 #, no-wrap msgid "{@code{cgit-configuration} parameter} boolean enable-follow-links?" msgstr "" #. type: deftypevr #: doc/guix.texi:20581 msgid "" "Flag which, when set to @samp{#t}, allows users to follow a file in the log " "view." msgstr "" #. type: deftypevr #: doc/guix.texi:20586 #, no-wrap msgid "{@code{cgit-configuration} parameter} boolean enable-http-clone?" msgstr "" #. type: deftypevr #: doc/guix.texi:20589 msgid "" "If set to @samp{#t}, cgit will act as an dumb HTTP endpoint for Git clones." msgstr "" #. type: deftypevr #: doc/guix.texi:20594 #, no-wrap msgid "{@code{cgit-configuration} parameter} boolean enable-index-links?" msgstr "" #. type: deftypevr #: doc/guix.texi:20597 msgid "" "Flag which, when set to @samp{#t}, will make cgit generate extra links " "\"summary\", \"commit\", \"tree\" for each repo in the repository index." msgstr "" #. type: deftypevr #: doc/guix.texi:20602 #, no-wrap msgid "{@code{cgit-configuration} parameter} boolean enable-index-owner?" msgstr "" #. type: deftypevr #: doc/guix.texi:20605 msgid "" "Flag which, when set to @samp{#t}, will make cgit display the owner of each " "repo in the repository index." msgstr "" #. type: deftypevr #: doc/guix.texi:20610 #, no-wrap msgid "{@code{cgit-configuration} parameter} boolean enable-log-filecount?" msgstr "" #. type: deftypevr #: doc/guix.texi:20613 msgid "" "Flag which, when set to @samp{#t}, will make cgit print the number of " "modified files for each commit on the repository log page." msgstr "" #. type: deftypevr #: doc/guix.texi:20618 #, no-wrap msgid "{@code{cgit-configuration} parameter} boolean enable-log-linecount?" msgstr "" #. type: deftypevr #: doc/guix.texi:20621 msgid "" "Flag which, when set to @samp{#t}, will make cgit print the number of added " "and removed lines for each commit on the repository log page." msgstr "" #. type: deftypevr #: doc/guix.texi:20626 #, no-wrap msgid "{@code{cgit-configuration} parameter} boolean enable-remote-branches?" msgstr "" #. type: deftypevr #: doc/guix.texi:20629 doc/guix.texi:21153 msgid "" "Flag which, when set to @code{#t}, will make cgit display remote branches in " "the summary and refs views." msgstr "" #. type: deftypevr #: doc/guix.texi:20634 #, no-wrap msgid "{@code{cgit-configuration} parameter} boolean enable-subject-links?" msgstr "" #. type: deftypevr #: doc/guix.texi:20638 msgid "" "Flag which, when set to @code{1}, will make cgit use the subject of the " "parent commit as link text when generating links to parent commits in commit " "view." msgstr "" #. type: deftypevr #: doc/guix.texi:20643 #, no-wrap msgid "{@code{cgit-configuration} parameter} boolean enable-html-serving?" msgstr "" #. type: deftypevr #: doc/guix.texi:20647 msgid "" "Flag which, when set to @samp{#t}, will make cgit use the subject of the " "parent commit as link text when generating links to parent commits in commit " "view." msgstr "" #. type: deftypevr #: doc/guix.texi:20652 #, no-wrap msgid "{@code{cgit-configuration} parameter} boolean enable-tree-linenumbers?" msgstr "" #. type: deftypevr #: doc/guix.texi:20655 msgid "" "Flag which, when set to @samp{#t}, will make cgit generate linenumber links " "for plaintext blobs printed in the tree view." msgstr "" #. type: deftypevr #: doc/guix.texi:20660 #, no-wrap msgid "{@code{cgit-configuration} parameter} boolean enable-git-config?" msgstr "" #. type: deftypevr #: doc/guix.texi:20663 msgid "" "Flag which, when set to @samp{#f}, will allow cgit to use Git config to set " "any repo specific settings." msgstr "" #. type: deftypevr #: doc/guix.texi:20668 #, no-wrap msgid "{@code{cgit-configuration} parameter} file-object favicon" msgstr "" #. type: deftypevr #: doc/guix.texi:20670 msgid "URL used as link to a shortcut icon for cgit." msgstr "" #. type: deftypevr #: doc/guix.texi:20672 msgid "Defaults to @samp{\"/favicon.ico\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:20675 #, no-wrap msgid "{@code{cgit-configuration} parameter} string footer" msgstr "" #. type: deftypevr #: doc/guix.texi:20679 msgid "" "The content of the file specified with this option will be included verbatim " "at the bottom of all pages (i.e. it replaces the standard \"generated by..." "\" message)." msgstr "" #. type: deftypevr #: doc/guix.texi:20684 #, no-wrap msgid "{@code{cgit-configuration} parameter} string head-include" msgstr "" #. type: deftypevr #: doc/guix.texi:20687 msgid "" "The content of the file specified with this option will be included verbatim " "in the HTML HEAD section on all pages." msgstr "" #. type: deftypevr #: doc/guix.texi:20692 #, no-wrap msgid "{@code{cgit-configuration} parameter} string header" msgstr "" #. type: deftypevr #: doc/guix.texi:20695 msgid "" "The content of the file specified with this option will be included verbatim " "at the top of all pages." msgstr "" #. type: deftypevr #: doc/guix.texi:20700 #, no-wrap msgid "{@code{cgit-configuration} parameter} file-object include" msgstr "" #. type: deftypevr #: doc/guix.texi:20703 msgid "" "Name of a configfile to include before the rest of the current config- file " "is parsed." msgstr "" #. type: deftypevr #: doc/guix.texi:20708 #, no-wrap msgid "{@code{cgit-configuration} parameter} string index-header" msgstr "" #. type: deftypevr #: doc/guix.texi:20711 msgid "" "The content of the file specified with this option will be included verbatim " "above the repository index." msgstr "" #. type: deftypevr #: doc/guix.texi:20716 #, no-wrap msgid "{@code{cgit-configuration} parameter} string index-info" msgstr "" #. type: deftypevr #: doc/guix.texi:20719 msgid "" "The content of the file specified with this option will be included verbatim " "below the heading on the repository index page." msgstr "" #. type: deftypevr #: doc/guix.texi:20724 #, no-wrap msgid "{@code{cgit-configuration} parameter} boolean local-time?" msgstr "" #. type: deftypevr #: doc/guix.texi:20727 msgid "" "Flag which, if set to @samp{#t}, makes cgit print commit and tag times in " "the servers timezone." msgstr "" #. type: deftypevr #: doc/guix.texi:20732 #, no-wrap msgid "{@code{cgit-configuration} parameter} file-object logo" msgstr "" #. type: deftypevr #: doc/guix.texi:20735 msgid "" "URL which specifies the source of an image which will be used as a logo on " "all cgit pages." msgstr "" #. type: deftypevr #: doc/guix.texi:20737 msgid "Defaults to @samp{\"/share/cgit/cgit.png\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:20740 #, no-wrap msgid "{@code{cgit-configuration} parameter} string logo-link" msgstr "" #. type: deftypevr #: doc/guix.texi:20742 doc/guix.texi:21199 msgid "URL loaded when clicking on the cgit logo image." msgstr "" #. type: deftypevr #: doc/guix.texi:20747 #, no-wrap msgid "{@code{cgit-configuration} parameter} file-object owner-filter" msgstr "" #. type: deftypevr #: doc/guix.texi:20750 msgid "" "Command which will be invoked to format the Owner column of the main page." msgstr "" #. type: deftypevr #: doc/guix.texi:20755 #, no-wrap msgid "{@code{cgit-configuration} parameter} integer max-atom-items" msgstr "" #. type: deftypevr #: doc/guix.texi:20757 msgid "Number of items to display in atom feeds view." msgstr "" #. type: deftypevr #: doc/guix.texi:20759 doc/guix.texi:20994 doc/guix.texi:21002 #: doc/guix.texi:21010 msgid "Defaults to @samp{10}." msgstr "" #. type: deftypevr #: doc/guix.texi:20762 #, no-wrap msgid "{@code{cgit-configuration} parameter} integer max-commit-count" msgstr "" #. type: deftypevr #: doc/guix.texi:20764 msgid "Number of entries to list per page in \"log\" view." msgstr "" #. type: deftypevr #: doc/guix.texi:20766 doc/guix.texi:20781 msgid "Defaults to @samp{50}." msgstr "" #. type: deftypevr #: doc/guix.texi:20769 #, no-wrap msgid "{@code{cgit-configuration} parameter} integer max-message-length" msgstr "" #. type: deftypevr #: doc/guix.texi:20771 msgid "Number of commit message characters to display in \"log\" view." msgstr "" #. type: deftypevr #: doc/guix.texi:20773 doc/guix.texi:20789 msgid "Defaults to @samp{80}." msgstr "" #. type: deftypevr #: doc/guix.texi:20776 #, no-wrap msgid "{@code{cgit-configuration} parameter} integer max-repo-count" msgstr "" #. type: deftypevr #: doc/guix.texi:20779 msgid "" "Specifies the number of entries to list per page on the repository index " "page." msgstr "" #. type: deftypevr #: doc/guix.texi:20784 #, no-wrap msgid "{@code{cgit-configuration} parameter} integer max-repodesc-length" msgstr "" #. type: deftypevr #: doc/guix.texi:20787 msgid "" "Specifies the maximum number of repo description characters to display on " "the repository index page." msgstr "" #. type: deftypevr #: doc/guix.texi:20792 #, no-wrap msgid "{@code{cgit-configuration} parameter} integer max-blob-size" msgstr "" #. type: deftypevr #: doc/guix.texi:20794 msgid "Specifies the maximum size of a blob to display HTML for in KBytes." msgstr "" #. type: deftypevr #: doc/guix.texi:20799 #, no-wrap msgid "{@code{cgit-configuration} parameter} string max-stats" msgstr "" #. type: deftypevr #: doc/guix.texi:20802 msgid "" "Maximum statistics period. Valid values are @samp{week},@samp{month}, " "@samp{quarter} and @samp{year}." msgstr "" #. type: deftypevr #: doc/guix.texi:20807 #, no-wrap msgid "{@code{cgit-configuration} parameter} mimetype-alist mimetype" msgstr "" #. type: deftypevr #: doc/guix.texi:20809 msgid "Mimetype for the specified filename extension." msgstr "" #. type: deftypevr #: doc/guix.texi:20813 msgid "" "Defaults to @samp{((gif \"image/gif\") (html \"text/html\") (jpg \"image/jpeg" "\") (jpeg \"image/jpeg\") (pdf \"application/pdf\") (png \"image/png\") (svg " "\"image/svg+xml\"))}." msgstr "" #. type: deftypevr #: doc/guix.texi:20816 #, no-wrap msgid "{@code{cgit-configuration} parameter} file-object mimetype-file" msgstr "" #. type: deftypevr #: doc/guix.texi:20818 msgid "Specifies the file to use for automatic mimetype lookup." msgstr "" #. type: deftypevr #: doc/guix.texi:20823 #, no-wrap msgid "{@code{cgit-configuration} parameter} string module-link" msgstr "" #. type: deftypevr #: doc/guix.texi:20826 msgid "" "Text which will be used as the formatstring for a hyperlink when a submodule " "is printed in a directory listing." msgstr "" #. type: deftypevr #: doc/guix.texi:20831 #, no-wrap msgid "{@code{cgit-configuration} parameter} boolean nocache?" msgstr "" #. type: deftypevr #: doc/guix.texi:20833 msgid "If set to the value @samp{#t} caching will be disabled." msgstr "" #. type: deftypevr #: doc/guix.texi:20838 #, no-wrap msgid "{@code{cgit-configuration} parameter} boolean noplainemail?" msgstr "" #. type: deftypevr #: doc/guix.texi:20841 msgid "" "If set to @samp{#t} showing full author email addresses will be disabled." msgstr "" #. type: deftypevr #: doc/guix.texi:20846 #, no-wrap msgid "{@code{cgit-configuration} parameter} boolean noheader?" msgstr "" #. type: deftypevr #: doc/guix.texi:20849 msgid "" "Flag which, when set to @samp{#t}, will make cgit omit the standard header " "on all pages." msgstr "" #. type: deftypevr #: doc/guix.texi:20854 #, no-wrap msgid "{@code{cgit-configuration} parameter} project-list project-list" msgstr "" #. type: deftypevr #: doc/guix.texi:20858 msgid "" "A list of subdirectories inside of @code{repository-directory}, relative to " "it, that should loaded as Git repositories. An empty list means that all " "subdirectories will be loaded." msgstr "" #. type: deftypevr #: doc/guix.texi:20863 #, no-wrap msgid "{@code{cgit-configuration} parameter} file-object readme" msgstr "" #. type: deftypevr #: doc/guix.texi:20865 msgid "Text which will be used as default value for @code{cgit-repo-readme}." msgstr "" #. type: deftypevr #: doc/guix.texi:20870 #, no-wrap msgid "{@code{cgit-configuration} parameter} boolean remove-suffix?" msgstr "" #. type: deftypevr #: doc/guix.texi:20874 msgid "" "If set to @code{#t} and @code{repository-directory} is enabled, if any " "repositories are found with a suffix of @code{.git}, this suffix will be " "removed for the URL and name." msgstr "" #. type: deftypevr #: doc/guix.texi:20879 #, no-wrap msgid "{@code{cgit-configuration} parameter} integer renamelimit" msgstr "" #. type: deftypevr #: doc/guix.texi:20881 msgid "Maximum number of files to consider when detecting renames." msgstr "" #. type: deftypevr #: doc/guix.texi:20886 #, no-wrap msgid "{@code{cgit-configuration} parameter} string repository-sort" msgstr "" #. type: deftypevr #: doc/guix.texi:20888 msgid "The way in which repositories in each section are sorted." msgstr "" #. type: deftypevr #: doc/guix.texi:20893 #, no-wrap msgid "{@code{cgit-configuration} parameter} robots-list robots" msgstr "" #. type: deftypevr #: doc/guix.texi:20895 msgid "Text used as content for the @code{robots} meta-tag." msgstr "" #. type: deftypevr #: doc/guix.texi:20897 msgid "Defaults to @samp{(\"noindex\" \"nofollow\")}." msgstr "" #. type: deftypevr #: doc/guix.texi:20900 #, no-wrap msgid "{@code{cgit-configuration} parameter} string root-desc" msgstr "" #. type: deftypevr #: doc/guix.texi:20902 msgid "Text printed below the heading on the repository index page." msgstr "" #. type: deftypevr #: doc/guix.texi:20904 msgid "Defaults to @samp{\"a fast webinterface for the git dscm\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:20907 #, no-wrap msgid "{@code{cgit-configuration} parameter} string root-readme" msgstr "" #. type: deftypevr #: doc/guix.texi:20910 msgid "" "The content of the file specified with this option will be included verbatim " "below thef \"about\" link on the repository index page." msgstr "" #. type: deftypevr #: doc/guix.texi:20915 #, no-wrap msgid "{@code{cgit-configuration} parameter} string root-title" msgstr "" #. type: deftypevr #: doc/guix.texi:20917 msgid "Text printed as heading on the repository index page." msgstr "" #. type: deftypevr #: doc/guix.texi:20922 #, no-wrap msgid "{@code{cgit-configuration} parameter} boolean scan-hidden-path" msgstr "" #. type: deftypevr #: doc/guix.texi:20928 msgid "" "If set to @samp{#t} and repository-directory is enabled, repository-" "directory will recurse into directories whose name starts with a period. " "Otherwise, repository-directory will stay away from such directories, " "considered as \"hidden\". Note that this does not apply to the \".git\" " "directory in non-bare repos." msgstr "" #. type: deftypevr #: doc/guix.texi:20933 #, no-wrap msgid "{@code{cgit-configuration} parameter} list snapshots" msgstr "" #. type: deftypevr #: doc/guix.texi:20936 msgid "" "Text which specifies the default set of snapshot formats that cgit generates " "links for." msgstr "" #. type: deftypevr #: doc/guix.texi:20941 #, no-wrap msgid "{@code{cgit-configuration} parameter} repository-directory repository-directory" msgstr "" #. type: deftypevr #: doc/guix.texi:20944 msgid "" "Name of the directory to scan for repositories (represents @code{scan-path})." msgstr "" #. type: deftypevr #: doc/guix.texi:20946 msgid "Defaults to @samp{\"/srv/git\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:20949 #, no-wrap msgid "{@code{cgit-configuration} parameter} string section" msgstr "" #. type: deftypevr #: doc/guix.texi:20952 doc/guix.texi:21268 msgid "" "The name of the current repository section - all repositories defined after " "this option will inherit the current section name." msgstr "" #. type: deftypevr #: doc/guix.texi:20957 #, no-wrap msgid "{@code{cgit-configuration} parameter} string section-sort" msgstr "" #. type: deftypevr #: doc/guix.texi:20960 msgid "" "Flag which, when set to @samp{1}, will sort the sections on the repository " "listing by name." msgstr "" #. type: deftypevr #: doc/guix.texi:20965 #, no-wrap msgid "{@code{cgit-configuration} parameter} integer section-from-path" msgstr "" #. type: deftypevr #: doc/guix.texi:20968 msgid "" "A number which, if defined prior to repository-directory, specifies how many " "path elements from each repo path to use as a default section name." msgstr "" #. type: deftypevr #: doc/guix.texi:20973 #, no-wrap msgid "{@code{cgit-configuration} parameter} boolean side-by-side-diffs?" msgstr "" #. type: deftypevr #: doc/guix.texi:20976 msgid "" "If set to @samp{#t} shows side-by-side diffs instead of unidiffs per default." msgstr "" #. type: deftypevr #: doc/guix.texi:20981 #, no-wrap msgid "{@code{cgit-configuration} parameter} file-object source-filter" msgstr "" #. type: deftypevr #: doc/guix.texi:20984 msgid "" "Specifies a command which will be invoked to format plaintext blobs in the " "tree view." msgstr "" #. type: deftypevr #: doc/guix.texi:20989 #, no-wrap msgid "{@code{cgit-configuration} parameter} integer summary-branches" msgstr "" #. type: deftypevr #: doc/guix.texi:20992 msgid "" "Specifies the number of branches to display in the repository \"summary\" " "view." msgstr "" #. type: deftypevr #: doc/guix.texi:20997 #, no-wrap msgid "{@code{cgit-configuration} parameter} integer summary-log" msgstr "" #. type: deftypevr #: doc/guix.texi:21000 msgid "" "Specifies the number of log entries to display in the repository \"summary\" " "view." msgstr "" #. type: deftypevr #: doc/guix.texi:21005 #, no-wrap msgid "{@code{cgit-configuration} parameter} integer summary-tags" msgstr "" #. type: deftypevr #: doc/guix.texi:21008 msgid "" "Specifies the number of tags to display in the repository \"summary\" view." msgstr "" #. type: deftypevr #: doc/guix.texi:21013 #, no-wrap msgid "{@code{cgit-configuration} parameter} string strict-export" msgstr "" #. type: deftypevr #: doc/guix.texi:21016 msgid "" "Filename which, if specified, needs to be present within the repository for " "cgit to allow access to that repository." msgstr "" #. type: deftypevr #: doc/guix.texi:21021 #, no-wrap msgid "{@code{cgit-configuration} parameter} string virtual-root" msgstr "" #. type: deftypevr #: doc/guix.texi:21023 msgid "URL which, if specified, will be used as root for all cgit links." msgstr "" #. type: deftypevr #: doc/guix.texi:21025 msgid "Defaults to @samp{\"/\"}." msgstr "" #. type: deftypevr #: doc/guix.texi:21028 #, no-wrap msgid "{@code{cgit-configuration} parameter} repository-cgit-configuration-list repositories" msgstr "" #. type: deftypevr #: doc/guix.texi:21030 msgid "A list of @dfn{cgit-repo} records to use with config." msgstr "" #. type: deftypevr #: doc/guix.texi:21034 msgid "Available @code{repository-cgit-configuration} fields are:" msgstr "" #. type: deftypevr #: doc/guix.texi:21035 #, no-wrap msgid "{@code{repository-cgit-configuration} parameter} repo-list snapshots" msgstr "" #. type: deftypevr #: doc/guix.texi:21038 msgid "" "A mask of snapshot formats for this repo that cgit generates links for, " "restricted by the global @code{snapshots} setting." msgstr "" #. type: deftypevr #: doc/guix.texi:21043 #, no-wrap msgid "{@code{repository-cgit-configuration} parameter} repo-file-object source-filter" msgstr "" #. type: deftypevr #: doc/guix.texi:21045 msgid "Override the default @code{source-filter}." msgstr "" #. type: deftypevr #: doc/guix.texi:21050 #, no-wrap msgid "{@code{repository-cgit-configuration} parameter} repo-string url" msgstr "" #. type: deftypevr #: doc/guix.texi:21052 msgid "The relative URL used to access the repository." msgstr "" #. type: deftypevr #: doc/guix.texi:21057 #, no-wrap msgid "{@code{repository-cgit-configuration} parameter} repo-file-object about-filter" msgstr "" #. type: deftypevr #: doc/guix.texi:21059 msgid "Override the default @code{about-filter}." msgstr "" #. type: deftypevr #: doc/guix.texi:21064 #, no-wrap msgid "{@code{repository-cgit-configuration} parameter} repo-string branch-sort" msgstr "" #. type: deftypevr #: doc/guix.texi:21067 msgid "" "Flag which, when set to @samp{age}, enables date ordering in the branch ref " "list, and when set to @samp{name} enables ordering by branch name." msgstr "" #. type: deftypevr #: doc/guix.texi:21072 #, no-wrap msgid "{@code{repository-cgit-configuration} parameter} repo-list clone-url" msgstr "" #. type: deftypevr #: doc/guix.texi:21074 msgid "A list of URLs which can be used to clone repo." msgstr "" #. type: deftypevr #: doc/guix.texi:21079 #, no-wrap msgid "{@code{repository-cgit-configuration} parameter} repo-file-object commit-filter" msgstr "" #. type: deftypevr #: doc/guix.texi:21081 msgid "Override the default @code{commit-filter}." msgstr "" #. type: deftypevr #: doc/guix.texi:21086 #, no-wrap msgid "{@code{repository-cgit-configuration} parameter} repo-string commit-sort" msgstr "" #. type: deftypevr #: doc/guix.texi:21095 #, no-wrap msgid "{@code{repository-cgit-configuration} parameter} repo-string defbranch" msgstr "" #. type: deftypevr #: doc/guix.texi:21100 msgid "" "The name of the default branch for this repository. If no such branch " "exists in the repository, the first branch name (when sorted) is used as " "default instead. By default branch pointed to by HEAD, or \"master\" if " "there is no suitable HEAD." msgstr "" #. type: deftypevr #: doc/guix.texi:21105 #, no-wrap msgid "{@code{repository-cgit-configuration} parameter} repo-string desc" msgstr "" #. type: deftypevr #: doc/guix.texi:21107 msgid "The value to show as repository description." msgstr "" #. type: deftypevr #: doc/guix.texi:21112 #, no-wrap msgid "{@code{repository-cgit-configuration} parameter} repo-string homepage" msgstr "" #. type: deftypevr #: doc/guix.texi:21114 msgid "The value to show as repository homepage." msgstr "" #. type: deftypevr #: doc/guix.texi:21119 #, no-wrap msgid "{@code{repository-cgit-configuration} parameter} repo-file-object email-filter" msgstr "" #. type: deftypevr #: doc/guix.texi:21121 msgid "Override the default @code{email-filter}." msgstr "" #. type: deftypevr #: doc/guix.texi:21126 #, no-wrap msgid "{@code{repository-cgit-configuration} parameter} maybe-repo-boolean enable-commit-graph?" msgstr "" #. type: deftypevr #: doc/guix.texi:21129 msgid "" "A flag which can be used to disable the global setting @code{enable-commit-" "graph?}." msgstr "" #. type: deftypevr #: doc/guix.texi:21134 #, no-wrap msgid "{@code{repository-cgit-configuration} parameter} maybe-repo-boolean enable-log-filecount?" msgstr "" #. type: deftypevr #: doc/guix.texi:21137 msgid "" "A flag which can be used to disable the global setting @code{enable-log-" "filecount?}." msgstr "" #. type: deftypevr #: doc/guix.texi:21142 #, no-wrap msgid "{@code{repository-cgit-configuration} parameter} maybe-repo-boolean enable-log-linecount?" msgstr "" #. type: deftypevr #: doc/guix.texi:21145 msgid "" "A flag which can be used to disable the global setting @code{enable-log-" "linecount?}." msgstr "" #. type: deftypevr #: doc/guix.texi:21150 #, no-wrap msgid "{@code{repository-cgit-configuration} parameter} maybe-repo-boolean enable-remote-branches?" msgstr "" #. type: deftypevr #: doc/guix.texi:21158 #, no-wrap msgid "{@code{repository-cgit-configuration} parameter} maybe-repo-boolean enable-subject-links?" msgstr "" #. type: deftypevr #: doc/guix.texi:21161 msgid "" "A flag which can be used to override the global setting @code{enable-subject-" "links?}." msgstr "" #. type: deftypevr #: doc/guix.texi:21166 #, no-wrap msgid "{@code{repository-cgit-configuration} parameter} maybe-repo-boolean enable-html-serving?" msgstr "" #. type: deftypevr #: doc/guix.texi:21169 msgid "" "A flag which can be used to override the global setting @code{enable-html-" "serving?}." msgstr "" #. type: deftypevr #: doc/guix.texi:21174 #, no-wrap msgid "{@code{repository-cgit-configuration} parameter} repo-boolean hide?" msgstr "" #. type: deftypevr #: doc/guix.texi:21177 msgid "" "Flag which, when set to @code{#t}, hides the repository from the repository " "index." msgstr "" #. type: deftypevr #: doc/guix.texi:21182 #, no-wrap msgid "{@code{repository-cgit-configuration} parameter} repo-boolean ignore?" msgstr "" #. type: deftypevr #: doc/guix.texi:21184 msgid "Flag which, when set to @samp{#t}, ignores the repository." msgstr "" #. type: deftypevr #: doc/guix.texi:21189 #, no-wrap msgid "{@code{repository-cgit-configuration} parameter} repo-file-object logo" msgstr "" #. type: deftypevr #: doc/guix.texi:21192 msgid "" "URL which specifies the source of an image which will be used as a logo on " "this repo’s pages." msgstr "" #. type: deftypevr #: doc/guix.texi:21197 #, no-wrap msgid "{@code{repository-cgit-configuration} parameter} repo-string logo-link" msgstr "" #. type: deftypevr #: doc/guix.texi:21204 #, no-wrap msgid "{@code{repository-cgit-configuration} parameter} repo-file-object owner-filter" msgstr "" #. type: deftypevr #: doc/guix.texi:21206 msgid "Override the default @code{owner-filter}." msgstr "" #. type: deftypevr #: doc/guix.texi:21211 #, no-wrap msgid "{@code{repository-cgit-configuration} parameter} repo-string module-link" msgstr "" #. type: deftypevr #: doc/guix.texi:21215 msgid "" "Text which will be used as the formatstring for a hyperlink when a submodule " "is printed in a directory listing. The arguments for the formatstring are " "the path and SHA1 of the submodule commit." msgstr "" #. type: deftypevr #: doc/guix.texi:21220 #, no-wrap msgid "{@code{repository-cgit-configuration} parameter} module-link-path module-link-path" msgstr "" #. type: deftypevr #: doc/guix.texi:21224 msgid "" "Text which will be used as the formatstring for a hyperlink when a submodule " "with the specified subdirectory path is printed in a directory listing." msgstr "" #. type: deftypevr #: doc/guix.texi:21229 #, no-wrap msgid "{@code{repository-cgit-configuration} parameter} repo-string max-stats" msgstr "" #. type: deftypevr #: doc/guix.texi:21231 msgid "Override the default maximum statistics period." msgstr "" #. type: deftypevr #: doc/guix.texi:21236 #, no-wrap msgid "{@code{repository-cgit-configuration} parameter} repo-string name" msgstr "" #. type: deftypevr #: doc/guix.texi:21238 msgid "The value to show as repository name." msgstr "" #. type: deftypevr #: doc/guix.texi:21243 #, no-wrap msgid "{@code{repository-cgit-configuration} parameter} repo-string owner" msgstr "" #. type: deftypevr #: doc/guix.texi:21245 msgid "A value used to identify the owner of the repository." msgstr "" #. type: deftypevr #: doc/guix.texi:21250 #, no-wrap msgid "{@code{repository-cgit-configuration} parameter} repo-string path" msgstr "" #. type: deftypevr #: doc/guix.texi:21252 msgid "An absolute path to the repository directory." msgstr "" #. type: deftypevr #: doc/guix.texi:21257 #, no-wrap msgid "{@code{repository-cgit-configuration} parameter} repo-string readme" msgstr "" #. type: deftypevr #: doc/guix.texi:21260 msgid "" "A path (relative to repo) which specifies a file to include verbatim as the " "\"About\" page for this repo." msgstr "" #. type: deftypevr #: doc/guix.texi:21265 #, no-wrap msgid "{@code{repository-cgit-configuration} parameter} repo-string section" msgstr "" #. type: deftypevr #: doc/guix.texi:21273 #, no-wrap msgid "{@code{repository-cgit-configuration} parameter} repo-list extra-options" msgstr "" #. type: deftypevr #: doc/guix.texi:21275 doc/guix.texi:21284 msgid "Extra options will be appended to cgitrc file." msgstr "" #. type: deftypevr #: doc/guix.texi:21282 #, no-wrap msgid "{@code{cgit-configuration} parameter} list extra-options" msgstr "" #. type: Plain text #: doc/guix.texi:21296 msgid "" "However, it could be that you just want to get a @code{cgitrc} up and " "running. In that case, you can pass an @code{opaque-cgit-configuration} as " "a record to @code{cgit-service-type}. As its name indicates, an opaque " "configuration does not have easy reflective capabilities." msgstr "" #. type: Plain text #: doc/guix.texi:21298 msgid "Available @code{opaque-cgit-configuration} fields are:" msgstr "" #. type: deftypevr #: doc/guix.texi:21299 #, no-wrap msgid "{@code{opaque-cgit-configuration} parameter} package cgit" msgstr "" #. type: deftypevr #: doc/guix.texi:21301 msgid "The cgit package." msgstr "" #. type: deftypevr #: doc/guix.texi:21303 #, no-wrap msgid "{@code{opaque-cgit-configuration} parameter} string string" msgstr "" #. type: deftypevr #: doc/guix.texi:21305 msgid "The contents of the @code{cgitrc}, as a string." msgstr "" #. type: Plain text #: doc/guix.texi:21309 msgid "" "For example, if your @code{cgitrc} is just the empty string, you could " "instantiate a cgit service like this:" msgstr "" #. type: example #: doc/guix.texi:21314 #, no-wrap msgid "" "(service cgit-service-type\n" " (opaque-cgit-configuration\n" " (cgitrc \"\")))\n" msgstr "" #. type: subsubheading #: doc/guix.texi:21316 #, no-wrap msgid "Gitolite Service" msgstr "" #. type: cindex #: doc/guix.texi:21318 #, no-wrap msgid "Gitolite service" msgstr "" #. type: cindex #: doc/guix.texi:21319 #, no-wrap msgid "Git, hosting" msgstr "" #. type: Plain text #: doc/guix.texi:21322 msgid "" "@uref{http://gitolite.com/gitolite/, Gitolite} is a tool for hosting Git " "repositories on a central server." msgstr "" #. type: Plain text #: doc/guix.texi:21325 msgid "" "Gitolite can handle multiple repositories and users, and supports flexible " "configuration of the permissions for the users on the repositories." msgstr "" #. type: Plain text #: doc/guix.texi:21328 msgid "" "The following example will configure Gitolite using the default @code{git} " "user, and the provided SSH public key." msgstr "" #. type: example #: doc/guix.texi:21335 #, no-wrap msgid "" "(service gitolite-service-type\n" " (gitolite-configuration\n" " (admin-pubkey (plain-file\n" " \"yourname.pub\"\n" " \"ssh-rsa AAAA... guix@@example.com\"))))\n" msgstr "" #. type: Plain text #: doc/guix.texi:21340 msgid "" "Gitolite is configured through a special admin repository which you can " "clone, for example, if you setup Gitolite on @code{example.com}, you would " "run the following command to clone the admin repository." msgstr "" #. type: example #: doc/guix.texi:21343 #, no-wrap msgid "git clone git@@example.com:gitolite-admin\n" msgstr "" #. type: Plain text #: doc/guix.texi:21349 msgid "" "When the Gitolite service is activated, the provided @code{admin-pubkey} " "will be inserted in to the @file{keydir} directory in the gitolite-admin " "repository. If this results in a change in the repository, it will be " "committed using the message ``gitolite setup by GNU Guix''." msgstr "" #. type: deftp #: doc/guix.texi:21350 #, no-wrap msgid "{Data Type} gitolite-configuration" msgstr "" #. type: deftp #: doc/guix.texi:21352 msgid "" "Data type representing the configuration for @code{gitolite-service-type}." msgstr "" #. type: item #: doc/guix.texi:21354 #, no-wrap msgid "@code{package} (default: @var{gitolite})" msgstr "" #. type: table #: doc/guix.texi:21356 msgid "Gitolite package to use." msgstr "" #. type: item #: doc/guix.texi:21357 #, no-wrap msgid "@code{user} (default: @var{git})" msgstr "" #. type: table #: doc/guix.texi:21360 msgid "" "User to use for Gitolite. This will be user that you use when accessing " "Gitolite over SSH." msgstr "" #. type: item #: doc/guix.texi:21361 #, no-wrap msgid "@code{group} (default: @var{git})" msgstr "" #. type: table #: doc/guix.texi:21363 msgid "Group to use for Gitolite." msgstr "" #. type: item #: doc/guix.texi:21364 #, no-wrap msgid "@code{home-directory} (default: @var{\"/var/lib/gitolite\"})" msgstr "" #. type: table #: doc/guix.texi:21366 msgid "" "Directory in which to store the Gitolite configuration and repositories." msgstr "" #. type: item #: doc/guix.texi:21367 #, no-wrap msgid "@code{rc-file} (default: @var{(gitolite-rc-file)})" msgstr "" #. type: table #: doc/guix.texi:21370 msgid "" "A ``file-like'' object (@pxref{G-Expressions, file-like objects}), " "representing the configuration for Gitolite." msgstr "" #. type: item #: doc/guix.texi:21371 #, no-wrap msgid "@code{admin-pubkey} (default: @var{#f})" msgstr "" #. type: table #: doc/guix.texi:21375 msgid "" "A ``file-like'' object (@pxref{G-Expressions, file-like objects}) used to " "setup Gitolite. This will be inserted in to the @file{keydir} directory " "within the gitolite-admin repository." msgstr "" #. type: table #: doc/guix.texi:21377 msgid "To specify the SSH key as a string, use the @code{plain-file} function." msgstr "" #. type: example #: doc/guix.texi:21380 #, no-wrap msgid "(plain-file \"yourname.pub\" \"ssh-rsa AAAA... guix@@example.com\")\n" msgstr "" #. type: deftp #: doc/guix.texi:21385 #, no-wrap msgid "{Data Type} gitolite-rc-file" msgstr "" #. type: deftp #: doc/guix.texi:21387 msgid "Data type representing the Gitolite RC file." msgstr "" #. type: item #: doc/guix.texi:21389 #, no-wrap msgid "@code{umask} (default: @code{#o0077})" msgstr "" #. type: table #: doc/guix.texi:21392 msgid "" "This controls the permissions Gitolite sets on the repositories and their " "contents." msgstr "" #. type: table #: doc/guix.texi:21396 msgid "" "A value like @code{#o0027} will give read access to the group used by " "Gitolite (by default: @code{git}). This is necessary when using Gitolite " "with software like cgit or gitweb." msgstr "" #. type: item #: doc/guix.texi:21397 #, no-wrap msgid "@code{git-config-keys} (default: @code{\"\"})" msgstr "" #. type: table #: doc/guix.texi:21400 msgid "" "Gitolite allows you to set git config values using the \"config\" keyword. " "This setting allows control over the config keys to accept." msgstr "" #. type: item #: doc/guix.texi:21401 #, no-wrap msgid "@code{roles} (default: @code{'((\"READERS\" . 1) (\"WRITERS\" . ))})" msgstr "" #. type: table #: doc/guix.texi:21403 msgid "" "Set the role names allowed to be used by users running the perms command." msgstr "" #. type: item #: doc/guix.texi:21404 #, no-wrap msgid "@code{enable} (default: @code{'(\"help\" \"desc\" \"info\" \"perms\" \"writable\" \"ssh-authkeys\" \"git-config\" \"daemon\" \"gitweb\")})" msgstr "" #. type: table #: doc/guix.texi:21406 msgid "" "This setting controls the commands and features to enable within Gitolite." msgstr "" #. type: subsubheading #: doc/guix.texi:21414 #, no-wrap msgid "The Battle for Wesnoth Service" msgstr "" #. type: cindex #: doc/guix.texi:21415 #, no-wrap msgid "wesnothd" msgstr "" #. type: Plain text #: doc/guix.texi:21419 msgid "" "@uref{https://wesnoth.org, The Battle for Wesnoth} is a fantasy, turn based " "tactical strategy game, with several single player campaigns, and " "multiplayer games (both networked and local)." msgstr "" #. type: defvar #: doc/guix.texi:21420 #, no-wrap msgid "{Scheme Variable} wesnothd-service-type" msgstr "" #. type: defvar #: doc/guix.texi:21424 msgid "" "Service type for the wesnothd service. Its value must be a @code{wesnothd-" "configuration} object. To run wesnothd in the default configuration, " "instantiate it as:" msgstr "" #. type: example #: doc/guix.texi:21427 #, no-wrap msgid "(service wesnothd-service-type)\n" msgstr "" #. type: deftp #: doc/guix.texi:21430 #, no-wrap msgid "{Data Type} wesnothd-configuration" msgstr "" #. type: deftp #: doc/guix.texi:21432 msgid "Data type representing the configuration of @command{wesnothd}." msgstr "" #. type: item #: doc/guix.texi:21434 #, no-wrap msgid "@code{package} (default: @code{wesnoth-server})" msgstr "" #. type: table #: doc/guix.texi:21436 msgid "The wesnoth server package to use." msgstr "" #. type: item #: doc/guix.texi:21437 #, no-wrap msgid "@code{port} (default: @code{15000})" msgstr "" #. type: table #: doc/guix.texi:21439 msgid "The port to bind the server to." msgstr "" #. type: cindex #: doc/guix.texi:21445 #, no-wrap msgid "fingerprint" msgstr "" #. type: subsubheading #: doc/guix.texi:21446 #, no-wrap msgid "Fingerprint Service" msgstr "" #. type: Plain text #: doc/guix.texi:21450 msgid "" "The @code{(gnu services fingerprint)} module provides a DBus service to read " "and identify fingerprints via a fingerprint sensor." msgstr "" #. type: defvr #: doc/guix.texi:21451 #, no-wrap msgid "{Scheme Variable} fprintd-service-type" msgstr "" #. type: defvr #: doc/guix.texi:21454 msgid "" "The service type for @command{fprintd}, which provides the fingerprint " "reading capability." msgstr "" #. type: example #: doc/guix.texi:21457 #, no-wrap msgid "(service fprintd-service-type)\n" msgstr "" #. type: cindex #: doc/guix.texi:21460 #, no-wrap msgid "sysctl" msgstr "" #. type: subsubheading #: doc/guix.texi:21461 #, no-wrap msgid "System Control Service" msgstr "" #. type: Plain text #: doc/guix.texi:21465 msgid "" "The @code{(gnu services sysctl)} provides a service to configure kernel " "parameters at boot." msgstr "" #. type: defvr #: doc/guix.texi:21466 #, no-wrap msgid "{Scheme Variable} sysctl-service-type" msgstr "" #. type: defvr #: doc/guix.texi:21470 msgid "" "The service type for @command{sysctl}, which modifies kernel parameters " "under @file{/proc/sys/}. To enable IPv4 forwarding, it can be instantiated " "as:" msgstr "" #. type: example #: doc/guix.texi:21475 #, no-wrap msgid "" "(service sysctl-service-type\n" " (sysctl-configuration\n" " (settings '((\"net.ipv4.ip_forward\" . \"1\")))))\n" msgstr "" #. type: deftp #: doc/guix.texi:21478 #, no-wrap msgid "{Data Type} sysctl-configuration" msgstr "" #. type: deftp #: doc/guix.texi:21480 msgid "The data type representing the configuration of @command{sysctl}." msgstr "" #. type: item #: doc/guix.texi:21482 #, no-wrap msgid "@code{sysctl} (default: @code{(file-append procps \"/sbin/sysctl\"})" msgstr "" #. type: table #: doc/guix.texi:21484 msgid "The @command{sysctl} executable to use." msgstr "" #. type: item #: doc/guix.texi:21485 #, no-wrap msgid "@code{settings} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:21487 msgid "An association list specifies kernel parameters and their values." msgstr "" #. type: cindex #: doc/guix.texi:21490 #, no-wrap msgid "pcscd" msgstr "" #. type: subsubheading #: doc/guix.texi:21491 #, no-wrap msgid "PC/SC Smart Card Daemon Service" msgstr "" #. type: Plain text #: doc/guix.texi:21498 msgid "" "The @code{(gnu services security-token)} module provides the following " "service to run @command{pcscd}, the PC/SC Smart Card Daemon. " "@command{pcscd} is the daemon program for pcsc-lite and the MuscleCard " "framework. It is a resource manager that coordinates communications with " "smart card readers, smart cards and cryptographic tokens that are connected " "to the system." msgstr "" #. type: defvr #: doc/guix.texi:21499 #, no-wrap msgid "{Scheme Variable} pcscd-service-type" msgstr "" #. type: defvr #: doc/guix.texi:21503 msgid "" "Service type for the @command{pcscd} service. Its value must be a " "@code{pcscd-configuration} object. To run pcscd in the default " "configuration, instantiate it as:" msgstr "" #. type: example #: doc/guix.texi:21506 #, no-wrap msgid "(service pcscd-service-type)\n" msgstr "" #. type: deftp #: doc/guix.texi:21509 #, no-wrap msgid "{Data Type} pcscd-configuration" msgstr "" #. type: deftp #: doc/guix.texi:21511 msgid "The data type representing the configuration of @command{pcscd}." msgstr "" #. type: item #: doc/guix.texi:21513 #, no-wrap msgid "@code{pcsc-lite} (default: @code{pcsc-lite})" msgstr "" #. type: table #: doc/guix.texi:21515 msgid "The pcsc-lite package that provides pcscd." msgstr "" #. type: item #: doc/guix.texi:21515 #, no-wrap msgid "@code{usb-drivers} (default: @code{(list ccid)})" msgstr "" #. type: table #: doc/guix.texi:21518 msgid "" "List of packages that provide USB drivers to pcscd. Drivers are expected to " "be under @file{pcsc/drivers} in the store directory of the package." msgstr "" #. type: cindex #: doc/guix.texi:21521 #, no-wrap msgid "lirc" msgstr "" #. type: subsubheading #: doc/guix.texi:21522 #, no-wrap msgid "Lirc Service" msgstr "" #. type: Plain text #: doc/guix.texi:21525 msgid "The @code{(gnu services lirc)} module provides the following service." msgstr "" #. type: deffn #: doc/guix.texi:21526 #, no-wrap msgid "{Scheme Procedure} lirc-service [#:lirc lirc] @" msgstr "" #. type: deffn #: doc/guix.texi:21531 msgid "" "[#:device #f] [#:driver #f] [#:config-file #f] @ [#:extra-options '()] " "Return a service that runs @url{http://www.lirc.org,LIRC}, a daemon that " "decodes infrared signals from remote controls." msgstr "" #. type: deffn #: doc/guix.texi:21535 msgid "" "Optionally, @var{device}, @var{driver} and @var{config-file} (configuration " "file name) may be specified. See @command{lircd} manual for details." msgstr "" #. type: deffn #: doc/guix.texi:21538 msgid "" "Finally, @var{extra-options} is a list of additional command-line options " "passed to @command{lircd}." msgstr "" #. type: cindex #: doc/guix.texi:21540 #, no-wrap msgid "spice" msgstr "" #. type: subsubheading #: doc/guix.texi:21541 #, no-wrap msgid "Spice Service" msgstr "" #. type: Plain text #: doc/guix.texi:21544 msgid "The @code{(gnu services spice)} module provides the following service." msgstr "" #. type: deffn #: doc/guix.texi:21545 #, no-wrap msgid "{Scheme Procedure} spice-vdagent-service [#:spice-vdagent]" msgstr "" #. type: deffn #: doc/guix.texi:21549 msgid "" "Returns a service that runs @url{http://www.spice-space.org,VDAGENT}, a " "daemon that enables sharing the clipboard with a vm and setting the guest " "display resolution when the graphical console window resizes." msgstr "" #. type: subsubsection #: doc/guix.texi:21551 #, no-wrap msgid "Dictionary Services" msgstr "" #. type: cindex #: doc/guix.texi:21552 #, no-wrap msgid "dictionary" msgstr "" #. type: Plain text #: doc/guix.texi:21554 msgid "The @code{(gnu services dict)} module provides the following service:" msgstr "" #. type: deffn #: doc/guix.texi:21555 #, no-wrap msgid "{Scheme Procedure} dicod-service [#:config (dicod-configuration)]" msgstr "" #. type: deffn #: doc/guix.texi:21558 msgid "" "Return a service that runs the @command{dicod} daemon, an implementation of " "DICT server (@pxref{Dicod,,, dico, GNU Dico Manual})." msgstr "" #. type: deffn #: doc/guix.texi:21562 msgid "" "The optional @var{config} argument specifies the configuration for " "@command{dicod}, which should be a @code{} object, by " "default it serves the GNU Collaborative International Dictonary of English." msgstr "" #. type: deffn #: doc/guix.texi:21566 msgid "" "You can add @command{open localhost} to your @file{~/.dico} file to make " "@code{localhost} the default server for @command{dico} client " "(@pxref{Initialization File,,, dico, GNU Dico Manual})." msgstr "" #. type: deftp #: doc/guix.texi:21568 #, no-wrap msgid "{Data Type} dicod-configuration" msgstr "" #. type: deftp #: doc/guix.texi:21570 msgid "Data type representing the configuration of dicod." msgstr "" #. type: item #: doc/guix.texi:21572 #, no-wrap msgid "@code{dico} (default: @var{dico})" msgstr "" #. type: table #: doc/guix.texi:21574 msgid "Package object of the GNU Dico dictionary server." msgstr "" #. type: item #: doc/guix.texi:21575 #, no-wrap msgid "@code{interfaces} (default: @var{'(\"localhost\")})" msgstr "" #. type: table #: doc/guix.texi:21579 msgid "" "This is the list of IP addresses and ports and possibly socket file names to " "listen to (@pxref{Server Settings, @code{listen} directive,, dico, GNU Dico " "Manual})." msgstr "" #. type: item #: doc/guix.texi:21580 #, no-wrap msgid "@code{handlers} (default: @var{'()})" msgstr "" #. type: table #: doc/guix.texi:21582 msgid "" "List of @code{} objects denoting handlers (module instances)." msgstr "" #. type: item #: doc/guix.texi:21583 #, no-wrap msgid "@code{databases} (default: @var{(list %dicod-database:gcide)})" msgstr "" #. type: table #: doc/guix.texi:21585 msgid "" "List of @code{} objects denoting dictionaries to be served." msgstr "" #. type: deftp #: doc/guix.texi:21588 #, no-wrap msgid "{Data Type} dicod-handler" msgstr "" #. type: deftp #: doc/guix.texi:21590 msgid "Data type representing a dictionary handler (module instance)." msgstr "" #. type: table #: doc/guix.texi:21594 msgid "Name of the handler (module instance)." msgstr "" #. type: item #: doc/guix.texi:21595 #, no-wrap msgid "@code{module} (default: @var{#f})" msgstr "" #. type: table #: doc/guix.texi:21599 msgid "" "Name of the dicod module of the handler (instance). If it is @code{#f}, the " "module has the same name as the handler. (@pxref{Modules,,, dico, GNU Dico " "Manual})." msgstr "" #. type: code{#1} #: doc/guix.texi:21600 doc/guix.texi:21620 #, no-wrap msgid "options" msgstr "" #. type: table #: doc/guix.texi:21602 msgid "" "List of strings or gexps representing the arguments for the module handler" msgstr "" #. type: deftp #: doc/guix.texi:21605 #, no-wrap msgid "{Data Type} dicod-database" msgstr "" #. type: deftp #: doc/guix.texi:21607 msgid "Data type representing a dictionary database." msgstr "" #. type: table #: doc/guix.texi:21611 msgid "Name of the database, will be used in DICT commands." msgstr "" #. type: code{#1} #: doc/guix.texi:21612 #, no-wrap msgid "handler" msgstr "" #. type: table #: doc/guix.texi:21615 msgid "" "Name of the dicod handler (module instance) used by this database " "(@pxref{Handlers,,, dico, GNU Dico Manual})." msgstr "" #. type: item #: doc/guix.texi:21616 #, no-wrap msgid "@code{complex?} (default: @var{#f})" msgstr "" #. type: table #: doc/guix.texi:21619 msgid "" "Whether the database configuration complex. The complex configuration will " "need a corresponding @code{} object, otherwise not." msgstr "" #. type: table #: doc/guix.texi:21623 msgid "" "List of strings or gexps representing the arguments for the database " "(@pxref{Databases,,, dico, GNU Dico Manual})." msgstr "" #. type: defvr #: doc/guix.texi:21626 #, no-wrap msgid "{Scheme Variable} %dicod-database:gcide" msgstr "" #. type: defvr #: doc/guix.texi:21629 msgid "" "A @code{} object serving the GNU Collaborative International " "Dictionary of English using the @code{gcide} package." msgstr "" #. type: Plain text #: doc/guix.texi:21632 msgid "The following is an example @code{dicod-service} configuration." msgstr "" #. type: example #: doc/guix.texi:21647 #, no-wrap msgid "" "(dicod-service #:config\n" " (dicod-configuration\n" " (handlers (list (dicod-handler\n" " (name \"wordnet\")\n" " (module \"dictorg\")\n" " (options\n" " (list #~(string-append \"dbdir=\" #$wordnet))))))\n" " (databases (list (dicod-database\n" " (name \"wordnet\")\n" " (complex? #t)\n" " (handler \"wordnet\")\n" " (options '(\"database=wn\")))\n" " %dicod-database:gcide))))\n" msgstr "" #. type: cindex #: doc/guix.texi:21652 #, no-wrap msgid "setuid programs" msgstr "" #. type: Plain text #: doc/guix.texi:21662 msgid "" "Some programs need to run with ``root'' privileges, even when they are " "launched by unprivileged users. A notorious example is the @command{passwd} " "program, which users can run to change their password, and which needs to " "access the @file{/etc/passwd} and @file{/etc/shadow} files---something " "normally restricted to root, for obvious security reasons. To address that, " "these executables are @dfn{setuid-root}, meaning that they always run with " "root privileges (@pxref{How Change Persona,,, libc, The GNU C Library " "Reference Manual}, for more info about the setuid mechanism.)" msgstr "" #. type: Plain text #: doc/guix.texi:21669 msgid "" "The store itself @emph{cannot} contain setuid programs: that would be a " "security issue since any user on the system can write derivations that " "populate the store (@pxref{The Store}). Thus, a different mechanism is " "used: instead of changing the setuid bit directly on files that are in the " "store, we let the system administrator @emph{declare} which programs should " "be setuid root." msgstr "" #. type: Plain text #: doc/guix.texi:21675 msgid "" "The @code{setuid-programs} field of an @code{operating-system} declaration " "contains a list of G-expressions denoting the names of programs to be setuid-" "root (@pxref{Using the Configuration System}). For instance, the " "@command{passwd} program, which is part of the Shadow package, can be " "designated by this G-expression (@pxref{G-Expressions}):" msgstr "" #. type: example #: doc/guix.texi:21678 #, no-wrap msgid "#~(string-append #$shadow \"/bin/passwd\")\n" msgstr "" #. type: Plain text #: doc/guix.texi:21682 msgid "" "A default set of setuid programs is defined by the @code{%setuid-programs} " "variable of the @code{(gnu system)} module." msgstr "" #. type: defvr #: doc/guix.texi:21683 #, no-wrap msgid "{Scheme Variable} %setuid-programs" msgstr "" #. type: defvr #: doc/guix.texi:21685 msgid "A list of G-expressions denoting common programs that are setuid-root." msgstr "" #. type: defvr #: doc/guix.texi:21688 msgid "" "The list includes commands such as @command{passwd}, @command{ping}, " "@command{su}, and @command{sudo}." msgstr "" #. type: Plain text #: doc/guix.texi:21694 msgid "" "Under the hood, the actual setuid programs are created in the @file{/run/" "setuid-programs} directory at system activation time. The files in this " "directory refer to the ``real'' binaries, which are in the store." msgstr "" #. type: cindex #: doc/guix.texi:21698 #, no-wrap msgid "HTTPS, certificates" msgstr "" #. type: cindex #: doc/guix.texi:21699 #, no-wrap msgid "X.509 certificates" msgstr "" #. type: cindex #: doc/guix.texi:21700 #, no-wrap msgid "TLS" msgstr "" #. type: Plain text #: doc/guix.texi:21707 msgid "" "Web servers available over HTTPS (that is, HTTP over the transport-layer " "security mechanism, TLS) send client programs an @dfn{X.509 certificate} " "that the client can then use to @emph{authenticate} the server. To do that, " "clients verify that the server's certificate is signed by a so-called " "@dfn{certificate authority} (CA). But to verify the CA's signature, clients " "must have first acquired the CA's certificate." msgstr "" #. type: Plain text #: doc/guix.texi:21711 msgid "" "Web browsers such as GNU@tie{}IceCat include their own set of CA " "certificates, such that they are able to verify CA signatures out-of-the-box." msgstr "" #. type: Plain text #: doc/guix.texi:21715 msgid "" "However, most other programs that can talk HTTPS---@command{wget}, " "@command{git}, @command{w3m}, etc.---need to be told where CA certificates " "can be found." msgstr "" #. type: Plain text #: doc/guix.texi:21722 msgid "" "In GuixSD, this is done by adding a package that provides certificates to " "the @code{packages} field of the @code{operating-system} declaration " "(@pxref{operating-system Reference}). GuixSD includes one such package, " "@code{nss-certs}, which is a set of CA certificates provided as part of " "Mozilla's Network Security Services." msgstr "" #. type: Plain text #: doc/guix.texi:21727 msgid "" "Note that it is @emph{not} part of @var{%base-packages}, so you need to " "explicitly add it. The @file{/etc/ssl/certs} directory, which is where most " "applications and libraries look for certificates by default, points to the " "certificates installed globally." msgstr "" #. type: Plain text #: doc/guix.texi:21737 msgid "" "Unprivileged users, including users of Guix on a foreign distro, can also " "install their own certificate package in their profile. A number of " "environment variables need to be defined so that applications and libraries " "know where to find them. Namely, the OpenSSL library honors the " "@code{SSL_CERT_DIR} and @code{SSL_CERT_FILE} variables. Some applications " "add their own environment variables; for instance, the Git version control " "system honors the certificate bundle pointed to by the @code{GIT_SSL_CAINFO} " "environment variable. Thus, you would typically run something like:" msgstr "" #. type: example #: doc/guix.texi:21743 #, no-wrap msgid "" "$ guix package -i nss-certs\n" "$ export SSL_CERT_DIR=\"$HOME/.guix-profile/etc/ssl/certs\"\n" "$ export SSL_CERT_FILE=\"$HOME/.guix-profile/etc/ssl/certs/ca-certificates.crt\"\n" "$ export GIT_SSL_CAINFO=\"$SSL_CERT_FILE\"\n" msgstr "" #. type: Plain text #: doc/guix.texi:21748 msgid "" "As another example, R requires the @code{CURL_CA_BUNDLE} environment " "variable to point to a certificate bundle, so you would have to run " "something like this:" msgstr "" #. type: example #: doc/guix.texi:21752 #, no-wrap msgid "" "$ guix package -i nss-certs\n" "$ export CURL_CA_BUNDLE=\"$HOME/.guix-profile/etc/ssl/certs/ca-certificates.crt\"\n" msgstr "" #. type: Plain text #: doc/guix.texi:21756 msgid "" "For other applications you may want to look up the required environment " "variable in the relevant documentation." msgstr "" #. type: cindex #: doc/guix.texi:21761 #, no-wrap msgid "name service switch" msgstr "" #. type: cindex #: doc/guix.texi:21762 #, no-wrap msgid "NSS" msgstr "" #. type: Plain text #: doc/guix.texi:21771 msgid "" "The @code{(gnu system nss)} module provides bindings to the configuration " "file of the libc @dfn{name service switch} or @dfn{NSS} (@pxref{NSS " "Configuration File,,, libc, The GNU C Library Reference Manual}). In a " "nutshell, the NSS is a mechanism that allows libc to be extended with new " "``name'' lookup methods for system databases, which includes host names, " "service names, user accounts, and more (@pxref{Name Service Switch, System " "Databases and Name Service Switch,, libc, The GNU C Library Reference " "Manual})." msgstr "" #. type: Plain text #: doc/guix.texi:21778 msgid "" "The NSS configuration specifies, for each system database, which lookup " "method is to be used, and how the various methods are chained together---for " "instance, under which circumstances NSS should try the next method in the " "list. The NSS configuration is given in the @code{name-service-switch} " "field of @code{operating-system} declarations (@pxref{operating-system " "Reference, @code{name-service-switch}})." msgstr "" #. type: cindex #: doc/guix.texi:21779 #, no-wrap msgid "nss-mdns" msgstr "" #. type: cindex #: doc/guix.texi:21780 #, no-wrap msgid ".local, host name lookup" msgstr "" #. type: Plain text #: doc/guix.texi:21785 msgid "" "As an example, the declaration below configures the NSS to use the " "@uref{http://0pointer.de/lennart/projects/nss-mdns/, @code{nss-mdns} back-" "end}, which supports host name lookups over multicast DNS (mDNS) for host " "names ending in @code{.local}:" msgstr "" #. type: example #: doc/guix.texi:21789 #, no-wrap msgid "" "(name-service-switch\n" " (hosts (list %files ;first, check /etc/hosts\n" "\n" msgstr "" #. type: example #: doc/guix.texi:21794 #, no-wrap msgid "" " ;; If the above did not succeed, try\n" " ;; with 'mdns_minimal'.\n" " (name-service\n" " (name \"mdns_minimal\")\n" "\n" msgstr "" #. type: example #: doc/guix.texi:21800 #, no-wrap msgid "" " ;; 'mdns_minimal' is authoritative for\n" " ;; '.local'. When it returns \"not found\",\n" " ;; no need to try the next methods.\n" " (reaction (lookup-specification\n" " (not-found => return))))\n" "\n" msgstr "" #. type: example #: doc/guix.texi:21804 #, no-wrap msgid "" " ;; Then fall back to DNS.\n" " (name-service\n" " (name \"dns\"))\n" "\n" msgstr "" #. type: example #: doc/guix.texi:21808 #, no-wrap msgid "" " ;; Finally, try with the \"full\" 'mdns'.\n" " (name-service\n" " (name \"mdns\")))))\n" msgstr "" #. type: Plain text #: doc/guix.texi:21813 msgid "" "Do not worry: the @code{%mdns-host-lookup-nss} variable (see below) " "contains this configuration, so you will not have to type it if all you want " "is to have @code{.local} host lookup working." msgstr "" #. type: Plain text #: doc/guix.texi:21821 msgid "" "Note that, in this case, in addition to setting the @code{name-service-" "switch} of the @code{operating-system} declaration, you also need to use " "@code{avahi-service} (@pxref{Networking Services, @code{avahi-service}}), or " "@var{%desktop-services}, which includes it (@pxref{Desktop Services}). " "Doing this makes @code{nss-mdns} accessible to the name service cache daemon " "(@pxref{Base Services, @code{nscd-service}})." msgstr "" #. type: Plain text #: doc/guix.texi:21824 msgid "" "For convenience, the following variables provide typical NSS configurations." msgstr "" #. type: defvr #: doc/guix.texi:21825 #, no-wrap msgid "{Scheme Variable} %default-nss" msgstr "" #. type: defvr #: doc/guix.texi:21828 msgid "" "This is the default name service switch configuration, a @code{name-service-" "switch} object." msgstr "" #. type: defvr #: doc/guix.texi:21830 #, no-wrap msgid "{Scheme Variable} %mdns-host-lookup-nss" msgstr "" #. type: defvr #: doc/guix.texi:21833 msgid "" "This is the name service switch configuration with support for host name " "lookup over multicast DNS (mDNS) for host names ending in @code{.local}." msgstr "" #. type: Plain text #: doc/guix.texi:21843 msgid "" "The reference for name service switch configuration is given below. It is a " "direct mapping of the configuration file format of the C library , so please " "refer to the C library manual for more information (@pxref{NSS Configuration " "File,,, libc, The GNU C Library Reference Manual}). Compared to the " "configuration file format of libc NSS, it has the advantage not only of " "adding this warm parenthetic feel that we like, but also static checks: you " "will know about syntax errors and typos as soon as you run @command{guix " "system}." msgstr "" #. type: deftp #: doc/guix.texi:21844 #, no-wrap msgid "{Data Type} name-service-switch" msgstr "" #. type: deftp #: doc/guix.texi:21849 msgid "" "This is the data type representation the configuration of libc's name " "service switch (NSS). Each field below represents one of the supported " "system databases." msgstr "" #. type: item #: doc/guix.texi:21851 #, no-wrap msgid "aliases" msgstr "" #. type: itemx #: doc/guix.texi:21852 #, no-wrap msgid "ethers" msgstr "" #. type: itemx #: doc/guix.texi:21854 #, no-wrap msgid "gshadow" msgstr "" #. type: itemx #: doc/guix.texi:21855 #, no-wrap msgid "hosts" msgstr "" #. type: itemx #: doc/guix.texi:21856 #, no-wrap msgid "initgroups" msgstr "" #. type: itemx #: doc/guix.texi:21857 #, no-wrap msgid "netgroup" msgstr "" #. type: itemx #: doc/guix.texi:21858 #, no-wrap msgid "networks" msgstr "" #. type: itemx #: doc/guix.texi:21860 #, no-wrap msgid "public-key" msgstr "" #. type: itemx #: doc/guix.texi:21861 #, no-wrap msgid "rpc" msgstr "" #. type: itemx #: doc/guix.texi:21863 #, no-wrap msgid "shadow" msgstr "" #. type: table #: doc/guix.texi:21866 msgid "" "The system databases handled by the NSS. Each of these fields must be a " "list of @code{} objects (see below)." msgstr "" #. type: deftp #: doc/guix.texi:21869 #, no-wrap msgid "{Data Type} name-service" msgstr "" #. type: deftp #: doc/guix.texi:21873 msgid "" "This is the data type representing an actual name service and the associated " "lookup action." msgstr "" #. type: table #: doc/guix.texi:21878 msgid "" "A string denoting the name service (@pxref{Services in the NSS " "configuration,,, libc, The GNU C Library Reference Manual})." msgstr "" #. type: table #: doc/guix.texi:21883 msgid "" "Note that name services listed here must be visible to nscd. This is " "achieved by passing the @code{#:name-services} argument to @code{nscd-" "service} the list of packages providing the needed name services " "(@pxref{Base Services, @code{nscd-service}})." msgstr "" #. type: item #: doc/guix.texi:21884 #, no-wrap msgid "reaction" msgstr "" #. type: table #: doc/guix.texi:21888 msgid "" "An action specified using the @code{lookup-specification} macro " "(@pxref{Actions in the NSS configuration,,, libc, The GNU C Library " "Reference Manual}). For example:" msgstr "" #. type: example #: doc/guix.texi:21892 #, no-wrap msgid "" "(lookup-specification (unavailable => continue)\n" " (success => return))\n" msgstr "" #. type: Plain text #: doc/guix.texi:21906 msgid "" "For bootstrapping purposes, the Linux-Libre kernel is passed an @dfn{initial " "RAM disk}, or @dfn{initrd}. An initrd contains a temporary root file system " "as well as an initialization script. The latter is responsible for mounting " "the real root file system, and for loading any kernel modules that may be " "needed to achieve that." msgstr "" #. type: Plain text #: doc/guix.texi:21915 msgid "" "The @code{initrd-modules} field of an @code{operating-system} declaration " "allows you to specify Linux-libre kernel modules that must be available in " "the initrd. In particular, this is where you would list modules needed to " "actually drive the hard disk where your root partition is---although the " "default value of @code{initrd-modules} should cover most use cases. For " "example, assuming you need the @code{megaraid_sas} module in addition to the " "default modules to be able to access your root file system, you would write:" msgstr "" #. type: example #: doc/guix.texi:21920 #, no-wrap msgid "" "(operating-system\n" " ;; @dots{}\n" " (initrd-modules (cons \"megaraid_sas\" %base-initrd-modules)))\n" msgstr "" #. type: defvr #: doc/guix.texi:21922 #, no-wrap msgid "{Scheme Variable} %base-initrd-modules" msgstr "" #. type: defvr #: doc/guix.texi:21924 msgid "This is the list of kernel modules included in the initrd by default." msgstr "" #. type: Plain text #: doc/guix.texi:21932 msgid "" "Furthermore, if you need lower-level customization, the @code{initrd} field " "of an @code{operating-system} declaration allows you to specify which initrd " "you would like to use. The @code{(gnu system linux-initrd)} module provides " "three ways to build an initrd: the high-level @code{base-initrd} procedure " "and the low-level @code{raw-initrd} and @code{expression->initrd} procedures." msgstr "" #. type: Plain text #: doc/guix.texi:21937 msgid "" "The @code{base-initrd} procedure is intended to cover most common uses. For " "example, if you want to add a bunch of kernel modules to be loaded at boot " "time, you can define the @code{initrd} field of the operating system " "declaration like this:" msgstr "" #. type: example #: doc/guix.texi:21945 #, no-wrap msgid "" "(initrd (lambda (file-systems . rest)\n" " ;; Create a standard initrd but set up networking\n" " ;; with the parameters QEMU expects by default.\n" " (apply base-initrd file-systems\n" " #:qemu-networking? #t\n" " rest)))\n" msgstr "" #. type: Plain text #: doc/guix.texi:21950 msgid "" "The @code{base-initrd} procedure also handles common use cases that involves " "using the system as a QEMU guest, or as a ``live'' system with volatile root " "file system." msgstr "" #. type: Plain text #: doc/guix.texi:21957 msgid "" "The @code{base-initrd} procedure is built from @code{raw-initrd} procedure. " "Unlike @code{base-initrd}, @code{raw-initrd} doesn't do anything high-level, " "such as trying to guess which kernel modules and packages should be included " "to the initrd. An example use of @code{raw-initrd} is when a user has a " "custom Linux kernel configuration and default kernel modules included by " "@code{base-initrd} are not available." msgstr "" #. type: Plain text #: doc/guix.texi:21962 msgid "" "The initial RAM disk produced by @code{base-initrd} or @code{raw-initrd} " "honors several options passed on the Linux kernel command line (that is, " "arguments passed @i{via} the @code{linux} command of GRUB, or the @code{-" "append} option of QEMU), notably:" msgstr "" #. type: item #: doc/guix.texi:21964 #, no-wrap msgid "--load=@var{boot}" msgstr "" #. type: table #: doc/guix.texi:21967 msgid "" "Tell the initial RAM disk to load @var{boot}, a file containing a Scheme " "program, once it has mounted the root file system." msgstr "" #. type: table #: doc/guix.texi:21971 msgid "" "GuixSD uses this option to yield control to a boot program that runs the " "service activation programs and then spawns the GNU@tie{}Shepherd, the " "initialization system." msgstr "" #. type: item #: doc/guix.texi:21972 #, no-wrap msgid "--root=@var{root}" msgstr "" #. type: table #: doc/guix.texi:21976 msgid "" "Mount @var{root} as the root file system. @var{root} can be a device name " "like @code{/dev/sda1}, a file system label, or a file system UUID." msgstr "" #. type: table #: doc/guix.texi:21980 msgid "" "Have @file{/run/booted-system} and @file{/run/current-system} point to " "@var{system}." msgstr "" #. type: item #: doc/guix.texi:21981 #, no-wrap msgid "modprobe.blacklist=@var{modules}@dots{}" msgstr "" #. type: cindex #: doc/guix.texi:21982 #, no-wrap msgid "module, black-listing" msgstr "" #. type: cindex #: doc/guix.texi:21983 #, no-wrap msgid "black list, of kernel modules" msgstr "" #. type: table #: doc/guix.texi:21988 msgid "" "Instruct the initial RAM disk as well as the @command{modprobe} command " "(from the kmod package) to refuse to load @var{modules}. @var{modules} must " "be a comma-separated list of module names---e.g., @code{usbkbd,9pnet}." msgstr "" #. type: item #: doc/guix.texi:21989 #, no-wrap msgid "--repl" msgstr "" #. type: table #: doc/guix.texi:21995 msgid "" "Start a read-eval-print loop (REPL) from the initial RAM disk before it " "tries to load kernel modules and to mount the root file system. Our " "marketing team calls it @dfn{boot-to-Guile}. The Schemer in you will love " "it. @xref{Using Guile Interactively,,, guile, GNU Guile Reference Manual}, " "for more information on Guile's REPL." msgstr "" #. type: Plain text #: doc/guix.texi:22001 msgid "" "Now that you know all the features that initial RAM disks produced by " "@code{base-initrd} and @code{raw-initrd} provide, here is how to use it and " "customize it further." msgstr "" #. type: deffn #: doc/guix.texi:22004 #, no-wrap msgid "{Scheme Procedure} raw-initrd @var{file-systems} @" msgstr "" #. type: deffn #: doc/guix.texi:22016 msgid "" "[#:linux-modules '()] [#:mapped-devices '()] @ [#:helper-packages '()] [#:" "qemu-networking? #f] [#:volatile-root? #f] Return a derivation that builds a " "raw initrd. @var{file-systems} is a list of file systems to be mounted by " "the initrd, possibly in addition to the root file system specified on the " "kernel command line via @code{--root}. @var{linux-modules} is a list of " "kernel modules to be loaded at boot time. @var{mapped-devices} is a list of " "device mappings to realize before @var{file-systems} are mounted " "(@pxref{Mapped Devices}). @var{helper-packages} is a list of packages to be " "copied in the initrd. It may include @code{e2fsck/static} or other packages " "needed by the initrd to check the root file system." msgstr "" #. type: deffn #: doc/guix.texi:22020 msgid "" "When @var{qemu-networking?} is true, set up networking with the standard " "QEMU parameters. When @var{virtio?} is true, load additional modules so " "that the initrd can be used as a QEMU guest with para-virtualized I/O " "drivers." msgstr "" #. type: deffn #: doc/guix.texi:22023 msgid "" "When @var{volatile-root?} is true, the root file system is writable but any " "changes to it are lost." msgstr "" #. type: deffn #: doc/guix.texi:22025 #, no-wrap msgid "{Scheme Procedure} base-initrd @var{file-systems} @" msgstr "" #. type: deffn #: doc/guix.texi:22033 msgid "" "[#:mapped-devices '()] [#:qemu-networking? #f] [#:volatile-root? #f]@ [#:" "linux-modules '()] Return as a file-like object a generic initrd, with " "kernel modules taken from @var{linux}. @var{file-systems} is a list of file-" "systems to be mounted by the initrd, possibly in addition to the root file " "system specified on the kernel command line via @code{--root}. @var{mapped-" "devices} is a list of device mappings to realize before @var{file-systems} " "are mounted." msgstr "" #. type: deffn #: doc/guix.texi:22035 msgid "" "@var{qemu-networking?} and @var{volatile-root?} behaves as in @code{raw-" "initrd}." msgstr "" #. type: deffn #: doc/guix.texi:22040 msgid "" "The initrd is automatically populated with all the kernel modules necessary " "for @var{file-systems} and for the given options. Additional kernel modules " "can be listed in @var{linux-modules}. They will be added to the initrd, and " "loaded at boot time in the order in which they appear." msgstr "" #. type: Plain text #: doc/guix.texi:22047 msgid "" "Needless to say, the initrds we produce and use embed a statically-linked " "Guile, and the initialization program is a Guile program. That gives a lot " "of flexibility. The @code{expression->initrd} procedure builds such an " "initrd, given the program to run in that initrd." msgstr "" #. type: deffn #: doc/guix.texi:22048 #, no-wrap msgid "{Scheme Procedure} expression->initrd @var{exp} @" msgstr "" #. type: deffn #: doc/guix.texi:22054 msgid "" "[#:guile %guile-static-stripped] [#:name \"guile-initrd\"] Return as a file-" "like object a Linux initrd (a gzipped cpio archive) containing @var{guile} " "and that evaluates @var{exp}, a G-expression, upon booting. All the " "derivations referenced by @var{exp} are automatically copied to the initrd." msgstr "" #. type: cindex #: doc/guix.texi:22060 #, no-wrap msgid "boot loader" msgstr "" #. type: Plain text #: doc/guix.texi:22067 msgid "" "The operating system supports multiple bootloaders. The bootloader is " "configured using @code{bootloader-configuration} declaration. All the " "fields of this structure are bootloader agnostic except for one field, " "@code{bootloader} that indicates the bootloader to be configured and " "installed." msgstr "" #. type: Plain text #: doc/guix.texi:22072 msgid "" "Some of the bootloaders do not honor every field of @code{bootloader-" "configuration}. For instance, the extlinux bootloader does not support " "themes and thus ignores the @code{theme} field." msgstr "" #. type: deftp #: doc/guix.texi:22073 #, no-wrap msgid "{Data Type} bootloader-configuration" msgstr "" #. type: deftp #: doc/guix.texi:22075 msgid "The type of a bootloader configuration declaration." msgstr "" #. type: cindex #: doc/guix.texi:22079 #, no-wrap msgid "EFI, bootloader" msgstr "" #. type: cindex #: doc/guix.texi:22080 #, no-wrap msgid "UEFI, bootloader" msgstr "" #. type: cindex #: doc/guix.texi:22081 #, no-wrap msgid "BIOS, bootloader" msgstr "" #. type: table #: doc/guix.texi:22085 msgid "" "The bootloader to use, as a @code{bootloader} object. For now @code{grub-" "bootloader}, @code{grub-efi-bootloader}, @code{extlinux-bootloader} and " "@code{u-boot-bootloader} are supported." msgstr "" #. type: table #: doc/guix.texi:22091 msgid "" "@code{grub-efi-bootloader} allows to boot on modern systems using the " "@dfn{Unified Extensible Firmware Interface} (UEFI). This is what you should " "use if the installation image contains a @file{/sys/firmware/efi} directory " "when you boot it on your system." msgstr "" #. type: table #: doc/guix.texi:22095 msgid "" "@code{grub-bootloader} allows you to boot in particular Intel-based machines " "in ``legacy'' BIOS mode." msgstr "" #. type: cindex #: doc/guix.texi:22096 #, no-wrap msgid "ARM, bootloaders" msgstr "" #. type: cindex #: doc/guix.texi:22097 #, no-wrap msgid "AArch64, bootloaders" msgstr "" #. type: table #: doc/guix.texi:22102 msgid "" "Available bootloaders are described in @code{(gnu bootloader @dots{})} " "modules. In particular, @code{(gnu bootloader u-boot)} contains definitions " "of bootloaders for a wide range of ARM and AArch64 systems, using the " "@uref{http://www.denx.de/wiki/U-Boot/, U-Boot bootloader}." msgstr "" #. type: table #: doc/guix.texi:22106 msgid "" "This is a string denoting the target onto which to install the bootloader." msgstr "" #. type: table #: doc/guix.texi:22113 msgid "" "The interpretation depends on the bootloader in question. For @code{grub-" "bootloader}, for example, it should be a device name understood by the " "bootloader @command{installer} command, such as @code{/dev/sda} or " "@code{(hd0)} (@pxref{Invoking grub-install,,, grub, GNU GRUB Manual}). For " "@code{grub-efi-bootloader}, it should be the mount point of the EFI file " "system, usually @file{/boot/efi}." msgstr "" #. type: item #: doc/guix.texi:22114 #, no-wrap msgid "@code{menu-entries} (default: @code{()})" msgstr "" #. type: table #: doc/guix.texi:22118 msgid "" "A possibly empty list of @code{menu-entry} objects (see below), denoting " "entries to appear in the bootloader menu, in addition to the current system " "entry and the entry pointing to previous system generations." msgstr "" #. type: item #: doc/guix.texi:22119 #, no-wrap msgid "@code{default-entry} (default: @code{0})" msgstr "" #. type: table #: doc/guix.texi:22122 msgid "" "The index of the default boot menu entry. Index 0 is for the entry of the " "current system." msgstr "" #. type: item #: doc/guix.texi:22123 #, no-wrap msgid "@code{timeout} (default: @code{5})" msgstr "" #. type: table #: doc/guix.texi:22126 msgid "" "The number of seconds to wait for keyboard input before booting. Set to 0 " "to boot immediately, and to -1 to wait indefinitely." msgstr "" #. type: item #: doc/guix.texi:22127 #, no-wrap msgid "@code{theme} (default: @var{#f})" msgstr "" #. type: table #: doc/guix.texi:22131 msgid "" "The bootloader theme object describing the theme to use. If no theme is " "provided, some bootloaders might use a default theme, that's true for GRUB." msgstr "" #. type: item #: doc/guix.texi:22132 #, no-wrap msgid "@code{terminal-outputs} (default: @code{'gfxterm})" msgstr "" #. type: table #: doc/guix.texi:22139 msgid "" "The output terminals used for the bootloader boot menu, as a list of " "symbols. GRUB accepts the values: @code{console}, @code{serial}, " "@code{serial_@{0-3@}}, @code{gfxterm}, @code{vga_text}, @code{mda_text}, " "@code{morse}, and @code{pkmodem}. This field corresponds to the GRUB " "variable @code{GRUB_TERMINAL_OUTPUT} (@pxref{Simple configuration,,, grub," "GNU GRUB manual})." msgstr "" #. type: item #: doc/guix.texi:22140 #, no-wrap msgid "@code{terminal-inputs} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:22148 msgid "" "The input terminals used for the bootloader boot menu, as a list of " "symbols. For GRUB, the default is the native platform terminal as " "determined at run-time. GRUB accepts the values: @code{console}, " "@code{serial}, @code{serial_@{0-3@}}, @code{at_keyboard}, and " "@code{usb_keyboard}. This field corresponds to the GRUB variable " "@code{GRUB_TERMINAL_INPUT} (@pxref{Simple configuration,,, grub,GNU GRUB " "manual})." msgstr "" #. type: item #: doc/guix.texi:22149 #, no-wrap msgid "@code{serial-unit} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:22153 msgid "" "The serial unit used by the bootloader, as an integer from 0 to 3. For " "GRUB, it is chosen at run-time; currently GRUB chooses 0, which corresponds " "to COM1 (@pxref{Serial terminal,,, grub,GNU GRUB manual})." msgstr "" #. type: item #: doc/guix.texi:22154 #, no-wrap msgid "@code{serial-speed} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:22158 msgid "" "The speed of the serial interface, as an integer. For GRUB, the default " "value is chosen at run-time; currently GRUB chooses 9600@tie{}bps " "(@pxref{Serial terminal,,, grub,GNU GRUB manual})." msgstr "" #. type: cindex #: doc/guix.texi:22162 #, no-wrap msgid "dual boot" msgstr "" #. type: cindex #: doc/guix.texi:22163 #, no-wrap msgid "boot menu" msgstr "" #. type: Plain text #: doc/guix.texi:22169 msgid "" "Should you want to list additional boot menu entries @i{via} the @code{menu-" "entries} field above, you will need to create them with the @code{menu-" "entry} form. For example, imagine you want to be able to boot another " "distro (hard to imagine!), you can define a menu entry along these lines:" msgstr "" #. type: example #: doc/guix.texi:22176 #, no-wrap msgid "" "(menu-entry\n" " (label \"The Other Distro\")\n" " (linux \"/boot/old/vmlinux-2.6.32\")\n" " (linux-arguments '(\"root=/dev/sda2\"))\n" " (initrd \"/boot/old/initrd\"))\n" msgstr "" #. type: Plain text #: doc/guix.texi:22179 msgid "Details below." msgstr "" #. type: deftp #: doc/guix.texi:22180 #, no-wrap msgid "{Data Type} menu-entry" msgstr "" #. type: deftp #: doc/guix.texi:22182 msgid "The type of an entry in the bootloader menu." msgstr "" #. type: code{#1} #: doc/guix.texi:22185 #, no-wrap msgid "label" msgstr "" #. type: table #: doc/guix.texi:22187 msgid "The label to show in the menu---e.g., @code{\"GNU\"}." msgstr "" #. type: code{#1} #: doc/guix.texi:22188 #, no-wrap msgid "linux" msgstr "" #. type: table #: doc/guix.texi:22190 msgid "The Linux kernel image to boot, for example:" msgstr "" #. type: example #: doc/guix.texi:22193 #, no-wrap msgid "(file-append linux-libre \"/bzImage\")\n" msgstr "" #. type: table #: doc/guix.texi:22198 msgid "" "For GRUB, it is also possible to specify a device explicitly in the file " "path using GRUB's device naming convention (@pxref{Naming convention,,, " "grub, GNU GRUB manual}), for example:" msgstr "" #. type: example #: doc/guix.texi:22201 #, no-wrap msgid "\"(hd0,msdos1)/boot/vmlinuz\"\n" msgstr "" #. type: table #: doc/guix.texi:22205 msgid "" "If the device is specified explicitly as above, then the @code{device} field " "is ignored entirely." msgstr "" #. type: item #: doc/guix.texi:22206 #, no-wrap msgid "@code{linux-arguments} (default: @code{()})" msgstr "" #. type: table #: doc/guix.texi:22209 msgid "" "The list of extra Linux kernel command-line arguments---e.g., " "@code{(\"console=ttyS0\")}." msgstr "" #. type: table #: doc/guix.texi:22213 msgid "" "A G-Expression or string denoting the file name of the initial RAM disk to " "use (@pxref{G-Expressions})." msgstr "" #. type: item #: doc/guix.texi:22213 #, no-wrap msgid "@code{device} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:22216 msgid "" "The device where the kernel and initrd are to be found---i.e., for GRUB, " "@dfn{root} for this menu entry (@pxref{root,,, grub, GNU GRUB manual})." msgstr "" #. type: table #: doc/guix.texi:22222 msgid "" "This may be a file system label (a string), a file system UUID (a " "bytevector, @pxref{File Systems}), or @code{#f}, in which case the " "bootloader will search the device containing the file specified by the " "@code{linux} field (@pxref{search,,, grub, GNU GRUB manual}). It must " "@emph{not} be an OS device name such as @file{/dev/sda1}." msgstr "" #. type: Plain text #: doc/guix.texi:22229 msgid "" "Fow now only GRUB has theme support. GRUB themes are created using the " "@code{grub-theme} form, which is not documented yet." msgstr "" #. type: defvr #: doc/guix.texi:22234 msgid "" "This is the default GRUB theme used by the operating system if no " "@code{theme} field is specified in @code{bootloader-configuration} record." msgstr "" #. type: defvr #: doc/guix.texi:22237 msgid "" "It comes with a fancy background image displaying the GNU and Guix logos." msgstr "" #. type: subsection #: doc/guix.texi:22241 #, no-wrap msgid "Invoking @code{guix system}" msgstr "" #. type: Plain text #: doc/guix.texi:22246 msgid "" "Once you have written an operating system declaration as seen in the " "previous section, it can be @dfn{instantiated} using the @command{guix " "system} command. The synopsis is:" msgstr "" #. type: example #: doc/guix.texi:22249 #, no-wrap msgid "guix system @var{options}@dots{} @var{action} @var{file}\n" msgstr "" #. type: Plain text #: doc/guix.texi:22255 msgid "" "@var{file} must be the name of a file containing an @code{operating-system} " "declaration. @var{action} specifies how the operating system is " "instantiated. Currently the following values are supported:" msgstr "" #. type: item #: doc/guix.texi:22257 #, no-wrap msgid "search" msgstr "" #. type: table #: doc/guix.texi:22260 msgid "" "Display available service type definitions that match the given regular " "expressions, sorted by relevance:" msgstr "" #. type: example #: doc/guix.texi:22272 #, no-wrap msgid "" "$ guix system search console font\n" "name: console-fonts\n" "location: gnu/services/base.scm:729:2\n" "extends: shepherd-root\n" "description: Install the given fonts on the specified ttys (fonts are\n" "+ per virtual console on GNU/Linux). The value of this service is a list\n" "+ of tty/font pairs like:\n" "+ \n" "+ '((\"tty1\" . \"LatGrkCyr-8x16\"))\n" "relevance: 20\n" "\n" msgstr "" #. type: example #: doc/guix.texi:22278 #, no-wrap msgid "" "name: mingetty\n" "location: gnu/services/base.scm:1048:2\n" "extends: shepherd-root\n" "description: Provide console login using the `mingetty' program.\n" "relevance: 2\n" "\n" msgstr "" #. type: example #: doc/guix.texi:22285 #, no-wrap msgid "" "name: login\n" "location: gnu/services/base.scm:775:2\n" "extends: pam\n" "description: Provide a console log-in service as specified by its\n" "+ configuration value, a `login-configuration' object.\n" "relevance: 2\n" "\n" msgstr "" #. type: example #: doc/guix.texi:22287 #, no-wrap msgid "@dots{}\n" msgstr "" #. type: table #: doc/guix.texi:22292 msgid "" "As for @command{guix package --search}, the result is written in " "@code{recutils} format, which makes it easy to filter the output " "(@pxref{Top, GNU recutils databases,, recutils, GNU recutils manual})." msgstr "" #. type: item #: doc/guix.texi:22293 #, no-wrap msgid "reconfigure" msgstr "" #. type: table #: doc/guix.texi:22298 msgid "" "Build the operating system described in @var{file}, activate it, and switch " "to it@footnote{This action (and the related actions @code{switch-generation} " "and @code{roll-back}) are usable only on systems already running GuixSD.}." msgstr "" #. type: table #: doc/guix.texi:22305 msgid "" "This effects all the configuration specified in @var{file}: user accounts, " "system services, global package list, setuid programs, etc. The command " "starts system services specified in @var{file} that are not currently " "running; if a service is currently running this command will arrange for it " "to be upgraded the next time it is stopped (eg. by @code{herd stop X} or " "@code{herd restart X})." msgstr "" #. type: table #: doc/guix.texi:22311 msgid "" "This command creates a new generation whose number is one greater than the " "current generation (as reported by @command{guix system list-generations}). " "If that generation already exists, it will be overwritten. This behavior " "mirrors that of @command{guix package} (@pxref{Invoking guix package})." msgstr "" #. type: table #: doc/guix.texi:22316 msgid "" "It also adds a bootloader menu entry for the new OS configuration, ---unless " "@option{--no-bootloader} is passed. For GRUB, it moves entries for older " "configurations to a submenu, allowing you to choose an older system " "generation at boot time should you need it." msgstr "" #. type: quotation #: doc/guix.texi:22324 msgid "" "It is highly recommended to run @command{guix pull} once before you run " "@command{guix system reconfigure} for the first time (@pxref{Invoking guix " "pull}). Failing to do that you would see an older version of Guix once " "@command{reconfigure} has completed." msgstr "" #. type: item #: doc/guix.texi:22326 #, no-wrap msgid "switch-generation" msgstr "" #. type: table #: doc/guix.texi:22335 msgid "" "Switch to an existing system generation. This action atomically switches " "the system profile to the specified system generation. It also rearranges " "the system's existing bootloader menu entries. It makes the menu entry for " "the specified system generation the default, and it moves the entries for " "the other generatiors to a submenu, if supported by the bootloader being " "used. The next time the system boots, it will use the specified system " "generation." msgstr "" #. type: table #: doc/guix.texi:22339 msgid "" "The bootloader itself is not being reinstalled when using this command. " "Thus, the installed bootloader is used with an updated configuration file." msgstr "" #. type: table #: doc/guix.texi:22343 msgid "" "The target generation can be specified explicitly by its generation number. " "For example, the following invocation would switch to system generation 7:" msgstr "" #. type: example #: doc/guix.texi:22346 #, no-wrap msgid "guix system switch-generation 7\n" msgstr "" #. type: table #: doc/guix.texi:22354 msgid "" "The target generation can also be specified relative to the current " "generation with the form @code{+N} or @code{-N}, where @code{+3} means ``3 " "generations ahead of the current generation,'' and @code{-1} means ``1 " "generation prior to the current generation.'' When specifying a negative " "value such as @code{-1}, you must precede it with @code{--} to prevent it " "from being parsed as an option. For example:" msgstr "" #. type: example #: doc/guix.texi:22357 #, no-wrap msgid "guix system switch-generation -- -1\n" msgstr "" #. type: table #: doc/guix.texi:22365 msgid "" "Currently, the effect of invoking this action is @emph{only} to switch the " "system profile to an existing generation and rearrange the bootloader menu " "entries. To actually start using the target system generation, you must " "reboot after running this action. In the future, it will be updated to do " "the same things as @command{reconfigure}, like activating and deactivating " "services." msgstr "" #. type: table #: doc/guix.texi:22367 msgid "This action will fail if the specified generation does not exist." msgstr "" #. type: item #: doc/guix.texi:22368 #, no-wrap msgid "roll-back" msgstr "" #. type: table #: doc/guix.texi:22374 msgid "" "Switch to the preceding system generation. The next time the system boots, " "it will use the preceding system generation. This is the inverse of " "@command{reconfigure}, and it is exactly the same as invoking " "@command{switch-generation} with an argument of @code{-1}." msgstr "" #. type: table #: doc/guix.texi:22378 msgid "" "Currently, as with @command{switch-generation}, you must reboot after " "running this action to actually start using the preceding system generation." msgstr "" #. type: table #: doc/guix.texi:22383 msgid "" "Build the derivation of the operating system, which includes all the " "configuration files and programs needed to boot and run the system. This " "action does not actually install anything." msgstr "" #. type: item #: doc/guix.texi:22384 #, no-wrap msgid "init" msgstr "" #. type: table #: doc/guix.texi:22388 msgid "" "Populate the given directory with all the files necessary to run the " "operating system specified in @var{file}. This is useful for first-time " "installations of GuixSD. For instance:" msgstr "" #. type: example #: doc/guix.texi:22391 #, no-wrap msgid "guix system init my-os-config.scm /mnt\n" msgstr "" #. type: table #: doc/guix.texi:22398 msgid "" "copies to @file{/mnt} all the store items required by the configuration " "specified in @file{my-os-config.scm}. This includes configuration files, " "packages, and so on. It also creates other essential files needed for the " "system to operate correctly---e.g., the @file{/etc}, @file{/var}, and @file{/" "run} directories, and the @file{/bin/sh} file." msgstr "" #. type: table #: doc/guix.texi:22402 msgid "" "This command also installs bootloader on the target specified in @file{my-os-" "config}, unless the @option{--no-bootloader} option was passed." msgstr "" #. type: item #: doc/guix.texi:22403 #, no-wrap msgid "vm" msgstr "" #. type: cindex #: doc/guix.texi:22404 doc/guix.texi:22668 #, no-wrap msgid "virtual machine" msgstr "" #. type: cindex #: doc/guix.texi:22405 #, no-wrap msgid "VM" msgstr "" #. type: anchor{#1} #: doc/guix.texi:22412 msgid "guix system vm" msgstr "" #. type: table #: doc/guix.texi:22412 msgid "" "Build a virtual machine that contains the operating system declared in " "@var{file}, and return a script to run that virtual machine (VM). Arguments " "given to the script are passed to QEMU as in the example below, which " "enables networking and requests 1@tie{}GiB of RAM for the emulated machine:" msgstr "" #. type: example #: doc/guix.texi:22415 #, no-wrap msgid "$ /gnu/store/@dots{}-run-vm.sh -m 1024 -net user\n" msgstr "" #. type: table #: doc/guix.texi:22418 msgid "The VM shares its store with the host system." msgstr "" #. type: table #: doc/guix.texi:22423 msgid "" "Additional file systems can be shared between the host and the VM using the " "@code{--share} and @code{--expose} command-line options: the former " "specifies a directory to be shared with write access, while the latter " "provides read-only access to the shared directory." msgstr "" #. type: table #: doc/guix.texi:22427 msgid "" "The example below creates a VM in which the user's home directory is " "accessible read-only, and where the @file{/exchange} directory is a read-" "write mapping of @file{$HOME/tmp} on the host:" msgstr "" #. type: example #: doc/guix.texi:22431 #, no-wrap msgid "" "guix system vm my-config.scm \\\n" " --expose=$HOME --share=$HOME/tmp=/exchange\n" msgstr "" #. type: table #: doc/guix.texi:22436 msgid "" "On GNU/Linux, the default is to boot directly to the kernel; this has the " "advantage of requiring only a very tiny root disk image since the store of " "the host can then be mounted." msgstr "" #. type: table #: doc/guix.texi:22442 msgid "" "The @code{--full-boot} option forces a complete boot sequence, starting with " "the bootloader. This requires more disk space since a root image containing " "at least the kernel, initrd, and bootloader data files must be created. The " "@code{--image-size} option can be used to specify the size of the image." msgstr "" #. type: cindex #: doc/guix.texi:22443 #, no-wrap msgid "System images, creation in various formats" msgstr "" #. type: cindex #: doc/guix.texi:22444 #, no-wrap msgid "Creating system images in various formats" msgstr "" #. type: item #: doc/guix.texi:22445 #, no-wrap msgid "vm-image" msgstr "" #. type: itemx #: doc/guix.texi:22446 #, no-wrap msgid "disk-image" msgstr "" #. type: itemx #: doc/guix.texi:22447 #, no-wrap msgid "docker-image" msgstr "" #. type: table #: doc/guix.texi:22455 msgid "" "Return a virtual machine, disk image, or Docker image of the operating " "system declared in @var{file} that stands alone. By default, @command{guix " "system} estimates the size of the image needed to store the system, but you " "can use the @option{--image-size} option to specify a value. Docker images " "are built to contain exactly what they need, so the @option{--image-size} " "option is ignored in the case of @code{docker-image}." msgstr "" #. type: table #: doc/guix.texi:22458 msgid "" "You can specify the root file system type by using the @option{--file-system-" "type} option. It defaults to @code{ext4}." msgstr "" #. type: table #: doc/guix.texi:22462 msgid "" "When using @code{vm-image}, the returned image is in qcow2 format, which the " "QEMU emulator can efficiently use. @xref{Running GuixSD in a VM}, for more " "information on how to run the image in a virtual machine." msgstr "" #. type: table #: doc/guix.texi:22467 msgid "" "When using @code{disk-image}, a raw disk image is produced; it can be copied " "as is to a USB stick, for instance. Assuming @code{/dev/sdc} is the device " "corresponding to a USB stick, one can copy the image to it using the " "following command:" msgstr "" #. type: example #: doc/guix.texi:22470 #, no-wrap msgid "# dd if=$(guix system disk-image my-os.scm) of=/dev/sdc\n" msgstr "" #. type: table #: doc/guix.texi:22477 msgid "" "When using @code{docker-image}, a Docker image is produced. Guix builds the " "image from scratch, not from a pre-existing Docker base image. As a result, " "it contains @emph{exactly} what you define in the operating system " "configuration file. You can then load the image and launch a Docker " "container using commands like the following:" msgstr "" #. type: example #: doc/guix.texi:22483 #, no-wrap msgid "" "image_id=\"$(docker load < guixsd-docker-image.tar.gz)\"\n" "docker run -e GUIX_NEW_SYSTEM=/var/guix/profiles/system \\\\\n" " --entrypoint /var/guix/profiles/system/profile/bin/guile \\\\\n" " $image_id /var/guix/profiles/system/boot\n" msgstr "" #. type: table #: doc/guix.texi:22493 msgid "" "This command starts a new Docker container from the specified image. It " "will boot the GuixSD system in the usual manner, which means it will start " "any services you have defined in the operating system configuration. " "Depending on what you run in the Docker container, it may be necessary to " "give the container additional permissions. For example, if you intend to " "build software using Guix inside of the Docker container, you may need to " "pass the @option{--privileged} option to @code{docker run}." msgstr "" #. type: table #: doc/guix.texi:22501 msgid "" "Return a script to run the operating system declared in @var{file} within a " "container. Containers are a set of lightweight isolation mechanisms " "provided by the kernel Linux-libre. Containers are substantially less " "resource-demanding than full virtual machines since the kernel, shared " "objects, and other resources can be shared with the host system; this also " "means they provide thinner isolation." msgstr "" #. type: table #: doc/guix.texi:22505 msgid "" "Currently, the script must be run as root in order to support more than a " "single user and group. The container shares its store with the host system." msgstr "" #. type: table #: doc/guix.texi:22509 msgid "" "As with the @code{vm} action (@pxref{guix system vm}), additional file " "systems to be shared between the host and container can be specified using " "the @option{--share} and @option{--expose} options:" msgstr "" #. type: example #: doc/guix.texi:22513 #, no-wrap msgid "" "guix system container my-config.scm \\\n" " --expose=$HOME --share=$HOME/tmp=/exchange\n" msgstr "" #. type: quotation #: doc/guix.texi:22517 msgid "This option requires Linux-libre 3.19 or newer." msgstr "" #. type: Plain text #: doc/guix.texi:22524 msgid "" "@var{options} can contain any of the common build options (@pxref{Common " "Build Options}). In addition, @var{options} can contain one of the " "following:" msgstr "" #. type: table #: doc/guix.texi:22533 msgid "" "Consider the operating-system @var{expr} evaluates to. This is an " "alternative to specifying a file which evaluates to an operating system. " "This is used to generate the GuixSD installer @pxref{Building the " "Installation Image})." msgstr "" #. type: table #: doc/guix.texi:22538 msgid "" "Attempt to build for @var{system} instead of the host system type. This " "works as per @command{guix build} (@pxref{Invoking guix build})." msgstr "" #. type: item #: doc/guix.texi:22539 #, no-wrap msgid "--derivation" msgstr "" #. type: table #: doc/guix.texi:22543 msgid "" "Return the derivation file name of the given operating system without " "building anything." msgstr "" #. type: item #: doc/guix.texi:22544 #, no-wrap msgid "--file-system-type=@var{type}" msgstr "" #. type: table #: doc/guix.texi:22548 msgid "" "For the @code{disk-image} action, create a file system of the given " "@var{type} on the image." msgstr "" #. type: table #: doc/guix.texi:22550 msgid "When this option is omitted, @command{guix system} uses @code{ext4}." msgstr "" #. type: cindex #: doc/guix.texi:22551 #, no-wrap msgid "ISO-9660 format" msgstr "" #. type: cindex #: doc/guix.texi:22552 #, no-wrap msgid "CD image format" msgstr "" #. type: cindex #: doc/guix.texi:22553 #, no-wrap msgid "DVD image format" msgstr "" #. type: table #: doc/guix.texi:22556 msgid "" "@code{--file-system-type=iso9660} produces an ISO-9660 image, suitable for " "burning on CDs and DVDs." msgstr "" #. type: item #: doc/guix.texi:22557 #, no-wrap msgid "--image-size=@var{size}" msgstr "" #. type: table #: doc/guix.texi:22562 msgid "" "For the @code{vm-image} and @code{disk-image} actions, create an image of " "the given @var{size}. @var{size} may be a number of bytes, or it may " "include a unit as a suffix (@pxref{Block size, size specifications,, " "coreutils, GNU Coreutils})." msgstr "" #. type: table #: doc/guix.texi:22566 msgid "" "When this option is omitted, @command{guix system} computes an estimate of " "the image size as a function of the size of the system declared in " "@var{file}." msgstr "" #. type: item #: doc/guix.texi:22572 #, no-wrap msgid "--skip-checks" msgstr "" #. type: table #: doc/guix.texi:22574 msgid "Skip pre-installation safety checks." msgstr "" #. type: table #: doc/guix.texi:22581 msgid "" "By default, @command{guix system init} and @command{guix system reconfigure} " "perform safety checks: they make sure the file systems that appear in the " "@code{operating-system} declaration actually exist (@pxref{File Systems}), " "and that any Linux kernel modules that may be needed at boot time are listed " "in @code{initrd-modules} (@pxref{Initial RAM Disk}). Passing this option " "skips these tests altogether." msgstr "" #. type: item #: doc/guix.texi:22582 #, no-wrap msgid "--on-error=@var{strategy}" msgstr "" #. type: table #: doc/guix.texi:22585 msgid "" "Apply @var{strategy} when an error occurs when reading @var{file}. " "@var{strategy} may be one of the following:" msgstr "" #. type: item #: doc/guix.texi:22587 #, no-wrap msgid "nothing-special" msgstr "" #. type: table #: doc/guix.texi:22589 msgid "Report the error concisely and exit. This is the default strategy." msgstr "" #. type: item #: doc/guix.texi:22590 #, no-wrap msgid "backtrace" msgstr "" #. type: table #: doc/guix.texi:22592 msgid "Likewise, but also display a backtrace." msgstr "" #. type: item #: doc/guix.texi:22593 #, no-wrap msgid "debug" msgstr "" #. type: table #: doc/guix.texi:22599 msgid "" "Report the error and enter Guile's debugger. From there, you can run " "commands such as @code{,bt} to get a backtrace, @code{,locals} to display " "local variable values, and more generally inspect the state of the program. " "@xref{Debug Commands,,, guile, GNU Guile Reference Manual}, for a list of " "available debugging commands." msgstr "" #. type: quotation #: doc/guix.texi:22609 msgid "" "All the actions above, except @code{build} and @code{init}, can use KVM " "support in the Linux-libre kernel. Specifically, if the machine has " "hardware virtualization support, the corresponding KVM kernel module should " "be loaded, and the @file{/dev/kvm} device node must exist and be readable " "and writable by the user and by the build users of the daemon (@pxref{Build " "Environment Setup})." msgstr "" #. type: Plain text #: doc/guix.texi:22615 msgid "" "Once you have built, configured, re-configured, and re-re-configured your " "GuixSD installation, you may find it useful to list the operating system " "generations available on disk---and that you can choose from the bootloader " "boot menu:" msgstr "" #. type: item #: doc/guix.texi:22618 #, no-wrap msgid "list-generations" msgstr "" #. type: table #: doc/guix.texi:22623 msgid "" "List a summary of each generation of the operating system available on disk, " "in a human-readable way. This is similar to the @option{--list-generations} " "option of @command{guix package} (@pxref{Invoking guix package})." msgstr "" #. type: table #: doc/guix.texi:22628 msgid "" "Optionally, one can specify a pattern, with the same syntax that is used in " "@command{guix package --list-generations}, to restrict the list of " "generations displayed. For instance, the following command displays " "generations that are up to 10 days old:" msgstr "" #. type: example #: doc/guix.texi:22631 #, no-wrap msgid "$ guix system list-generations 10d\n" msgstr "" #. type: Plain text #: doc/guix.texi:22638 msgid "" "The @command{guix system} command has even more to offer! The following sub-" "commands allow you to visualize how your system services relate to each " "other:" msgstr "" #. type: anchor{#1} #: doc/guix.texi:22640 msgid "system-extension-graph" msgstr "" #. type: item #: doc/guix.texi:22642 #, no-wrap msgid "extension-graph" msgstr "" #. type: table #: doc/guix.texi:22647 msgid "" "Emit in Dot/Graphviz format to standard output the @dfn{service extension " "graph} of the operating system defined in @var{file} (@pxref{Service " "Composition}, for more information on service extensions.)" msgstr "" #. type: table #: doc/guix.texi:22649 msgid "The command:" msgstr "" #. type: example #: doc/guix.texi:22652 #, no-wrap msgid "$ guix system extension-graph @var{file} | dot -Tpdf > services.pdf\n" msgstr "" #. type: table #: doc/guix.texi:22655 msgid "produces a PDF file showing the extension relations among services." msgstr "" #. type: anchor{#1} #: doc/guix.texi:22657 msgid "system-shepherd-graph" msgstr "" #. type: item #: doc/guix.texi:22657 #, no-wrap msgid "shepherd-graph" msgstr "" #. type: table #: doc/guix.texi:22662 msgid "" "Emit in Dot/Graphviz format to standard output the @dfn{dependency graph} of " "shepherd services of the operating system defined in @var{file}. " "@xref{Shepherd Services}, for more information and for an example graph." msgstr "" #. type: subsection #: doc/guix.texi:22666 #, no-wrap msgid "Running GuixSD in a Virtual Machine" msgstr "" #. type: Plain text #: doc/guix.texi:22676 msgid "" "To run GuixSD in a virtual machine (VM), one can either use the pre-built " "GuixSD VM image distributed at @indicateurl{https://alpha.gnu.org/gnu/guix/" "guixsd-vm-image-@value{VERSION}.@var{system}.xz} , or build their own " "virtual machine image using @command{guix system vm-image} (@pxref{Invoking " "guix system}). The returned image is in qcow2 format, which the " "@uref{http://qemu.org/, QEMU emulator} can efficiently use." msgstr "" #. type: cindex #: doc/guix.texi:22677 #, no-wrap msgid "QEMU" msgstr "" #. type: Plain text #: doc/guix.texi:22684 msgid "" "If you built your own image, you must copy it out of the store (@pxref{The " "Store}) and give yourself permission to write to the copy before you can use " "it. When invoking QEMU, you must choose a system emulator that is suitable " "for your hardware platform. Here is a minimal QEMU invocation that will " "boot the result of @command{guix system vm-image} on x86_64 hardware:" msgstr "" #. type: example #: doc/guix.texi:22689 #, no-wrap msgid "" "$ qemu-system-x86_64 \\\n" " -net user -net nic,model=virtio \\\n" " -enable-kvm -m 256 /tmp/qemu-image\n" msgstr "" #. type: Plain text #: doc/guix.texi:22692 msgid "Here is what each of these options means:" msgstr "" #. type: item #: doc/guix.texi:22694 #, no-wrap msgid "qemu-system-x86_64" msgstr "" #. type: table #: doc/guix.texi:22697 msgid "" "This specifies the hardware platform to emulate. This should match the host." msgstr "" #. type: item #: doc/guix.texi:22698 #, no-wrap msgid "-net user" msgstr "" #. type: table #: doc/guix.texi:22702 msgid "" "Enable the unprivileged user-mode network stack. The guest OS can access " "the host but not vice versa. This is the simplest way to get the guest OS " "online." msgstr "" #. type: item #: doc/guix.texi:22703 #, no-wrap msgid "-net nic,model=virtio" msgstr "" #. type: table #: doc/guix.texi:22708 msgid "" "You must create a network interface of a given model. If you do not create " "a NIC, the boot will fail. Assuming your hardware platform is x86_64, you " "can get a list of available NIC models by running @command{qemu-system-" "x86_64 -net nic,model=help}." msgstr "" #. type: item #: doc/guix.texi:22709 #, no-wrap msgid "-enable-kvm" msgstr "" #. type: table #: doc/guix.texi:22713 msgid "" "If your system has hardware virtualization extensions, enabling the virtual " "machine support (KVM) of the Linux kernel will make things run faster." msgstr "" #. type: item #: doc/guix.texi:22714 #, no-wrap msgid "-m 256" msgstr "" #. type: table #: doc/guix.texi:22717 msgid "" "RAM available to the guest OS, in mebibytes. Defaults to 128@tie{}MiB, " "which may be insufficient for some operations." msgstr "" #. type: item #: doc/guix.texi:22718 #, no-wrap msgid "/tmp/qemu-image" msgstr "" #. type: table #: doc/guix.texi:22720 msgid "The file name of the qcow2 image." msgstr "" #. type: Plain text #: doc/guix.texi:22730 msgid "" "The default @command{run-vm.sh} script that is returned by an invocation of " "@command{guix system vm} does not add a @command{-net user} flag by " "default. To get network access from within the vm add the @code{(dhcp-" "client-service)} to your system definition and start the VM using " "@command{`guix system vm config.scm` -net user}. An important caveat of " "using @command{-net user} for networking is that @command{ping} will not " "work, because it uses the ICMP protocol. You'll have to use a different " "command to check for network connectivity, for example @command{guix " "download}." msgstr "" #. type: subsubsection #: doc/guix.texi:22731 #, no-wrap msgid "Connecting Through SSH" msgstr "" #. type: Plain text #: doc/guix.texi:22740 msgid "" "To enable SSH inside a VM you need to add a SSH server like @code{(dropbear-" "service)} or @code{(lsh-service)} to your VM. The @code{(lsh-service}) " "doesn't currently boot unsupervised. It requires you to type some " "characters to initialize the randomness generator. In addition you need to " "forward the SSH port, 22 by default, to the host. You can do this with" msgstr "" #. type: example #: doc/guix.texi:22743 #, no-wrap msgid "`guix system vm config.scm` -net user,hostfwd=tcp::10022-:22\n" msgstr "" #. type: Plain text #: doc/guix.texi:22746 msgid "To connect to the VM you can run" msgstr "" #. type: example #: doc/guix.texi:22749 #, no-wrap msgid "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 10022\n" msgstr "" #. type: Plain text #: doc/guix.texi:22756 msgid "" "The @command{-p} tells @command{ssh} the port you want to connect to. " "@command{-o UserKnownHostsFile=/dev/null} prevents @command{ssh} from " "complaining every time you modify your @command{config.scm} file and the " "@command{-o StrictHostKeyChecking=no} prevents you from having to allow a " "connection to an unknown host every time you connect." msgstr "" #. type: subsubsection #: doc/guix.texi:22757 #, no-wrap msgid "Using @command{virt-viewer} with Spice" msgstr "" #. type: Plain text #: doc/guix.texi:22763 msgid "" "As an alternative to the default @command{qemu} graphical client you can use " "the @command{remote-viewer} from the @command{virt-viewer} package. To " "connect pass the @command{-spice port=5930,disable-ticketing} flag to " "@command{qemu}. See previous section for further information on how to do " "this." msgstr "" #. type: Plain text #: doc/guix.texi:22766 msgid "" "Spice also allows you to do some nice stuff like share your clipboard with " "your VM. To enable that you'll also have to pass the following flags to " "@command{qemu}:" msgstr "" #. type: example #: doc/guix.texi:22772 #, no-wrap msgid "" "-device virtio-serial-pci,id=virtio-serial0,max_ports=16,bus=pci.0,addr=0x5\n" "-chardev spicevmc,name=vdagent,id=vdagent\n" "-device virtserialport,nr=1,bus=virtio-serial0.0,chardev=vdagent,\n" "name=com.redhat.spice.0\n" msgstr "" #. type: Plain text #: doc/guix.texi:22775 msgid "" "You'll also need to add the @pxref{Miscellaneous Services, Spice service}." msgstr "" #. type: Plain text #: doc/guix.texi:22782 msgid "" "The previous sections show the available services and how one can combine " "them in an @code{operating-system} declaration. But how do we define them " "in the first place? And what is a service anyway?" msgstr "" #. type: cindex #: doc/guix.texi:22794 #, no-wrap msgid "daemons" msgstr "" #. type: Plain text #: doc/guix.texi:22807 msgid "" "Here we define a @dfn{service} as, broadly, something that extends the " "functionality of the operating system. Often a service is a process---a " "@dfn{daemon}---started when the system boots: a secure shell server, a Web " "server, the Guix build daemon, etc. Sometimes a service is a daemon whose " "execution can be triggered by another daemon---e.g., an FTP server started " "by @command{inetd} or a D-Bus service activated by @command{dbus-daemon}. " "Occasionally, a service does not map to a daemon. For instance, the " "``account'' service collects user accounts and makes sure they exist when " "the system runs; the ``udev'' service collects device management rules and " "makes them available to the eudev daemon; the @file{/etc} service populates " "the @file{/etc} directory of the system." msgstr "" #. type: cindex #: doc/guix.texi:22808 #, no-wrap msgid "service extensions" msgstr "" #. type: Plain text #: doc/guix.texi:22820 msgid "" "GuixSD services are connected by @dfn{extensions}. For instance, the secure " "shell service @emph{extends} the Shepherd---the GuixSD initialization " "system, running as PID@tie{}1---by giving it the command lines to start and " "stop the secure shell daemon (@pxref{Networking Services, @code{lsh-" "service}}); the UPower service extends the D-Bus service by passing it its " "@file{.service} specification, and extends the udev service by passing it " "device management rules (@pxref{Desktop Services, @code{upower-service}}); " "the Guix daemon service extends the Shepherd by passing it the command lines " "to start and stop the daemon, and extends the account service by passing it " "a list of required build user accounts (@pxref{Base Services})." msgstr "" #. type: Plain text #: doc/guix.texi:22824 msgid "" "All in all, services and their ``extends'' relations form a directed acyclic " "graph (DAG). If we represent services as boxes and extensions as arrows, a " "typical system might provide something like this:" msgstr "" #. type: Plain text #: doc/guix.texi:22826 msgid "@image{images/service-graph,,5in,Typical service extension graph.}" msgstr "" #. type: cindex #: doc/guix.texi:22827 #, no-wrap msgid "system service" msgstr "" #. type: Plain text #: doc/guix.texi:22835 msgid "" "At the bottom, we see the @dfn{system service}, which produces the directory " "containing everything to run and boot the system, as returned by the " "@command{guix system build} command. @xref{Service Reference}, to learn " "about the other service types shown here. @xref{system-extension-graph, the " "@command{guix system extension-graph} command}, for information on how to " "generate this representation for a particular operating system definition." msgstr "" #. type: cindex #: doc/guix.texi:22836 #, no-wrap msgid "service types" msgstr "" #. type: Plain text #: doc/guix.texi:22842 msgid "" "Technically, developers can define @dfn{service types} to express these " "relations. There can be any number of services of a given type on the " "system---for instance, a system running two instances of the GNU secure " "shell server (lsh) has two instances of @var{lsh-service-type}, with " "different parameters." msgstr "" #. type: Plain text #: doc/guix.texi:22845 msgid "" "The following section describes the programming interface for service types " "and services." msgstr "" #. type: Plain text #: doc/guix.texi:22852 msgid "" "A @dfn{service type} is a node in the DAG described above. Let us start " "with a simple example, the service type for the Guix build daemon " "(@pxref{Invoking guix-daemon}):" msgstr "" #. type: example #: doc/guix.texi:22862 #, no-wrap msgid "" "(define guix-service-type\n" " (service-type\n" " (name 'guix)\n" " (extensions\n" " (list (service-extension shepherd-root-service-type guix-shepherd-service)\n" " (service-extension account-service-type guix-accounts)\n" " (service-extension activation-service-type guix-activation)))\n" " (default-value (guix-configuration))))\n" msgstr "" #. type: Plain text #: doc/guix.texi:22866 msgid "It defines three things:" msgstr "" #. type: enumerate #: doc/guix.texi:22870 msgid "A name, whose sole purpose is to make inspection and debugging easier." msgstr "" #. type: enumerate #: doc/guix.texi:22875 msgid "" "A list of @dfn{service extensions}, where each extension designates the " "target service type and a procedure that, given the parameters of the " "service, returns a list of objects to extend the service of that type." msgstr "" #. type: enumerate #: doc/guix.texi:22878 msgid "" "Every service type has at least one service extension. The only exception " "is the @dfn{boot service type}, which is the ultimate service." msgstr "" #. type: enumerate #: doc/guix.texi:22881 msgid "Optionally, a default value for instances of this type." msgstr "" #. type: Plain text #: doc/guix.texi:22884 msgid "In this example, @var{guix-service-type} extends three services:" msgstr "" #. type: item #: doc/guix.texi:22886 #, no-wrap msgid "shepherd-root-service-type" msgstr "" #. type: table #: doc/guix.texi:22891 msgid "" "The @var{guix-shepherd-service} procedure defines how the Shepherd service " "is extended. Namely, it returns a @code{} object that " "defines how @command{guix-daemon} is started and stopped (@pxref{Shepherd " "Services})." msgstr "" #. type: item #: doc/guix.texi:22892 #, no-wrap msgid "account-service-type" msgstr "" #. type: table #: doc/guix.texi:22897 msgid "" "This extension for this service is computed by @var{guix-accounts}, which " "returns a list of @code{user-group} and @code{user-account} objects " "representing the build user accounts (@pxref{Invoking guix-daemon})." msgstr "" #. type: item #: doc/guix.texi:22898 #, no-wrap msgid "activation-service-type" msgstr "" #. type: table #: doc/guix.texi:22902 msgid "" "Here @var{guix-activation} is a procedure that returns a gexp, which is a " "code snippet to run at ``activation time''---e.g., when the service is " "booted." msgstr "" #. type: Plain text #: doc/guix.texi:22905 msgid "A service of this type is instantiated like this:" msgstr "" #. type: example #: doc/guix.texi:22911 #, no-wrap msgid "" "(service guix-service-type\n" " (guix-configuration\n" " (build-accounts 5)\n" " (use-substitutes? #f)))\n" msgstr "" #. type: Plain text #: doc/guix.texi:22919 msgid "" "The second argument to the @code{service} form is a value representing the " "parameters of this specific service instance. @xref{guix-configuration-" "type, @code{guix-configuration}}, for information about the @code{guix-" "configuration} data type. When the value is omitted, the default value " "specified by @code{guix-service-type} is used:" msgstr "" #. type: example #: doc/guix.texi:22922 #, no-wrap msgid "(service guix-service-type)\n" msgstr "" #. type: Plain text #: doc/guix.texi:22926 msgid "" "@var{guix-service-type} is quite simple because it extends other services " "but is not extensible itself." msgstr "" #. type: Plain text #: doc/guix.texi:22930 msgid "The service type for an @emph{extensible} service looks like this:" msgstr "" #. type: example #: doc/guix.texi:22937 #, no-wrap msgid "" "(define udev-service-type\n" " (service-type (name 'udev)\n" " (extensions\n" " (list (service-extension shepherd-root-service-type\n" " udev-shepherd-service)))\n" "\n" msgstr "" #. type: example #: doc/guix.texi:22945 #, no-wrap msgid "" " (compose concatenate) ;concatenate the list of rules\n" " (extend (lambda (config rules)\n" " (match config\n" " (($ udev initial-rules)\n" " (udev-configuration\n" " (udev udev) ;the udev package to use\n" " (rules (append initial-rules rules)))))))))\n" msgstr "" #. type: Plain text #: doc/guix.texi:22951 msgid "" "This is the service type for the @uref{https://wiki.gentoo.org/wiki/Project:" "Eudev, eudev device management daemon}. Compared to the previous example, " "in addition to an extension of @var{shepherd-root-service-type}, we see two " "new fields:" msgstr "" #. type: item #: doc/guix.texi:22953 #, no-wrap msgid "compose" msgstr "" #. type: table #: doc/guix.texi:22956 msgid "" "This is the procedure to @dfn{compose} the list of extensions to services of " "this type." msgstr "" #. type: table #: doc/guix.texi:22959 msgid "" "Services can extend the udev service by passing it lists of rules; we " "compose those extensions simply by concatenating them." msgstr "" #. type: item #: doc/guix.texi:22960 #, no-wrap msgid "extend" msgstr "" #. type: table #: doc/guix.texi:22963 msgid "" "This procedure defines how the value of the service is @dfn{extended} with " "the composition of the extensions." msgstr "" #. type: table #: doc/guix.texi:22968 msgid "" "Udev extensions are composed into a list of rules, but the udev service " "value is itself a @code{} record. So here, we extend " "that record by appending the list of rules it contains to the list of " "contributed rules." msgstr "" #. type: table #: doc/guix.texi:22974 msgid "" "This is a string giving an overview of the service type. The string can " "contain Texinfo markup (@pxref{Overview,,, texinfo, GNU Texinfo}). The " "@command{guix system search} command searches these strings and displays " "them (@pxref{Invoking guix system})." msgstr "" #. type: Plain text #: doc/guix.texi:22979 msgid "" "There can be only one instance of an extensible service type such as " "@var{udev-service-type}. If there were more, the @code{service-extension} " "specifications would be ambiguous." msgstr "" #. type: Plain text #: doc/guix.texi:22982 msgid "" "Still here? The next section provides a reference of the programming " "interface for services." msgstr "" #. type: Plain text #: doc/guix.texi:22990 msgid "" "We have seen an overview of service types (@pxref{Service Types and " "Services}). This section provides a reference on how to manipulate services " "and service types. This interface is provided by the @code{(gnu services)} " "module." msgstr "" #. type: deffn #: doc/guix.texi:22991 #, no-wrap msgid "{Scheme Procedure} service @var{type} [@var{value}]" msgstr "" #. type: deffn #: doc/guix.texi:22995 msgid "" "Return a new service of @var{type}, a @code{} object (see " "below.) @var{value} can be any object; it represents the parameters of this " "particular service instance." msgstr "" #. type: deffn #: doc/guix.texi:22999 msgid "" "When @var{value} is omitted, the default value specified by @var{type} is " "used; if @var{type} does not specify a default value, an error is raised." msgstr "" #. type: deffn #: doc/guix.texi:23001 msgid "For instance, this:" msgstr "" #. type: example #: doc/guix.texi:23004 #, no-wrap msgid "(service openssh-service-type)\n" msgstr "" #. type: deffn #: doc/guix.texi:23008 msgid "is equivalent to this:" msgstr "" #. type: example #: doc/guix.texi:23012 #, no-wrap msgid "" "(service openssh-service-type\n" " (openssh-configuration))\n" msgstr "" #. type: deffn #: doc/guix.texi:23016 msgid "" "In both cases the result is an instance of @code{openssh-service-type} with " "the default configuration." msgstr "" #. type: deffn #: doc/guix.texi:23018 #, no-wrap msgid "{Scheme Procedure} service? @var{obj}" msgstr "" #. type: deffn #: doc/guix.texi:23020 msgid "Return true if @var{obj} is a service." msgstr "" #. type: deffn #: doc/guix.texi:23022 #, no-wrap msgid "{Scheme Procedure} service-kind @var{service}" msgstr "" #. type: deffn #: doc/guix.texi:23024 msgid "" "Return the type of @var{service}---i.e., a @code{} object." msgstr "" #. type: deffn #: doc/guix.texi:23026 #, no-wrap msgid "{Scheme Procedure} service-value @var{service}" msgstr "" #. type: deffn #: doc/guix.texi:23029 msgid "" "Return the value associated with @var{service}. It represents its " "parameters." msgstr "" #. type: Plain text #: doc/guix.texi:23032 msgid "Here is an example of how a service is created and manipulated:" msgstr "" #. type: example #: doc/guix.texi:23041 #, no-wrap msgid "" "(define s\n" " (service nginx-service-type\n" " (nginx-configuration\n" " (nginx nginx)\n" " (log-directory log-directory)\n" " (run-directory run-directory)\n" " (file config-file))))\n" "\n" msgstr "" #. type: example #: doc/guix.texi:23044 #, no-wrap msgid "" "(service? s)\n" "@result{} #t\n" "\n" msgstr "" #. type: example #: doc/guix.texi:23047 #, no-wrap msgid "" "(eq? (service-kind s) nginx-service-type)\n" "@result{} #t\n" msgstr "" #. type: Plain text #: doc/guix.texi:23057 msgid "" "The @code{modify-services} form provides a handy way to change the " "parameters of some of the services of a list such as @var{%base-services} " "(@pxref{Base Services, @code{%base-services}}). It evaluates to a list of " "services. Of course, you could always use standard list combinators such as " "@code{map} and @code{fold} to do that (@pxref{SRFI-1, List Library,, guile, " "GNU Guile Reference Manual}); @code{modify-services} simply provides a more " "concise form for this common pattern." msgstr "" #. type: deffn #: doc/guix.texi:23058 #, no-wrap msgid "{Scheme Syntax} modify-services @var{services} @" msgstr "" #. type: deffn #: doc/guix.texi:23060 msgid "(@var{type} @var{variable} => @var{body}) @dots{}" msgstr "" #. type: deffn #: doc/guix.texi:23063 msgid "" "Modify the services listed in @var{services} according to the given " "clauses. Each clause has the form:" msgstr "" #. type: example #: doc/guix.texi:23066 #, no-wrap msgid "(@var{type} @var{variable} => @var{body})\n" msgstr "" #. type: deffn #: doc/guix.texi:23073 msgid "" "where @var{type} is a service type---e.g., @code{guix-service-type}---and " "@var{variable} is an identifier that is bound within the @var{body} to the " "service parameters---e.g., a @code{guix-configuration} instance---of the " "original service of that @var{type}." msgstr "" #. type: deffn #: doc/guix.texi:23080 msgid "" "The @var{body} should evaluate to the new service parameters, which will be " "used to configure the new service. This new service will replace the " "original in the resulting list. Because a service's service parameters are " "created using @code{define-record-type*}, you can write a succinct " "@var{body} that evaluates to the new service parameters by using the " "@code{inherit} feature that @code{define-record-type*} provides." msgstr "" #. type: deffn #: doc/guix.texi:23082 msgid "@xref{Using the Configuration System}, for example usage." msgstr "" #. type: Plain text #: doc/guix.texi:23089 msgid "" "Next comes the programming interface for service types. This is something " "you want to know when writing new service definitions, but not necessarily " "when simply looking for ways to customize your @code{operating-system} " "declaration." msgstr "" #. type: deftp #: doc/guix.texi:23090 #, no-wrap msgid "{Data Type} service-type" msgstr "" #. type: cindex #: doc/guix.texi:23091 #, no-wrap msgid "service type" msgstr "" #. type: deftp #: doc/guix.texi:23094 msgid "" "This is the representation of a @dfn{service type} (@pxref{Service Types and " "Services})." msgstr "" #. type: table #: doc/guix.texi:23098 msgid "This is a symbol, used only to simplify inspection and debugging." msgstr "" #. type: code{#1} #: doc/guix.texi:23099 #, no-wrap msgid "extensions" msgstr "" #. type: table #: doc/guix.texi:23101 msgid "A non-empty list of @code{} objects (see below)." msgstr "" #. type: item #: doc/guix.texi:23102 #, no-wrap msgid "@code{compose} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:23106 msgid "" "If this is @code{#f}, then the service type denotes services that cannot be " "extended---i.e., services that do not receive ``values'' from other services." msgstr "" #. type: table #: doc/guix.texi:23110 msgid "" "Otherwise, it must be a one-argument procedure. The procedure is called by " "@code{fold-services} and is passed a list of values collected from " "extensions. It may return any single value." msgstr "" #. type: item #: doc/guix.texi:23111 #, no-wrap msgid "@code{extend} (default: @code{#f})" msgstr "" #. type: table #: doc/guix.texi:23113 msgid "If this is @code{#f}, services of this type cannot be extended." msgstr "" #. type: table #: doc/guix.texi:23119 msgid "" "Otherwise, it must be a two-argument procedure: @code{fold-services} calls " "it, passing it the initial value of the service as the first argument and " "the result of applying @code{compose} to the extension values as the second " "argument. It must return a value that is a valid parameter value for the " "service instance." msgstr "" #. type: deftp #: doc/guix.texi:23122 msgid "@xref{Service Types and Services}, for examples." msgstr "" #. type: deffn #: doc/guix.texi:23124 #, no-wrap msgid "{Scheme Procedure} service-extension @var{target-type} @" msgstr "" #. type: deffn #: doc/guix.texi:23130 msgid "" "@var{compute} Return a new extension for services of type @var{target-" "type}. @var{compute} must be a one-argument procedure: @code{fold-services} " "calls it, passing it the value associated with the service that provides the " "extension; it must return a valid value for the target service." msgstr "" #. type: deffn #: doc/guix.texi:23132 #, no-wrap msgid "{Scheme Procedure} service-extension? @var{obj}" msgstr "" #. type: deffn #: doc/guix.texi:23134 msgid "Return true if @var{obj} is a service extension." msgstr "" #. type: Plain text #: doc/guix.texi:23140 msgid "" "Occasionally, you might want to simply extend an existing service. This " "involves creating a new service type and specifying the extension of " "interest, which can be verbose; the @code{simple-service} procedure provides " "a shorthand for this." msgstr "" #. type: deffn #: doc/guix.texi:23141 #, no-wrap msgid "{Scheme Procedure} simple-service @var{name} @var{target} @var{value}" msgstr "" #. type: deffn #: doc/guix.texi:23145 msgid "" "Return a service that extends @var{target} with @var{value}. This works by " "creating a singleton service type @var{name}, of which the returned service " "is an instance." msgstr "" #. type: deffn #: doc/guix.texi:23148 msgid "" "For example, this extends mcron (@pxref{Scheduled Job Execution}) with an " "additional job:" msgstr "" #. type: example #: doc/guix.texi:23152 #, no-wrap msgid "" "(simple-service 'my-mcron-job mcron-service-type\n" " #~(job '(next-hour (3)) \"guix gc -F 2G\"))\n" msgstr "" #. type: Plain text #: doc/guix.texi:23162 msgid "" "At the core of the service abstraction lies the @code{fold-services} " "procedure, which is responsible for ``compiling'' a list of services down to " "a single directory that contains everything needed to boot and run the " "system---the directory shown by the @command{guix system build} command " "(@pxref{Invoking guix system}). In essence, it propagates service " "extensions down the service graph, updating each node parameters on the way, " "until it reaches the root node." msgstr "" #. type: deffn #: doc/guix.texi:23163 #, no-wrap msgid "{Scheme Procedure} fold-services @var{services} @" msgstr "" #. type: deffn #: doc/guix.texi:23167 msgid "" "[#:target-type @var{system-service-type}] Fold @var{services} by propagating " "their extensions down to the root of type @var{target-type}; return the root " "service adjusted accordingly." msgstr "" #. type: Plain text #: doc/guix.texi:23171 msgid "" "Lastly, the @code{(gnu services)} module also defines several essential " "service types, some of which are listed below." msgstr "" #. type: defvr #: doc/guix.texi:23172 #, no-wrap msgid "{Scheme Variable} system-service-type" msgstr "" #. type: defvr #: doc/guix.texi:23175 msgid "" "This is the root of the service graph. It produces the system directory as " "returned by the @command{guix system build} command." msgstr "" #. type: defvr #: doc/guix.texi:23177 #, no-wrap msgid "{Scheme Variable} boot-service-type" msgstr "" #. type: defvr #: doc/guix.texi:23180 msgid "" "The type of the ``boot service'', which produces the @dfn{boot script}. The " "boot script is what the initial RAM disk runs when booting." msgstr "" #. type: defvr #: doc/guix.texi:23182 #, no-wrap msgid "{Scheme Variable} etc-service-type" msgstr "" #. type: defvr #: doc/guix.texi:23186 msgid "" "The type of the @file{/etc} service. This service is used to create files " "under @file{/etc} and can be extended by passing it name/file tuples such as:" msgstr "" #. type: example #: doc/guix.texi:23189 #, no-wrap msgid "(list `(\"issue\" ,(plain-file \"issue\" \"Welcome!\\n\")))\n" msgstr "" #. type: defvr #: doc/guix.texi:23193 msgid "" "In this example, the effect would be to add an @file{/etc/issue} file " "pointing to the given file." msgstr "" #. type: defvr #: doc/guix.texi:23195 #, no-wrap msgid "{Scheme Variable} setuid-program-service-type" msgstr "" #. type: defvr #: doc/guix.texi:23199 msgid "" "Type for the ``setuid-program service''. This service collects lists of " "executable file names, passed as gexps, and adds them to the set of setuid-" "root programs on the system (@pxref{Setuid Programs})." msgstr "" #. type: defvr #: doc/guix.texi:23201 #, no-wrap msgid "{Scheme Variable} profile-service-type" msgstr "" #. type: defvr #: doc/guix.texi:23205 msgid "" "Type of the service that populates the @dfn{system profile}---i.e., the " "programs under @file{/run/current-system/profile}. Other services can " "extend it by passing it lists of packages to add to the system profile." msgstr "" #. type: cindex #: doc/guix.texi:23211 #, no-wrap msgid "shepherd services" msgstr "" #. type: cindex #: doc/guix.texi:23212 #, no-wrap msgid "PID 1" msgstr "" #. type: cindex #: doc/guix.texi:23213 #, no-wrap msgid "init system" msgstr "" #. type: Plain text #: doc/guix.texi:23219 msgid "" "The @code{(gnu services shepherd)} module provides a way to define services " "managed by the GNU@tie{}Shepherd, which is the GuixSD initialization " "system---the first process that is started when the system boots, also known " "as PID@tie{}1 (@pxref{Introduction,,, shepherd, The GNU Shepherd Manual})." msgstr "" #. type: Plain text #: doc/guix.texi:23225 msgid "" "Services in the Shepherd can depend on each other. For instance, the SSH " "daemon may need to be started after the syslog daemon has been started, " "which in turn can only happen once all the file systems have been mounted. " "The simple operating system defined earlier (@pxref{Using the Configuration " "System}) results in a service graph like this:" msgstr "" #. type: Plain text #: doc/guix.texi:23227 msgid "@image{images/shepherd-graph,,5in,Typical shepherd service graph.}" msgstr "" #. type: Plain text #: doc/guix.texi:23231 msgid "" "You can actually generate such a graph for any operating system definition " "using the @command{guix system shepherd-graph} command (@pxref{system-" "shepherd-graph, @command{guix system shepherd-graph}})." msgstr "" #. type: Plain text #: doc/guix.texi:23235 msgid "" "The @var{%shepherd-root-service} is a service object representing PID@tie{}" "1, of type @var{shepherd-root-service-type}; it can be extended by passing " "it lists of @code{} objects." msgstr "" #. type: deftp #: doc/guix.texi:23236 #, no-wrap msgid "{Data Type} shepherd-service" msgstr "" #. type: deftp #: doc/guix.texi:23238 msgid "The data type representing a service managed by the Shepherd." msgstr "" #. type: code{#1} #: doc/guix.texi:23240 #, no-wrap msgid "provision" msgstr "" #. type: table #: doc/guix.texi:23242 msgid "This is a list of symbols denoting what the service provides." msgstr "" #. type: table #: doc/guix.texi:23247 msgid "" "These are the names that may be passed to @command{herd start}, " "@command{herd status}, and similar commands (@pxref{Invoking herd,,, " "shepherd, The GNU Shepherd Manual}). @xref{Slots of services, the " "@code{provides} slot,, shepherd, The GNU Shepherd Manual}, for details." msgstr "" #. type: item #: doc/guix.texi:23248 #, no-wrap msgid "@code{requirements} (default: @code{'()})" msgstr "" #. type: table #: doc/guix.texi:23250 msgid "List of symbols denoting the Shepherd services this one depends on." msgstr "" #. type: item #: doc/guix.texi:23251 #, no-wrap msgid "@code{respawn?} (default: @code{#t})" msgstr "" #. type: table #: doc/guix.texi:23254 msgid "" "Whether to restart the service when it stops, for instance when the " "underlying process dies." msgstr "" #. type: code{#1} #: doc/guix.texi:23255 #, no-wrap msgid "start" msgstr "" #. type: itemx #: doc/guix.texi:23256 #, no-wrap msgid "@code{stop} (default: @code{#~(const #f)})" msgstr "" #. type: table #: doc/guix.texi:23262 msgid "" "The @code{start} and @code{stop} fields refer to the Shepherd's facilities " "to start and stop processes (@pxref{Service De- and Constructors,,, " "shepherd, The GNU Shepherd Manual}). They are given as G-expressions that " "get expanded in the Shepherd configuration file (@pxref{G-Expressions})." msgstr "" #. type: item #: doc/guix.texi:23263 #, no-wrap msgid "@code{actions} (default: @code{'()})" msgstr "" #. type: cindex #: doc/guix.texi:23264 #, no-wrap msgid "actions, of Shepherd services" msgstr "" #. type: table #: doc/guix.texi:23269 msgid "" "This is a list of @code{shepherd-action} objects (see below) defining " "@dfn{actions} supported by the service, in addition to the standard " "@code{start} and @code{stop} actions. Actions listed here become available " "as @command{herd} sub-commands:" msgstr "" #. type: example #: doc/guix.texi:23272 #, no-wrap msgid "herd @var{action} @var{service} [@var{arguments}@dots{}]\n" msgstr "" #. type: table #: doc/guix.texi:23276 msgid "A documentation string, as shown when running:" msgstr "" #. type: example #: doc/guix.texi:23279 #, no-wrap msgid "herd doc @var{service-name}\n" msgstr "" #. type: table #: doc/guix.texi:23283 msgid "" "where @var{service-name} is one of the symbols in @var{provision} " "(@pxref{Invoking herd,,, shepherd, The GNU Shepherd Manual})." msgstr "" #. type: item #: doc/guix.texi:23284 #, no-wrap msgid "@code{modules} (default: @var{%default-modules})" msgstr "" #. type: table #: doc/guix.texi:23287 msgid "" "This is the list of modules that must be in scope when @code{start} and " "@code{stop} are evaluated." msgstr "" #. type: deftp #: doc/guix.texi:23291 #, no-wrap msgid "{Data Type} shepherd-action" msgstr "" #. type: deftp #: doc/guix.texi:23294 msgid "" "This is the data type that defines additional actions implemented by a " "Shepherd service (see above)." msgstr "" #. type: table #: doc/guix.texi:23298 msgid "Symbol naming the action." msgstr "" #. type: table #: doc/guix.texi:23301 msgid "" "This is a documentation string for the action. It can be viewed by running:" msgstr "" #. type: example #: doc/guix.texi:23304 #, no-wrap msgid "herd doc @var{service} action @var{action}\n" msgstr "" #. type: item #: doc/guix.texi:23306 #, no-wrap msgid "procedure" msgstr "" #. type: table #: doc/guix.texi:23310 msgid "" "This should be a gexp that evaluates to a procedure of at least one " "argument, which is the ``running value'' of the service (@pxref{Slots of " "services,,, shepherd, The GNU Shepherd Manual})." msgstr "" #. type: deftp #: doc/guix.texi:23314 msgid "" "The following example defines an action called @code{say-hello} that kindly " "greets the user:" msgstr "" #. type: example #: doc/guix.texi:23323 #, no-wrap msgid "" "(shepherd-action\n" " (name 'say-hello)\n" " (documentation \"Say hi!\")\n" " (procedure #~(lambda (running . args)\n" " (format #t \"Hello, friend! arguments: ~s\\n\"\n" " args)\n" " #t)))\n" msgstr "" #. type: deftp #: doc/guix.texi:23326 msgid "" "Assuming this action is added to the @code{example} service, then you can do:" msgstr "" #. type: example #: doc/guix.texi:23332 #, no-wrap msgid "" "# herd say-hello example\n" "Hello, friend! arguments: ()\n" "# herd say-hello example a b c\n" "Hello, friend! arguments: (\"a\" \"b\" \"c\")\n" msgstr "" #. type: deftp #: doc/guix.texi:23337 msgid "" "This, as you can see, is a fairly sophisticated way to say hello. " "@xref{Service Convenience,,, shepherd, The GNU Shepherd Manual}, for more " "info on actions." msgstr "" #. type: defvr #: doc/guix.texi:23339 #, no-wrap msgid "{Scheme Variable} shepherd-root-service-type" msgstr "" #. type: defvr #: doc/guix.texi:23341 msgid "The service type for the Shepherd ``root service''---i.e., PID@tie{}1." msgstr "" #. type: defvr #: doc/guix.texi:23345 msgid "" "This is the service type that extensions target when they want to create " "shepherd services (@pxref{Service Types and Services}, for an example). " "Each extension must pass a list of @code{}." msgstr "" #. type: defvr #: doc/guix.texi:23347 #, no-wrap msgid "{Scheme Variable} %shepherd-root-service" msgstr "" #. type: defvr #: doc/guix.texi:23349 msgid "This service represents PID@tie{}1." msgstr "" #. type: cindex #: doc/guix.texi:23355 #, no-wrap msgid "documentation, searching for" msgstr "" #. type: cindex #: doc/guix.texi:23356 #, no-wrap msgid "searching for documentation" msgstr "" #. type: cindex #: doc/guix.texi:23357 #, no-wrap msgid "Info, documentation format" msgstr "" #. type: cindex #: doc/guix.texi:23358 #, no-wrap msgid "man pages" msgstr "" #. type: cindex #: doc/guix.texi:23359 #, no-wrap msgid "manual pages" msgstr "" #. type: Plain text #: doc/guix.texi:23366 msgid "" "In most cases packages installed with Guix come with documentation. There " "are two main documentation formats: ``Info'', a browseable hypertext format " "used for GNU software, and ``manual pages'' (or ``man pages''), the linear " "documentation format traditionally found on Unix. Info manuals are accessed " "with the @command{info} command or with Emacs, and man pages are accessed " "using @command{man}." msgstr "" #. type: Plain text #: doc/guix.texi:23370 msgid "" "You can look for documentation of software installed on your system by " "keyword. For example, the following command searches for information about " "``TLS'' in Info manuals:" msgstr "" #. type: example #: doc/guix.texi:23378 #, no-wrap msgid "" "$ info -k TLS\n" "\"(emacs)Network Security\" -- STARTTLS\n" "\"(emacs)Network Security\" -- TLS\n" "\"(gnutls)Core TLS API\" -- gnutls_certificate_set_verify_flags\n" "\"(gnutls)Core TLS API\" -- gnutls_certificate_set_verify_function\n" "@dots{}\n" msgstr "" #. type: Plain text #: doc/guix.texi:23382 msgid "The command below searches for the same keyword in man pages:" msgstr "" #. type: example #: doc/guix.texi:23388 #, no-wrap msgid "" "$ man -k TLS\n" "SSL (7) - OpenSSL SSL/TLS library\n" "certtool (1) - GnuTLS certificate tool\n" "@dots {}\n" msgstr "" #. type: Plain text #: doc/guix.texi:23394 msgid "" "These searches are purely local to your computer so you have the guarantee " "that documentation you find corresponds to what you have actually installed, " "you can access it off-line, and your privacy is respected." msgstr "" #. type: Plain text #: doc/guix.texi:23397 msgid "" "Once you have these results, you can view the relevant documentation by " "running, say:" msgstr "" #. type: example #: doc/guix.texi:23400 #, no-wrap msgid "$ info \"(gnutls)Core TLS API\"\n" msgstr "" #. type: Plain text #: doc/guix.texi:23404 msgid "or:" msgstr "" #. type: example #: doc/guix.texi:23407 #, no-wrap msgid "$ man certtool\n" msgstr "" #. type: Plain text #: doc/guix.texi:23415 msgid "" "Info manuals contain sections and indices as well as hyperlinks like those " "found in Web pages. The @command{info} reader (@pxref{Top, Info reader,, " "info-stnd, Stand-alone GNU Info}) and its Emacs counterpart (@pxref{Misc " "Help,,, emacs, The GNU Emacs Manual}) provide intuitive key bindings to " "navigate manuals. @xref{Getting Started,,, info, Info: An Introduction}, " "for an introduction to Info navigation." msgstr "" #. type: cindex #: doc/guix.texi:23419 #, no-wrap msgid "debugging files" msgstr "" #. type: Plain text #: doc/guix.texi:23425 msgid "" "Program binaries, as produced by the GCC compilers for instance, are " "typically written in the ELF format, with a section containing " "@dfn{debugging information}. Debugging information is what allows the " "debugger, GDB, to map binary code to source code; it is required to debug a " "compiled program in good conditions." msgstr "" #. type: Plain text #: doc/guix.texi:23433 msgid "" "The problem with debugging information is that is takes up a fair amount of " "disk space. For example, debugging information for the GNU C Library weighs " "in at more than 60 MiB. Thus, as a user, keeping all the debugging info of " "all the installed programs is usually not an option. Yet, space savings " "should not come at the cost of an impediment to debugging---especially in " "the GNU system, which should make it easier for users to exert their " "computing freedom (@pxref{GNU Distribution})." msgstr "" #. type: Plain text #: doc/guix.texi:23440 msgid "" "Thankfully, the GNU Binary Utilities (Binutils) and GDB provide a mechanism " "that allows users to get the best of both worlds: debugging information can " "be stripped from the binaries and stored in separate files. GDB is then " "able to load debugging information from those files, when they are available " "(@pxref{Separate Debug Files,,, gdb, Debugging with GDB})." msgstr "" #. type: Plain text #: doc/guix.texi:23448 msgid "" "The GNU distribution takes advantage of this by storing debugging " "information in the @code{lib/debug} sub-directory of a separate package " "output unimaginatively called @code{debug} (@pxref{Packages with Multiple " "Outputs}). Users can choose to install the @code{debug} output of a package " "when they need it. For instance, the following command installs the " "debugging information for the GNU C Library and for GNU Guile:" msgstr "" #. type: example #: doc/guix.texi:23451 #, no-wrap msgid "guix package -i glibc:debug guile:debug\n" msgstr "" #. type: Plain text #: doc/guix.texi:23457 msgid "" "GDB must then be told to look for debug files in the user's profile, by " "setting the @code{debug-file-directory} variable (consider setting it from " "the @file{~/.gdbinit} file, @pxref{Startup,,, gdb, Debugging with GDB}):" msgstr "" #. type: example #: doc/guix.texi:23460 #, no-wrap msgid "(gdb) set debug-file-directory ~/.guix-profile/lib/debug\n" msgstr "" #. type: Plain text #: doc/guix.texi:23464 msgid "" "From there on, GDB will pick up debugging information from the @code{.debug} " "files under @file{~/.guix-profile/lib/debug}." msgstr "" #. type: Plain text #: doc/guix.texi:23471 msgid "" "In addition, you will most likely want GDB to be able to show the source " "code being debugged. To do that, you will have to unpack the source code of " "the package of interest (obtained with @code{guix build --source}, " "@pxref{Invoking guix build}), and to point GDB to that source directory " "using the @code{directory} command (@pxref{Source Path, @code{directory},, " "gdb, Debugging with GDB})." msgstr "" #. type: Plain text #: doc/guix.texi:23480 msgid "" "The @code{debug} output mechanism in Guix is implemented by the @code{gnu-" "build-system} (@pxref{Build Systems}). Currently, it is opt-in---debugging " "information is available only for the packages with definitions explicitly " "declaring a @code{debug} output. This may be changed to opt-out in the " "future if our build farm servers can handle the load. To check whether a " "package has a @code{debug} output, use @command{guix package --list-" "available} (@pxref{Invoking guix package})." msgstr "" #. type: cindex #: doc/guix.texi:23485 #, no-wrap msgid "security updates" msgstr "" #. type: Plain text #: doc/guix.texi:23494 msgid "" "Occasionally, important security vulnerabilities are discovered in software " "packages and must be patched. Guix developers try hard to keep track of " "known vulnerabilities and to apply fixes as soon as possible in the " "@code{master} branch of Guix (we do not yet provide a ``stable'' branch " "containing only security updates.) The @command{guix lint} tool helps " "developers find out about vulnerable versions of software packages in the " "distribution:" msgstr "" #. type: smallexample #: doc/guix.texi:23501 #, no-wrap msgid "" "$ guix lint -c cve\n" "gnu/packages/base.scm:652:2: glibc@@2.21: probably vulnerable to CVE-2015-1781, CVE-2015-7547\n" "gnu/packages/gcc.scm:334:2: gcc@@4.9.3: probably vulnerable to CVE-2015-5276\n" "gnu/packages/image.scm:312:2: openjpeg@@2.1.0: probably vulnerable to CVE-2016-1923, CVE-2016-1924\n" "@dots{}\n" msgstr "" #. type: Plain text #: doc/guix.texi:23504 msgid "@xref{Invoking guix lint}, for more information." msgstr "" #. type: quotation #: doc/guix.texi:23508 msgid "" "As of version @value{VERSION}, the feature described below is considered " "``beta''." msgstr "" #. type: Plain text #: doc/guix.texi:23518 msgid "" "Guix follows a functional package management discipline " "(@pxref{Introduction}), which implies that, when a package is changed, " "@emph{every package that depends on it} must be rebuilt. This can " "significantly slow down the deployment of fixes in core packages such as " "libc or Bash, since basically the whole distribution would need to be " "rebuilt. Using pre-built binaries helps (@pxref{Substitutes}), but " "deployment may still take more time than desired." msgstr "" #. type: cindex #: doc/guix.texi:23519 #, no-wrap msgid "grafts" msgstr "" #. type: Plain text #: doc/guix.texi:23527 msgid "" "To address this, Guix implements @dfn{grafts}, a mechanism that allows for " "fast deployment of critical updates without the costs associated with a " "whole-distribution rebuild. The idea is to rebuild only the package that " "needs to be patched, and then to ``graft'' it onto packages explicitly " "installed by the user and that were previously referring to the original " "package. The cost of grafting is typically very low, and order of " "magnitudes lower than a full rebuild of the dependency chain." msgstr "" #. type: cindex #: doc/guix.texi:23528 #, no-wrap msgid "replacements of packages, for grafts" msgstr "" #. type: Plain text #: doc/guix.texi:23534 msgid "" "For instance, suppose a security update needs to be applied to Bash. Guix " "developers will provide a package definition for the ``fixed'' Bash, say " "@var{bash-fixed}, in the usual way (@pxref{Defining Packages}). Then, the " "original package definition is augmented with a @code{replacement} field " "pointing to the package containing the bug fix:" msgstr "" #. type: example #: doc/guix.texi:23541 #, no-wrap msgid "" "(define bash\n" " (package\n" " (name \"bash\")\n" " ;; @dots{}\n" " (replacement bash-fixed)))\n" msgstr "" #. type: Plain text #: doc/guix.texi:23551 msgid "" "From there on, any package depending directly or indirectly on Bash---as " "reported by @command{guix gc --requisites} (@pxref{Invoking guix gc})---that " "is installed is automatically ``rewritten'' to refer to @var{bash-fixed} " "instead of @var{bash}. This grafting process takes time proportional to the " "size of the package, usually less than a minute for an ``average'' package " "on a recent machine. Grafting is recursive: when an indirect dependency " "requires grafting, then grafting ``propagates'' up to the package that the " "user is installing." msgstr "" #. type: Plain text #: doc/guix.texi:23559 msgid "" "Currently, the length of the name and version of the graft and that of the " "package it replaces (@var{bash-fixed} and @var{bash} in the example above) " "must be equal. This restriction mostly comes from the fact that grafting " "works by patching files, including binary files, directly. Other " "restrictions may apply: for instance, when adding a graft to a package " "providing a shared library, the original shared library and its replacement " "must have the same @code{SONAME} and be binary-compatible." msgstr "" #. type: Plain text #: doc/guix.texi:23563 msgid "" "The @option{--no-grafts} command-line option allows you to forcefully avoid " "grafting (@pxref{Common Build Options, @option{--no-grafts}}). Thus, the " "command:" msgstr "" #. type: example #: doc/guix.texi:23566 #, no-wrap msgid "guix build bash --no-grafts\n" msgstr "" #. type: Plain text #: doc/guix.texi:23570 msgid "returns the store file name of the original Bash, whereas:" msgstr "" #. type: example #: doc/guix.texi:23573 #, no-wrap msgid "guix build bash\n" msgstr "" #. type: Plain text #: doc/guix.texi:23578 msgid "" "returns the store file name of the ``fixed'', replacement Bash. This allows " "you to distinguish between the two variants of Bash." msgstr "" #. type: Plain text #: doc/guix.texi:23581 msgid "" "To verify which Bash your whole profile refers to, you can run " "(@pxref{Invoking guix gc}):" msgstr "" #. type: example #: doc/guix.texi:23584 #, no-wrap msgid "guix gc -R `readlink -f ~/.guix-profile` | grep bash\n" msgstr "" #. type: Plain text #: doc/guix.texi:23589 msgid "" "@dots{} and compare the store file names that you get with those above. " "Likewise for a complete GuixSD system generation:" msgstr "" #. type: example #: doc/guix.texi:23592 #, no-wrap msgid "guix gc -R `guix system build my-config.scm` | grep bash\n" msgstr "" #. type: Plain text #: doc/guix.texi:23596 msgid "" "Lastly, to check which Bash running processes are using, you can use the " "@command{lsof} command:" msgstr "" #. type: example #: doc/guix.texi:23599 #, no-wrap msgid "lsof | grep /gnu/store/.*bash\n" msgstr "" #. type: Plain text #: doc/guix.texi:23616 msgid "" "From a programming viewpoint, the package definitions of the GNU " "distribution are provided by Guile modules in the @code{(gnu packages " "@dots{})} name space@footnote{Note that packages under the @code{(gnu " "packages @dots{})} module name space are not necessarily ``GNU packages''. " "This module naming scheme follows the usual Guile module naming convention: " "@code{gnu} means that these modules are distributed as part of the GNU " "system, and @code{packages} identifies modules that define packages.} " "(@pxref{Modules, Guile modules,, guile, GNU Guile Reference Manual}). For " "instance, the @code{(gnu packages emacs)} module exports a variable named " "@code{emacs}, which is bound to a @code{} object (@pxref{Defining " "Packages})." msgstr "" #. type: Plain text #: doc/guix.texi:23623 msgid "" "The @code{(gnu packages @dots{})} module name space is automatically scanned " "for packages by the command-line tools. For instance, when running " "@code{guix package -i emacs}, all the @code{(gnu packages @dots{})} modules " "are scanned until one that exports a package object whose name is " "@code{emacs} is found. This package search facility is implemented in the " "@code{(gnu packages)} module." msgstr "" #. type: cindex #: doc/guix.texi:23625 #, no-wrap msgid "package module search path" msgstr "" #. type: Plain text #: doc/guix.texi:23634 msgid "" "Users can store package definitions in modules with different names---e.g., " "@code{(my-packages emacs)}@footnote{Note that the file name and module name " "must match. For instance, the @code{(my-packages emacs)} module must be " "stored in a @file{my-packages/emacs.scm} file relative to the load path " "specified with @option{--load-path} or @code{GUIX_PACKAGE_PATH}. " "@xref{Modules and the File System,,, guile, GNU Guile Reference Manual}, for " "details.}. There are two ways to make these package definitions visible to " "the user interfaces:" msgstr "" #. type: enumerate #: doc/guix.texi:23641 msgid "" "By adding the directory containing your package modules to the search path " "with the @code{-L} flag of @command{guix package} and other commands " "(@pxref{Common Build Options}), or by setting the @code{GUIX_PACKAGE_PATH} " "environment variable described below." msgstr "" #. type: enumerate #: doc/guix.texi:23647 msgid "" "By defining a @dfn{channel} and configuring @command{guix pull} so that it " "pulls from it. A channel is essentially a Git repository containing package " "modules. @xref{Channels}, for more information on how to define and use " "channels." msgstr "" #. type: Plain text #: doc/guix.texi:23650 msgid "" "@code{GUIX_PACKAGE_PATH} works similarly to other search path variables:" msgstr "" #. type: defvr #: doc/guix.texi:23651 #, no-wrap msgid "{Environment Variable} GUIX_PACKAGE_PATH" msgstr "" #. type: defvr #: doc/guix.texi:23655 msgid "" "This is a colon-separated list of directories to search for additional " "package modules. Directories listed in this variable take precedence over " "the own modules of the distribution." msgstr "" #. type: Plain text #: doc/guix.texi:23663 msgid "" "The distribution is fully @dfn{bootstrapped} and @dfn{self-contained}: each " "package is built based solely on other packages in the distribution. The " "root of this dependency graph is a small set of @dfn{bootstrap binaries}, " "provided by the @code{(gnu packages bootstrap)} module. For more " "information on bootstrapping, @pxref{Bootstrapping}." msgstr "" #. type: cindex #: doc/guix.texi:23667 #, no-wrap msgid "packages, creating" msgstr "" #. type: Plain text #: doc/guix.texi:23672 msgid "" "The GNU distribution is nascent and may well lack some of your favorite " "packages. This section describes how you can help make the distribution " "grow. @xref{Contributing}, for additional information on how you can help." msgstr "" #. type: Plain text #: doc/guix.texi:23680 msgid "" "Free software packages are usually distributed in the form of @dfn{source " "code tarballs}---typically @file{tar.gz} files that contain all the source " "files. Adding a package to the distribution means essentially two things: " "adding a @dfn{recipe} that describes how to build the package, including a " "list of other packages required to build it, and adding @dfn{package " "metadata} along with that recipe, such as a description and licensing " "information." msgstr "" #. type: Plain text #: doc/guix.texi:23689 msgid "" "In Guix all this information is embodied in @dfn{package definitions}. " "Package definitions provide a high-level view of the package. They are " "written using the syntax of the Scheme programming language; in fact, for " "each package we define a variable bound to the package definition, and " "export that variable from a module (@pxref{Package Modules}). However, in-" "depth Scheme knowledge is @emph{not} a prerequisite for creating packages. " "For more information on package definitions, @pxref{Defining Packages}." msgstr "" #. type: Plain text #: doc/guix.texi:23695 msgid "" "Once a package definition is in place, stored in a file in the Guix source " "tree, it can be tested using the @command{guix build} command " "(@pxref{Invoking guix build}). For example, assuming the new package is " "called @code{gnew}, you may run this command from the Guix build tree " "(@pxref{Running Guix Before It Is Installed}):" msgstr "" #. type: example #: doc/guix.texi:23698 #, no-wrap msgid "./pre-inst-env guix build gnew --keep-failed\n" msgstr "" #. type: Plain text #: doc/guix.texi:23704 msgid "" "Using @code{--keep-failed} makes it easier to debug build failures since it " "provides access to the failed build tree. Another useful command-line " "option when debugging is @code{--log-file}, to access the build log." msgstr "" #. type: Plain text #: doc/guix.texi:23709 msgid "" "If the package is unknown to the @command{guix} command, it may be that the " "source file contains a syntax error, or lacks a @code{define-public} clause " "to export the package variable. To figure it out, you may load the module " "from Guile to get more information about the actual error:" msgstr "" #. type: example #: doc/guix.texi:23712 #, no-wrap msgid "./pre-inst-env guile -c '(use-modules (gnu packages gnew))'\n" msgstr "" #. type: Plain text #: doc/guix.texi:23720 msgid "" "Once your package builds correctly, please send us a patch " "(@pxref{Contributing}). Well, if you need help, we will be happy to help " "you too. Once the patch is committed in the Guix repository, the new " "package automatically gets built on the supported platforms by @url{http://" "hydra.gnu.org/jobset/gnu/master, our continuous integration system}." msgstr "" #. type: cindex #: doc/guix.texi:23721 #, no-wrap msgid "substituter" msgstr "" #. type: Plain text #: doc/guix.texi:23728 msgid "" "Users can obtain the new package definition simply by running @command{guix " "pull} (@pxref{Invoking guix pull}). When @code{hydra.gnu.org} is done " "building the package, installing the package automatically downloads " "binaries from there (@pxref{Substitutes}). The only place where human " "intervention is needed is to review and apply the patch." msgstr "" #. type: cindex #: doc/guix.texi:23745 #, no-wrap msgid "free software" msgstr "" #. type: Plain text #: doc/guix.texi:23753 msgid "" "The GNU operating system has been developed so that users can have freedom " "in their computing. GNU is @dfn{free software}, meaning that users have the " "@url{http://www.gnu.org/philosophy/free-sw.html,four essential freedoms}: to " "run the program, to study and change the program in source code form, to " "redistribute exact copies, and to distribute modified versions. Packages " "found in the GNU distribution provide only software that conveys these four " "freedoms." msgstr "" #. type: Plain text #: doc/guix.texi:23759 msgid "" "In addition, the GNU distribution follow the @url{http://www.gnu.org/distros/" "free-system-distribution-guidelines.html,free software distribution " "guidelines}. Among other things, these guidelines reject non-free firmware, " "recommendations of non-free software, and discuss ways to deal with " "trademarks and patents." msgstr "" #. type: Plain text #: doc/guix.texi:23767 msgid "" "Some otherwise free upstream package sources contain a small and optional " "subset that violates the above guidelines, for instance because this subset " "is itself non-free code. When that happens, the offending items are removed " "with appropriate patches or code snippets in the @code{origin} form of the " "package (@pxref{Defining Packages}). This way, @code{guix build --source} " "returns the ``freed'' source rather than the unmodified upstream source." msgstr "" #. type: cindex #: doc/guix.texi:23772 #, no-wrap msgid "package name" msgstr "" #. type: Plain text #: doc/guix.texi:23780 msgid "" "A package has actually two names associated with it: First, there is the " "name of the @emph{Scheme variable}, the one following @code{define-public}. " "By this name, the package can be made known in the Scheme code, for instance " "as input to another package. Second, there is the string in the @code{name} " "field of a package definition. This name is used by package management " "commands such as @command{guix package} and @command{guix build}." msgstr "" #. type: Plain text #: doc/guix.texi:23785 msgid "" "Both are usually the same and correspond to the lowercase conversion of the " "project name chosen upstream, with underscores replaced with hyphens. For " "instance, GNUnet is available as @code{gnunet}, and SDL_net as @code{sdl-" "net}." msgstr "" #. type: Plain text #: doc/guix.texi:23790 msgid "" "We do not add @code{lib} prefixes for library packages, unless these are " "already part of the official project name. But @pxref{Python Modules} and " "@ref{Perl Modules} for special rules concerning modules for the Python and " "Perl languages." msgstr "" #. type: Plain text #: doc/guix.texi:23792 msgid "Font package names are handled differently, @pxref{Fonts}." msgstr "" #. type: cindex #: doc/guix.texi:23797 #, no-wrap msgid "package version" msgstr "" #. type: Plain text #: doc/guix.texi:23806 msgid "" "We usually package only the latest version of a given free software " "project. But sometimes, for instance for incompatible library versions, two " "(or more) versions of the same package are needed. These require different " "Scheme variable names. We use the name as defined in @ref{Package Naming} " "for the most recent version; previous versions use the same name, suffixed " "by @code{-} and the smallest prefix of the version number that may " "distinguish the two versions." msgstr "" #. type: Plain text #: doc/guix.texi:23809 msgid "" "The name inside the package definition is the same for all versions of a " "package and does not contain any version number." msgstr "" #. type: Plain text #: doc/guix.texi:23811 msgid "" "For instance, the versions 2.24.20 and 3.9.12 of GTK+ may be packaged as " "follows:" msgstr "" #. type: example #: doc/guix.texi:23823 #, no-wrap msgid "" "(define-public gtk+\n" " (package\n" " (name \"gtk+\")\n" " (version \"3.9.12\")\n" " ...))\n" "(define-public gtk+-2\n" " (package\n" " (name \"gtk+\")\n" " (version \"2.24.20\")\n" " ...))\n" msgstr "" #. type: Plain text #: doc/guix.texi:23825 msgid "If we also wanted GTK+ 3.8.2, this would be packaged as" msgstr "" #. type: example #: doc/guix.texi:23831 #, no-wrap msgid "" "(define-public gtk+-3.8\n" " (package\n" " (name \"gtk+\")\n" " (version \"3.8.2\")\n" " ...))\n" msgstr "" #. type: cindex #: doc/guix.texi:23835 #, no-wrap msgid "version number, for VCS snapshots" msgstr "" #. type: Plain text #: doc/guix.texi:23841 msgid "" "Occasionally, we package snapshots of upstream's version control system " "(VCS) instead of formal releases. This should remain exceptional, because " "it is up to upstream developers to clarify what the stable release is. Yet, " "it is sometimes necessary. So, what should we put in the @code{version} " "field?" msgstr "" #. type: Plain text #: doc/guix.texi:23849 msgid "" "Clearly, we need to make the commit identifier of the VCS snapshot visible " "in the version string, but we also need to make sure that the version string " "is monotonically increasing so that @command{guix package --upgrade} can " "determine which version is newer. Since commit identifiers, notably with " "Git, are not monotonically increasing, we add a revision number that we " "increase each time we upgrade to a newer snapshot. The resulting version " "string looks like this:" msgstr "" #. type: example #: doc/guix.texi:23858 #, no-wrap msgid "" "2.0.11-3.cabba9e\n" " ^ ^ ^\n" " | | `-- upstream commit ID\n" " | |\n" " | `--- Guix package revision\n" " |\n" "latest upstream version\n" msgstr "" #. type: Plain text #: doc/guix.texi:23867 msgid "" "It is a good idea to strip commit identifiers in the @code{version} field " "to, say, 7 digits. It avoids an aesthetic annoyance (assuming aesthetics " "have a role to play here) as well as problems related to OS limits such as " "the maximum shebang length (127 bytes for the Linux kernel.) It is best to " "use the full commit identifiers in @code{origin}s, though, to avoid " "ambiguities. A typical package definition may look like this:" msgstr "" #. type: example #: doc/guix.texi:23883 #, no-wrap msgid "" "(define my-package\n" " (let ((commit \"c3f29bc928d5900971f65965feaae59e1272a3f7\")\n" " (revision \"1\")) ;Guix package revision\n" " (package\n" " (version (git-version \"0.9\" revision commit))\n" " (source (origin\n" " (method git-fetch)\n" " (uri (git-reference\n" " (url \"git://example.org/my-package.git\")\n" " (commit commit)))\n" " (sha256 (base32 \"1mbikn@dots{}\"))\n" " (file-name (git-file-name name version))))\n" " ;; @dots{}\n" " )))\n" msgstr "" #. type: cindex #: doc/guix.texi:23888 #, no-wrap msgid "package description" msgstr "" #. type: cindex #: doc/guix.texi:23889 #, no-wrap msgid "package synopsis" msgstr "" #. type: Plain text #: doc/guix.texi:23896 msgid "" "As we have seen before, each package in GNU@tie{}Guix includes a synopsis " "and a description (@pxref{Defining Packages}). Synopses and descriptions " "are important: They are what @command{guix package --search} searches, and a " "crucial piece of information to help users determine whether a given package " "suits their needs. Consequently, packagers should pay attention to what " "goes into them." msgstr "" #. type: Plain text #: doc/guix.texi:23904 msgid "" "Synopses must start with a capital letter and must not end with a period. " "They must not start with ``a'' or ``the'', which usually does not bring " "anything; for instance, prefer ``File-frobbing tool'' over ``A tool that " "frobs files''. The synopsis should say what the package is---e.g., ``Core " "GNU utilities (file, text, shell)''---or what it is used for---e.g., the " "synopsis for GNU@tie{}grep is ``Print lines matching a pattern''." msgstr "" #. type: Plain text #: doc/guix.texi:23914 msgid "" "Keep in mind that the synopsis must be meaningful for a very wide audience. " "For example, ``Manipulate alignments in the SAM format'' might make sense " "for a seasoned bioinformatics researcher, but might be fairly unhelpful or " "even misleading to a non-specialized audience. It is a good idea to come up " "with a synopsis that gives an idea of the application domain of the " "package. In this example, this might give something like ``Manipulate " "nucleotide sequence alignments'', which hopefully gives the user a better " "idea of whether this is what they are looking for." msgstr "" #. type: Plain text #: doc/guix.texi:23922 msgid "" "Descriptions should take between five and ten lines. Use full sentences, " "and avoid using acronyms without first introducing them. Please avoid " "marketing phrases such as ``world-leading'', ``industrial-strength'', and " "``next-generation'', and avoid superlatives like ``the most advanced''---" "they are not helpful to users looking for a package and may even sound " "suspicious. Instead, try to be factual, mentioning use cases and features." msgstr "" #. type: cindex #: doc/guix.texi:23923 #, no-wrap msgid "Texinfo markup, in package descriptions" msgstr "" #. type: Plain text #: doc/guix.texi:23932 msgid "" "Descriptions can include Texinfo markup, which is useful to introduce " "ornaments such as @code{@@code} or @code{@@dfn}, bullet lists, or hyperlinks " "(@pxref{Overview,,, texinfo, GNU Texinfo}). However you should be careful " "when using some characters for example @samp{@@} and curly braces which are " "the basic special characters in Texinfo (@pxref{Special Characters,,, " "texinfo, GNU Texinfo}). User interfaces such as @command{guix package --" "show} take care of rendering it appropriately." msgstr "" #. type: Plain text #: doc/guix.texi:23938 msgid "" "Synopses and descriptions are translated by volunteers @uref{http://" "translationproject.org/domain/guix-packages.html, at the Translation " "Project} so that as many users as possible can read them in their native " "language. User interfaces search them and display them in the language " "specified by the current locale." msgstr "" #. type: Plain text #: doc/guix.texi:23943 msgid "" "To allow @command{xgettext} to extract them as translatable strings, " "synopses and descriptions @emph{must be literal strings}. This means that " "you cannot use @code{string-append} or @code{format} to construct these " "strings:" msgstr "" #. type: lisp #: doc/guix.texi:23949 #, no-wrap msgid "" "(package\n" " ;; @dots{}\n" " (synopsis \"This is translatable\")\n" " (description (string-append \"This is \" \"*not*\" \" translatable.\")))\n" msgstr "" #. type: Plain text #: doc/guix.texi:23957 msgid "" "Translation is a lot of work so, as a packager, please pay even more " "attention to your synopses and descriptions as every change may entail " "additional work for translators. In order to help them, it is possible to " "make recommendations or instructions visible to them by inserting special " "comments like this (@pxref{xgettext Invocation,,, gettext, GNU Gettext}):" msgstr "" #. type: example #: doc/guix.texi:23962 #, no-wrap msgid "" ";; TRANSLATORS: \"X11 resize-and-rotate\" should not be translated.\n" "(description \"ARandR is designed to provide a simple visual front end\n" "for the X11 resize-and-rotate (RandR) extension. @dots{}\")\n" msgstr "" #. type: cindex #: doc/guix.texi:23968 #, no-wrap msgid "python" msgstr "" #. type: Plain text #: doc/guix.texi:23974 msgid "" "We currently package Python 2 and Python 3, under the Scheme variable names " "@code{python-2} and @code{python} as explained in @ref{Version Numbers}. To " "avoid confusion and naming clashes with other programming languages, it " "seems desirable that the name of a package for a Python module contains the " "word @code{python}." msgstr "" #. type: Plain text #: doc/guix.texi:23980 msgid "" "Some modules are compatible with only one version of Python, others with " "both. If the package Foo compiles only with Python 3, we name it " "@code{python-foo}; if it compiles only with Python 2, we name it " "@code{python2-foo}. If it is compatible with both versions, we create two " "packages with the corresponding names." msgstr "" #. type: Plain text #: doc/guix.texi:23986 msgid "" "If a project already contains the word @code{python}, we drop this; for " "instance, the module python-dateutil is packaged under the names " "@code{python-dateutil} and @code{python2-dateutil}. If the project name " "starts with @code{py} (e.g. @code{pytz}), we keep it and prefix it as " "described above." msgstr "" #. type: subsubsection #: doc/guix.texi:23987 #, no-wrap msgid "Specifying Dependencies" msgstr "" #. type: cindex #: doc/guix.texi:23988 #, no-wrap msgid "inputs, for Python packages" msgstr "" #. type: Plain text #: doc/guix.texi:23993 msgid "" "Dependency information for Python packages is usually available in the " "package source tree, with varying degrees of accuracy: in the @file{setup." "py} file, in @file{requirements.txt}, or in @file{tox.ini}." msgstr "" #. type: Plain text #: doc/guix.texi:23999 msgid "" "Your mission, when writing a recipe for a Python package, is to map these " "dependencies to the appropriate type of ``input'' (@pxref{package Reference, " "inputs}). Although the @code{pypi} importer normally does a good job " "(@pxref{Invoking guix import}), you may want to check the following check " "list to determine which dependency goes where." msgstr "" #. type: itemize #: doc/guix.texi:24007 msgid "" "We currently package Python 2 with @code{setuptools} and @code{pip} " "installed like Python 3.4 has per default. Thus you don't need to specify " "either of these as an input. @command{guix lint} will warn you if you do." msgstr "" #. type: itemize #: doc/guix.texi:24013 msgid "" "Python dependencies required at run time go into @code{propagated-inputs}. " "They are typically defined with the @code{install_requires} keyword in " "@file{setup.py}, or in the @file{requirements.txt} file." msgstr "" #. type: itemize #: doc/guix.texi:24021 msgid "" "Python packages required only at build time---e.g., those listed with the " "@code{setup_requires} keyword in @file{setup.py}---or only for testing---e." "g., those in @code{tests_require}---go into @code{native-inputs}. The " "rationale is that (1) they do not need to be propagated because they are not " "needed at run time, and (2) in a cross-compilation context, it's the " "``native'' input that we'd want." msgstr "" #. type: itemize #: doc/guix.texi:24025 msgid "" "Examples are the @code{pytest}, @code{mock}, and @code{nose} test " "frameworks. Of course if any of these packages is also required at run-" "time, it needs to go to @code{propagated-inputs}." msgstr "" #. type: itemize #: doc/guix.texi:24030 msgid "" "Anything that does not fall in the previous categories goes to " "@code{inputs}, for example programs or C libraries required for building " "Python packages containing C extensions." msgstr "" #. type: itemize #: doc/guix.texi:24036 msgid "" "If a Python package has optional dependencies (@code{extras_require}), it is " "up to you to decide whether to add them or not, based on their usefulness/" "overhead ratio (@pxref{Submitting Patches, @command{guix size}})." msgstr "" #. type: cindex #: doc/guix.texi:24043 #, no-wrap msgid "perl" msgstr "" #. type: Plain text #: doc/guix.texi:24054 msgid "" "Perl programs standing for themselves are named as any other package, using " "the lowercase upstream name. For Perl packages containing a single class, " "we use the lowercase class name, replace all occurrences of @code{::} by " "dashes and prepend the prefix @code{perl-}. So the class @code{XML::Parser} " "becomes @code{perl-xml-parser}. Modules containing several classes keep " "their lowercase upstream name and are also prepended by @code{perl-}. Such " "modules tend to have the word @code{perl} somewhere in their name, which " "gets dropped in favor of the prefix. For instance, @code{libwww-perl} " "becomes @code{perl-libwww}." msgstr "" #. type: cindex #: doc/guix.texi:24059 #, no-wrap msgid "java" msgstr "" #. type: Plain text #: doc/guix.texi:24062 msgid "" "Java programs standing for themselves are named as any other package, using " "the lowercase upstream name." msgstr "" #. type: Plain text #: doc/guix.texi:24068 msgid "" "To avoid confusion and naming clashes with other programming languages, it " "is desirable that the name of a package for a Java package is prefixed with " "@code{java-}. If a project already contains the word @code{java}, we drop " "this; for instance, the package @code{ngsjava} is packaged under the name " "@code{java-ngs}." msgstr "" #. type: Plain text #: doc/guix.texi:24074 msgid "" "For Java packages containing a single class or a small class hierarchy, we " "use the lowercase class name, replace all occurrences of @code{.} by dashes " "and prepend the prefix @code{java-}. So the class @code{apache.commons.cli} " "becomes package @code{java-apache-commons-cli}." msgstr "" #. type: Plain text #: doc/guix.texi:24085 msgid "" "For fonts that are in general not installed by a user for typesetting " "purposes, or that are distributed as part of a larger software package, we " "rely on the general packaging rules for software; for instance, this applies " "to the fonts delivered as part of the X.Org system or fonts that are part of " "TeX Live." msgstr "" #. type: Plain text #: doc/guix.texi:24089 msgid "" "To make it easier for a user to search for fonts, names for other packages " "containing only fonts are constructed as follows, independently of the " "upstream package name." msgstr "" #. type: Plain text #: doc/guix.texi:24097 msgid "" "The name of a package containing only one font family starts with " "@code{font-}; it is followed by the foundry name and a dash @code{-} if the " "foundry is known, and the font family name, in which spaces are replaced by " "dashes (and as usual, all upper case letters are transformed to lower " "case). For example, the Gentium font family by SIL is packaged under the " "name @code{font-sil-gentium}." msgstr "" #. type: Plain text #: doc/guix.texi:24106 msgid "" "For a package containing several font families, the name of the collection " "is used in the place of the font family name. For instance, the Liberation " "fonts consist of three families, Liberation Sans, Liberation Serif and " "Liberation Mono. These could be packaged separately under the names " "@code{font-liberation-sans} and so on; but as they are distributed together " "under a common name, we prefer to package them together as @code{font-" "liberation}." msgstr "" #. type: Plain text #: doc/guix.texi:24112 msgid "" "In the case where several formats of the same font family or font collection " "are packaged separately, a short form of the format, prepended by a dash, is " "added to the package name. We use @code{-ttf} for TrueType fonts, @code{-" "otf} for OpenType fonts and @code{-type1} for PostScript Type 1 fonts." msgstr "" #. type: cindex #: doc/guix.texi:24120 #, no-wrap msgid "bootstrapping" msgstr "" #. type: Plain text #: doc/guix.texi:24130 msgid "" "Bootstrapping in our context refers to how the distribution gets built " "``from nothing''. Remember that the build environment of a derivation " "contains nothing but its declared inputs (@pxref{Introduction}). So there's " "an obvious chicken-and-egg problem: how does the first package get built? " "How does the first compiler get compiled? Note that this is a question of " "interest only to the curious hacker, not to the regular user, so you can " "shamelessly skip this section if you consider yourself a ``regular user''." msgstr "" #. type: cindex #: doc/guix.texi:24131 doc/guix.texi:24253 #, no-wrap msgid "bootstrap binaries" msgstr "" #. type: Plain text #: doc/guix.texi:24141 msgid "" "The GNU system is primarily made of C code, with libc at its core. The GNU " "build system itself assumes the availability of a Bourne shell and command-" "line tools provided by GNU Coreutils, Awk, Findutils, `sed', and `grep'. " "Furthermore, build programs---programs that run @code{./configure}, " "@code{make}, etc.---are written in Guile Scheme (@pxref{Derivations}). " "Consequently, to be able to build anything at all, from scratch, Guix relies " "on pre-built binaries of Guile, GCC, Binutils, libc, and the other packages " "mentioned above---the @dfn{bootstrap binaries}." msgstr "" #. type: Plain text #: doc/guix.texi:24144 msgid "" "These bootstrap binaries are ``taken for granted'', though we can also re-" "create them if needed (more on that later)." msgstr "" #. type: unnumberedsubsec #: doc/guix.texi:24145 #, no-wrap msgid "Preparing to Use the Bootstrap Binaries" msgstr "" #. type: Plain text #: doc/guix.texi:24150 msgid "" "@image{images/bootstrap-graph,6in,,Dependency graph of the early bootstrap " "derivations}" msgstr "" #. type: Plain text #: doc/guix.texi:24155 msgid "" "The figure above shows the very beginning of the dependency graph of the " "distribution, corresponding to the package definitions of the @code{(gnu " "packages bootstrap)} module. A similar figure can be generated with " "@command{guix graph} (@pxref{Invoking guix graph}), along the lines of:" msgstr "" #. type: example #: doc/guix.texi:24160 #, no-wrap msgid "" "guix graph -t derivation \\\n" " -e '(@@@@ (gnu packages bootstrap) %bootstrap-gcc)' \\\n" " | dot -Tps > t.ps\n" msgstr "" #. type: Plain text #: doc/guix.texi:24169 msgid "" "At this level of detail, things are slightly complex. First, Guile itself " "consists of an ELF executable, along with many source and compiled Scheme " "files that are dynamically loaded when it runs. This gets stored in the " "@file{guile-2.0.7.tar.xz} tarball shown in this graph. This tarball is part " "of Guix's ``source'' distribution, and gets inserted into the store with " "@code{add-to-store} (@pxref{The Store})." msgstr "" #. type: Plain text #: doc/guix.texi:24178 msgid "" "But how do we write a derivation that unpacks this tarball and adds it to " "the store? To solve this problem, the @code{guile-bootstrap-2.0.drv} " "derivation---the first one that gets built---uses @code{bash} as its " "builder, which runs @code{build-bootstrap-guile.sh}, which in turn calls " "@code{tar} to unpack the tarball. Thus, @file{bash}, @file{tar}, @file{xz}, " "and @file{mkdir} are statically-linked binaries, also part of the Guix " "source distribution, whose sole purpose is to allow the Guile tarball to be " "unpacked." msgstr "" #. type: Plain text #: doc/guix.texi:24190 msgid "" "Once @code{guile-bootstrap-2.0.drv} is built, we have a functioning Guile " "that can be used to run subsequent build programs. Its first task is to " "download tarballs containing the other pre-built binaries---this is what the " "@code{.tar.xz.drv} derivations do. Guix modules such as @code{ftp-client." "scm} are used for this purpose. The @code{module-import.drv} derivations " "import those modules in a directory in the store, using the original " "layout. The @code{module-import-compiled.drv} derivations compile those " "modules, and write them in an output directory with the right layout. This " "corresponds to the @code{#:modules} argument of @code{build-expression-" ">derivation} (@pxref{Derivations})." msgstr "" #. type: Plain text #: doc/guix.texi:24194 msgid "" "Finally, the various tarballs are unpacked by the derivations @code{gcc-" "bootstrap-0.drv}, @code{glibc-bootstrap-0.drv}, etc., at which point we have " "a working C tool chain." msgstr "" #. type: unnumberedsubsec #: doc/guix.texi:24196 #, no-wrap msgid "Building the Build Tools" msgstr "" #. type: Plain text #: doc/guix.texi:24205 msgid "" "Bootstrapping is complete when we have a full tool chain that does not " "depend on the pre-built bootstrap tools discussed above. This no-dependency " "requirement is verified by checking whether the files of the final tool " "chain contain references to the @file{/gnu/store} directories of the " "bootstrap inputs. The process that leads to this ``final'' tool chain is " "described by the package definitions found in the @code{(gnu packages " "commencement)} module." msgstr "" #. type: Plain text #: doc/guix.texi:24212 msgid "" "The @command{guix graph} command allows us to ``zoom out'' compared to the " "graph above, by looking at the level of package objects instead of " "individual derivations---remember that a package may translate to several " "derivations, typically one derivation to download its source, one to build " "the Guile modules it needs, and one to actually build the package from " "source. The command:" msgstr "" #. type: example #: doc/guix.texi:24217 #, no-wrap msgid "" "guix graph -t bag \\\n" " -e '(@@@@ (gnu packages commencement)\n" " glibc-final-with-bootstrap-bash)' | dot -Tps > t.ps\n" msgstr "" #. type: Plain text #: doc/guix.texi:24224 msgid "" "produces the dependency graph leading to the ``final'' C " "library@footnote{You may notice the @code{glibc-intermediate} label, " "suggesting that it is not @emph{quite} final, but as a good approximation, " "we will consider it final.}, depicted below." msgstr "" #. type: Plain text #: doc/guix.texi:24226 msgid "" "@image{images/bootstrap-packages,6in,,Dependency graph of the early packages}" msgstr "" #. type: Plain text #: doc/guix.texi:24232 msgid "" "The first tool that gets built with the bootstrap binaries is GNU@tie{}" "Make---noted @code{make-boot0} above---which is a prerequisite for all the " "following packages. From there Findutils and Diffutils get built." msgstr "" #. type: Plain text #: doc/guix.texi:24237 msgid "" "Then come the first-stage Binutils and GCC, built as pseudo cross tools---i." "e., with @code{--target} equal to @code{--host}. They are used to build " "libc. Thanks to this cross-build trick, this libc is guaranteed not to hold " "any reference to the initial tool chain." msgstr "" #. type: Plain text #: doc/guix.texi:24243 msgid "" "From there the final Binutils and GCC (not shown above) are built. GCC uses " "@code{ld} from the final Binutils, and links programs against the just-built " "libc. This tool chain is used to build the other packages used by Guix and " "by the GNU Build System: Guile, Bash, Coreutils, etc." msgstr "" #. type: Plain text #: doc/guix.texi:24249 msgid "" "And voilà! At this point we have the complete set of build tools that the " "GNU Build System expects. These are in the @code{%final-inputs} variable of " "the @code{(gnu packages commencement)} module, and are implicitly used by " "any package that uses @code{gnu-build-system} (@pxref{Build Systems, " "@code{gnu-build-system}})." msgstr "" #. type: unnumberedsubsec #: doc/guix.texi:24251 #, no-wrap msgid "Building the Bootstrap Binaries" msgstr "" #. type: Plain text #: doc/guix.texi:24258 msgid "" "Because the final tool chain does not depend on the bootstrap binaries, " "those rarely need to be updated. Nevertheless, it is useful to have an " "automated way to produce them, should an update occur, and this is what the " "@code{(gnu packages make-bootstrap)} module provides." msgstr "" #. type: Plain text #: doc/guix.texi:24262 msgid "" "The following command builds the tarballs containing the bootstrap binaries " "(Guile, Binutils, GCC, libc, and a tarball containing a mixture of Coreutils " "and other basic command-line tools):" msgstr "" #. type: example #: doc/guix.texi:24265 #, no-wrap msgid "guix build bootstrap-tarballs\n" msgstr "" #. type: Plain text #: doc/guix.texi:24270 msgid "" "The generated tarballs are those that should be referred to in the " "@code{(gnu packages bootstrap)} module mentioned at the beginning of this " "section." msgstr "" #. type: Plain text #: doc/guix.texi:24276 msgid "" "Still here? Then perhaps by now you've started to wonder: when do we reach a " "fixed point? That is an interesting question! The answer is unknown, but if " "you would like to investigate further (and have significant computational " "and storage resources to do so), then let us know." msgstr "" #. type: unnumberedsubsec #: doc/guix.texi:24277 #, no-wrap msgid "Reducing the Set of Bootstrap Binaries" msgstr "" #. type: Plain text #: doc/guix.texi:24285 msgid "" "Our bootstrap binaries currently include GCC, Guile, etc. That's a lot of " "binary code! Why is that a problem? It's a problem because these big chunks " "of binary code are practically non-auditable, which makes it hard to " "establish what source code produced them. Every unauditable binary also " "leaves us vulnerable to compiler backdoors as described by Ken Thompson in " "the 1984 paper @emph{Reflections on Trusting Trust}." msgstr "" #. type: Plain text #: doc/guix.texi:24291 msgid "" "This is mitigated by the fact that our bootstrap binaries were generated " "from an earlier Guix revision. Nevertheless it lacks the level of " "transparency that we get in the rest of the package dependency graph, where " "Guix always gives us a source-to-binary mapping. Thus, our goal is to " "reduce the set of bootstrap binaries to the bare minimum." msgstr "" #. type: Plain text #: doc/guix.texi:24297 msgid "" "The @uref{http://bootstrappable.org, Bootstrappable.org web site} lists on-" "going projects to do that. One of these is about replacing the bootstrap " "GCC with a sequence of assemblers, interpreters, and compilers of increasing " "complexity, which could be built from source starting from a simple and " "auditable assembler. Your help is welcome!" msgstr "" #. type: section #: doc/guix.texi:24300 #, no-wrap msgid "Porting to a New Platform" msgstr "" #. type: Plain text #: doc/guix.texi:24309 msgid "" "As discussed above, the GNU distribution is self-contained, and self-" "containment is achieved by relying on pre-built ``bootstrap " "binaries'' (@pxref{Bootstrapping}). These binaries are specific to an " "operating system kernel, CPU architecture, and application binary interface " "(ABI). Thus, to port the distribution to a platform that is not yet " "supported, one must build those bootstrap binaries, and update the " "@code{(gnu packages bootstrap)} module to use them on that platform." msgstr "" #. type: Plain text #: doc/guix.texi:24314 msgid "" "Fortunately, Guix can @emph{cross compile} those bootstrap binaries. When " "everything goes well, and assuming the GNU tool chain supports the target " "platform, this can be as simple as running a command like this one:" msgstr "" #. type: example #: doc/guix.texi:24317 #, no-wrap msgid "guix build --target=armv5tel-linux-gnueabi bootstrap-tarballs\n" msgstr "" #. type: Plain text #: doc/guix.texi:24324 msgid "" "For this to work, the @code{glibc-dynamic-linker} procedure in @code{(gnu " "packages bootstrap)} must be augmented to return the right file name for " "libc's dynamic linker on that platform; likewise, @code{system->linux-" "architecture} in @code{(gnu packages linux)} must be taught about the new " "platform." msgstr "" #. type: Plain text #: doc/guix.texi:24333 msgid "" "Once these are built, the @code{(gnu packages bootstrap)} module needs to be " "updated to refer to these binaries on the target platform. That is, the " "hashes and URLs of the bootstrap tarballs for the new platform must be added " "alongside those of the currently supported platforms. The bootstrap Guile " "tarball is treated specially: it is expected to be available locally, and " "@file{gnu/local.mk} has rules to download it for the supported " "architectures; a rule for the new platform must be added as well." msgstr "" #. type: Plain text #: doc/guix.texi:24342 msgid "" "In practice, there may be some complications. First, it may be that the " "extended GNU triplet that specifies an ABI (like the @code{eabi} suffix " "above) is not recognized by all the GNU tools. Typically, glibc recognizes " "some of these, whereas GCC uses an extra @code{--with-abi} configure flag " "(see @code{gcc.scm} for examples of how to handle this). Second, some of " "the required packages could fail to build for that platform. Lastly, the " "generated binaries could be broken for some reason." msgstr "" #. type: include #: doc/guix.texi:24344 #, no-wrap msgid "contributing.texi" msgstr "" #. type: Plain text #: doc/guix.texi:24357 msgid "" "Guix is based on the @uref{http://nixos.org/nix/, Nix package manager}, " "which was designed and implemented by Eelco Dolstra, with contributions from " "other people (see the @file{nix/AUTHORS} file in Guix.) 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." msgstr "" #. type: Plain text #: doc/guix.texi:24360 msgid "" "The Nix-based software distributions, Nixpkgs and NixOS, have also been an " "inspiration for Guix." msgstr "" #. type: Plain text #: doc/guix.texi:24366 msgid "" "GNU@tie{}Guix itself is a collective work with contributions from a number " "of people. See the @file{AUTHORS} file in Guix for more information on " "these fine people. The @file{THANKS} file lists people who have helped by " "reporting bugs, taking care of the infrastructure, providing artwork and " "themes, making suggestions, and more---thank you!" msgstr "" #. type: cindex #: doc/guix.texi:24371 #, no-wrap msgid "license, GNU Free Documentation License" msgstr "" #. type: include #: doc/guix.texi:24372 #, no-wrap msgid "fdl-1.3.texi" msgstr ""