Browse Source

Merge branch 'staging' into core-updates

gn-latest-20200725
Marius Bakke 1 year ago
parent
commit
19008a22d1
No known key found for this signature in database GPG Key ID: A2A06DF2A33A54FA
91 changed files with 15308 additions and 10696 deletions
  1. +19
    -19
      Makefile.am
  2. +532
    -58
      doc/contributing.de.texi
  3. +9800
    -8829
      doc/guix.de.texi
  4. +123
    -45
      doc/guix.texi
  5. BIN
      doc/images/installer-network.png
  6. BIN
      doc/images/installer-partitions.png
  7. BIN
      doc/images/installer-resume.png
  8. +5
    -2
      doc/local.mk
  9. +2
    -2
      gnu/bootloader/extlinux.scm
  10. +4
    -4
      gnu/bootloader/grub.scm
  11. +25
    -2
      gnu/build/linux-modules.scm
  12. +3
    -3
      gnu/build/vm.scm
  13. +2
    -2
      gnu/ci.scm
  14. +3
    -3
      gnu/installer/newt/network.scm
  15. +2
    -2
      gnu/installer/newt/welcome.scm
  16. +1
    -0
      gnu/local.mk
  17. +10
    -7
      gnu/packages.scm
  18. +14
    -15
      gnu/packages/admin.scm
  19. +20
    -6
      gnu/packages/aspell.scm
  20. +23
    -4
      gnu/packages/audio.scm
  21. +789
    -0
      gnu/packages/bioconductor.scm
  22. +121
    -39
      gnu/packages/bioinformatics.scm
  23. +4
    -2
      gnu/packages/bootloaders.scm
  24. +3
    -3
      gnu/packages/compression.scm
  25. +900
    -0
      gnu/packages/cran.scm
  26. +1
    -1
      gnu/packages/curl.scm
  27. +18
    -24
      gnu/packages/databases.scm
  28. +12
    -11
      gnu/packages/education.scm
  29. +288
    -17
      gnu/packages/emacs-xyz.scm
  30. +1
    -1
      gnu/packages/emacs.scm
  31. +1
    -1
      gnu/packages/emulators.scm
  32. +6
    -6
      gnu/packages/engineering.scm
  33. +2
    -2
      gnu/packages/fpga.scm
  34. +30
    -2
      gnu/packages/freedesktop.scm
  35. +3
    -3
      gnu/packages/ftp.scm
  36. +10
    -10
      gnu/packages/games.scm
  37. +2
    -2
      gnu/packages/geo.scm
  38. +32
    -38
      gnu/packages/gnome.scm
  39. +2
    -2
      gnu/packages/gtk.scm
  40. +116
    -9
      gnu/packages/guile-xyz.scm
  41. +1
    -1
      gnu/packages/guile.scm
  42. +2
    -2
      gnu/packages/image.scm
  43. +1
    -1
      gnu/packages/julia.scm
  44. +1
    -1
      gnu/packages/kde-frameworks.scm
  45. +19
    -1
      gnu/packages/kodi.scm
  46. +3
    -3
      gnu/packages/libevent.scm
  47. +7
    -7
      gnu/packages/linux.scm
  48. +4
    -4
      gnu/packages/llvm.scm
  49. +103
    -0
      gnu/packages/machine-learning.scm
  50. +2
    -2
      gnu/packages/maths.scm
  51. +5
    -5
      gnu/packages/music.scm
  52. +50
    -51
      gnu/packages/networking.scm
  53. +2
    -2
      gnu/packages/package-management.scm
  54. +61
    -0
      gnu/packages/patches/pugixml-versioned-libdir.patch
  55. +12
    -9
      gnu/packages/photo.scm
  56. +1
    -1
      gnu/packages/polkit.scm
  57. +29
    -15
      gnu/packages/python-xyz.scm
  58. +2
    -2
      gnu/packages/samba.scm
  59. +2
    -2
      gnu/packages/shells.scm
  60. +18
    -27
      gnu/packages/skarnet.scm
  61. +2
    -2
      gnu/packages/statistics.scm
  62. +62
    -10
      gnu/packages/terminals.scm
  63. +4
    -4
      gnu/packages/tex.scm
  64. +6
    -5
      gnu/packages/tls.scm
  65. +50
    -0
      gnu/packages/tmux.scm
  66. +78
    -77
      gnu/packages/video.scm
  67. +4
    -4
      gnu/packages/vulkan.scm
  68. +2
    -2
      gnu/packages/w3m.scm
  69. +16
    -16
      gnu/packages/web.scm
  70. +3
    -2
      gnu/packages/webkit.scm
  71. +148
    -0
      gnu/packages/wm.scm
  72. +5
    -3
      gnu/packages/xml.scm
  73. +20
    -26
      gnu/packages/xorg.scm
  74. +54
    -23
      gnu/services/base.scm
  75. +5
    -0
      gnu/services/configuration.scm
  76. +1
    -1
      gnu/services/cups.scm
  77. +5
    -1
      gnu/services/desktop.scm
  78. +1
    -1
      gnu/services/mail.scm
  79. +1
    -1
      gnu/services/messaging.scm
  80. +33
    -24
      gnu/services/monitoring.scm
  81. +1
    -1
      gnu/system/examples/vm-image.tmpl
  82. +1
    -1
      gnu/system/install.scm
  83. +13
    -1
      gnu/system/linux-container.scm
  84. +23
    -34
      gnu/system/mapped-devices.scm
  85. +3
    -3
      gnu/system/vm.scm
  86. +2
    -2
      gnu/tests/install.scm
  87. +20
    -11
      guix/describe.scm
  88. +2
    -2
      guix/modules.scm
  89. +4
    -12
      guix/packages.scm
  90. +1
    -1
      nix/libstore/optimise-store.cc
  91. +1484
    -1114
      po/doc/guix-manual.de.po

+ 19
- 19
Makefile.am View File

@@ -661,17 +661,17 @@ SUPPORTED_SYSTEMS ?= x86_64-linux i686-linux armhf-linux aarch64-linux
BINARY_TARBALLS = \
$(foreach system,$(SUPPORTED_SYSTEMS),guix-binary.$(system).tar.xz)

# Systems supported by GuixSD.
GUIXSD_SUPPORTED_SYSTEMS ?= x86_64-linux i686-linux
# Systems supported by Guix System.
GUIX_SYSTEM_SUPPORTED_SYSTEMS ?= x86_64-linux i686-linux

# Systems for which we build GuixSD VMs.
GUIXSD_VM_SYSTEMS ?= x86_64-linux
# Systems for which we build Guix VMs.
GUIX_SYSTEM_VM_SYSTEMS ?= x86_64-linux

# Prefix of the GuixSD installation image file name.
GUIXSD_IMAGE_BASE = guixsd-install-$(PACKAGE_VERSION)
# Prefix of the Guix installation image file name.
GUIX_SYSTEM_IMAGE_BASE = guix-system-install-$(PACKAGE_VERSION)

# Prefix of the GuixSD VM image file name.
GUIXSD_VM_IMAGE_BASE = guixsd-vm-image-$(PACKAGE_VERSION)
# Prefix of the Guix VM image file name.
GUIX_SYSTEM_VM_IMAGE_BASE = guix-system-vm-image-$(PACKAGE_VERSION)

