@c Identifier of the OpenPGP key used to sign tarballs and such.
@set OPENPGP-SIGNING-KEY-ID 3CE464558A84FDC69DB40CFB090B11993D9AEBB5
+@set KEY-SERVER pool.sks-keyservers.net
@copying
Copyright @copyright{} 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic
@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 Mathieu Othacehe@*
+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
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@*
+Pelz@* Copyright @copyright{} 2018 Laura Lazzati@* Copyright @copyright{}
+2018 Alex Vong@*
Es ist Ihnen gestattet, dieses Dokument zu vervielfältigen, weiterzugeben
und/oder zu verändern, unter den Bedingungen der GNU Free Documentation
@c how to join your own translation team and how to report issues with the
@c translation.
This manual is also available in French (@pxref{Top,,, guix.fr, Manuel de
-référence de GNU Guix}). If you would like to translate it in your native
-language, consider joining the
+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}.
-* Das Konfigurationssystems nutzen:: Ihr GNU-System anpassen
+* Das Konfigurationssystem nutzen:: Ihr GNU-System anpassen.
* „operating-system“-Referenz:: Details der
Betriebssystem-Deklarationen.
* Dateisysteme:: Die Dateisystemeinbindungen konfigurieren.
-* Abgebildete Geräte:: Zusatzverarbeitungsschritte für blockbasierte
- Geräte.
+* Abgebildete Geräte:: Näheres zu blockorientierten Speichermedien.
* Benutzerkonten:: Benutzerkonten festlegen.
-* Locales:: Sprach- und kulturelle
- Konventionseinstellungen.
+* Locales:: Sprache und kulturelle Konventionen.
* Dienste:: Systemdienste festlegen.
-* Setuid-Programme:: Programme mit Administratorrechten ausführen
+* Setuid-Programme:: Mit Administratorrechten startende Programme.
* X.509-Zertifikate:: HTTPS-Server authentifizieren.
* Name Service Switch:: Den Name Service Switch von libc konfigurieren.
* Initiale RAM-Disk:: Linux-libre hochfahren.
* Bootloader-Konfiguration:: Den Bootloader konfigurieren.
-* Aufruf von guix system:: Instanzierung einer Systemkonfiguration
+* Aufruf von guix system:: Instanzierung einer Systemkonfiguration.
* GuixSD in einer VM starten:: Wie man GuixSD in einer virtuellen Maschine
startet.
* Dienste definieren:: Neue Dienstdefinitionen hinzufügen.
-* Basisdienste:: Essenzielle Systemdienste
+* Basisdienste:: Essenzielle Systemdienste.
* Geplante Auftragsausführung:: Der mcron-Dienst.
* Log-Rotation:: Der rottlog-Dienst.
* Netzwerkdienste:: Netzwerkeinrichtung, SSH-Daemon etc.
* Druckdienste:: Unterstützung für lokale und entfernte
Drucker.
* Desktop-Dienste:: D-Bus- und Desktop-Dienste.
-* Tondienste:: Dienste für ALSA und Pulseaudio.
+* Sound Services:: ALSA and Pulseaudio services.
* Datenbankdienste:: SQL-Datenbanken, Schlüssel-Wert-Speicher etc.
* Mail-Dienste:: IMAP, POP3, SMTP und so weiter.
* Kurznachrichtendienste:: Dienste für Kurznachrichten.
* DNS-Dienste:: DNS-Daemons.
* VPN-Dienste:: VPN-Daemons.
* Network File System:: Dienste mit Bezug zum Netzwerkdateisystem.
-* Kontinuierliche Integration:: Der Cuirass-Dienst
+* Kontinuierliche Integration:: Der Cuirass-Dienst.
* Power Management Services:: Extending battery life.
* Audio-Dienste:: Der MPD.
* Virtualisierungsdienste:: Dienste für virtuelle Maschinen.
* Dienstkompositionen:: Wie Dienste zusammengestellt werden.
* Diensttypen und Dienste:: Typen und Dienste.
-* Service-Referenz:: Referenz zur Programmierschnittstelle
+* Service-Referenz:: Referenz zur Programmierschnittstelle.
* Shepherd-Dienste:: Eine spezielle Art von Dienst.
Paketrichtlinien
Schöpfung und Wartung von Software-Umgebungen.
@cindex Benutzeroberflächen
-Guix bietet eine kommandozeilenbasierte Paketverwaltungsschnittstelle
+Guix bietet eine befehlszeilenbasierte Paketverwaltungsschnittstelle
(@pxref{Aufruf von guix package}), einen Satz Befehlszeilenwerkzeuge
(@pxref{Zubehör}) sowie Schnittstellen zur Programmierung in Scheme
(@pxref{Programmierschnittstelle}).
@dfn{Guix System Distribution}, kurz GuixSD (@pxref{GNU-Distribution}),
verwenden. Mit GNU@tie{}GuixSD @emph{deklarieren} Sie alle Aspekte der
Betriebssystemkonfiguration und Guix kümmert sich darum, die Konfiguration
-oft transaktionsbasierte, reproduzierbare und zustandslose Weise zu
+auf transaktionsbasierte, reproduzierbare und zustandslose Weise zu
instanzieren (@pxref{Systemkonfiguration}).
@cindex funktionale Paketverwaltung
+@cindex isolation
Intern implementiert Guix die Disziplin der @dfn{funktionalen
Paketverwaltung}, zu der Nix schon die Pionierarbeit geleistet hat
(@pxref{Danksagungen}). In Guix wird der Prozess, ein Paket zu erstellen
@chapter Installation
@cindex Guix installieren
+@cindex official website
GNU Guix kann von seiner Webseite unter
@url{http://www.gnu.org/software/guix/} heruntergeladen werden. Dieser
Abschnitt beschreibt die Software-Voraussetzungen von Guix und wie man es
Abschnitt @pxref{Systeminstallation}.
@cindex Fremddistribution
+@cindex directories related to foreign distro
+
Wenn es auf ein bestehendes GNU/Linux-System installiert wird — im Folgenden
als @dfn{Fremddistribution} bezeichnet —, ergänzt GNU@tie{}Guix die
verfügbaren Werkzeuge, ohne dass sie sich gegenseitig stören. Guix’ Daten
@section Aus Binärdatei installieren
@cindex Guix aus Binärdateien installieren
+@cindex installer script
Dieser Abschnitt beschreibt, wie sich Guix auf einem beliebigen System aus
einem alle Komponenten umfassenden Tarball installieren lässt, der
Binärdateien für Guix und all seine Abhängigkeiten liefert. Dies geht in der
-Regel schneller, als Guix aus seinen Quelldateien zu installieren, was im
-nächsten Abschnitt beschrieben wird. Vorausgesetzt wird hier lediglich, dass
-GNU@tie{}tar und Xz verfügbar sind.
+Regel schneller, als Guix aus seinen Quelldateien zu installieren, was in
+den nächsten Abschnitten beschrieben wird. Vorausgesetzt wird hier
+lediglich, dass GNU@tie{}tar und Xz verfügbar sind.
Wir bieten ein
@uref{https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh,
importieren:
@example
-$ gpg --keyserver pgp.mit.edu --recv-keys @value{OPENPGP-SIGNING-KEY-ID}
+$ gpg --keyserver @value{KEY-SERVER} \
+ --recv-keys @value{OPENPGP-SIGNING-KEY-ID}
@end example
@noindent
@end example
Dadurch wird @file{/gnu/store} (@pxref{Der Store}) und @file{/var/guix}
-erzeugt. Letzteres enthält ein Profil, welches bereit zur Nutzung durch
-@code{root} ist (wie im nächsten Schritt beschrieben).
+erzeugt. Letzteres enthält ein fertiges Guix-Profil für den
+Administratornutzer @code{root} (wie im nächsten Schritt beschrieben).
Entpacken Sie den Tarball @emph{nicht} auf einem schon funktionierenden
Guix-System, denn es würde seine eigenen essenziellen Dateien überschreiben.
Die Befehlszeilenoption @code{--warning=no-timestamp} stellt sicher, dass
GNU@tie{}tar nicht vor »unplausibel alten Zeitstempeln« warnt (solche
Warnungen traten bei GNU@tie{}tar 1.26 und älter auf, neue Versionen machen
-keine Probleme). Sie kommen daher, dass alle Dateien im Archiv als
+keine Probleme). Sie treten auf, weil alle Dateien im Archiv als
Änderungszeitpunkt null eingetragen bekommen haben (das bezeichnet den
1. Januar 1970). Das ist Absicht, damit der Inhalt des Archivs nicht davon
abhängt, wann es erstellt wurde, und es somit reproduzierbar wird.
@item
-Machen Sie das Profil von @code{root} verfügbar als
-@file{~root/.guix-profile}:
+Make the profile available under @file{~root/.config/guix/current}, which is
+where @command{guix pull} will install updates (@pxref{Aufruf von guix pull}):
@example
-# ln -sf /var/guix/profiles/per-user/root/guix-profile \
- ~root/.guix-profile
+# mkdir -p ~root/.config/guix
+# ln -sf /var/guix/profiles/per-user/root/current-guix \
+ ~root/.config/guix/current
@end example
»Sourcen« Sie @file{etc/profile}, um @code{PATH} und andere relevante
Umgebungsvariable zu ergänzen:
@example
-# GUIX_PROFILE="`echo ~root`/.guix-profile" ; \
+# GUIX_PROFILE="`echo ~root`/.config/guix/current" ; \
source $GUIX_PROFILE/etc/profile
@end example
@c http://lists.gnu.org/archive/html/guix-devel/2017-01/msg01199.html
@example
-# cp ~root/.guix-profile/lib/systemd/system/guix-daemon.service \
- /etc/systemd/system/
+# cp ~root/.config/guix/current/lib/systemd/system/guix-daemon.service \
+ /etc/systemd/system/
# systemctl start guix-daemon && systemctl enable guix-daemon
@end example
@example
# initctl reload-configuration
-# cp ~root/.guix-profile/lib/upstart/system/guix-daemon.conf /etc/init/
+# cp ~root/.config/guix/current/lib/upstart/system/guix-daemon.conf \
+ /etc/init/
# start guix-daemon
@end example
Andernfalls können Sie den Daemon immer noch manuell starten, mit:
@example
-# ~root/.guix-profile/bin/guix-daemon --build-users-group=guixbuild
+# ~root/.config/guix/current/bin/guix-daemon \
+ --build-users-group=guixbuild
@end example
@item
@example
# mkdir -p /usr/local/bin
# cd /usr/local/bin
-# ln -s /var/guix/profiles/per-user/root/guix-profile/bin/guix
+# ln -s /var/guix/profiles/per-user/root/current-guix/bin/guix
@end example
Es ist auch eine gute Idee, die Info-Version dieses Handbuchs ebenso
@example
# mkdir -p /usr/local/share/info
# cd /usr/local/share/info
-# for i in /var/guix/profiles/per-user/root/guix-profile/share/info/* ;
+# for i in /var/guix/profiles/per-user/root/current-guix/share/info/* ;
do ln -s $i ; done
@end example
benutzen (@pxref{Substitute}), müssen sie erst autorisiert werden:
@example
-# guix archive --authorize < ~root/.guix-profile/share/guix/hydra.gnu.org.pub
+# guix archive --authorize < \
+ ~root/.config/guix/current/share/guix/hydra.gnu.org.pub
@end example
@item
ihre Guix-Umgebung genutzt werden kann, siehe @pxref{Anwendungen einrichten}.
@end enumerate
-Voilà, die installation ist fertig!
+Voilà, die Installation ist fertig!
Sie können nachprüfen, dass Guix funktioniert, indem Sie ein Beispielpaket
in das root-Profil installieren:
@end example
@noindent
-…was wiederum dies ausführt:
+...@: which, in turn, runs:
@example
-guix pack -s @var{system} --localstatedir guix
+guix pack -s @var{system} --localstatedir \
+ --profile-name=current-guix guix
@end example
Siehe @xref{Aufruf von guix pack} für weitere Informationen zu diesem
(@pxref{Guile Preparations, how to install the GnuTLS bindings for Guile,,
gnutls-guile, GnuTLS-Guile}),
@item
-@uref{https://notabug.org/civodul/guile-sqlite3, Guile-SQLite3}, version
-0.1.0 or later;
+@uref{https://notabug.org/guile-sqlite3/guile-sqlite3, Guile-SQLite3},
+version 0.1.0 or later;
@item
@c FIXME: Specify a version number once a release has been made.
@uref{https://gitlab.com/guile-git/guile-git, Guile-Git}, vom August 2017
Wenn eine funktionierende Installation of @url{http://nixos.org/nix/, the
Nix package manager} verfügbar ist, können Sie Guix stattdessen mit
@code{--disable-daemon} konfigurieren. In diesem Fall ersetzt Nix die drei
-obengenannten Abhängigkeiten.
+oben genannten Abhängigkeiten.
Guix ist mit Nix kompatibel, daher ist es möglich, denselben Store für beide
zu verwenden. Dazu müssen Sie an @command{configure} nicht nur denselben
make check TESTS="tests/base64.scm" SCM_LOG_DRIVER_FLAGS="--brief=no"
@end example
-Kommt es zum Fehlschlag, senden Sie bitte eine E-mail an
+Kommt es zum Fehlschlag, senden Sie bitte eine E-Mail an
@email{bug-guix@@gnu.org} und fügen Sie die Datei @file{test-suite.log} als
-Anhang bei. Bitte geben Sie dabei in Ihrer Nachricht die benutze Version von
-Guix an sowie die Versionsnummern der Abhängigkeiten (@pxref{Voraussetzungen}).
+Anhang bei. Bitte geben Sie dabei in Ihrer Nachricht die benutzte Version
+von Guix an sowie die Versionsnummern der Abhängigkeiten
+(@pxref{Voraussetzungen}).
Guix wird auch mit einem Testkatalog für das ganze System ausgeliefert, der
vollständige Instanzen des GuixSD-Betriebssystems testet. Er kann nur auf
@cindex Daemon
Operationen wie das Erstellen eines Pakets oder Laufenlassen des
Müllsammlers werden alle durch einen spezialisierten Prozess durchgeführt,
-den @dfn{Erstellungs-Daemon}, im Auftrag seiner Kunden (Clients). Nur der
-Daemon darf auf den Store und seine zugehörige Datenbank zugreifen. Daher
-wird jede den Store verändernde Operation durch den Daemon durchgeführt. Zum
-Beispiel kommunizieren Befehlszeilenwerkzeuge wie @command{guix package} und
-@command{guix build} mit dem Daemon (mittels entfernter Prozeduraufrufe), um
-ihm Anweisungen zu geben, was er tun soll.
+den @dfn{Erstellungs-Daemon}, im Auftrag seiner Kunden (den Clients). Nur
+der Daemon darf auf den Store und seine zugehörige Datenbank
+zugreifen. Daher wird jede den Store verändernde Operation durch den Daemon
+durchgeführt. Zum Beispiel kommunizieren Befehlszeilenwerkzeuge wie
+@command{guix package} und @command{guix build} mit dem Daemon (mittels
+entfernter Prozeduraufrufe), um ihm Anweisungen zu geben, was er tun soll.
Folgende Abschnitte beschreiben, wie Sie die Umgebung des
Erstellungs-Daemons ausstatten sollten. Siehe auch @ref{Substitute} für
@noindent
Die Anzahl der Erstellungsbenutzer entscheidet, wieviele Erstellungsaufträge
parallel ausgeführt werden können, wie es mit der Befehlszeilenoption
-@option{--max-jobs} vorgeben werden kann (@pxref{Aufruf des guix-daemon,
+@option{--max-jobs} vorgegeben werden kann (@pxref{Aufruf des guix-daemon,
@option{--max-jobs}}). Um @command{guix system vm} und ähnliche Befehle
nutzen zu können, müssen Sie die Erstellungsbenutzer unter Umständen zur
@code{kvm}-Benutzergruppe hinzufügen, damit sie Zugriff auf @file{/dev/kvm}
dann nicht voneinander und vom Rest des Systems isoliert werden. Daher
können sich Erstellungsprozesse gegenseitig stören und auf Programme,
Bibliotheken und andere Dateien zugreifen, die dem restlichen System zur
-Verfügung stehen — was es deutlich schwerer macht, die als @emph{reine}
+Verfügung stehen — was es deutlich schwerer macht, sie als @emph{reine}
Funktionen aufzufassen.
@item user
Das Benutzerkonto, mit dem eine Verbindung zur entfernten Maschine über SSH
-aufgebaut werden soll. Beachten Sie, dass das SSH-Schlüsselpaart
-@emph{nicht} durch eine Passphrase geschützt sein darf, damit
-nicht-interaktive Anmeldungen möglich sind.
+aufgebaut werden soll. Beachten Sie, dass das SSH-Schlüsselpaar @emph{nicht}
+durch eine Passphrase geschützt sein darf, damit nicht-interaktive
+Anmeldungen möglich sind.
@item host-key
Dies muss der @dfn{öffentliche SSH-Host-Schlüssel} der Maschine im
@cindex SELinux, Einschränkungen
Diese Richtlinie ist nicht perfekt. Im Folgenden finden Sie eine Liste von
-Einschränkungen oder merkwürdiger Verhaltensweisen, die bedacht werden
+Einschränkungen oder merkwürdigen Verhaltensweisen, die bedacht werden
sollten, wenn man die mitgelieferte SELinux-Richtlinie für den Guix-Daemon
einspielt.
@item
Derzeit wird allen Dateien mit einem Namen, der zum regulären Ausdruck
@code{/gnu/store/.+-(guix-.+|profile)/bin/guix-daemon} passt, die
-Kennzeichnung @code{guix_daemon_exec_t} zugewiesen, wodurch @emph{jedee
-beliebigee} Datei mit diesem Namen in irgendeinem Profil gestatttet wäre, in
+Kennzeichnung @code{guix_daemon_exec_t} zugewiesen, wodurch @emph{jede
+beliebige} Datei mit diesem Namen in irgendeinem Profil gestattet wäre, in
der Domäne @code{guix_daemon_t} ausgeführt zu werden. Das ist nicht
ideal. Ein Angreifer könnte ein Paket erstellen, dass solch eine ausführbare
Datei enthält, und den Nutzer überzeugen, es zu installieren und
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. Be aware that using a directory
-other than @file{/tmp} can affect build results---for example, with a longer
-directory name, a build process that uses Unix-domain sockets might hit the
-name length limitation for @code{sun_path}, which it would otherwise not
-hit.
+@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}.
Nach Abschluss der Erstellung wird das Erstellungsverzeichnis automatisch
entfernt, außer wenn die Erstellung fehlgeschlagen ist und der Client
Dadurch kann sich das Ergebnis von Erstellungsprozessen ändern — zum
Beispiel, wenn diese optionale Abhängigkeiten aus dem @var{Verzeichnis}
verwenden, wenn sie verfügbar sind, und nicht, wenn es fehlt. Deshalb ist es
-nicht empfohlen, dass Sie diese Befehlszeilenoption besser verwenden, besser
+nicht empfohlen, dass Sie diese Befehlszeilenoption verwenden, besser
sollten Sie dafür sorgen, dass jede Ableitung alle von ihr benötigten
Eingabgen deklariert.
GNU-C-Bibliothek, @command{nscd}, laufen lassen, welcher auf dem Socket
@file{/var/run/nscd/socket} lauschen sollte. Wenn Sie das nicht tun, könnten
mit Guix installierte Anwendungen Probleme beim Auflösen von Hostnamen oder
-Benutzerkonten haben, oder sogar abstürzen. Die nächsten Absätze erklären,
+Benutzerkonten haben, oder sogar abstürzen. Die nächsten Absätze erklären
warum.
@cindex @file{nsswitch.conf}
(@pxref{Package Files,,, emacs, The GNU Emacs Manual}).
Standardmäßig »weiß« Emacs (wenn er mit Guix installiert wurde), wo diese
-Pakete liegen, sie müssen also nichts selbst konfigurieren. Wenn Sie aber
+Pakete liegen, Sie müssen also nichts selbst konfigurieren. Wenn Sie aber
aus irgendeinem Grund mit Guix installierte Pakete nicht automatisch laden
lassen möchten, können Sie Emacs mit der Befehlszeilenoption
@code{--no-site-file} starten (@pxref{Init File,,, emacs, The GNU Emacs
Zum Beispiel installiert @code{alice} GCC 4.7.2. Dadurch zeigt dann
@file{/home/alice/.guix-profile/bin/gcc} auf
@file{/gnu/store/@dots{}-gcc-4.7.2/bin/gcc}. Auf demselben Rechner hat
-@code{bob} bbereits GCC 4.8.0 installiert. Das Profil von @code{bob} zeigt
+@code{bob} bereits GCC 4.8.0 installiert. Das Profil von @code{bob} zeigt
dann einfach weiterhin auf @file{/gnu/store/@dots{}-gcc-4.8.0/bin/gcc} —
d.h. beide Versionen von GCC koexistieren auf demselben System, ohne sich zu
stören.
Zustands des Nutzerprofils erhalten.
Zudem kann jede Pakettransaktion @emph{zurückgesetzt} werden
-(Rollback). Wenn also zum Beispiel durch eine Aktualisierung eine neue
+(Rollback). Wird also zum Beispiel durch eine Aktualisierung eine neue
Version eines Pakets installiert, die einen schwerwiegenden Fehler zur Folge
hat, können Nutzer ihr Profil einfach auf die vorherige Profilinstanz
zurücksetzen, von der sie wissen, dass sie gut lief. Ebenso unterliegt auf
GuixSD auch die globale Systemkonfiguration transaktionellen
-Aktualisierungen und Rücksetzungen (@pxref{Das Konfigurationssystems nutzen}).
+Aktualisierungen und Rücksetzungen (@pxref{Das Konfigurationssystem nutzen}).
Alle Pakete im Paket-Store können vom @emph{Müllsammler} (Garbage Collector)
gelöscht werden. Guix ist in der Lage, festzustellen, welche Pakete noch
@cindex rücksetzen
@cindex Zurücksetzen von Transaktionen
@cindex Transaktionen, zurücksetzen
-Wechselt zur vorherigen @dfn{Generation} des Profils zurück — d.h. mache die
+Wechselt zur vorherigen @dfn{Generation} des Profils zurück — d.h. macht die
letzte Transaktion rückgängig.
In Verbindung mit Befehlszeilenoptionen wie @code{--install} wird zuerst
@item --search=@var{Regexp}
@itemx -s @var{Regexp}
@cindex Suche nach Paketen
-Führt alle verfügbaren Pakete aus, deren Name, Zusammenfassung oder
+Führt alle verfügbaren Pakete auf, deren Name, Zusammenfassung oder
Beschreibung zum regulären Ausdruck @var{Regexp} passt, sortiert nach ihrer
Relevanz. Alle Metadaten passender Pakete werden im @code{recutils}-Format
geliefert (@pxref{Top, GNU recutils databases,, recutils, GNU recutils
verfügt.
Substitute von der offiziellen Build-Farm sind standardmäßig erlaubt, wenn
-Sie die Guix System Distribution verwenden (@pxref{GNU-Distribution}). Auf
+Sie die Guix-System-Distribution verwenden (@pxref{GNU-Distribution}). Auf
Fremddistributionen sind sie allerdings standardmäßig ausgeschaltet, solange
Sie sie nicht ausdrücklich in einem der empfohlenen Installationsschritte
erlaubt haben (@pxref{Installation}). Die folgenden Absätze beschreiben, wie
@example
$ guix build emacs --dry-run
-The following derivations would be built:
+Folgende Ableitungen würden erstellt:
/gnu/store/yr7bnx8xwcayd6j95r2clmkdl1qh688w-emacs-24.3.drv
/gnu/store/x8qsh1hlhgjx6cwsjyvybnfv2i37z23w-dbus-1.6.4.tar.gz.drv
/gnu/store/1ixwp12fl950d15h2cj11c73733jay0z-alsa-lib-1.0.27.1.tar.bz2.drv
@example
$ guix build emacs --dry-run
-112.3 MB would be downloaded:
+112.3 MB würden heruntergeladen:
/gnu/store/pk3n22lbq6ydamyymqkkz7i69wiwjiwi-emacs-24.3
/gnu/store/2ygn4ncnhrpr61rssa6z0d9x22si0va3-libjpeg-8d
/gnu/store/71yz6lgx4dazma9dwn2mcjxaah9w77jq-cairo-1.12.16
@noindent
Das zeigt an, dass Substitute von @code{hydra.gnu.org} nutzbar sind und für
-zukünftige Erstellungen heruntergeladen, wann immer es möglich ist.
+zukünftige Erstellungen heruntergeladen werden, wann immer es möglich ist.
@cindex Substitute, wie man sie ausschaltet
Der Substitutsmechanismus kann global ausgeschaltet werden, indem Sie dem
oder nicht mit einem in der ACL aufgelisteten Schlüssel signiert sind.
Es gibt nur eine Ausnahme: Wenn ein unautorisierter Server Substitute
-anbietet, die @emph{Bit für Bit identisch} mit denen von einem
-authorisierten Server sind, können sie auch vom unautorisierten Server
-heruntergeladen werden. Zum Beispiel, angenommen wir haben zwei
-Substitutserver mit dieser Befehlszeilenoption ausgewählt:
+anbietet, die @emph{Bit für Bit identisch} mit denen von einem autorisierten
+Server sind, können sie auch vom unautorisierten Server heruntergeladen
+werden. Zum Beispiel, angenommen wir haben zwei Substitutserver mit dieser
+Befehlszeilenoption ausgewählt:
@example
--substitute-urls="https://a.example.org https://b.example.org"
@cindex Vertrauen, gegenüber vorerstellten Binärdateien
Derzeit hängt die Kontrolle jedes Individuums über seine Rechner von
-Institutionen, Unternehmen undsolchen Gruppierungen ab, die über genug Macht
-und Entschlusskraft verfügen, die Rechnerinfrastruktur zu sabotieren und
-ihre Schwachstellen auszunutzen. Auch wenn es bequem ist, Substitute von
+Institutionen, Unternehmen und solchen Gruppierungen ab, die über genug
+Macht und Entschlusskraft verfügen, die Rechnerinfrastruktur zu sabotieren
+und ihre Schwachstellen auszunutzen. Auch wenn es bequem ist, Substitute von
@code{hydra.gnu.org} zu benutzen, ermuntern wir Nutzer, auch selbst
Erstellungen durchzuführen oder gar ihre eigene Build-Farm zu betreiben,
damit @code{hydra.gnu.org} ein weniger interessantes Ziel wird. Eine Art,
Ergebnissen führen. Wir können also mit Hilfe einer vielschichtigen Menge an
unabhängigen Paketerstellungen die Integrität unseres Systems besser
gewährleisten. Der Befehl @command{guix challenge} hat das Ziel, Nutzern zu
-ermöglichen, Substitutserver zu beurteilen, und Entwicklern zu ermöglichen,
-nichtdeterministische Paketerstellungen zu finden (@pxref{Aufruf von guix challenge}). Ebenso ermöglicht es die Befehlszeilenoption @option{--check}
-von @command{guix build}, dass Nutzer bereits installierte Substitute auf
-Echtheit zu prüfen, indem sie lokal nachgebaut werden (@pxref{build-check,
-@command{guix build --check}}).
-
-In Zukunft wollen wir, dass Guix Binärdateien an und von Nutzern in einem
-Peer-to-Peer veröffentlichen kann. Wenn Sie mit uns dieses Projekt
+ermöglichen, Substitutserver zu beurteilen, und Entwickler dabei zu
+unterstützen, nichtdeterministische Paketerstellungen zu finden
+(@pxref{Aufruf von guix challenge}). Ebenso ermöglicht es die
+Befehlszeilenoption @option{--check} von @command{guix build}, dass Nutzer
+bereits installierte Substitute auf Echtheit zu prüfen, indem sie lokal
+nachgebaut werden (@pxref{build-check, @command{guix build --check}}).
+
+In Zukunft wollen wir, dass Guix Binärdateien an und von Nutzern
+peer-to-peer veröffentlichen kann. Wenn Sie mit uns dieses Projekt
diskuttieren möchten, kommen Sie auf unsere Mailing-Liste
@email{guix-devel@@gnu.org}.
Der Müllsammler kennt eine Reihe von @dfn{Wurzeln}: Jede Datei in
@file{/gnu/store}, die von einer Wurzel aus erreichbar ist, gilt als
@dfn{lebendig} und kann nicht entfernt werden; jede andere Datei gilt als
-@dfn{tot} und ist ein Kandidat, gelöscht zu werden. Die Reihe der
+@dfn{tot} und ist ein Kandidat, gelöscht zu werden. Die Menge der
Müllsammlerwurzeln (kurz auch »GC-Wurzeln«, von englisch »Garbage
Collector«) umfasst Standard-Benutzerprofile; standardmäßig werden diese
Müllsammlerwurzeln durch symbolische Verknüpfungen in
Unsere Empfehlung ist, dass Sie den Müllsammler regelmäßig laufen lassen und
wenn Sie wenig freien Speicherplatz zur Verfügung haben. Um zum Beispiel
-sicherzustellen, dass Sie mindestens 5@tie{}GB are auf Ihrer Platte zur
+sicherzustellen, dass Sie mindestens 5@tie{}GB auf Ihrer Platte zur
Verfügung haben, benutzen Sie einfach:
@example
Befehlszeilenargumente auszuführen, lässt so viel Müll wie möglich sammeln,
aber das ist oft nicht, was man will, denn so muss man unter Umständen
Software erneut erstellen oder erneut herunterladen, weil der Müllsammler
-sie als »tot« ansieht, sie aber zur Erstellung anderer Software wiedeer
+sie als »tot« ansieht, sie aber zur Erstellung anderer Software wieder
gebraucht wird — das trifft zum Beispiel auf die Compiler-Toolchain zu.
Der Befehl @command{guix gc} hat drei Arbeitsmodi: Er kann benutzt werden,
Der Abschnitt @xref{Aufruf von guix size} erklärt ein Werkzeug, um den
Speicherbedarf des Abschlusses eines Elements zu ermitteln. Siehe
-@xref{Aufruf von guix graph} für ein Werkzeug, um den Referenzgraph zu
+@xref{Aufruf von guix graph} für ein Werkzeug, um den Referenzgraphen zu
veranschaulichen.
@item --derivers
kommen. Neue @command{guix}-Unterbefehle, die durch die Aktualisierung
hinzugekommen sind, werden also auch verfügbar.
-Jeder Nutzer kann seine Kopie von Guix mittels @command{guix pull}
-aktualisieren, wodurch sich nur für den Nutzer etwas verändert, der
-@command{guix pull} ausgeführt hat. Wenn also zum Beispiel der
-Administratornutzer @code{root} den Befehl @command{guix pull} ausführt, hat
-das keine Auswirkungen, auf die für den Benutzer @code{alice} sichtbare
-Guix-Version, und umgekehrt.
+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.
-Das Ergebnis von @command{guix pull} ist ein als
-@file{~/.config/guix/current} verfügbares @dfn{Profil} mit dem neuesten
-Guix. Stellen Sie sicher, dass es am Anfang Ihres Suchpfades steht, damit
-Sie auch wirklich das neueste Guix und sein Info-Handbuch sehen
-(@pxref{Dokumentation}):
+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{Dokumentation}):
@example
export PATH="$HOME/.config/guix/current/bin:$PATH"
export INFOPATH="$HOME/.config/guix/current/share/info:$INFOPATH"
@end example
-Die Befehlszeilenoption @code{--list-generations} oder kurz @code{-l} listet
-ältere von @command{guix pull} erzeugte Generationen auf, zusammen mit
-Informationen zu deren Provenienz.
+The @code{--list-generations} or @code{-l} option lists past generations
+produced by @command{guix pull}, along with details about their provenance:
@example
$ guix pull -l
@ref{Invoking guix describe, @command{guix describe}}, for other ways to
describe the current status of Guix.
-Das Profil @code{~/.config/guix/current} verhält sich genau wie jedes andere
-Profil, das von @command{guix package} erzeugt wurde (@pxref{Aufruf von guix package}). Das bedeutet, Sie können seine Generationen auflisten und es auf
-die vorherige Generation — also das vorherige Guix — zurücksetzen und so
-weiter:
+This @code{~/.config/guix/current} profile works like any other profile
+created by @command{guix package} (@pxref{Aufruf von guix package}). That is,
+you can list generations, roll back to the previous generation---i.e., the
+previous Guix---and so on:
@example
$ guix package -p ~/.config/guix/current --roll-back
aufgerufen, aber er versteht auch folgende Befehlszeilenoptionen:
@table @code
-@item --verbose
-Ausführliche Informationen ausgeben und Erstellungsprotokolle auf der
-Standardfehlerausgabe ausgeben.
-
@item --url=@var{URL}
@itemx --commit=@var{Commit}
@itemx --branch=@var{Branch}
@itemx -p @var{Profil}
Use @var{profile} instead of @file{~/.config/guix/current}.
+@item --dry-run
+@itemx -n
+Show which channel commit(s) would be used and what would be built or
+substituted but do not actually do it.
+
+@item --verbose
+Ausführliche Informationen ausgeben und Erstellungsprotokolle auf der
+Standardfehlerausgabe ausgeben.
+
@item --bootstrap
Use the bootstrap Guile to build the latest Guix. This option is only
useful to Guix developers.
@end lisp
@noindent
-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
+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
produce human-readable output;
@item channels
produce a list of channel specifications that can be passed to @command{guix
-pull -C} or installed as @file{~/.config/guix/channels.scm} (@pxref{Aufruf von guix pull}).
+pull -C} or installed as @file{~/.config/guix/channels.scm} (@pxref{Aufruf von guix pull});
+@item json
+@cindex JSON
+produce a list of channel specifications in JSON format;
+@item recutils
+produce a list of channel specifications in Recutils format.
@end table
+
+@item --profile=@var{Profil}
+@itemx -p @var{Profil}
+Display information about @var{profile}.
@end table
@node Aufruf von guix pack
@end example
@noindent
-... you can copy that pack to a machine that lacks Guix, and from your home
-directory as a normal user, run:
+...@: you can copy that pack to a machine that lacks Guix, and from your
+home directory as a normal user, run:
@example
tar xf pack.tar.gz
symlink pointing to the @file{bin} sub-directory of the profile.
@item --localstatedir
+@itemx --profile-name=@var{name}
Include the ``local state directory'', @file{/var/guix}, in the resulting
-pack.
+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}.
@file{/var/guix} contains the store database (@pxref{Der Store}) as well as
garbage-collector roots (@pxref{Aufruf von guix gc}). Providing it in the
source code and @file{Cargo.toml} file.
@end defvr
+@cindex Clojure (programming language)
+@cindex simple Clojure build system
+@defvr {Scheme Variable} clojure-build-system
+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.
+
+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.
+
+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.
+
+This build system is an extension of @var{ant-build-system}, but with the
+following phases changed:
+
+@table @code
+
+@item build
+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.
+
+@item check
+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.
+
+@item install
+This phase installs all jars built previously.
+@end table
+
+Apart from the above, this build system also contains an additional phase:
+
+@table @code
+
+@item install-doc
+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.
+@end table
+@end defvr
+
@defvr {Scheme Variable} cmake-build-system
This variable is exported by @code{(guix build-system cmake)}. It
implements the build procedure for packages using the
@defvr {Scheme Variable} font-build-system
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
+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.
@end defvr
#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] Build a derivation with the given arguments, and
-return the resulting @code{<derivation>} object.
+[#:substitutable? #t] [#:properties '()] Build a derivation with the given
+arguments, and return the resulting @code{<derivation>} object.
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
derivation's output should not be used (@pxref{Substitute}). This is
useful, for instance, when building packages that capture details of the
host CPU instruction set.
+
+@var{properties} must be an association list describing ``properties'' of
+the derivation. It is kept as-is, uninterpreted, in the derivation.
@end deffn
@noindent
[#: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] [#: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}.
+[#: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}.
@var{modules} is deprecated in favor of @code{with-imported-modules}. Its
meaning is to make @var{modules} available in the evaluation context of
@xref{Fehlschläge beim Erstellen untersuchen}, for tips and tricks on how to debug build
issues.
+This option has no effect when connecting to a remote daemon with a
+@code{guix://} URI (@pxref{Der Store, the @code{GUIX_DAEMON_SOCKET}
+variable}).
+
@item --keep-going
@itemx -k
Keep going when some of the derivations fail to build; return only once all
compatible. If @var{replacement} is somehow incompatible with
@var{package}, then the resulting package may be unusable. Use with care!
+@item --with-branch=@var{package}=@var{branch}
+@cindex Git, using the latest commit
+@cindex latest commit, building
+Build @var{package} from the latest commit of @var{branch}. The
+@code{source} field of @var{package} must be an origin with the
+@code{git-fetch} method (@pxref{„origin“-Referenz}) or a @code{git-checkout}
+object; the repository URL is taken from that @code{source}.
+
+For instance, the following command builds @code{guile-sqlite3} from the
+latest commit of its @code{master} branch, and then builds @code{guix}
+(which depends on it) and @code{cuirass} (which depends on @code{guix})
+against this specific @code{guile-sqlite3} build:
+
+@example
+guix build --with-branch=guile-sqlite3=master cuirass
+@end example
+
+@cindex continuous integration
+Obviously, since it uses the latest commit of the given branch, the result
+of such a command varies over time. Nevertheless it is a convenient way to
+rebuild entire software stacks against the latest commit of one or more
+packages. This is particularly useful in the context of continuous
+integration (CI).
+
+Checkouts are kept in a cache under @file{~/.cache/guix/checkouts} to speed
+up consecutive accesses to the same repository. You may want to clean it up
+once in a while to save disk space.
+
+@item --with-commit=@var{package}=@var{commit}
+This is similar to @code{--with-branch}, except that it builds from
+@var{commit} rather than the tip of a branch. @var{commit} must be a valid
+Git commit SHA1 identifier.
@end table
@node Zusätzliche Erstellungsoptionen
@item transitive
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
+inputs to the packages. This can be used e.g.@: to prefetch package source
for later offline building.
@example
@end table
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
+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.
@itemx source-file-name
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
+source file name is meaningful, e.g.@: is not just a version number or
``git-checkout'', without a declared @code{file-name} (@pxref{„origin“-Referenz}).
@item cve
guix graph --type=reverse-package ocaml
@end example
-... yields the graph of packages that depend on OCaml.
+...@: yields the graph of packages that depend on OCaml.
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
guix graph --type=bag-emerged coreutils | dot -Tpdf > dag.pdf
@end example
-... yields this bigger graph:
+...@: yields this bigger graph:
@image{images/coreutils-bag-graph,,5in,Detailed dependency graph of the GNU
Coreutils}
@end example
@noindent
-... or to browse the profile:
+...@: or to browse the profile:
@example
$ ls "$GUIX_ENVIRONMENT/bin"
importieren:
@example
-$ gpg --keyserver pgp.mit.edu --recv-keys @value{OPENPGP-SIGNING-KEY-ID}
+$ gpg --keyserver @value{KEY-SERVER} \
+ --recv-keys @value{OPENPGP-SIGNING-KEY-ID}
@end example
@noindent
that, you will have lost your configuration file once you have rebooted into
the newly-installed system.
-@xref{Das Konfigurationssystems nutzen}, for an overview of the configuration
+@xref{Das Konfigurationssystem nutzen}, 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
to support new system services.
@menu
-* Das Konfigurationssystems nutzen:: Ihr GNU-System anpassen
+* Das Konfigurationssystem nutzen:: Ihr GNU-System anpassen.
* „operating-system“-Referenz:: Details der
Betriebssystem-Deklarationen.
* Dateisysteme:: Die Dateisystemeinbindungen konfigurieren.
-* Abgebildete Geräte:: Zusatzverarbeitungsschritte für blockbasierte
- Geräte.
+* Abgebildete Geräte:: Näheres zu blockorientierten Speichermedien.
* Benutzerkonten:: Benutzerkonten festlegen.
-* Locales:: Sprach- und kulturelle
- Konventionseinstellungen.
+* Locales:: Sprache und kulturelle Konventionen.
* Dienste:: Systemdienste festlegen.
-* Setuid-Programme:: Programme mit Administratorrechten ausführen
+* Setuid-Programme:: Mit Administratorrechten startende Programme.
* X.509-Zertifikate:: HTTPS-Server authentifizieren.
* Name Service Switch:: Den Name Service Switch von libc konfigurieren.
* Initiale RAM-Disk:: Linux-libre hochfahren.
* Bootloader-Konfiguration:: Den Bootloader konfigurieren.
-* Aufruf von guix system:: Instanzierung einer Systemkonfiguration
+* Aufruf von guix system:: Instanzierung einer Systemkonfiguration.
* GuixSD in einer VM starten:: Wie man GuixSD in einer virtuellen Maschine
startet.
* Dienste definieren:: Neue Dienstdefinitionen hinzufügen.
@end menu
-@node Das Konfigurationssystems nutzen
-@subsection Das Konfigurationssystems nutzen
+@node Das Konfigurationssystem nutzen
+@subsection Das Konfigurationssystem nutzen
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}
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 and OpenSSH to those, taken from the @code{(gnu packages
-screen)} and @code{(gnu packages ssh)} modules (@pxref{Paketmodule}).
-The @code{(list package output)} syntax can be used to add a specific output
-of a package:
+GNU@tie{}Screen to those, taken from the @code{(gnu packages screen)} module
+(@pxref{Paketmodule}). The @code{(list package output)} syntax can be
+used to add a specific output of a package:
@lisp
(use-modules (gnu packages))
@subsection @code{operating-system} Reference
This section summarizes all the options available in @code{operating-system}
-declarations (@pxref{Das Konfigurationssystems nutzen}).
+declarations (@pxref{Das Konfigurationssystem nutzen}).
@deftp {Data Type} operating-system
This is the data type representing an operating system configuration. By
that, we mean all the global system configuration, not per-user
-configuration (@pxref{Das Konfigurationssystems nutzen}).
+configuration (@pxref{Das Konfigurationssystem nutzen}).
@table @asis
@item @code{kernel} (default: @var{linux-libre})
RAM disk. @xref{Initiale RAM-Disk}.
@item @code{initrd} (default: @code{base-initrd})
-A monadic 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{Initiale RAM-Disk}.
+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{Initiale RAM-Disk}.
@item @code{firmware} (default: @var{%base-firmware})
@cindex firmware
@subsection Dateisysteme
The list of file systems to be mounted is specified in the
-@code{file-systems} field of the operating system declaration (@pxref{Das Konfigurationssystems nutzen}). Each file system is declared using the
+@code{file-systems} field of the operating system declaration (@pxref{Das Konfigurationssystem nutzen}). Each file system is declared using the
@code{file-system} form, like this:
@example
@cindex system services
An important part of preparing an @code{operating-system} declaration is
-listing @dfn{system services} and their configuration (@pxref{Das Konfigurationssystems nutzen}). System services are typically daemons launched when
+listing @dfn{system services} and their configuration (@pxref{Das Konfigurationssystem nutzen}). System services are typically daemons launched when
the system boots, or other actions needed at that time---e.g., configuring
network access.
The above command, run as @code{root}, lists the currently defined
services. The @command{herd doc} command shows a synopsis of the given
-service:
+service and its associated actions:
@example
# herd doc nscd
Run libc's name service cache daemon (nscd).
+
+# herd doc nscd action invalidate
+invalidate: Invalidate the given cache--e.g., 'hosts' for host name lookups.
@end example
The @command{start}, @command{stop}, and @command{restart} sub-commands have
core services, that may be used in an @code{operating-system} declaration.
@menu
-* Basisdienste:: Essenzielle Systemdienste
+* Basisdienste:: Essenzielle Systemdienste.
* Geplante Auftragsausführung:: Der mcron-Dienst.
* Log-Rotation:: Der rottlog-Dienst.
* Netzwerkdienste:: Netzwerkeinrichtung, SSH-Daemon etc.
* Druckdienste:: Unterstützung für lokale und entfernte
Drucker.
* Desktop-Dienste:: D-Bus- und Desktop-Dienste.
-* Tondienste:: Dienste für ALSA und Pulseaudio.
+* Sound Services:: ALSA and Pulseaudio services.
* Datenbankdienste:: SQL-Datenbanken, Schlüssel-Wert-Speicher etc.
* Mail-Dienste:: IMAP, POP3, SMTP und so weiter.
* Kurznachrichtendienste:: Dienste für Kurznachrichten.
* DNS-Dienste:: DNS-Daemons.
* VPN-Dienste:: VPN-Daemons.
* Network File System:: Dienste mit Bezug zum Netzwerkdateisystem.
-* Kontinuierliche Integration:: Der Cuirass-Dienst
+* Kontinuierliche Integration:: Der Cuirass-Dienst.
* Power Management Services:: Extending battery life.
* Audio-Dienste:: Der MPD.
* Virtualisierungsdienste:: Dienste für virtuelle Maschinen.
port from it and use that.
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.
+etc.)@: alone---in the hope that Linux pinned them to the correct values.
@item @code{baud-rate} (default: @code{#f})
A string containing a comma-separated list of one or more baud rates, in
@item @code{login-arguments} (default: @code{'("-p")})
A list of arguments to pass to @command{login}.
+@item @code{auto-login} (default: @code{#f})
+When passed a login name, as a string, the specified user will be logged in
+automatically without prompting for their login name or password.
+
@item @code{hardware-acceleration?} (default: #f)
Whether to use hardware acceleration.
[#:name-services '()] Return a service that runs the libc name service cache
daemon (nscd) with the given @var{config}---an @code{<nscd-configuration>}
object. @xref{Name Service Switch}, for an example.
+
+For convenience, the Shepherd service for nscd provides the following
+actions:
+
+@table @code
+@item invalidate
+@cindex cache invalidation, nscd
+@cindex nscd, cache invalidation
+This invalidate the given cache. For instance, running:
+
+@example
+herd invalidate nscd hosts
+@end example
+
+@noindent
+invalidates the host name lookup cache of nscd.
+
+@item statistics
+Running @command{herd statistics nscd} displays information about nscd usage
+and caches.
+@end table
+
@end deffn
@defvr {Scheme Variable} %nscd-default-configuration
The connman package to use.
@item @code{disable-vpn?} (default: @code{#f})
-When true, enable connman's vpn plugin.
+When true, disable connman's vpn plugin.
@end table
@end deftp
@cindex iptables
@defvr {Scheme Variable} iptables-service-type
-This is the service type to set up an iptables configuration. iptables is a
+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
@cindex NTP (Network Time Protocol), service
@cindex real time clock
@defvr {Scheme Variable} ntp-service-type
-This is the type of the service running the the @uref{http://www.ntp.org,
+This is the type of the service running 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.
@item @code{user}
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
+separated by a colon or period, i.e.@: @code{"user"}, @code{"user:group"} or
@code{"user.group"}.
@item @code{program} (default: @code{"internal"})
The server program which will serve the requests, or @code{"internal"} if
@command{inetd} should use a built-in service.
@item @code{arguments} (default: @code{'()})
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
+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")}.
@end table
Whether to allow gateway ports.
@item @code{challenge-response-authentication?} (default: @code{#f})
-Specifies whether challenge response authentication is allowed (e.g. via
+Specifies whether challenge response authentication is allowed (e.g.@: via
PAM).
@item @code{use-pam?} (default: @code{#t})
user login when a user logs in interactively.
@item @code{subsystems} (default: @code{'(("sftp" "internal-sftp"))})
-Configures external subsystems (e.g. file transfer daemon).
+Configures external subsystems (e.g.@: file transfer daemon).
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
Users need to be in the @code{lp} group to access the D-Bus service.
@end deffn
-@node Tondienste
-@subsubsection Tondienste
+@node Sound Services
+@subsubsection Sound Services
@cindex sound support
@cindex ALSA
@cindex PulseAudio, sound support
The @code{(gnu services sound)} module provides a service to configure the
-Advanced Linux Sound Architecture (ALSA) system, which making PulseAudio the
+Advanced Linux Sound Architecture (ALSA) system, which makes PulseAudio the
preferred ALSA output driver.
@deffn {Scheme Variable} alsa-service-type
@end deftypevr
+@deftypevr {@code{service-configuration} parameter} non-negative-integer client-limit
+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.
+
+Defaults to @samp{0}.
+
+@end deftypevr
+
@deftypevr {@code{service-configuration} parameter} non-negative-integer service-count
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. <doc/wiki/LoginProcess.txt>. Defaults to @samp{1}.
+
+@end deftypevr
+
+@deftypevr {@code{service-configuration} parameter} non-negative-integer process-limit
+Maximum number of processes that can exist for this service. If set to 0,
+@code{default-process-limit} is used instead.
+
+Defaults to @samp{0}.
+
@end deftypevr
@deftypevr {@code{service-configuration} parameter} non-negative-integer process-min-avail
@end deftypevr
@deftypevr {@code{dovecot-configuration} parameter} space-separated-string-list login-access-sockets
-List of login access check sockets (e.g. tcpwrap). Defaults to @samp{()}.
+List of login access check sockets (e.g.@: tcpwrap). Defaults to @samp{()}.
@end deftypevr
@deftypevr {@code{dovecot-configuration} parameter} boolean verbose-proctitle?
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).
+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}.
@end deftypevr
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}.
+if the upgrade is e.g.@: due to a security fix). Defaults to @samp{#t}.
@end deftypevr
@deftypevr {@code{dovecot-configuration} parameter} non-negative-integer doveadm-worker-count
@deftypevr {@code{dovecot-configuration} parameter} boolean disable-plaintext-auth?
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
+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}.
@end deftypevr
@deftypevr {@code{dovecot-configuration} parameter} non-negative-integer auth-cache-size
-Authentication cache size (e.g. @samp{#e10e6}). 0 means it's disabled.
+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}.
@end deftypevr
@deftypevr {@code{dovecot-configuration} parameter} string auth-username-format
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
+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"}.
@deftypevr {@code{dovecot-configuration} parameter} string auth-master-user-separator
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 <username><separator><master username>. UW-IMAP uses @samp{*} as
-the separator, so that could be a good choice. Defaults to @samp{""}.
+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 <username><separator><master username>. UW-IMAP uses
+@samp{*} as the separator, so that could be a good choice. Defaults to
+@samp{""}.
@end deftypevr
@deftypevr {@code{dovecot-configuration} parameter} string auth-anonymous-username
@deftypevr {@code{dovecot-configuration} parameter} non-negative-integer auth-worker-max-count
Maximum number of dovecot-auth worker processes. They're used to execute
-blocking passdb and userdb queries (e.g. MySQL and PAM). They're
+blocking passdb and userdb queries (e.g.@: MySQL and PAM). They're
automatically created and destroyed as needed. Defaults to @samp{30}.
@end deftypevr
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}.
+again. You can also truncate the value to n chars by appending ":n" (e.g.@:
+sha1:6). Defaults to @samp{#f}.
@end deftypevr
@deftypevr {@code{dovecot-configuration} parameter} boolean auth-debug?
Format to use for logging mail deliveries. You can use variables:
@table @code
@item %$
-Delivery status message (e.g. @samp{saved to INBOX})
+Delivery status message (e.g.@: @samp{saved to INBOX})
@item %m
Message-ID
@item %s
user doesn't yet have any mail, so you should explicitly tell Dovecot the
full location.
-If you're using mbox, giving a path to the INBOX file (e.g. /var/mail/%u)
+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.
@deftypevr {@code{dovecot-configuration} parameter} string mail-access-groups
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'
+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{""}.
@end deftypevr
@deftypevr {@code{dovecot-configuration} parameter} boolean mail-full-filesystem-access?
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}.
+both maildir and mboxes, allowing you to prefix mailboxes names with e.g.@:
+/path/ or ~user/. Defaults to @samp{#f}.
@end deftypevr
@deftypevr {@code{dovecot-configuration} parameter} boolean mmap-disable?
@item optimized
Whenever necessary to avoid losing important data
@item always
-Useful with e.g. NFS when write()s are delayed
+Useful with e.g.@: NFS when write()s are delayed
@item never
Never use it (best performance, but crashes can lose data).
@end table
@deftypevr {@code{dovecot-configuration} parameter} colon-separated-file-name-list valid-chroot-dirs
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
+(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
@deftypevr {@code{dovecot-configuration} parameter} string mail-chroot
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}.
+(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}.
<doc/wiki/Chrooting.txt>. Defaults to @samp{""}.
@end deftypevr
@deftypevr {@code{dovecot-configuration} parameter} space-separated-string-list mail-plugins
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
+etc.@: are added to this list in their own .conf files. Defaults to
@samp{()}.
@end deftypevr
@end deftypevr
@deftypevr {@code{dovecot-configuration} parameter} non-negative-integer mbox-min-index-size
-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}.
+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}.
@end deftypevr
@deftypevr {@code{dovecot-configuration} parameter} non-negative-integer mdbox-rotate-size
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@}"}.
+truncated, e.g.@: @code{%@{sha256:80@}} returns only first 80 bits.
+Defaults to @samp{"%@{sha1@}"}.
@end deftypevr
@deftypevr {@code{dovecot-configuration} parameter} non-negative-integer default-process-limit
@deftypevr {@code{dovecot-configuration} parameter} string ssl-ca
PEM encoded trusted certificate authority. Set this only if you intend to
use @samp{ssl-verify-client-cert? #t}. The file should contain the CA
-certificate(s) followed by the matching CRL(s). (e.g. @samp{ssl-ca
+certificate(s) followed by the matching CRL(s). (e.g.@: @samp{ssl-ca
</etc/ssl/certs/ca.pem}). Defaults to @samp{""}.
@end deftypevr
@end deftypevr
@deftypevr {@code{dovecot-configuration} parameter} string hostname
-Hostname to use in various parts of sent mails (e.g. in Message-Id) and in
-LMTP replies. Default is the system's real hostname@@domain. Defaults to
-@samp{""}.
+Hostname to use in various parts of sent mails (e.g.@: in Message-Id) and
+in LMTP replies. Default is the system's real hostname@@domain. Defaults
+to @samp{""}.
@end deftypevr
@deftypevr {@code{dovecot-configuration} parameter} boolean quota-full-tempfail?
@deftypevr {@code{dovecot-configuration} parameter} string imap-capability
Override the IMAP CAPABILITY response. If the value begins with '+', add
-the given capabilities on top of the defaults (e.g. +XFOO XBAR). Defaults
+the given capabilities on top of the defaults (e.g.@: +XFOO XBAR). Defaults
to @samp{""}.
@end deftypevr
ignore the extra @samp{/} instead of treating it as invalid mailbox name.
@item tb-lsub-flags
-Show \Noselect flags for LSUB replies with LAYOUT=fs (e.g. mbox). This
+Show \Noselect flags for LSUB replies with LAYOUT=fs (e.g.@: mbox). This
makes Thunderbird realize they aren't selectable and show them greyed out,
instead of only later giving "not selectable" popup error.
@end table
@deftypevr {@code{mod-muc-configuration} parameter} string-or-boolean restrict-room-creation
If @samp{#t}, this will only allow admins to create new chatrooms.
Otherwise anyone can create a room. The value @samp{"local"} restricts room
-creation to users on the service's parent domain.
-E.g. @samp{user@@example.com} can create rooms on @samp{rooms.example.com}.
-The value @samp{"admin"} restricts to service administrators only. Defaults
-to @samp{#f}.
+creation to users on the service's parent domain. E.g.@:
+@samp{user@@example.com} can create rooms on @samp{rooms.example.com}. The
+value @samp{"admin"} restricts to service administrators only. Defaults to
+@samp{#f}.
@end deftypevr
@deftypevr {@code{mod-muc-configuration} parameter} non-negative-integer max-history-messages
How deep channels can be nested at maximum.
@item @code{channelname-regex} (default: @code{#f})
-A string in from of a Qt regular expression that channel names must conform
+A string in form of a Qt regular expression that channel names must conform
to.
@item @code{username-regex} (default: @code{#f})
-A string in from of a Qt regular expression that user names must conform to.
+A string in form of a Qt regular expression that user names must conform to.
@item @code{text-message-length} (default: @code{5000})
Maximum size in bytes that a user can send in one text chat message.
will not be accepted. Users must have completed the certificate wizard to
join.
-@item @code{remember-channel?} (defualt @code{#f})
+@item @code{remember-channel?} (default: @code{#f})
Should murmur remember the last channel each user was in when they
disconnected and put them into the remembered channel when they rejoin.
default is 31 days of months, but you can set this setting to 0 to keep logs
forever, or -1 to disable logging to the database.
-@item @code{obfuscate-ips?} (default @code{#t})
+@item @code{obfuscate-ips?} (default: @code{#t})
Should logged ips be obfuscated to protect the privacy of users.
@item @code{ssl-cert} (default: @code{#f})
@deffn {Scheme Variable} httpd-service-type
Service type for the @uref{https://httpd.apache.org/,Apache HTTP} server
(@dfn{httpd}). The value for this service type is a
-@code{https-configuration} record.
+@code{httpd-configuration} record.
A simple example configuration is given below.
@item @code{servers}
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.
+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.
@end table
@end deftp
name.
Pass the @code{-n} argument to other Varnish programs to connect to the
-named instance, e.g. @command{varnishncsa -n default}.
+named instance, e.g.@: @command{varnishncsa -n default}.
@item @code{backend} (default: @code{"localhost:8080"})
The backend to use. This option has no effect if @code{vcl} is set.
a special function to finish request & flush all data while continuing to do
something time-consuming (video converting, stats processing, etc.)
@end itemize
-... and much more.
+...@: and much more.
@defvr {Scheme Variable} php-fpm-service-type
A Service type for @code{php-fpm}.
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).
+renewal (e.g.@: reloading services, copying keys with different
+permissions).
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
Location of sqlite database which contains the build results and previously
added specifications.
+@item @code{ttl} (default: @code{(* 30 24 3600)})
+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.
+
@item @code{port} (default: @code{8081})
Port number used by the HTTP server.
@deftypevr {@code{cgit-configuration} parameter} string footer
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).
+at the bottom of all pages (i.e.@: it replaces the standard "generated
+by..."@: message).
Defaults to @samp{""}.
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{Das Konfigurationssystems nutzen}). For instance, the
+setuid-root (@pxref{Das Konfigurationssystem nutzen}). For instance, the
@command{passwd} program, which is part of the Shadow package, can be
designated by this G-expression (@pxref{G-Ausdrücke}):
@cindex initrd
@cindex initial RAM disk
-@deffn {Monadic Procedure} raw-initrd @var{file-systems} @
+@deffn {Scheme Procedure} raw-initrd @var{file-systems} @
[#:linux-modules '()] [#:mapped-devices '()] @ [#:helper-packages '()]
-[#:qemu-networking? #f] [#:volatile-root? #f] Return a monadic 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
+[#: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
changes to it are lost.
@end deffn
-@deffn {Monadic Procedure} base-initrd @var{file-systems} @
+@deffn {Scheme Procedure} base-initrd @var{file-systems} @
[#:mapped-devices '()] [#:qemu-networking? #f] [#:volatile-root? #f]@
-[#:linux-modules '()] Return a monadic derivation that builds 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.
+[#: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.
@var{qemu-networking?} and @var{volatile-root?} behaves as in
@code{raw-initrd}.
of flexibility. The @code{expression->initrd} procedure builds such an
initrd, given the program to run in that initrd.
-@deffn {Monadic Procedure} expression->initrd @var{exp} @
- [#:guile %guile-static-stripped] [#:name "guile-initrd"] Return a derivation
-that builds 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.
+@deffn {Scheme Procedure} expression->initrd @var{exp} @
+ [#: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.
@end deffn
@node Bootloader-Konfiguration
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
+to be upgraded the next time it is stopped (e.g.@: by @code{herd stop X} or
@code{herd restart X}).
This command creates a new generation whose number is one greater than the
@menu
* Dienstkompositionen:: Wie Dienste zusammengestellt werden.
* Diensttypen und Dienste:: Typen und Dienste.
-* Service-Referenz:: Referenz zur Programmierschnittstelle
+* Service-Referenz:: Referenz zur Programmierschnittstelle.
* Shepherd-Dienste:: Eine spezielle Art von Dienst.
@end menu
@var{body} that evaluates to the new service parameters by using the
@code{inherit} feature that @code{define-record-type*} provides.
-@xref{Das Konfigurationssystems nutzen}, for example usage.
+@xref{Das Konfigurationssystem nutzen}, for example usage.
@end deffn
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{Das Konfigurationssystems nutzen}) results in a service graph like this:
+The simple operating system defined earlier (@pxref{Das Konfigurationssystem nutzen}) results in a service graph like this:
@image{images/shepherd-graph,,5in,Typical shepherd service graph.}
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
+starts with @code{py} (e.g.@: @code{pytz}), we keep it and prefix it as
described above.
@subsubsection Specifying Dependencies
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 do download it for the supported
+@file{gnu/local.mk} has rules to download it for the supported
architectures; a rule for the new platform must be added as well.
In practice, there may be some complications. First, it may be that the