# The release process works in several phases:
#
@@ -680,7 +680,7 @@ GUIXSD_VM_IMAGE_BASE = guixsd-vm-image-$(PACKAGE_VERSION)
# 2. Update the 'guix' package so that it corresponds to the 'vX.Y' tag.
# 3. Build the binary tarballs for that 'guix' package.
# 4. Update the 'guix' package again.
# 5. Build the GuixSD installation images. The images will run 'guix'
# 5. Build the installation images. The images will run 'guix'
# corresponding to 'vX.Y' + 1 commit, and they will install 'vX.Y'.
#
# This 'release' target takes care of everything and copies the resulting
@@ -713,32 +713,32 @@ release: dist
"`git rev-parse HEAD`"
git add $(top_srcdir)/gnu/packages/package-management.scm
git commit -m "gnu: guix: Update to `git rev-parse HEAD | cut -c1-7`."
for system in $(GUIXSD_SUPPORTED_SYSTEMS) ; do \
for system in $(GUIX_SYSTEM_SUPPORTED_SYSTEMS) ; do \
image=`$(top_builddir)/pre-inst-env \
guix system disk-image \
--file-system-type=iso9660 \
--system=$$system \
gnu/system/install.scm` ; \
if [ ! -f "$$image" ] ; then \
echo "failed to produced GuixSD installation image for $$system" >&2 ; \
echo "failed to produced Guix installation image for $$system" >&2 ; \
exit 1 ; \
fi ; \
xz < "$$image" > "$(releasedir)/$(GUIXSD_IMAGE_BASE).$$system.iso.xz.tmp" ; \
mv "$(releasedir)/$(GUIXSD_IMAGE_BASE).$$system.iso.xz.tmp" \
"$(releasedir)/$(GUIXSD_IMAGE_BASE).$$system.iso.xz" ; \
xz < "$$image" > "$(releasedir)/$(GUIX_SYSTEM_IMAGE_BASE).$$system.iso.xz.tmp" ; \
mv "$(releasedir)/$(GUIX_SYSTEM_IMAGE_BASE).$$system.iso.xz.tmp" \
"$(releasedir)/$(GUIX_SYSTEM_IMAGE_BASE).$$system.iso.xz" ; \
done
for system in $(GUIXSD_VM_SYSTEMS) ; do \
for system in $(GUIX_SYSTEM_VM_SYSTEMS) ; do \
image=`$(top_builddir)/pre-inst-env \
guix system vm-image \
--system=$$system \
gnu/system/examples/vm-image.tmpl` ; \
if [ ! -f "$$image" ] ; then \
echo "failed to produced GuixSD VM image for $$system" >&2 ; \
echo "failed to produced Guix VM image for $$system" >&2 ; \
exit 1 ; \
fi ; \
xz < "$$image" > "$(releasedir)/$(GUIXSD_VM_IMAGE_BASE).$$system.xz.tmp" ; \
mv "$(releasedir)/$(GUIXSD_VM_IMAGE_BASE).$$system.xz.tmp" \
"$(releasedir)/$(GUIXSD_VM_IMAGE_BASE).$$system.xz" ; \
xz < "$$image" > "$(releasedir)/$(GUIX_SYSTEM_VM_IMAGE_BASE).$$system.xz.tmp" ; \
mv "$(releasedir)/$(GUIX_SYSTEM_VM_IMAGE_BASE).$$system.xz.tmp" \
"$(releasedir)/$(GUIX_SYSTEM_VM_IMAGE_BASE).$$system.xz" ; \
done
@echo
@echo "Congratulations! All the release files are now in $(releasedir)."


+ 532
- 58
doc/contributing.de.texi View File

@@ -27,6 +27,7 @@ beliebigen Namen oder ein Pseudonym ihrer Wahl verwenden.
* Erstellung aus dem Git:: Das Neueste und Beste.
* Guix vor der Installation ausführen:: Hacker-Tricks.
* Perfekt eingerichtet:: Die richtigen Werkzeuge.
* Paketrichtlinien:: Die Distribution wachsen lassen.
* Code-Stil:: Wie Mitwirkende hygienisch arbeiten.
* Einreichen von Patches:: Teilen Sie Ihre Arbeit.
@end menu
@@ -114,15 +115,17 @@ lokalen Quellbaum vorgenommenen Änderungen zunächst zu testen, ohne sie
tatsächlich zu installieren. So können Sie zwischen Ihrem
Endnutzer-»Straßenanzug« und Ihrem »Faschingskostüm« unterscheiden.

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{Erstellung aus dem 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.}:
Zu diesem Zweck können alle Befehlszeilenwerkzeuge auch schon benutzt
werden, ohne dass Sie @code{make install} laufen lassen. Dazu müssen Sie
sich in einer Umgebung befinden, in der alle Abhängigkeiten von Guix
verfügbar sind (@pxref{Erstellung aus dem Git}) und darin einfach vor jeden
Befehl @command{./pre-inst-env} schreiben (das Skript @file{pre-inst-env}
befindet sich auf oberster Ebene im Verzeichnis, wo Guix erstellt wird, wo
es durch @command{./configure} erzeugt wird), zum Beispiel so@footnote{Die
Befehlszeilenoption @option{-E} von @command{sudo} stellt sicher, dass
@code{GUILE_LOAD_PATH} richtig gesetzt wird, damit @command{guix-daemon} und
die davon benutzten Werkzeuge die von ihnen benötigten Guile-Module finden
können.}:

@example
$ sudo -E ./pre-inst-env guix-daemon --build-users-group=guixbuild
@@ -164,21 +167,25 @@ Das @command{pre-inst-env}-Skript richtet alle Umgebungsvariablen ein, die
nötig sind, um dies zu ermöglichen, einschließlich @env{PATH} und
@env{GUILE_LOAD_PATH}.

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{Aufruf von guix pull}). Run @command{git pull} instead if you
want to upgrade your local source tree.
Beachten Sie, dass @command{./pre-inst-env guix pull} den lokalen Quellbaum
@emph{nicht} aktualisiert; es aktualisiert lediglich die symbolische
Verknüpfung @file{~/.config/guix/current} (@pxref{Aufruf von guix pull}). Um
Ihren lokalen Quellbaum zu aktualisieren, müssen Sie stattdessen
@command{git pull} benutzen.


@node Perfekt eingerichtet
@section Perfekt eingerichtet

Um perfekt für das Hacken an Guix eingerichtet zu sein, brauchen Sie an sich
dasselbe wie um perfekt für das Hacken mit Guile (@pxref{Using Guile in
Emacs,,, guile, Guile Reference Manual}). Zunächst brauchen Sie mehr als
ein Textverarbeitungsprogramm, Sie brauchen
@url{http://www.gnu.org/software/emacs, Emacs}, ermächtigt vom wunderbaren
@url{http://nongnu.org/geiser/, Geiser}.
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}. To set that up, run:

@example
guix package -i emacs guile emacs-geiser
@end example

Geiser ermöglicht interaktive und inkrementelle Entwicklung aus Emacs
heraus: Code kann in Puffern kompiliert und ausgewertet werden. Zugang zu
@@ -218,12 +225,14 @@ umzuschreiben. Vielleicht möchten Sie das Schnipselverzeichnis zu Ihrer
(add-to-list 'yas-snippet-dirs "~/src/guix/etc/snippets"))
@end lisp

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.
Die Schnipsel für Commit-Nachrichten setzen @url{https://magit.vc/, Magit}
voraus, um zum Commit vorgemerkte Dateien anzuzeigen. Wenn Sie eine
Commit-Nachricht bearbeiten, können Sie @code{add} gefolgt von @kbd{TAB}
eintippen, um eine Commit-Nachrichten-Vorlage für das Hinzufügen eines
Pakets zu erhalten; tippen Sie @code{update} gefolgt von @kbd{TAB} ein, um
eine Vorlage zum Aktualisieren eines Pakets zu bekommen; tippen Sie
@code{https} gefolgt von @kbd{TAB} ein, um eine Vorlage zum Ändern der
Homepage-URI eines Pakets auf HTTPS einzufügen.

Das Hauptschnipsel für @code{scheme-mode} wird ausgelöst, indem Sie
@code{package...} gefolgt von @kbd{TAB} eintippen. Dieses Snippet fügt auch
@@ -233,6 +242,445 @@ Auslöse-Zeichenketten einfügen, die alle auf @code{...} enden, was selbst
wieder weiter umgeschrieben werden kann.


@node Paketrichtlinien
@section Paketrichtlinien

@cindex packages, creating
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.

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.

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{Paketmodule}). However,
in-depth Scheme knowledge is @emph{not} a prerequisite for creating
packages. For more information on package definitions, @pxref{Pakete definieren}.

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{Aufruf von guix build}). For example, assuming the new package is
called @code{gnew}, you may run this command from the Guix build tree
(@pxref{Guix vor der Installation ausführen}):

@example
./pre-inst-env guix build gnew --keep-failed
@end example

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.

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:

@example
./pre-inst-env guile -c '(use-modules (gnu packages gnew))'
@end example

Once your package builds correctly, please send us a patch
(@pxref{Einreichen von Patches}). 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}.

@cindex substituter
Users can obtain the new package definition simply by running @command{guix
pull} (@pxref{Aufruf von guix pull}). When @code{@value{SUBSTITUTE-SERVER}}
is done building the package, installing the package automatically downloads
binaries from there (@pxref{Substitute}). The only place where human
intervention is needed is to review and apply the patch.


@menu
* Software-Freiheit:: Was in die Distribution aufgenommen werden
darf.
* Paketbenennung:: Was macht einen Namen aus?
* Versionsnummern:: Wenn der Name noch nicht genug ist.
* Zusammenfassungen und Beschreibungen:: Den Nutzern helfen, das richtige
Paket zu finden.
* Python-Module:: Ein Touch britischer Comedy.
* Perl-Module:: Kleine Perlen.
* Java-Pakete:: Kaffeepause.
* Schriftarten:: Schriften verschriftlicht.
@end menu

@node Software-Freiheit
@subsection Software-Freiheit

@c ===========================================================================
@c
@c This file was generated with po4a. Translate the source file.
@c
@c ===========================================================================
@c Adapted from http://www.gnu.org/philosophy/philosophy.html.
@cindex free software
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.

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.

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{Pakete definieren}). This way, @code{guix build --source}
returns the ``freed'' source rather than the unmodified upstream source.


@node Paketbenennung
@subsection Paketbenennung

@cindex package name
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}.

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}.

We do not add @code{lib} prefixes for library packages, unless these are
already part of the official project name. But @pxref{Python-Module} and
@ref{Perl-Module} for special rules concerning modules for the Python and
Perl languages.

Font package names are handled differently, @pxref{Schriftarten}.


@node Versionsnummern
@subsection Versionsnummern

@cindex package version
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{Paketbenennung}
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.

The name inside the package definition is the same for all versions of a
package and does not contain any version number.

Zum Beispiel können für GTK in den Versionen 2.24.20 und 3.9.12 Pakete wie
folgt geschrieben werden:

@example
(define-public gtk+
(package
(name "gtk+")
(version "3.9.12")
...))
(define-public gtk+-2
(package
(name "gtk+")
(version "2.24.20")
...))
@end example
Wenn wir auch GTK 3.8.2 wollten, würden wir das Paket schreiben als
@example
(define-public gtk+-3.8
(package
(name "gtk+")
(version "3.8.2")
...))
@end example

@c See <https://lists.gnu.org/archive/html/guix-devel/2016-01/msg00425.html>,
@c for a discussion of what follows.
@cindex version number, for VCS snapshots
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?

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:

@example
2.0.11-3.cabba9e
^ ^ ^
| | `-- upstream commit ID
| |
| `--- Guix package revision
|
latest upstream version
@end example

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:

@example
(define my-package
(let ((commit "c3f29bc928d5900971f65965feaae59e1272a3f7")
(revision "1")) ;Guix package revision
(package
(version (git-version "0.9" revision commit))
(source (origin
(method git-fetch)
(uri (git-reference
(url "git://example.org/my-package.git")
(commit commit)))
(sha256 (base32 "1mbikn@dots{}"))
(file-name (git-file-name name version))))
;; @dots{}
)))
@end example

@node Zusammenfassungen und Beschreibungen
@subsection Zusammenfassungen und Beschreibungen

@cindex package description
@cindex package synopsis
As we have seen before, each package in GNU@tie{}Guix includes a synopsis
and a description (@pxref{Pakete definieren}). 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.

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''.

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.

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.

@cindex Texinfo markup, in package descriptions
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.

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.

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:

@lisp
(package
;; @dots{}
(synopsis "This is translatable")
(description (string-append "This is " "*not*" " translatable.")))
@end lisp

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}):

@example
;; TRANSLATORS: "X11 resize-and-rotate" should not be translated.
(description "ARandR is designed to provide a simple visual front end
for the X11 resize-and-rotate (RandR) extension. @dots{}")
@end example


@node Python-Module
@subsection Python-Module

@cindex python
We currently package Python 2 and Python 3, under the Scheme variable names
@code{python-2} and @code{python} as explained in @ref{Versionsnummern}. 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}.

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.

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.

@subsubsection Specifying Dependencies
@cindex inputs, for Python packages

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}.

Your mission, when writing a recipe for a Python package, is to map these
dependencies to the appropriate type of ``input'' (@pxref{»package«-Referenz,
inputs}). Although the @code{pypi} importer normally does a good job
(@pxref{Aufruf von guix import}), you may want to check the following check
list to determine which dependency goes where.

@itemize

@item
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.

@item
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.

@item
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.

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}.

@item
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.

@item
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{Einreichen von Patches, @command{guix size}}).

@end itemize


@node Perl-Module
@subsection Perl-Module

@cindex perl
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}.


@node Java-Pakete
@subsection Java-Pakete

@cindex java
Java programs standing for themselves are named as any other package, using
the lowercase upstream name.

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}.

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}.


@node Schriftarten
@subsection Schriftarten

@cindex Schriftarten
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.

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.

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}.

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}.

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.


@node Code-Stil
@section Code-Stil

@@ -382,6 +830,33 @@ geänderte Paket bezeichnet, und beheben Sie alle gemeldeten Fehler
Stellen Sie sicher, dass das Paket auf Ihrer Plattform erstellt werden kann,
indem Sie @code{guix build @var{Paket}} ausführen.

@item
We recommend you also try building the package on other supported
platforms. As you may not have access to actual hardware platforms, we
recommend using the @code{qemu-binfmt-service-type} to emulate them. In
order to enable it, add the following service to the list of services in
your @code{operating-system} configuration:

@example
(service qemu-binfmt-service-type
(qemu-binfmt-configuration
(platforms (lookup-qemu-platforms "arm" "aarch64" "ppc" "mips64el"))
(guix-support? #t)))
@end example

Then reconfigure your system.

You can then build packages for different platforms by specifying the
@code{--system} option. For example, to build the "hello" package for the
armhf, aarch64, powerpc, or mips64 architectures, you would run the
following commands, respectively:
@example
guix build --system=armhf-linux --rounds=2 hello
guix build --system=aarch64-linux --rounds=2 hello
guix build --system=powerpc-linux --rounds=2 hello
guix build --system=mips64el-linux --rounds=2 hello
@end example

@item
@cindex gebündelt
Achten Sie darauf, dass im Paket keine Software gebündelt mitgeliefert wird,
@@ -399,22 +874,18 @@ einzuspielen, die aber das gesamte System betreffen — gebündelt
mitgelieferte Kopien würden dies verhindern.

@item
Schauen Sie sich das von @command{guix size} ausgegebene Profil an
(@pxref{Aufruf von guix size}). Dadurch können Sie Referenzen auf andere
Pakete finden, die ungewollt vorhanden sind. Dies kann auch dabei helfen, zu
entscheiden, ob das Paket aufgespalten werden sollte (@pxref{Pakete mit mehreren Ausgaben.}) und welche optionalen Abhängigkeiten verwendet werden
sollten.
Take a look at the profile reported by @command{guix size} (@pxref{Aufruf von 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{Pakete mit mehreren Ausgaben.}), and which optional
dependencies should be used. In particular, avoid adding @code{texlive} as
a dependency: because of its extreme size, use @code{texlive-tiny} or
@code{texlive-union} instead.

@item
Achten Sie bei wichtigen Änderungen darauf, dass abhängige Pakete (falls
vorhanden) nicht von der Änderung beeinträchtigt werden; @code{guix refresh
--list-dependent @var{Paket}} hilft Ihnen dabei (@pxref{Aufruf von guix refresh}).

@c ===========================================================================
@c
@c This file was generated with po4a. Translate the source file.
@c
@c ===========================================================================
@c See <https://lists.gnu.org/archive/html/guix-devel/2016-10/msg00933.html>.
@cindex Branching-Strategie
@cindex Neuerstellungs-Zeitplan
@@ -438,17 +909,20 @@ beeinträchtigende Änderungen umfassen). Dieser Branch wird planmäßig in
@code{master} alle 2,5 Monate oder so gemerget.
@end table

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.
All diese Branches werden kontinuierlich
@uref{https://hydra.gnu.org/project/gnu, auf unserer Build-Farm} erstellt
und in @code{master} gemerget, sobald alles erfolgreich erstellt worden
ist. Dadurch können wir Probleme beheben, bevor sie bei Nutzern auftreten,
und zudem das Zeitfenster, während dessen noch keine vorerstellten
Binärdateien verfügbar sind, verkürzen.

@c TODO: It would be good with badges on the website that tracks these
@c branches. Or maybe even a status page.
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.
Im Allgemeinen werden Branches außer @code{master} als @emph{unveränderlich}
angesehen, wenn sie kürzlich ausgewertet wurden oder ein entsprechender
@code{-next}-Branch existiert. Bitte fragen Sie auf der Mailing-Liste oder
IRC, wenn Sie sich nicht sicher sind, wo ein Patch eingespielt werden
sollte.

@item
@cindex Determinismus, von Erstellungsprozessen
@@ -468,16 +942,14 @@ Dies reicht aus, um eine ganze Klasse häufiger Ursachen von
Nichtdeterminismus zu finden, wie zum Beispiel Zeitstempel oder
zufallsgenerierte Ausgaben im Ergebnis der Erstellung.

Eine weitere Möglichkeit ist, @command{guix challenge} (@pxref{Aufruf von guix challenge}) zu benutzen. Sie können es ausführen, sobald ein Paket commitet
und von @code{hydra.gnu.org} erstellt wurde, um zu sehen, ob dort dasselbe
Ergebnis wie bei Ihnen geliefert wurde. Noch besser: Finden Sie eine andere
Maschine, die das Paket erstellen kann, und führen Sie @command{guix
publish} aus. Da sich die entfernte Erstellungsmaschine wahrscheinlich von
Ihrer unterscheidet, können Sie auf diese Weise Probleme durch
Nichtdeterminismus erkennen, die mit der Hardware zu tun haben — zum
Beispiel die Nutzung anderer Befehlssatzerweiterungen — oder mit dem
Betriebssystem-Kernel — zum Beispiel, indem @code{uname} oder
@file{/proc}-Dateien verwendet werden.
Another option is to use @command{guix challenge} (@pxref{Aufruf von guix challenge}). You may run it once the package has been committed and built
by @code{@value{SUBSTITUTE-SERVER}} 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.

@item
Beim Schreiben von Dokumentation achten Sie bitte auf eine
@@ -500,11 +972,13 @@ wollen Sie dies automatisch tun lassen durch das Skript
@command{etc/indent-code.el} (@pxref{Formatierung von Code}).

@item
When possible, use mirrors in the source URL (@pxref{Aufruf von 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.
Benutzen Sie, wenn möglich, Spiegelserver (Mirrors) in der Quell-URL
(@pxref{Aufruf von guix download}). Verwenden Sie verlässliche URLs, keine
automatisch generierten. Zum Beispiel sind Archive von GitHub nicht immer
identisch von einer Generation auf die nächste, daher ist es in diesem Fall
besser, als Quelle einen Klon des Repositorys zu verwenden. Benutzen Sie
@emph{nicht} das @command{name}-Feld beim Angeben der URL; er hilft nicht
wirklich und wenn sich der Name ändert, stimmt die URL nicht mehr.

@end enumerate



+ 9800
- 8829
doc/guix.de.texi
File diff suppressed because it is too large
View File


+ 123
- 45
doc/guix.texi View File

@@ -165,10 +165,17 @@ System Installation
* Hardware Considerations:: Supported hardware.
* USB Stick and DVD Installation:: Preparing the installation medium.
* Preparing for Installation:: Networking, partitioning, etc.
* Proceeding with the Installation:: The real thing.
* Guided Graphical Installation:: Easy graphical installation.
* Manual Installation:: Manual installation for wizards.
* After System Installation:: When installation succeeded.
* Installing Guix in a VM:: Guix System playground.
* Building the Installation Image:: How this comes to be.

Manual Installation

* Keyboard Layout and Networking and Partitioning:: Initial setup.
* Proceeding with the Installation:: Installing.

Package Management

* Features:: How Guix will make your life brighter.
@@ -1777,7 +1784,9 @@ available.
* Hardware Considerations:: Supported hardware.
* USB Stick and DVD Installation:: Preparing the installation medium.
* Preparing for Installation:: Networking, partitioning, etc.
* Proceeding with the Installation:: The real thing.
* Guided Graphical Installation:: Easy graphical installation.
* Manual Installation:: Manual installation for wizards.
* After System Installation:: When installation succeeded.
* Installing Guix in a VM:: Guix System playground.
* Building the Installation Image:: How this comes to be.
@end menu
@@ -1866,7 +1875,7 @@ about their support in GNU/Linux.

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},
@indicateurl{https://alpha.gnu.org/gnu/guix/guix-system-install-@value{VERSION}.@var{system}.iso.xz},
where @var{system} is one of:

@table @code
@@ -1882,8 +1891,8 @@ Make sure to download the associated @file{.sig} file and to verify the
authenticity of the image against it, along these lines:

@example
$ wget https://alpha.gnu.org/gnu/guix/guixsd-install-@value{VERSION}.@var{system}.iso.xz.sig
$ gpg --verify guixsd-install-@value{VERSION}.@var{system}.iso.xz.sig
$ wget https://alpha.gnu.org/gnu/guix/guix-system-install-@value{VERSION}.@var{system}.iso.xz.sig
$ gpg --verify guix-system-install-@value{VERSION}.@var{system}.iso.xz.sig
@end example

If that command fails because you do not have the required public key,
@@ -1910,7 +1919,7 @@ To copy the image to a USB stick, follow these steps:
Decompress the image using the @command{xz} command:

@example
xz -d guixsd-install-@value{VERSION}.@var{system}.iso.xz
xz -d guix-system-install-@value{VERSION}.@var{system}.iso.xz
@end example

@item
@@ -1919,7 +1928,7 @@ its device name. Assuming that the USB stick is known as @file{/dev/sdX},
copy the image with:

@example
dd if=guixsd-install-@value{VERSION}.@var{system}.iso of=/dev/sdX
dd if=guix-system-install-@value{VERSION}.@var{system}.iso of=/dev/sdX
sync
@end example

@@ -1935,7 +1944,7 @@ To copy the image to a DVD, follow these steps:
Decompress the image using the @command{xz} command:

@example
xz -d guixsd-install-@value{VERSION}.@var{system}.iso.xz
xz -d guix-system-install-@value{VERSION}.@var{system}.iso.xz
@end example

@item
@@ -1944,7 +1953,7 @@ its device name. Assuming that the DVD drive is known as @file{/dev/srX},
copy the image with:

@example
growisofs -dvd-compat -Z /dev/srX=guixsd-install-@value{VERSION}.@var{system}.iso
growisofs -dvd-compat -Z /dev/srX=guix-system-install-@value{VERSION}.@var{system}.iso
@end example

Access to @file{/dev/srX} usually requires root privileges.
@@ -1963,21 +1972,19 @@ Guix System in a virtual machine (VM).
@node Preparing for Installation
@section Preparing for Installation

Once you have successfully booted your computer using the installation medium,
you should end up with the welcome page of the graphical installer. The
graphical installer is a text-based user interface built upon the newt
library. It shall guide you through all the different steps needed to install
GNU@tie{}Guix System. However, as the graphical installer is still under heavy
development, you might want to fallback to the original, shell based install
process, by switching to TTYs 3 to 6 with the shortcuts CTRL-ALT-F[3-6]. The
following sections describe the installation procedure assuming you're using
one of those TTYs. They are configured and can be used to run commands as
root.
Once you have booted, you can use the guided graphical installer, which makes
it easy to get started (@pxref{Guided Graphical Installation}). Alternately,
if you are already familiar with GNU/Linux and if you want more control than
what the graphical installer provides, you can choose the ``manual''
installation process (@pxref{Manual Installation}).

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.
The graphical installer is available on TTY1. You can obtain root shells on
TTYs 3 to 6 by hitting @kbd{ctrl-alt-f3}, @kbd{ctrl-alt-f4}, etc. TTY2 shows
this documentation and you can reach it with @kbd{ctrl-alt-f2}. Documentation
is 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.

@quotation Note
Installation requires access to the Internet so that any missing
@@ -1985,12 +1992,65 @@ dependencies of your system configuration can be downloaded. See the
``Networking'' section below.
@end quotation

The installation system includes many common tools needed for this task.
But it is also a full-blown Guix System, which means that you can
install additional packages, should you need it, using @command{guix
package} (@pxref{Invoking guix package}).
@node Guided Graphical Installation
@section Guided Graphical Installation

The graphical installer is a text-based user interface. It will guide you,
with dialog boxes, through the steps needed to install GNU@tie{}Guix System.

The first dialog boxes allow you to set up the system as you use it during the
installation: you can choose the language, keyboard layout, and set up
networking, which will be used during the installation. The image below shows
the networking dialog.

@image{images/installer-network,5in,, networking setup with the graphical installer}

Later steps allow you to partition your hard disk, as shown in the image
below, to choose whether or not to use encrypted file systems, to enter the
host name and root password, and to create an additional account, among other
things.

@image{images/installer-partitions,5in,, partitioning with the graphical installer}

@subsection Keyboard Layout
Note that, at any time, the installer allows you to exit the current
installation step and resume at a previous step, as show in the image below.

@image{images/installer-resume,5in,, resuming the installation process}

Once you're done, the installer produces an operating system configuration and
displays it (@pxref{Using the Configuration System}). At that point you can
hit ``OK'' and installation will proceed. On success, you can reboot into the
new system and enjoy. @xref{After System Installation}, for what's next!


@node Manual Installation
@section Manual Installation

This section describes how you would ``manually'' install GNU@tie{}Guix System
on your machine. This option requires familiarity with GNU/Linux, with the
shell, and with common administration tools. If you think this is not for
you, consider using the guided graphical installer (@pxref{Guided Graphical
Installation}).

The installation system provides root shells on TTYs 3 to 6; press
@kbd{ctrl-alt-f3}, @kbd{ctrl-alt-f4}, and so on to reach them. It includes
many common tools needed to install the system. But it is also a full-blown
Guix System, which means that you can install additional packages, should you
need it, using @command{guix package} (@pxref{Invoking guix package}).

@menu
* Keyboard Layout and Networking and Partitioning:: Initial setup.
* Proceeding with the Installation:: Installing.
@end menu

@node Keyboard Layout and Networking and Partitioning
@subsection Keyboard Layout, Networking, and Partitioning

Before you can install the system, you may want to adjust the keyboard layout,
set up networking, and partition your target hard disk. This section will
guide you through this.

@subsubsection Keyboard Layout

@cindex keyboard layout
The installation image uses the US qwerty keyboard layout. If you want
@@ -2005,7 +2065,7 @@ 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.

@subsection Networking
@subsubsection Networking

Run the following command to see what your network interfaces are called:

@@ -2098,7 +2158,7 @@ herd start ssh-daemon
Make sure to either set a password with @command{passwd}, or configure
OpenSSH public key authentication before logging in.

@subsection Disk Partitioning
@subsubsection Disk Partitioning

Unless this has already been done, the next step is to partition, and
then format the target partition(s).
@@ -2219,7 +2279,7 @@ 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.

@node Proceeding with the Installation
@section Proceeding with the Installation
@subsection Proceeding with the Installation

With the target partitions ready and the target root mounted on
@file{/mnt}, we're ready to go. First, run:
@@ -2303,9 +2363,14 @@ 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}).
@xref{After System Installation}, for what's next!


@node After System Installation
@section After System Installation

@cindex upgrading Guix System
From then on, you can update the system whenever you want by running, say:
Success, you've now booted into Guix System! From then on, you can update the
system whenever you want by running, say:

@example
guix pull
@@ -2326,8 +2391,8 @@ explicitly run root's @command{guix}, type @command{sudo -i guix @dots{}}.
@end quotation

Join us on @code{#guix} on the Freenode IRC network or on
@email{guix-devel@@gnu.org} to share your experience---good or not so
good.
@email{guix-devel@@gnu.org} to share your experience!

@node Installing Guix in a VM
@section Installing Guix in a Virtual Machine
@@ -2364,7 +2429,7 @@ Boot the USB installation image in an VM:
@example
qemu-system-x86_64 -m 1024 -smp 1 \
-net user -net nic,model=virtio -boot menu=on \
-drive file=guixsd-install-@value{VERSION}.@var{system}.iso \
-drive file=guix-system-install-@value{VERSION}.@var{system}.iso \
-drive file=guixsd.img
@end example

@@ -14165,7 +14230,7 @@ field of an @code{operating-system} declaration (@pxref{operating-system
Reference, @code{services}}).

Additionally, the @code{gnome-desktop-service},
@code{xfce-desktop-service}, @code{mate-desktop-service} and
@code{xfce-desktop-service}, @code{mate-desktop-service-type} 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
@@ -14181,8 +14246,8 @@ 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
adding a service of type @code{mate-desktop-service-type} 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.
@@ -14209,13 +14274,26 @@ file system as root from within a user session, after the user has
authenticated with the administrator's password.
@end deffn

@deffn {Scheme Procedure} mate-desktop-service
Return a service that adds the @code{mate} package to the system
@deffn {Scheme Variable} mate-desktop-service-type
This is the type of the service that runs the @uref{https://mate-desktop.org/,
MATE desktop environment}. Its value is a @code{mate-desktop-configuration}
object (see below.)

This service adds the @code{mate} package to the system
profile, and extends polkit with the actions from
@code{mate-settings-daemon}.
@end deffn

@deffn {Scheme Procedure} enlightenment-desktop-service-type
@deftp {Data Type} mate-desktop-configuration
Configuration record for the MATE desktop environment.

@table @asis
@item @code{mate} (default @code{mate})
The MATE package to use.
@end table
@end deftp

@deffn {Scheme Variable} enlightenment-desktop-service-type
Return a service that adds the @code{enlightenment} package to the system
profile, and extends dbus with actions from @code{efl}.
@end deffn
@@ -16471,7 +16549,7 @@ Defaults to @samp{"internal_plain"}.

@deftypevr {@code{prosody-configuration} parameter} maybe-string log
Set logging options. Advanced logging configuration is not yet supported
by the Guix Prosody Service. See @url{https://prosody.im/doc/logging}.
by the Prosody service. See @url{https://prosody.im/doc/logging}.
Defaults to @samp{"*syslog"}.
@end deftypevr

@@ -23347,7 +23425,7 @@ system configuration file. You can then load the image and launch a
Docker container using commands like the following:

@example
image_id="$(docker load < guixsd-docker-image.tar.gz)"
image_id="$(docker load < guix-system-docker-image.tar.gz)"
docker run -e GUIX_NEW_SYSTEM=/var/guix/profiles/system \\
--entrypoint /var/guix/profiles/system/profile/bin/guile \\
$image_id /var/guix/profiles/system/boot
@@ -23533,7 +23611,7 @@ example graph.
@cindex virtual machine
To run Guix in a virtual machine (VM), one can either use the
pre-built Guix VM image distributed at
@indicateurl{https://alpha.gnu.org/gnu/guix/guixsd-vm-image-@value{VERSION}.@var{system}.xz}
@indicateurl{https://alpha.gnu.org/gnu/guix/guix-system-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


BIN
doc/images/installer-network.png View File

Before After
Width: 1024  |  Height: 768  |  Size: 24 KiB

BIN
doc/images/installer-partitions.png View File

Before After
Width: 1024  |  Height: 768  |  Size: 54 KiB

BIN
doc/images/installer-resume.png View File

Before After
Width: 1024  |  Height: 768  |  Size: 35 KiB

+ 5
- 2
doc/local.mk View File

@@ -1,6 +1,6 @@
# GNU Guix --- Functional package management for GNU
# Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
# Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2013 Andreas Enge <andreas@enge.fr>
# Copyright © 2016 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
# Copyright © 2016, 2018 Mathieu Lirzin <mthl@gnu.org>
@@ -112,7 +112,10 @@ $(srcdir)/%D%/contributing.%.texi: po/doc/guix-manual.%.po
infoimagedir = $(infodir)/images
dist_infoimage_DATA = \
$(DOT_FILES:%.dot=%.png) \
%D%/images/coreutils-size-map.png
%D%/images/coreutils-size-map.png \
%D%/images/installer-network.png \
%D%/images/installer-partitions.png \
%D%/images/installer-resume.png

# Try hard to obtain an image size and aspect that's reasonable for inclusion
# in an Info or PDF document.


+ 2
- 2
gnu/bootloader/extlinux.scm View File

@@ -57,10 +57,10 @@ corresponding to old generations of the system."
#~(call-with-output-file #$output
(lambda (port)
(let ((timeout #$(bootloader-configuration-timeout config)))
(format port "# This file was generated from your GuixSD configuration. Any changes
(format port "# This file was generated from your Guix configuration. Any changes
# will be lost upon reconfiguration.
UI menu.c32
MENU TITLE GuixSD Boot Options
MENU TITLE GNU Guix Boot Options
PROMPT ~a
TIMEOUT ~a~%"
(if (> timeout 0) 1 0)


+ 4
- 4
gnu/bootloader/grub.scm View File

@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
@@ -334,7 +334,7 @@ entries corresponding to old generations of the system."
#~(call-with-output-file #$output
(lambda (port)
(format port
"# This file was generated from your GuixSD configuration. Any changes
"# This file was generated from your Guix configuration. Any changes
# will be lost upon reconfiguration.
")
#$sugar
@@ -380,7 +380,7 @@ submenu \"GNU system, old configurations...\" {~%")
;; system whose root is mounted at MOUNT-POINT.
(let ((grub-install (string-append bootloader "/sbin/grub-install"))
(install-dir (string-append mount-point "/boot"))
;; When installing GuixSD, it's common to mount EFI-DIR below
;; When installing Guix, it's common to mount EFI-DIR below
;; MOUNT-POINT rather than /boot/efi on the live image.
(target-esp (if (file-exists? (string-append mount-point efi-dir))
(string-append mount-point efi-dir)
@@ -389,7 +389,7 @@ submenu \"GNU system, old configurations...\" {~%")
;; root partition.
(setenv "GRUB_ENABLE_CRYPTODISK" "y")
(unless (zero? (system* grub-install "--boot-directory" install-dir
"--bootloader-id=GuixSD"
"--bootloader-id=Guix"
"--efi-directory" target-esp))
(error "failed to install GRUB (EFI)")))))



+ 25
- 2
gnu/build/linux-modules.scm View File

@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2016, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2016, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
;;;
;;; This file is part of GNU Guix.
@@ -47,7 +47,8 @@

device-module-aliases
known-module-aliases
matching-modules))
matching-modules
missing-modules))

;;; Commentary:
;;;
@@ -463,4 +464,26 @@ ALIAS is a string like \"scsi:t-0x00\" as returned by
module)))
known-aliases))

(define* (missing-modules device modules-provided)
"Assuming MODULES-PROVIDED lists kernel modules that are already
provided--e.g., in the initrd, return the list of missing kernel modules that
are required to access DEVICE."
(define aliases
;; Attempt to load 'modules.alias' from the current kernel, assuming we're
;; on Guix System, and assuming that corresponds to the kernel we'll be
;; installing.
(known-module-aliases))

(if aliases
(let* ((modules (delete-duplicates
(append-map (cut matching-modules <> aliases)
(device-module-aliases device))))

;; Module names (not file names) are supposed to use underscores
;; instead of hyphens. MODULES is a list of module names, whereas
;; LINUX-MODULES is file names without '.ko', so normalize them.
(provided (map file-name->module-name modules-provided)))
(remove (cut member <> provided) modules))
'()))

;;; linux-modules.scm ends here

+ 3
- 3
gnu/build/vm.scm View File

@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
@@ -422,7 +422,7 @@ SYSTEM-DIRECTORY is the name of the directory of the 'system' derivation."
(string-append "boot/grub/grub.cfg=" config-file))))

(define* (make-iso9660-image grub config-file os-drv target
#:key (volume-id "GuixSD_image") (volume-uuid #f)
#:key (volume-id "Guix_image") (volume-uuid #f)
register-closures? (closures '()))
"Given a GRUB package, creates an iso image as TARGET, using CONFIG-FILE as
GRUB configuration and OS-DRV as the stuff in it."
@@ -550,7 +550,7 @@ passing it a directory name where it is mounted."
(lambda (port)
(format port
"insmod part_msdos~@
search --set=root --label GuixSD_image~@
search --set=root --label Guix_image~@
configfile /boot/grub/grub.cfg~%")))

(display "creating EFI firmware image...")


+ 2
- 2
gnu/ci.scm View File

@@ -235,7 +235,7 @@ system.")
(system-test-value test))))

`((derivation . ,(derivation-file-name drv))
(description . ,(format #f "GuixSD '~a' system test"
(description . ,(format #f "Guix '~a' system test"
(system-test-name test)))
(long-description . ,(system-test-description test))
(license . ,(license-name gpl3+))
@@ -270,7 +270,7 @@ system.")
`((derivation . ,(derivation-file-name drv))
(description . "Stand-alone binary Guix tarball")
(long-description . "This is a tarball containing binaries of Guix and
all its dependencies, and ready to be installed on non-GuixSD distributions.")
all its dependencies, and ready to be installed on \"foreign\" distributions.")
(license . ,(license-name gpl3+))
(home-page . ,%guix-home-page-url)
(maintainers . ("bug-guix@gnu.org"))))


+ 3
- 3
gnu/installer/newt/network.scm View File

@@ -113,7 +113,7 @@ FULL-VALUE tentatives, spaced by 1 second."
(let* ((full-value 5))
(run-scale-page
#:title (G_ "Checking connectivity")
#:info-text (G_ "Waiting internet access is established.")
#:info-text (G_ "Waiting for Internet access establishment...")
#:scale-full-value full-value
#:scale-update-proc
(lambda (value)
@@ -123,8 +123,8 @@ FULL-VALUE tentatives, spaced by 1 second."
(+ value 1))))
(unless (connman-online?)
(run-error-page
(G_ "The selected network does not provide an Internet \
access, please try again.")
(G_ "The selected network does not provide access to the \
Internet, please try again.")
(G_ "Connection error"))
(raise
(condition


+ 2
- 2
gnu/installer/newt/welcome.scm View File

@@ -92,8 +92,8 @@ we want this page to occupy all the screen space available."
the page. Ask the user to choose between manual installation, graphical
installation and reboot."
(run-menu-page
(G_ "GNU GuixSD install")
(G_ "Welcome to GNU GuixSD installer!
(G_ "GNU Guix install")
(G_ "Welcome to GNU Guix system installer!

Please note that the present graphical installer is still under heavy \
development, so you might want to prefer using the shell based process. \


+ 1
- 0
gnu/local.mk View File

@@ -1155,6 +1155,7 @@ dist_patch_DATA = \
%D%/packages/patches/psm-arch.patch \
%D%/packages/patches/psm-ldflags.patch \
%D%/packages/patches/psm-repro.patch \
%D%/packages/patches/pugixml-versioned-libdir.patch \
%D%/packages/patches/pulseaudio-fix-mult-test.patch \
%D%/packages/patches/pulseaudio-longer-test-timeout.patch \
%D%/packages/patches/pybugz-encode-error.patch \


+ 10
- 7
gnu/packages.scm View File

@@ -159,23 +159,26 @@ flags."
;; Search path for package modules. Each item must be either a directory
;; name or a pair whose car is a directory and whose cdr is a sub-directory
;; to narrow the search.
(let* ((not-colon (char-set-complement (char-set #\:)))
(environment (string-tokenize (or (getenv "GUIX_PACKAGE_PATH") "")
not-colon))
(channels (package-path-entries)))
(let*-values (((not-colon)
(char-set-complement (char-set #\:)))
((environment)
(string-tokenize (or (getenv "GUIX_PACKAGE_PATH") "")
not-colon))
((channels-scm channels-go)
(package-path-entries)))
;; Automatically add channels and items from $GUIX_PACKAGE_PATH to Guile's
;; search path. For historical reasons, $GUIX_PACKAGE_PATH goes to the
;; front; channels go to the back so that they don't override Guix' own
;; modules.
(set! %load-path
(append environment %load-path channels))
(append environment %load-path channels-scm))
(set! %load-compiled-path
(append environment %load-compiled-path channels))
(append environment %load-compiled-path channels-go))

(make-parameter
(append environment
%default-package-module-path
channels))))
channels-scm))))

(define %patch-path
;; Define it after '%package-module-path' so that '%load-path' contains user


+ 14
- 15
gnu/packages/admin.scm View File

@@ -113,14 +113,14 @@
(define-public aide
(package
(name "aide")
(version "0.16")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/aide/aide/"
version "/aide-" version ".tar.gz"))
(sha256
(base32
"0ibkv4z2gk14fn014kq13rp2ysiq6nn2cflv2q5i7zf466hm6758"))))
(version "0.16.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/aide/aide/releases/download/v"
version "/aide-" version ".tar.gz"))
(sha256
(base32 "1dqhc0c24wa4zid06pfy61k357yvzh28ij86bk9jf6hcqzn7qaqg"))))
(build-system gnu-build-system)
(native-inputs
`(("bison" ,bison)
@@ -141,7 +141,7 @@ that it finds from its configuration files. Once this database is initialized
it can be used to verify the integrity of the files. It has several message
digest algorithms that are used to check the integrity of files. All of the
usual file attributes can be checked for inconsistencies.")
(home-page "http://aide.sourceforge.net/")
(home-page "https://aide.github.io/")
(license license:gpl2+)))

(define-public progress
@@ -1598,14 +1598,13 @@ of supported upstream metrics systems simultaneously.")
(define-public ansible
(package
(name "ansible")
(version "2.7.7")
(version "2.7.8")
(source
(origin
(method url-fetch)
(uri (pypi-uri "ansible" version))
(sha256
(base32
"0l4id24jqi578xmybvwrz10sm2jhs90gk9gs1y04gfarz4vcj304"))))
(base32 "11yx7vd0mp5gkq428af141dwnrwf8f9cp3f65243qbs9icjxnrrx"))))
(build-system python-build-system)
(native-inputs
`(("python-bcrypt" ,python-bcrypt)
@@ -2700,16 +2699,16 @@ Python loading in HPC environments.")
(let ((real-name "inxi"))
(package
(name "inxi-minimal")
(version "3.0.20-1")
(version "3.0.22-1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/smxi/inxi")
(commit version)))
(file-name (git-file-name real-name version))
(sha256
(base32
"1k9148xnfznch1443niaa3w1kmsw4vp0xpwna6npgmi7zqg06ymy"))))
(base32 "1br392s3xc2nwqmfx4nwb3i97wjwasvkq8ayr8jq72mi5qzsgizn"))))
(build-system trivial-build-system)
(inputs
`(("bash" ,bash-minimal)


+ 20
- 6
gnu/packages/aspell.scm View File

@@ -5,7 +5,7 @@
;;; Copyright © 2016, 2017, 2019 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Christopher Andersson <christopher@8bits.nu>
;;; Copyright © 2016 Theodoros Foradis <theodoros@foradis.org>
;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2016, 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -198,11 +198,25 @@ dictionaries, including personal ones.")
"13bhbghx5b8g0119g3wxd4n8mlf707y41vlf59irxjj0kynankfn")))

(define-public aspell-dict-it
(aspell-dictionary "it" "Italian"
#:version "2.2_20050523-0"
#:sha256
(base32
"1gdf7bc1a0kmxsmphdqq8pl01h667mjsj6hihy6kqy14k5qdq69v")))
(let ((version "2.4-20070901-0")
(sha256
(base32 "0d6ypii3jblprpibazb6ypady536jz62rwxlss1x1raq07rhvvqn")))
(package
(inherit (aspell-dictionary "it" "Italian"
#:version version
#:sha256 sha256))

;; The version hosted at <https://ftp.gnu.org/gnu/aspell/dict> is even
;; more out of date.
(source
(origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/linguistico/"
"Dizionario%20italiano%20per%20Aspell/" version "/"
"aspell6-it-" version ".tar.bz2"))
(sha256 sha256)))
(home-page
"http://linguistico.sourceforge.net/pages/dizionario_italiano.html"))))

(define-public aspell-dict-nl
(aspell-dictionary "nl" "Dutch"


+ 23
- 4
gnu/packages/audio.scm View File

@@ -2270,7 +2270,7 @@ for experimenting with sound synthesis and algorithmic composition.
SuperCollider requires jackd to be installed in your user profile and your
user must be allowed to access the realtime features of the kernel. Search
for \"realtime\" in the index of the Guix manual to learn how to achieve this
using GuixSD.")
using Guix System.")
(license license:gpl2+)))

(define-public raul
@@ -2834,7 +2834,26 @@ portions of LAME.")
("automake" ,automake)
("libtool" ,libtool)
("pkg-config" ,pkg-config)))
(arguments '(#:tests? #f)) ;no 'check' target
(arguments
'(#:tests? #f ;no 'check' target
#:configure-flags '("--with-pic")
#:phases
(modify-phases %standard-phases
;; This is needed for linking the static libraries
(add-after 'unpack 'build-only-position-independent-code
(lambda _
(substitute* "configure.in"
(("AC_PROG_LIBTOOL" m)
(string-append m "\nAM_PROG_AR\nLT_INIT([pic-only])")))
(delete-file "configure")
#t))
;; Some headers are not installed by default, but are needed by
;; packages like Kaldi.
(add-after 'install 'install-missing-headers
(lambda* (#:key outputs #:allow-other-keys)
(install-file "src/common/pa_ringbuffer.h"
(string-append (assoc-ref outputs "out") "/include"))
#t)))))
(home-page "http://www.portaudio.com/")
(synopsis "Audio I/O library")
(description
@@ -3361,14 +3380,14 @@ on the ALSA software PCM plugin.")
(define-public snd
(package
(name "snd")
(version "17.7")
(version "19.2")
(source (origin
(method url-fetch)
(uri (string-append "ftp://ccrma-ftp.stanford.edu/pub/Lisp/"
"snd-" version ".tar.gz"))
(sha256
(base32
"1vm0dy5qlycqkima7y5ajzvazyjybifa803fabjcpncjz08c26vp"))))
"1a6ls2hyvggss12idca22hq5vsq4jw2xkwrx22dx29i9926gdr6h"))))
(build-system glib-or-gtk-build-system)
(arguments
`(#:tests? #f ; no tests


+ 789
- 0
gnu/packages/bioconductor.scm View File

@@ -30,9 +30,13 @@
#:use-module (gnu packages gcc)
#:use-module (gnu packages graph)
#:use-module (gnu packages maths)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages statistics)
#:use-module (gnu packages web))

;;; Annotations

(define-public r-bsgenome-celegans-ucsc-ce6
(package
(name "r-bsgenome-celegans-ucsc-ce6")
@@ -646,7 +650,103 @@ the TxDb object of Mouse data as provided by UCSC (mm10, December 2011)
based on the knownGene track.")
(license license:artistic2.0)))

(define-public r-fdb-infiniummethylation-hg19
(package
(name "r-fdb-infiniummethylation-hg19")
(version "2.2.0")
(source (origin
(method url-fetch)
;; We cannot use bioconductor-uri here because this tarball is
;; located under "data/annotation/" instead of "bioc/".
(uri (string-append "https://www.bioconductor.org/packages/"
"release/data/annotation/src/contrib/"
"FDb.InfiniumMethylation.hg19_"
version ".tar.gz"))
(sha256
(base32
"0gq90fvph6kgrpjb89nvzq6hl1k24swn19rgjh5g98l86mja6nk0"))))
(properties
`((upstream-name . "FDb.InfiniumMethylation.hg19")))
(build-system r-build-system)
(propagated-inputs
`(("r-biostrings" ,r-biostrings)
("r-genomicfeatures" ,r-genomicfeatures)
("r-annotationdbi" ,r-annotationdbi)
("r-org-hs-eg-db" ,r-org-hs-eg-db)
("r-txdb-hsapiens-ucsc-hg19-knowngene" ,r-txdb-hsapiens-ucsc-hg19-knowngene)))
(home-page "https://bioconductor.org/packages/FDb.InfiniumMethylation.hg19/")
(synopsis "Compiled HumanMethylation27 and HumanMethylation450 annotations")
(description
"This is an annotation package for Illumina Infinium DNA methylation
probes. It contains the compiled HumanMethylation27 and HumanMethylation450
annotations.")
(license license:artistic2.0)))

(define-public r-illuminahumanmethylationepicmanifest
(package
(name "r-illuminahumanmethylationepicmanifest")
(version "0.3.0")
(source (origin
(method url-fetch)
;; We cannot use bioconductor-uri here because this tarball is
;; located under "data/annotation/" instead of "bioc/".
(uri (string-append "https://www.bioconductor.org/packages/"
"release/data/annotation/src/contrib/"
"IlluminaHumanMethylationEPICmanifest_"
version ".tar.gz"))
(sha256
(base32
"0alhjda5g186z8b1nsmnpfswrlj7prdz8mkwx60wkkl6hkcnk6p3"))))
(properties
`((upstream-name . "IlluminaHumanMethylationEPICmanifest")))
(build-system r-build-system)
(propagated-inputs
`(("r-minfi" ,r-minfi)))
(home-page "https://bioconductor.org/packages/IlluminaHumanMethylationEPICmanifest/")
(synopsis "Manifest for Illumina's EPIC methylation arrays")
(description
"This is a manifest package for Illumina's EPIC methylation arrays.")
(license license:artistic2.0)))

;;; Experiment data

(define-public r-hsmmsinglecell
(package
(name "r-hsmmsinglecell")
(version "1.2.0")
(source (origin
(method url-fetch)
;; We cannot use bioconductor-uri here because this tarball is
;; located under "data/experiment/" instead of "bioc/".
(uri (string-append "https://www.bioconductor.org/packages/"
"release/data/experiment/src/contrib/"
"HSMMSingleCell_" version ".tar.gz"))
(sha256
(base32
"1vxnr8gr6md85g39csy7g2sqqajiqgyvznys2qa9yixd2b01yph9"))))
(properties
`((upstream-name . "HSMMSingleCell")))
(build-system r-build-system)
(home-page "https://www.bioconductor.org/packages/HSMMSingleCell/")
(synopsis "Single-cell RNA-Seq for differentiating human skeletal muscle myoblasts (HSMM)")
(description
"Skeletal myoblasts undergo a well-characterized sequence of
morphological and transcriptional changes during differentiation. In this
experiment, primary @dfn{human skeletal muscle myoblasts} (HSMM) were expanded
under high mitogen conditions (GM) and then differentiated by switching to
low-mitogen media (DM). RNA-Seq libraries were sequenced from each of several
hundred cells taken over a time-course of serum-induced differentiation.
Between 49 and 77 cells were captured at each of four time points (0, 24, 48,
72 hours) following serum switch using the Fluidigm C1 microfluidic system.
RNA from each cell was isolated and used to construct mRNA-Seq libraries,
which were then sequenced to a depth of ~4 million reads per library,
resulting in a complete gene expression profile for each cell.")
(license license:artistic2.0)))

;;; Packages

(define-public r-biocgenerics
(package
(name "r-biocgenerics")
@@ -766,6 +866,35 @@ region sets and other genomic features.")
"This package provides functions for plotting genomic data.")
(license license:artistic2.0)))

(define-public r-qvalue
(package
(name "r-qvalue")
(version "2.14.1")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "qvalue" version))
(sha256
(base32
"0kxavzm1j2mk26qicmjm90nxx4w5h3dxighzks7wzihay3k8cysc"))))
(build-system r-build-system)
(propagated-inputs
`(("r-ggplot2" ,r-ggplot2)
("r-reshape2" ,r-reshape2)))
(home-page "http://github.com/jdstorey/qvalue")
(synopsis "Q-value estimation for false discovery rate control")
(description
"This package takes a list of p-values resulting from the simultaneous
testing of many hypotheses and estimates their q-values and local @dfn{false
discovery rate} (FDR) values. The q-value of a test measures the proportion
of false positives incurred when that particular test is called significant.
The local FDR measures the posterior probability the null hypothesis is true
given the test's p-value. Various plots are automatically generated, allowing
one to make sensible significance cut-offs. The software can be applied to
problems in genomics, brain imaging, astrophysics, and data mining.")
;; Any version of the LGPL.
(license license:lgpl3+)))

(define-public r-diffbind
(package
(name "r-diffbind")
@@ -1694,3 +1823,663 @@ estimation is performed using either the EM or CEM algorithm, and the slope
heuristics are used for model selection (i.e., to choose the number of
clusters).")
(license license:gpl3+)))

(define-public r-deds
(package
(name "r-deds")
(version "1.56.0")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "DEDS" version))
(sha256
(base32
"1zfgaar3bpss49zhs81mwlfzkx5lv92j8a64xd12ig88is24cw2c"))))
(properties `((upstream-name . "DEDS")))
(build-system r-build-system)
(home-page "https://bioconductor.org/packages/DEDS/")
(synopsis "Differential expression via distance summary for microarray data")
(description
"This library contains functions that calculate various statistics of
differential expression for microarray data, including t statistics, fold
change, F statistics, SAM, moderated t and F statistics and B statistics. It
also implements a new methodology called DEDS (Differential Expression via
Distance Summary), which selects differentially expressed genes by integrating
and summarizing a set of statistics using a weighted distance approach.")
;; Any version of the LGPL.
(license license:lgpl3+)))

;; This is a CRAN package, but since it depends on a Bioconductor package we
;; put it here.
(define-public r-nbpseq
(package
(name "r-nbpseq")
(version "0.3.0")
(source
(origin
(method url-fetch)
(uri (cran-uri "NBPSeq" version))
(sha256
(base32
"0l4ylxhs2k9ww21jjqs67fygk92avdchhx2y1ixzl7yr2yh1y9by"))))
(properties `((upstream-name . "NBPSeq")))
(build-system r-build-system)
(propagated-inputs
`(("r-qvalue" ,r-qvalue)))
(home-page "https://cran.r-project.org/web/packages/NBPSeq")
(synopsis "Negative binomial models for RNA-Seq data")
(description
"This package provides negative binomial models for two-group comparisons
and regression inferences from RNA-sequencing data.")
(license license:gpl2)))

(define-public r-ebseq
(package
(name "r-ebseq")
(version "1.22.1")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "EBSeq" version))
(sha256
(base32
"1gzbk1hbwdan0j131ah88yryfvsiq0wqjnb09qbr4qaczpgvbad0"))))
(properties `((upstream-name . "EBSeq")))
(build-system r-build-system)
(propagated-inputs
`(("r-blockmodeling" ,r-blockmodeling)
("r-gplots" ,r-gplots)
("r-testthat" ,r-testthat)))
(home-page "https://bioconductor.org/packages/EBSeq")
(synopsis "Differential expression analysis of RNA-seq data")
(description
"This package provides tools for differential expression analysis at both
gene and isoform level using RNA-seq data")
(license license:artistic2.0)))

(define-public r-lpsymphony
(package
(name "r-lpsymphony")
(version "1.10.0")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "lpsymphony" version))
(sha256
(base32
"0vnsf5x6gvd1k8h89al7r6xbgbxsjbxphr675czzwggz79zbvq7y"))))
(build-system r-build-system)
(inputs
`(("gfortran" ,gfortran)
("zlib" ,zlib)))
(native-inputs
`(("pkg-config" ,pkg-config)))
(home-page "http://r-forge.r-project.org/projects/rsymphony")
(synopsis "Symphony integer linear programming solver in R")
(description
"This package was derived from Rsymphony. The package provides an R
interface to SYMPHONY, a linear programming solver written in C++. The main
difference between this package and Rsymphony is that it includes the solver
source code, while Rsymphony expects to find header and library files on the
users' system. Thus the intention of @code{lpsymphony} is to provide an easy
to install interface to SYMPHONY.")
;; Symphony 5.4 or later is distributed under the terms of the EPL 1.0.
;; lpsimphony is released under the same terms.
(license license:epl1.0)))

(define-public r-ihw
(package
(name "r-ihw")
(version "1.10.1")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "IHW" version))
(sha256
(base32
"10wqasl8k2j3y5qvak3xr2xj6symk656xww1y5n2l22nz832j19n"))))
(properties `((upstream-name . "IHW")))
(build-system r-build-system)
(propagated-inputs
`(("r-biocgenerics" ,r-biocgenerics)
("r-fdrtool" ,r-fdrtool)
("r-lpsymphony" ,r-lpsymphony)
("r-slam" ,r-slam)))
(home-page "https://bioconductor.org/packages/IHW")
(synopsis "Independent hypothesis weighting")
(description
"@dfn{Independent hypothesis weighting} (IHW) is a multiple testing
procedure that increases power compared to the method of Benjamini and
Hochberg by assigning data-driven weights to each hypothesis. The input to
IHW is a two-column table of p-values and covariates. The covariate can be
any continuous-valued or categorical variable that is thought to be
informative on the statistical properties of each hypothesis test, while it is
independent of the p-value under the null hypothesis.")
(license license:artistic2.0)))

(define-public r-icobra
(package
(name "r-icobra")
(version "1.10.0")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "iCOBRA" version))
(sha256
(base32
"0i1swrm31g0zffi5pm48bfvdfqpd32d0zdchkbyipz96al46jnld"))))
(properties `((upstream-name . "iCOBRA")))
(build-system r-build-system)
(propagated-inputs
`(("r-dplyr" ,r-dplyr)
("r-dt" ,r-dt)
("r-ggplot2" ,r-ggplot2)
("r-limma" ,r-limma)
("r-reshape2" ,r-reshape2)
("r-rocr" ,r-rocr)
("r-scales" ,r-scales)
("r-shiny" ,r-shiny)
("r-shinybs" ,r-shinybs)
("r-shinydashboard" ,r-shinydashboard)
("r-upsetr" ,r-upsetr)))
(home-page "https://bioconductor.org/packages/iCOBRA")
(synopsis "Comparison and visualization of ranking and assignment methods")
(description
"This package provides functions for calculation and visualization of
performance metrics for evaluation of ranking and binary
classification (assignment) methods. It also contains a Shiny application for
interactive exploration of results.")
(license license:gpl2+)))

(define-public r-mast
(package
(name "r-mast")
(version "1.8.2")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "MAST" version))
(sha256
(base32
"0rhx655dza0m6yg9jcfz2nmxqahvxx2l91kqgyp7qai0bzz9d9ix"))))
(properties `((upstream-name . "MAST")))
(build-system r-build-system)
(propagated-inputs
`(("r-abind" ,r-abind)
("r-biobase" ,r-biobase)
("r-biocgenerics" ,r-biocgenerics)
("r-data-table" ,r-data-table)
("r-ggplot2" ,r-ggplot2)
("r-plyr" ,r-plyr)
("r-progress" ,r-progress)
("r-reshape2" ,r-reshape2)
("r-s4vectors" ,r-s4vectors)
("r-singlecellexperiment" ,r-singlecellexperiment)
("r-stringr" ,r-stringr)
("r-summarizedexperiment" ,r-summarizedexperiment)))
(home-page "https://github.com/RGLab/MAST/")
(synopsis "Model-based analysis of single cell transcriptomics")
(description
"This package provides methods and models for handling zero-inflated
single cell assay data.")
(license license:gpl2+)))

(define-public r-monocle
(package
(name "r-monocle")
(version "2.10.1")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "monocle" version))
(sha256
(base32
"0shwkgqs93j2l5h36yyvb1lf724107cfjrmzp5fxfj1lqc0y61lf"))))