summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am2
-rw-r--r--build-aux/pre-inst-env.in14
-rw-r--r--config-daemon.ac11
-rw-r--r--doc/build.scm32
-rw-r--r--doc/contributing.texi16
-rw-r--r--doc/guix.texi713
-rw-r--r--etc/guix-daemon.cil.in4
-rw-r--r--gnu/build/linux-container.scm7
-rw-r--r--gnu/build/shepherd.scm8
-rw-r--r--gnu/local.mk2
-rw-r--r--gnu/packages/admin.scm4
-rw-r--r--gnu/packages/algebra.scm4
-rw-r--r--gnu/packages/audio.scm20
-rw-r--r--gnu/packages/authentication.scm41
-rw-r--r--gnu/packages/bioconductor.scm615
-rw-r--r--gnu/packages/bioinformatics.scm32
-rw-r--r--gnu/packages/check.scm12
-rw-r--r--gnu/packages/cluster.scm35
-rw-r--r--gnu/packages/cmake.scm12
-rw-r--r--gnu/packages/cran.scm476
-rw-r--r--gnu/packages/crates-io.scm4
-rw-r--r--gnu/packages/cups.scm4
-rw-r--r--gnu/packages/dictionaries.scm6
-rw-r--r--gnu/packages/education.scm102
-rw-r--r--gnu/packages/emacs-xyz.scm170
-rw-r--r--gnu/packages/emulators.scm8
-rw-r--r--gnu/packages/engineering.scm69
-rw-r--r--gnu/packages/finance.scm31
-rw-r--r--gnu/packages/freedesktop.scm8
-rw-r--r--gnu/packages/game-development.scm10
-rw-r--r--gnu/packages/games.scm19
-rw-r--r--gnu/packages/gnome.scm72
-rw-r--r--gnu/packages/gnupg.scm32
-rw-r--r--gnu/packages/graph.scm4
-rw-r--r--gnu/packages/graphics.scm41
-rw-r--r--gnu/packages/guile-xyz.scm28
-rw-r--r--gnu/packages/guile.scm12
-rw-r--r--gnu/packages/haskell-apps.scm18
-rw-r--r--gnu/packages/haskell-xyz.scm37
-rw-r--r--gnu/packages/haskell.scm8
-rw-r--r--gnu/packages/image.scm73
-rw-r--r--gnu/packages/irc.scm20
-rw-r--r--gnu/packages/javascript.scm139
-rw-r--r--gnu/packages/kde.scm32
-rw-r--r--gnu/packages/language.scm481
-rw-r--r--gnu/packages/linux.scm40
-rw-r--r--gnu/packages/lisp.scm73
-rw-r--r--gnu/packages/lua.scm66
-rw-r--r--gnu/packages/lxqt.scm3
-rw-r--r--gnu/packages/maths.scm43
-rw-r--r--gnu/packages/mes.scm31
-rw-r--r--gnu/packages/music.scm69
-rw-r--r--gnu/packages/networking.scm8
-rw-r--r--gnu/packages/ntp.scm8
-rw-r--r--gnu/packages/ocr.scm75
-rw-r--r--gnu/packages/package-management.scm102
-rw-r--r--gnu/packages/patches/cmake-curl-certificates.patch40
-rw-r--r--gnu/packages/patches/tipp10-fix-compiling.patch3
-rw-r--r--gnu/packages/patches/weechat-python.patch40
-rw-r--r--gnu/packages/perl-compression.scm5
-rw-r--r--gnu/packages/python-check.scm23
-rw-r--r--gnu/packages/python-xyz.scm213
-rw-r--r--gnu/packages/python.scm6
-rw-r--r--gnu/packages/ruby.scm30
-rw-r--r--gnu/packages/shellutils.scm103
-rw-r--r--gnu/packages/sphinx.scm21
-rw-r--r--gnu/packages/statistics.scm36
-rw-r--r--gnu/packages/suckless.scm28
-rw-r--r--gnu/packages/sync.scm4
-rw-r--r--gnu/packages/terminals.scm7
-rw-r--r--gnu/packages/tex.scm9
-rw-r--r--gnu/packages/textutils.scm51
-rw-r--r--gnu/packages/tls.scm19
-rw-r--r--gnu/packages/video.scm4
-rw-r--r--gnu/packages/vim.scm13
-rw-r--r--gnu/packages/virtualization.scm17
-rw-r--r--gnu/packages/vpn.scm8
-rw-r--r--gnu/packages/vulkan.scm4
-rw-r--r--gnu/packages/web-browsers.scm4
-rw-r--r--gnu/packages/web.scm6
-rw-r--r--gnu/packages/wget.scm68
-rw-r--r--gnu/packages/wine.scm6
-rw-r--r--gnu/packages/wm.scm135
-rw-r--r--gnu/packages/xfce.scm38
-rw-r--r--gnu/services/base.scm9
-rw-r--r--gnu/services/certbot.scm1
-rw-r--r--gnu/services/networking.scm203
-rw-r--r--gnu/services/virtualization.scm11
-rw-r--r--gnu/system/file-systems.scm2
-rw-r--r--gnu/system/linux-container.scm61
-rw-r--r--guix/build/cargo-build-system.scm5
-rw-r--r--guix/docker.scm43
-rw-r--r--guix/gnu-maintenance.scm44
-rw-r--r--guix/import/cran.scm1
-rw-r--r--guix/import/crate.scm29
-rw-r--r--guix/import/github.scm2
-rw-r--r--guix/import/kde.scm190
-rw-r--r--guix/import/utils.scm17
-rw-r--r--guix/packages.scm2
-rw-r--r--guix/scripts/environment.scm13
-rw-r--r--guix/scripts/gc.scm15
-rw-r--r--guix/scripts/import/crate.scm13
-rw-r--r--guix/scripts/pack.scm16
-rw-r--r--guix/scripts/refresh.scm12
-rw-r--r--guix/store/roots.scm129
-rw-r--r--guix/upstream.scm12
-rw-r--r--guix/utils.scm7
-rw-r--r--nix/libstore/build.cc63
-rw-r--r--nix/libstore/builtins.cc4
-rw-r--r--nix/libstore/gc.cc11
-rw-r--r--nix/libstore/globals.cc2
-rw-r--r--nix/libstore/globals.hh11
-rw-r--r--nix/libstore/local-store.cc102
-rw-r--r--nix/libstore/local-store.hh12
-rw-r--r--nix/local.mk16
-rw-r--r--nix/nix-daemon/guix-daemon.cc20
-rw-r--r--nix/nix-daemon/nix-daemon.cc17
-rw-r--r--nix/scripts/authenticate.in11
-rw-r--r--nix/scripts/download.in11
-rw-r--r--nix/scripts/list-runtime-roots.in147
-rw-r--r--nix/scripts/offload.in11
-rw-r--r--nix/scripts/substitute.in11
-rw-r--r--tests/networking.scm113
-rw-r--r--tests/opam.scm2
124 files changed, 4794 insertions, 1554 deletions
diff --git a/Makefile.am b/Makefile.am
index eefce7a3cae..b5e7a01dce9 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -221,6 +221,7 @@ MODULES = \
221 guix/import/gnu.scm \ 221 guix/import/gnu.scm \
222 guix/import/hackage.scm \ 222 guix/import/hackage.scm \
223 guix/import/json.scm \ 223 guix/import/json.scm \
224 guix/import/kde.scm \
224 guix/import/launchpad.scm \ 225 guix/import/launchpad.scm \
225 guix/import/opam.scm \ 226 guix/import/opam.scm \
226 guix/import/print.scm \ 227 guix/import/print.scm \
@@ -402,6 +403,7 @@ SCM_TESTS = \
402 tests/modules.scm \ 403 tests/modules.scm \
403 tests/monads.scm \ 404 tests/monads.scm \
404 tests/nar.scm \ 405 tests/nar.scm \
406 tests/networking.scm \
405 tests/opam.scm \ 407 tests/opam.scm \
406 tests/packages.scm \ 408 tests/packages.scm \
407 tests/pack.scm \ 409 tests/pack.scm \
diff --git a/build-aux/pre-inst-env.in b/build-aux/pre-inst-env.in
index 3efab69e7d8..e0aa7fe8685 100644
--- a/build-aux/pre-inst-env.in
+++ b/build-aux/pre-inst-env.in
@@ -42,17 +42,9 @@ export GUILE_LOAD_COMPILED_PATH GUILE_LOAD_PATH
42PATH="$abs_top_builddir/scripts:$abs_top_builddir:$PATH" 42PATH="$abs_top_builddir/scripts:$abs_top_builddir:$PATH"
43export PATH 43export PATH
44 44
45# Daemon helpers. 45# The daemon invokes 'guix'; tell it which one to use.
46 46GUIX="$abs_top_builddir/scripts/guix"
47NIX_ROOT_FINDER="$abs_top_builddir/nix/scripts/list-runtime-roots" 47export GUIX
48NIX_LIBEXEC_DIR="@abs_top_builddir@/nix/scripts" # for 'authenticate', etc.
49
50export NIX_ROOT_FINDER NIX_LIBEXEC_DIR
51
52NIX_BUILD_HOOK="$abs_top_builddir/nix/scripts/offload"
53@BUILD_DAEMON_OFFLOAD_TRUE@export NIX_BUILD_HOOK
54@BUILD_DAEMON_OFFLOAD_FALSE@# No offloading support.
55@BUILD_DAEMON_OFFLOAD_FALSE@unset NIX_BUILD_HOOK
56 48
57# The following variables need only be defined when compiling Guix 49# The following variables need only be defined when compiling Guix
58# modules, but we define them to be on the safe side in case of 50# modules, but we define them to be on the safe side in case of
diff --git a/config-daemon.ac b/config-daemon.ac
index f1ad10acff7..bf94815966d 100644
--- a/config-daemon.ac
+++ b/config-daemon.ac
@@ -148,17 +148,6 @@ if test "x$guix_build_daemon" = "xyes"; then
148 AC_SUBST([GUIX_TEST_ROOT]) 148 AC_SUBST([GUIX_TEST_ROOT])
149 149
150 GUIX_CHECK_LOCALSTATEDIR 150 GUIX_CHECK_LOCALSTATEDIR
151
152 AC_CONFIG_FILES([nix/scripts/list-runtime-roots],
153 [chmod +x nix/scripts/list-runtime-roots])
154 AC_CONFIG_FILES([nix/scripts/download],
155 [chmod +x nix/scripts/download])
156 AC_CONFIG_FILES([nix/scripts/substitute],
157 [chmod +x nix/scripts/substitute])
158 AC_CONFIG_FILES([nix/scripts/authenticate],
159 [chmod +x nix/scripts/authenticate])
160 AC_CONFIG_FILES([nix/scripts/offload],
161 [chmod +x nix/scripts/offload])
162fi 151fi
163 152
164AM_CONDITIONAL([HAVE_LIBBZ2], [test "x$HAVE_LIBBZ2" = "xyes"]) 153AM_CONDITIONAL([HAVE_LIBBZ2], [test "x$HAVE_LIBBZ2" = "xyes"])
diff --git a/doc/build.scm b/doc/build.scm
index c99bd505fd0..5bc95d25172 100644
--- a/doc/build.scm
+++ b/doc/build.scm
@@ -29,6 +29,7 @@
29 (guix gexp) 29 (guix gexp)
30 (guix git) 30 (guix git)
31 (guix git-download) 31 (guix git-download)
32 (guix utils)
32 (git) 33 (git)
33 (gnu packages base) 34 (gnu packages base)
34 (gnu packages gawk) 35 (gnu packages gawk)
@@ -165,6 +166,35 @@ as well as images, OS examples, and translations."
165 ;; Options passed to 'makeinfo --html'. 166 ;; Options passed to 'makeinfo --html'.
166 '("--css-ref=https://www.gnu.org/software/gnulib/manual.css")) 167 '("--css-ref=https://www.gnu.org/software/gnulib/manual.css"))
167 168
169(define guile-lib/htmlprag-fixed
170 ;; Guile-Lib with a hotfix for (htmlprag).
171 (package
172 (inherit guile-lib)
173 (source (origin
174 (inherit (package-source guile-lib))
175 (modules '(( guix build utils)))
176 (snippet
177 '(begin
178 ;; When parsing
179 ;; "<body><blockquote><p>foo</p>\n</blockquote></body>",
180 ;; 'html->shtml' would mistakenly close 'blockquote' right
181 ;; before <p>. This patch removes 'p' from the
182 ;; 'parent-constraints' alist to fix that.
183 (substitute* "src/htmlprag.scm"
184 (("^[[:blank:]]*\\(p[[:blank:]]+\\. \\(body td th\\)\\).*")
185 ""))
186 #t))))
187 (arguments
188 (substitute-keyword-arguments (package-arguments guile-lib)
189 ((#:phases phases '%standard-phases)
190 `(modify-phases ,phases
191 (add-before 'check 'skip-known-failure
192 (lambda _
193 ;; XXX: The above change causes one test failure among
194 ;; the htmlprag tests.
195 (setenv "XFAIL_TESTS" "htmlprag.scm")
196 #t))))))))
197
168(define* (syntax-highlighted-html input 198(define* (syntax-highlighted-html input
169 #:key 199 #:key
170 (name "highlighted-syntax") 200 (name "highlighted-syntax")
@@ -174,7 +204,7 @@ as well as images, OS examples, and translations."
174to (1) add them a link to SYNTAX-CSS-URL, and (2) highlight the syntax of all 204to (1) add them a link to SYNTAX-CSS-URL, and (2) highlight the syntax of all
175its <pre class=\"lisp\"> blocks (as produced by 'makeinfo --html')." 205its <pre class=\"lisp\"> blocks (as produced by 'makeinfo --html')."
176 (define build 206 (define build
177 (with-extensions (list guile-lib guile-syntax-highlight) 207 (with-extensions (list guile-lib/htmlprag-fixed guile-syntax-highlight)
178 (with-imported-modules '((guix build utils)) 208 (with-imported-modules '((guix build utils))
179 #~(begin 209 #~(begin
180 (use-modules (htmlprag) 210 (use-modules (htmlprag)
diff --git a/doc/contributing.texi b/doc/contributing.texi
index 59917193f1a..655c8283e59 100644
--- a/doc/contributing.texi
+++ b/doc/contributing.texi
@@ -376,7 +376,7 @@ package and does not contain any version number.
376 376
377For instance, the versions 2.24.20 and 3.9.12 of GTK+ may be packaged as follows: 377For instance, the versions 2.24.20 and 3.9.12 of GTK+ may be packaged as follows:
378 378
379@example 379@lisp
380(define-public gtk+ 380(define-public gtk+
381 (package 381 (package
382 (name "gtk+") 382 (name "gtk+")
@@ -387,15 +387,15 @@ For instance, the versions 2.24.20 and 3.9.12 of GTK+ may be packaged as follows
387 (name "gtk+") 387 (name "gtk+")
388 (version "2.24.20") 388 (version "2.24.20")
389 ...)) 389 ...))
390@end example 390@end lisp
391If we also wanted GTK+ 3.8.2, this would be packaged as 391If we also wanted GTK+ 3.8.2, this would be packaged as
392@example 392@lisp
393(define-public gtk+-3.8 393(define-public gtk+-3.8
394 (package 394 (package
395 (name "gtk+") 395 (name "gtk+")
396 (version "3.8.2") 396 (version "3.8.2")
397 ...)) 397 ...))
398@end example 398@end lisp
399 399
400@c See <https://lists.gnu.org/archive/html/guix-devel/2016-01/msg00425.html>, 400@c See <https://lists.gnu.org/archive/html/guix-devel/2016-01/msg00425.html>,
401@c for a discussion of what follows. 401@c for a discussion of what follows.
@@ -432,7 +432,7 @@ kernel.) It is best to use the full commit identifiers in
432@code{origin}s, though, to avoid ambiguities. A typical package 432@code{origin}s, though, to avoid ambiguities. A typical package
433definition may look like this: 433definition may look like this:
434 434
435@example 435@lisp
436(define my-package 436(define my-package
437 (let ((commit "c3f29bc928d5900971f65965feaae59e1272a3f7") 437 (let ((commit "c3f29bc928d5900971f65965feaae59e1272a3f7")
438 (revision "1")) ;Guix package revision 438 (revision "1")) ;Guix package revision
@@ -447,7 +447,7 @@ definition may look like this:
447 (file-name (git-file-name name version)))) 447 (file-name (git-file-name name version))))
448 ;; @dots{} 448 ;; @dots{}
449 ))) 449 )))
450@end example 450@end lisp
451 451
452@node Synopses and Descriptions 452@node Synopses and Descriptions
453@subsection Synopses and Descriptions 453@subsection Synopses and Descriptions
@@ -825,12 +825,12 @@ recommend using the @code{qemu-binfmt-service-type} to emulate them. In
825order to enable it, add the following service to the list of services in 825order to enable it, add the following service to the list of services in
826your @code{operating-system} configuration: 826your @code{operating-system} configuration:
827 827
828@example 828@lisp
829(service qemu-binfmt-service-type 829(service qemu-binfmt-service-type
830 (qemu-binfmt-configuration 830 (qemu-binfmt-configuration
831 (platforms (lookup-qemu-platforms "arm" "aarch64" "mips64el")) 831 (platforms (lookup-qemu-platforms "arm" "aarch64" "mips64el"))
832 (guix-support? #t))) 832 (guix-support? #t)))
833@end example 833@end lisp
834 834
835Then reconfigure your system. 835Then reconfigure your system.
836 836
diff --git a/doc/guix.texi b/doc/guix.texi
index da84f79490a..aff9aed06bc 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -48,7 +48,7 @@ Copyright @copyright{} 2017 humanitiesNerd@*
48Copyright @copyright{} 2017 Christopher Allan Webber@* 48Copyright @copyright{} 2017 Christopher Allan Webber@*
49Copyright @copyright{} 2017, 2018 Marius Bakke@* 49Copyright @copyright{} 2017, 2018 Marius Bakke@*
50Copyright @copyright{} 2017 Hartmut Goebel@* 50Copyright @copyright{} 2017 Hartmut Goebel@*
51Copyright @copyright{} 2017 Maxim Cournoyer@* 51Copyright @copyright{} 2017, 2019 Maxim Cournoyer@*
52Copyright @copyright{} 2017, 2018, 2019 Tobias Geerinckx-Rice@* 52Copyright @copyright{} 2017, 2018, 2019 Tobias Geerinckx-Rice@*
53Copyright @copyright{} 2017 George Clemmer@* 53Copyright @copyright{} 2017 George Clemmer@*
54Copyright @copyright{} 2017 Andy Wingo@* 54Copyright @copyright{} 2017 Andy Wingo@*
@@ -1035,7 +1035,7 @@ build are copied back to the initial machine.
1035 1035
1036The @file{/etc/guix/machines.scm} file typically looks like this: 1036The @file{/etc/guix/machines.scm} file typically looks like this:
1037 1037
1038@example 1038@lisp
1039(list (build-machine 1039(list (build-machine
1040 (name "eightysix.example.org") 1040 (name "eightysix.example.org")
1041 (system "x86_64-linux") 1041 (system "x86_64-linux")
@@ -1051,7 +1051,7 @@ The @file{/etc/guix/machines.scm} file typically looks like this:
1051 (private-key 1051 (private-key
1052 (string-append (getenv "HOME") 1052 (string-append (getenv "HOME")
1053 "/.ssh/identity-for-guix")))) 1053 "/.ssh/identity-for-guix"))))
1054@end example 1054@end lisp
1055 1055
1056@noindent 1056@noindent
1057In the example above we specify a list of two build machines, one for 1057In the example above we specify a list of two build machines, one for
@@ -1724,8 +1724,8 @@ to make sure your TrueType fonts are listed there.
1724After installing fonts you may have to refresh the font cache to use 1724After installing fonts you may have to refresh the font cache to use
1725them in applications. The same applies when applications installed via 1725them in applications. The same applies when applications installed via
1726Guix do not seem to find fonts. To force rebuilding of the font cache 1726Guix do not seem to find fonts. To force rebuilding of the font cache
1727run @code{fc-cache -f}. The @code{fc-cache} command is provided by the 1727run @code{fc-cache -rv}. The @code{fc-cache} command is provided by
1728@code{fontconfig} package. 1728the @code{fontconfig} package.
1729 1729
1730@subsection X.509 Certificates 1730@subsection X.509 Certificates
1731 1731
@@ -2756,9 +2756,9 @@ Install the package that the code within @var{file} evaluates to.
2756As an example, @var{file} might contain a definition like this 2756As an example, @var{file} might contain a definition like this
2757(@pxref{Defining Packages}): 2757(@pxref{Defining Packages}):
2758 2758
2759@example 2759@lisp
2760@verbatiminclude package-hello.scm 2760@verbatiminclude package-hello.scm
2761@end example 2761@end lisp
2762 2762
2763Developers may find it useful to include such a @file{guix.scm} file 2763Developers may find it useful to include such a @file{guix.scm} file
2764in the root of their project source tree that can be used to test 2764in the root of their project source tree that can be used to test
@@ -2814,7 +2814,7 @@ so on.
2814of packages: 2814of packages:
2815 2815
2816@findex packages->manifest 2816@findex packages->manifest
2817@example 2817@lisp
2818(use-package-modules guile emacs) 2818(use-package-modules guile emacs)
2819 2819
2820(packages->manifest 2820(packages->manifest
@@ -2822,7 +2822,7 @@ of packages:
2822 guile-2.0 2822 guile-2.0
2823 ;; Use a specific package output. 2823 ;; Use a specific package output.
2824 (list guile-2.0 "debug"))) 2824 (list guile-2.0 "debug")))
2825@end example 2825@end lisp
2826 2826
2827@findex specifications->manifest 2827@findex specifications->manifest
2828In this example we have to know which modules define the @code{emacs} 2828In this example we have to know which modules define the @code{emacs}
@@ -2832,10 +2832,10 @@ instead provide regular package specifications and let
2832@code{specifications->manifest} look up the corresponding package 2832@code{specifications->manifest} look up the corresponding package
2833objects, like this: 2833objects, like this:
2834 2834
2835@example 2835@lisp
2836(specifications->manifest 2836(specifications->manifest
2837 '("emacs" "guile@@2.2" "guile@@2.2:debug")) 2837 '("emacs" "guile@@2.2" "guile@@2.2:debug"))
2838@end example 2838@end lisp
2839 2839
2840@item --roll-back 2840@item --roll-back
2841@cindex rolling back 2841@cindex rolling back
@@ -3496,6 +3496,10 @@ This prints nothing unless the daemon was started with
3496List the GC roots owned by the user; when run as root, list @emph{all} the GC 3496List the GC roots owned by the user; when run as root, list @emph{all} the GC
3497roots. 3497roots.
3498 3498
3499@item --list-busy
3500List store items in use by currently running processes. These store
3501items are effectively considered GC roots: they cannot be deleted.
3502
3499@item --clear-failures 3503@item --clear-failures
3500Remove the specified store items from the failed-build cache. 3504Remove the specified store items from the failed-build cache.
3501 3505
@@ -3620,7 +3624,7 @@ version. New @command{guix} sub-commands added by the update also
3620become available. 3624become available.
3621 3625
3622Any user can update their Guix copy using @command{guix pull}, and the 3626Any user can update their Guix copy using @command{guix pull}, and the
3623effect is limited to the user who run @command{guix pull}. For 3627effect is limited to the user who ran @command{guix pull}. For
3624instance, when user @code{root} runs @command{guix pull}, this has no 3628instance, when user @code{root} runs @command{guix pull}, this has no
3625effect on the version of Guix that user @code{alice} sees, and vice 3629effect on the version of Guix that user @code{alice} sees, and vice
3626versa. 3630versa.
@@ -4548,9 +4552,9 @@ within @var{file} evaluates to.
4548As an example, @var{file} might contain a definition like this 4552As an example, @var{file} might contain a definition like this
4549(@pxref{Defining Packages}): 4553(@pxref{Defining Packages}):
4550 4554
4551@example 4555@lisp
4552@verbatiminclude environment-gdb.scm 4556@verbatiminclude environment-gdb.scm
4553@end example 4557@end lisp
4554 4558
4555@item --manifest=@var{file} 4559@item --manifest=@var{file}
4556@itemx -m @var{file} 4560@itemx -m @var{file}
@@ -5124,7 +5128,7 @@ The high-level interface to package definitions is implemented in the
5124example, the package definition, or @dfn{recipe}, for the GNU Hello 5128example, the package definition, or @dfn{recipe}, for the GNU Hello
5125package looks like this: 5129package looks like this:
5126 5130
5127@example 5131@lisp
5128(define-module (gnu packages hello) 5132(define-module (gnu packages hello)
5129 #:use-module (guix packages) 5133 #:use-module (guix packages)
5130 #:use-module (guix download) 5134 #:use-module (guix download)
@@ -5150,7 +5154,7 @@ package looks like this:
5150 (description "Guess what GNU Hello prints!") 5154 (description "Guess what GNU Hello prints!")
5151 (home-page "https://www.gnu.org/software/hello/") 5155 (home-page "https://www.gnu.org/software/hello/")
5152 (license gpl3+))) 5156 (license gpl3+)))
5153@end example 5157@end lisp
5154 5158
5155@noindent 5159@noindent
5156Without being a Scheme expert, the reader may have guessed the meaning 5160Without being a Scheme expert, the reader may have guessed the meaning
@@ -5331,7 +5335,7 @@ the name of a package and returns its new name after rewrite.
5331@noindent 5335@noindent
5332Consider this example: 5336Consider this example:
5333 5337
5334@example 5338@lisp
5335(define libressl-instead-of-openssl 5339(define libressl-instead-of-openssl
5336 ;; This is a procedure to replace OPENSSL by LIBRESSL, 5340 ;; This is a procedure to replace OPENSSL by LIBRESSL,
5337 ;; recursively. 5341 ;; recursively.
@@ -5339,7 +5343,7 @@ Consider this example:
5339 5343
5340(define git-with-libressl 5344(define git-with-libressl
5341 (libressl-instead-of-openssl git)) 5345 (libressl-instead-of-openssl git))
5342@end example 5346@end lisp
5343 5347
5344@noindent 5348@noindent
5345Here we first define a rewriting procedure that replaces @var{openssl} 5349Here we first define a rewriting procedure that replaces @var{openssl}
@@ -5361,11 +5365,11 @@ replacement for that package.
5361 5365
5362The example above could be rewritten this way: 5366The example above could be rewritten this way:
5363 5367
5364@example 5368@lisp
5365(define libressl-instead-of-openssl 5369(define libressl-instead-of-openssl
5366 ;; Replace all the packages called "openssl" with LibreSSL. 5370 ;; Replace all the packages called "openssl" with LibreSSL.
5367 (package-input-rewriting/spec `(("openssl" . ,(const libressl))))) 5371 (package-input-rewriting/spec `(("openssl" . ,(const libressl)))))
5368@end example 5372@end lisp
5369 5373
5370The key difference here is that, this time, packages are matched by spec and 5374The key difference here is that, this time, packages are matched by spec and
5371not by identity. In other words, any package in the graph that is called 5375not by identity. In other words, any package in the graph that is called
@@ -5431,11 +5435,11 @@ defaults to @code{"out"} (@pxref{Packages with Multiple Outputs}, for
5431more on package outputs). For example, the list below specifies three 5435more on package outputs). For example, the list below specifies three
5432inputs: 5436inputs:
5433 5437
5434@example 5438@lisp
5435`(("libffi" ,libffi) 5439`(("libffi" ,libffi)
5436 ("libunistring" ,libunistring) 5440 ("libunistring" ,libunistring)
5437 ("glib:bin" ,glib "bin")) ;the "bin" output of Glib 5441 ("glib:bin" ,glib "bin")) ;the "bin" output of Glib
5438@end example 5442@end lisp
5439 5443
5440@cindex cross compilation, package dependencies 5444@cindex cross compilation, package dependencies
5441The distinction between @code{native-inputs} and @code{inputs} is 5445The distinction between @code{native-inputs} and @code{inputs} is
@@ -5516,7 +5520,7 @@ identifier resolves to the package being defined.
5516The example below shows how to add a package as a native input of itself when 5520The example below shows how to add a package as a native input of itself when
5517cross-compiling: 5521cross-compiling:
5518 5522
5519@example 5523@lisp
5520(package 5524(package
5521 (name "guile") 5525 (name "guile")
5522 ;; ... 5526 ;; ...
@@ -5526,7 +5530,7 @@ cross-compiling:
5526 (native-inputs (if (%current-target-system) 5530 (native-inputs (if (%current-target-system)
5527 `(("self" ,this-package)) 5531 `(("self" ,this-package))
5528 '()))) 5532 '())))
5529@end example 5533@end lisp
5530 5534
5531It is an error to refer to @code{this-package} outside a package definition. 5535It is an error to refer to @code{this-package} outside a package definition.
5532@end deffn 5536@end deffn
@@ -5563,11 +5567,11 @@ clone the Git version control repository, and check out the revision
5563specified in the @code{uri} field as a @code{git-reference} object; a 5567specified in the @code{uri} field as a @code{git-reference} object; a
5564@code{git-reference} looks like this: 5568@code{git-reference} looks like this:
5565 5569
5566@example 5570@lisp
5567(git-reference 5571(git-reference
5568 (url "https://git.savannah.gnu.org/git/hello.git") 5572 (url "https://git.savannah.gnu.org/git/hello.git")
5569 (commit "v2.10")) 5573 (commit "v2.10"))
5570@end example 5574@end lisp
5571@end table 5575@end table
5572 5576
5573@item @code{sha256} 5577@item @code{sha256}
@@ -6779,7 +6783,7 @@ in a monad---values that carry this additional context---are called
6779 6783
6780Consider this ``normal'' procedure: 6784Consider this ``normal'' procedure:
6781 6785
6782@example 6786@lisp
6783(define (sh-symlink store) 6787(define (sh-symlink store)
6784 ;; Return a derivation that symlinks the 'bash' executable. 6788 ;; Return a derivation that symlinks the 'bash' executable.
6785 (let* ((drv (package-derivation store bash)) 6789 (let* ((drv (package-derivation store bash))
@@ -6787,19 +6791,19 @@ Consider this ``normal'' procedure:
6787 (sh (string-append out "/bin/bash"))) 6791 (sh (string-append out "/bin/bash")))
6788 (build-expression->derivation store "sh" 6792 (build-expression->derivation store "sh"
6789 `(symlink ,sh %output)))) 6793 `(symlink ,sh %output))))
6790@end example 6794@end lisp
6791 6795
6792Using @code{(guix monads)} and @code{(guix gexp)}, it may be rewritten 6796Using @code{(guix monads)} and @code{(guix gexp)}, it may be rewritten
6793as a monadic function: 6797as a monadic function:
6794 6798
6795@example 6799@lisp
6796(define (sh-symlink) 6800(define (sh-symlink)
6797 ;; Same, but return a monadic value. 6801 ;; Same, but return a monadic value.
6798 (mlet %store-monad ((drv (package->derivation bash))) 6802 (mlet %store-monad ((drv (package->derivation bash)))
6799 (gexp->derivation "sh" 6803 (gexp->derivation "sh"
6800 #~(symlink (string-append #$drv "/bin/bash") 6804 #~(symlink (string-append #$drv "/bin/bash")
6801 #$output)))) 6805 #$output))))
6802@end example 6806@end lisp
6803 6807
6804There are several things to note in the second version: the @code{store} 6808There are several things to note in the second version: the @code{store}
6805parameter is now implicit and is ``threaded'' in the calls to the 6809parameter is now implicit and is ``threaded'' in the calls to the
@@ -6811,12 +6815,12 @@ As it turns out, the call to @code{package->derivation} can even be
6811omitted since it will take place implicitly, as we will see later 6815omitted since it will take place implicitly, as we will see later
6812(@pxref{G-Expressions}): 6816(@pxref{G-Expressions}):
6813 6817
6814@example 6818@lisp
6815(define (sh-symlink) 6819(define (sh-symlink)
6816 (gexp->derivation "sh" 6820 (gexp->derivation "sh"
6817 #~(symlink (string-append #$bash "/bin/bash") 6821 #~(symlink (string-append #$bash "/bin/bash")
6818 #$output))) 6822 #$output)))
6819@end example 6823@end lisp
6820 6824
6821@c See 6825@c See
6822@c <https://syntaxexclamation.wordpress.com/2014/06/26/escaping-continuations/> 6826@c <https://syntaxexclamation.wordpress.com/2014/06/26/escaping-continuations/>
@@ -6826,10 +6830,10 @@ said, ``you exit a monad like you exit a building on fire: by running''.
6826So, to exit the monad and get the desired effect, one must use 6830So, to exit the monad and get the desired effect, one must use
6827@code{run-with-store}: 6831@code{run-with-store}:
6828 6832
6829@example 6833@lisp
6830(run-with-store (open-connection) (sh-symlink)) 6834(run-with-store (open-connection) (sh-symlink))
6831@result{} /gnu/store/...-sh-symlink 6835@result{} /gnu/store/...-sh-symlink
6832@end example 6836@end lisp
6833 6837
6834Note that the @code{(guix monad-repl)} module extends the Guile REPL with 6838Note that the @code{(guix monad-repl)} module extends the Guile REPL with
6835new ``meta-commands'' to make it easier to deal with monadic procedures: 6839new ``meta-commands'' to make it easier to deal with monadic procedures:
@@ -6878,7 +6882,7 @@ Guile. Thus we use this somewhat cryptic symbol inherited from the
6878Haskell language.}. There can be one @var{mproc} or several of them, as 6882Haskell language.}. There can be one @var{mproc} or several of them, as
6879in this example: 6883in this example:
6880 6884
6881@example 6885@lisp
6882(run-with-state 6886(run-with-state
6883 (with-monad %state-monad 6887 (with-monad %state-monad
6884 (>>= (return 1) 6888 (>>= (return 1)
@@ -6888,7 +6892,7 @@ in this example:
6888 6892
6889@result{} 4 6893@result{} 4
6890@result{} some-state 6894@result{} some-state
6891@end example 6895@end lisp
6892@end deffn 6896@end deffn
6893 6897
6894@deffn {Scheme Syntax} mlet @var{monad} ((@var{var} @var{mval}) ...) @ 6898@deffn {Scheme Syntax} mlet @var{monad} ((@var{var} @var{mval}) ...) @
@@ -6947,7 +6951,7 @@ Consider the example below. The @code{square} procedure returns a value
6947in the state monad. It returns the square of its argument, but also 6951in the state monad. It returns the square of its argument, but also
6948increments the current state value: 6952increments the current state value:
6949 6953
6950@example 6954@lisp
6951(define (square x) 6955(define (square x)
6952 (mlet %state-monad ((count (current-state))) 6956 (mlet %state-monad ((count (current-state)))
6953 (mbegin %state-monad 6957 (mbegin %state-monad
@@ -6957,7 +6961,7 @@ increments the current state value:
6957(run-with-state (sequence %state-monad (map square (iota 3))) 0) 6961(run-with-state (sequence %state-monad (map square (iota 3))) 0)
6958@result{} (0 1 4) 6962@result{} (0 1 4)
6959@result{} 3 6963@result{} 3
6960@end example 6964@end lisp
6961 6965
6962When ``run'' through @var{%state-monad}, we obtain that additional state 6966When ``run'' through @var{%state-monad}, we obtain that additional state
6963value, which is the number of @code{square} calls. 6967value, which is the number of @code{square} calls.
@@ -7032,14 +7036,14 @@ entries for which @var{select?} does not return true.
7032 7036
7033The example below adds a file to the store, under two different names: 7037The example below adds a file to the store, under two different names:
7034 7038
7035@example 7039@lisp
7036(run-with-store (open-connection) 7040(run-with-store (open-connection)
7037 (mlet %store-monad ((a (interned-file "README")) 7041 (mlet %store-monad ((a (interned-file "README"))
7038 (b (interned-file "README" "LEGU-MIN"))) 7042 (b (interned-file "README" "LEGU-MIN")))
7039 (return (list a b)))) 7043 (return (list a b))))
7040 7044
7041@result{} ("/gnu/store/rwm@dots{}-README" "/gnu/store/44i@dots{}-LEGU-MIN") 7045@result{} ("/gnu/store/rwm@dots{}-README" "/gnu/store/44i@dots{}-LEGU-MIN")
7042@end example 7046@end lisp
7043 7047
7044@end deffn 7048@end deffn
7045 7049
@@ -7133,22 +7137,22 @@ below.)
7133 7137
7134To illustrate the idea, here is an example of a gexp: 7138To illustrate the idea, here is an example of a gexp:
7135 7139
7136@example 7140@lisp
7137(define build-exp 7141(define build-exp
7138 #~(begin 7142 #~(begin
7139 (mkdir #$output) 7143 (mkdir #$output)
7140 (chdir #$output) 7144 (chdir #$output)
7141 (symlink (string-append #$coreutils "/bin/ls") 7145 (symlink (string-append #$coreutils "/bin/ls")
7142 "list-files"))) 7146 "list-files")))
7143@end example 7147@end lisp
7144 7148
7145This gexp can be passed to @code{gexp->derivation}; we obtain a 7149This gexp can be passed to @code{gexp->derivation}; we obtain a
7146derivation that builds a directory containing exactly one symlink to 7150derivation that builds a directory containing exactly one symlink to
7147@file{/gnu/store/@dots{}-coreutils-8.22/bin/ls}: 7151@file{/gnu/store/@dots{}-coreutils-8.22/bin/ls}:
7148 7152
7149@example 7153@lisp
7150(gexp->derivation "the-thing" build-exp) 7154(gexp->derivation "the-thing" build-exp)
7151@end example 7155@end lisp
7152 7156
7153As one would expect, the @code{"/gnu/store/@dots{}-coreutils-8.22"} string is 7157As one would expect, the @code{"/gnu/store/@dots{}-coreutils-8.22"} string is
7154substituted to the reference to the @var{coreutils} package in the 7158substituted to the reference to the @var{coreutils} package in the
@@ -7164,7 +7168,7 @@ host---versus references to cross builds of a package. To that end, the
7164@code{#+} plays the same role as @code{#$}, but is a reference to a 7168@code{#+} plays the same role as @code{#$}, but is a reference to a
7165native package build: 7169native package build:
7166 7170
7167@example 7171@lisp
7168(gexp->derivation "vi" 7172(gexp->derivation "vi"
7169 #~(begin 7173 #~(begin
7170 (mkdir #$output) 7174 (mkdir #$output)
@@ -7173,7 +7177,7 @@ native package build:
7173 (string-append #$emacs "/bin/emacs") 7177 (string-append #$emacs "/bin/emacs")
7174 (string-append #$output "/bin/vi"))) 7178 (string-append #$output "/bin/vi")))
7175 #:target "mips64el-linux-gnu") 7179 #:target "mips64el-linux-gnu")
7176@end example 7180@end lisp
7177 7181
7178@noindent 7182@noindent
7179In the example above, the native build of @var{coreutils} is used, so 7183In the example above, the native build of @var{coreutils} is used, so
@@ -7187,7 +7191,7 @@ able to use certain Guile modules from the ``host environment'' in the
7187gexp, so those modules should be imported in the ``build environment''. 7191gexp, so those modules should be imported in the ``build environment''.
7188The @code{with-imported-modules} form allows you to express that: 7192The @code{with-imported-modules} form allows you to express that:
7189 7193
7190@example 7194@lisp
7191(let ((build (with-imported-modules '((guix build utils)) 7195(let ((build (with-imported-modules '((guix build utils))
7192 #~(begin 7196 #~(begin
7193 (use-modules (guix build utils)) 7197 (use-modules (guix build utils))
@@ -7197,7 +7201,7 @@ The @code{with-imported-modules} form allows you to express that:
7197 #$build 7201 #$build
7198 (display "success!\n") 7202 (display "success!\n")
7199 #t))) 7203 #t)))
7200@end example 7204@end lisp
7201 7205
7202@noindent 7206@noindent
7203In this example, the @code{(guix build utils)} module is automatically 7207In this example, the @code{(guix build utils)} module is automatically
@@ -7213,7 +7217,7 @@ because of missing dependent modules. The @code{source-module-closure}
7213procedure computes the closure of a module by looking at its source file 7217procedure computes the closure of a module by looking at its source file
7214headers, which comes in handy in this case: 7218headers, which comes in handy in this case:
7215 7219
7216@example 7220@lisp
7217(use-modules (guix modules)) ;for 'source-module-closure' 7221(use-modules (guix modules)) ;for 'source-module-closure'
7218 7222
7219(with-imported-modules (source-module-closure 7223(with-imported-modules (source-module-closure
@@ -7224,7 +7228,7 @@ headers, which comes in handy in this case:
7224 (use-modules (guix build utils) 7228 (use-modules (guix build utils)
7225 (gnu build vm)) 7229 (gnu build vm))
7226 @dots{}))) 7230 @dots{})))
7227@end example 7231@end lisp
7228 7232
7229@cindex extensions, for gexps 7233@cindex extensions, for gexps
7230@findex with-extensions 7234@findex with-extensions
@@ -7233,7 +7237,7 @@ modules, but also ``extensions'' such as Guile bindings to C libraries
7233or other ``full-blown'' packages. Say you need the @code{guile-json} 7237or other ``full-blown'' packages. Say you need the @code{guile-json}
7234package available on the build side, here's how you would do it: 7238package available on the build side, here's how you would do it:
7235 7239
7236@example 7240@lisp
7237(use-modules (gnu packages guile)) ;for 'guile-json' 7241(use-modules (gnu packages guile)) ;for 'guile-json'
7238 7242
7239(with-extensions (list guile-json) 7243(with-extensions (list guile-json)
@@ -7241,7 +7245,7 @@ package available on the build side, here's how you would do it:
7241 #~(begin 7245 #~(begin
7242 (use-modules (json)) 7246 (use-modules (json))
7243 @dots{}))) 7247 @dots{})))
7244@end example 7248@end lisp
7245 7249
7246The syntactic form to construct gexps is summarized below. 7250The syntactic form to construct gexps is summarized below.
7247 7251
@@ -7310,12 +7314,12 @@ Each item in @var{modules} can be the name of a module, such as
7310@code{(guix build utils)}, or it can be a module name, followed by an 7314@code{(guix build utils)}, or it can be a module name, followed by an
7311arrow, followed by a file-like object: 7315arrow, followed by a file-like object:
7312 7316
7313@example 7317@lisp
7314`((guix build utils) 7318`((guix build utils)
7315 (guix gcrypt) 7319 (guix gcrypt)
7316 ((guix config) => ,(scheme-file "config.scm" 7320 ((guix config) => ,(scheme-file "config.scm"
7317 #~(define-module @dots{})))) 7321 #~(define-module @dots{}))))
7318@end example 7322@end lisp
7319 7323
7320@noindent 7324@noindent
7321In the example above, the first two modules are taken from the search 7325In the example above, the first two modules are taken from the search
@@ -7414,10 +7418,10 @@ The @code{local-file}, @code{plain-file}, @code{computed-file},
7414@dfn{file-like objects}. That is, when unquoted in a G-expression, 7418@dfn{file-like objects}. That is, when unquoted in a G-expression,
7415these objects lead to a file in the store. Consider this G-expression: 7419these objects lead to a file in the store. Consider this G-expression:
7416 7420
7417@example 7421@lisp
7418#~(system* #$(file-append glibc "/sbin/nscd") "-f" 7422#~(system* #$(file-append glibc "/sbin/nscd") "-f"
7419 #$(local-file "/tmp/my-nscd.conf")) 7423 #$(local-file "/tmp/my-nscd.conf"))
7420@end example 7424@end lisp
7421 7425
7422The effect here is to ``intern'' @file{/tmp/my-nscd.conf} by copying it 7426The effect here is to ``intern'' @file{/tmp/my-nscd.conf} by copying it
7423to the store. Once expanded, for instance @i{via} 7427to the store. Once expanded, for instance @i{via}
@@ -7473,13 +7477,13 @@ Look up @var{exp}'s modules in @var{module-path}.
7473The example below builds a script that simply invokes the @command{ls} 7477The example below builds a script that simply invokes the @command{ls}
7474command: 7478command:
7475 7479
7476@example 7480@lisp
7477(use-modules (guix gexp) (gnu packages base)) 7481(use-modules (guix gexp) (gnu packages base))
7478 7482
7479(gexp->script "list-files" 7483(gexp->script "list-files"
7480 #~(execl #$(file-append coreutils "/bin/ls") 7484 #~(execl #$(file-append coreutils "/bin/ls")
7481 "ls")) 7485 "ls"))
7482@end example 7486@end lisp
7483 7487
7484When ``running'' it through the store (@pxref{The Store Monad, 7488When ``running'' it through the store (@pxref{The Store Monad,
7485@code{run-with-store}}), we obtain a derivation that produces an 7489@code{run-with-store}}), we obtain a derivation that produces an
@@ -7537,14 +7541,14 @@ to create will reference items from the store. This is typically the
7537case when building a configuration file that embeds store file names, 7541case when building a configuration file that embeds store file names,
7538like this: 7542like this:
7539 7543
7540@example 7544@lisp
7541(define (profile.sh) 7545(define (profile.sh)
7542 ;; Return the name of a shell script in the store that 7546 ;; Return the name of a shell script in the store that
7543 ;; initializes the 'PATH' environment variable. 7547 ;; initializes the 'PATH' environment variable.
7544 (text-file* "profile.sh" 7548 (text-file* "profile.sh"
7545 "export PATH=" coreutils "/bin:" 7549 "export PATH=" coreutils "/bin:"
7546 grep "/bin:" sed "/bin\n")) 7550 grep "/bin:" sed "/bin\n"))
7547@end example 7551@end lisp
7548 7552
7549In this example, the resulting @file{/gnu/store/@dots{}-profile.sh} file 7553In this example, the resulting @file{/gnu/store/@dots{}-profile.sh} file
7550will reference @var{coreutils}, @var{grep}, and @var{sed}, thereby 7554will reference @var{coreutils}, @var{grep}, and @var{sed}, thereby
@@ -7556,10 +7560,10 @@ Return an object representing store file @var{name} containing
7556@var{text}. @var{text} is a sequence of strings and file-like objects, 7560@var{text}. @var{text} is a sequence of strings and file-like objects,
7557as in: 7561as in:
7558 7562
7559@example 7563@lisp
7560(mixed-text-file "profile" 7564(mixed-text-file "profile"
7561 "export PATH=" coreutils "/bin:" grep "/bin") 7565 "export PATH=" coreutils "/bin:" grep "/bin")
7562@end example 7566@end lisp
7563 7567
7564This is the declarative counterpart of @code{text-file*}. 7568This is the declarative counterpart of @code{text-file*}.
7565@end deffn 7569@end deffn
@@ -7570,13 +7574,13 @@ Each item in @var{files} must be a two-element list where the first element is t
7570file name to use in the new directory, and the second element is a gexp 7574file name to use in the new directory, and the second element is a gexp
7571denoting the target file. Here's an example: 7575denoting the target file. Here's an example:
7572 7576
7573@example 7577@lisp
7574(file-union "etc" 7578(file-union "etc"
7575 `(("hosts" ,(plain-file "hosts" 7579 `(("hosts" ,(plain-file "hosts"
7576 "127.0.0.1 localhost")) 7580 "127.0.0.1 localhost"))
7577 ("bashrc" ,(plain-file "bashrc" 7581 ("bashrc" ,(plain-file "bashrc"
7578 "alias ls='ls --color=auto'")))) 7582 "alias ls='ls --color=auto'"))))
7579@end example 7583@end lisp
7580 7584
7581This yields an @code{etc} directory containing these two files. 7585This yields an @code{etc} directory containing these two files.
7582@end deffn 7586@end deffn
@@ -7585,9 +7589,9 @@ This yields an @code{etc} directory containing these two files.
7585Return a directory that is the union of @var{things}, where @var{things} is a list of 7589Return a directory that is the union of @var{things}, where @var{things} is a list of
7586file-like objects denoting directories. For example: 7590file-like objects denoting directories. For example:
7587 7591
7588@example 7592@lisp
7589(directory-union "guile+emacs" (list guile emacs)) 7593(directory-union "guile+emacs" (list guile emacs))
7590@end example 7594@end lisp
7591 7595
7592yields a directory that is the union of the @code{guile} and @code{emacs} packages. 7596yields a directory that is the union of the @code{guile} and @code{emacs} packages.
7593@end deffn 7597@end deffn
@@ -7599,19 +7603,19 @@ and @var{suffix}, where @var{obj} is a lowerable object and each
7599 7603
7600As an example, consider this gexp: 7604As an example, consider this gexp:
7601 7605
7602@example 7606@lisp
7603(gexp->script "run-uname" 7607(gexp->script "run-uname"
7604 #~(system* #$(file-append coreutils 7608 #~(system* #$(file-append coreutils
7605 "/bin/uname"))) 7609 "/bin/uname")))
7606@end example 7610@end lisp
7607 7611
7608The same effect could be achieved with: 7612The same effect could be achieved with:
7609 7613
7610@example 7614@lisp
7611(gexp->script "run-uname" 7615(gexp->script "run-uname"
7612 #~(system* (string-append #$coreutils 7616 #~(system* (string-append #$coreutils
7613 "/bin/uname"))) 7617 "/bin/uname")))
7614@end example 7618@end lisp
7615 7619
7616There is one difference though: in the @code{file-append} case, the 7620There is one difference though: in the @code{file-append} case, the
7617resulting script contains the absolute file name as a string, whereas in 7621resulting script contains the absolute file name as a string, whereas in
@@ -8099,9 +8103,9 @@ Build the package, derivation, or other file-like object that the code within
8099As an example, @var{file} might contain a package definition like this 8103As an example, @var{file} might contain a package definition like this
8100(@pxref{Defining Packages}): 8104(@pxref{Defining Packages}):
8101 8105
8102@example 8106@lisp
8103@verbatiminclude package-hello.scm 8107@verbatiminclude package-hello.scm
8104@end example 8108@end lisp
8105 8109
8106@item --expression=@var{expr} 8110@item --expression=@var{expr}
8107@itemx -e @var{expr} 8111@itemx -e @var{expr}
@@ -8908,7 +8912,17 @@ in Guix.
8908@item crate 8912@item crate
8909@cindex crate 8913@cindex crate
8910Import metadata from the crates.io Rust package repository 8914Import metadata from the crates.io Rust package repository
8911@uref{https://crates.io, crates.io}. 8915@uref{https://crates.io, crates.io}, as in this example:
8916
8917@example
8918guix import crate blake2-rfc
8919@end example
8920
8921The crate importer also allows you to specify a version string:
8922
8923@example
8924guix import crate constant-time-eq@@0.1.0
8925@end example
8912 8926
8913@item opam 8927@item opam
8914@cindex OPAM 8928@cindex OPAM
@@ -8974,13 +8988,13 @@ and @command{guix refresh} needs a little help. Most updaters honor the
8974@code{upstream-name} property in package definitions, which can be used 8988@code{upstream-name} property in package definitions, which can be used
8975to that effect: 8989to that effect:
8976 8990
8977@example 8991@lisp
8978(define-public network-manager 8992(define-public network-manager
8979 (package 8993 (package
8980 (name "network-manager") 8994 (name "network-manager")
8981 ;; @dots{} 8995 ;; @dots{}
8982 (properties '((upstream-name . "NetworkManager"))))) 8996 (properties '((upstream-name . "NetworkManager")))))
8983@end example 8997@end lisp
8984 8998
8985When passed @code{--update}, it modifies distribution source files to 8999When passed @code{--update}, it modifies distribution source files to
8986update the version numbers and source tarball hashes of those package 9000update the version numbers and source tarball hashes of those package
@@ -9323,14 +9337,14 @@ Package developers can specify in package recipes the
9323name and version of the package when they differ from the name or version 9337name and version of the package when they differ from the name or version
9324that Guix uses, as in this example: 9338that Guix uses, as in this example:
9325 9339
9326@example 9340@lisp
9327(package 9341(package
9328 (name "grub") 9342 (name "grub")
9329 ;; @dots{} 9343 ;; @dots{}
9330 ;; CPE calls this package "grub2". 9344 ;; CPE calls this package "grub2".
9331 (properties '((cpe-name . "grub2") 9345 (properties '((cpe-name . "grub2")
9332 (cpe-version . "2.3"))) 9346 (cpe-version . "2.3")))
9333@end example 9347@end lisp
9334 9348
9335@c See <https://www.openwall.com/lists/oss-security/2017/03/15/3>. 9349@c See <https://www.openwall.com/lists/oss-security/2017/03/15/3>.
9336Some entries in the CVE database do not specify which version of a 9350Some entries in the CVE database do not specify which version of a
@@ -9338,7 +9352,7 @@ package they apply to, and would thus ``stick around'' forever. Package
9338developers who found CVE alerts and verified they can be ignored can 9352developers who found CVE alerts and verified they can be ignored can
9339declare them as in this example: 9353declare them as in this example:
9340 9354
9341@example 9355@lisp
9342(package 9356(package
9343 (name "t1lib") 9357 (name "t1lib")
9344 ;; @dots{} 9358 ;; @dots{}
@@ -9347,7 +9361,7 @@ declare them as in this example:
9347 "CVE-2011-1553" 9361 "CVE-2011-1553"
9348 "CVE-2011-1554" 9362 "CVE-2011-1554"
9349 "CVE-2011-5244"))))) 9363 "CVE-2011-5244")))))
9350@end example 9364@end lisp
9351 9365
9352@item formatting 9366@item formatting
9353Warn about obvious source code formatting issues: trailing white space, 9367Warn about obvious source code formatting issues: trailing white space,
@@ -10447,11 +10461,11 @@ mode, as in the example above. However, more recent machines rely instead on
10447the @dfn{Unified Extensible Firmware Interface} (UEFI) to boot. In that case, 10461the @dfn{Unified Extensible Firmware Interface} (UEFI) to boot. In that case,
10448the @code{bootloader} field should contain something along these lines: 10462the @code{bootloader} field should contain something along these lines:
10449 10463
10450@example 10464@lisp
10451(bootloader-configuration 10465(bootloader-configuration
10452 (bootloader grub-efi-bootloader) 10466 (bootloader grub-efi-bootloader)
10453 (target "/boot/efi")) 10467 (target "/boot/efi"))
10454@end example 10468@end lisp
10455 10469
10456@xref{Bootloader Configuration}, for more information on the available 10470@xref{Bootloader Configuration}, for more information on the available
10457configuration options. 10471configuration options.
@@ -10588,11 +10602,11 @@ Partitioning,,, guile, GNU Guile Reference Manual}). For instance, the
10588following expression returns a list that contains all the services in 10602following expression returns a list that contains all the services in
10589@code{%desktop-services} minus the Avahi service: 10603@code{%desktop-services} minus the Avahi service:
10590 10604
10591@example 10605@lisp
10592(remove (lambda (service) 10606(remove (lambda (service)
10593 (eq? (service-kind service) avahi-service-type)) 10607 (eq? (service-kind service) avahi-service-type))
10594 %desktop-services) 10608 %desktop-services)
10595@end example 10609@end lisp
10596 10610
10597@unnumberedsubsec Instantiating the System 10611@unnumberedsubsec Instantiating the System
10598 10612
@@ -10753,12 +10767,12 @@ the home directory of newly-created user accounts.
10753 10767
10754For instance, a valid value may look like this: 10768For instance, a valid value may look like this:
10755 10769
10756@example 10770@lisp
10757`((".bashrc" ,(plain-file "bashrc" "echo Hello\n")) 10771`((".bashrc" ,(plain-file "bashrc" "echo Hello\n"))
10758 (".guile" ,(plain-file "guile" 10772 (".guile" ,(plain-file "guile"
10759 "(use-modules (ice-9 readline)) 10773 "(use-modules (ice-9 readline))
10760 (activate-readline)"))) 10774 (activate-readline)")))
10761@end example 10775@end lisp
10762 10776
10763@item @code{issue} (default: @code{%default-issue}) 10777@item @code{issue} (default: @code{%default-issue})
10764A string denoting the contents of the @file{/etc/issue} file, which is 10778A string denoting the contents of the @file{/etc/issue} file, which is
@@ -10836,14 +10850,14 @@ this identifier resolves to the operating system being defined.
10836The example below shows how to refer to the operating system being defined in 10850The example below shows how to refer to the operating system being defined in
10837the definition of the @code{label} field: 10851the definition of the @code{label} field:
10838 10852
10839@example 10853@lisp
10840(use-modules (gnu) (guix)) 10854(use-modules (gnu) (guix))
10841 10855
10842(operating-system 10856(operating-system
10843 ;; ... 10857 ;; ...
10844 (label (package-full-name 10858 (label (package-full-name
10845 (operating-system-kernel this-operating-system)))) 10859 (operating-system-kernel this-operating-system))))
10846@end example 10860@end lisp
10847 10861
10848It is an error to refer to @code{this-operating-system} outside an operating 10862It is an error to refer to @code{this-operating-system} outside an operating
10849system definition. 10863system definition.
@@ -10859,12 +10873,12 @@ The list of file systems to be mounted is specified in the
10859(@pxref{Using the Configuration System}). Each file system is declared 10873(@pxref{Using the Configuration System}). Each file system is declared
10860using the @code{file-system} form, like this: 10874using the @code{file-system} form, like this:
10861 10875
10862@example 10876@lisp
10863(file-system 10877(file-system
10864 (mount-point "/home") 10878 (mount-point "/home")
10865 (device "/dev/sda3") 10879 (device "/dev/sda3")
10866 (type "ext4")) 10880 (type "ext4"))
10867@end example 10881@end lisp
10868 10882
10869As usual, some of the fields are mandatory---those shown in the example 10883As usual, some of the fields are mandatory---those shown in the example
10870above---while others can be omitted. These are described below. 10884above---while others can be omitted. These are described below.
@@ -10898,12 +10912,12 @@ procedure, UUIDs are created using @code{uuid}, and @file{/dev} node are
10898plain strings. Here's an example of a file system referred to by its 10912plain strings. Here's an example of a file system referred to by its
10899label, as shown by the @command{e2label} command: 10913label, as shown by the @command{e2label} command:
10900 10914
10901@example 10915@lisp
10902(file-system 10916(file-system
10903 (mount-point "/home") 10917 (mount-point "/home")
10904 (type "ext4") 10918 (type "ext4")
10905 (device (file-system-label "my-home"))) 10919 (device (file-system-label "my-home")))
10906@end example 10920@end lisp
10907 10921
10908@findex uuid 10922@findex uuid
10909UUIDs are converted from their string representation (as shown by the 10923UUIDs are converted from their string representation (as shown by the
@@ -10914,12 +10928,12 @@ form of UUID used by the ext2 family of file systems and others, but it
10914is different from ``UUIDs'' found in FAT file systems, for instance.}, 10928is different from ``UUIDs'' found in FAT file systems, for instance.},
10915like this: 10929like this:
10916 10930
10917@example 10931@lisp
10918(file-system 10932(file-system
10919 (mount-point "/home") 10933 (mount-point "/home")
10920 (type "ext4") 10934 (type "ext4")
10921 (device (uuid "4dab5feb-d176-45de-b287-9b0a6e4c01cb"))) 10935 (device (uuid "4dab5feb-d176-45de-b287-9b0a6e4c01cb")))
10922@end example 10936@end lisp
10923 10937
10924When the source of a file system is a mapped device (@pxref{Mapped 10938When the source of a file system is a mapped device (@pxref{Mapped
10925Devices}), its @code{device} field @emph{must} refer to the mapped 10939Devices}), its @code{device} field @emph{must} refer to the mapped
@@ -11094,12 +11108,12 @@ The @file{/dev/mapper/home}
11094device can then be used as the @code{device} of a @code{file-system} 11108device can then be used as the @code{device} of a @code{file-system}
11095declaration (@pxref{File Systems}). 11109declaration (@pxref{File Systems}).
11096 11110
11097@example 11111@lisp
11098(mapped-device 11112(mapped-device
11099 (source "/dev/sda3") 11113 (source "/dev/sda3")
11100 (target "home") 11114 (target "home")
11101 (type luks-device-mapping)) 11115 (type luks-device-mapping))
11102@end example 11116@end lisp
11103 11117
11104Alternatively, to become independent of device numbering, one may obtain 11118Alternatively, to become independent of device numbering, one may obtain
11105the LUKS UUID (@dfn{unique identifier}) of the source device by a 11119the LUKS UUID (@dfn{unique identifier}) of the source device by a
@@ -11111,12 +11125,12 @@ cryptsetup luksUUID /dev/sda3
11111 11125
11112and use it as follows: 11126and use it as follows:
11113 11127
11114@example 11128@lisp
11115(mapped-device 11129(mapped-device
11116 (source (uuid "cb67fc72-0d54-4c88-9d4b-b225f30b0f44")) 11130 (source (uuid "cb67fc72-0d54-4c88-9d4b-b225f30b0f44"))
11117 (target "home") 11131 (target "home")
11118 (type luks-device-mapping)) 11132 (type luks-device-mapping))
11119@end example 11133@end lisp
11120 11134
11121@cindex swap encryption 11135@cindex swap encryption
11122It is also desirable to encrypt swap space, since swap space may contain 11136It is also desirable to encrypt swap space, since swap space may contain
@@ -11128,12 +11142,12 @@ swap file is encrypted because the entire device is encrypted.
11128A RAID device formed of the partitions @file{/dev/sda1} and @file{/dev/sdb1} 11142A RAID device formed of the partitions @file{/dev/sda1} and @file{/dev/sdb1}
11129may be declared as follows: 11143may be declared as follows:
11130 11144
11131@example 11145@lisp
11132(mapped-device 11146(mapped-device
11133 (source (list "/dev/sda1" "/dev/sdb1")) 11147 (source (list "/dev/sda1" "/dev/sdb1"))
11134 (target "/dev/md0") 11148 (target "/dev/md0")
11135 (type raid-device-mapping)) 11149 (type raid-device-mapping))
11136@end example 11150@end lisp
11137 11151
11138The @file{/dev/md0} device can then be used as the @code{device} of a 11152The @file{/dev/md0} device can then be used as the @code{device} of a
11139@code{file-system} declaration (@pxref{File Systems}). 11153@code{file-system} declaration (@pxref{File Systems}).
@@ -11152,7 +11166,7 @@ User accounts and groups are entirely managed through the
11152@code{operating-system} declaration. They are specified with the 11166@code{operating-system} declaration. They are specified with the
11153@code{user-account} and @code{user-group} forms: 11167@code{user-account} and @code{user-group} forms:
11154 11168
11155@example 11169@lisp
11156(user-account 11170(user-account
11157 (name "alice") 11171 (name "alice")
11158 (group "users") 11172 (group "users")
@@ -11162,7 +11176,7 @@ User accounts and groups are entirely managed through the
11162 "cdrom")) ;the good ol' CD-ROM 11176 "cdrom")) ;the good ol' CD-ROM
11163 (comment "Bob's sister") 11177 (comment "Bob's sister")
11164 (home-directory "/home/alice")) 11178 (home-directory "/home/alice"))
11165@end example 11179@end lisp
11166 11180
11167When booting or upon completion of @command{guix system reconfigure}, 11181When booting or upon completion of @command{guix system reconfigure},
11168the system ensures that only the user accounts and groups specified in 11182the system ensures that only the user accounts and groups specified in
@@ -11226,14 +11240,14 @@ If you @emph{do} want to set an initial password for an account, then
11226this field must contain the encrypted password, as a string. You can use the 11240this field must contain the encrypted password, as a string. You can use the
11227@code{crypt} procedure for this purpose: 11241@code{crypt} procedure for this purpose:
11228 11242
11229@example 11243@lisp
11230(user-account 11244(user-account
11231 (name "charlie") 11245 (name "charlie")
11232 (group "users") 11246 (group "users")
11233 11247
11234 ;; Specify a SHA-512-hashed initial password. 11248 ;; Specify a SHA-512-hashed initial password.
11235 (password (crypt "InitialPassword!" "$6$abc"))) 11249 (password (crypt "InitialPassword!" "$6$abc")))
11236@end example 11250@end lisp
11237 11251
11238@quotation Note 11252@quotation Note
11239The hash of this initial password will be available in a file in 11253The hash of this initial password will be available in a file in
@@ -11251,9 +11265,9 @@ Guile Reference Manual}, for information on Guile's @code{crypt} procedure.
11251@cindex groups 11265@cindex groups
11252User group declarations are even simpler: 11266User group declarations are even simpler:
11253 11267
11254@example 11268@lisp
11255(user-group (name "students")) 11269(user-group (name "students"))
11256@end example 11270@end lisp
11257 11271
11258@deftp {Data Type} user-group 11272@deftp {Data Type} user-group
11259This type is for, well, user groups. There are just a few fields: 11273This type is for, well, user groups. There are just a few fields:
@@ -11340,7 +11354,7 @@ optional variant name, an optional keyboard model name, and a possibly empty
11340list of additional options. In most cases the layout name is all you care 11354list of additional options. In most cases the layout name is all you care
11341about. Here are a few example: 11355about. Here are a few example:
11342 11356
11343@example 11357@lisp
11344;; The German QWERTZ layout. Here we assume a standard 11358;; The German QWERTZ layout. Here we assume a standard
11345;; "pc105" keyboard model. 11359;; "pc105" keyboard model.
11346(keyboard-layout "de") 11360(keyboard-layout "de")
@@ -11365,7 +11379,7 @@ about. Here are a few example:
11365;; dead keys to enter accented characters. This is for an 11379;; dead keys to enter accented characters. This is for an
11366;; Apple MacBook keyboard. 11380;; Apple MacBook keyboard.
11367(keyboard-layout "us" "intl" #:model "macbook78") 11381(keyboard-layout "us" "intl" #:model "macbook78")
11368@end example 11382@end lisp
11369 11383
11370See the @file{share/X11/xkb} directory of the @code{xkeyboard-config} package 11384See the @file{share/X11/xkb} directory of the @code{xkeyboard-config} package
11371for a complete list of supported layouts, variants, and models. 11385for a complete list of supported layouts, variants, and models.
@@ -11455,20 +11469,20 @@ used locales, but not all the available locales, in order to save space.
11455For instance, to add the North Frisian locale for Germany, the value of 11469For instance, to add the North Frisian locale for Germany, the value of
11456that field may be: 11470that field may be:
11457 11471
11458@example 11472@lisp
11459(cons (locale-definition 11473(cons (locale-definition
11460 (name "fy_DE.utf8") (source "fy_DE")) 11474 (name "fy_DE.utf8") (source "fy_DE"))
11461 %default-locale-definitions) 11475 %default-locale-definitions)
11462@end example 11476@end lisp
11463 11477
11464Likewise, to save space, one might want @code{locale-definitions} to 11478Likewise, to save space, one might want @code{locale-definitions} to
11465list only the locales that are actually used, as in: 11479list only the locales that are actually used, as in:
11466 11480
11467@example 11481@lisp
11468(list (locale-definition 11482(list (locale-definition
11469 (name "ja_JP.eucjp") (source "ja_JP") 11483 (name "ja_JP.eucjp") (source "ja_JP")
11470 (charset "EUC-JP"))) 11484 (charset "EUC-JP")))
11471@end example 11485@end lisp
11472 11486
11473@vindex LOCPATH 11487@vindex LOCPATH
11474The compiled locale definitions are available at 11488The compiled locale definitions are available at
@@ -11554,13 +11568,13 @@ it---this is especially crucial on a multi-user system. To do that, the
11554administrator can specify several libc packages in the 11568administrator can specify several libc packages in the
11555@code{locale-libcs} field of @code{operating-system}: 11569@code{locale-libcs} field of @code{operating-system}:
11556 11570
11557@example 11571@lisp
11558(use-package-modules base) 11572(use-package-modules base)
11559 11573
11560(operating-system 11574(operating-system
11561 ;; @dots{} 11575 ;; @dots{}
11562 (locale-libcs (list glibc-2.21 (canonical-package glibc)))) 11576 (locale-libcs (list glibc-2.21 (canonical-package glibc))))
11563@end example 11577@end lisp
11564 11578
11565This example would lead to a system containing locale definitions for 11579This example would lead to a system containing locale definitions for
11566both libc 2.21 and the current version of libc in 11580both libc 2.21 and the current version of libc in
@@ -11665,11 +11679,11 @@ This is the default value of the @code{services} field of
11665system, you will want to append services to @code{%base-services}, like 11679system, you will want to append services to @code{%base-services}, like
11666this: 11680this:
11667 11681
11668@example 11682@lisp
11669(append (list (service avahi-service-type) 11683(append (list (service avahi-service-type)
11670 (service openssh-service-type)) 11684 (service openssh-service-type))
11671 %base-services) 11685 %base-services)
11672@end example 11686@end lisp
11673@end defvr 11687@end defvr
11674 11688
11675@defvr {Scheme Variable} special-files-service-type 11689@defvr {Scheme Variable} special-files-service-type
@@ -11682,19 +11696,19 @@ and the second element is its target. By default it is:
11682 11696
11683@cindex @file{/bin/sh} 11697@cindex @file{/bin/sh}
11684@cindex @file{sh}, in @file{/bin} 11698@cindex @file{sh}, in @file{/bin}
11685@example 11699@lisp
11686`(("/bin/sh" ,(file-append @var{bash} "/bin/sh"))) 11700`(("/bin/sh" ,(file-append bash "/bin/sh")))
11687@end example 11701@end lisp
11688 11702
11689@cindex @file{/usr/bin/env} 11703@cindex @file{/usr/bin/env}
11690@cindex @file{env}, in @file{/usr/bin} 11704@cindex @file{env}, in @file{/usr/bin}
11691If you want to add, say, @code{/usr/bin/env} to your system, you can 11705If you want to add, say, @code{/usr/bin/env} to your system, you can
11692change it to: 11706change it to:
11693 11707
11694@example 11708@lisp
11695`(("/bin/sh" ,(file-append @var{bash} "/bin/sh")) 11709`(("/bin/sh" ,(file-append bash "/bin/sh"))
11696 ("/usr/bin/env" ,(file-append @var{coreutils} "/bin/env"))) 11710 ("/usr/bin/env" ,(file-append coreutils "/bin/env")))
11697@end example 11711@end lisp
11698 11712
11699Since this is part of @code{%base-services}, you can use 11713Since this is part of @code{%base-services}, you can use
11700@code{modify-services} to customize the set of special files 11714@code{modify-services} to customize the set of special files
@@ -11710,10 +11724,10 @@ For example, adding the following lines to the @code{services} field of
11710your operating system declaration leads to a @file{/usr/bin/env} 11724your operating system declaration leads to a @file{/usr/bin/env}
11711symlink: 11725symlink:
11712 11726
11713@example 11727@lisp
11714(extra-special-file "/usr/bin/env" 11728(extra-special-file "/usr/bin/env"
11715 (file-append coreutils "/bin/env")) 11729 (file-append coreutils "/bin/env"))
11716@end example 11730@end lisp
11717@end deffn 11731@end deffn
11718 11732
11719@deffn {Scheme Procedure} host-name-service @var{name} 11733@deffn {Scheme Procedure} host-name-service @var{name}
@@ -12212,14 +12226,14 @@ In the following example, a rule for a USB device is defined to be
12212stored in the file @file{90-usb-thing.rules}. The rule runs a script 12226stored in the file @file{90-usb-thing.rules}. The rule runs a script
12213upon detecting a USB device with a given product identifier. 12227upon detecting a USB device with a given product identifier.
12214 12228
12215@example 12229@lisp
12216(define %example-udev-rule 12230(define %example-udev-rule
12217 (udev-rule 12231 (udev-rule
12218 "90-usb-thing.rules" 12232 "90-usb-thing.rules"
12219 (string-append "ACTION==\"add\", SUBSYSTEM==\"usb\", " 12233 (string-append "ACTION==\"add\", SUBSYSTEM==\"usb\", "
12220 "ATTR@{product@}==\"Example\", " 12234 "ATTR@{product@}==\"Example\", "
12221 "RUN+=\"/path/to/script\""))) 12235 "RUN+=\"/path/to/script\"")))
12222@end example 12236@end lisp
12223 12237
12224The @command{herd rules udev} command, as root, returns the name of the 12238The @command{herd rules udev} command, as root, returns the name of the
12225directory containing all the active udev rules. 12239directory containing all the active udev rules.
@@ -12227,7 +12241,7 @@ directory containing all the active udev rules.
12227 12241
12228Here we show how the default @var{udev-service} can be extended with it. 12242Here we show how the default @var{udev-service} can be extended with it.
12229 12243
12230@example 12244@lisp
12231(operating-system 12245(operating-system
12232 ;; @dots{} 12246 ;; @dots{}
12233 (services 12247 (services
@@ -12236,7 +12250,7 @@ Here we show how the default @var{udev-service} can be extended with it.
12236 (udev-configuration (inherit config) 12250 (udev-configuration (inherit config)
12237 (rules (append (udev-configuration-rules config) 12251 (rules (append (udev-configuration-rules config)
12238 (list %example-udev-rule)))))))) 12252 (list %example-udev-rule))))))))
12239@end example 12253@end lisp
12240 12254
12241@deffn {Scheme Procedure} file->udev-rule [@var{file-name} @var{file}] 12255@deffn {Scheme Procedure} file->udev-rule [@var{file-name} @var{file}]
12242Return a udev file named @var{file-name} containing the rules defined 12256Return a udev file named @var{file-name} containing the rules defined
@@ -12244,7 +12258,7 @@ within @var{file}, a file-like object.
12244 12258
12245The following example showcases how we can use an existing rule file. 12259The following example showcases how we can use an existing rule file.
12246 12260
12247@example 12261@lisp
12248(use-modules (guix download) ;for url-fetch 12262(use-modules (guix download) ;for url-fetch
12249 (guix packages) ;for origin 12263 (guix packages) ;for origin
12250 ;; @dots{}) 12264 ;; @dots{})
@@ -12259,7 +12273,7 @@ The following example showcases how we can use an existing rule file.
12259 "android-udev-rules/" version "/51-android.rules")) 12273 "android-udev-rules/" version "/51-android.rules"))
12260 (sha256 12274 (sha256
12261 (base32 "0lmmagpyb6xsq6zcr2w1cyx9qmjqmajkvrdbhjx32gqf1d9is003")))))) 12275 (base32 "0lmmagpyb6xsq6zcr2w1cyx9qmjqmajkvrdbhjx32gqf1d9is003"))))))
12262@end example 12276@end lisp
12263@end deffn 12277@end deffn
12264 12278
12265Additionally, Guix package definitions can be included in @var{rules} in 12279Additionally, Guix package definitions can be included in @var{rules} in
@@ -12278,7 +12292,7 @@ create such a group, we must define it both as part of the
12278@var{supplementary-groups} of our @var{user-account} declaration, as 12292@var{supplementary-groups} of our @var{user-account} declaration, as
12279well as in the @var{groups} field of the @var{operating-system} record. 12293well as in the @var{groups} field of the @var{operating-system} record.
12280 12294
12281@example 12295@lisp
12282(use-modules (gnu packages android) ;for android-udev-rules 12296(use-modules (gnu packages android) ;for android-udev-rules
12283 (gnu system shadow) ;for user-group 12297 (gnu system shadow) ;for user-group
12284 ;; @dots{}) 12298 ;; @dots{})
@@ -12304,7 +12318,7 @@ well as in the @var{groups} field of the @var{operating-system} record.
12304 (udev-configuration (inherit config) 12318 (udev-configuration (inherit config)
12305 (rules (cons android-udev-rules 12319 (rules (cons android-udev-rules
12306 (udev-configuration-rules config)))))))) 12320 (udev-configuration-rules config))))))))
12307@end example 12321@end lisp
12308 12322
12309@defvr {Scheme Variable} urandom-seed-service-type 12323@defvr {Scheme Variable} urandom-seed-service-type
12310Save some entropy in @var{%random-seed-file} to seed @file{/dev/urandom} 12324Save some entropy in @var{%random-seed-file} to seed @file{/dev/urandom}
@@ -12378,9 +12392,9 @@ This is a list of compression method/level tuple used when compressing
12378substitutes. For example, to compress all substitutes with @emph{both} lzip 12392substitutes. For example, to compress all substitutes with @emph{both} lzip
12379at level 7 and gzip at level 9, write: 12393at level 7 and gzip at level 9, write:
12380 12394
12381@example 12395@lisp
12382'(("lzip" 7) ("gzip" 9)) 12396'(("lzip" 7) ("gzip" 9))
12383@end example 12397@end lisp
12384 12398
12385Level 9 achieves the best compression ratio at the expense of increased CPU 12399Level 9 achieves the best compression ratio at the expense of increased CPU
12386usage, whereas level 1 achieves fast compression. 12400usage, whereas level 1 achieves fast compression.
@@ -12435,12 +12449,12 @@ Return a service that installs a configuration file for the
12435The following limits definition sets two hard and soft limits for all 12449The following limits definition sets two hard and soft limits for all
12436login sessions of users in the @code{realtime} group: 12450login sessions of users in the @code{realtime} group:
12437 12451
12438@example 12452@lisp
12439(pam-limits-service 12453(pam-limits-service
12440 (list 12454 (list
12441 (pam-limits-entry "@@realtime" 'both 'rtprio 99) 12455 (pam-limits-entry "@@realtime" 'both 'rtprio 99)
12442 (pam-limits-entry "@@realtime" 'both 'memlock 'unlimited))) 12456 (pam-limits-entry "@@realtime" 'both 'memlock 'unlimited)))
12443@end example 12457@end lisp
12444 12458
12445The first entry increases the maximum realtime priority for 12459The first entry increases the maximum realtime priority for
12446non-privileged processes; the second entry lifts any restriction of the 12460non-privileged processes; the second entry lifts any restriction of the
@@ -12647,7 +12661,7 @@ Taking an example from the Rottlog manual (@pxref{Period Related File
12647Examples,,, rottlog, GNU Rot[t]log Manual}), a log rotation might be 12661Examples,,, rottlog, GNU Rot[t]log Manual}), a log rotation might be
12648defined like this: 12662defined like this:
12649 12663
12650@example 12664@lisp
12651(log-rotation 12665(log-rotation
12652 (frequency 'daily) 12666 (frequency 'daily)
12653 (files '("/var/log/apache/*")) 12667 (files '("/var/log/apache/*"))
@@ -12655,7 +12669,7 @@ defined like this:
12655 "rotate 6" 12669 "rotate 6"
12656 "notifempty" 12670 "notifempty"
12657 "nocompress"))) 12671 "nocompress")))
12658@end example 12672@end lisp
12659 12673
12660The list of fields is as follows: 12674The list of fields is as follows:
12661 12675
@@ -12704,12 +12718,12 @@ This type defines a service that runs a DHCP daemon. To create a
12704service of this type, you must supply a @code{<dhcpd-configuration>}. 12718service of this type, you must supply a @code{<dhcpd-configuration>}.
12705For example: 12719For example:
12706 12720
12707@example 12721@lisp
12708(service dhcpd-service-type 12722(service dhcpd-service-type
12709 (dhcpd-configuration 12723 (dhcpd-configuration
12710 (config-file (local-file "my-dhcpd.conf")) 12724 (config-file (local-file "my-dhcpd.conf"))
12711 (interfaces '("enp0s25")))) 12725 (interfaces '("enp0s25"))))
12712@end example 12726@end lisp
12713@end deffn 12727@end deffn
12714 12728
12715@deftp {Data Type} dhcpd-configuration 12729@deftp {Data Type} dhcpd-configuration
@@ -12765,11 +12779,11 @@ to handle.
12765 12779
12766For example: 12780For example:
12767 12781
12768@example 12782@lisp
12769(static-networking-service "eno1" "192.168.1.82" 12783(static-networking-service "eno1" "192.168.1.82"
12770 #:gateway "192.168.1.2" 12784 #:gateway "192.168.1.2"
12771 #:name-servers '("192.168.1.2")) 12785 #:name-servers '("192.168.1.2"))
12772@end example 12786@end lisp
12773@end deffn 12787@end deffn
12774 12788
12775@cindex wicd 12789@cindex wicd
@@ -12924,11 +12938,11 @@ a network connection manager.
12924Its value must be an 12938Its value must be an
12925@code{connman-configuration} record as in this example: 12939@code{connman-configuration} record as in this example:
12926 12940
12927@example 12941@lisp
12928(service connman-service-type 12942(service connman-service-type
12929 (connman-configuration 12943 (connman-configuration
12930 (disable-vpn? #t))) 12944 (disable-vpn? #t)))
12931@end example 12945@end lisp
12932 12946
12933See below for details about @code{connman-configuration}. 12947See below for details about @code{connman-configuration}.
12934@end deffn 12948@end deffn
@@ -13028,6 +13042,7 @@ objects}).
13028@end deftp 13042@end deftp
13029 13043
13030@cindex NTP (Network Time Protocol), service 13044@cindex NTP (Network Time Protocol), service
13045@cindex ntpd, service for the Network Time Protocol daemon
13031@cindex real time clock 13046@cindex real time clock
13032@defvr {Scheme Variable} ntp-service-type 13047@defvr {Scheme Variable} ntp-service-type
13033This is the type of the service running the @uref{http://www.ntp.org, 13048This is the type of the service running the @uref{http://www.ntp.org,
@@ -13043,10 +13058,11 @@ This is the data type for the NTP service configuration.
13043 13058
13044@table @asis 13059@table @asis
13045@item @code{servers} (default: @code{%ntp-servers}) 13060@item @code{servers} (default: @code{%ntp-servers})
13046This is the list of servers (host names) with which @command{ntpd} will be 13061This is the list of servers (@code{<ntp-server>} records) with which
13047synchronized. 13062@command{ntpd} will be synchronized. See the @code{ntp-server} data type
13063definition below.
13048 13064
13049@item @code{allow-large-adjustment?} (default: @code{#f}) 13065@item @code{allow-large-adjustment?} (default: @code{#t})
13050This determines whether @command{ntpd} is allowed to make an initial 13066This determines whether @command{ntpd} is allowed to make an initial
13051adjustment of more than 1,000 seconds. 13067adjustment of more than 1,000 seconds.
13052 13068
@@ -13060,13 +13076,39 @@ List of host names used as the default NTP servers. These are servers of the
13060@uref{https://www.ntppool.org/en/, NTP Pool Project}. 13076@uref{https://www.ntppool.org/en/, NTP Pool Project}.
13061@end defvr 13077@end defvr
13062 13078
13079@deftp {Data Type} ntp-server
13080The data type representing the configuration of a NTP server.
13081
13082@table @asis
13083@item @code{type} (default: @code{'server})
13084The type of the NTP server, given as a symbol. One of @code{'pool},
13085@code{'server}, @code{'peer}, @code{'broadcast} or @code{'manycastclient}.
13086
13087@item @code{address}
13088The address of the server, as a string.
13089
13090@item @code{options}
13091NTPD options to use with that specific server, given as a list of option names
13092and/or of option names and values tuples. The following example define a server
13093to use with the options @option{iburst} and @option{prefer}, as well as
13094@option{version} 3 and a @option{maxpoll} time of 16 seconds.
13095
13096@example
13097(ntp-server
13098 (type 'server)
13099 (address "some.ntp.server.org")
13100 (options `(iburst (version 3) (maxpoll 16) prefer))))
13101@end example
13102@end table
13103@end deftp
13104
13063@cindex OpenNTPD 13105@cindex OpenNTPD
13064@deffn {Scheme Procedure} openntpd-service-type 13106@deffn {Scheme Procedure} openntpd-service-type
13065Run the @command{ntpd}, the Network Time Protocol (NTP) daemon, as implemented 13107Run the @command{ntpd}, the Network Time Protocol (NTP) daemon, as implemented
13066by @uref{http://www.openntpd.org, OpenNTPD}. The daemon will keep the system 13108by @uref{http://www.openntpd.org, OpenNTPD}. The daemon will keep the system
13067clock synchronized with that of the given servers. 13109clock synchronized with that of the given servers.
13068 13110
13069@example 13111@lisp
13070(service 13112(service
13071 openntpd-service-type 13113 openntpd-service-type
13072 (openntpd-configuration 13114 (openntpd-configuration
@@ -13076,9 +13118,14 @@ clock synchronized with that of the given servers.
13076 (constraints-from '("https://www.google.com/")) 13118 (constraints-from '("https://www.google.com/"))
13077 (allow-large-adjustment? #t))) 13119 (allow-large-adjustment? #t)))
13078 13120
13079@end example 13121@end lisp
13080@end deffn 13122@end deffn
13081 13123
13124@defvr {Scheme Variable} %openntpd-servers
13125This variable is a list of the server addresses defined in
13126@var{%ntp-servers}.
13127@end defvr
13128
13082@deftp {Data Type} openntpd-configuration 13129@deftp {Data Type} openntpd-configuration
13083@table @asis 13130@table @asis
13084@item @code{openntpd} (default: @code{(file-append openntpd "/sbin/ntpd")}) 13131@item @code{openntpd} (default: @code{(file-append openntpd "/sbin/ntpd")})
@@ -13092,9 +13139,9 @@ Specify a list of timedelta sensor devices ntpd should use. @code{ntpd}
13092will listen to each sensor that actually exists and ignore non-existent ones. 13139will listen to each sensor that actually exists and ignore non-existent ones.
13093See @uref{https://man.openbsd.org/ntpd.conf, upstream documentation} for more 13140See @uref{https://man.openbsd.org/ntpd.conf, upstream documentation} for more
13094information. 13141information.
13095@item @code{server} (default: @var{%ntp-servers}) 13142@item @code{server} (default: @code{'()})
13096Specify a list of IP addresses or hostnames of NTP servers to synchronize to. 13143Specify a list of IP addresses or hostnames of NTP servers to synchronize to.
13097@item @code{servers} (default: @code{'()}) 13144@item @code{servers} (default: @var{%openntp-servers})
13098Specify a list of IP addresses or hostnames of NTP pools to synchronize to. 13145Specify a list of IP addresses or hostnames of NTP pools to synchronize to.
13099@item @code{constraint-from} (default: @code{'()}) 13146@item @code{constraint-from} (default: @code{'()})
13100@code{ntpd} can be configured to query the ‘Date’ from trusted HTTPS servers via TLS. 13147@code{ntpd} can be configured to query the ‘Date’ from trusted HTTPS servers via TLS.
@@ -13126,7 +13173,7 @@ built-in @command{echo} service, as well as an smtp service which
13126forwards smtp traffic over ssh to a server @code{smtp-server} behind a 13173forwards smtp traffic over ssh to a server @code{smtp-server} behind a
13127gateway @code{hostname}: 13174gateway @code{hostname}:
13128 13175
13129@example 13176@lisp
13130(service 13177(service
13131 inetd-service-type 13178 inetd-service-type
13132 (inetd-configuration 13179 (inetd-configuration
@@ -13148,7 +13195,7 @@ gateway @code{hostname}:
13148 (arguments 13195 (arguments
13149 '("ssh" "-qT" "-i" "/path/to/ssh_key" 13196 '("ssh" "-qT" "-i" "/path/to/ssh_key"
13150 "-W" "smtp-server:25" "user@@hostname"))))) 13197 "-W" "smtp-server:25" "user@@hostname")))))
13151@end example 13198@end lisp
13152 13199
13153See below for more details about @code{inetd-configuration}. 13200See below for more details about @code{inetd-configuration}.
13154@end deffn 13201@end deffn
@@ -13284,9 +13331,9 @@ This is the service type for the @uref{https://rsync.samba.org, rsync} daemon,
13284The value for this service type is a 13331The value for this service type is a
13285@command{rsync-configuration} record as in this example: 13332@command{rsync-configuration} record as in this example:
13286 13333
13287@example 13334@lisp
13288(service rsync-service-type) 13335(service rsync-service-type)
13289@end example 13336@end lisp
13290 13337
13291See below for details about @code{rsync-configuration}. 13338See below for details about @code{rsync-configuration}.
13292@end deffn 13339@end deffn
@@ -13390,7 +13437,7 @@ This is the type for the @uref{http://www.openssh.org, OpenSSH} secure
13390shell daemon, @command{sshd}. Its value must be an 13437shell daemon, @command{sshd}. Its value must be an
13391@code{openssh-configuration} record as in this example: 13438@code{openssh-configuration} record as in this example:
13392 13439
13393@example 13440@lisp
13394(service openssh-service-type 13441(service openssh-service-type
13395 (openssh-configuration 13442 (openssh-configuration
13396 (x11-forwarding? #t) 13443 (x11-forwarding? #t)
@@ -13398,18 +13445,18 @@ shell daemon, @command{sshd}. Its value must be an
13398 (authorized-keys 13445 (authorized-keys
13399 `(("alice" ,(local-file "alice.pub")) 13446 `(("alice" ,(local-file "alice.pub"))
13400 ("bob" ,(local-file "bob.pub")))))) 13447 ("bob" ,(local-file "bob.pub"))))))
13401@end example 13448@end lisp
13402 13449
13403See below for details about @code{openssh-configuration}. 13450See below for details about @code{openssh-configuration}.
13404 13451
13405This service can be extended with extra authorized keys, as in this 13452This service can be extended with extra authorized keys, as in this
13406example: 13453example:
13407 13454
13408@example 13455@lisp
13409(service-extension openssh-service-type 13456(service-extension openssh-service-type
13410 (const `(("charlie" 13457 (const `(("charlie"
13411 ,(local-file "charlie.pub"))))) 13458 ,(local-file "charlie.pub")))))
13412@end example 13459@end lisp
13413@end deffn 13460@end deffn
13414 13461
13415@deftp {Data Type} openssh-configuration 13462@deftp {Data Type} openssh-configuration
@@ -13486,12 +13533,12 @@ subsystem request.
13486 13533
13487The command @command{internal-sftp} implements an in-process SFTP 13534The command @command{internal-sftp} implements an in-process SFTP
13488server. Alternately, one can specify the @command{sftp-server} command: 13535server. Alternately, one can specify the @command{sftp-server} command:
13489@example 13536@lisp
13490(service openssh-service-type 13537(service openssh-service-type
13491 (openssh-configuration 13538 (openssh-configuration
13492 (subsystems 13539 (subsystems
13493 `(("sftp" ,(file-append openssh "/libexec/sftp-server")))))) 13540 `(("sftp" ,(file-append openssh "/libexec/sftp-server"))))))
13494@end example 13541@end lisp
13495 13542
13496@item @code{accepted-environment} (default: @code{'()}) 13543@item @code{accepted-environment} (default: @code{'()})
13497List of strings describing which environment variables may be exported. 13544List of strings describing which environment variables may be exported.
@@ -13504,11 +13551,11 @@ It is set by terminal emulators, which support colors. You can use it in
13504your shell's ressource file to enable colors for the prompt and commands 13551your shell's ressource file to enable colors for the prompt and commands
13505if this variable is set. 13552if this variable is set.
13506 13553
13507@example 13554@lisp
13508(service openssh-service-type 13555(service openssh-service-type
13509 (openssh-configuration 13556 (openssh-configuration
13510 (accepted-environment '("COLORTERM")))) 13557 (accepted-environment '("COLORTERM"))))
13511@end example 13558@end lisp
13512 13559
13513@item @code{authorized-keys} (default: @code{'()}) 13560@item @code{authorized-keys} (default: @code{'()})
13514@cindex authorized keys, SSH 13561@cindex authorized keys, SSH
@@ -13517,13 +13564,13 @@ This is the list of authorized keys. Each element of the list is a user
13517name followed by one or more file-like objects that represent SSH public 13564name followed by one or more file-like objects that represent SSH public
13518keys. For example: 13565keys. For example:
13519 13566
13520@example 13567@lisp
13521(openssh-configuration 13568(openssh-configuration
13522 (authorized-keys 13569 (authorized-keys
13523 `(("rekado" ,(local-file "rekado.pub")) 13570 `(("rekado" ,(local-file "rekado.pub"))
13524 ("chris" ,(local-file "chris.pub")) 13571 ("chris" ,(local-file "chris.pub"))
13525 ("root" ,(local-file "rekado.pub") ,(local-file "chris.pub"))))) 13572 ("root" ,(local-file "rekado.pub") ,(local-file "chris.pub")))))
13526@end example 13573@end lisp
13527 13574
13528@noindent 13575@noindent
13529registers the specified public keys for user accounts @code{rekado}, 13576registers the specified public keys for user accounts @code{rekado},
@@ -13546,12 +13593,12 @@ is especially useful for elaborate configurations that cannot be expressed
13546otherwise. This configuration, for example, would generally disable root 13593otherwise. This configuration, for example, would generally disable root
13547logins, but permit them from one specific IP address: 13594logins, but permit them from one specific IP address:
13548 13595
13549@example 13596@lisp
13550(openssh-configuration 13597(openssh-configuration
13551 (extra-content "\ 13598 (extra-content "\
13552Match Address 192.168.0.1 13599Match Address 192.168.0.1
13553 PermitRootLogin yes")) 13600 PermitRootLogin yes"))
13554@end example 13601@end lisp
13555 13602
13556@end table 13603@end table
13557@end deftp 13604@end deftp
@@ -13564,10 +13611,10 @@ object.
13564For example, to specify a Dropbear service listening on port 1234, add 13611For example, to specify a Dropbear service listening on port 1234, add
13565this call to the operating system's @code{services} field: 13612this call to the operating system's @code{services} field:
13566 13613
13567@example 13614@lisp
13568(dropbear-service (dropbear-configuration 13615(dropbear-service (dropbear-configuration
13569 (port-number 1234))) 13616 (port-number 1234)))
13570@end example 13617@end lisp
13571@end deffn 13618@end deffn
13572 13619
13573@deftp {Data Type} dropbear-configuration 13620@deftp {Data Type} dropbear-configuration
@@ -13608,7 +13655,7 @@ This variable is typically used in the @code{hosts-file} field of an
13608@code{operating-system} declaration (@pxref{operating-system Reference, 13655@code{operating-system} declaration (@pxref{operating-system Reference,
13609@file{/etc/hosts}}): 13656@file{/etc/hosts}}):
13610 13657
13611@example 13658@lisp
13612(use-modules (gnu) (guix)) 13659(use-modules (gnu) (guix))
13613 13660
13614(operating-system 13661(operating-system
@@ -13620,7 +13667,7 @@ This variable is typically used in the @code{hosts-file} field of an
13620 (plain-file "hosts" 13667 (plain-file "hosts"
13621 (string-append (local-host-aliases host-name) 13668 (string-append (local-host-aliases host-name)
13622 %facebook-host-aliases)))) 13669 %facebook-host-aliases))))
13623@end example 13670@end lisp
13624 13671
13625This mechanism can prevent programs running locally, such as Web 13672This mechanism can prevent programs running locally, such as Web
13626browsers, from accessing Facebook. 13673browsers, from accessing Facebook.
@@ -14054,9 +14101,9 @@ system, add a @code{cups-service} to the operating system definition:
14054The service type for the CUPS print server. Its value should be a valid 14101The service type for the CUPS print server. Its value should be a valid
14055CUPS configuration (see below). To use the default settings, simply 14102CUPS configuration (see below). To use the default settings, simply
14056write: 14103write:
14057@example 14104@lisp
14058(service cups-service-type) 14105(service cups-service-type)
14059@end example 14106@end lisp
14060@end deffn 14107@end deffn
14061 14108
14062The CUPS configuration controls the basic things about your CUPS 14109The CUPS configuration controls the basic things about your CUPS
@@ -14072,13 +14119,13 @@ support for Epson printers @i{via} the @code{escpr} package and for HP
14072printers @i{via} the @code{hplip-minimal} package. You can do that directly, 14119printers @i{via} the @code{hplip-minimal} package. You can do that directly,
14073like this (you need to use the @code{(gnu packages cups)} module): 14120like this (you need to use the @code{(gnu packages cups)} module):
14074 14121
14075@example 14122@lisp
14076(service cups-service-type 14123(service cups-service-type
14077 (cups-configuration 14124 (cups-configuration
14078 (web-interface? #t) 14125 (web-interface? #t)
14079 (extensions 14126 (extensions
14080 (list cups-filters escpr hplip-minimal)))) 14127 (list cups-filters escpr hplip-minimal))))
14081@end example 14128@end lisp
14082 14129
14083Note: If you wish to use the Qt5 based GUI which comes with the hplip 14130Note: If you wish to use the Qt5 based GUI which comes with the hplip
14084package then it is suggested that you install the @code{hplip} package, 14131package then it is suggested that you install the @code{hplip} package,
@@ -14886,12 +14933,12 @@ For example, if your @code{cupsd.conf} and @code{cups-files.conf} are in
14886strings of the same name, you could instantiate a CUPS service like 14933strings of the same name, you could instantiate a CUPS service like
14887this: 14934this:
14888 14935
14889@example 14936@lisp
14890(service cups-service-type 14937(service cups-service-type
14891 (opaque-cups-configuration 14938 (opaque-cups-configuration
14892 (cupsd.conf cupsd.conf) 14939 (cupsd.conf cupsd.conf)
14893 (cups-files.conf cups-files.conf))) 14940 (cups-files.conf cups-files.conf)))
14894@end example 14941@end lisp
14895 14942
14896 14943
14897@node Desktop Services 14944@node Desktop Services
@@ -15034,7 +15081,7 @@ them by default. To add GNOME, Xfce or MATE, just @code{cons} them onto
15034@code{%desktop-services} in the @code{services} field of your 15081@code{%desktop-services} in the @code{services} field of your
15035@code{operating-system}: 15082@code{operating-system}:
15036 15083
15037@example 15084@lisp
15038(use-modules (gnu)) 15085(use-modules (gnu))
15039(use-service-modules desktop) 15086(use-service-modules desktop)
15040(operating-system 15087(operating-system
@@ -15044,7 +15091,7 @@ them by default. To add GNOME, Xfce or MATE, just @code{cons} them onto
15044 (service xfce-desktop-service) 15091 (service xfce-desktop-service)
15045 %desktop-services)) 15092 %desktop-services))
15046 ...) 15093 ...)
15047@end example 15094@end lisp
15048 15095
15049These desktop environments will then be available as options in the 15096These desktop environments will then be available as options in the
15050graphical login window. 15097graphical login window.
@@ -15313,9 +15360,9 @@ Architecture} (ALSA) system, which generates the @file{/etc/asound.conf}
15313configuration file. The value for this type is a @command{alsa-configuration} 15360configuration file. The value for this type is a @command{alsa-configuration}
15314record as in this example: 15361record as in this example:
15315 15362
15316@example 15363@lisp
15317(service alsa-service-type) 15364(service alsa-service-type)
15318@end example 15365@end lisp
15319 15366
15320See below for details about @code{alsa-configuration}. 15367See below for details about @code{alsa-configuration}.
15321@end deffn 15368@end deffn
@@ -15401,7 +15448,7 @@ to create a geographic database using the @code{postgis} extension, a user can
15401configure the postgresql-service as in this example: 15448configure the postgresql-service as in this example:
15402 15449
15403@cindex postgis 15450@cindex postgis
15404@example 15451@lisp
15405(use-package-modules databases geo) 15452(use-package-modules databases geo)
15406 15453
15407(operating-system 15454(operating-system
@@ -15413,7 +15460,7 @@ configure the postgresql-service as in this example:
15413 (cons* 15460 (cons*
15414 (postgresql-service #:extension-packages (list postgis)) 15461 (postgresql-service #:extension-packages (list postgis))
15415 %base-services))) 15462 %base-services)))
15416@end example 15463@end lisp
15417 15464
15418Then the extension becomes visible and you can initialise an empty geographic 15465Then the extension becomes visible and you can initialise an empty geographic
15419database in this way: 15466database in this way:
@@ -15461,9 +15508,9 @@ Memcached} service, which provides a distributed in memory cache. The
15461value for the service type is a @code{memcached-configuration} object. 15508value for the service type is a @code{memcached-configuration} object.
15462@end defvr 15509@end defvr
15463 15510
15464@example 15511@lisp
15465(service memcached-service-type) 15512(service memcached-service-type)
15466@end example 15513@end lisp
15467 15514
15468@deftp {Data Type} memcached-configuration 15515@deftp {Data Type} memcached-configuration
15469Data type representing the configuration of memcached. 15516Data type representing the configuration of memcached.
@@ -15492,9 +15539,9 @@ This is the service type for @uref{https://www.mongodb.com/, MongoDB}.
15492The value for the service type is a @code{mongodb-configuration} object. 15539The value for the service type is a @code{mongodb-configuration} object.
15493@end defvr 15540@end defvr
15494 15541
15495@example 15542@lisp
15496(service mongodb-service-type) 15543(service mongodb-service-type)
15497@end example 15544@end lisp
15498 15545
15499@deftp {Data Type} mongodb-configuration 15546@deftp {Data Type} mongodb-configuration
15500Data type representing the configuration of mongodb. 15547Data type representing the configuration of mongodb.
@@ -15565,11 +15612,11 @@ administrator to specify these parameters via a uniform Scheme interface.
15565For example, to specify that mail is located at @code{maildir~/.mail}, 15612For example, to specify that mail is located at @code{maildir~/.mail},
15566one would instantiate the Dovecot service like this: 15613one would instantiate the Dovecot service like this:
15567 15614
15568@example 15615@lisp
15569(dovecot-service #:config 15616(dovecot-service #:config
15570 (dovecot-configuration 15617 (dovecot-configuration
15571 (mail-location "maildir:~/.mail"))) 15618 (mail-location "maildir:~/.mail")))
15572@end example 15619@end lisp
15573 15620
15574The available configuration parameters follow. Each parameter 15621The available configuration parameters follow. Each parameter
15575definition is preceded by its type; for example, @samp{string-list foo} 15622definition is preceded by its type; for example, @samp{string-list foo}
@@ -16905,11 +16952,11 @@ The contents of the @code{dovecot.conf}, as a string.
16905For example, if your @code{dovecot.conf} is just the empty string, you 16952For example, if your @code{dovecot.conf} is just the empty string, you
16906could instantiate a dovecot service like this: 16953could instantiate a dovecot service like this:
16907 16954
16908@example 16955@lisp
16909(dovecot-service #:config 16956(dovecot-service #:config
16910 (opaque-dovecot-configuration 16957 (opaque-dovecot-configuration
16911 (string ""))) 16958 (string "")))
16912@end example 16959@end lisp
16913 16960
16914@subsubheading OpenSMTPD Service 16961@subsubheading OpenSMTPD Service
16915 16962
@@ -16918,11 +16965,11 @@ This is the type of the @uref{https://www.opensmtpd.org, OpenSMTPD}
16918service, whose value should be an @code{opensmtpd-configuration} object 16965service, whose value should be an @code{opensmtpd-configuration} object
16919as in this example: 16966as in this example:
16920 16967
16921@example 16968@lisp
16922(service opensmtpd-service-type 16969(service opensmtpd-service-type
16923 (opensmtpd-configuration 16970 (opensmtpd-configuration
16924 (config-file (local-file "./my-smtpd.conf")))) 16971 (config-file (local-file "./my-smtpd.conf"))))
16925@end example 16972@end lisp
16926@end deffn 16973@end deffn
16927 16974
16928@deftp {Data Type} opensmtpd-configuration 16975@deftp {Data Type} opensmtpd-configuration
@@ -16952,11 +16999,11 @@ This is the type of the @uref{https://exim.org, Exim} mail transfer
16952agent (MTA), whose value should be an @code{exim-configuration} object 16999agent (MTA), whose value should be an @code{exim-configuration} object
16953as in this example: 17000as in this example:
16954 17001
16955@example 17002@lisp
16956(service exim-service-type 17003(service exim-service-type
16957 (exim-configuration 17004 (exim-configuration
16958 (config-file (local-file "./my-exim.conf")))) 17005 (config-file (local-file "./my-exim.conf"))))
16959@end example 17006@end lisp
16960@end deffn 17007@end deffn
16961 17008
16962In order to use an @code{exim-service-type} service you must also have a 17009In order to use an @code{exim-service-type} service you must also have a
@@ -17280,11 +17327,11 @@ Defaults to @samp{()}.
17280This is the type of the service which provides @code{/etc/aliases}, 17327This is the type of the service which provides @code{/etc/aliases},
17281specifying how to deliver mail to users on this system. 17328specifying how to deliver mail to users on this system.
17282 17329
17283@example 17330@lisp
17284(service mail-aliases-service-type 17331(service mail-aliases-service-type
17285 '(("postmaster" "bob") 17332 '(("postmaster" "bob")
17286 ("bob" "bob@@example.com" "bob@@example2.com"))) 17333 ("bob" "bob@@example.com" "bob@@example2.com")))
17287@end example 17334@end lisp
17288@end deffn 17335@end deffn
17289 17336
17290The configuration for a @code{mail-aliases-service-type} service is an 17337The configuration for a @code{mail-aliases-service-type} service is an
@@ -17307,11 +17354,11 @@ This is the type of the GNU Mailutils IMAP4 Daemon (@pxref{imap4d,,,
17307mailutils, GNU Mailutils Manual}), whose value should be an 17354mailutils, GNU Mailutils Manual}), whose value should be an
17308@code{imap4d-configuration} object as in this example: 17355@code{imap4d-configuration} object as in this example:
17309 17356
17310@example 17357@lisp
17311(service imap4d-service-type 17358(service imap4d-service-type
17312 (imap4d-configuration 17359 (imap4d-configuration
17313 (config-file (local-file "imap4d.conf")))) 17360 (config-file (local-file "imap4d.conf"))))
17314@end example 17361@end lisp
17315@end deffn 17362@end deffn
17316 17363
17317@deftp {Data Type} imap4d-configuration 17364@deftp {Data Type} imap4d-configuration
@@ -17345,7 +17392,7 @@ This is the type for the @uref{https://prosody.im, Prosody XMPP
17345communication server}. Its value must be a @code{prosody-configuration} 17392communication server}. Its value must be a @code{prosody-configuration}
17346record as in this example: 17393record as in this example:
17347 17394
17348@example 17395@lisp
17349(service prosody-service-type 17396(service prosody-service-type
17350 (prosody-configuration 17397 (prosody-configuration
17351 (modules-enabled (cons "groups" "mam" %default-modules-enabled)) 17398 (modules-enabled (cons "groups" "mam" %default-modules-enabled))
@@ -17359,7 +17406,7 @@ record as in this example:
17359 (list 17406 (list
17360 (virtualhost-configuration 17407 (virtualhost-configuration
17361 (domain "example.net")))))) 17408 (domain "example.net"))))))
17362@end example 17409@end lisp
17363 17410
17364See below for details about @code{prosody-configuration}. 17411See below for details about @code{prosody-configuration}.
17365 17412
@@ -17747,11 +17794,11 @@ The contents of the @code{prosody.cfg.lua} to use.
17747For example, if your @code{prosody.cfg.lua} is just the empty 17794For example, if your @code{prosody.cfg.lua} is just the empty
17748string, you could instantiate a prosody service like this: 17795string, you could instantiate a prosody service like this:
17749 17796
17750@example 17797@lisp
17751(service prosody-service-type 17798(service prosody-service-type
17752 (opaque-prosody-configuration 17799 (opaque-prosody-configuration
17753 (prosody.cfg.lua ""))) 17800 (prosody.cfg.lua "")))
17754@end example 17801@end lisp
17755 17802
17756@c end of Prosody auto-generated documentation 17803@c end of Prosody auto-generated documentation
17757 17804
@@ -17770,9 +17817,9 @@ below).
17770To have BitlBee listen on port 6667 on localhost, add this line to your 17817To have BitlBee listen on port 6667 on localhost, add this line to your
17771services: 17818services:
17772 17819
17773@example 17820@lisp
17774(service bitlbee-service-type) 17821(service bitlbee-service-type)
17775@end example 17822@end lisp
17776@end defvr 17823@end defvr
17777 17824
17778@deftp {Data Type} bitlbee-configuration 17825@deftp {Data Type} bitlbee-configuration
@@ -17844,7 +17891,7 @@ the server of the @uref{https://mumble.info, Mumble} voice-over-IP
17844The service type for the Murmur server. An example configuration can 17891The service type for the Murmur server. An example configuration can
17845look like this: 17892look like this:
17846 17893
17847@example 17894@lisp
17848(service murmur-service-type 17895(service murmur-service-type
17849 (murmur-configuration 17896 (murmur-configuration
17850 (welcome-text 17897 (welcome-text
@@ -17852,7 +17899,7 @@ look like this:
17852 (cert-required? #t) ;disallow text password logins 17899 (cert-required? #t) ;disallow text password logins
17853 (ssl-cert "/etc/letsencrypt/live/mumble.example.com/fullchain.pem") 17900 (ssl-cert "/etc/letsencrypt/live/mumble.example.com/fullchain.pem")
17854 (ssl-key "/etc/letsencrypt/live/mumble.example.com/privkey.pem"))) 17901 (ssl-key "/etc/letsencrypt/live/mumble.example.com/privkey.pem")))
17855@end example 17902@end lisp
17856 17903
17857After reconfiguring your system, you can manually set the murmur @code{SuperUser} 17904After reconfiguring your system, you can manually set the murmur @code{SuperUser}
17858password with the command that is printed during the activation phase. 17905password with the command that is printed during the activation phase.
@@ -17966,14 +18013,14 @@ Should logged ips be obfuscated to protect the privacy of users.
17966@item @code{ssl-cert} (default: @code{#f}) 18013@item @code{ssl-cert} (default: @code{#f})
17967File name of the SSL/TLS certificate used for encrypted connections. 18014File name of the SSL/TLS certificate used for encrypted connections.
17968 18015
17969@example 18016@lisp
17970(ssl-cert "/etc/letsencrypt/live/example.com/fullchain.pem") 18017(ssl-cert "/etc/letsencrypt/live/example.com/fullchain.pem")
17971@end example 18018@end lisp
17972@item @code{ssl-key} (default: @code{#f}) 18019@item @code{ssl-key} (default: @code{#f})
17973Filepath to the ssl private key used for encrypted connections. 18020Filepath to the ssl private key used for encrypted connections.
17974@example 18021@lisp
17975(ssl-key "/etc/letsencrypt/live/example.com/privkey.pem") 18022(ssl-key "/etc/letsencrypt/live/example.com/privkey.pem")
17976@end example 18023@end lisp
17977 18024
17978@item @code{ssl-dh-params} (default: @code{#f}) 18025@item @code{ssl-dh-params} (default: @code{#f})
17979File name of a PEM-encoded file with Diffie-Hellman parameters 18026File name of a PEM-encoded file with Diffie-Hellman parameters
@@ -18047,20 +18094,20 @@ viewing and searching log files.
18047The following example will configure the service with default values. 18094The following example will configure the service with default values.
18048By default, Tailon can be accessed on port 8080 (@code{http://localhost:8080}). 18095By default, Tailon can be accessed on port 8080 (@code{http://localhost:8080}).
18049 18096
18050@example 18097@lisp
18051(service tailon-service-type) 18098(service tailon-service-type)
18052@end example 18099@end lisp
18053 18100
18054The following example customises more of the Tailon configuration, 18101The following example customises more of the Tailon configuration,
18055adding @command{sed} to the list of allowed commands. 18102adding @command{sed} to the list of allowed commands.
18056 18103
18057@example 18104@lisp
18058(service tailon-service-type 18105(service tailon-service-type
18059 (tailon-configuration 18106 (tailon-configuration
18060 (config-file 18107 (config-file
18061 (tailon-configuration-file 18108 (tailon-configuration-file
18062 (allowed-commands '("tail" "grep" "awk" "sed")))))) 18109 (allowed-commands '("tail" "grep" "awk" "sed"))))))
18063@end example 18110@end lisp
18064 18111
18065 18112
18066@deftp {Data Type} tailon-configuration 18113@deftp {Data Type} tailon-configuration
@@ -18076,11 +18123,11 @@ The configuration file to use for Tailon. This can be set to a
18076For example, to instead use a local file, the @code{local-file} function 18123For example, to instead use a local file, the @code{local-file} function
18077can be used: 18124can be used:
18078 18125
18079@example 18126@lisp
18080(service tailon-service-type 18127(service tailon-service-type
18081 (tailon-configuration 18128 (tailon-configuration
18082 (config-file (local-file "./my-tailon.conf")))) 18129 (config-file (local-file "./my-tailon.conf"))))
18083@end example 18130@end lisp
18084 18131
18085@item @code{package} (default: @code{tailon}) 18132@item @code{package} (default: @code{tailon})
18086The tailon package to use. 18133The tailon package to use.
@@ -18136,12 +18183,12 @@ restricted to the credentials provided here. To configure users, use a
18136list of pairs, where the first element of the pair is the username, and 18183list of pairs, where the first element of the pair is the username, and
18137the 2nd element of the pair is the password. 18184the 2nd element of the pair is the password.
18138 18185
18139@example 18186@lisp
18140(tailon-configuration-file 18187(tailon-configuration-file
18141 (http-auth "basic") 18188 (http-auth "basic")
18142 (users '(("user1" . "password1") 18189 (users '(("user1" . "password1")
18143 ("user2" . "password2")))) 18190 ("user2" . "password2"))))
18144@end example 18191@end lisp
18145 18192
18146@end table 18193@end table
18147@end deftp 18194@end deftp
@@ -18158,11 +18205,11 @@ This is the service type for the
18158service, its value must be a @code{darkstat-configuration} record as in 18205service, its value must be a @code{darkstat-configuration} record as in
18159this example: 18206this example:
18160 18207
18161@example 18208@lisp
18162(service darkstat-service-type 18209(service darkstat-service-type
18163 (darkstat-configuration 18210 (darkstat-configuration
18164 (interface "eno1"))) 18211 (interface "eno1")))
18165@end example 18212@end lisp
18166@end defvar 18213@end defvar
18167 18214
18168@deftp {Data Type} darkstat-configuration 18215@deftp {Data Type} darkstat-configuration
@@ -18202,11 +18249,11 @@ This is the service type for the
18202service, its value must be a @code{prometheus-node-exporter-configuration} 18249service, its value must be a @code{prometheus-node-exporter-configuration}
18203record as in this example: 18250record as in this example:
18204 18251
18205@example 18252@lisp
18206(service prometheus-node-exporter-service-type 18253(service prometheus-node-exporter-service-type
18207 (prometheus-node-exporter-configuration 18254 (prometheus-node-exporter-configuration
18208 (web-listen-address ":9100"))) 18255 (web-listen-address ":9100")))
18209@end example 18256@end lisp
18210@end defvar 18257@end defvar
18211 18258
18212@deftp {Data Type} prometheus-node-exporter-configuration 18259@deftp {Data Type} prometheus-node-exporter-configuration
@@ -18682,7 +18729,7 @@ Here is a simple operating system declaration with a default configuration of
18682the @code{nslcd-service-type} and a Name Service Switch configuration that 18729the @code{nslcd-service-type} and a Name Service Switch configuration that
18683consults the @code{ldap} name service last: 18730consults the @code{ldap} name service last:
18684 18731
18685@example 18732@lisp
18686(use-service-modules authentication) 18733(use-service-modules authentication)
18687(use-modules (gnu system nss)) 18734(use-modules (gnu system nss))
18688... 18735...
@@ -18704,7 +18751,7 @@ consults the @code{ldap} name service last:
18704 (group services) 18751 (group services)
18705 (netgroup services) 18752 (netgroup services)
18706 (gshadow services))))) 18753 (gshadow services)))))
18707@end example 18754@end lisp
18708 18755
18709@c %start of generated documentation for nslcd-configuration 18756@c %start of generated documentation for nslcd-configuration
18710 18757
@@ -19163,19 +19210,19 @@ Service type for the @uref{https://httpd.apache.org/,Apache HTTP} server
19163 19210
19164A simple example configuration is given below. 19211A simple example configuration is given below.
19165 19212
19166@example 19213@lisp
19167(service httpd-service-type 19214(service httpd-service-type
19168 (httpd-configuration 19215 (httpd-configuration
19169 (config 19216 (config
19170 (httpd-config-file 19217 (httpd-config-file
19171 (server-name "www.example.com") 19218 (server-name "www.example.com")
19172 (document-root "/srv/http/www.example.com"))))) 19219 (document-root "/srv/http/www.example.com")))))
19173@end example 19220@end lisp
19174 19221
19175Other services can also extend the @code{httpd-service-type} to add to 19222Other services can also extend the @code{httpd-service-type} to add to
19176the configuration. 19223the configuration.
19177 19224
19178@example 19225@lisp
19179(simple-service 'my-extra-server httpd-service-type 19226(simple-service 'my-extra-server httpd-service-type
19180 (list 19227 (list
19181 (httpd-virtualhost 19228 (httpd-virtualhost
@@ -19183,7 +19230,7 @@ the configuration.
19183 (list (string-append 19230 (list (string-append
19184 "ServerName "www.example.com 19231 "ServerName "www.example.com
19185 DocumentRoot \"/srv/http/www.example.com\""))))) 19232 DocumentRoot \"/srv/http/www.example.com\"")))))
19186@end example 19233@end lisp
19187@end deffn 19234@end deffn
19188 19235
19189The details for the @code{httpd-configuration}, @code{httpd-module}, 19236The details for the @code{httpd-configuration}, @code{httpd-module},
@@ -19240,7 +19287,7 @@ additional configuration.
19240For example, in order to handle requests for PHP files, you can use Apache’s 19287For example, in order to handle requests for PHP files, you can use Apache’s
19241@code{mod_proxy_fcgi} module along with @code{php-fpm-service-type}: 19288@code{mod_proxy_fcgi} module along with @code{php-fpm-service-type}:
19242 19289
19243@example 19290@lisp
19244(service httpd-service-type 19291(service httpd-service-type
19245 (httpd-configuration 19292 (httpd-configuration
19246 (config 19293 (config
@@ -19261,7 +19308,7 @@ For example, in order to handle requests for PHP files, you can use Apache’s
19261 (php-fpm-configuration 19308 (php-fpm-configuration
19262 (socket "/var/run/php-fpm.sock") 19309 (socket "/var/run/php-fpm.sock")
19263 (socket-group "httpd"))) 19310 (socket-group "httpd")))
19264@end example 19311@end lisp
19265 19312
19266@item @code{server-root} (default: @code{httpd}) 19313@item @code{server-root} (default: @code{httpd})
19267The @code{ServerRoot} in the configuration file, defaults to the httpd 19314The @code{ServerRoot} in the configuration file, defaults to the httpd
@@ -19315,7 +19362,7 @@ This data type represents a virtualhost configuration block for the httpd servic
19315 19362
19316These should be added to the extra-config for the httpd-service. 19363These should be added to the extra-config for the httpd-service.
19317 19364
19318@example 19365@lisp
19319(simple-service 'my-extra-server httpd-service-type 19366(simple-service 'my-extra-server httpd-service-type
19320 (list 19367 (list
19321 (httpd-virtualhost 19368 (httpd-virtualhost
@@ -19323,7 +19370,7 @@ These should be added to the extra-config for the httpd-service.
19323 (list (string-append 19370 (list (string-append
19324 "ServerName "www.example.com 19371 "ServerName "www.example.com
19325 DocumentRoot \"/srv/http/www.example.com\""))))) 19372 DocumentRoot \"/srv/http/www.example.com\"")))))
19326@end example 19373@end lisp
19327 19374
19328@table @asis 19375@table @asis
19329@item @code{addresses-and-ports} 19376@item @code{addresses-and-ports}
@@ -19344,25 +19391,25 @@ value for this service type is a @code{<nginx-configuration>} record.
19344 19391
19345A simple example configuration is given below. 19392A simple example configuration is given below.
19346 19393
19347@example 19394@lisp
19348(service nginx-service-type 19395(service nginx-service-type
19349 (nginx-configuration 19396 (nginx-configuration
19350 (server-blocks 19397 (server-blocks
19351 (list (nginx-server-configuration 19398 (list (nginx-server-configuration
19352 (server-name '("www.example.com")) 19399 (server-name '("www.example.com"))
19353 (root "/srv/http/www.example.com")))))) 19400 (root "/srv/http/www.example.com"))))))
19354@end example 19401@end lisp
19355 19402
19356In addition to adding server blocks to the service configuration 19403In addition to adding server blocks to the service configuration
19357directly, this service can be extended by other services to add server 19404directly, this service can be extended by other services to add server
19358blocks, as in this example: 19405blocks, as in this example:
19359 19406
19360@example 19407@lisp
19361(simple-service 'my-extra-server nginx-service-type 19408(simple-service 'my-extra-server nginx-service-type
19362 (list (nginx-server-configuration 19409 (list (nginx-server-configuration
19363 (root "/srv/http/extra-website") 19410 (root "/srv/http/extra-website")
19364 (try-files (list "$uri" "$uri/index.html"))))) 19411 (try-files (list "$uri" "$uri/index.html")))))
19365@end example 19412@end lisp
19366@end deffn 19413@end deffn
19367 19414
19368At startup, @command{nginx} has not yet read its configuration file, so 19415At startup, @command{nginx} has not yet read its configuration file, so
@@ -19398,14 +19445,14 @@ file, the elements should be of type
19398The following example would setup NGinx to serve @code{www.example.com} 19445The following example would setup NGinx to serve @code{www.example.com}
19399from the @code{/srv/http/www.example.com} directory, without using 19446from the @code{/srv/http/www.example.com} directory, without using
19400HTTPS. 19447HTTPS.
19401@example 19448@lisp
19402(service nginx-service-type 19449(service nginx-service-type
19403 (nginx-configuration 19450 (nginx-configuration
19404 (server-blocks 19451 (server-blocks
19405 (list (nginx-server-configuration 19452 (list (nginx-server-configuration
19406 (server-name '("www.example.com")) 19453 (server-name '("www.example.com"))
19407 (root "/srv/http/www.example.com")))))) 19454 (root "/srv/http/www.example.com"))))))
19408@end example 19455@end lisp
19409 19456
19410@item @code{upstream-blocks} (default: @code{'()}) 19457@item @code{upstream-blocks} (default: @code{'()})
19411A list of @dfn{upstream blocks} to create in the generated configuration 19458A list of @dfn{upstream blocks} to create in the generated configuration
@@ -19419,7 +19466,7 @@ creates a server configuration with one location configuration, that
19419will proxy requests to a upstream configuration, which will handle 19466will proxy requests to a upstream configuration, which will handle
19420requests with two servers. 19467requests with two servers.
19421 19468
19422@example 19469@lisp
19423(service 19470(service
19424 nginx-service-type 19471 nginx-service-type
19425 (nginx-configuration 19472 (nginx-configuration
@@ -19437,7 +19484,7 @@ requests with two servers.
19437 (name "server-proxy") 19484 (name "server-proxy")
19438 (servers (list "server1.example.com" 19485 (servers (list "server1.example.com"
19439 "server2.example.com"))))))) 19486 "server2.example.com")))))))
19440@end example 19487@end lisp
19441 19488
19442@item @code{file} (default: @code{#f}) 19489@item @code{file} (default: @code{#f})
19443If a configuration @var{file} is provided, this will be used, rather than 19490If a configuration @var{file} is provided, this will be used, rather than
@@ -19475,9 +19522,9 @@ path for a UNIX-domain socket on which the server will accept requests.
19475Both address and port, or only address or only port can be specified. 19522Both address and port, or only address or only port can be specified.
19476An address may also be a hostname, for example: 19523An address may also be a hostname, for example:
19477 19524
19478@example 19525@lisp
19479'("127.0.0.1:8000" "127.0.0.1" "8000" "*:8000" "localhost:8000") 19526'("127.0.0.1:8000" "127.0.0.1" "8000" "*:8000" "localhost:8000")
19480@end example 19527@end lisp
19481 19528
19482@item @code{server-name} (default: @code{(list 'default)}) 19529@item @code{server-name} (default: @code{(list 'default)})
19483A list of server names this server represents. @code{'default} represents the 19530A list of server names this server represents. @code{'default} represents the
@@ -19615,7 +19662,7 @@ VCL syntax.
19615For example, to mirror @url{http://www.gnu.org,www.gnu.org} with VCL you 19662For example, to mirror @url{http://www.gnu.org,www.gnu.org} with VCL you
19616can do something along these lines: 19663can do something along these lines:
19617 19664
19618@example 19665@lisp
19619(define %gnu-mirror 19666(define %gnu-mirror
19620 (plain-file 19667 (plain-file
19621 "gnu.vcl" 19668 "gnu.vcl"
@@ -19629,7 +19676,7 @@ backend gnu @{ .host = "www.gnu.org"; @}"))
19629 (listen '(":80")) 19676 (listen '(":80"))
19630 (vcl %gnu-mirror))) 19677 (vcl %gnu-mirror)))
19631 %base-services))) 19678 %base-services)))
19632@end example 19679@end lisp
19633 19680
19634The configuration of an already running Varnish instance can be inspected 19681The configuration of an already running Varnish instance can be inspected
19635and changed using the @command{varnishadm} program. 19682and changed using the @command{varnishadm} program.
@@ -19665,7 +19712,7 @@ Service type for Patchwork.
19665The following example is an example of a minimal service for Patchwork, for 19712The following example is an example of a minimal service for Patchwork, for
19666the @code{patchwork.example.com} domain. 19713the @code{patchwork.example.com} domain.
19667 19714
19668@example 19715@lisp
19669(service patchwork-service-type 19716(service patchwork-service-type
19670 (patchwork-configuration 19717 (patchwork-configuration
19671 (domain "patchwork.example.com") 19718 (domain "patchwork.example.com")
@@ -19685,7 +19732,7 @@ the @code{patchwork.example.com} domain.
19685 (extra-parameters 19732 (extra-parameters
19686 '((mailboxes . ("Patches")))))))) 19733 '((mailboxes . ("Patches"))))))))
19687 19734
19688@end example 19735@end lisp
19689 19736
19690There are three records for configuring the Patchwork service. The 19737There are three records for configuring the Patchwork service. The
19691@code{<patchwork-configuration>} relates to the configuration for Patchwork 19738@code{<patchwork-configuration>} relates to the configuration for Patchwork
@@ -20004,7 +20051,7 @@ A helper function to quickly add php to an @code{nginx-server-configuration}.
20004@end deffn 20051@end deffn
20005 20052
20006A simple services setup for nginx with php can look like this: 20053A simple services setup for nginx with php can look like this:
20007@example 20054@lisp
20008(services (cons* (service dhcp-client-service-type) 20055(services (cons* (service dhcp-client-service-type)
20009 (service php-fpm-service-type) 20056 (service php-fpm-service-type)
20010 (service nginx-service-type 20057 (service nginx-service-type
@@ -20017,7 +20064,7 @@ A simple services setup for nginx with php can look like this:
20017 (ssl-certificate #f) 20064 (ssl-certificate #f)
20018 (ssl-certificate-key #f))) 20065 (ssl-certificate-key #f)))
20019 %base-services)) 20066 %base-services))
20020@end example 20067@end lisp
20021 20068
20022@cindex cat-avatar-generator 20069@cindex cat-avatar-generator
20023The cat avatar generator is a simple service to demonstrate the use of php-fpm 20070The cat avatar generator is a simple service to demonstrate the use of php-fpm
@@ -20035,14 +20082,14 @@ be able to use @code{cache-dir} as its cache directory.
20035@end deffn 20082@end deffn
20036 20083
20037A simple setup for cat-avatar-generator can look like this: 20084A simple setup for cat-avatar-generator can look like this:
20038@example 20085@lisp
20039(services (cons* (cat-avatar-generator-service 20086(services (cons* (cat-avatar-generator-service
20040 #:configuration 20087 #:configuration
20041 (nginx-server-configuration 20088 (nginx-server-configuration
20042 (server-name '("example.com")))) 20089 (server-name '("example.com"))))
20043 ... 20090 ...
20044 %base-services)) 20091 %base-services))
20045@end example 20092@end lisp
20046 20093
20047@subsubheading Hpcguix-web 20094@subsubheading Hpcguix-web
20048 20095
@@ -20099,7 +20146,7 @@ The hpcguix-web package to use.
20099 20146
20100A typical hpcguix-web service declaration looks like this: 20147A typical hpcguix-web service declaration looks like this:
20101 20148
20102@example 20149@lisp
20103(service hpcguix-web-service-type 20150(service hpcguix-web-service-type
20104 (hpcguix-web-configuration 20151 (hpcguix-web-configuration
20105 (specs 20152 (specs
@@ -20107,7 +20154,7 @@ A typical hpcguix-web service declaration looks like this:
20107 (hpcweb-configuration 20154 (hpcweb-configuration
20108 (title-prefix "Guix-HPC - ") 20155 (title-prefix "Guix-HPC - ")
20109 (menu '(("/about" "ABOUT")))))))) 20156 (menu '(("/about" "ABOUT"))))))))
20110@end example 20157@end lisp
20111 20158
20112@quotation Note 20159@quotation Note
20113The hpcguix-web service periodically updates the package list it publishes by 20160The hpcguix-web service periodically updates the package list it publishes by
@@ -20167,7 +20214,7 @@ can be found there:
20167A service type for the @code{certbot} Let's Encrypt client. Its value 20214A service type for the @code{certbot} Let's Encrypt client. Its value
20168must be a @code{certbot-configuration} record as in this example: 20215must be a @code{certbot-configuration} record as in this example:
20169 20216
20170@example 20217@lisp
20171(define %nginx-deploy-hook 20218(define %nginx-deploy-hook
20172 (program-file 20219 (program-file
20173 "nginx-deploy-hook" 20220 "nginx-deploy-hook"
@@ -20184,7 +20231,7 @@ must be a @code{certbot-configuration} record as in this example:
20184 (deploy-hook %nginx-deploy-hook)) 20231 (deploy-hook %nginx-deploy-hook))
20185 (certificate-configuration 20232 (certificate-configuration
20186 (domains '("bar.example.net"))))))) 20233 (domains '("bar.example.net")))))))
20187@end example 20234@end lisp
20188 20235
20189See below for details about @code{certbot-configuration}. 20236See below for details about @code{certbot-configuration}.
20190@end defvr 20237@end defvr
@@ -20255,7 +20302,9 @@ all domains will be Subject Alternative Names on the certificate.
20255The challenge type that has to be run by certbot. If @code{#f} is specified, 20302The challenge type that has to be run by certbot. If @code{#f} is specified,
20256default to the HTTP challenge. If a value is specified, defaults to the 20303default to the HTTP challenge. If a value is specified, defaults to the
20257manual plugin (see @code{authentication-hook}, @code{cleanup-hook} and 20304manual plugin (see @code{authentication-hook}, @code{cleanup-hook} and
20258the documentation at @url{https://certbot.eff.org/docs/using.html#hooks}). 20305the documentation at @url{https://certbot.eff.org/docs/using.html#hooks}),
20306and gives Let's Encrypt permission to log the public IP address of the
20307requesting machine.
20259 20308
20260@item @code{authentication-hook} (default: @code{#f}) 20309@item @code{authentication-hook} (default: @code{#f})
20261Command to be run in a shell once for each certificate challenge to be 20310Command to be run in a shell once for each certificate challenge to be
@@ -20766,12 +20815,12 @@ The list of knot-zone-configuration used by this configuration.
20766This is the type of the dnsmasq service, whose value should be an 20815This is the type of the dnsmasq service, whose value should be an
20767@code{dnsmasq-configuration} object as in this example: 20816@code{dnsmasq-configuration} object as in this example:
20768 20817
20769@example 20818@lisp
20770(service dnsmasq-service-type 20819(service dnsmasq-service-type
20771 (dnsmasq-configuration 20820 (dnsmasq-configuration
20772 (no-resolv? #t) 20821 (no-resolv? #t)
20773 (servers '("192.168.1.1")))) 20822 (servers '("192.168.1.1"))))
20774@end example 20823@end lisp
20775@end deffn 20824@end deffn
20776 20825
20777@deftp {Data Type} dnsmasq-configuration 20826@deftp {Data Type} dnsmasq-configuration
@@ -20824,9 +20873,9 @@ care of automatically updating DNS entries for service providers such as
20824The following example show instantiates the service with its default 20873The following example show instantiates the service with its default
20825configuration: 20874configuration:
20826 20875
20827@example 20876@lisp
20828(service ddclient-service-type) 20877(service ddclient-service-type)
20829@end example 20878@end lisp
20830 20879
20831Note that ddclient needs to access credentials that are stored in a 20880Note that ddclient needs to access credentials that are stored in a
20832@dfn{secret file}, by default @file{/etc/ddclient/secrets} (see 20881@dfn{secret file}, by default @file{/etc/ddclient/secrets} (see
@@ -21416,7 +21465,7 @@ and builds the packages from a manifest. Some of the packages are defined in
21416the @code{"custom-packages"} input, which is the equivalent of 21465the @code{"custom-packages"} input, which is the equivalent of
21417@code{GUIX_PACKAGE_PATH}. 21466@code{GUIX_PACKAGE_PATH}.
21418 21467
21419@example 21468@lisp
21420(define %cuirass-specs 21469(define %cuirass-specs
21421 #~(list 21470 #~(list
21422 '((#:name . "my-manifest") 21471 '((#:name . "my-manifest")
@@ -21447,7 +21496,7 @@ the @code{"custom-packages"} input, which is the equivalent of
21447(service cuirass-service-type 21496(service cuirass-service-type
21448 (cuirass-configuration 21497 (cuirass-configuration
21449 (specifications %cuirass-specs))) 21498 (specifications %cuirass-specs)))
21450@end example 21499@end lisp
21451 21500
21452While information related to build jobs is located directly in the 21501While information related to build jobs is located directly in the
21453specifications, global settings for the @command{cuirass} process are 21502specifications, global settings for the @command{cuirass} process are
@@ -21535,9 +21584,9 @@ source is detected. More information can be found at
21535The service type for the TLP tool. Its value should be a valid 21584The service type for the TLP tool. Its value should be a valid
21536TLP configuration (see below). To use the default settings, simply 21585TLP configuration (see below). To use the default settings, simply
21537write: 21586write:
21538@example 21587@lisp
21539(service tlp-service-type) 21588(service tlp-service-type)
21540@end example 21589@end lisp
21541@end deffn 21590@end deffn
21542 21591
21543By default TLP does not need much configuration but most TLP parameters 21592By default TLP does not need much configuration but most TLP parameters
@@ -22065,12 +22114,12 @@ of clients.
22065The following example shows how one might run @code{mpd} as user 22114The following example shows how one might run @code{mpd} as user
22066@code{"bob"} on port @code{6666}. It uses pulseaudio for output. 22115@code{"bob"} on port @code{6666}. It uses pulseaudio for output.
22067 22116
22068@example 22117@lisp
22069(service mpd-service-type 22118(service mpd-service-type
22070 (mpd-configuration 22119 (mpd-configuration
22071 (user "bob") 22120 (user "bob")
22072 (port "6666"))) 22121 (port "6666")))
22073@end example 22122@end lisp
22074 22123
22075@defvr {Scheme Variable} mpd-service-type 22124@defvr {Scheme Variable} mpd-service-type
22076The service type for @command{mpd} 22125The service type for @command{mpd}
@@ -22124,12 +22173,12 @@ and performs required management tasks for virtualized guests.
22124This is the type of the @uref{https://libvirt.org, libvirt daemon}. 22173This is the type of the @uref{https://libvirt.org, libvirt daemon}.
22125Its value must be a @code{libvirt-configuration}. 22174Its value must be a @code{libvirt-configuration}.
22126 22175
22127@example 22176@lisp
22128(service libvirt-service-type 22177(service libvirt-service-type
22129 (libvirt-configuration 22178 (libvirt-configuration
22130 (unix-sock-group "libvirt") 22179 (unix-sock-group "libvirt")
22131 (tls-port "16555"))) 22180 (tls-port "16555")))
22132@end example 22181@end lisp
22133@end deffn 22182@end deffn
22134 22183
22135@c Auto-generated with (generate-libvirt-documentation) 22184@c Auto-generated with (generate-libvirt-documentation)
@@ -22690,11 +22739,11 @@ itself upon receiving @code{SIGUSR1}, to allow live upgrades without downtime.
22690This is the type of the virtlog daemon. 22739This is the type of the virtlog daemon.
22691Its value must be a @code{virtlog-configuration}. 22740Its value must be a @code{virtlog-configuration}.
22692 22741
22693@example 22742@lisp
22694(service virtlog-service-type 22743(service virtlog-service-type
22695 (virtlog-configuration 22744 (virtlog-configuration
22696 (max-clients 1000))) 22745 (max-clients 1000)))
22697@end example 22746@end lisp
22698@end deffn 22747@end deffn
22699 22748
22700@deftypevr {@code{virtlog-configuration} parameter} integer log-level 22749@deftypevr {@code{virtlog-configuration} parameter} integer log-level
@@ -22832,11 +22881,11 @@ Its value must be a @code{qemu-binfmt-configuration} object, which
22832specifies the QEMU package to use as well as the architecture we want to 22881specifies the QEMU package to use as well as the architecture we want to
22833emulated: 22882emulated:
22834 22883
22835@example 22884@lisp
22836(service qemu-binfmt-service-type 22885(service qemu-binfmt-service-type
22837 (qemu-binfmt-configuration 22886 (qemu-binfmt-configuration
22838 (platforms (lookup-qemu-platforms "arm" "aarch64" "mips64el")))) 22887 (platforms (lookup-qemu-platforms "arm" "aarch64" "mips64el"))))
22839@end example 22888@end lisp
22840 22889
22841In this example, we enable transparent emulation for the ARM and aarch64 22890In this example, we enable transparent emulation for the ARM and aarch64
22842platforms. Running @code{herd stop qemu-binfmt} turns it off, and 22891platforms. Running @code{herd stop qemu-binfmt} turns it off, and
@@ -22862,12 +22911,12 @@ that you can transparently build programs for another architecture.
22862For example, let's suppose you're on an x86_64 machine and you have this 22911For example, let's suppose you're on an x86_64 machine and you have this
22863service: 22912service:
22864 22913
22865@example 22914@lisp
22866(service qemu-binfmt-service-type 22915(service qemu-binfmt-service-type
22867 (qemu-binfmt-configuration 22916 (qemu-binfmt-configuration
22868 (platforms (lookup-qemu-platforms "arm")) 22917 (platforms (lookup-qemu-platforms "arm"))
22869 (guix-support? #t))) 22918 (guix-support? #t)))
22870@end example 22919@end lisp
22871 22920
22872You can run: 22921You can run:
22873 22922
@@ -23018,7 +23067,7 @@ Compute an @code{nginx-location-configuration} that corresponds to the
23018given Git http configuration. An example nginx service definition to 23067given Git http configuration. An example nginx service definition to
23019serve the default @file{/srv/git} over HTTPS might be: 23068serve the default @file{/srv/git} over HTTPS might be:
23020 23069
23021@example 23070@lisp
23022(service nginx-service-type 23071(service nginx-service-type
23023 (nginx-configuration 23072 (nginx-configuration
23024 (server-blocks 23073 (server-blocks
@@ -23034,7 +23083,7 @@ serve the default @file{/srv/git} over HTTPS might be:
23034 (list 23083 (list
23035 (git-http-nginx-location-configuration 23084 (git-http-nginx-location-configuration
23036 (git-http-configuration (uri-path "/")))))))))) 23085 (git-http-configuration (uri-path "/"))))))))))
23037@end example 23086@end lisp
23038 23087
23039This example assumes that you are using Let's Encrypt to get your TLS 23088This example assumes that you are using Let's Encrypt to get your TLS
23040certificate. @xref{Certificate Services}. The default @code{certbot} 23089certificate. @xref{Certificate Services}. The default @code{certbot}
@@ -23053,9 +23102,9 @@ repositories written in C.
23053The following example will configure the service with default values. 23102The following example will configure the service with default values.
23054By default, Cgit can be accessed on port 80 (@code{http://localhost:80}). 23103By default, Cgit can be accessed on port 80 (@code{http://localhost:80}).
23055 23104
23056@example 23105@lisp
23057(service cgit-service-type) 23106(service cgit-service-type)
23058@end example 23107@end lisp
23059 23108
23060The @code{file-object} type designates either a file-like object 23109The @code{file-object} type designates either a file-like object
23061(@pxref{G-Expressions, file-like objects}) or a string. 23110(@pxref{G-Expressions, file-like objects}) or a string.
@@ -23988,11 +24037,11 @@ The contents of the @code{cgitrc}, as a string.
23988For example, if your @code{cgitrc} is just the empty string, you 24037For example, if your @code{cgitrc} is just the empty string, you
23989could instantiate a cgit service like this: 24038could instantiate a cgit service like this:
23990 24039
23991@example 24040@lisp
23992(service cgit-service-type 24041(service cgit-service-type
23993 (opaque-cgit-configuration 24042 (opaque-cgit-configuration
23994 (cgitrc ""))) 24043 (cgitrc "")))
23995@end example 24044@end lisp
23996 24045
23997@subsubheading Gitolite Service 24046@subsubheading Gitolite Service
23998 24047
@@ -24007,13 +24056,13 @@ configuration of the permissions for the users on the repositories.
24007The following example will configure Gitolite using the default @code{git} 24056The following example will configure Gitolite using the default @code{git}
24008user, and the provided SSH public key. 24057user, and the provided SSH public key.
24009 24058
24010@example 24059@lisp
24011(service gitolite-service-type 24060(service gitolite-service-type
24012 (gitolite-configuration 24061 (gitolite-configuration
24013 (admin-pubkey (plain-file 24062 (admin-pubkey (plain-file
24014 "yourname.pub" 24063 "yourname.pub"
24015 "ssh-rsa AAAA... guix@@example.com")))) 24064 "ssh-rsa AAAA... guix@@example.com"))))
24016@end example 24065@end lisp
24017 24066
24018Gitolite is configured through a special admin repository which you can clone, 24067Gitolite is configured through a special admin repository which you can clone,
24019for example, if you setup Gitolite on @code{example.com}, you would run the 24068for example, if you setup Gitolite on @code{example.com}, you would run the
@@ -24056,9 +24105,9 @@ within the gitolite-admin repository.
24056 24105
24057To specify the SSH key as a string, use the @code{plain-file} function. 24106To specify the SSH key as a string, use the @code{plain-file} function.
24058 24107
24059@example 24108@lisp
24060(plain-file "yourname.pub" "ssh-rsa AAAA... guix@@example.com") 24109(plain-file "yourname.pub" "ssh-rsa AAAA... guix@@example.com")
24061@end example 24110@end lisp
24062 24111
24063@end table 24112@end table
24064@end deftp 24113@end deftp
@@ -24103,9 +24152,9 @@ Service type for the wesnothd service. Its value must be a
24103@code{wesnothd-configuration} object. To run wesnothd in the default 24152@code{wesnothd-configuration} object. To run wesnothd in the default
24104configuration, instantiate it as: 24153configuration, instantiate it as:
24105 24154
24106@example 24155@lisp
24107(service wesnothd-service-type) 24156(service wesnothd-service-type)
24108@end example 24157@end lisp
24109@end defvar 24158@end defvar
24110 24159
24111@deftp {Data Type} wesnothd-configuration 24160@deftp {Data Type} wesnothd-configuration
@@ -24133,9 +24182,9 @@ read and identify fingerprints via a fingerprint sensor.
24133The service type for @command{fprintd}, which provides the fingerprint 24182The service type for @command{fprintd}, which provides the fingerprint
24134reading capability. 24183reading capability.
24135 24184
24136@example 24185@lisp
24137(service fprintd-service-type) 24186(service fprintd-service-type)
24138@end example 24187@end lisp
24139@end defvr 24188@end defvr
24140 24189
24141@cindex sysctl 24190@cindex sysctl
@@ -24149,11 +24198,11 @@ The service type for @command{sysctl}, which modifies kernel parameters
24149under @file{/proc/sys/}. To enable IPv4 forwarding, it can be 24198under @file{/proc/sys/}. To enable IPv4 forwarding, it can be
24150instantiated as: 24199instantiated as:
24151 24200
24152@example 24201@lisp
24153(service sysctl-service-type 24202(service sysctl-service-type
24154 (sysctl-configuration 24203 (sysctl-configuration
24155 (settings '(("net.ipv4.ip_forward" . "1"))))) 24204 (settings '(("net.ipv4.ip_forward" . "1")))))
24156@end example 24205@end lisp
24157@end defvr 24206@end defvr
24158 24207
24159@deftp {Data Type} sysctl-configuration 24208@deftp {Data Type} sysctl-configuration
@@ -24182,9 +24231,9 @@ Service type for the @command{pcscd} service. Its value must be a
24182@code{pcscd-configuration} object. To run pcscd in the default 24231@code{pcscd-configuration} object. To run pcscd in the default
24183configuration, instantiate it as: 24232configuration, instantiate it as:
24184 24233
24185@example 24234@lisp
24186(service pcscd-service-type) 24235(service pcscd-service-type)
24187@end example 24236@end lisp
24188@end defvr 24237@end defvr
24189 24238
24190@deftp {Data Type} pcscd-configuration 24239@deftp {Data Type} pcscd-configuration
@@ -24339,7 +24388,7 @@ Dictionary of English using the @code{gcide} package.
24339 24388
24340The following is an example @code{dicod-service} configuration. 24389The following is an example @code{dicod-service} configuration.
24341 24390
24342@example 24391@lisp
24343(dicod-service #:config 24392(dicod-service #:config
24344 (dicod-configuration 24393 (dicod-configuration
24345 (handlers (list (dicod-handler 24394 (handlers (list (dicod-handler
@@ -24353,7 +24402,7 @@ The following is an example @code{dicod-service} configuration.
24353 (handler "wordnet") 24402 (handler "wordnet")
24354 (options '("database=wn"))) 24403 (options '("database=wn")))
24355 %dicod-database:gcide)))) 24404 %dicod-database:gcide))))
24356@end example 24405@end lisp
24357 24406
24358@cindex Docker 24407@cindex Docker
24359@subsubheading Docker Service 24408@subsubheading Docker Service
@@ -24453,7 +24502,7 @@ This is the type of the service that runs build daemon of the
24453@url{https://nixos.org/nix/, Nix} package manager. Here is an example showing 24502@url{https://nixos.org/nix/, Nix} package manager. Here is an example showing
24454how to use it: 24503how to use it:
24455 24504
24456@example 24505@lisp
24457(use-modules (gnu)) 24506(use-modules (gnu))
24458(use-service-modules nix) 24507(use-service-modules nix)
24459(use-package-modules package-management) 24508(use-package-modules package-management)
@@ -24465,7 +24514,7 @@ how to use it:
24465 24514
24466 (services (append (list (service nix-service-type)) 24515 (services (append (list (service nix-service-type))
24467 %base-services))) 24516 %base-services)))
24468@end example 24517@end lisp
24469 24518
24470After @command{guix system reconfigure} configure Nix for your user: 24519After @command{guix system reconfigure} configure Nix for your user:
24471 24520
@@ -24620,7 +24669,7 @@ As an example, the declaration below configures the NSS to use the
24620back-end}, which supports host name lookups over multicast DNS (mDNS) 24669back-end}, which supports host name lookups over multicast DNS (mDNS)
24621for host names ending in @code{.local}: 24670for host names ending in @code{.local}:
24622 24671
24623@example 24672@lisp
24624(name-service-switch 24673(name-service-switch
24625 (hosts (list %files ;first, check /etc/hosts 24674 (hosts (list %files ;first, check /etc/hosts
24626 24675
@@ -24642,7 +24691,7 @@ for host names ending in @code{.local}:
24642 ;; Finally, try with the "full" 'mdns'. 24691 ;; Finally, try with the "full" 'mdns'.
24643 (name-service 24692 (name-service
24644 (name "mdns"))))) 24693 (name "mdns")))))
24645@end example 24694@end lisp
24646 24695
24647Do not worry: the @code{%mdns-host-lookup-nss} variable (see below) 24696Do not worry: the @code{%mdns-host-lookup-nss} variable (see below)
24648contains this configuration, so you will not have to type it if all you 24697contains this configuration, so you will not have to type it if all you
@@ -24723,10 +24772,10 @@ An action specified using the @code{lookup-specification} macro
24723(@pxref{Actions in the NSS configuration,,, libc, The GNU C Library 24772(@pxref{Actions in the NSS configuration,,, libc, The GNU C Library
24724Reference Manual}). For example: 24773Reference Manual}). For example:
24725 24774
24726@example 24775@lisp
24727(lookup-specification (unavailable => continue) 24776(lookup-specification (unavailable => continue)
24728 (success => return)) 24777 (success => return))
24729@end example 24778@end lisp
24730@end table 24779@end table
24731@end deftp 24780@end deftp
24732 24781
@@ -24750,11 +24799,11 @@ most use cases. For example, assuming you need the @code{megaraid_sas}
24750module in addition to the default modules to be able to access your root 24799module in addition to the default modules to be able to access your root
24751file system, you would write: 24800file system, you would write:
24752 24801
24753@example 24802@lisp
24754(operating-system 24803(operating-system
24755 ;; @dots{} 24804 ;; @dots{}
24756 (initrd-modules (cons "megaraid_sas" %base-initrd-modules))) 24805 (initrd-modules (cons "megaraid_sas" %base-initrd-modules)))
24757@end example 24806@end lisp
24758 24807
24759@defvr {Scheme Variable} %base-initrd-modules 24808@defvr {Scheme Variable} %base-initrd-modules
24760This is the list of kernel modules included in the initrd by default. 24809This is the list of kernel modules included in the initrd by default.
@@ -24772,14 +24821,14 @@ For example, if you want to add a bunch of kernel modules to be loaded
24772at boot time, you can define the @code{initrd} field of the operating 24821at boot time, you can define the @code{initrd} field of the operating
24773system declaration like this: 24822system declaration like this:
24774 24823
24775@example 24824@lisp
24776(initrd (lambda (file-systems . rest) 24825(initrd (lambda (file-systems . rest)
24777 ;; Create a standard initrd but set up networking 24826 ;; Create a standard initrd but set up networking
24778 ;; with the parameters QEMU expects by default. 24827 ;; with the parameters QEMU expects by default.
24779 (apply base-initrd file-systems 24828 (apply base-initrd file-systems
24780 #:qemu-networking? #t 24829 #:qemu-networking? #t
24781 rest))) 24830 rest)))
24782@end example 24831@end lisp
24783 24832
24784The @code{base-initrd} procedure also handles common use cases that 24833The @code{base-initrd} procedure also handles common use cases that
24785involves using the system as a QEMU guest, or as a ``live'' system with 24834involves using the system as a QEMU guest, or as a ``live'' system with
@@ -25031,13 +25080,13 @@ Should you want to list additional boot menu entries @i{via} the
25031boot another distro (hard to imagine!), you can define a menu entry 25080boot another distro (hard to imagine!), you can define a menu entry
25032along these lines: 25081along these lines:
25033 25082
25034@example 25083@lisp
25035(menu-entry 25084(menu-entry
25036 (label "The Other Distro") 25085 (label "The Other Distro")
25037 (linux "/boot/old/vmlinux-2.6.32") 25086 (linux "/boot/old/vmlinux-2.6.32")
25038 (linux-arguments '("root=/dev/sda2")) 25087 (linux-arguments '("root=/dev/sda2"))
25039 (initrd "/boot/old/initrd")) 25088 (initrd "/boot/old/initrd"))
25040@end example 25089@end lisp
25041 25090
25042Details below. 25091Details below.
25043 25092
@@ -25052,9 +25101,9 @@ The label to show in the menu---e.g., @code{"GNU"}.
25052@item @code{linux} 25101@item @code{linux}
25053The Linux kernel image to boot, for example: 25102The Linux kernel image to boot, for example:
25054 25103
25055@example 25104@lisp
25056(file-append linux-libre "/bzImage") 25105(file-append linux-libre "/bzImage")
25057@end example 25106@end lisp
25058 25107
25059For GRUB, it is also possible to specify a device explicitly in the 25108For GRUB, it is also possible to specify a device explicitly in the
25060file path using GRUB's device naming convention (@pxref{Naming 25109file path using GRUB's device naming convention (@pxref{Naming
@@ -25590,7 +25639,7 @@ guix deploy @var{file}
25590Such an invocation will deploy the machines that the code within @var{file} 25639Such an invocation will deploy the machines that the code within @var{file}
25591evaluates to. As an example, @var{file} might contain a definition like this: 25640evaluates to. As an example, @var{file} might contain a definition like this:
25592 25641
25593@example 25642@lisp
25594;; This is a Guix deployment of a "bare bones" setup, with 25643;; This is a Guix deployment of a "bare bones" setup, with
25595;; no X11 display server, to a machine with an SSH daemon 25644;; no X11 display server, to a machine with an SSH daemon
25596;; listening on localhost:2222. A configuration such as this 25645;; listening on localhost:2222. A configuration such as this
@@ -25630,7 +25679,7 @@ evaluates to. As an example, @var{file} might contain a definition like this:
25630 (user "alice") 25679 (user "alice")
25631 (identity "./id_rsa") 25680 (identity "./id_rsa")
25632 (port 2222))))) 25681 (port 2222)))))
25633@end example 25682@end lisp
25634 25683
25635The file should evaluate to a list of @var{machine} objects. This example, 25684The file should evaluate to a list of @var{machine} objects. This example,
25636upon being deployed, will create a new generation on the remote system 25685upon being deployed, will create a new generation on the remote system
@@ -25919,7 +25968,7 @@ A @dfn{service type} is a node in the DAG described above. Let us start
25919with a simple example, the service type for the Guix build daemon 25968with a simple example, the service type for the Guix build daemon
25920(@pxref{Invoking guix-daemon}): 25969(@pxref{Invoking guix-daemon}):
25921 25970
25922@example 25971@lisp
25923(define guix-service-type 25972(define guix-service-type
25924 (service-type 25973 (service-type
25925 (name 'guix) 25974 (name 'guix)
@@ -25928,7 +25977,7 @@ with a simple example, the service type for the Guix build daemon
25928 (service-extension account-service-type guix-accounts) 25977 (service-extension account-service-type guix-accounts)
25929 (service-extension activation-service-type guix-activation))) 25978 (service-extension activation-service-type guix-activation)))
25930 (default-value (guix-configuration)))) 25979 (default-value (guix-configuration))))
25931@end example 25980@end lisp
25932 25981
25933@noindent 25982@noindent
25934It defines three things: 25983It defines three things:
@@ -25972,12 +26021,12 @@ booted.
25972 26021
25973A service of this type is instantiated like this: 26022A service of this type is instantiated like this:
25974 26023
25975@example 26024@lisp
25976(service guix-service-type 26025(service guix-service-type
25977 (guix-configuration 26026 (guix-configuration
25978 (build-accounts 5) 26027 (build-accounts 5)
25979 (use-substitutes? #f))) 26028 (use-substitutes? #f)))
25980@end example 26029@end lisp
25981 26030
25982The second argument to the @code{service} form is a value representing 26031The second argument to the @code{service} form is a value representing
25983the parameters of this specific service instance. 26032the parameters of this specific service instance.
@@ -25986,9 +26035,9 @@ information about the @code{guix-configuration} data type. When the
25986value is omitted, the default value specified by 26035value is omitted, the default value specified by
25987@code{guix-service-type} is used: 26036@code{guix-service-type} is used:
25988 26037
25989@example 26038@lisp
25990(service guix-service-type) 26039(service guix-service-type)
25991@end example 26040@end lisp
25992 26041
25993@code{guix-service-type} is quite simple because it extends other 26042@code{guix-service-type} is quite simple because it extends other
25994services but is not extensible itself. 26043services but is not extensible itself.
@@ -25997,7 +26046,7 @@ services but is not extensible itself.
25997 26046
25998The service type for an @emph{extensible} service looks like this: 26047The service type for an @emph{extensible} service looks like this:
25999 26048
26000@example 26049@lisp
26001(define udev-service-type 26050(define udev-service-type
26002 (service-type (name 'udev) 26051 (service-type (name 'udev)
26003 (extensions 26052 (extensions
@@ -26011,7 +26060,7 @@ The service type for an @emph{extensible} service looks like this:
26011 (udev-configuration 26060 (udev-configuration
26012 (udev udev) ;the udev package to use 26061 (udev udev) ;the udev package to use
26013 (rules (append initial-rules rules))))))))) 26062 (rules (append initial-rules rules)))))))))
26014@end example 26063@end lisp
26015 26064
26016This is the service type for the 26065This is the service type for the
26017@uref{https://wiki.gentoo.org/wiki/Project:Eudev, eudev device 26066@uref{https://wiki.gentoo.org/wiki/Project:Eudev, eudev device
@@ -26068,17 +26117,17 @@ raised.
26068 26117
26069For instance, this: 26118For instance, this:
26070 26119
26071@example 26120@lisp
26072(service openssh-service-type) 26121(service openssh-service-type)
26073@end example 26122@end lisp
26074 26123
26075@noindent 26124@noindent
26076is equivalent to this: 26125is equivalent to this:
26077 26126
26078@example 26127@lisp
26079(service openssh-service-type 26128(service openssh-service-type
26080 (openssh-configuration)) 26129 (openssh-configuration))
26081@end example 26130@end lisp
26082 26131
26083In both cases the result is an instance of @code{openssh-service-type} 26132In both cases the result is an instance of @code{openssh-service-type}
26084with the default configuration. 26133with the default configuration.
@@ -26099,7 +26148,7 @@ parameters.
26099 26148
26100Here is an example of how a service is created and manipulated: 26149Here is an example of how a service is created and manipulated:
26101 26150
26102@example 26151@lisp
26103(define s 26152(define s
26104 (service nginx-service-type 26153 (service nginx-service-type
26105 (nginx-configuration 26154 (nginx-configuration
@@ -26113,7 +26162,7 @@ Here is an example of how a service is created and manipulated:
26113 26162
26114(eq? (service-kind s) nginx-service-type) 26163(eq? (service-kind s) nginx-service-type)
26115@result{} #t 26164@result{} #t
26116@end example 26165@end lisp
26117 26166
26118The @code{modify-services} form provides a handy way to change the 26167The @code{modify-services} form provides a handy way to change the
26119parameters of some of the services of a list such as 26168parameters of some of the services of a list such as
@@ -26215,10 +26264,10 @@ service is an instance.
26215For example, this extends mcron (@pxref{Scheduled Job Execution}) with 26264For example, this extends mcron (@pxref{Scheduled Job Execution}) with
26216an additional job: 26265an additional job:
26217 26266
26218@example 26267@lisp
26219(simple-service 'my-mcron-job mcron-service-type 26268(simple-service 'my-mcron-job mcron-service-type
26220 #~(job '(next-hour (3)) "guix gc -F 2G")) 26269 #~(job '(next-hour (3)) "guix gc -F 2G"))
26221@end example 26270@end lisp
26222@end deffn 26271@end deffn
26223 26272
26224At the core of the service abstraction lies the @code{fold-services} 26273At the core of the service abstraction lies the @code{fold-services}
@@ -26253,9 +26302,9 @@ The type of the @file{/etc} service. This service is used to create
26253files under @file{/etc} and can be extended by 26302files under @file{/etc} and can be extended by
26254passing it name/file tuples such as: 26303passing it name/file tuples such as:
26255 26304
26256@example 26305@lisp
26257(list `("issue" ,(plain-file "issue" "Welcome!\n"))) 26306(list `("issue" ,(plain-file "issue" "Welcome!\n")))
26258@end example 26307@end lisp
26259 26308
26260In this example, the effect would be to add an @file{/etc/issue} file 26309In this example, the effect would be to add an @file{/etc/issue} file
26261pointing to the given file. 26310pointing to the given file.
@@ -26391,7 +26440,7 @@ shepherd, The GNU Shepherd Manual}).
26391The following example defines an action called @code{say-hello} that kindly 26440The following example defines an action called @code{say-hello} that kindly
26392greets the user: 26441greets the user:
26393 26442
26394@example 26443@lisp
26395(shepherd-action 26444(shepherd-action
26396 (name 'say-hello) 26445 (name 'say-hello)
26397 (documentation "Say hi!") 26446 (documentation "Say hi!")
@@ -26399,7 +26448,7 @@ greets the user:
26399 (format #t "Hello, friend! arguments: ~s\n" 26448 (format #t "Hello, friend! arguments: ~s\n"
26400 args) 26449 args)
26401 #t))) 26450 #t)))
26402@end example 26451@end lisp
26403 26452
26404Assuming this action is added to the @code{example} service, then you can do: 26453Assuming this action is added to the @code{example} service, then you can do:
26405 26454
@@ -26606,13 +26655,13 @@ Bash, say @code{bash-fixed}, in the usual way (@pxref{Defining
26606Packages}). Then, the original package definition is augmented with a 26655Packages}). Then, the original package definition is augmented with a
26607@code{replacement} field pointing to the package containing the bug fix: 26656@code{replacement} field pointing to the package containing the bug fix:
26608 26657
26609@example 26658@lisp
26610(define bash 26659(define bash
26611 (package 26660 (package
26612 (name "bash") 26661 (name "bash")
26613 ;; @dots{} 26662 ;; @dots{}
26614 (replacement bash-fixed))) 26663 (replacement bash-fixed)))
26615@end example 26664@end lisp
26616 26665
26617From there on, any package depending directly or indirectly on Bash---as 26666From there on, any package depending directly or indirectly on Bash---as
26618reported by @command{guix gc --requisites} (@pxref{Invoking guix 26667reported by @command{guix gc --requisites} (@pxref{Invoking guix
diff --git a/etc/guix-daemon.cil.in b/etc/guix-daemon.cil.in
index c0c82d8fbbc..e0c91134981 100644
--- a/etc/guix-daemon.cil.in
+++ b/etc/guix-daemon.cil.in
@@ -277,9 +277,5 @@
277 file (system_u object_r guix_daemon_exec_t (low low))) 277 file (system_u object_r guix_daemon_exec_t (low low)))
278 (filecon "@storedir@/.+-(guix-.+|profile)/bin/guix-daemon" 278 (filecon "@storedir@/.+-(guix-.+|profile)/bin/guix-daemon"
279 file (system_u object_r guix_daemon_exec_t (low low))) 279 file (system_u object_r guix_daemon_exec_t (low low)))
280 (filecon "@storedir@/.+-(guix-.+|profile)/libexec/guix-authenticate"
281 file (system_u object_r guix_daemon_exec_t (low low)))
282 (filecon "@storedir@/.+-(guix-.+|profile)/libexec/guix/(.*)?"
283 any (system_u object_r guix_daemon_exec_t (low low)))
284 (filecon "@guix_localstatedir@/guix/daemon-socket/socket" 280 (filecon "@guix_localstatedir@/guix/daemon-socket/socket"
285 any (system_u object_r guix_daemon_socket_t (low low)))) 281 any (system_u object_r guix_daemon_socket_t (low low))))
diff --git a/gnu/build/linux-container.scm b/gnu/build/linux-container.scm
index 6ccb9248614..87695c98fdd 100644
--- a/gnu/build/linux-container.scm
+++ b/gnu/build/linux-container.scm
@@ -299,8 +299,10 @@ delete it when leaving the dynamic extent of this call."
299 (false-if-exception (delete-file-recursively tmp-dir)))))) 299 (false-if-exception (delete-file-recursively tmp-dir))))))
300 300
301(define* (call-with-container mounts thunk #:key (namespaces %namespaces) 301(define* (call-with-container mounts thunk #:key (namespaces %namespaces)
302 (host-uids 1) (guest-uid 0) (guest-gid 0)) 302 (host-uids 1) (guest-uid 0) (guest-gid 0)
303 "Run THUNK in a new container process and return its exit status. 303 (process-spawned-hook (const #t)))
304 "Run THUNK in a new container process and return its exit status; call
305PROCESS-SPAWNED-HOOK with the PID of the new process that has been spawned.
304MOUNTS is a list of <file-system> objects that specify file systems to mount 306MOUNTS is a list of <file-system> objects that specify file systems to mount
305inside the container. NAMESPACES is a list of symbols corresponding to 307inside the container. NAMESPACES is a list of symbols corresponding to
306the identifiers for Linux namespaces: mnt, ipc, uts, pid, user, and net. By 308the identifiers for Linux namespaces: mnt, ipc, uts, pid, user, and net. By
@@ -329,6 +331,7 @@ load path must be adjusted as needed."
329 (false-if-exception 331 (false-if-exception
330 (kill pid SIGKILL)))) 332 (kill pid SIGKILL))))
331 333
334 (process-spawned-hook pid)
332 (match (waitpid pid) 335 (match (waitpid pid)
333 ((_ . status) status)))))) 336 ((_ . status) status))))))
334 337
diff --git a/gnu/build/shepherd.scm b/gnu/build/shepherd.scm
index cf68f2108b7..b32765ed5e4 100644
--- a/gnu/build/shepherd.scm
+++ b/gnu/build/shepherd.scm
@@ -67,16 +67,10 @@
67 (file-system-mapping 67 (file-system-mapping
68 (source "/etc/group") (target source)))) 68 (source "/etc/group") (target source))))
69 69
70 (define nscd-socket
71 (file-system-mapping
72 (source "/var/run/nscd") (target source)
73 (writable? #t)))
74
75 (append (cons (tmpfs "/tmp") %container-file-systems) 70 (append (cons (tmpfs "/tmp") %container-file-systems)
76 (let ((mappings `(,@(if (memq 'net namespaces) 71 (let ((mappings `(,@(if (memq 'net namespaces)
77 '() 72 '()
78 (cons nscd-socket 73 %network-file-mappings)
79 %network-file-mappings))
80 ,@(if (and (memq 'mnt namespaces) 74 ,@(if (and (memq 'mnt namespaces)
81 (not (memq 'user namespaces))) 75 (not (memq 'user namespaces)))
82 accounts 76 accounts
diff --git a/gnu/local.mk b/gnu/local.mk
index ce4510ae4a0..63d55c50184 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -743,6 +743,7 @@ dist_patch_DATA = \
743 %D%/packages/patches/clementine-use-openssl.patch \ 743 %D%/packages/patches/clementine-use-openssl.patch \
744 %D%/packages/patches/clisp-remove-failing-test.patch \ 744 %D%/packages/patches/clisp-remove-failing-test.patch \
745 %D%/packages/patches/clucene-pkgconfig.patch \ 745 %D%/packages/patches/clucene-pkgconfig.patch \
746 %D%/packages/patches/cmake-curl-certificates.patch \
746 %D%/packages/patches/coda-use-system-libs.patch \ 747 %D%/packages/patches/coda-use-system-libs.patch \
747 %D%/packages/patches/combinatorial-blas-awpm.patch \ 748 %D%/packages/patches/combinatorial-blas-awpm.patch \
748 %D%/packages/patches/combinatorial-blas-io-fix.patch \ 749 %D%/packages/patches/combinatorial-blas-io-fix.patch \
@@ -1399,7 +1400,6 @@ dist_patch_DATA = \
1399 %D%/packages/patches/wavpack-CVE-2018-6767.patch \ 1400 %D%/packages/patches/wavpack-CVE-2018-6767.patch \
1400 %D%/packages/patches/wavpack-CVE-2018-7253.patch \ 1401 %D%/packages/patches/wavpack-CVE-2018-7253.patch \
1401 %D%/packages/patches/wavpack-CVE-2018-7254.patch \ 1402 %D%/packages/patches/wavpack-CVE-2018-7254.patch \
1402 %D%/packages/patches/weechat-python.patch \
1403 %D%/packages/patches/wicd-bitrate-none-fix.patch \ 1403 %D%/packages/patches/wicd-bitrate-none-fix.patch \
1404 %D%/packages/patches/wicd-get-selected-profile-fix.patch \ 1404 %D%/packages/patches/wicd-get-selected-profile-fix.patch \
1405 %D%/packages/patches/wicd-urwid-1.3.patch \ 1405 %D%/packages/patches/wicd-urwid-1.3.patch \
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 3e75b73dcbd..2e072deed7b 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -2725,7 +2725,7 @@ tool for remote execution and deployment.")
2725(define-public neofetch 2725(define-public neofetch
2726 (package 2726 (package
2727 (name "neofetch") 2727 (name "neofetch")
2728 (version "6.0.0") 2728 (version "6.1.0")
2729 (source (origin 2729 (source (origin
2730 (method git-fetch) 2730 (method git-fetch)
2731 (uri (git-reference 2731 (uri (git-reference
@@ -2733,7 +2733,7 @@ tool for remote execution and deployment.")
2733 (commit version))) 2733 (commit version)))
2734 (sha256 2734 (sha256
2735 (base32 2735 (base32
2736 "0j0r40llyry1sgc6p9wd7jrpydps2lnj4rwajjp37697g2bik89i")))) 2736 "022xzn9jk18k2f4b6011d8jk5nbl84i3mw3inlz4q52p2hvk8fch"))))
2737 (build-system gnu-build-system) 2737 (build-system gnu-build-system)
2738 (arguments 2738 (arguments
2739 `(#:tests? #f ; there are no tests 2739 `(#:tests? #f ; there are no tests
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index fb9e78bf928..02b4d4ca21d 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -1435,7 +1435,7 @@ of M4RI from F_2 to F_{2^e}.")
1435(define-public eclib 1435(define-public eclib
1436 (package 1436 (package
1437 (name "eclib") 1437 (name "eclib")
1438 (version "20190226") 1438 (version "20190909")
1439 (source (origin 1439 (source (origin
1440 (method git-fetch) 1440 (method git-fetch)
1441 (uri (git-reference 1441 (uri (git-reference
@@ -1444,7 +1444,7 @@ of M4RI from F_2 to F_{2^e}.")
1444 (file-name (git-file-name name version)) 1444 (file-name (git-file-name name version))
1445 (sha256 1445 (sha256
1446 (base32 1446 (base32
1447 "1910np1xzyjzszay24xn4b81qhpsvhp5aix9vdpknplni2mq8kwb")))) 1447 "1gw27lqc3f525n8qdcmr2nyn16y9g10z9f6dnmckyyxcdzvhq35n"))))
1448 (build-system gnu-build-system) 1448 (build-system gnu-build-system)
1449 (native-inputs 1449 (native-inputs
1450 `(("autoconf" ,autoconf) 1450 `(("autoconf" ,autoconf)
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 2bd07cb01d3..e1d7412bfe9 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -3195,24 +3195,28 @@ with support for HD extensions.")
3195(define-public bs1770gain 3195(define-public bs1770gain
3196 (package 3196 (package
3197 (name "bs1770gain") 3197 (name "bs1770gain")
3198 (version "0.5.2") 3198 (version "0.6.0")
3199 (source 3199 (source
3200 (origin 3200 (origin
3201 (method url-fetch) 3201 (method url-fetch)
3202 (uri (string-append "mirror://sourceforge/bs1770gain/bs1770gain/" 3202 (uri (string-append "mirror://sourceforge/bs1770gain/bs1770gain/"
3203 version "/bs1770gain-" version ".tar.gz")) 3203 version "/bs1770gain-" version ".tar.gz"))
3204 (sha256 3204 (sha256
3205 (base32 3205 (base32 "0nnqixvw3x7i22nsr54n4bgm35z9nh3d9qj5s75cfd3ajjsjndyh"))
3206 "1p6yz5q7czyf9ard65sp4kawdlkg40cfscr3b24znymmhs3p7rbk"))
3207 (modules '((guix build utils))) 3206 (modules '((guix build utils)))
3208 (snippet 3207 (snippet
3209 '(begin 3208 '(begin
3210 ;; XXX 3209 ;; XXX
3211 (substitute* "bs1770gain/bs1770gain.c" 3210 (substitute* "libbg/bgx.c"
3212 (("\"N.*\"") "\"\"")) 3211 (("#define BS.* ") "#define BS ")
3213 (substitute* "configure" 3212 (("BS.*NO?.*N.*S.*E.*N.*SE?") "NO")
3214 (("URL=.*$") 3213 (("\"( #|N).*\"") "\"\""))
3215 "https://manpages.debian.org/sid/bs1770gain/bs1770gain.1.en.html\n")))))) 3214 (substitute* (list "config.h"
3215 "configure.ac"
3216 "configure")
3217 (("https?://bs1770gain[^/]*/")
3218 "https://manpages.debian.org/sid/bs1770gain/bs1770gain.1.en.html"))
3219 #t))))
3216 (build-system gnu-build-system) 3220 (build-system gnu-build-system)
3217 (inputs `(("ffmpeg" ,ffmpeg) 3221 (inputs `(("ffmpeg" ,ffmpeg)
3218 ("sox" ,sox))) 3222 ("sox" ,sox)))
diff --git a/gnu/packages/authentication.scm b/gnu/packages/authentication.scm
index 70f2a8c103e..d995ef7e85a 100644
--- a/gnu/packages/authentication.scm
+++ b/gnu/packages/authentication.scm
@@ -1,5 +1,6 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> 2;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
3;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
3;;; 4;;;
4;;; This file is part of GNU Guix. 5;;; This file is part of GNU Guix.
5;;; 6;;;
@@ -18,10 +19,14 @@
18 19
19(define-module (gnu packages authentication) 20(define-module (gnu packages authentication)
20 #:use-module (gnu packages) 21 #:use-module (gnu packages)
22 #:use-module (gnu packages autotools)
23 #:use-module (gnu packages documentation)
21 #:use-module (gnu packages linux) 24 #:use-module (gnu packages linux)
22 #:use-module (gnu packages pkg-config) 25 #:use-module (gnu packages pkg-config)
26 #:use-module (gnu packages security-token)
23 #:use-module (guix build-system gnu) 27 #:use-module (guix build-system gnu)
24 #:use-module (guix download) 28 #:use-module (guix download)
29 #:use-module (guix git-download)
25 #:use-module ((guix licenses) #:prefix license:) 30 #:use-module ((guix licenses) #:prefix license:)
26 #:use-module (guix packages)) 31 #:use-module (guix packages))
27 32
@@ -86,3 +91,39 @@ Supported technologies include the event-based @dfn{HOTP} algorithm (RFC4226)
86and the time-based @dfn{TOTP} algorithm (RFC6238).") 91and the time-based @dfn{TOTP} algorithm (RFC6238).")
87 (license (list license:lgpl2.1+ ; the libraries (liboath/ & libpskc/) 92 (license (list license:lgpl2.1+ ; the libraries (liboath/ & libpskc/)
88 license:gpl3+)))) ; the tools (everything else) 93 license:gpl3+)))) ; the tools (everything else)
94
95(define-public yubico-pam
96 (let ((commit "b5bd00db81e0e0e0ecced65c684080bb56ddc35b")
97 (revision "0"))
98 (package
99 (name "yubico-pam")
100 (version (git-version "2.26" revision commit))
101 (source (origin
102 (method git-fetch)
103 (uri (git-reference
104 (url "https://github.com/Yubico/yubico-pam.git")
105 (commit commit)))
106 (file-name (git-file-name name version))
107 (sha256
108 (base32
109 "10dq8dqi3jldllj6p8r9hldx9sank9n82c44w8akxrs1vli6nj3m"))))
110 (build-system gnu-build-system)
111 (arguments
112 ;; The pam_test fails because ykclient fails to build a Curl handle.
113 '(#:make-flags '("TESTS=util_test")))
114 (inputs
115 `(("linux-pam" ,linux-pam)
116 ("libyubikey" ,libyubikey)
117 ("ykclient" ,ykclient)
118 ("yubikey-personalization" ,yubikey-personalization)))
119 (native-inputs
120 `(("autoconf" ,autoconf)
121 ("automake" ,automake)
122 ("libtool" ,libtool)
123 ("asciidoc" ,asciidoc)
124 ("pkg-config" ,pkg-config)))
125 (home-page "https://developers.yubico.com/yubico-pam")
126 (synopsis "Yubico pluggable authentication module")
127 (description "The Yubico PAM module provides an easy way to integrate the
128YubiKey into your existing user authentication infrastructure.")
129 (license license:bsd-2))))
diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index 37cd51d16c3..7ca6788dd8f 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -50,21 +50,14 @@
50 (version "1.4.0") 50 (version "1.4.0")
51 (source (origin 51 (source (origin
52 (method url-fetch) 52 (method url-fetch)
53 ;; We cannot use bioconductor-uri here because this tarball is 53 (uri (bioconductor-uri "BSgenome.Celegans.UCSC.ce6"
54 ;; located under "data/annotation/" instead of "bioc/". 54 version 'annotation))
55 (uri (string-append "https://www.bioconductor.org/packages/"
56 "release/data/annotation/src/contrib/"
57 "BSgenome.Celegans.UCSC.ce6_"
58 version ".tar.gz"))
59 (sha256 55 (sha256
60 (base32 56 (base32
61 "0mqzb353xv2c3m3vkb315dkmnxkgczp7ndnknyhpgjlybyf715v9")))) 57 "0mqzb353xv2c3m3vkb315dkmnxkgczp7ndnknyhpgjlybyf715v9"))))
62 (properties 58 (properties
63 `((upstream-name . "BSgenome.Celegans.UCSC.ce6"))) 59 `((upstream-name . "BSgenome.Celegans.UCSC.ce6")))
64 (build-system r-build-system) 60 (build-system r-build-system)
65 ;; As this package provides little more than a very large data file it
66 ;; doesn't make sense to build substitutes.
67 (arguments `(#:substitutable? #f))
68 (propagated-inputs 61 (propagated-inputs
69 `(("r-bsgenome" ,r-bsgenome))) 62 `(("r-bsgenome" ,r-bsgenome)))
70 (home-page 63 (home-page
@@ -817,6 +810,28 @@ annotations.")
817Disease Ontology.") 810Disease Ontology.")
818 (license license:artistic2.0))) 811 (license license:artistic2.0)))
819 812
813(define-public r-pfam-db
814 (package
815 (name "r-pfam-db")
816 (version "3.8.2")
817 (source
818 (origin
819 (method url-fetch)
820 (uri (bioconductor-uri "PFAM.db" version 'annotation))
821 (sha256
822 (base32
823 "0rn1arzzcniy3yyc4yc44vn40g0cqss37dhwnvsgxpfayqq1k59s"))))
824 (properties `((upstream-name . "PFAM.db")))
825 (build-system r-build-system)
826 (propagated-inputs
827 `(("r-annotationdbi" ,r-annotationdbi)))
828 (home-page "https://bioconductor.org/packages/PFAM.db")
829 (synopsis "Set of protein ID mappings for PFAM")
830 (description
831 "This package provides a set of protein ID mappings for PFAM, assembled
832using data from public repositories.")
833 (license license:artistic2.0)))
834
820 835
821;;; Experiment data 836;;; Experiment data
822 837
@@ -942,6 +957,29 @@ jointly normalized data that are available here. The data are presented in
942the form of an @code{exprSet} object.") 957the form of an @code{exprSet} object.")
943 (license license:artistic2.0))) 958 (license license:artistic2.0)))
944 959
960(define-public r-affydata
961 (package
962 (name "r-affydata")
963 (version "1.32.0")
964 (source
965 (origin
966 (method url-fetch)
967 (uri (bioconductor-uri "affydata" version 'experiment))
968 (sha256
969 (base32
970 "1l9qhmjqgbrdl9cmd74rlnvmvr6mslbmckb83n0211whp2i0b7h5"))))
971 (properties `((upstream-name . "affydata")))
972 (build-system r-build-system)
973 (propagated-inputs
974 `(("r-affy" ,r-affy)))
975 (home-page "https://bioconductor.org/packages/affydata/")
976 (synopsis "Affymetrix data for demonstration purposes")
977 (description
978 "This package provides example datasets that represent 'real world
979examples' of Affymetrix data, unlike the artificial examples included in the
980package @code{affy}.")
981 (license license:gpl2+)))
982
945 983
946;;; Packages 984;;; Packages
947 985
@@ -965,6 +1003,147 @@ the form of an @code{exprSet} object.")
965packages.") 1003packages.")
966 (license license:artistic2.0))) 1004 (license license:artistic2.0)))
967 1005
1006(define-public r-affycomp
1007 (package
1008 (name "r-affycomp")
1009 (version "1.60.0")
1010 (source
1011 (origin
1012 (method url-fetch)
1013 (uri (bioconductor-uri "affycomp" version))
1014 (sha256
1015 (base32
1016 "1nijqljg5r3qj1y6an0i58sby76hqacj3a3nvainxic4n5wlzh0n"))))
1017 (properties `((upstream-name . "affycomp")))
1018 (build-system r-build-system)
1019 (propagated-inputs `(("r-biobase" ,r-biobase)))
1020 (home-page "https://bioconductor.org/packages/affycomp/")
1021 (synopsis "Graphics toolbox for assessment of Affymetrix expression measures")
1022 (description
1023 "The package contains functions that can be used to compare expression
1024measures for Affymetrix Oligonucleotide Arrays.")
1025 (license license:gpl2+)))
1026
1027(define-public r-affycompatible
1028 (package
1029 (name "r-affycompatible")
1030 (version "1.44.0")
1031 (source
1032 (origin
1033 (method url-fetch)
1034 (uri (bioconductor-uri "AffyCompatible" version))
1035 (sha256
1036 (base32
1037 "1zi96qa6vkgwvvy5cn6c3p1kbfsaz74zsw2kjxarz5qs744f0xvs"))))
1038 (properties
1039 `((upstream-name . "AffyCompatible")))
1040 (build-system r-build-system)
1041 (propagated-inputs
1042 `(("r-biostrings" ,r-biostrings)
1043 ("r-rcurl" ,r-rcurl)
1044 ("r-xml" ,r-xml)))
1045 (home-page "https://bioconductor.org/packages/AffyCompatible/")
1046 (synopsis "Work with Affymetrix GeneChip files")
1047 (description
1048 "This package provides an interface to Affymetrix chip annotation and
1049sample attribute files. The package allows an easy way for users to download
1050and manage local data bases of Affynmetrix NetAffx annotation files. It also
1051provides access to @dfn{GeneChip Operating System} (GCOS) and @dfn{GeneChip
1052Command Console} (AGCC)-compatible sample annotation files.")
1053 (license license:artistic2.0)))
1054
1055(define-public r-affycontam
1056 (package
1057 (name "r-affycontam")
1058 (version "1.42.0")
1059 (source
1060 (origin
1061 (method url-fetch)
1062 (uri (bioconductor-uri "affyContam" version))
1063 (sha256
1064 (base32
1065 "0nzk1cm26rhmym753wyhn35hqnz5lvavi3i5qfgdvhxgjy3m1jgp"))))
1066 (properties `((upstream-name . "affyContam")))
1067 (build-system r-build-system)
1068 (propagated-inputs
1069 `(("r-affy" ,r-affy)
1070 ("r-affydata" ,r-affydata)
1071 ("r-biobase" ,r-biobase)))
1072 (home-page "https://bioconductor.org/packages/affyContam/")
1073 (synopsis "Structured corruption of Affymetrix CEL file data")
1074 (description
1075 "Microarray quality assessment is a major concern of microarray analysts.
1076This package provides some simple approaches to in silico creation of quality
1077problems in CEL-level data to help evaluate performance of quality metrics.")
1078 (license license:artistic2.0)))
1079
1080(define-public r-affycoretools
1081 (package
1082 (name "r-affycoretools")
1083 (version "1.56.0")
1084 (source
1085 (origin
1086 (method url-fetch)
1087 (uri (bioconductor-uri "affycoretools" version))
1088 (sha256
1089 (base32
1090 "17dxpzhwwdwnxkdpmyjwdnacg41hw60mlc71w4nzlvs28sfsy09s"))))
1091 (properties `((upstream-name . "affycoretools")))
1092 (build-system r-build-system)
1093 (propagated-inputs
1094 `(("r-affy" ,r-affy)
1095 ("r-annotationdbi" ,r-annotationdbi)
1096 ("r-biobase" ,r-biobase)
1097 ("r-biocgenerics" ,r-biocgenerics)
1098 ("r-dbi" ,r-dbi)
1099 ("r-edger" ,r-edger)
1100 ("r-gcrma" ,r-gcrma)
1101 ("r-ggplot2" ,r-ggplot2)
1102 ("r-gostats" ,r-gostats)
1103 ("r-gplots" ,r-gplots)
1104 ("r-hwriter" ,r-hwriter)
1105 ("r-lattice" ,r-lattice)
1106 ("r-limma" ,r-limma)
1107 ("r-oligoclasses" ,r-oligoclasses)
1108 ("r-reportingtools" ,r-reportingtools)
1109 ("r-rsqlite" ,r-rsqlite)
1110 ("r-s4vectors" ,r-s4vectors)
1111 ("r-xtable" ,r-xtable)))
1112 (home-page "https://bioconductor.org/packages/affycoretools/")
1113 (synopsis "Functions for analyses with Affymetrix GeneChips")
1114 (description
1115 "This package provides various wrapper functions that have been written
1116to streamline the more common analyses that a Biostatistician might see.")
1117 (license license:artistic2.0)))
1118
1119(define-public r-affxparser
1120 (package
1121 (name "r-affxparser")
1122 (version "1.56.0")
1123 (source
1124 (origin
1125 (method url-fetch)
1126 (uri (bioconductor-uri "affxparser" version))
1127 (sha256
1128 (base32
1129 "1jv7k9pn4c7szi3ma2f2xsd58pkrkvjpk5wra73r6kc607qgrv33"))))
1130 (properties `((upstream-name . "affxparser")))
1131 (build-system r-build-system)
1132 (home-page "https://github.com/HenrikBengtsson/affxparser")
1133 (synopsis "Affymetrix File Parsing SDK")
1134 (description
1135 "This is a package for parsing Affymetrix files (CDF, CEL, CHP, BPMAP,
1136BAR). It provides methods for fast and memory efficient parsing of Affymetrix
1137files using the Affymetrix' Fusion SDK. Both ASCII- and binary-based files
1138are supported. Currently, there are methods for reading @dfn{chip definition
1139file} (CDF) and a @dfn{cell intensity file} (CEL). These files can be read
1140either in full or in part. For example, probe signals from a few probesets
1141can be extracted very quickly from a set of CEL files into a convenient list
1142structure.")
1143 ;; The Fusion SDK contains files under GPLv2 and LGPLv2.1. The R code is
1144 ;; under LGPLv2+.
1145 (license (list license:lgpl2.0+ license:lgpl2.1 license:gpl2))))
1146
968(define-public r-annotate 1147(define-public r-annotate
969 (package 1148 (package
970 (name "r-annotate") 1149 (name "r-annotate")
@@ -1013,14 +1192,14 @@ the Human Protein Atlas project.")
1013(define-public r-regioner 1192(define-public r-regioner
1014 (package 1193 (package
1015 (name "r-regioner") 1194 (name "r-regioner")
1016 (version "1.16.2") 1195 (version "1.16.4")
1017 (source 1196 (source
1018 (origin 1197 (origin
1019 (method url-fetch) 1198 (method url-fetch)
1020 (uri (bioconductor-uri "regioneR" version)) 1199 (uri (bioconductor-uri "regioneR" version))
1021 (sha256 1200 (sha256
1022 (base32 1201 (base32
1023 "1b8ybx4wcxlqw9nvajawsf0lqaqn9v89rxcawg4g3dbzlfssfc5q")))) 1202 "0xzk057h6nkr3rvd412prxgnkpq625b90laj1kwb0i5q8j5ch760"))))
1024 (properties `((upstream-name . "regioneR"))) 1203 (properties `((upstream-name . "regioneR")))
1025 (build-system r-build-system) 1204 (build-system r-build-system)
1026 (propagated-inputs 1205 (propagated-inputs
@@ -1039,6 +1218,54 @@ customizable permutation tests to assess the association between genomic
1039region sets and other genomic features.") 1218region sets and other genomic features.")
1040 (license license:artistic2.0))) 1219 (license license:artistic2.0)))
1041 1220
1221(define-public r-reportingtools
1222 (package
1223 (name "r-reportingtools")
1224 (version "2.24.0")
1225 (source
1226 (origin
1227 (method url-fetch)
1228 (uri (bioconductor-uri "ReportingTools" version))
1229 (sha256
1230 (base32
1231 "16ska7mlacka0xi8x2icy8v42vaxccb3a1x73szmfvcrwr592qsc"))))
1232 (properties
1233 `((upstream-name . "ReportingTools")))
1234 (build-system r-build-system)
1235 (propagated-inputs
1236 `(("r-annotate" ,r-annotate)
1237 ("r-annotationdbi" ,r-annotationdbi)
1238 ("r-biobase" ,r-biobase)
1239 ("r-biocgenerics" ,r-biocgenerics)
1240 ("r-category" ,r-category)
1241 ("r-deseq2" ,r-deseq2)
1242 ("r-edger" ,r-edger)
1243 ("r-ggbio" ,r-ggbio)
1244 ("r-ggplot2" ,r-ggplot2)
1245 ("r-gostats" ,r-gostats)
1246 ("r-gseabase" ,r-gseabase)
1247 ("r-hwriter" ,r-hwriter)
1248 ("r-iranges" ,r-iranges)
1249 ("r-knitr" ,r-knitr)
1250 ("r-lattice" ,r-lattice)
1251 ("r-limma" ,r-limma)
1252 ("r-pfam-db" ,r-pfam-db)
1253 ("r-r-utils" ,r-r-utils)
1254 ("r-xml" ,r-xml)))
1255 (home-page "https://bioconductor.org/packages/ReportingTools/")
1256 (synopsis "Tools for making reports in various formats")
1257 (description
1258 "The ReportingTools package enables users to easily display reports of
1259analysis results generated from sources such as microarray and sequencing
1260data. The package allows users to create HTML pages that may be viewed on a
1261web browser, or in other formats. Users can generate tables with sortable and
1262filterable columns, make and display plots, and link table entries to other
1263data sources such as NCBI or larger plots within the HTML page. Using the
1264package, users can also produce a table of contents page to link various
1265reports together for a particular project that can be viewed in a web
1266browser.")
1267 (license license:artistic2.0)))
1268
1042(define-public r-geneplotter 1269(define-public r-geneplotter
1043 (package 1270 (package
1044 (name "r-geneplotter") 1271 (name "r-geneplotter")
@@ -1064,6 +1291,75 @@ region sets and other genomic features.")
1064 "This package provides functions for plotting genomic data.") 1291 "This package provides functions for plotting genomic data.")
1065 (license license:artistic2.0))) 1292 (license license:artistic2.0)))
1066 1293
1294(define-public r-oligoclasses
1295 (package
1296 (name "r-oligoclasses")
1297 (version "1.46.0")
1298 (source
1299 (origin
1300 (method url-fetch)
1301 (uri (bioconductor-uri "oligoClasses" version))
1302 (sha256
1303 (base32
1304 "0z86zrmn80kcy6fgb9i9zs82vhim73n8hlkqy7y8sbb2jwksdr72"))))
1305 (properties `((upstream-name . "oligoClasses")))
1306 (build-system r-build-system)
1307 (propagated-inputs
1308 `(("r-affyio" ,r-affyio)
1309 ("r-biobase" ,r-biobase)
1310 ("r-biocgenerics" ,r-biocgenerics)
1311 ("r-biocmanager" ,r-biocmanager)
1312 ("r-biostrings" ,r-biostrings)
1313 ("r-dbi" ,r-dbi)
1314 ("r-ff" ,r-ff)
1315 ("r-foreach" ,r-foreach)
1316 ("r-genomicranges" ,r-genomicranges)
1317 ("r-iranges" ,r-iranges)
1318 ("r-rsqlite" ,r-rsqlite)
1319 ("r-s4vectors" ,r-s4vectors)
1320 ("r-summarizedexperiment" ,r-summarizedexperiment)))
1321 (home-page "https://bioconductor.org/packages/oligoClasses/")
1322 (synopsis "Classes for high-throughput arrays")
1323 (description
1324 "This package contains class definitions, validity checks, and
1325initialization methods for classes used by the @code{oligo} and @code{crlmm}
1326packages.")
1327 (license license:gpl2+)))
1328
1329(define-public r-oligo
1330 (package
1331 (name "r-oligo")
1332 (version "1.48.0")
1333 (source
1334 (origin
1335 (method url-fetch)
1336 (uri (bioconductor-uri "oligo" version))
1337 (sha256
1338 (base32
1339 "0qkyz65zvry0syibjkvkshwijccna18jy0hlib0n5x4c8x9zs5df"))))
1340 (properties `((upstream-name . "oligo")))
1341 (build-system r-build-system)
1342 (inputs `(("zlib" ,zlib)))
1343 (propagated-inputs
1344 `(("r-affxparser" ,r-affxparser)
1345 ("r-affyio" ,r-affyio)
1346 ("r-biobase" ,r-biobase)
1347 ("r-biocgenerics" ,r-biocgenerics)
1348 ("r-biostrings" ,r-biostrings)
1349 ("r-dbi" ,r-dbi)
1350 ("r-ff" ,r-ff)
1351 ("r-oligoclasses" ,r-oligoclasses)
1352 ("r-preprocesscore" ,r-preprocesscore)
1353 ("r-rsqlite" ,r-rsqlite)
1354 ("r-zlibbioc" ,r-zlibbioc)))
1355 (home-page "https://bioconductor.org/packages/oligo/")
1356 (synopsis "Preprocessing tools for oligonucleotide arrays")
1357 (description
1358 "This package provides a package to analyze oligonucleotide
1359arrays (expression/SNP/tiling/exon) at probe-level. It currently supports
1360Affymetrix (CEL files) and NimbleGen arrays (XYS files).")
1361 (license license:lgpl2.0+)))
1362
1067(define-public r-qvalue 1363(define-public r-qvalue
1068 (package 1364 (package
1069 (name "r-qvalue") 1365 (name "r-qvalue")
@@ -3895,14 +4191,14 @@ analysis.")
3895(define-public r-gtrellis 4191(define-public r-gtrellis
3896 (package 4192 (package
3897 (name "r-gtrellis") 4193 (name "r-gtrellis")
3898 (version "1.16.0") 4194 (version "1.16.1")
3899 (source 4195 (source
3900 (origin 4196 (origin
3901 (method url-fetch) 4197 (method url-fetch)
3902 (uri (bioconductor-uri "gtrellis" version)) 4198 (uri (bioconductor-uri "gtrellis" version))
3903 (sha256 4199 (sha256
3904 (base32 4200 (base32
3905 "00d5swg3brnx8ryzpg7hp3mg9hx3vz4yd1lv2chlp2pj2rhsir1y")))) 4201 "069hln9vflyxic24bxrlmdmz9h3jdd2qaqy898rgk5bn0gqwcjix"))))
3906 (build-system r-build-system) 4202 (build-system r-build-system)
3907 (propagated-inputs 4203 (propagated-inputs
3908 `(("r-circlize" ,r-circlize) 4204 `(("r-circlize" ,r-circlize)
@@ -4888,14 +5184,14 @@ annotations.")
4888(define-public r-rsubread 5184(define-public r-rsubread
4889 (package 5185 (package
4890 (name "r-rsubread") 5186 (name "r-rsubread")
4891 (version "1.34.6") 5187 (version "1.34.7")
4892 (source 5188 (source
4893 (origin 5189 (origin
4894 (method url-fetch) 5190 (method url-fetch)
4895 (uri (bioconductor-uri "Rsubread" version)) 5191 (uri (bioconductor-uri "Rsubread" version))
4896 (sha256 5192 (sha256
4897 (base32 5193 (base32
4898 "0nnfh4hnrs5kd72m8c50cidbsxjz12szw2vynpmg8q0wpd99q550")))) 5194 "0z4ydk9296bp76ah5y6a7za5jyn4h238xngb789zragly902x83y"))))
4899 (properties `((upstream-name . "Rsubread"))) 5195 (properties `((upstream-name . "Rsubread")))
4900 (build-system r-build-system) 5196 (build-system r-build-system)
4901 (inputs `(("zlib" ,zlib))) 5197 (inputs `(("zlib" ,zlib)))
@@ -5047,14 +5343,14 @@ self-organizing map clustering and minimal spanning trees.")
5047(define-public r-mixomics 5343(define-public r-mixomics
5048 (package 5344 (package
5049 (name "r-mixomics") 5345 (name "r-mixomics")
5050 (version "6.8.2") 5346 (version "6.8.4")
5051 (source 5347 (source
5052 (origin 5348 (origin
5053 (method url-fetch) 5349 (method url-fetch)
5054 (uri (bioconductor-uri "mixOmics" version)) 5350 (uri (bioconductor-uri "mixOmics" version))
5055 (sha256 5351 (sha256
5056 (base32 5352 (base32
5057 "0issfrhsgc102sr33q9v6w6jrrd32plig7szd1nm0n4r3yn4y2fc")))) 5353 "0lw4c9lxcm83xrvl4y120i1z710qjbdqginhrw738azpr1f82hcg"))))
5058 (properties `((upstream-name . "mixOmics"))) 5354 (properties `((upstream-name . "mixOmics")))
5059 (build-system r-build-system) 5355 (build-system r-build-system)
5060 (propagated-inputs 5356 (propagated-inputs
@@ -5466,3 +5762,288 @@ with multiple R processes supported by the package @code{parallel}.")
5466 "This package provides methods for working with Illumina arrays using the 5762 "This package provides methods for working with Illumina arrays using the
5467@code{gdsfmt} package.") 5763@code{gdsfmt} package.")
5468 (license license:gpl3))) 5764 (license license:gpl3)))
5765
5766(define-public r-seqbias
5767 (package
5768 (name "r-seqbias")
5769 (version "1.32.0")
5770 (source
5771 (origin
5772 (method url-fetch)
5773 (uri (bioconductor-uri "seqbias" version))
5774 (sha256
5775 (base32
5776 "1pk97jsq0rxijsdm5wnmlw79mhy19skdq1h3mmfbdjh560md47lw"))))
5777 (properties `((upstream-name . "seqbias")))
5778 (build-system r-build-system)
5779 (propagated-inputs
5780 `(("r-biostrings" ,r-biostrings)
5781 ("r-genomicranges" ,r-genomicranges)
5782 ("r-rhtslib" ,r-rhtslib)))
5783 (inputs
5784 `(("zlib" ,zlib))) ; This comes from rhtslib.
5785 (home-page "https://bioconductor.org/packages/seqbias/")
5786 (synopsis "Estimation of per-position bias in high-throughput sequencing data")
5787 (description
5788 "This package implements a model of per-position sequencing bias in
5789high-throughput sequencing data using a simple Bayesian network, the structure
5790and parameters of which are trained on a set of aligned reads and a reference
5791genome sequence.")
5792 (license license:lgpl3)))
5793
5794(define-public r-reqon
5795 (package
5796 (name "r-reqon")
5797 (version "1.30.0")
5798 (source
5799 (origin
5800 (method url-fetch)
5801 (uri (bioconductor-uri "ReQON" version))
5802 (sha256
5803 (base32
5804 "04bljr8vgb9z9800d9v8w7a4rvjkwq48zd8n5divq30zj9k2na7a"))))
5805 (properties `((upstream-name . "ReQON")))
5806 (build-system r-build-system)
5807 (propagated-inputs
5808 `(("r-rjava" ,r-rjava)
5809 ("r-rsamtools" ,r-rsamtools)
5810 ("r-seqbias" ,r-seqbias)))
5811 (home-page "https://bioconductor.org/packages/ReQON/")
5812 (synopsis "Recalibrating quality of nucleotides")
5813 (description
5814 "This package provides an implementation of an algorithm for
5815recalibrating the base quality scores for aligned sequencing data in BAM
5816format.")
5817 (license license:gpl2)))
5818
5819(define-public r-wavcluster
5820 (package
5821 (name "r-wavcluster")
5822 (version "2.18.0")
5823 (source
5824 (origin
5825 (method url-fetch)
5826 (uri (bioconductor-uri "wavClusteR" version))
5827 (sha256
5828 (base32
5829 "02i53dskirzr9nls3dsmv7dqhvy3vikkpx7247zpy2qd9r5yvhy2"))))
5830 (properties `((upstream-name . "wavClusteR")))
5831 (build-system r-build-system)
5832 (propagated-inputs
5833 `(("r-biocgenerics" ,r-biocgenerics)
5834 ("r-biostrings" ,r-biostrings)
5835 ("r-foreach" ,r-foreach)
5836 ("r-genomicfeatures" ,r-genomicfeatures)
5837 ("r-genomicranges" ,r-genomicranges)
5838 ("r-ggplot2" ,r-ggplot2)
5839 ("r-hmisc" ,r-hmisc)
5840 ("r-iranges" ,r-iranges)
5841 ("r-mclust" ,r-mclust)
5842 ("r-rsamtools" ,r-rsamtools)
5843 ("r-rtracklayer" ,r-rtracklayer)
5844 ("r-s4vectors" ,r-s4vectors)
5845 ("r-seqinr" ,r-seqinr)
5846 ("r-stringr" ,r-stringr)
5847 ("r-wmtsa" ,r-wmtsa)))
5848 (home-page "https://bioconductor.org/packages/wavClusteR/")
5849 (synopsis "Identification of RNA-protein interaction sites in PAR-CLIP data")
5850 (description
5851 "This package provides an integrated pipeline for the analysis of
5852PAR-CLIP data. PAR-CLIP-induced transitions are first discriminated from
5853sequencing errors, SNPs and additional non-experimental sources by a non-
5854parametric mixture model. The protein binding sites (clusters) are then
5855resolved at high resolution and cluster statistics are estimated using a
5856rigorous Bayesian framework. Post-processing of the results, data export for
5857UCSC genome browser visualization and motif search analysis are provided. In
5858addition, the package allows to integrate RNA-Seq data to estimate the False
5859Discovery Rate of cluster detection. Key functions support parallel multicore
5860computing. While wavClusteR was designed for PAR-CLIP data analysis, it can
5861be applied to the analysis of other NGS data obtained from experimental
5862procedures that induce nucleotide substitutions (e.g. BisSeq).")
5863 (license license:gpl2)))
5864
5865(define-public r-timeseriesexperiment
5866 (package
5867 (name "r-timeseriesexperiment")
5868 (version "1.2.0")
5869 (source
5870 (origin
5871 (method url-fetch)
5872 (uri (bioconductor-uri "TimeSeriesExperiment" version))
5873 (sha256
5874 (base32
5875 "1j11g7a2p0yk38fx6wd6152l1xynghj01pfxihalw601jwf1bl0y"))))
5876 (properties
5877 `((upstream-name . "TimeSeriesExperiment")))
5878 (build-system r-build-system)
5879 (propagated-inputs
5880 `(("r-deseq2" ,r-deseq2)
5881 ("r-dplyr" ,r-dplyr)
5882 ("r-dynamictreecut" ,r-dynamictreecut)
5883 ("r-edger" ,r-edger)
5884 ("r-ggplot2" ,r-ggplot2)
5885 ("r-hmisc" ,r-hmisc)
5886 ("r-limma" ,r-limma)
5887 ("r-magrittr" ,r-magrittr)
5888 ("r-proxy" ,r-proxy)
5889 ("r-s4vectors" ,r-s4vectors)
5890 ("r-summarizedexperiment" ,r-summarizedexperiment)
5891 ("r-tibble" ,r-tibble)
5892 ("r-tidyr" ,r-tidyr)
5893 ("r-vegan" ,r-vegan)
5894 ("r-viridis" ,r-viridis)))
5895 (home-page "https://github.com/nlhuong/TimeSeriesExperiment/")
5896 (synopsis "Analysis for short time-series data")
5897 (description
5898 "This package is a visualization and analysis toolbox for short time
5899course data which includes dimensionality reduction, clustering, two-sample
5900differential expression testing and gene ranking techniques. The package also
5901provides methods for retrieving enriched pathways.")
5902 (license license:lgpl3+)))
5903
5904(define-public r-variantfiltering
5905 (package
5906 (name "r-variantfiltering")
5907 (version "1.20.0")
5908 (source
5909 (origin
5910 (method url-fetch)
5911 (uri (bioconductor-uri "VariantFiltering" version))
5912 (sha256
5913 (base32
5914 "0vpghxacqcbaxx2scb5gfhcmfpw1lkls7h6qnbwbnmjwy01q2p17"))))
5915 (properties
5916 `((upstream-name . "VariantFiltering")))
5917 (build-system r-build-system)
5918 (propagated-inputs
5919 `(("r-annotationdbi" ,r-annotationdbi)
5920 ("r-biobase" ,r-biobase)
5921 ("r-biocgenerics" ,r-biocgenerics)
5922 ("r-biocparallel" ,r-biocparallel)
5923 ("r-biostrings" ,r-biostrings)
5924 ("r-bsgenome" ,r-bsgenome)
5925 ("r-dt" ,r-dt)
5926 ("r-genomeinfodb" ,r-genomeinfodb)
5927 ("r-genomicfeatures" ,r-genomicfeatures)
5928 ("r-genomicranges" ,r-genomicranges)
5929 ("r-genomicscores" ,r-genomicscores)
5930 ("r-graph" ,r-graph)
5931 ("r-gviz" ,r-gviz)
5932 ("r-iranges" ,r-iranges)
5933 ("r-rbgl" ,r-rbgl)
5934 ("r-rsamtools" ,r-rsamtools)
5935 ("r-s4vectors" ,r-s4vectors)
5936 ("r-shiny" ,r-shiny)
5937 ("r-shinyjs" ,r-shinyjs)
5938 ("r-shinythemes" ,r-shinythemes)
5939 ("r-shinytree" ,r-shinytree)
5940 ("r-summarizedexperiment" ,r-summarizedexperiment)
5941 ("r-variantannotation" ,r-variantannotation)
5942 ("r-xvector" ,r-xvector)))
5943 (home-page "https://github.com/rcastelo/VariantFiltering")
5944 (synopsis "Filtering of coding and non-coding genetic variants")
5945 (description
5946 "Filter genetic variants using different criteria such as inheritance
5947model, amino acid change consequence, minor allele frequencies across human
5948populations, splice site strength, conservation, etc.")
5949 (license license:artistic2.0)))
5950
5951(define-public r-genomegraphs
5952 (package
5953 (name "r-genomegraphs")
5954 (version "1.44.0")
5955 (source
5956 (origin
5957 (method url-fetch)
5958 (uri (bioconductor-uri "GenomeGraphs" version))
5959 (sha256
5960 (base32
5961 "026skcn2cqchlzaqsnk11gb8d8aq1rz7lrnx4mmsba234mh4j7kd"))))
5962 (properties `((upstream-name . "GenomeGraphs")))
5963 (build-system r-build-system)
5964 (propagated-inputs
5965 `(("r-biomart" ,r-biomart)))
5966 (home-page "https://bioconductor.org/packages/GenomeGraphs/")
5967 (synopsis "Plotting genomic information from Ensembl")
5968 (description
5969 "Genomic data analyses requires integrated visualization of known genomic
5970information and new experimental data. GenomeGraphs uses the biomaRt package
5971to perform live annotation queries to Ensembl and translates this to e.g.
5972gene/transcript structures in viewports of the grid graphics package. This
5973results in genomic information plotted together with your data. Another
5974strength of GenomeGraphs is to plot different data types such as array CGH,
5975gene expression, sequencing and other data, together in one plot using the
5976same genome coordinate system.")
5977 (license license:artistic2.0)))
5978
5979(define-public r-wavetiling
5980 (package
5981 (name "r-wavetiling")
5982 (version "1.26.0")
5983 (source
5984 (origin
5985 (method url-fetch)
5986 (uri (bioconductor-uri "waveTiling" version))
5987 (sha256
5988 (base32
5989 "0l0saa0myabpq2rl9dq70zff8jpxr3mkanxlj65hc41f0m5xllir"))))
5990 (properties `((upstream-name . "waveTiling")))
5991 (build-system r-build-system)
5992 (propagated-inputs
5993 `(("r-affy" ,r-affy)
5994 ("r-biobase" ,r-biobase)
5995 ("r-biostrings" ,r-biostrings)
5996 ("r-genomegraphs" ,r-genomegraphs)
5997 ("r-genomicranges" ,r-genomicranges)
5998 ("r-iranges" ,r-iranges)
5999 ("r-oligo" ,r-oligo)
6000 ("r-oligoclasses" ,r-oligoclasses)
6001 ("r-preprocesscore" ,r-preprocesscore)
6002 ("r-waveslim" ,r-waveslim)))
6003 (home-page "https://r-forge.r-project.org/projects/wavetiling/")
6004 (synopsis "Wavelet-based models for tiling array transcriptome analysis")
6005 (description
6006 "This package is designed to conduct transcriptome analysis for tiling
6007arrays based on fast wavelet-based functional models.")
6008 (license license:gpl2+)))
6009
6010(define-public r-variancepartition
6011 (package
6012 (name "r-variancepartition")
6013 (version "1.14.0")
6014 (source
6015 (origin
6016 (method url-fetch)
6017 (uri (bioconductor-uri "variancePartition" version))
6018 (sha256
6019 (base32
6020 "1ycapwb2mq57xibrzzjz9zwxqz4nwz9f3n5gskhlr5vcs7irkjd6"))))
6021 (properties
6022 `((upstream-name . "variancePartition")))
6023 (build-system r-build-system)
6024 (propagated-inputs
6025 `(("r-biobase" ,r-biobase)
6026 ("r-colorramps" ,r-colorramps)
6027 ("r-doparallel" ,r-doparallel)
6028 ("r-foreach" ,r-foreach)
6029 ("r-ggplot2" ,r-ggplot2)
6030 ("r-gplots" ,r-gplots)
6031 ("r-iterators" ,r-iterators)
6032 ("r-limma" ,r-limma)
6033 ("r-lme4" ,r-lme4)
6034 ("r-lmertest" ,r-lmertest)
6035 ("r-mass" ,r-mass)
6036 ("r-pbkrtest" ,r-pbkrtest)
6037 ("r-progress" ,r-progress)
6038 ("r-reshape2" ,r-reshape2)
6039 ("r-scales" ,r-scales)))
6040 (home-page "https://bioconductor.org/packages/variancePartition/")
6041 (synopsis "Analyze variation in gene expression experiments")
6042 (description
6043 "This is a package providing tools to quantify and interpret multiple
6044sources of biological and technical variation in gene expression experiments.
6045It uses a linear mixed model to quantify variation in gene expression
6046attributable to individual, tissue, time point, or technical variables. The
6047package includes dream differential expression analysis for repeated
6048measures.")
6049 (license license:gpl2+)))
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index e158bd3af76..34289501fc7 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -7340,13 +7340,13 @@ checks on R packages that are to be submitted to the Bioconductor repository.")
7340(define-public r-s4vectors 7340(define-public r-s4vectors
7341 (package 7341 (package
7342 (name "r-s4vectors") 7342 (name "r-s4vectors")
7343 (version "0.22.0") 7343 (version "0.22.1")
7344 (source (origin 7344 (source (origin
7345 (method url-fetch) 7345 (method url-fetch)
7346 (uri (bioconductor-uri "S4Vectors" version)) 7346 (uri (bioconductor-uri "S4Vectors" version))
7347 (sha256 7347 (sha256
7348 (base32 7348 (base32
7349 "1wkqmpy0d0fab9bjfc7i5wh2zng75pg9rn9c1z1lkki7fpwaw2jb")))) 7349 "0cpxqb18wd3pjd7bi8lry13sm5ffqahcvvxpk5pwm5xcj30cdlm9"))))
7350 (properties 7350 (properties
7351 `((upstream-name . "S4Vectors"))) 7351 `((upstream-name . "S4Vectors")))
7352 (build-system r-build-system) 7352 (build-system r-build-system)
@@ -7447,13 +7447,13 @@ names in their natural, rather than lexicographic, order.")
7447(define-public r-edger 7447(define-public r-edger
7448 (package 7448 (package
7449 (name "r-edger") 7449 (name "r-edger")
7450 (version "3.26.7") 7450 (version "3.26.8")
7451 (source (origin 7451 (source (origin
7452 (method url-fetch) 7452 (method url-fetch)
7453 (uri (bioconductor-uri "edgeR" version)) 7453 (uri (bioconductor-uri "edgeR" version))
7454 (sha256 7454 (sha256
7455 (base32 7455 (base32
7456 "1xbhb8aa1ygm5crkp1bmqs2x1601ppa2kgc2xlf2zh8jj8zqapg8")))) 7456 "1wwimzviy2vklp80faz7sbbp74qcw2csbmlfgvzj7b785vwarpwg"))))
7457 (properties `((upstream-name . "edgeR"))) 7457 (properties `((upstream-name . "edgeR")))
7458 (build-system r-build-system) 7458 (build-system r-build-system)
7459 (propagated-inputs 7459 (propagated-inputs
@@ -7569,13 +7569,13 @@ different technologies, including microarrays, RNA-seq, and quantitative PCR.")
7569(define-public r-genomicranges 7569(define-public r-genomicranges
7570 (package 7570 (package
7571 (name "r-genomicranges") 7571 (name "r-genomicranges")
7572 (version "1.36.0") 7572 (version "1.36.1")
7573 (source (origin 7573 (source (origin
7574 (method url-fetch) 7574 (method url-fetch)
7575 (uri (bioconductor-uri "GenomicRanges" version)) 7575 (uri (bioconductor-uri "GenomicRanges" version))
7576 (sha256 7576 (sha256
7577 (base32 7577 (base32
7578 "1285fr8qjd7d0ixpv7d5imi0n6wzc4k6yia1rkmig71qd2gg556k")))) 7578 "1yid84gn0052v52h84685lvk854grl1wl65psmlmxx9yyykgc0jn"))))
7579 (properties 7579 (properties
7580 `((upstream-name . "GenomicRanges"))) 7580 `((upstream-name . "GenomicRanges")))
7581 (build-system r-build-system) 7581 (build-system r-build-system)
@@ -7872,13 +7872,13 @@ alignments.")
7872(define-public r-rtracklayer 7872(define-public r-rtracklayer
7873 (package 7873 (package
7874 (name "r-rtracklayer") 7874 (name "r-rtracklayer")
7875 (version "1.44.3") 7875 (version "1.44.4")
7876 (source (origin 7876 (source (origin
7877 (method url-fetch) 7877 (method url-fetch)
7878 (uri (bioconductor-uri "rtracklayer" version)) 7878 (uri (bioconductor-uri "rtracklayer" version))
7879 (sha256 7879 (sha256
7880 (base32 7880 (base32
7881 "091zydz1zpz519ha0jkbvzrhxjvw5r2963qz9grmvl2jd8girvcg")))) 7881 "0dnifr58j2si2qbnvap2wslz3xgjv3h4l7a6v7nmmc57hq6kdbym"))))
7882 (build-system r-build-system) 7882 (build-system r-build-system)
7883 (arguments 7883 (arguments
7884 `(#:phases 7884 `(#:phases
@@ -9628,14 +9628,14 @@ Shiny-based display methods for Bioconductor objects.")
9628(define-public r-annotationhub 9628(define-public r-annotationhub
9629 (package 9629 (package
9630 (name "r-annotationhub") 9630 (name "r-annotationhub")
9631 (version "2.16.0") 9631 (version "2.16.1")
9632 (source 9632 (source
9633 (origin 9633 (origin
9634 (method url-fetch) 9634 (method url-fetch)
9635 (uri (bioconductor-uri "AnnotationHub" version)) 9635 (uri (bioconductor-uri "AnnotationHub" version))
9636 (sha256 9636 (sha256
9637 (base32 9637 (base32
9638 "1rpzl4x5mrwxrrf1jzm4zni6li6x34fjfyybsdvplb0ixa48zhn4")))) 9638 "0c773cmhng907839f0bq161jky7362lxxny36ac55qxiz1giqi8j"))))
9639 (properties `((upstream-name . "AnnotationHub"))) 9639 (properties `((upstream-name . "AnnotationHub")))
9640 (build-system r-build-system) 9640 (build-system r-build-system)
9641 (propagated-inputs 9641 (propagated-inputs
@@ -10023,14 +10023,14 @@ interval to data view, mismatch pileup, and several splicing summaries.")
10023(define-public r-gprofiler 10023(define-public r-gprofiler
10024 (package 10024 (package
10025 (name "r-gprofiler") 10025 (name "r-gprofiler")
10026 (version "0.6.7") 10026 (version "0.6.8")
10027 (source 10027 (source
10028 (origin 10028 (origin
10029 (method url-fetch) 10029 (method url-fetch)
10030 (uri (cran-uri "gProfileR" version)) 10030 (uri (cran-uri "gProfileR" version))
10031 (sha256 10031 (sha256
10032 (base32 10032 (base32
10033 "12nwidbnqmnfy5dnqga26byslvdnkrpz2fi19qfcby6xx0wbndk7")))) 10033 "05d6y6b7vkkzp2qhs1cwlvp02djij1b28dbwxnrms08f8qi35iaj"))))
10034 (properties `((upstream-name . "gProfileR"))) 10034 (properties `((upstream-name . "gProfileR")))
10035 (build-system r-build-system) 10035 (build-system r-build-system)
10036 (propagated-inputs 10036 (propagated-inputs
@@ -10448,14 +10448,14 @@ block processing.")
10448(define-public r-rhdf5lib 10448(define-public r-rhdf5lib
10449 (package 10449 (package
10450 (name "r-rhdf5lib") 10450 (name "r-rhdf5lib")
10451 (version "1.6.0") 10451 (version "1.6.1")
10452 (source 10452 (source
10453 (origin 10453 (origin
10454 (method url-fetch) 10454 (method url-fetch)
10455 (uri (bioconductor-uri "Rhdf5lib" version)) 10455 (uri (bioconductor-uri "Rhdf5lib" version))
10456 (sha256 10456 (sha256
10457 (base32 10457 (base32
10458 "1lpmyxlwwcy92hyxqag321ssc5z6yw3a0ws9r058jwgzyjg7i2gm")) 10458 "0niz9dh66fcwbvqpkpsdlz9d06kwi3kfh45dhk3qz9g9qqyiakr1"))
10459 (modules '((guix build utils))) 10459 (modules '((guix build utils)))
10460 (snippet 10460 (snippet
10461 '(begin 10461 '(begin
@@ -10644,14 +10644,14 @@ variable and significantly correlated genes.")
10644(define-public r-delayedmatrixstats 10644(define-public r-delayedmatrixstats
10645 (package 10645 (package
10646 (name "r-delayedmatrixstats") 10646 (name "r-delayedmatrixstats")
10647 (version "1.6.0") 10647 (version "1.6.1")
10648 (source 10648 (source
10649 (origin 10649 (origin
10650 (method url-fetch) 10650 (method url-fetch)
10651 (uri (bioconductor-uri "DelayedMatrixStats" version)) 10651 (uri (bioconductor-uri "DelayedMatrixStats" version))
10652 (sha256 10652 (sha256
10653 (base32 10653 (base32
10654 "0632ypndblrgzfk8k98rr8c6m2r0zwzf02pzvlrhcp9bj1pvqbrz")))) 10654 "1riyzfsq4bd513hidkw3cfkx3jywk3x87j89q70v459xsdfdc95b"))))
10655 (properties 10655 (properties
10656 `((upstream-name . "DelayedMatrixStats"))) 10656 `((upstream-name . "DelayedMatrixStats")))
10657 (build-system r-build-system) 10657 (build-system r-build-system)
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 67ea968e434..dab0bd39c3c 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -2234,7 +2234,7 @@ provides a simple way to achieve this.")
2234(define-public umockdev 2234(define-public umockdev
2235 (package 2235 (package
2236 (name "umockdev") 2236 (name "umockdev")
2237 (version "0.12.1") 2237 (version "0.13.2")
2238 (source (origin 2238 (source (origin
2239 (method url-fetch) 2239 (method url-fetch)
2240 (uri (string-append "https://github.com/martinpitt/umockdev/" 2240 (uri (string-append "https://github.com/martinpitt/umockdev/"
@@ -2242,7 +2242,7 @@ provides a simple way to achieve this.")
2242 "umockdev-" version ".tar.xz")) 2242 "umockdev-" version ".tar.xz"))
2243 (sha256 2243 (sha256
2244 (base32 2244 (base32
2245 "1hx5jm9afng6hw9wyp524z8nwdp6w053pca0w2c0gqpgrmvjxvd2")))) 2245 "095v3abc321s584sga04y16lcmdzsdi88h24wcrm78v7vq484g74"))))
2246 (build-system gnu-build-system) 2246 (build-system gnu-build-system)
2247 (arguments 2247 (arguments
2248 `(#:phases 2248 `(#:phases
@@ -2255,10 +2255,12 @@ provides a simple way to achieve this.")
2255 #t))))) 2255 #t)))))
2256 (native-inputs 2256 (native-inputs
2257 `(("vala" ,vala) 2257 `(("vala" ,vala)
2258 ("python" ,python) ; for tests
2259 ("which" ,which) ; for tests
2260 ("gtk-doc" ,gtk-doc) 2258 ("gtk-doc" ,gtk-doc)
2261 ("pkg-config" ,pkg-config))) 2259 ("pkg-config" ,pkg-config)
2260
2261 ;; For tests.
2262 ("python" ,python)
2263 ("which" ,which)))
2262 (inputs 2264 (inputs
2263 `(("glib" ,glib) 2265 `(("glib" ,glib)
2264 ("eudev" ,eudev) 2266 ("eudev" ,eudev)
diff --git a/gnu/packages/cluster.scm b/gnu/packages/cluster.scm
index 3608d67bed6..8b99a213562 100644
--- a/gnu/packages/cluster.scm
+++ b/gnu/packages/cluster.scm
@@ -1,6 +1,7 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2018 Sou Bunnbu <iyzsong@member.fsf.org> 2;;; Copyright © 2018 Sou Bunnbu <iyzsong@member.fsf.org>
3;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> 3;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
4;;; Copyright © 2019 Andrew Miloradovsky <andrew@interpretmath.pw>
4;;; 5;;;
5;;; This file is part of GNU Guix. 6;;; This file is part of GNU Guix.
6;;; 7;;;
@@ -21,7 +22,10 @@
21 #:use-module ((guix licenses) #:prefix license:) 22 #:use-module ((guix licenses) #:prefix license:)
22 #:use-module (guix build-system gnu) 23 #:use-module (guix build-system gnu)
23 #:use-module (guix download) 24 #:use-module (guix download)
25 #:use-module (guix git-download)
24 #:use-module (guix packages) 26 #:use-module (guix packages)
27 #:use-module (gnu packages autotools)
28 #:use-module (gnu packages gettext)
25 #:use-module (gnu packages linux) 29 #:use-module (gnu packages linux)
26 #:use-module (gnu packages pkg-config) 30 #:use-module (gnu packages pkg-config)
27 #:use-module (gnu packages sphinx) 31 #:use-module (gnu packages sphinx)
@@ -79,3 +83,34 @@ Server (@dfn{IPVS}) kernel module. High availability is achieved by the Virtual
79Redundancy Routing Protocol (@dfn{VRRP}). Each Keepalived framework can be used 83Redundancy Routing Protocol (@dfn{VRRP}). Each Keepalived framework can be used
80independently or together to provide resilient infrastructures.") 84independently or together to provide resilient infrastructures.")
81 (license license:gpl2+))) 85 (license license:gpl2+)))
86
87(define-public libraft
88 (package
89 (name "libraft")
90 (version "0.9.5")
91 (home-page "https://github.com/canonical/raft")
92 (source (origin
93 (method git-fetch)
94 (uri (git-reference (url home-page)
95 (commit (string-append "v" version))))
96 (file-name (git-file-name name version))
97 (sha256
98 (base32
99 "1q49f5mmv6nr6dxhnp044xwc6jlczgh0nj0bl6718wiqh28411x0"))))
100 (arguments '(#:configure-flags '("--disable-uv")))
101 ;; The uv plugin tests fail, if libuv (or the example) is enabled,
102 ;; because setting up the environment requires too much privileges.
103 (native-inputs
104 `(("autoconf" ,autoconf)
105 ("automake" ,automake)
106 ("gettext" ,gettext-minimal)
107 ("libtool" ,libtool)
108 ("pkg-config" ,pkg-config)))
109 (build-system gnu-build-system)
110 (synopsis "C implementation of the Raft consensus protocol")
111 (description "The library has modular design: its core part implements only
112the core Raft algorithm logic, in a fully platform independent way. On top of
113that, a pluggable interface defines the I/O implementation for networking
114(send/receive RPC messages) and disk persistence (store log entries and
115snapshots).")
116 (license license:asl2.0)))
diff --git a/gnu/packages/cmake.scm b/gnu/packages/cmake.scm
index 1d8d829ec52..64349be4442 100644
--- a/gnu/packages/cmake.scm
+++ b/gnu/packages/cmake.scm
@@ -207,6 +207,18 @@ and workspaces that can be used in the compiler environment of your choice.")
207 (outputs '("out" "doc")) 207 (outputs '("out" "doc"))
208 (properties (alist-delete 'hidden? (package-properties cmake-minimal))))) 208 (properties (alist-delete 'hidden? (package-properties cmake-minimal)))))
209 209
210(define-public cmake/fixed
211 ;; This is a variant of CMake that fixes X.509 certificate lookup:
212 ;; <https://issues.guix.gnu.org/issue/37371>.
213 (package
214 (inherit cmake)
215 (version (string-append (package-version cmake) "-1"))
216 (source (origin
217 (inherit (package-source cmake))
218 (patches
219 (append (search-patches "cmake-curl-certificates.patch")
220 (origin-patches (package-source cmake))))))))
221
210(define-public emacs-cmake-mode 222(define-public emacs-cmake-mode
211 (package 223 (package
212 (inherit cmake) 224 (inherit cmake)
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 5bf37e39005..cb0be4aedd8 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -15,6 +15,7 @@
15;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com> 15;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
16;;; Copyright © 2018, 2019 Brett Gilio <brettg@posteo.net> 16;;; Copyright © 2018, 2019 Brett Gilio <brettg@posteo.net>
17;;; Copyright © 2019 Nicolò Balzarotti <anothersms@gmail.com> 17;;; Copyright © 2019 Nicolò Balzarotti <anothersms@gmail.com>
18;;; Copyright © 2019 Wiktor Żelazny <wzelazny@vurv.cz>
18;;; 19;;;
19;;; This file is part of GNU Guix. 20;;; This file is part of GNU Guix.
20;;; 21;;;
@@ -447,13 +448,13 @@ into a pipeline of data manipulation and visualisation.")
447(define-public r-httpuv 448(define-public r-httpuv
448 (package 449 (package
449 (name "r-httpuv") 450 (name "r-httpuv")
450 (version "1.5.1") 451 (version "1.5.2")
451 (source (origin 452 (source (origin
452 (method url-fetch) 453 (method url-fetch)
453 (uri (cran-uri "httpuv" version)) 454 (uri (cran-uri "httpuv" version))
454 (sha256 455 (sha256
455 (base32 456 (base32
456 "042piypg4c8sqrlcdl3dwajkafkbglsky3x7d0jpjv8s5wxnpfxm")))) 457 "13ax0hs2lc39ilznh1zarwqdzahcbhb8adilrfik3xg0fkljpcwk"))))
457 (build-system r-build-system) 458 (build-system r-build-system)
458 (propagated-inputs 459 (propagated-inputs
459 `(("r-bh" ,r-bh) 460 `(("r-bh" ,r-bh)
@@ -796,6 +797,84 @@ extensive prebuilt widgets make it possible to build beautiful,
796responsive, and powerful applications with minimal effort.") 797responsive, and powerful applications with minimal effort.")
797 (license license:artistic2.0))) 798 (license license:artistic2.0)))
798 799
800;; This package includes minified JavaScript files. When upgrading please
801;; check that there are no new minified JavaScript files.
802(define-public r-shinytree
803 (package
804 (name "r-shinytree")
805 (version "0.2.7")
806 (source
807 (origin
808 (method url-fetch)
809 (uri (cran-uri "shinyTree" version))
810 (sha256
811 (base32
812 "0jfx2capckv7hf2yx3fn8i4rcmhi222ah91jnmhg497x8wgz31s3"))
813 (modules '((guix build utils)))
814 (snippet
815 '(begin
816 ;; Delete minified JavaScript
817 (for-each delete-file
818 '("inst/www/jsTree-3.3.7/libs/require.js"
819 "inst/www/jsTree-3.3.7/libs/jquery.js"
820 "inst/www/jsTree-3.3.7/jstree.min.js"))
821 #t))))
822 (properties `((upstream-name . "shinyTree")))
823 (build-system r-build-system)
824 (arguments
825 `(#:modules ((guix build utils)
826 (guix build r-build-system)
827 (srfi srfi-1)
828 (ice-9 popen))
829 #:phases
830 (modify-phases %standard-phases
831 (add-after 'unpack 'replace-minified-javascript
832 (lambda* (#:key inputs #:allow-other-keys)
833 (with-directory-excursion "inst/www/jsTree-3.3.7/"
834 (symlink (string-append (assoc-ref inputs "js-requirejs")
835 "/share/javascript/require.min.js")
836 "libs/require.js")
837 (call-with-values
838 (lambda ()
839 (unzip2
840 `((,(assoc-ref inputs "js-jquery")
841 "libs/jquery.js")
842 ("jstree.js"
843 "jstree.min.js"))))
844 (lambda (sources targets)
845 (for-each (lambda (source target)
846 (format #t "Processing ~a --> ~a~%"
847 source target)
848 (let ((minified (open-pipe* OPEN_READ "uglify-js" source)))
849 (call-with-output-file target
850 (lambda (port)
851 (dump-port minified port)))))
852 sources targets))))
853 #t)))))
854 (propagated-inputs
855 `(("r-htmlwidgets" ,r-htmlwidgets)
856 ("r-jsonlite" ,r-jsonlite)
857 ("r-promises" ,r-promises)
858 ("r-shiny" ,r-shiny)
859 ("r-stringr" ,r-stringr)))
860 (inputs
861 `(("js-requirejs" ,js-requirejs)))
862 (native-inputs
863 `(("uglify-js" ,uglify-js)
864 ("js-jquery"
865 ,(origin
866 (method url-fetch)
867 (uri "https://code.jquery.com/jquery-3.3.1.js")
868 (sha256
869 (base32
870 "1b8zxrp6xwzpw25apn8j4qws0f6sr7qr7h2va5h1mjyfqvn29anq"))))))
871 (home-page "https://cran.r-project.org/web/packages/shinyTree/")
872 (synopsis "jsTree bindings for Shiny")
873 (description
874 "This package exposes R bindings to jsTree, a JavaScript library that
875supports interactive trees, to enable rich, editable trees in Shiny.")
876 (license license:expat)))
877
799(define-public r-shinydashboard 878(define-public r-shinydashboard
800 (package 879 (package
801 (name "r-shinydashboard") 880 (name "r-shinydashboard")
@@ -867,6 +946,31 @@ this gives the user direct access to the file system without the need to
867well as file saving is available.") 946well as file saving is available.")
868 (license license:gpl2+))) 947 (license license:gpl2+)))
869 948
949(define-public r-shinythemes
950 (package
951 (name "r-shinythemes")
952 (version "1.1.2")
953 (source
954 (origin
955 (method url-fetch)
956 (uri (cran-uri "shinythemes" version))
957 (sha256
958 (base32
959 "12miz44n2zxfswnia7p8dirxj3miw0aqn4pkx2111ikz67ax84rf"))))
960 (properties `((upstream-name . "shinythemes")))
961 (build-system r-build-system)
962 (propagated-inputs `(("r-shiny" ,r-shiny)))
963 (home-page "http://rstudio.github.io/shinythemes/")
964 (synopsis "Themes for Shiny")
965 (description
966 "This package provides themes for use with Shiny. It includes several
967Bootstrap themes, which are packaged for use with Shiny applications.")
968 ;; The package is released under version 3 of the GPL, but it includes
969 ;; source files that are covered by the Expat license. It also includes
970 ;; fonts under SIL or the ASL.
971 (license (list license:gpl3 license:expat
972 license:silofl1.1 license:asl2.0))))
973
870;; The package sources include minified variants of d3.js and non-minified 974;; The package sources include minified variants of d3.js and non-minified
871;; source code of d3-jetpack. 975;; source code of d3-jetpack.
872(define-public r-d3r 976(define-public r-d3r
@@ -1059,14 +1163,14 @@ work well on small screens.")
1059(define-public r-feather 1163(define-public r-feather
1060 (package 1164 (package
1061 (name "r-feather") 1165 (name "r-feather")
1062 (version "0.3.3") 1166 (version "0.3.5")
1063 (source 1167 (source
1064 (origin 1168 (origin
1065 (method url-fetch) 1169 (method url-fetch)
1066 (uri (cran-uri "feather" version)) 1170 (uri (cran-uri "feather" version))
1067 (sha256 1171 (sha256
1068 (base32 1172 (base32
1069 "0ls8lmygyjq60467s88h66d7fczjp1d3a2106rfq4dx9lyfvdfsa")))) 1173 "1gxd0h2m56sjjlzn4dry6s13nddxc4l5i11gsvavaf2dwbahdzsh"))))
1070 (build-system r-build-system) 1174 (build-system r-build-system)
1071 (propagated-inputs 1175 (propagated-inputs
1072 `(("r-hms" ,r-hms) 1176 `(("r-hms" ,r-hms)
@@ -1649,14 +1753,14 @@ validation and filtering on the values, making options invisible or private.")
1649(define-public r-circlize 1753(define-public r-circlize
1650 (package 1754 (package
1651 (name "r-circlize") 1755 (name "r-circlize")
1652 (version "0.4.7") 1756 (version "0.4.8")
1653 (source 1757 (source
1654 (origin 1758 (origin
1655 (method url-fetch) 1759 (method url-fetch)
1656 (uri (cran-uri "circlize" version)) 1760 (uri (cran-uri "circlize" version))
1657 (sha256 1761 (sha256
1658 (base32 1762 (base32
1659 "07y1bchkslpz2wl43yg5j5h1nl9z0i425a07jdmfd5avrynd8p3m")))) 1763 "0jvr9hmxyhg0zx101iiqkrg8wfaj86kp62xpv42n2j9fkn5r1mi2"))))
1660 (build-system r-build-system) 1764 (build-system r-build-system)
1661 (propagated-inputs 1765 (propagated-inputs
1662 `(("r-colorspace" ,r-colorspace) 1766 `(("r-colorspace" ,r-colorspace)
@@ -2663,14 +2767,14 @@ Optimization problems by using the simplex algorithm.")
2663(define-public r-geometry 2767(define-public r-geometry
2664 (package 2768 (package
2665 (name "r-geometry") 2769 (name "r-geometry")
2666 (version "0.4.3") 2770 (version "0.4.4")
2667 (source 2771 (source
2668 (origin 2772 (origin
2669 (method url-fetch) 2773 (method url-fetch)
2670 (uri (cran-uri "geometry" version)) 2774 (uri (cran-uri "geometry" version))
2671 (sha256 2775 (sha256
2672 (base32 2776 (base32
2673 "0z4491mhfmrlbb8lazjvq55alrprx7k0abg2d39fj0lsj84cls1r")))) 2777 "1mx5n5mw63nij4n6crs9165mlls4fnh1ipw5ch467rjsidgl0mg8"))))
2674 (build-system r-build-system) 2778 (build-system r-build-system)
2675 (propagated-inputs 2779 (propagated-inputs
2676 `(("r-magic" ,r-magic) 2780 `(("r-magic" ,r-magic)
@@ -5569,14 +5673,14 @@ and adds the annotation to the plot.")
5569(define-public r-ggpubr 5673(define-public r-ggpubr
5570 (package 5674 (package
5571 (name "r-ggpubr") 5675 (name "r-ggpubr")
5572 (version "0.2.2") 5676 (version "0.2.3")
5573 (source 5677 (source
5574 (origin 5678 (origin
5575 (method url-fetch) 5679 (method url-fetch)
5576 (uri (cran-uri "ggpubr" version)) 5680 (uri (cran-uri "ggpubr" version))
5577 (sha256 5681 (sha256
5578 (base32 5682 (base32
5579 "0r5knv3707pmpngmj60zn761y3bh8lj89dhh1b80ss083xnxr4qw")))) 5683 "0i81mmz4qn9yzcgfa6dhkcrx4ddlflkm2c3b40isc8all43rm8rn"))))
5580 (build-system r-build-system) 5684 (build-system r-build-system)
5581 (propagated-inputs 5685 (propagated-inputs
5582 `(("r-cowplot" ,r-cowplot) 5686 `(("r-cowplot" ,r-cowplot)
@@ -6091,14 +6195,14 @@ other add-on packages.")
6091(define-public r-insight 6195(define-public r-insight
6092 (package 6196 (package
6093 (name "r-insight") 6197 (name "r-insight")
6094 (version "0.4.1") 6198 (version "0.5.0")
6095 (source 6199 (source
6096 (origin 6200 (origin
6097 (method url-fetch) 6201 (method url-fetch)
6098 (uri (cran-uri "insight" version)) 6202 (uri (cran-uri "insight" version))
6099 (sha256 6203 (sha256
6100 (base32 6204 (base32
6101 "1lw1r3mb97z5p9z25jfzlhs0sbnwp6v8kzysf0am01x4m7l3iz82")))) 6205 "0lrh2l9n2zd9n3zzknsxz6nlasnrayx3bplxlz7m616g56gr5nfp"))))
6102 (build-system r-build-system) 6206 (build-system r-build-system)
6103 (home-page "https://easystats.github.io/insight/") 6207 (home-page "https://easystats.github.io/insight/")
6104 (synopsis "Easy access to model information for various model objects") 6208 (synopsis "Easy access to model information for various model objects")
@@ -6117,14 +6221,14 @@ information are missing.")
6117(define-public r-sjlabelled 6221(define-public r-sjlabelled
6118 (package 6222 (package
6119 (name "r-sjlabelled") 6223 (name "r-sjlabelled")
6120 (version "1.1.0") 6224 (version "1.1.1")
6121 (source 6225 (source
6122 (origin 6226 (origin
6123 (method url-fetch) 6227 (method url-fetch)
6124 (uri (cran-uri "sjlabelled" version)) 6228 (uri (cran-uri "sjlabelled" version))
6125 (sha256 6229 (sha256
6126 (base32 6230 (base32
6127 "0rnmlwpp41h04dzfjd5ncvzjzs43slaimb4v2in1axznv3haafyc")))) 6231 "0c9wy0gsr2sbkrv2638xbi7qm0gl6jyr6sfricavhkm7l4hljjkz"))))
6128 (build-system r-build-system) 6232 (build-system r-build-system)
6129 (propagated-inputs 6233 (propagated-inputs
6130 `(("r-haven" ,r-haven) 6234 `(("r-haven" ,r-haven)
@@ -6873,13 +6977,13 @@ and coverage methods to tune the choice of threshold.")
6873(define-public r-ggformula 6977(define-public r-ggformula
6874 (package 6978 (package
6875 (name "r-ggformula") 6979 (name "r-ggformula")
6876 (version "0.9.1") 6980 (version "0.9.2")
6877 (source 6981 (source
6878 (origin 6982 (origin
6879 (method url-fetch) 6983 (method url-fetch)
6880 (uri (cran-uri "ggformula" version)) 6984 (uri (cran-uri "ggformula" version))
6881 (sha256 6985 (sha256
6882 (base32 "01ngx8qh9lhmagng6abx2ky54zi3iyj5bpxlnw59slagwv7l6icx")))) 6986 (base32 "16ycabhnp78fsiv1dc63ccgh9gmpsy2683vbmq0fdzl6w3pd87sr"))))
6883 (build-system r-build-system) 6987 (build-system r-build-system)
6884 (propagated-inputs 6988 (propagated-inputs
6885 `(("r-ggplot2" ,r-ggplot2) 6989 `(("r-ggplot2" ,r-ggplot2)
@@ -7878,14 +7982,14 @@ Hothorn, Westfall, 2010, CRC Press).")
7878(define-public r-emmeans 7982(define-public r-emmeans
7879 (package 7983 (package
7880 (name "r-emmeans") 7984 (name "r-emmeans")
7881 (version "1.4") 7985 (version "1.4.1")
7882 (source 7986 (source
7883 (origin 7987 (origin
7884 (method url-fetch) 7988 (method url-fetch)
7885 (uri (cran-uri "emmeans" version)) 7989 (uri (cran-uri "emmeans" version))
7886 (sha256 7990 (sha256
7887 (base32 7991 (base32
7888 "1ynf9hhbch83k63lwps69ijfch30fk5v0sc418ck264c5vih26dh")))) 7992 "1fpawaxnmj67md169a9mzrnnh2d0c973xydfg6hw865933jil9lq"))))
7889 (build-system r-build-system) 7993 (build-system r-build-system)
7890 (propagated-inputs 7994 (propagated-inputs
7891 `(("r-estimability" ,r-estimability) 7995 `(("r-estimability" ,r-estimability)
@@ -8036,14 +8140,14 @@ detection, parallelism through BLAS and parallel user templates.")
8036(define-public r-sjstats 8140(define-public r-sjstats
8037 (package 8141 (package
8038 (name "r-sjstats") 8142 (name "r-sjstats")
8039 (version "0.17.5") 8143 (version "0.17.6")
8040 (source 8144 (source
8041 (origin 8145 (origin
8042 (method url-fetch) 8146 (method url-fetch)
8043 (uri (cran-uri "sjstats" version)) 8147 (uri (cran-uri "sjstats" version))
8044 (sha256 8148 (sha256
8045 (base32 8149 (base32
8046 "1x9ybvz84vgaabmqp4z6crbv5q6kqjg6msk1spbr11zx9dbj06ca")))) 8150 "11z1wfi0d74d1rld0320l3vmv6rl41wa0v9bjc44rk06yc90wld2"))))
8047 (build-system r-build-system) 8151 (build-system r-build-system)
8048 (propagated-inputs 8152 (propagated-inputs
8049 `(("r-bayestestr" ,r-bayestestr) 8153 `(("r-bayestestr" ,r-bayestestr)
@@ -8055,6 +8159,7 @@ detection, parallelism through BLAS and parallel user templates.")
8055 ("r-magrittr" ,r-magrittr) 8159 ("r-magrittr" ,r-magrittr)
8056 ("r-mass" ,r-mass) 8160 ("r-mass" ,r-mass)
8057 ("r-modelr" ,r-modelr) 8161 ("r-modelr" ,r-modelr)
8162 ("r-parameters" ,r-parameters)
8058 ("r-performance" ,r-performance) 8163 ("r-performance" ,r-performance)
8059 ("r-purrr" ,r-purrr) 8164 ("r-purrr" ,r-purrr)
8060 ("r-rlang" ,r-rlang) 8165 ("r-rlang" ,r-rlang)
@@ -8162,14 +8267,14 @@ effects models and Bayesian models.")
8162(define-public r-ggeffects 8267(define-public r-ggeffects
8163 (package 8268 (package
8164 (name "r-ggeffects") 8269 (name "r-ggeffects")
8165 (version "0.11.0") 8270 (version "0.12.0")
8166 (source 8271 (source
8167 (origin 8272 (origin
8168 (method url-fetch) 8273 (method url-fetch)
8169 (uri (cran-uri "ggeffects" version)) 8274 (uri (cran-uri "ggeffects" version))
8170 (sha256 8275 (sha256
8171 (base32 8276 (base32
8172 "1b0lxa8bljdh6h4lk7pql1lrhjlvh7p5c8qlgb8ac6ay8hb79vmi")))) 8277 "0idfycjk05gyykfp9ibmhxfcjvd01ikh1dl0fb4nqw6znw3ar0xp"))))
8173 (build-system r-build-system) 8278 (build-system r-build-system)
8174 (propagated-inputs 8279 (propagated-inputs
8175 `(("r-dplyr" ,r-dplyr) 8280 `(("r-dplyr" ,r-dplyr)
@@ -8196,14 +8301,14 @@ results using @code{ggplot2}.")
8196(define-public r-sjplot 8301(define-public r-sjplot
8197 (package 8302 (package
8198 (name "r-sjplot") 8303 (name "r-sjplot")
8199 (version "2.7.0") 8304 (version "2.7.1")
8200 (source 8305 (source
8201 (origin 8306 (origin
8202 (method url-fetch) 8307 (method url-fetch)
8203 (uri (cran-uri "sjPlot" version)) 8308 (uri (cran-uri "sjPlot" version))
8204 (sha256 8309 (sha256
8205 (base32 8310 (base32
8206 "1m0gy991fmxvqry91kkzdkdapyalhrwql25d0hg2a2naxgfw4zpk")))) 8311 "14shypabpahf68hd66rb1dpqhiyl3i0yx1yc85wamdvljh9fdymb"))))
8207 (properties `((upstream-name . "sjPlot"))) 8312 (properties `((upstream-name . "sjPlot")))
8208 (build-system r-build-system) 8313 (build-system r-build-system)
8209 (propagated-inputs 8314 (propagated-inputs
@@ -9122,17 +9227,18 @@ Scientific.")
9122(define-public r-activity 9227(define-public r-activity
9123 (package 9228 (package
9124 (name "r-activity") 9229 (name "r-activity")
9125 (version "1.2") 9230 (version "1.3")
9126 (source 9231 (source
9127 (origin 9232 (origin
9128 (method url-fetch) 9233 (method url-fetch)
9129 (uri (cran-uri "activity" version)) 9234 (uri (cran-uri "activity" version))
9130 (sha256 9235 (sha256
9131 (base32 9236 (base32
9132 "11w2bz6p9xbzdh6773dmbbh6rws0h5dj18p8m0ivzizgq932vdzs")))) 9237 "12imqj366dp6pam5gap6ji56p5wf1073xz5g4iikfxf5l8snxw92"))))
9133 (build-system r-build-system) 9238 (build-system r-build-system)
9134 (propagated-inputs 9239 (propagated-inputs
9135 `(("r-circular" ,r-circular) 9240 `(("r-circular" ,r-circular)
9241 ("r-insol" ,r-insol)
9136 ("r-pbapply" ,r-pbapply))) 9242 ("r-pbapply" ,r-pbapply)))
9137 (home-page "https://cran.r-project.org/web/packages/activity/") 9243 (home-page "https://cran.r-project.org/web/packages/activity/")
9138 (synopsis "Animal activity statistics") 9244 (synopsis "Animal activity statistics")
@@ -9444,14 +9550,14 @@ maps.")
9444(define-public r-tidytree 9550(define-public r-tidytree
9445 (package 9551 (package
9446 (name "r-tidytree") 9552 (name "r-tidytree")
9447 (version "0.2.6") 9553 (version "0.2.7")
9448 (source 9554 (source
9449 (origin 9555 (origin
9450 (method url-fetch) 9556 (method url-fetch)
9451 (uri (cran-uri "tidytree" version)) 9557 (uri (cran-uri "tidytree" version))
9452 (sha256 9558 (sha256
9453 (base32 9559 (base32
9454 "13mhizbsawmfqjpnzb73yw6kn1f1wlz0vhyzj3g0rj6ry880rw89")))) 9560 "15ky7hj7w08jx94wm0yikckca0apwv3jy5svd77dpzgb2lr9ff9a"))))
9455 (build-system r-build-system) 9561 (build-system r-build-system)
9456 (propagated-inputs 9562 (propagated-inputs
9457 `(("r-ape" ,r-ape) 9563 `(("r-ape" ,r-ape)
@@ -10767,14 +10873,14 @@ This makes it a convenient and fast interface to C/C++ and Fortran code.")
10767(define-public r-spam 10873(define-public r-spam
10768 (package 10874 (package
10769 (name "r-spam") 10875 (name "r-spam")
10770 (version "2.2-2") 10876 (version "2.3-0")
10771 (source 10877 (source
10772 (origin 10878 (origin
10773 (method url-fetch) 10879 (method url-fetch)
10774 (uri (cran-uri "spam" version)) 10880 (uri (cran-uri "spam" version))
10775 (sha256 10881 (sha256
10776 (base32 10882 (base32
10777 "024dgfnjfxvsiymbzrhadinamj6qy509f4sbd1zxql8ymkyxn7vi")))) 10883 "194n5mgvyms9ckjqixl3h33apii8h9kqspqg2si9k741k578qb3w"))))
10778 (build-system r-build-system) 10884 (build-system r-build-system)
10779 (propagated-inputs 10885 (propagated-inputs
10780 `(("r-dotcall64" ,r-dotcall64))) 10886 `(("r-dotcall64" ,r-dotcall64)))
@@ -11152,14 +11258,14 @@ regression coefficients can be conducted via jackknifing.")
11152(define-public r-huge 11258(define-public r-huge
11153 (package 11259 (package
11154 (name "r-huge") 11260 (name "r-huge")
11155 (version "1.3.2") 11261 (version "1.3.3")
11156 (source 11262 (source
11157 (origin 11263 (origin
11158 (method url-fetch) 11264 (method url-fetch)
11159 (uri (cran-uri "huge" version)) 11265 (uri (cran-uri "huge" version))
11160 (sha256 11266 (sha256
11161 (base32 11267 (base32
11162 "1j93gvi1jyq3ld9jhdqhrpm2is54rk3ilmf3yw7fx6gva0y6hjqd")))) 11268 "18f8w4hdp9fdi2k5ip6fnrn5z47w4ybgxs2m6a7jdvd2v4wfdr69"))))
11163 (build-system r-build-system) 11269 (build-system r-build-system)
11164 (propagated-inputs 11270 (propagated-inputs
11165 `(("r-igraph" ,r-igraph) 11271 `(("r-igraph" ,r-igraph)
@@ -12590,14 +12696,14 @@ barplots or heatmaps.")
12590(define-public r-seqinr 12696(define-public r-seqinr
12591 (package 12697 (package
12592 (name "r-seqinr") 12698 (name "r-seqinr")
12593 (version "3.4-5") 12699 (version "3.6-1")
12594 (source 12700 (source
12595 (origin 12701 (origin
12596 (method url-fetch) 12702 (method url-fetch)
12597 (uri (cran-uri "seqinr" version)) 12703 (uri (cran-uri "seqinr" version))
12598 (sha256 12704 (sha256
12599 (base32 12705 (base32
12600 "17zv0n5cji17izwmwg0jcbxbjl3w5rls91w15svcnlpxjms38ahn")))) 12706 "0j30za6kji6y3v09cvcydiacnp65pv6ig8aw7cydl47l5s9chky4"))))
12601 (build-system r-build-system) 12707 (build-system r-build-system)
12602 (propagated-inputs 12708 (propagated-inputs
12603 `(("r-ade4" ,r-ade4) 12709 `(("r-ade4" ,r-ade4)
@@ -13607,14 +13713,14 @@ the XKCD web comic.")
13607(define-public r-msigdbr 13713(define-public r-msigdbr
13608 (package 13714 (package
13609 (name "r-msigdbr") 13715 (name "r-msigdbr")
13610 (version "6.2.1") 13716 (version "7.0.1")
13611 (source 13717 (source
13612 (origin 13718 (origin
13613 (method url-fetch) 13719 (method url-fetch)
13614 (uri (cran-uri "msigdbr" version)) 13720 (uri (cran-uri "msigdbr" version))
13615 (sha256 13721 (sha256
13616 (base32 13722 (base32
13617 "1264j1hs74kq7hyh68vfynadfi6mdpq46qm1hnwzkzzhmbzpb9cg")))) 13723 "19p8z617m3my8la7n1qgb1s2msf940r372im3q30qkbcx3qxg3sd"))))
13618 (build-system r-build-system) 13724 (build-system r-build-system)
13619 (propagated-inputs 13725 (propagated-inputs
13620 `(("r-dplyr" ,r-dplyr) 13726 `(("r-dplyr" ,r-dplyr)
@@ -13881,14 +13987,14 @@ databases, including ENA, PDB or ChEMBL are also accessible.")
13881(define-public r-ggraph 13987(define-public r-ggraph
13882 (package 13988 (package
13883 (name "r-ggraph") 13989 (name "r-ggraph")
13884 (version "1.0.2") 13990 (version "2.0.0")
13885 (source 13991 (source
13886 (origin 13992 (origin
13887 (method url-fetch) 13993 (method url-fetch)
13888 (uri (cran-uri "ggraph" version)) 13994 (uri (cran-uri "ggraph" version))
13889 (sha256 13995 (sha256
13890 (base32 13996 (base32
13891 "0fpmp326mryd1k1qvacjadksrnhbla8h960i18lmrimzrag7692c")))) 13997 "0qj7w3af0pgmd9mil6y571jikfkln7b8csvzg6b08spwbglfy1s3"))))
13892 (build-system r-build-system) 13998 (build-system r-build-system)
13893 (propagated-inputs 13999 (propagated-inputs
13894 `(("r-digest" ,r-digest) 14000 `(("r-digest" ,r-digest)
@@ -13896,12 +14002,14 @@ databases, including ENA, PDB or ChEMBL are also accessible.")
13896 ("r-ggforce" ,r-ggforce) 14002 ("r-ggforce" ,r-ggforce)
13897 ("r-ggplot2" ,r-ggplot2) 14003 ("r-ggplot2" ,r-ggplot2)
13898 ("r-ggrepel" ,r-ggrepel) 14004 ("r-ggrepel" ,r-ggrepel)
14005 ("r-graphlayouts" ,r-graphlayouts)
13899 ("r-gtable" ,r-gtable) 14006 ("r-gtable" ,r-gtable)
13900 ("r-igraph" ,r-igraph) 14007 ("r-igraph" ,r-igraph)
13901 ("r-mass" ,r-mass) 14008 ("r-mass" ,r-mass)
13902 ("r-plyr" ,r-plyr)
13903 ("r-rcpp" ,r-rcpp) 14009 ("r-rcpp" ,r-rcpp)
14010 ("r-rlang" ,r-rlang)
13904 ("r-scales" ,r-scales) 14011 ("r-scales" ,r-scales)
14012 ("r-tidygraph" ,r-tidygraph)
13905 ("r-viridis" ,r-viridis))) 14013 ("r-viridis" ,r-viridis)))
13906 (home-page "https://cran.r-project.org/web/packages/ggraph/") 14014 (home-page "https://cran.r-project.org/web/packages/ggraph/")
13907 (synopsis "Implementation of grammar of graphics for graphs and networks") 14015 (synopsis "Implementation of grammar of graphics for graphs and networks")
@@ -15212,3 +15320,293 @@ single cell integration, described in Korsunsky et al
15212@url{doi.org/10.1101/461954}. The package includes a standalone Harmony 15320@url{doi.org/10.1101/461954}. The package includes a standalone Harmony
15213function and interfaces to external frameworks.") 15321function and interfaces to external frameworks.")
15214 (license license:gpl3)))) 15322 (license license:gpl3))))
15323
15324(define-public r-covr
15325 (package
15326 (name "r-covr")
15327 (version "3.3.1")
15328 (source
15329 (origin
15330 (method url-fetch)
15331 (uri (cran-uri "covr" version))
15332 (sha256
15333 (base32
15334 "0fvd7v53w11x6kaw61hbml8n1j2ck9l2fv2wvqdsg689xic9rqcs"))))
15335 (properties `((upstream-name . "covr")))
15336 (build-system r-build-system)
15337 (propagated-inputs
15338 `(("r-crayon" ,r-crayon)
15339 ("r-digest" ,r-digest)
15340 ("r-httr" ,r-httr)
15341 ("r-jsonlite" ,r-jsonlite)
15342 ("r-rex" ,r-rex)
15343 ("r-withr" ,r-withr)
15344 ("r-yaml" ,r-yaml)))
15345 (home-page "https://github.com/r-lib/covr")
15346 (synopsis "Test coverage for R packages")
15347 (description
15348 "Thisp package enables you to track and report code coverage for your
15349package and (optionally) upload the results to a coverage service. Code
15350coverage is a measure of the amount of code being exercised by a set of tests.
15351It is an indirect measure of test quality and completeness. This package is
15352compatible with any testing methodology or framework and tracks coverage of
15353both R code and compiled C/C++/FORTRAN code.")
15354 (license license:gpl3)))
15355
15356(define-public r-systemfonts
15357 (package
15358 (name "r-systemfonts")
15359 (version "0.1.1")
15360 (source
15361 (origin
15362 (method url-fetch)
15363 (uri (cran-uri "systemfonts" version))
15364 (sha256
15365 (base32
15366 "0m0ljid683xcam2f14x7k2zv1yx4npac38a3gfv11vhxfbnpgp0z"))))
15367 (properties `((upstream-name . "systemfonts")))
15368 (build-system r-build-system)
15369 (inputs
15370 `(("fontconfig" ,fontconfig)
15371 ("freetype" ,freetype)
15372 ("zlib" ,zlib)))
15373 (native-inputs
15374 `(("pkg-config" ,pkg-config)))
15375 (home-page "https://github.com/r-lib/systemfonts")
15376 (synopsis "System native font finding")
15377 (description
15378 "This package provides system native access to the font catalogue. As
15379font handling varies between systems it is difficult to correctly locate
15380installed fonts across different operating systems. The 'systemfonts' package
15381provides bindings to the native libraries for finding font files that can then
15382be used further by e.g. graphic devices.")
15383 (license license:expat)))
15384
15385(define-public r-graphlayouts
15386 (package
15387 (name "r-graphlayouts")
15388 (version "0.5.0")
15389 (source
15390 (origin
15391 (method url-fetch)
15392 (uri (cran-uri "graphlayouts" version))
15393 (sha256
15394 (base32
15395 "03dizbhhdhnzbj2i5zvqgs617kwcv4h2pha4f16adic0fph1rxl3"))))
15396 (properties `((upstream-name . "graphlayouts")))
15397 (build-system r-build-system)
15398 (propagated-inputs
15399 `(("r-igraph" ,r-igraph)
15400 ("r-rcpp" ,r-rcpp)
15401 ("r-rcpparmadillo" ,r-rcpparmadillo)))
15402 (home-page "https://github.com/schochastics/graphlayouts")
15403 (synopsis "Additional layout algorithms for network visualizations")
15404 (description
15405 "This package provides several layout algorithms to visualize networks
15406which are not part of the igraph library. Most are based on the concept of
15407stress majorization by Gansner et al. (2004)
15408<doi:10.1007/978-3-540-31843-9_25>. Some more specific algorithms allow to
15409emphasize hidden group structures in networks or focus on specific nodes.")
15410 (license license:expat)))
15411
15412(define-public r-tidygraph
15413 (package
15414 (name "r-tidygraph")
15415 (version "1.1.2")
15416 (source
15417 (origin
15418 (method url-fetch)
15419 (uri (cran-uri "tidygraph" version))
15420 (sha256
15421 (base32
15422 "1zpsarm74afbc7p5dlyb0whc09670qdcddw1ckb25cfc9hfh0hjn"))))
15423 (properties `((upstream-name . "tidygraph")))
15424 (build-system r-build-system)
15425 (propagated-inputs
15426 `(("r-dplyr" ,r-dplyr)
15427 ("r-igraph" ,r-igraph)
15428 ("r-magrittr" ,r-magrittr)
15429 ("r-pillar" ,r-pillar)
15430 ("r-r6" ,r-r6)
15431 ("r-rcpp" ,r-rcpp)
15432 ("r-rlang" ,r-rlang)
15433 ("r-tibble" ,r-tibble)
15434 ("r-tidyr" ,r-tidyr)))
15435 (home-page "https://github.com/thomasp85/tidygraph")
15436 (synopsis "Tidy API for graph manipulation")
15437 (description
15438 "This package provides a graph implementation that can be thought of as
15439two tidy data frames describing node and edge data respectively. It provides
15440an approach to manipulate these two virtual data frames using the API defined
15441in the @code{dplyr} package, and it also provides tidy interfaces to a lot of
15442common graph algorithms.")
15443 (license license:expat)))
15444
15445(define-public r-soupx
15446 (let ((commit "a3354be76fb52fd795be6ddf163cf056c05c6cb8")
15447 (revision "1"))
15448 (package
15449 (name "r-soupx")
15450 (version (git-version "0.3.1" revision commit))
15451 (source
15452 (origin
15453 (method git-fetch)
15454 (uri (git-reference
15455 (url "https://github.com/constantAmateur/SoupX")
15456 (commit commit)))
15457 (file-name (git-file-name name version))
15458 (sha256
15459 (base32
15460 "1zmlyzrl0fz6l79gn2wswid670p88mm3y292is89sa5p3h7frr99"))))
15461 (properties `((upstream-name . "SoupX")))
15462 (build-system r-build-system)
15463 (propagated-inputs
15464 `(("r-ggplot2" ,r-ggplot2)
15465 ("r-matrix" ,r-matrix)
15466 ("r-seurat" ,r-seurat)))
15467 (home-page "https://github.com/constantAmateur/SoupX")
15468 (synopsis "Single cell mRNA Soup eXterminator")
15469 (description
15470 "This package provides a package for quantifying, profiling and
15471removing cell free mRNA contamination (the \"soup\") from droplet based single
15472cell RNA-seq experiments.")
15473 (license license:gpl2))))
15474
15475(define-public r-assertr
15476 (package
15477 (name "r-assertr")
15478 (version "2.6")
15479 (source
15480 (origin
15481 (method url-fetch)
15482 (uri (cran-uri "assertr" version))
15483 (sha256
15484 (base32
15485 "0g4ii6vhp0155a29ljhs64a09x0nzy5ybvwwchhk4mkcgsvnvfkj"))))
15486 (build-system r-build-system)
15487 (propagated-inputs
15488 `(("r-dplyr" ,r-dplyr)
15489 ("r-mass" ,r-mass)
15490 ("r-rlang" ,r-rlang)))
15491 (native-inputs
15492 `(("r-knitr" ,r-knitr))) ; needed for vignette
15493 (home-page "https://github.com/ropensci/assertr")
15494 (synopsis "Assertive programming for R analysis pipelines")
15495 (description
15496 "This package provides functionality to assert conditions that have to be
15497met so that errors in data used in analysis pipelines can fail quickly. It is
15498similar to @code{stopifnot()} but more powerful, friendly, and easier for use
15499in pipelines.")
15500 (license license:expat)))
15501
15502(define-public r-parameters
15503 (package
15504 (name "r-parameters")
15505 (version "0.1.0")
15506 (source
15507 (origin
15508 (method url-fetch)
15509 (uri (cran-uri "parameters" version))
15510 (sha256
15511 (base32
15512 "12v301va1l3xydicbf0k04anxlmyjclbbjfg0riprryhkxwwk8g5"))))
15513 (properties `((upstream-name . "parameters")))
15514 (build-system r-build-system)
15515 (propagated-inputs
15516 `(("r-bayestestr" ,r-bayestestr)
15517 ("r-insight" ,r-insight)))
15518 (home-page "https://cran.r-project.org/web/packages/parameters")
15519 (synopsis "Processing of model parameters")
15520 (description
15521 "This package provides utilities for processing the parameters of various
15522statistical models. Beyond computing p values, CIs, and other indices for a
15523wide variety of models, this package implements features like standardization
15524or bootstrapping of parameters and models, feature reduction (feature
15525extraction and variable selection) as well as conversion between indices of
15526effect size.")
15527 (license license:gpl3)))
15528
15529(define-public r-rgdal
15530 (package
15531 (name "r-rgdal")
15532 (version "1.4-4")
15533 (source
15534 (origin
15535 (method url-fetch)
15536 (uri (cran-uri "rgdal" version))
15537 (sha256
15538 (base32
15539 "1my56hdc9x40ynxx1qwqwqxjvjxybmm00w4xg5gi8zgj19pffci5"))))
15540 (properties `((upstream-name . "rgdal")))
15541 (build-system r-build-system)
15542 (inputs
15543 `(("gdal" ,gdal)
15544 ("proj.4" ,proj.4)
15545 ("zlib" ,zlib)))
15546 (propagated-inputs
15547 `(("r-sp" ,r-sp)))
15548 (native-inputs
15549 `(("pkg-config" ,pkg-config)))
15550 (home-page "http://rgdal.r-forge.r-project.org")
15551 (synopsis "Bindings for the Geospatial Data Abstraction Library")
15552 (description
15553 "This package provides bindings to the Geospatial Data Abstraction
15554Library (GDAL) and access to projection/transformation operations from the
15555PROJ.4 library.")
15556 (license license:gpl2+)))
15557
15558(define-public r-insol
15559 (package
15560 (name "r-insol")
15561 (version "1.2")
15562 (source
15563 (origin
15564 (method url-fetch)
15565 (uri (cran-uri "insol" version))
15566 (sha256
15567 (base32
15568 "14ikz05375pjn9hby7kwkhcnykjilbnkdy5i8lsl7c5qdbhmqcm5"))))
15569 (properties `((upstream-name . "insol")))
15570 (build-system r-build-system)
15571 (propagated-inputs
15572 `(("r-raster" ,r-raster)
15573 ("r-rgdal" ,r-rgdal)))
15574 (native-inputs
15575 `(("gfortran" ,gfortran)))
15576 (home-page "https://meteoexploration.com/R/insol/index.html")
15577 (synopsis "Tools for calculating solar radiation")
15578 (description
15579 "This package provides functions to compute insolation on tilted
15580surfaces, computes atmospheric transmittance and related parameters such as:
15581Earth radius vector, declination, sunset and sunrise, daylength, equation of
15582time, vector in the direction of the sun, vector normal to surface, and some
15583atmospheric physics.")
15584 (license license:gpl2+)))
15585
15586(define-public r-lifecycle
15587 (package
15588 (name "r-lifecycle")
15589 (version "0.1.0")
15590 (source
15591 (origin
15592 (method url-fetch)
15593 (uri (cran-uri "lifecycle" version))
15594 (sha256
15595 (base32
15596 "11rk7hkw63rfrf4aqmb4xrb88kg95xh8hajpjvjfwjym2v02h74n"))))
15597 (properties `((upstream-name . "lifecycle")))
15598 (build-system r-build-system)
15599 (propagated-inputs
15600 `(("r-glue" ,r-glue)
15601 ("r-rlang" ,r-rlang)))
15602 (home-page "https://github.com/r-lib/lifecycle")
15603 (synopsis "Manage the life cycle of your package functions")
15604 (description
15605 "Manage the life cycle of your exported functions with shared
15606conventions, documentation badges, and non-invasive deprecation warnings. The
15607lifecycle package defines four development stages (experimental, maturing,
15608stable, and questioning) and three deprecation stages (soft-deprecated,
15609deprecated, and defunct). It makes it easy to insert badges corresponding to
15610these stages in your documentation. Usage of deprecated functions are
15611signalled with increasing levels of non-invasive verbosity.")
15612 (license license:gpl3)))
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index e138b93e9bc..906a8e66bf0 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -2019,7 +2019,7 @@ the @code{take_while} predicate returned false after dropping the @code{by_ref}.
2019(define-public rust-percent-encoding 2019(define-public rust-percent-encoding
2020 (package 2020 (package
2021 (name "rust-percent-encoding") 2021 (name "rust-percent-encoding")
2022 (version "2.0.0") 2022 (version "2.1.0")
2023 (source 2023 (source
2024 (origin 2024 (origin
2025 (method url-fetch) 2025 (method url-fetch)
@@ -2027,7 +2027,7 @@ the @code{take_while} predicate returned false after dropping the @code{by_ref}.
2027 (file-name (string-append name "-" version ".tar.gz")) 2027 (file-name (string-append name "-" version ".tar.gz"))
2028 (sha256 2028 (sha256
2029 (base32 2029 (base32
2030 "0m6rkp3iy11la04p6z3492rns6n693pvmx585dvfmzzlzak2hkxs")))) 2030 "0bp3zrsk3kr47fbpipyczidbbx4g54lzxdm77ni1i3qws10mdzfl"))))
2031 (build-system cargo-build-system) 2031 (build-system cargo-build-system)
2032 (home-page "https://github.com/servo/rust-url/") 2032 (home-page "https://github.com/servo/rust-url/")
2033 (synopsis "Percent encoding and decoding") 2033 (synopsis "Percent encoding and decoding")
diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm
index 4be1eee156f..152258a5226 100644
--- a/gnu/packages/cups.scm
+++ b/gnu/packages/cups.scm
@@ -636,14 +636,14 @@ printer/driver specific, but spooler-independent PPD file.")
636(define-public foo2zjs 636(define-public foo2zjs
637 (package 637 (package
638 (name "foo2zjs") 638 (name "foo2zjs")
639 (version "20190517") 639 (version "20190909")
640 (source (origin 640 (source (origin
641 (method url-fetch) 641 (method url-fetch)
642 ;; XXX: This is an unversioned URL! 642 ;; XXX: This is an unversioned URL!
643 (uri "http://foo2zjs.rkkda.com/foo2zjs.tar.gz") 643 (uri "http://foo2zjs.rkkda.com/foo2zjs.tar.gz")
644 (sha256 644 (sha256
645 (base32 645 (base32
646 "13gzsd26nq4brx1xzpwmg1qnr4nk7ykgi94qr1hbjqfi561prki4")))) 646 "1nn84c045mbv6yzpjfggc6152bvgrmcxiyvgz9v2w3sws7ihshrm"))))
647 (build-system gnu-build-system) 647 (build-system gnu-build-system)
648 (arguments 648 (arguments
649 '(#:phases (modify-phases %standard-phases 649 '(#:phases (modify-phases %standard-phases
diff --git a/gnu/packages/dictionaries.scm b/gnu/packages/dictionaries.scm
index ba22fecf201..37bd4aaf6b0 100644
--- a/gnu/packages/dictionaries.scm
+++ b/gnu/packages/dictionaries.scm
@@ -218,7 +218,7 @@ It comes with a German-English dictionary with approximately 270,000 entries.")
218(define-public grammalecte 218(define-public grammalecte
219 (package 219 (package
220 (name "grammalecte") 220 (name "grammalecte")
221 (version "1.3.0") 221 (version "1.4.0")
222 (source 222 (source
223 (origin 223 (origin
224 (method url-fetch/zipbomb) 224 (method url-fetch/zipbomb)
@@ -226,10 +226,10 @@ It comes with a German-English dictionary with approximately 270,000 entries.")
226 "Grammalecte-fr-v" version ".zip")) 226 "Grammalecte-fr-v" version ".zip"))
227 (sha256 227 (sha256
228 (base32 228 (base32
229 "1knysfdd1rx4vc5cmmnry4jsza0cdjy26fv505m854yfmq6zrckd")))) 229 "0k30b9kcczsadjjgwja03rkm11cpcc1xi6w8l6k0qfbjfpkhsh66"))))
230 (build-system python-build-system) 230 (build-system python-build-system)
231 (home-page "https://grammalecte.net") 231 (home-page "https://grammalecte.net")
232 (synopsis "French spelling and grammar checker") 232 (synopsis "French spelling and grammar checker")
233 (description "Grammalecte is a grammar checker dedicated to the French 233 (description "Grammalecte is a grammar checker dedicated to the French
234language, derived from Lightproof. 234language, derived from Lightproof.
235 235
diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm
index 1ca2b95c197..66e7e22f261 100644
--- a/gnu/packages/education.scm
+++ b/gnu/packages/education.scm
@@ -2,7 +2,7 @@
2;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org> 2;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
3;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net> 3;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
4;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com> 4;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
5;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il> 5;;; Copyright © 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
6;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> 6;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
7;;; Copyright © 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr> 7;;; Copyright © 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
8;;; 8;;;
@@ -27,6 +27,7 @@
27 #:use-module (gnu packages base) 27 #:use-module (gnu packages base)
28 #:use-module (gnu packages bash) 28 #:use-module (gnu packages bash)
29 #:use-module (gnu packages compression) 29 #:use-module (gnu packages compression)
30 #:use-module (gnu packages curl)
30 #:use-module (gnu packages databases) 31 #:use-module (gnu packages databases)
31 #:use-module (gnu packages fonts) 32 #:use-module (gnu packages fonts)
32 #:use-module (gnu packages freedesktop) 33 #:use-module (gnu packages freedesktop)
@@ -36,6 +37,7 @@
36 #:use-module (gnu packages gnome) 37 #:use-module (gnu packages gnome)
37 #:use-module (gnu packages gtk) 38 #:use-module (gnu packages gtk)
38 #:use-module (gnu packages javascript) 39 #:use-module (gnu packages javascript)
40 #:use-module (gnu packages kde)
39 #:use-module (gnu packages kde-frameworks) ; extra-cmake-modules 41 #:use-module (gnu packages kde-frameworks) ; extra-cmake-modules
40 #:use-module (gnu packages perl) 42 #:use-module (gnu packages perl)
41 #:use-module (gnu packages pkg-config) 43 #:use-module (gnu packages pkg-config)
@@ -521,3 +523,101 @@ minutes. For simpler timetables, it may take a shorter time, under
521difficult timetables, it may take a longer time, a matter of hours.") 523difficult timetables, it may take a longer time, a matter of hours.")
522 (license license:agpl3+))) 524 (license license:agpl3+)))
523 525
526(define-public klavaro
527 (package
528 (name "klavaro")
529 (version "3.09")
530 (source
531 (origin
532 (method url-fetch)
533 (uri (string-append "mirror://sourceforge/klavaro/klavaro-"
534 version ".tar.bz2"))
535 (sha256
536 (base32
537 "12gml7h45b1w9s318h0d5wxw92h7pgajn2kh57j0ak9saq0yb0wr"))))
538 (build-system gnu-build-system)
539 (native-inputs
540 `(("intltool" ,intltool)
541 ("pkg-config" ,pkg-config)))
542 (inputs
543 `(("cairo" ,cairo)
544 ("curl" ,curl)
545 ("gtk+" ,gtk+)
546 ("pango" ,pango)))
547 (home-page "https://klavaro.sourceforge.io/en/index.html")
548 (synopsis "Touch typing tutor")
549 (description
550 "Klavaro is a simple tutor to teach correct typing, almost independently of
551language and very flexible regarding to new or unknown keyboard layouts.")
552 (license license:gpl3+)))
553
554(define-public ktouch
555 (package
556 (name "ktouch")
557 (version "19.08.1")
558 (source
559 (origin
560 (method url-fetch)
561 (uri (string-append "mirror://kde/stable/applications/"
562 version "/src/ktouch-" version ".tar.xz"))
563 (sha256
564 (base32
565 "19rdk94pls75hdvx11hnfk3qpm6l28p9q45q5f04sknxagrfaznr"))))
566 (build-system cmake-build-system)
567 (arguments
568 `(#:modules ((guix build cmake-build-system)
569 (guix build qt-utils)
570 (guix build utils))
571 #:imported-modules (,@%cmake-build-system-modules
572 (guix build qt-utils))
573 #:phases
574 (modify-phases %standard-phases
575 (add-after 'configure 'patch-makefiles
576 (lambda* (#:key inputs #:allow-other-keys)
577 (let ((qtdec (assoc-ref inputs "qtdeclarative")))
578 (substitute* '("src/CMakeFiles/ktouch_autogen.dir/build.make"
579 "src/CMakeFiles/ktouch.dir/build.make")
580 (("/gnu/store/.*qmlcachegen")
581 (string-append qtdec "/bin/qmlcachegen"))))
582 #t))
583 (add-after 'install 'wrap-executable
584 (lambda* (#:key outputs #:allow-other-keys)
585 (let ((out (assoc-ref outputs "out")))
586 (wrap-qt-program out "ktouch"))
587 #t)))))
588 (native-inputs
589 `(("extra-cmake-modules" ,extra-cmake-modules)
590 ("kdoctools" ,kdoctools)
591 ("pkg-config" ,pkg-config)))
592 (inputs
593 `(("kcmutils" ,kcmutils)
594 ("kcompletion" ,kcompletion)
595 ("kconfig" ,kconfig)
596 ("kconfigwidgets" ,kconfigwidgets)
597 ("kcoreaddons" ,kcoreaddons)
598 ("kdeclarative" ,kdeclarative)
599 ("ki18n" ,ki18n)
600 ("kiconthemes" ,kiconthemes)
601 ("kitemviews" ,kitemviews)
602 ("kqtquickcharts" ,kqtquickcharts)
603 ("ktextwidgets" ,ktextwidgets)
604 ("kwidgetsaddons" ,kwidgetsaddons)
605 ("kwindowsystem" ,kwindowsystem)
606 ("kxmlgui" ,kxmlgui)
607 ("libxcb" ,libxcb)
608 ("libxkbfile" ,libxkbfile)
609 ("qtbase" ,qtbase)
610 ("qtdeclarative" ,qtdeclarative)
611 ("qtgraphicaleffects" ,qtgraphicaleffects)
612 ("qtquickcontrols2" ,qtquickcontrols2)
613 ("qtx11extras" ,qtx11extras)
614 ("qtxmlpatterns" ,qtxmlpatterns)))
615 (home-page "https://edu.kde.org/ktouch/")
616 (synopsis "Touch typing tutor")
617 (description
618 "KTouch is an aid for learning how to type with speed and accuracy. It
619provides a sample text to type and indicates which fingers should be used for
620each key. A collection of lessons are included for a wide range of different
621languages and keyboard layouts, and typing statistics are used to dynamically
622adjust the level of difficulty.")
623 (license license:gpl2)))
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index e3c23ef945a..6b9027df8af 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -49,7 +49,7 @@
49;;; Copyright © 2019 LaFreniere, Joseph <joseph@lafreniere.xyz> 49;;; Copyright © 2019 LaFreniere, Joseph <joseph@lafreniere.xyz>
50;;; Copyright © 2019 Amar Singh <nly@disroot.org> 50;;; Copyright © 2019 Amar Singh <nly@disroot.org>
51;;; Copyright © 2019 Baptiste Strazzulla <bstrazzull@hotmail.fr> 51;;; Copyright © 2019 Baptiste Strazzulla <bstrazzull@hotmail.fr>
52;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autitici.org> 52;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
53;;; Copyright © 2019 Jens Mølgaard <jens@zete.tk> 53;;; Copyright © 2019 Jens Mølgaard <jens@zete.tk>
54;;; Copyright © 2019 Amin Bandali <bandali@gnu.org> 54;;; Copyright © 2019 Amin Bandali <bandali@gnu.org>
55;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org> 55;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org>
@@ -2932,7 +2932,7 @@ snippets for yasnippet.")
2932(define-public emacs-smart-mode-line 2932(define-public emacs-smart-mode-line
2933 (package 2933 (package
2934 (name "emacs-smart-mode-line") 2934 (name "emacs-smart-mode-line")
2935 (version "2.12.0") 2935 (version "2.13")
2936 (source 2936 (source
2937 (origin 2937 (origin
2938 (method git-fetch) 2938 (method git-fetch)
@@ -2941,7 +2941,7 @@ snippets for yasnippet.")
2941 (commit version))) 2941 (commit version)))
2942 (file-name (git-file-name name version)) 2942 (file-name (git-file-name name version))
2943 (sha256 2943 (sha256
2944 (base32 "1gs4ay9hdg8gmia4ir74qawk80pqwv99hp4yhy108kpfry5mrq6z")))) 2944 (base32 "164b697xm1rwcggv37dymhf3npbyh2bs59z8b6m5x35lb4c3lf8b"))))
2945 (build-system emacs-build-system) 2945 (build-system emacs-build-system)
2946 (propagated-inputs 2946 (propagated-inputs
2947 `(("emacs-rich-minority" ,emacs-rich-minority))) 2947 `(("emacs-rich-minority" ,emacs-rich-minority)))
@@ -3211,14 +3211,14 @@ source code using IPython.")
3211(define-public emacs-debbugs 3211(define-public emacs-debbugs
3212 (package 3212 (package
3213 (name "emacs-debbugs") 3213 (name "emacs-debbugs")
3214 (version "0.18") 3214 (version "0.19")
3215 (source (origin 3215 (source (origin
3216 (method url-fetch) 3216 (method url-fetch)
3217 (uri (string-append "https://elpa.gnu.org/packages/debbugs-" 3217 (uri (string-append "https://elpa.gnu.org/packages/debbugs-"
3218 version ".tar")) 3218 version ".tar"))
3219 (sha256 3219 (sha256
3220 (base32 3220 (base32
3221 "00kich80zdg7v3v613f9prqddkpwpm1nf9sj10f0n6wh15rzwv07")))) 3221 "0cpby8f088cqb5mpd756a2mb706x763k15cg2xdmmsxl415k3yw4"))))
3222 (build-system emacs-build-system) 3222 (build-system emacs-build-system)
3223 (arguments '(#:include '("\\.el$" "\\.wsdl$" "\\.info$"))) 3223 (arguments '(#:include '("\\.el$" "\\.wsdl$" "\\.info$")))
3224 (propagated-inputs 3224 (propagated-inputs
@@ -6008,7 +6008,7 @@ indentation guides in Emacs:
6008(define-public emacs-elpy 6008(define-public emacs-elpy
6009 (package 6009 (package
6010 (name "emacs-elpy") 6010 (name "emacs-elpy")
6011 (version "1.28.0") 6011 (version "1.31.0")
6012 (source (origin 6012 (source (origin
6013 (method git-fetch) 6013 (method git-fetch)
6014 (uri (git-reference 6014 (uri (git-reference
@@ -6017,7 +6017,7 @@ indentation guides in Emacs:
6017 (file-name (git-file-name name version)) 6017 (file-name (git-file-name name version))
6018 (sha256 6018 (sha256
6019 (base32 6019 (base32
6020 "073bwxwjzcbmvpcz9q2xjwzx9x7hkvjni6fwvikh6yawzjp56jis")))) 6020 "0bvmgqs3c80bhs9v5ymgadv7vk4iamha10y7rl09pixmjm4mzagk"))))
6021 (build-system emacs-build-system) 6021 (build-system emacs-build-system)
6022 (arguments 6022 (arguments
6023 `(#:include (cons* "^elpy/[^/]+\\.py$" "^snippets\\/" %default-include) 6023 `(#:include (cons* "^elpy/[^/]+\\.py$" "^snippets\\/" %default-include)
@@ -13189,16 +13189,17 @@ compilation/grep buffers. Works with @code{wgrep}, @code{ack}, @code{ag},
13189(define-public emacs-interactive-align 13189(define-public emacs-interactive-align
13190 (package 13190 (package
13191 (name "emacs-interactive-align") 13191 (name "emacs-interactive-align")
13192 (version "0.1.0") 13192 (version "0.4.2")
13193 (source 13193 (source
13194 (origin 13194 (origin
13195 (method url-fetch) 13195 (method git-fetch)
13196 (uri (string-append "https://github.com/mkcms/interactive-align/" 13196 (uri (git-reference
13197 "archive/" "v" version ".tar.gz")) 13197 (url "https://github.com/mkcms/interactive-align.git")
13198 (file-name (string-append name "-" version ".tar.gz")) 13198 (commit (string-append "v" version))))
13199 (file-name (git-file-name name version))
13199 (sha256 13200 (sha256
13200 (base32 13201 (base32
13201 "0sibpgb4lp6yy3pziak8f3hz4b28yj0dqy2nzh51z3d0b63h528m")))) 13202 "0bh03w91i622hbar5dcq631ndxx1y8kd3h655pgw1g0lqkv1mlnc"))))
13202 (build-system emacs-build-system) 13203 (build-system emacs-build-system)
13203 (home-page "https://github.com/mkcms/interactive-align/") 13204 (home-page "https://github.com/mkcms/interactive-align/")
13204 (synopsis "Interactive align-regexp command in Emacs") 13205 (synopsis "Interactive align-regexp command in Emacs")
@@ -13668,7 +13669,7 @@ through the symbol: @command{this-fn}.")
13668(define-public emacs-dumb-jump 13669(define-public emacs-dumb-jump
13669 (package 13670 (package
13670 (name "emacs-dumb-jump") 13671 (name "emacs-dumb-jump")
13671 (version "0.5.2") 13672 (version "0.5.3")
13672 (source 13673 (source
13673 (origin 13674 (origin
13674 (method git-fetch) 13675 (method git-fetch)
@@ -13677,7 +13678,7 @@ through the symbol: @command{this-fn}.")
13677 (commit (string-append "v" version)))) 13678 (commit (string-append "v" version))))
13678 (file-name (git-file-name name version)) 13679 (file-name (git-file-name name version))
13679 (sha256 13680 (sha256
13680 (base32 "00ph85vp8sa3k99qrdxfz4l8zx121q9xf47vvspzg26bk9l4nwin")))) 13681 (base32 "1njf60264snhxrd36m4z687lqfkis0p9mmrr7cf1c8l0lfdvawxi"))))
13681 (build-system emacs-build-system) 13682 (build-system emacs-build-system)
13682 (arguments 13683 (arguments
13683 `(#:tests? #f ; FIXME: Tests freeze when run. 13684 `(#:tests? #f ; FIXME: Tests freeze when run.
@@ -14260,30 +14261,29 @@ on-line service.")
14260 (license license:gpl3+))) 14261 (license license:gpl3+)))
14261 14262
14262(define-public emacs-helm-company 14263(define-public emacs-helm-company
14263 (let ((commit "d3fc093a0e833b4dee6561c00d6df3d62aa50f3f")) 14264 (package
14264 (package 14265 (name "emacs-helm-company")
14265 (name "emacs-helm-company") 14266 (version "0.2.5")
14266 (version (git-version "0.2.3" "1" commit)) 14267 (source
14267 (source 14268 (origin
14268 (origin 14269 (method git-fetch)
14269 (method git-fetch) 14270 (uri (git-reference
14270 (uri (git-reference 14271 (url "https://github.com/Sodel-the-Vociferous/helm-company")
14271 (url "https://github.com/Sodel-the-Vociferous/helm-company") 14272 (commit (string-append "v" version))))
14272 (commit commit))) 14273 (file-name (git-file-name name version))
14273 (file-name (git-file-name name version)) 14274 (sha256
14274 (sha256 14275 (base32
14275 (base32 14276 "1ci37w6ahnqrfpb284gjvxmimlf61sdxb9k192yy9q983cksv2hx"))))
14276 "1ciirsanhajdqm5iwl8k9ywf4jha1wdv4sc4d9kslyrfr9zn4q6k")))) 14277 (build-system emacs-build-system)
14277 (build-system emacs-build-system) 14278 (propagated-inputs
14278 (propagated-inputs 14279 `(("emacs-helm" ,emacs-helm)
14279 `(("emacs-helm" ,emacs-helm) 14280 ("emacs-company" ,emacs-company)))
14280 ("emacs-company" ,emacs-company))) 14281 (home-page "https://github.com/Sodel-the-Vociferous/helm-company")
14281 (home-page "https://github.com/Sodel-the-Vociferous/helm-company") 14282 (synopsis "Helm interface for company-mode")
14282 (synopsis "Helm interface for company-mode") 14283 (description
14283 (description 14284 "This is a Helm interface to company-mode, a text completion
14284 "This is a Helm interface to company-mode, a text completion
14285framework.") 14285framework.")
14286 (license license:gpl3+)))) 14286 (license license:gpl3+)))
14287 14287
14288(define-public emacs-helm-descbinds 14288(define-public emacs-helm-descbinds
14289 (let ((commit "033be73f21778633813264ce1634a6e1ad873d8e")) 14289 (let ((commit "033be73f21778633813264ce1634a6e1ad873d8e"))
@@ -17804,17 +17804,17 @@ connections using TLS encryption.")
17804(define-public emacs-zerodark-theme 17804(define-public emacs-zerodark-theme
17805 (package 17805 (package
17806 (name "emacs-zerodark-theme") 17806 (name "emacs-zerodark-theme")
17807 (version "4.5") 17807 (version "4.6")
17808 (source 17808 (source
17809 (origin 17809 (origin
17810 (method git-fetch) 17810 (method git-fetch)
17811 (uri (git-reference 17811 (uri (git-reference
17812 (url "https://gitlab.petton.fr/nico/zerodark-theme.git") 17812 (url "https://github.com/NicolasPetton/zerodark-theme")
17813 (commit version))) 17813 (commit version)))
17814 (file-name (git-file-name name version)) 17814 (file-name (git-file-name name version))
17815 (sha256 17815 (sha256
17816 (base32 17816 (base32
17817 "0nnlxzsmhsbszqigcyxak9i1a0digrd13gv6v18ck4h760mihh1m")))) 17817 "0pfyd1iqs7l2ngwgvj9n0r9k1px7yl16h8n502xdyf0pprxcs4p6"))))
17818 (build-system emacs-build-system) 17818 (build-system emacs-build-system)
17819 (propagated-inputs 17819 (propagated-inputs
17820 `(("emacs-flycheck" ,emacs-flycheck) 17820 `(("emacs-flycheck" ,emacs-flycheck)
@@ -18171,3 +18171,91 @@ JIRA issue servers.")
18171 "This packages fontifies the ssh config keywords and creates 18171 "This packages fontifies the ssh config keywords and creates
18172keybindings for skipping from host section to host section.") 18172keybindings for skipping from host section to host section.")
18173 (license license:gpl3+)))) 18173 (license license:gpl3+))))
18174
18175(define-public emacs-tao-theme
18176 (let ((commit "c5107fbe7e752f4e58c2d2147ff18a1ebb12937c")
18177 (revision "0"))
18178 (package
18179 (name "emacs-tao-theme")
18180 (version (git-version "0" revision commit))
18181 (source
18182 (origin
18183 (method git-fetch)
18184 (uri (git-reference
18185 (url "https://github.com/11111000000/tao-theme-emacs.git")
18186 (commit commit)))
18187 (file-name (git-file-name name version))
18188 (sha256
18189 (base32
18190 "07vvlglmkj87hpxz79s3bl2cjn71vain57fdxs7j9vlr5jkchxwn"))))
18191 (build-system emacs-build-system)
18192 (home-page "https://github.com/11111000000/tao-theme-emacs")
18193 (synopsis "Parameterized uncolored color themes for Emacs")
18194 (description
18195 "This package provides two parameterized uncolored color themes for
18196Emacs: @code{tao-yin} and @code{tao-yang}. The default
18197@code{tao-theme-scale-fn} is @code{tao-theme-golden-scale}.
18198
18199You can customize: @code{tao-theme-scale-fn}, that returns 16 2-digit numbers;
18200@code{tao-theme-scale-filter-fn}, for edge filter; and
18201@code{tao-theme-use-height}.")
18202 (license license:gpl3+))))
18203
18204(define-public emacs-doom-themes
18205 (package
18206 (name "emacs-doom-themes")
18207 (version "2.1.6")
18208 (source (origin
18209 (method git-fetch)
18210 (uri (git-reference
18211 (url "https://github.com/hlissner/emacs-doom-themes.git")
18212 (commit (string-append "v" version))))
18213 (file-name (git-file-name name version))
18214 (sha256
18215 (base32 "042pzcdhxi2z07jcscgjbaki9nrrm0cbgbbrnymd1r4q8ckkn8l9"))))
18216 (build-system emacs-build-system)
18217 (native-inputs
18218 `(("emacs-ert-runner" ,emacs-ert-runner)))
18219 (arguments
18220 `(#:tests? #t
18221 #:test-command '("ert-runner")
18222 #:phases
18223 (modify-phases %standard-phases
18224 (add-after 'unpack 'move-themes
18225 (lambda _
18226 ;; Move the source files to the top level, which is in the
18227 ;; EMACSLOADPATH.
18228 (for-each (lambda (f)
18229 (rename-file f (basename f)))
18230 (find-files "./themes" ".*\\.el$"))
18231 #t)))))
18232 (synopsis "Wide collection of color themes for Emacs")
18233 (description "Emacs-doom-themes contains numerous popular color themes for
18234Emacs that integrate with major modes like Org-mode.")
18235 (home-page "https://github.com/hlissner/emacs-doom-themes")
18236 (license license:expat)))
18237
18238(define-public emacs-elixir-mode
18239 (package
18240 (name "emacs-elixir-mode")
18241 (version "2.3.1")
18242 (source
18243 (origin
18244 (method url-fetch)
18245 (uri (string-append
18246 "https://stable.melpa.org/packages/elixir-mode-"
18247 version
18248 ".tar"))
18249 (sha256
18250 (base32
18251 "091cizxg1aw8bkj58y048mj020ssapjflav633z9bl6gmi10dy4v"))))
18252 (build-system emacs-build-system)
18253 (propagated-inputs
18254 `(("emacs-pkg-info" ,emacs-pkg-info)))
18255 (home-page
18256 "https://github.com/elixir-editors/emacs-elixir")
18257 (synopsis "Major mode for editing Elixir files")
18258 (description
18259 "Elixir-Mode Provides font-locking, indentation and navigation support
18260 for the Elixir programming language.")
18261 (license license:gpl3+)))
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 75a2e245f6e..449c6946120 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -399,7 +399,7 @@ Super Game Boy, BS-X Satellaview, and Sufami Turbo.")
399(define-public mgba 399(define-public mgba
400 (package 400 (package
401 (name "mgba") 401 (name "mgba")
402 (version "0.7.2") 402 (version "0.7.3")
403 (source (origin 403 (source (origin
404 (method git-fetch) 404 (method git-fetch)
405 (uri (git-reference 405 (uri (git-reference
@@ -408,7 +408,7 @@ Super Game Boy, BS-X Satellaview, and Sufami Turbo.")
408 (file-name (git-file-name name version)) 408 (file-name (git-file-name name version))
409 (sha256 409 (sha256
410 (base32 410 (base32
411 "0g0xa1mzvan0sl1p5c784j2g5mcw9kd2b7wiahy06gy0c1nmbcnp")) 411 "1wrmwh50rv8bd328r8cisrihq6h90kx2bfb0vmjfbsd3l1jvgrgm"))
412 (modules '((guix build utils))) 412 (modules '((guix build utils)))
413 (snippet 413 (snippet
414 ;; Make sure we don't use the bundled software. 414 ;; Make sure we don't use the bundled software.
@@ -1048,7 +1048,7 @@ emulation community. It provides highly accurate emulation.")
1048(define-public retroarch 1048(define-public retroarch
1049 (package 1049 (package
1050 (name "retroarch") 1050 (name "retroarch")
1051 (version "1.7.8") 1051 (version "1.7.8.4")
1052 (source 1052 (source
1053 (origin 1053 (origin
1054 (method git-fetch) 1054 (method git-fetch)
@@ -1057,7 +1057,7 @@ emulation community. It provides highly accurate emulation.")
1057 (commit (string-append "v" version)))) 1057 (commit (string-append "v" version))))
1058 (file-name (git-file-name name version)) 1058 (file-name (git-file-name name version))
1059 (sha256 1059 (sha256
1060 (base32 "0jwy5winrm87s6xa645fwa47x242r25m6i3rwf10x59448bd19r6")))) 1060 (base32 "1i3i23xwvmck8k2fpalr49np7xjzfg507243mybqrljawlnbxvph"))))
1061 (build-system gnu-build-system) 1061 (build-system gnu-build-system)
1062 (arguments 1062 (arguments
1063 `(#:tests? #f ; no tests 1063 `(#:tests? #f ; no tests
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 7f5409c8356..c1c1b18ed36 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -65,6 +65,7 @@
65 #:use-module (gnu packages glib) 65 #:use-module (gnu packages glib)
66 #:use-module (gnu packages gnome) 66 #:use-module (gnu packages gnome)
67 #:use-module (gnu packages gperf) 67 #:use-module (gnu packages gperf)
68 #:use-module (gnu packages graphics)
68 #:use-module (gnu packages groff) 69 #:use-module (gnu packages groff)
69 #:use-module (gnu packages gtk) 70 #:use-module (gnu packages gtk)
70 #:use-module (gnu packages guile) 71 #:use-module (gnu packages guile)
@@ -89,6 +90,7 @@
89 #:use-module (gnu packages tex) 90 #:use-module (gnu packages tex)
90 #:use-module (gnu packages version-control) 91 #:use-module (gnu packages version-control)
91 #:use-module (gnu packages wxwidgets) 92 #:use-module (gnu packages wxwidgets)
93 #:use-module (gnu packages xml)
92 #:use-module (gnu packages xorg)) 94 #:use-module (gnu packages xorg))
93 95
94(define-public librecad 96(define-public librecad
@@ -2145,3 +2147,70 @@ well as conversion and validation tools for input and output data. The
2145specification can be downloaded at @url{http://3mf.io/specification/}.") 2147specification can be downloaded at @url{http://3mf.io/specification/}.")
2146 (home-page "https://3mf.io/") 2148 (home-page "https://3mf.io/")
2147 (license license:bsd-2))) 2149 (license license:bsd-2)))
2150
2151(define-public openscad
2152 (package
2153 (name "openscad")
2154 (version "2019.05")
2155 (source
2156 (origin
2157 (method url-fetch)
2158 (uri (string-append "https://files.openscad.org/openscad-" version
2159 ".src.tar.gz"))
2160 (sha256
2161 (base32
2162 "0nbgk5q5pgnw53la0kccdcpz2f4xf6d6076rkn0q08z57hkc85ha"))))
2163 (build-system cmake-build-system)
2164 (inputs
2165 `(("boost" ,boost)
2166 ("cgal" ,cgal)
2167 ("double-conversion" ,double-conversion)
2168 ("eigen" ,eigen)
2169 ("fontconfig" ,fontconfig)
2170 ("glew" ,glew)
2171 ("gmp" ,gmp)
2172 ("harfbuzz" ,harfbuzz)
2173 ("lib3mf" ,lib3mf)
2174 ("libxml2" ,libxml2)
2175 ("libzip" ,libzip)
2176 ("mpfr" ,mpfr)
2177 ("opencsg" ,opencsg)
2178 ("qscintilla" ,qscintilla)
2179 ("qtbase" ,qtbase)
2180 ("qtmultimedia" ,qtmultimedia)))
2181 (native-inputs
2182 `(("bison" ,bison)
2183 ("flex" ,flex)
2184 ("gettext" ,gettext-minimal)
2185 ("pkg-config" ,pkg-config)
2186 ("which" ,which)
2187 ;; the following are only needed for tests
2188 ("imagemagick" ,imagemagick)
2189 ("ps" ,procps)
2190 ("python" ,python)
2191 ("xvfb" ,xorg-server)))
2192 (arguments
2193 `(#:phases
2194 (modify-phases %standard-phases
2195 (replace 'configure
2196 (lambda* (#:key outputs #:allow-other-keys)
2197 (invoke "qmake"
2198 (string-append "PREFIX=" (assoc-ref outputs "out")))
2199 #t))
2200 (replace 'check
2201 (lambda _
2202 (with-directory-excursion "tests"
2203 (invoke "cmake" ".")
2204 (invoke "make")
2205 (invoke "ctest"))
2206 ;; strip python test files since lib dir ends up in out/share
2207 (for-each delete-file
2208 (find-files "libraries/MCAD" ".*\\.py"))
2209 #t)))))
2210 (synopsis "Script-based 3D modeling application")
2211 (description
2212 "OpenSCAD is a 3D Computer-aided Design (CAD) application. Unlike an
2213interactive modeler, OpenSCAD generates 3D models from a script, giving you
2214full programmatic control over your models.")
2215 (home-page "https://www.openscad.org/")
2216 (license license:gpl2+)))
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index e8c4e6bc9d0..3f5f7b12855 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -476,16 +476,20 @@ other machines/servers. Electroncash does not download the Bitcoin Cash blockch
476 ("git" ,git) 476 ("git" ,git)
477 ("graphviz" ,graphviz) 477 ("graphviz" ,graphviz)
478 ("pkg-config" ,pkg-config) 478 ("pkg-config" ,pkg-config)
479 ("protobuf" ,protobuf)
480 ("python" ,python)
479 ("qttools" ,qttools))) 481 ("qttools" ,qttools)))
480 (inputs 482 (inputs
481 `(("boost" ,boost) 483 `(("boost" ,boost)
482 ("cppzmq" ,cppzmq) 484 ("cppzmq" ,cppzmq)
483 ("expat" ,expat) 485 ("expat" ,expat)
484 ("hidapi" ,hidapi) 486 ("hidapi" ,hidapi)
485 ("libunwind" ,libunwind)
486 ("libsodium" ,libsodium) 487 ("libsodium" ,libsodium)
488 ("libunwind" ,libunwind)
489 ("libusb" ,libusb)
487 ("miniupnpc" ,miniupnpc) 490 ("miniupnpc" ,miniupnpc)
488 ("openssl" ,openssl) 491 ("openssl" ,openssl)
492 ("protobuf" ,protobuf)
489 ("rapidjson" ,rapidjson) 493 ("rapidjson" ,rapidjson)
490 ("readline" ,readline) 494 ("readline" ,readline)
491 ("unbound" ,unbound) 495 ("unbound" ,unbound)
@@ -493,9 +497,12 @@ other machines/servers. Electroncash does not download the Bitcoin Cash blockch
493 ("zeromq" ,zeromq))) 497 ("zeromq" ,zeromq)))
494 (arguments 498 (arguments
495 `(#:out-of-source? #t 499 `(#:out-of-source? #t
496 #:configure-flags '("-DARCH=default" 500 #:configure-flags
497 "-DBUILD_TESTS=ON" 501 (list "-DARCH=default"
498 "-DBUILD_GUI_DEPS=ON") 502 "-DBUILD_TESTS=ON"
503 "-DBUILD_GUI_DEPS=ON"
504 (string-append "-DReadline_ROOT_DIR="
505 (assoc-ref %build-inputs "readline")))
499 #:phases 506 #:phases
500 (modify-phases %standard-phases 507 (modify-phases %standard-phases
501 ;; tests/core_tests need a valid HOME 508 ;; tests/core_tests need a valid HOME
@@ -534,7 +541,13 @@ other machines/servers. Electroncash does not download the Bitcoin Cash blockch
534 ":"))) 541 ":")))
535 (invoke "tests/unit_tests/unit_tests" 542 (invoke "tests/unit_tests/unit_tests"
536 (string-append "--gtest_filter=-" 543 (string-append "--gtest_filter=-"
537 excluded-unit-tests)))))))) 544 excluded-unit-tests)))))
545 (add-after 'install 'delete-dead-links
546 (lambda* (#:key outputs #:allow-other-keys)
547 (let ((out (assoc-ref outputs "out")))
548 (delete-file (string-append out "/lib/libprotobuf.so"))
549 (delete-file (string-append out "/lib/libusb-1.0.so"))
550 #t))))))
538 (home-page "https://getmonero.org/") 551 (home-page "https://getmonero.org/")
539 (synopsis "Command-line interface to the Monero currency") 552 (synopsis "Command-line interface to the Monero currency")
540 (description 553 (description
@@ -545,7 +558,7 @@ the Monero command line client and daemon.")
545(define-public monero-gui 558(define-public monero-gui
546 (package 559 (package
547 (name "monero-gui") 560 (name "monero-gui")
548 (version "0.14.1.0") 561 (version "0.14.1.2")
549 (source 562 (source
550 (origin 563 (origin
551 (method git-fetch) 564 (method git-fetch)
@@ -555,7 +568,7 @@ the Monero command line client and daemon.")
555 (file-name (git-file-name name version)) 568 (file-name (git-file-name name version))
556 (sha256 569 (sha256
557 (base32 570 (base32
558 "0ilx47771faygf97wilm64xnqxgxa3b43q0g9v014npk0qj8pc31")))) 571 "1rm043r6y2mzy8pclnzbjjfxgps8pkfa2b92p66k8y8rdmgq6m1k"))))
559 (build-system gnu-build-system) 572 (build-system gnu-build-system)
560 (native-inputs 573 (native-inputs
561 `(("pkg-config" ,pkg-config) 574 `(("pkg-config" ,pkg-config)
@@ -563,9 +576,11 @@ the Monero command line client and daemon.")
563 (inputs 576 (inputs
564 `(("boost" ,boost) 577 `(("boost" ,boost)
565 ("hidapi" ,hidapi) 578 ("hidapi" ,hidapi)
566 ("libunwind" ,libunwind)
567 ("libsodium" ,libsodium) 579 ("libsodium" ,libsodium)
580 ("libunwind" ,libunwind)
581 ("libusb" ,libusb)
568 ("openssl" ,openssl) 582 ("openssl" ,openssl)
583 ("protobuf" ,protobuf)
569 ("qtbase" ,qtbase) 584 ("qtbase" ,qtbase)
570 ("qtdeclarative" ,qtdeclarative) 585 ("qtdeclarative" ,qtdeclarative)
571 ("qtgraphicaleffects" ,qtgraphicaleffects) 586 ("qtgraphicaleffects" ,qtgraphicaleffects)
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index b1368cb72ed..8a302ba5bc8 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -925,15 +925,15 @@ interfaces, based on the useradd, usermod and userdel commands.")
925(define-public libmbim 925(define-public libmbim
926 (package 926 (package
927 (name "libmbim") 927 (name "libmbim")
928 (version "1.18.2") 928 (version "1.20.0")
929 (source (origin 929 (source (origin
930 (method url-fetch) 930 (method url-fetch)
931 (uri (string-append 931 (uri (string-append
932 "https://www.freedesktop.org/software/" name "/" 932 "https://www.freedesktop.org/software/libmbim/"
933 name "-" version ".tar.xz")) 933 "libmbim-" version ".tar.xz"))
934 (sha256 934 (sha256
935 (base32 935 (base32
936 "0s4jsfsydp2vykv7lnimalp9i680aas1qcx7zdpjiic64b5g48vp")))) 936 "0rm8j4zh9gnb3yi324cnxy91gdimc1vg5gv1kxc2m5lymb3wdxrc"))))
937 (build-system gnu-build-system) 937 (build-system gnu-build-system)
938 (native-inputs 938 (native-inputs
939 `(("glib:bin" ,glib "bin") ; for glib-mkenums 939 `(("glib:bin" ,glib "bin") ; for glib-mkenums
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 7eac935a696..bb4c1d26bb4 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -314,6 +314,16 @@ provide connectivity for client applications written in any language.")
314 (base32 314 (base32
315 "1pmvvm3sgnpngfa7884mqhq3fwdjh9sr0ca07ypnidcg0y341w53")))) 315 "1pmvvm3sgnpngfa7884mqhq3fwdjh9sr0ca07ypnidcg0y341w53"))))
316 (build-system python-build-system) 316 (build-system python-build-system)
317 (arguments
318 `(#:phases
319 (modify-phases %standard-phases
320 (add-before 'build 'fix-pillow
321 (lambda _
322 ;; pillow's version is not in PIL.Image.VERSION anymore
323 (substitute* "nml/version_info.py"
324 (("from PIL import Image") "import PIL")
325 (("Image.VERSION") "PIL.__version__"))
326 #t)))))
317 (propagated-inputs 327 (propagated-inputs
318 `(("python-pillow" ,python-pillow) 328 `(("python-pillow" ,python-pillow)
319 ("python-ply" ,python-ply))) 329 ("python-ply" ,python-ply)))
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 26170f1cad0..d41d3e1f663 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -2213,7 +2213,24 @@ also available.")
2213 (modify-phases %standard-phases 2213 (modify-phases %standard-phases
2214 (add-before 2214 (add-before
2215 'configure 'link-libm 2215 'configure 'link-libm
2216 (lambda _ (setenv "LIBS" "-lm")))))) 2216 (lambda _ (setenv "LIBS" "-lm")))
2217 (add-after 'install 'create-desktop-entry
2218 (lambda* (#:key outputs #:allow-other-keys)
2219 (let* ((out (assoc-ref outputs "out"))
2220 (apps (string-append out "/share/applications")))
2221 (mkdir-p apps)
2222 (with-output-to-file
2223 (string-append apps "/gnujump.desktop")
2224 (lambda _
2225 (format #t
2226 "[Desktop Entry]~@
2227 Name=GNUjump~@
2228 Comment=Jump up the tower to survive~@
2229 Exec=~a/bin/gnujump~@
2230 Terminal=false~@
2231 Type=Application~@
2232 Categories=Game;ArcadeGame~%"
2233 out)))))))))
2217 (inputs 2234 (inputs
2218 `(("glu" ,glu) 2235 `(("glu" ,glu)
2219 ("mesa" ,mesa) 2236 ("mesa" ,mesa)
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index a2a5f98b76c..520d04d75f8 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -39,6 +39,8 @@
39;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org> 39;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
40;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org> 40;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org>
41;;; Copyright © 2019 Jonathan Frederickson <jonathan@terracrypt.net> 41;;; Copyright © 2019 Jonathan Frederickson <jonathan@terracrypt.net>
42;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
43;;; Copyright © 2019 Martin Becze <mjbecze@riseup.net>
42;;; 44;;;
43;;; This file is part of GNU Guix. 45;;; This file is part of GNU Guix.
44;;; 46;;;
@@ -65,6 +67,7 @@
65 #:use-module (gnu packages base) 67 #:use-module (gnu packages base)
66 #:use-module (gnu packages bash) 68 #:use-module (gnu packages bash)
67 #:use-module (gnu packages bison) 69 #:use-module (gnu packages bison)
70 #:use-module (gnu packages boost)
68 #:use-module (gnu packages build-tools) 71 #:use-module (gnu packages build-tools)
69 #:use-module (gnu packages calendar) 72 #:use-module (gnu packages calendar)
70 #:use-module (gnu packages cdrom) 73 #:use-module (gnu packages cdrom)
@@ -2626,7 +2629,7 @@ library.")
2626 (method url-fetch) 2629 (method url-fetch)
2627 (uri (string-append "mirror://gnome/sources/glib-networking/" 2630 (uri (string-append "mirror://gnome/sources/glib-networking/"
2628 (version-major+minor version) "/" 2631 (version-major+minor version) "/"
2629 name "-" version ".tar.xz")) 2632 "glib-networking-" version ".tar.xz"))
2630 (sha256 2633 (sha256
2631 (base32 2634 (base32
2632 "1mfw44qpmwvz6yzj8c6spx6z357wrmkk15byrkc5byagd82860fm")))) 2635 "1mfw44qpmwvz6yzj8c6spx6z357wrmkk15byrkc5byagd82860fm"))))
@@ -2689,7 +2692,7 @@ libxml to ease remote use of the RESTful API.")
2689 (method url-fetch) 2692 (method url-fetch)
2690 (uri (string-append "mirror://gnome/sources/libsoup/" 2693 (uri (string-append "mirror://gnome/sources/libsoup/"
2691 (version-major+minor version) "/" 2694 (version-major+minor version) "/"
2692 name "-" version ".tar.xz")) 2695 "libsoup-" version ".tar.xz"))
2693 (sha256 2696 (sha256
2694 (base32 2697 (base32
2695 "0amfw1yvy1kjrg41rfh2vvrw5gkwnyckqbw1fab50hm6xc1acbmx")))) 2698 "0amfw1yvy1kjrg41rfh2vvrw5gkwnyckqbw1fab50hm6xc1acbmx"))))
@@ -2795,16 +2798,16 @@ and the GLib main loop, to integrate well with GNOME applications.")
2795(define-public libsecret 2798(define-public libsecret
2796 (package 2799 (package
2797 (name "libsecret") 2800 (name "libsecret")
2798 (version "0.18.8") 2801 (version "0.19.1")
2799 (source (origin 2802 (source (origin
2800 (method url-fetch) 2803 (method url-fetch)
2801 (uri (string-append 2804 (uri (string-append
2802 "mirror://gnome/sources/libsecret/" 2805 "mirror://gnome/sources/libsecret/"
2803 (version-major+minor version) "/" 2806 (version-major+minor version) "/"
2804 name "-" version ".tar.xz")) 2807 "libsecret-" version ".tar.xz"))
2805 (sha256 2808 (sha256
2806 (base32 2809 (base32
2807 "058x64689k55wxfkdp4svhnwvv8jmqm7z5mrynybl38f4sfqiyiv")))) 2810 "0fhflcsr70b1pps2pcvqcbdhip2ny5am9nbm634f4sj5g40y30w5"))))
2808 (build-system gnu-build-system) 2811 (build-system gnu-build-system)
2809 (outputs '("out" "doc")) 2812 (outputs '("out" "doc"))
2810 (arguments 2813 (arguments
@@ -3353,7 +3356,7 @@ playlists in a variety of formats.")
3353(define-public aisleriot 3356(define-public aisleriot
3354 (package 3357 (package
3355 (name "aisleriot") 3358 (name "aisleriot")
3356 (version "3.22.8") 3359 (version "3.22.9")
3357 (source (origin 3360 (source (origin
3358 (method url-fetch) 3361 (method url-fetch)
3359 (uri (string-append "mirror://gnome/sources/aisleriot/" 3362 (uri (string-append "mirror://gnome/sources/aisleriot/"
@@ -3361,7 +3364,7 @@ playlists in a variety of formats.")
3361 "aisleriot-" version ".tar.xz")) 3364 "aisleriot-" version ".tar.xz"))
3362 (sha256 3365 (sha256
3363 (base32 3366 (base32
3364 "15pm39679ymxki07sb5nvhycz4z53zwbvascyp5wm4864bn98815")))) 3367 "0yzdh9cw5cjjgvfh75bihl968czlgfmpmn1z0fdk88sgvpjgzwji"))))
3365 (build-system glib-or-gtk-build-system) 3368 (build-system glib-or-gtk-build-system)
3366 (arguments 3369 (arguments
3367 '(#:configure-flags 3370 '(#:configure-flags
@@ -4204,9 +4207,9 @@ part of udev-extras, then udev, then systemd. It's now a project on its own.")
4204 (version "1.40.1") 4207 (version "1.40.1")
4205 (source (origin 4208 (source (origin
4206 (method url-fetch) 4209 (method url-fetch)
4207 (uri (string-append "mirror://gnome/sources/" name "/" 4210 (uri (string-append "mirror://gnome/sources/gvfs/"
4208 (version-major+minor version) "/" 4211 (version-major+minor version) "/"
4209 name "-" version ".tar.xz")) 4212 "gvfs-" version ".tar.xz"))
4210 (sha256 4213 (sha256
4211 (base32 4214 (base32
4212 "1cfnzamr4mvgpf6yhm28lh9cafy9z6842s8jpbqnfizfxybg8ylj")))) 4215 "1cfnzamr4mvgpf6yhm28lh9cafy9z6842s8jpbqnfizfxybg8ylj"))))
@@ -5902,15 +5905,15 @@ providing graphical log-ins and managing local and remote displays.")
5902(define-public libgtop 5905(define-public libgtop
5903 (package 5906 (package
5904 (name "libgtop") 5907 (name "libgtop")
5905 (version "2.38.0") 5908 (version "2.40.0")
5906 (source (origin 5909 (source (origin
5907 (method url-fetch) 5910 (method url-fetch)
5908 (uri (string-append "mirror://gnome/sources/" name "/" 5911 (uri (string-append "mirror://gnome/sources/libgtop/"
5909 (version-major+minor version) "/" 5912 (version-major+minor version) "/"
5910 name "-" version ".tar.xz")) 5913 "libgtop-" version ".tar.xz"))
5911 (sha256 5914 (sha256
5912 (base32 5915 (base32
5913 "04mnxgzyb26wqk6qij4iw8cxwl82r8pcsna5dg8vz2j3pdi0wv2g")))) 5916 "1m6jbqk8maa52gxrf223442fr5bvvxgb7ham6v039i3r1i62gwvq"))))
5914 (build-system gnu-build-system) 5917 (build-system gnu-build-system)
5915 (native-inputs 5918 (native-inputs
5916 `(("gobject-introspection" ,gobject-introspection) 5919 `(("gobject-introspection" ,gobject-introspection)
@@ -6295,9 +6298,9 @@ easy, safe, and automatic.")
6295 (version "2.0.4") 6298 (version "2.0.4")
6296 (source (origin 6299 (source (origin
6297 (method url-fetch) 6300 (method url-fetch)
6298 (uri (string-append "mirror://gnome/sources/" name "/" 6301 (uri (string-append "mirror://gnome/sources/tracker/"
6299 (version-major+minor version) "/" 6302 (version-major+minor version) "/"
6300 name "-" version ".tar.xz")) 6303 "tracker-" version ".tar.xz"))
6301 (sha256 6304 (sha256
6302 (base32 6305 (base32
6303 "1mfc5lv820kr7ssi7hldn25gmshh65k19kh478qjsnb64sshsbyf")))) 6306 "1mfc5lv820kr7ssi7hldn25gmshh65k19kh478qjsnb64sshsbyf"))))
@@ -7224,9 +7227,9 @@ compiled.")
7224 (source (origin 7227 (source (origin
7225 (method url-fetch) 7228 (method url-fetch)
7226 (uri (string-append 7229 (uri (string-append
7227 "mirror://gnome/sources/" name "/" 7230 "mirror://gnome/sources/gfbgraph/"
7228 (version-major+minor version) "/" 7231 (version-major+minor version) "/"
7229 name "-" version ".tar.xz")) 7232 "gfbgraph-" version ".tar.xz"))
7230 (sha256 7233 (sha256
7231 (base32 7234 (base32
7232 "1dp0v8ia35fxs9yhnqpxj3ir5lh018jlbiwifjfn8ayy7h47j4fs")))) 7235 "1dp0v8ia35fxs9yhnqpxj3ir5lh018jlbiwifjfn8ayy7h47j4fs"))))
@@ -7994,7 +7997,7 @@ configurable file renaming. ")
7994(define-public workrave 7997(define-public workrave
7995 (package 7998 (package
7996 (name "workrave") 7999 (name "workrave")
7997 (version "1.10.23") 8000 (version "1.10.34")
7998 (source 8001 (source
7999 (origin 8002 (origin
8000 (method git-fetch) 8003 (method git-fetch)
@@ -8005,20 +8008,20 @@ configurable file renaming. ")
8005 version))))) 8008 version)))))
8006 (file-name (git-file-name name version)) 8009 (file-name (git-file-name name version))
8007 (sha256 8010 (sha256
8008 (base32 "1qhlwfhwk5agv4904d6bsf83k9k89q7bms6agg967vsca4905vcw")))) 8011 (base32 "0czwhr7nw523753ajcjjfwrf91mq8pmzr19gp0srqsvb1dsn1zcf"))))
8009 (build-system glib-or-gtk-build-system) 8012 (build-system glib-or-gtk-build-system)
8010 (propagated-inputs `(("glib" ,glib) 8013 (inputs `(("glib" ,glib)
8011 ("gtk+" ,gtk+) 8014 ("gtk+" ,gtk+)
8012 ("gdk-pixbuf" ,gdk-pixbuf) 8015 ("gdk-pixbuf" ,gdk-pixbuf)
8013 ("gtkmm" ,gtkmm) 8016 ("gtkmm" ,gtkmm)
8014 ("glibmm" ,glibmm) 8017 ("glibmm" ,glibmm)
8015 ("libx11" ,libx11) 8018 ("libx11" ,libx11)
8016 ("libxtst" ,libxtst) 8019 ("libxtst" ,libxtst)
8017 ("dconf" ,dconf) 8020 ("dconf" ,dconf)
8018 ("libice" ,libice))) 8021 ("libice" ,libice)
8019 (inputs `(("libsm" ,libsm) 8022 ("libsm" ,libsm)
8020 ("python-cheetah" ,python2-cheetah))) 8023 ("libxscrnsaver" ,libxscrnsaver)))
8021 (native-inputs `(("glib" ,glib "bin") 8024 (native-inputs `(("boost" ,boost)
8022 ("pkg-config" ,pkg-config) 8025 ("pkg-config" ,pkg-config)
8023 ("gettext" ,gnu-gettext) 8026 ("gettext" ,gnu-gettext)
8024 ("autoconf" ,autoconf) 8027 ("autoconf" ,autoconf)
@@ -8026,9 +8029,9 @@ configurable file renaming. ")
8026 ("automake" ,automake) 8029 ("automake" ,automake)
8027 ("libtool" ,libtool) 8030 ("libtool" ,libtool)
8028 ("intltool" ,intltool) 8031 ("intltool" ,intltool)
8029 ("libxscrnsaver" ,libxscrnsaver)
8030 ("gobject-introspection" ,gobject-introspection) 8032 ("gobject-introspection" ,gobject-introspection)
8031 ("python2" ,python-2))) 8033 ("python3" ,python-3)
8034 ("python-jinja2" ,python-jinja2)))
8032 (synopsis "Tool to help prevent repetitive strain injury (RSI)") 8035 (synopsis "Tool to help prevent repetitive strain injury (RSI)")
8033 (description 8036 (description
8034 "Workrave is a program that assists in the recovery and prevention of 8037 "Workrave is a program that assists in the recovery and prevention of
@@ -8147,7 +8150,7 @@ generic enough to work for everyone.")
8147 (add-after 'install 'glib-or-gtk-wrap 8150 (add-after 'install 'glib-or-gtk-wrap
8148 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))))) 8151 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
8149 (native-inputs 8152 (native-inputs
8150 `(("glib" ,glib "bin") ; glib-mkenums 8153 `(("glib" ,glib "bin") ; glib-mkenums
8151 ("pkg-config" ,pkg-config) 8154 ("pkg-config" ,pkg-config)
8152 ("intltool" ,intltool) 8155 ("intltool" ,intltool)
8153 ("itstool" ,itstool))) 8156 ("itstool" ,itstool)))
@@ -8155,6 +8158,7 @@ generic enough to work for everyone.")
8155 `(("enchant" ,enchant) 8158 `(("enchant" ,enchant)
8156 ("evolution-data-server" ,evolution-data-server) ; must be the same version 8159 ("evolution-data-server" ,evolution-data-server) ; must be the same version
8157 ("gcr" ,gcr) 8160 ("gcr" ,gcr)
8161 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
8158 ("gnome-autoar" ,gnome-autoar) 8162 ("gnome-autoar" ,gnome-autoar)
8159 ("gnome-desktop" ,gnome-desktop) 8163 ("gnome-desktop" ,gnome-desktop)
8160 ("gtkspell3" ,gtkspell3) 8164 ("gtkspell3" ,gtkspell3)
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index 95a35368fa6..56db4121454 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -442,7 +442,7 @@ gpgpme starting with version 1.7.")
442(define-public guile-gcrypt 442(define-public guile-gcrypt
443 (package 443 (package
444 (name "guile-gcrypt") 444 (name "guile-gcrypt")
445 (version "0.1.0") 445 (version "0.2.0")
446 (home-page "https://notabug.org/cwebber/guile-gcrypt") 446 (home-page "https://notabug.org/cwebber/guile-gcrypt")
447 (source (origin 447 (source (origin
448 (method git-fetch) 448 (method git-fetch)
@@ -451,7 +451,7 @@ gpgpme starting with version 1.7.")
451 (commit (string-append "v" version)))) 451 (commit (string-append "v" version))))
452 (sha256 452 (sha256
453 (base32 453 (base32
454 "1lhgh3105yi0ggrjsjibv4wp1ipz8s17pa820hk2wln3rc04wpvf")) 454 "1mhc5m4xygkfj7x18f8apiqpfdn9mrql0am5sk13cf5xn8x1r63z"))
455 (file-name (string-append name "-" version "-checkout")))) 455 (file-name (string-append name "-" version "-checkout"))))
456 (build-system gnu-build-system) 456 (build-system gnu-build-system)
457 (native-inputs 457 (native-inputs
@@ -915,6 +915,34 @@ bytes (whether by hand, OCR, QR code, or the like) and paperkey can use
915them to transform your existing public key into a secret key.") 915them to transform your existing public key into a secret key.")
916 (license license:gpl2+))) 916 (license license:gpl2+)))
917 917
918(define-public pgpdump
919 (package
920 (name "pgpdump")
921 (version "0.33")
922 (source
923 (origin
924 (method url-fetch)
925 (uri (string-append "https://www.mew.org/~kazu/proj/pgpdump/pgpdump-"
926 version ".tar.gz"))
927 (sha256
928 (base32 "1j001jra2m89n6cys3n0hs574bipjdzfxhzpnd4jfyv95mqwl7n4"))))
929 (build-system gnu-build-system)
930 (arguments
931 `(#:tests? #f ; no make check
932 #:configure-flags (list "--prefix=/")
933 #:make-flags (list "CC=gcc"
934 (string-append "DESTDIR=" (assoc-ref %outputs "out")))))
935 (inputs
936 `(("zlib" ,zlib)))
937 (home-page "https://www.mew.org/~kazu/proj/pgpdump/en/")
938 (synopsis "PGP packet visualizer")
939 (description "pgpdump displays the sequence of OpenPGP or PGP version 2
940packets from a file.
941
942The output of this command is similar to GnuPG's list packets command,
943however, pgpdump produces more detailed and easier to understand output.")
944 (license license:bsd-3)))
945
918(define-public gpa 946(define-public gpa
919 (package 947 (package
920 (name "gpa") 948 (name "gpa")
diff --git a/gnu/packages/graph.scm b/gnu/packages/graph.scm
index 8b06aaa0e96..bde8b44a305 100644
--- a/gnu/packages/graph.scm
+++ b/gnu/packages/graph.scm
@@ -139,14 +139,14 @@ more.")
139(define-public r-diffusionmap 139(define-public r-diffusionmap
140 (package 140 (package
141 (name "r-diffusionmap") 141 (name "r-diffusionmap")
142 (version "1.1-0.1") 142 (version "1.2.0")
143 (source 143 (source
144 (origin 144 (origin
145 (method url-fetch) 145 (method url-fetch)
146 (uri (cran-uri "diffusionMap" version)) 146 (uri (cran-uri "diffusionMap" version))
147 (sha256 147 (sha256
148 (base32 148 (base32
149 "11l4kbciawvli5nlsi4qaf8afmgk5xgqiqpdyhvaqri5mx0zhk5j")))) 149 "1rvk7069brlm1s9kqj4c31mwwr3mw4hmhay95cjjjfmw5xclff2j"))))
150 (properties `((upstream-name . "diffusionMap"))) 150 (properties `((upstream-name . "diffusionMap")))
151 (build-system r-build-system) 151 (build-system r-build-system)
152 (propagated-inputs 152 (propagated-inputs
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 33abdd79a28..b3518efc5f2 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -13,6 +13,7 @@
13;;; Copyright © 2018 Kei Kebreau <kkebreau@posteo.net> 13;;; Copyright © 2018 Kei Kebreau <kkebreau@posteo.net>
14;;; Copyright © 2019 Mark H Weaver <mhw@netris.org> 14;;; Copyright © 2019 Mark H Weaver <mhw@netris.org>
15;;; Copyright © 2019 Carlo Zancanaro <carlo@zancanaro.id.au> 15;;; Copyright © 2019 Carlo Zancanaro <carlo@zancanaro.id.au>
16;;; Copyright © 2019 Steve Sprang <scs@stevesprang.com>
16;;; 17;;;
17;;; This file is part of GNU Guix. 18;;; This file is part of GNU Guix.
18;;; 19;;;
@@ -1019,3 +1020,43 @@ requirements.")
1019performance subdivision surface (subdiv) evaluation on massively parallel CPU 1020performance subdivision surface (subdiv) evaluation on massively parallel CPU
1020and GPU architectures.") 1021and GPU architectures.")
1021 (license license:asl2.0))) 1022 (license license:asl2.0)))
1023
1024(define-public opencsg
1025 (let ((dot-to-dash (lambda (c) (if (char=? c #\.) #\- c))))
1026 (package
1027 (name "opencsg")
1028 (version "1.4.2")
1029 (source
1030 (origin
1031 (method git-fetch)
1032 (uri (git-reference
1033 (url "https://github.com/floriankirsch/OpenCSG.git")
1034 (commit (string-append "opencsg-"
1035 (string-map dot-to-dash version)
1036 "-release"))))
1037 (file-name (git-file-name name version))
1038 (sha256
1039 (base32
1040 "00m4vs6jn3scqczscc4591l1d6zg6anqp9v1ldf9ymf70rdyvm7m"))))
1041 (build-system gnu-build-system)
1042 (arguments
1043 `(#:phases
1044 (modify-phases %standard-phases
1045 (replace 'configure
1046 (lambda* (#:key outputs #:allow-other-keys)
1047 (substitute* "src/Makefile"
1048 (("/usr/local") (assoc-ref outputs "out")))
1049 #t))
1050 (add-before 'build 'skip-example
1051 (lambda _ (chdir "src") #t)))))
1052 (inputs
1053 `(("glew" ,glew)
1054 ("freeglut" ,freeglut)))
1055 (synopsis "Library for rendering Constructive Solid Geometry (CSG)")
1056 (description
1057 "OpenCSG is a library for rendering Constructive Solid Geometry (CSG) using
1058OpenGL. CSG is an approach for modeling complex 3D-shapes using simpler ones.
1059For example, two shapes can be combined by uniting them, by intersecting them,
1060or by subtracting one shape from the other.")
1061 (home-page "http://www.opencsg.org/")
1062 (license license:gpl2))))
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index b765ef36e11..2f974ee63ba 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -5,7 +5,7 @@
5;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co> 5;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co>
6;;; Copyright © 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net> 6;;; Copyright © 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
7;;; Copyright © 2016 Erik Edrosa <erik.edrosa@gmail.com> 7;;; Copyright © 2016 Erik Edrosa <erik.edrosa@gmail.com>
8;;; Copyright © 2016 Eraim Flashner <efraim@flashner.co.il> 8;;; Copyright © 2016, 2019 Eraim Flashner <efraim@flashner.co.il>
9;;; Copyright © 2016, 2017 Alex Kost <alezost@gmail.com> 9;;; Copyright © 2016, 2017 Alex Kost <alezost@gmail.com>
10;;; Copyright © 2016, 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org> 10;;; Copyright © 2016, 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org>
11;;; Copyright © 2016 Amirouche <amirouche@hypermove.net> 11;;; Copyright © 2016 Amirouche <amirouche@hypermove.net>
@@ -48,7 +48,6 @@
48 #:use-module (gnu packages compression) 48 #:use-module (gnu packages compression)
49 #:use-module (gnu packages databases) 49 #:use-module (gnu packages databases)
50 #:use-module (gnu packages disk) 50 #:use-module (gnu packages disk)
51 #:use-module (gnu packages ed)
52 #:use-module (gnu packages emacs) 51 #:use-module (gnu packages emacs)
53 #:use-module (gnu packages emacs-xyz) 52 #:use-module (gnu packages emacs-xyz)
54 #:use-module (gnu packages gawk) 53 #:use-module (gnu packages gawk)
@@ -1926,30 +1925,17 @@ is no support for parsing block and inline level HTML.")
1926(define-public mcron 1925(define-public mcron
1927 (package 1926 (package
1928 (name "mcron") 1927 (name "mcron")
1929 (version "1.1.1") 1928 (version "1.1.2")
1930 (source (origin 1929 (source (origin
1931 (method url-fetch) 1930 (method url-fetch)
1932 (uri (string-append "mirror://gnu/mcron/mcron-" 1931 (uri (string-append "mirror://gnu/mcron/mcron-"
1933 version ".tar.gz")) 1932 version ".tar.gz"))
1934 (sha256 1933 (sha256
1935 (base32 1934 (base32
1936 "1i9mcp6r6my61zfiydsm3n6my41mwvl7dfala4q29qx0zn1ynlm4")))) 1935 "069m3ri7nc8lgy3h9ka7gj3v3anqj69x9jw4l3cfq65nqkxsch4g"))))
1937 (build-system gnu-build-system) 1936 (build-system gnu-build-system)
1938 (arguments 1937 (arguments
1939 '(#:phases (modify-phases %standard-phases 1938 '(#:phases (modify-phases %standard-phases
1940 (add-before 'check 'set-timezone
1941 (lambda* (#:key inputs #:allow-other-keys)
1942 ;; 'tests/job-specifier.scm' expects to be running in
1943 ;; UTC-2 or something.
1944 ;; FIXME: This issue is being investigated upstream, for
1945 ;; now we'll just skip the tests (see below):
1946 ;; <https://lists.gnu.org/archive/html/bug-mcron/2018-04/msg00005.html>.
1947 (let ((tzdata (assoc-ref inputs "tzdata")))
1948 (setenv "TZDIR"
1949 (string-append tzdata
1950 "/share/zoneinfo"))
1951 (setenv "TZ" "UTC-2")
1952 #t)))
1953 (add-before 'check 'adjust-tests 1939 (add-before 'check 'adjust-tests
1954 (lambda _ 1940 (lambda _
1955 (substitute* "tests/job-specifier.scm" 1941 (substitute* "tests/job-specifier.scm"
@@ -1966,9 +1952,13 @@ is no support for parsing block and inline level HTML.")
1966 (("\\(test-equal \"next-year\"" all) 1952 (("\\(test-equal \"next-year\"" all)
1967 (string-append "(test-skip 4)\n" all))) 1953 (string-append "(test-skip 4)\n" all)))
1968 #t))))) 1954 #t)))))
1969 (native-inputs `(("pkg-config" ,pkg-config) 1955 (native-inputs `(("autoconf" ,autoconf)
1956 ("automake" ,automake)
1957 ("help2man" ,help2man)
1958 ("pkg-config" ,pkg-config)
1959 ("texinfo" ,texinfo)
1970 ("tzdata" ,tzdata-for-tests))) 1960 ("tzdata" ,tzdata-for-tests)))
1971 (inputs `(("ed" ,ed) ("which" ,which) ("guile" ,guile-2.2))) 1961 (inputs `(("guile" ,guile-2.2)))
1972 (home-page "https://www.gnu.org/software/mcron/") 1962 (home-page "https://www.gnu.org/software/mcron/")
1973 (synopsis "Run jobs at scheduled times") 1963 (synopsis "Run jobs at scheduled times")
1974 (description 1964 (description
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index 475a6c5ef09..478b8faebe4 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -405,8 +405,8 @@ GNU@tie{}Guile. Use the @code{(ice-9 readline)} module and call its
405 (home-page "https://github.com/aconchillo/guile-json") 405 (home-page "https://github.com/aconchillo/guile-json")
406 (source (origin 406 (source (origin
407 (method url-fetch) 407 (method url-fetch)
408 (uri (string-append "https://download.savannah.nongnu.org/releases/" 408 (uri (string-append "mirror://savannah/guile-json/guile-json-"
409 name "/" name "-" version ".tar.gz")) 409 version ".tar.gz"))
410 (sha256 410 (sha256
411 (base32 411 (base32
412 "15gnb84d7hpazqhskkf3g9z4r6knw54wfj4ch5270kakz1lp70c9")))) 412 "15gnb84d7hpazqhskkf3g9z4r6knw54wfj4ch5270kakz1lp70c9"))))
@@ -444,14 +444,14 @@ specification. These are the main features:
444 (package 444 (package
445 (inherit guile-json) 445 (inherit guile-json)
446 (name "guile-json") 446 (name "guile-json")
447 (version "3.1.0") 447 (version "3.2.0")
448 (source (origin 448 (source (origin
449 (method url-fetch) 449 (method url-fetch)
450 (uri (string-append "https://download.savannah.nongnu.org/releases/" 450 (uri (string-append "mirror://savannah/guile-json/guile-json-"
451 name "/" name "-" version ".tar.gz")) 451 version ".tar.gz"))
452 (sha256 452 (sha256
453 (base32 453 (base32
454 "1yfqscz74i4vxylabd3s9l0wbdp8bg9qxnv1ixdm3b1l7zdx00z3")))))) 454 "14m6b6g2maw0mkvfm4x63rqb54vgbpn1gcqs715ijw4bikfzlqfz"))))))
455 455
456;; There are two guile-gdbm packages, one using the FFI and one with 456;; There are two guile-gdbm packages, one using the FFI and one with
457;; direct C bindings, hence the verbose name. 457;; direct C bindings, hence the verbose name.
diff --git a/gnu/packages/haskell-apps.scm b/gnu/packages/haskell-apps.scm
index 5cd6549c27d..e09285d63ad 100644
--- a/gnu/packages/haskell-apps.scm
+++ b/gnu/packages/haskell-apps.scm
@@ -245,7 +245,7 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}.
245(define-public git-annex 245(define-public git-annex
246 (package 246 (package
247 (name "git-annex") 247 (name "git-annex")
248 (version "7.20190708") 248 (version "7.20190912")
249 (source 249 (source
250 (origin 250 (origin
251 (method url-fetch) 251 (method url-fetch)
@@ -253,7 +253,7 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}.
253 "git-annex/git-annex-" version ".tar.gz")) 253 "git-annex/git-annex-" version ".tar.gz"))
254 (sha256 254 (sha256
255 (base32 255 (base32
256 "18s563swrp8mx479995pdhhmn40y3xwlbm1z3w63qsnjqmj7zlij")))) 256 "1a3jvl5cx32v78s3015i10cx00jprm1391rpww4mzkk1vskzn9cv"))))
257 (build-system haskell-build-system) 257 (build-system haskell-build-system)
258 (arguments 258 (arguments
259 `(#:configure-flags 259 `(#:configure-flags
@@ -337,6 +337,7 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}.
337 ("ghc-http-conduit" ,ghc-http-conduit) 337 ("ghc-http-conduit" ,ghc-http-conduit)
338 ("ghc-http-types" ,ghc-http-types) 338 ("ghc-http-types" ,ghc-http-types)
339 ("ghc-ifelse" ,ghc-ifelse) 339 ("ghc-ifelse" ,ghc-ifelse)
340 ("ghc-magic" ,ghc-magic)
340 ("ghc-memory" ,ghc-memory) 341 ("ghc-memory" ,ghc-memory)
341 ("ghc-monad-control" ,ghc-monad-control) 342 ("ghc-monad-control" ,ghc-monad-control)
342 ("ghc-monad-logger" ,ghc-monad-logger) 343 ("ghc-monad-logger" ,ghc-monad-logger)
@@ -374,9 +375,16 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}.
374checking the file contents into Git. It can store files in many places, 375checking the file contents into Git. It can store files in many places,
375such as local hard drives and cloud storage services. It can also be 376such as local hard drives and cloud storage services. It can also be
376used to keep a folder in sync between computers.") 377used to keep a folder in sync between computers.")
377 ;; The web app is released under the AGPLv3+. 378 ;; The main author has released all his changes under AGPLv3+ as of March
378 (license (list license:gpl3+ 379 ;; 2019 (7.20190219-187-g40ecf58d4). These are also licensed under the
379 license:agpl3+)))) 380 ;; original GPLv3+ license, but going forward new changes will be under
381 ;; only AGPLv3+. The other licenses below cover code written by others.
382 ;; See git-annex's COPYRIGHT file for details on each file.
383 (license (list license:agpl3+
384 license:gpl3+
385 license:bsd-2
386 license:expat
387 license:gpl2))))
380 388
381(define-public hlint 389(define-public hlint
382 (package 390 (package
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 940fbe8a6c5..4313b6059e1 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -5,7 +5,7 @@
5;;; Copyright © 2015, 2019 Eric Bavier <bavier@member.fsf.org> 5;;; Copyright © 2015, 2019 Eric Bavier <bavier@member.fsf.org>
6;;; Copyright © 2016, 2018, 2019 Ludovic Courtès <ludo@gnu.org> 6;;; Copyright © 2016, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
7;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> 7;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
8;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> 8;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il>
9;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net> 9;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
10;;; Copyright © 2016, 2017 David Craven <david@craven.ch> 10;;; Copyright © 2016, 2017 David Craven <david@craven.ch>
11;;; Copyright © 2017 Danny Milosavljevic <dannym@scratchpost.org> 11;;; Copyright © 2017 Danny Milosavljevic <dannym@scratchpost.org>
@@ -20,6 +20,7 @@
20;;; Copyright © 2019 Robert Vollmert <rob@vllmrt.net> 20;;; Copyright © 2019 Robert Vollmert <rob@vllmrt.net>
21;;; Copyright © 2019 Jacob MacDonald <jaccarmac@gmail.com> 21;;; Copyright © 2019 Jacob MacDonald <jaccarmac@gmail.com>
22;;; Copyright © 2019 John Soo <jsoo1@asu.edu> 22;;; Copyright © 2019 John Soo <jsoo1@asu.edu>
23;;; Copyright © 2019 Kyle Meyer <kyle@kyleam.com>
23;;; 24;;;
24;;; This file is part of GNU Guix. 25;;; This file is part of GNU Guix.
25;;; 26;;;
@@ -463,7 +464,7 @@ complicated text/binary file formats.")
463 (inputs 464 (inputs
464 `(("ghc-scientific" ,ghc-scientific-bootstrap))) 465 `(("ghc-scientific" ,ghc-scientific-bootstrap)))
465 (native-inputs '()) 466 (native-inputs '())
466 (properties '(hidden? #t)))) 467 (properties '((hidden? #t)))))
467 468
468(define-public ghc-attoparsec-iso8601 469(define-public ghc-attoparsec-iso8601
469 (package 470 (package
@@ -5201,7 +5202,7 @@ in migrated modules.")
5201 (name "ghc-integer-logarithms-bootstrap") 5202 (name "ghc-integer-logarithms-bootstrap")
5202 (arguments `(#:tests? #f)) 5203 (arguments `(#:tests? #f))
5203 (native-inputs '()) 5204 (native-inputs '())
5204 (properties '(hidden? #t)))) 5205 (properties '((hidden? #t)))))
5205 5206
5206(define-public ghc-interpolate 5207(define-public ghc-interpolate
5207 (package 5208 (package
@@ -5954,6 +5955,28 @@ monadic incremental interface is provided as well.")
5954compression algorithm used in the @code{.xz} file format.") 5955compression algorithm used in the @code{.xz} file format.")
5955 (license license:bsd-3))) 5956 (license license:bsd-3)))
5956 5957
5958(define-public ghc-magic
5959 (package
5960 (name "ghc-magic")
5961 (version "1.1")
5962 (source
5963 (origin
5964 (method url-fetch)
5965 (uri (string-append
5966 "https://hackage.haskell.org/package/magic/magic-"
5967 version ".tar.gz"))
5968 (sha256
5969 (base32
5970 "10p0gjjjwr1dda7hahwrwn5njbfhl67arq3v3nf1jr3vymlkn75j"))))
5971 (build-system haskell-build-system)
5972 (home-page "http://hackage.haskell.org/package/magic")
5973 (synopsis "Interface to C file/magic library")
5974 (description
5975 "This package provides a full-featured binding to the C libmagic library.
5976With it, you can determine the type of a file by examining its contents rather
5977than its name.")
5978 (license license:bsd-3)))
5979
5957(define-public ghc-markdown-unlit 5980(define-public ghc-markdown-unlit
5958 (package 5981 (package
5959 (name "ghc-markdown-unlit") 5982 (name "ghc-markdown-unlit")
@@ -8667,7 +8690,7 @@ notation}.")
8667 ("ghc-hashable" ,ghc-hashable) 8690 ("ghc-hashable" ,ghc-hashable)
8668 ("ghc-primitive" ,ghc-primitive))) 8691 ("ghc-primitive" ,ghc-primitive)))
8669 (native-inputs '()) 8692 (native-inputs '())
8670 (properties '(hidden? #t)))) 8693 (properties '((hidden? #t)))))
8671 8694
8672(define-public ghc-sdl 8695(define-public ghc-sdl
8673 (package 8696 (package
@@ -8951,7 +8974,7 @@ semigroup.")
8951 ("ghc-tagged" ,ghc-tagged) 8974 ("ghc-tagged" ,ghc-tagged)
8952 ("ghc-unordered-containers" ,ghc-unordered-containers-bootstrap) 8975 ("ghc-unordered-containers" ,ghc-unordered-containers-bootstrap)
8953 ("ghc-hashable" ,ghc-hashable-bootstrap))) 8976 ("ghc-hashable" ,ghc-hashable-bootstrap)))
8954 (properties '(hidden? #t)))) 8977 (properties '((hidden? #t)))))
8955 8978
8956(define-public ghc-setenv 8979(define-public ghc-setenv
8957 (package 8980 (package
@@ -10781,7 +10804,7 @@ and high speed.")
10781 (arguments `(#:tests? #f)) 10804 (arguments `(#:tests? #f))
10782 (inputs 10805 (inputs
10783 `(("ghc-hashable" ,ghc-hashable-bootstrap))) 10806 `(("ghc-hashable" ,ghc-hashable-bootstrap)))
10784 (properties '(hidden? #t)))) 10807 (properties '((hidden? #t)))))
10785 10808
10786(define-public ghc-unsafe 10809(define-public ghc-unsafe
10787 (package 10810 (package
@@ -11322,7 +11345,7 @@ widths to the Char type.")
11322 `(("ghc-setlocale" ,ghc-setlocale) 11345 `(("ghc-setlocale" ,ghc-setlocale)
11323 ("ghc-utf8-string" ,ghc-utf8-string) 11346 ("ghc-utf8-string" ,ghc-utf8-string)
11324 ("ghc-attoparsec" ,ghc-attoparsec-bootstrap))) 11347 ("ghc-attoparsec" ,ghc-attoparsec-bootstrap)))
11325 (properties '(hidden? #t)))) 11348 (properties '((hidden? #t)))))
11326 11349
11327(define-public ghc-weigh 11350(define-public ghc-weigh
11328 (package 11351 (package
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 4d16cd656fd..d86daa52c59 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -596,7 +596,13 @@ interactive environment for the functional language Haskell.")
596 (("^test\\('T8108'") "# guix skipped: test('T8108'")) 596 (("^test\\('T8108'") "# guix skipped: test('T8108'"))
597 (substitute* "libraries/unix/tests/libposix/all.T" 597 (substitute* "libraries/unix/tests/libposix/all.T"
598 (("^test\\('posix010'") "# guix skipped: test('posix010'")) 598 (("^test\\('posix010'") "# guix skipped: test('posix010'"))
599 #t)))))))) 599 #t))))))
600 (native-search-paths (list (search-path-specification
601 (variable "GHC_PACKAGE_PATH")
602 (files (list
603 (string-append "lib/ghc-" version)))
604 (file-pattern ".*\\.conf\\.d$")
605 (file-type 'directory))))))
600 606
601(define-public ghc-8 ghc-8.4) 607(define-public ghc-8 ghc-8.4)
602 608
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 4463007c74f..7b6c8b3e0b8 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -1428,6 +1428,40 @@ PNG, and performs PNG integrity checks and corrections.")
1428 (home-page "http://optipng.sourceforge.net/") 1428 (home-page "http://optipng.sourceforge.net/")
1429 (license license:zlib))) 1429 (license license:zlib)))
1430 1430
1431(define-public pngsuite
1432 (package
1433 (name "pngsuite")
1434 (version "2017jul19")
1435 (source
1436 (origin
1437 (method url-fetch/tarbomb)
1438 (uri (string-append "http://www.schaik.com/pngsuite2011/PngSuite-"
1439 version ".tgz"))
1440 (sha256
1441 (base32
1442 "1j7xgd9iffcnpphhzz9ld9ybrjmx9brhq0803g0450ssr52b5502"))))
1443 (build-system gnu-build-system)
1444 (arguments
1445 '(#:tests? #f ; there is no test target
1446 #:license-file-regexp "PngSuite.LICENSE"
1447 #:phases
1448 (modify-phases %standard-phases
1449 (replace 'install
1450 (lambda* (#:key outputs #:allow-other-keys)
1451 (let ((out (assoc-ref outputs "out")))
1452 (copy-recursively "." (string-append out "/"))
1453 #t)))
1454 (delete 'build)
1455 (delete 'configure))))
1456 (home-page "http://www.schaik.com/pngsuite2011/pngsuite.html")
1457 (synopsis "Example PNGs for use in test suites")
1458 (description "Collection of graphics images created to test PNG
1459applications like viewers, converters and editors. As far as that is
1460possible, all formats supported by the PNG standard are represented.")
1461 (license (license:fsdg-compatible "file://PngSuite.LICENSE" "Permission to
1462use, copy, modify and distribute these images for any purpose and without fee
1463is hereby granted."))))
1464
1431(define-public libjpeg-turbo 1465(define-public libjpeg-turbo
1432 (package 1466 (package
1433 (name "libjpeg-turbo") 1467 (name "libjpeg-turbo")
@@ -1755,3 +1789,42 @@ identical visual appearance.")
1755to the standard output. It works well together with grim.") 1789to the standard output. It works well together with grim.")
1756 ;; MIT license. 1790 ;; MIT license.
1757 (license license:expat))) 1791 (license license:expat)))
1792
1793(define-public sng
1794 (package
1795 (name "sng")
1796 (version "1.1.0")
1797 (source
1798 (origin
1799 (method url-fetch)
1800 (uri (string-append "mirror://sourceforge/sng/sng-"
1801 version ".tar.gz"))
1802 (sha256
1803 (base32 "06a6ydvx9xb3vxvrzdrg3hq0rjwwj9ibr7fyyxjxq6qx1j3mb70i"))))
1804 (build-system gnu-build-system)
1805 (arguments
1806 `(#:phases
1807 (modify-phases %standard-phases
1808 (add-before 'check 'link-pngsuite
1809 ;; tests expect pngsuite in source dir
1810 (lambda* (#:key inputs #:allow-other-keys)
1811 (symlink (assoc-ref inputs "pngsuite") "pngsuite")
1812 #t)))
1813 #:configure-flags
1814 (list (string-append "--with-rgbtxt="
1815 (assoc-ref %build-inputs "xorg-rgb")
1816 "/share/X11/rgb.txt"))))
1817 (inputs `(("xorg-rgb" ,xorg-rgb)
1818 ("libpng" ,libpng)))
1819 (native-inputs `(("pngsuite" ,pngsuite)))
1820 (home-page "http://sng.sourceforge.net")
1821 (synopsis "Markup language for representing PNG contents")
1822 (description "SNG (Scriptable Network Graphics) is a minilanguage designed
1823specifically to represent the entire contents of a PNG (Portable Network
1824Graphics) file in an editable form. Thus, SNGs representing elaborate
1825graphics images and ancillary chunk data can be readily generated or modified
1826using only text tools.
1827
1828SNG is implemented by a compiler/decompiler called sng that
1829losslessly translates between SNG and PNG.")
1830 (license license:zlib)))
diff --git a/gnu/packages/irc.scm b/gnu/packages/irc.scm
index 622f1253d8f..e3418c1fec3 100644
--- a/gnu/packages/irc.scm
+++ b/gnu/packages/irc.scm
@@ -5,7 +5,7 @@
5;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> 5;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
6;;; Copyright © 2016 ng0 <ng0@n0.is> 6;;; Copyright © 2016 ng0 <ng0@n0.is>
7;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> 7;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
8;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr> 8;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
9;;; 9;;;
10;;; This file is part of GNU Guix. 10;;; This file is part of GNU Guix.
11;;; 11;;;
@@ -166,15 +166,14 @@ SILC and ICB protocols via plugins.")
166(define-public weechat 166(define-public weechat
167 (package 167 (package
168 (name "weechat") 168 (name "weechat")
169 (version "2.5") 169 (version "2.6")
170 (source (origin 170 (source (origin
171 (method url-fetch) 171 (method url-fetch)
172 (uri (string-append "https://weechat.org/files/src/weechat-" 172 (uri (string-append "https://weechat.org/files/src/weechat-"
173 version ".tar.xz")) 173 version ".tar.xz"))
174 (sha256 174 (sha256
175 (base32 175 (base32
176 "09sc5lf7z70x3iw87q4zh8rbyngsw89pwnzs5jk195zzqdspgj2j")) 176 "0j2iflnfvv31q2l9r67r8aj3ipggqfm2r2dpy7pvdpxgwwq337ps"))))
177 (patches (search-patches "weechat-python.patch"))))
178 (build-system cmake-build-system) 177 (build-system cmake-build-system)
179 (native-inputs 178 (native-inputs
180 `(("gettext" ,gettext-minimal) 179 `(("gettext" ,gettext-minimal)
@@ -187,9 +186,11 @@ SILC and ICB protocols via plugins.")
187 ("aspell" ,aspell) 186 ("aspell" ,aspell)
188 ("curl" ,curl) 187 ("curl" ,curl)
189 ("gnutls" ,gnutls) 188 ("gnutls" ,gnutls)
189
190 ;; Scripting language plug-ins.
190 ("guile" ,guile-2.0) 191 ("guile" ,guile-2.0)
191 ("lua" ,lua-5.1) 192 ("lua" ,lua-5.1)
192 ("python" ,python-2) 193 ("python" ,python)
193 ("perl" ,perl) 194 ("perl" ,perl)
194 ("tcl" ,tcl))) 195 ("tcl" ,tcl)))
195 (arguments 196 (arguments
@@ -214,14 +215,7 @@ SILC and ICB protocols via plugins.")
214 (substitute* "tests/scripts/test-scripts.cpp" 215 (substitute* "tests/scripts/test-scripts.cpp"
215 ((".*\\{ \"(javascript|php|ruby)\", " all) 216 ((".*\\{ \"(javascript|php|ruby)\", " all)
216 (string-append "// SKIP" all))) 217 (string-append "// SKIP" all)))
217 #t)) 218 #t)))))
218 (add-after 'install 'wrap
219 (lambda* (#:key inputs outputs #:allow-other-keys)
220 (let ((out (assoc-ref outputs "out"))
221 (py2 (assoc-ref inputs "python")))
222 (wrap-program (string-append out "/bin/weechat")
223 `("PATH" ":" prefix (,(string-append py2 "/bin"))))
224 #t))))))
225 (synopsis "Extensible chat client") 219 (synopsis "Extensible chat client")
226 (description "WeeChat (Wee Enhanced Environment for Chat) is an 220 (description "WeeChat (Wee Enhanced Environment for Chat) is an
227@dfn{Internet Relay Chat} (IRC) client, which is designed to be light and fast. 221@dfn{Internet Relay Chat} (IRC) client, which is designed to be light and fast.
diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm
index 9e1818dfaf5..2993eb66f69 100644
--- a/gnu/packages/javascript.scm
+++ b/gnu/packages/javascript.scm
@@ -1,6 +1,6 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net> 2;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
3;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> 3;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
4;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr> 4;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
5;;; Copyright © 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> 5;;; Copyright © 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
6;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr> 6;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
@@ -144,45 +144,20 @@ be able to view it naturally and easily.")))
144 (name "js-respond") 144 (name "js-respond")
145 (version "1.4.2") 145 (version "1.4.2")
146 (source (origin 146 (source (origin
147 (method url-fetch) 147 (method git-fetch)
148 (uri (string-append "https://github.com/scottjehl/Respond/" 148 (uri (git-reference
149 "archive/" version ".tar.gz")) 149 (url "https://github.com/scottjehl/Respond")
150 (file-name (string-append name "-" version ".tar.gz")) 150 (commit version)))
151 (file-name (git-file-name name version))
151 (sha256 152 (sha256
152 (base32 153 (base32
153 "0ds1ya2a185jp93mdn07159c2x8zczwi960ykrawpp62bwk2n93d")))) 154 "00xid731rirc7sdy1gc8qal3v9g0agr2qx15hm4x97l1lcbylyn2"))))
154 (build-system trivial-build-system) 155 (build-system minify-build-system)
155 (arguments 156 (arguments
156 `(#:modules ((guix build utils)) 157 `(#:javascript-files '("src/matchmedia.addListener.js"
157 #:builder 158 "src/matchmedia.polyfill.js"
158 (begin 159 "src/respond.js")))
159 (use-modules (guix build utils)
160 (ice-9 match)
161 (ice-9 popen)
162 (srfi srfi-26))
163 (set-path-environment-variable
164 "PATH" '("bin") (map (match-lambda
165 ((_ . input)
166 input))
167 %build-inputs))
168 (let ((install-directory (string-append %output
169 "/share/javascript/respond/")))
170 (invoke "tar" "xvf"
171 (assoc-ref %build-inputs "source")
172 "--strip" "1")
173 (mkdir-p install-directory)
174 (let* ((file "src/respond.js")
175 (installed (string-append install-directory "respond.min.js")))
176 (let ((minified (open-pipe* OPEN_READ "uglify-js" file)))
177 (call-with-output-file installed
178 (cut dump-port minified <>)))))
179 #t)))
180 (home-page "https://github.com/scottjehl/Respond") 160 (home-page "https://github.com/scottjehl/Respond")
181 (native-inputs
182 `(("uglify-js" ,uglify-js)
183 ("source" ,source)
184 ("gzip" ,gzip)
185 ("tar" ,tar)))
186 (synopsis "Polyfill for min/max-width CSS3 Media Queries") 161 (synopsis "Polyfill for min/max-width CSS3 Media Queries")
187 (description "The goal of this script is to provide a fast and lightweight 162 (description "The goal of this script is to provide a fast and lightweight
188script to enable responsive web designs in browsers that don't support CSS3 163script to enable responsive web designs in browsers that don't support CSS3
@@ -194,13 +169,14 @@ Media Queries.")
194 (name "js-html5shiv") 169 (name "js-html5shiv")
195 (version "3.7.3") 170 (version "3.7.3")
196 (source (origin 171 (source (origin
197 (method url-fetch) 172 (method git-fetch)
198 (uri (string-append "https://github.com/aFarkas/html5shiv/" 173 (uri (git-reference
199 "archive/" version ".tar.gz")) 174 (url "https://github.com/aFarkas/html5shiv")
200 (file-name (string-append name "-" version ".tar.gz")) 175 (commit version)))
176 (file-name (git-file-name name version))
201 (sha256 177 (sha256
202 (base32 178 (base32
203 "0inlbpxpqzdyi24lqagzf7l24zxg0y02xcpqs2h4npjscazzw7hg")))) 179 "0y1c5nyq0brl9fjdihhax33vks4s1ij9iv113879sg3zflmgqpd0"))))
204 (build-system minify-build-system) 180 (build-system minify-build-system)
205 (home-page "https://github.com/aFarkas/html5shiv") 181 (home-page "https://github.com/aFarkas/html5shiv")
206 (synopsis "Enable HTML5 sectioning elements in legacy browsers") 182 (synopsis "Enable HTML5 sectioning elements in legacy browsers")
@@ -264,13 +240,14 @@ provided by ES5. @code{JSONPath} is used to represent the links.")
264 (name "js-strftime") 240 (name "js-strftime")
265 (version "0.10.0") 241 (version "0.10.0")
266 (source (origin 242 (source (origin
267 (method url-fetch) 243 (method git-fetch)
268 (uri (string-append "https://github.com/samsonjs/strftime/" 244 (uri (git-reference
269 "archive/v" version ".tar.gz")) 245 (url"https://github.com/samsonjs/strftime")
270 (file-name (string-append name "-" version ".tar.gz")) 246 (commit (string-append "v" version))))
247 (file-name (git-file-name name version))
271 (sha256 248 (sha256
272 (base32 249 (base32
273 "1iya43w7y26y2dp9l4d40bhjc4scb5a9mng5ng5c8hsqr82f1375")))) 250 "131nmlivazwxyba25kh9lda99749fq4xsyin6lzfalaaydviby4p"))))
274 (build-system minify-build-system) 251 (build-system minify-build-system)
275 (arguments 252 (arguments
276 `(#:javascript-files '("strftime.js"))) 253 `(#:javascript-files '("strftime.js")))
@@ -287,13 +264,14 @@ well as some other extensions from Ruby.")
287 (name "js-highlight") 264 (name "js-highlight")
288 (version "9.12.0") 265 (version "9.12.0")
289 (source (origin 266 (source (origin
290 (method url-fetch) 267 (method git-fetch)
291 (uri (string-append "https://github.com/isagalaev/highlight.js/" 268 (uri (git-reference
292 "archive/" version ".tar.gz")) 269 (url "https://github.com/isagalaev/highlight.js")
293 (file-name (string-append name "-" version ".tar.gz")) 270 (commit version)))
271 (file-name (git-file-name name version))
294 (sha256 272 (sha256
295 (base32 273 (base32
296 "1jjn9mj7fwq4zpr6is438bscf03b3q8jkj0k5c3fc6pkmjnhw939")))) 274 "12qz22qjpd6svj58pwgcwg2x2rzhihfdrxg6lgj39nfpaln6dris"))))
297 (build-system minify-build-system) 275 (build-system minify-build-system)
298 (arguments 276 (arguments
299 `(#:javascript-files '("src/highlight.js"))) 277 `(#:javascript-files '("src/highlight.js")))
@@ -329,18 +307,41 @@ Javascript library, adding sorting, paging and filtering abilities to plain
329HTML tables with minimal effort.") 307HTML tables with minimal effort.")
330 (license license:expat))) 308 (license license:expat)))
331 309
310(define-public js-requirejs
311 (package
312 (name "js-requirejs")
313 (version "2.3.6")
314 (source (origin
315 (method git-fetch)
316 (uri (git-reference
317 (url "https://github.com/requirejs/requirejs.git")
318 (commit version)))
319 (file-name (git-file-name name version))
320 (sha256
321 (base32
322 "0cvd5y2mb3h6yil3niqn3gjqrzixdsxcz4rvc2f0hg4kzp5y0w86"))))
323 (build-system minify-build-system)
324 (arguments `(#:javascript-files '("require.js")))
325 (home-page "https://github.com/requirejs/requirejs/")
326 (synopsis "File and module loader for JavaScript")
327 (description "RequireJS loads plain JavaScript files as well as more
328defined modules. It is optimized for in-browser use, including in a Web
329Worker, but it can be used in other JavaScript environments.")
330 (license license:expat)))
331
332(define-public js-selectize 332(define-public js-selectize
333 (package 333 (package
334 (name "js-selectize") 334 (name "js-selectize")
335 (version "0.12.4") 335 (version "0.12.6")
336 (source (origin 336 (source (origin
337 (method url-fetch) 337 (method git-fetch)
338 (uri (string-append "https://github.com/selectize/selectize.js/" 338 (uri (git-reference
339 "archive/v" version ".tar.gz")) 339 (url "https://github.com/selectize/selectize.js")
340 (file-name (string-append name "-" version ".tar.gz")) 340 (commit (string-append "v" version))))
341 (file-name (git-file-name name version))
341 (sha256 342 (sha256
342 (base32 343 (base32
343 "0756p49aaz34mw2dx8k1gxf210mngfrri25vkba0j7wihd2af8gn")))) 344 "15gichl8wi6yxag2ps723nxrgyan15976dzsnvw9h9py8sbyyzjn"))))
344 (build-system minify-build-system) 345 (build-system minify-build-system)
345 (arguments `(#:javascript-files '("src/selectize.js"))) 346 (arguments `(#:javascript-files '("src/selectize.js")))
346 (home-page "http://selectize.github.io/selectize.js/") 347 (home-page "http://selectize.github.io/selectize.js/")
@@ -353,15 +354,16 @@ navigation; it is useful for tagging, contact lists, etc.")
353(define-public js-es5-shim 354(define-public js-es5-shim
354 (package 355 (package
355 (name "js-es5-shim") 356 (name "js-es5-shim")
356 (version "4.5.9") 357 (version "4.5.13")
357 (source (origin 358 (source (origin
358 (method url-fetch) 359 (method git-fetch)
359 (uri (string-append "https://github.com/es-shims/es5-shim/" 360 (uri (git-reference
360 "archive/v" version ".tar.gz")) 361 (url "https://github.com/es-shims/es5-shim")
361 (file-name (string-append name "-" version ".tar.gz")) 362 (commit (string-append "v" version))))
363 (file-name (git-file-name name version))
362 (sha256 364 (sha256
363 (base32 365 (base32
364 "0yfndyijz0ykddzprpvfjb2453gzpn528klmwycwbqc1bqd3m1hl")))) 366 "142w384fbyllq4yggv173g82lw3wix4jqcg6hkhx1ymq89vvnpmh"))))
365 (build-system minify-build-system) 367 (build-system minify-build-system)
366 (arguments `(#:javascript-files 368 (arguments `(#:javascript-files
367 '("es5-sham.js" 369 '("es5-sham.js"
@@ -381,13 +383,14 @@ means that these shams cause many ES5 methods to silently fail.")
381 (name "js-filesaver") 383 (name "js-filesaver")
382 (version "1.3.8") 384 (version "1.3.8")
383 (source (origin 385 (source (origin
384 (method url-fetch) 386 (method git-fetch)
385 (uri (string-append "https://github.com/eligrey/FileSaver.js/" 387 (uri (git-reference
386 "archive/" version ".tar.gz")) 388 (url "https://github.com/eligrey/FileSaver.js")
387 (file-name (string-append name "-" version)) 389 (commit version)))
390 (file-name (git-file-name name version))
388 (sha256 391 (sha256
389 (base32 392 (base32
390 "1rkhfqs5plaj628kzj7qgm5qahy4v7ihygifidqr6g6265mil97h")))) 393 "0gvqk0hnr8fig0n4da7vj7q6z31bcyv52916xz3rbmdj3pgpiv1d"))))
391 (build-system minify-build-system) 394 (build-system minify-build-system)
392 (arguments 395 (arguments
393 `(#:phases 396 `(#:phases
diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index d8c0649131a..2d72c39436a 100644
--- a/gnu/packages/kde.scm
+++ b/gnu/packages/kde.scm
@@ -529,16 +529,16 @@ different notification systems.")
529(define-public kdeconnect 529(define-public kdeconnect
530 (package 530 (package
531 (name "kdeconnect") 531 (name "kdeconnect")
532 (version "1.3.3") 532 (version "1.3.5")
533 (source 533 (source
534 (origin 534 (origin
535 (method url-fetch) 535 (method url-fetch)
536 (uri (string-append "mirror://kde/stable/kdeconnect/" 536 (uri (string-append "mirror://kde/stable/kdeconnect/"
537 version "/src/kdeconnect-kde-" 537 version "/kdeconnect-kde-"
538 version ".tar.xz")) 538 version ".tar.xz"))
539 (sha256 539 (sha256
540 (base32 540 (base32
541 "1vac0mw1myrswr61adv7lgif0c4wzw5wnsj0sqxj6msp4l4pfgsg")))) 541 "02lr3xx5s2mgddac4n3lkgr7ppf1z5m6ajs90rjix0vs8a271kp5"))))
542 (build-system cmake-build-system) 542 (build-system cmake-build-system)
543 (arguments 543 (arguments
544 `(#:configure-flags '("-DBUILD_TESTING=ON") 544 `(#:configure-flags '("-DBUILD_TESTING=ON")
@@ -600,4 +600,30 @@ communicate with each other. Here's a few things KDE Connect can do:
600@item Browse your phone from the desktop 600@item Browse your phone from the desktop
601@item Control the desktop's volume from the phone 601@item Control the desktop's volume from the phone
602@end enumerate") 602@end enumerate")
603 (properties `((upstream-name . "kdeconnect-kde")))
603 (license (list license:gpl2 license:gpl3)))) ; dual licensed 604 (license (list license:gpl2 license:gpl3)))) ; dual licensed
605
606(define-public kqtquickcharts
607 (package
608 (name "kqtquickcharts")
609 (version "19.08.1")
610 (source
611 (origin
612 (method url-fetch)
613 (uri (string-append "mirror://kde/stable/applications/"
614 version "/src/kqtquickcharts-" version ".tar.xz"))
615 (sha256
616 (base32
617 "1j3rivvh4sa94lsd0hi4xfvcikl05zrqd7634wxyaxs718ais6dg"))))
618 (build-system cmake-build-system)
619 (native-inputs
620 `(("extra-cmake-modules" ,extra-cmake-modules)))
621 (inputs
622 `(("qtbase" ,qtbase)
623 ("qtdeclarative" ,qtdeclarative)))
624 (home-page "https://phabricator.kde.org/source/kqtquickcharts/")
625 (synopsis "Interactive charts for Qt Quick")
626 (description
627 "Kqtquickcharts is a QtQuick plugin to render beautiful and interactive
628charts.")
629 (license license:lgpl2.1+)))
diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm
index 73376feecbe..1ed2483615f 100644
--- a/gnu/packages/language.scm
+++ b/gnu/packages/language.scm
@@ -2,6 +2,7 @@
2;;; Copyright © 2015, 2016 Eric Bavier <bavier@member.fsf.org> 2;;; Copyright © 2015, 2016 Eric Bavier <bavier@member.fsf.org>
3;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr> 3;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
4;;; Copyright © 2018 ng0 <ng0@n0.is> 4;;; Copyright © 2018 ng0 <ng0@n0.is>
5;;; Copyright © 2019 Alex Vong <alexvong1995@gmail.com>
5;;; 6;;;
6;;; This file is part of GNU Guix. 7;;; This file is part of GNU Guix.
7;;; 8;;;
@@ -20,13 +21,26 @@
20 21
21(define-module (gnu packages language) 22(define-module (gnu packages language)
22 #:use-module (gnu packages) 23 #:use-module (gnu packages)
24 #:use-module (gnu packages glib)
25 #:use-module (gnu packages gtk)
26 #:use-module (gnu packages ocr)
23 #:use-module (gnu packages perl) 27 #:use-module (gnu packages perl)
28 #:use-module (gnu packages pkg-config)
29 #:use-module (gnu packages python)
24 #:use-module (gnu packages perl-check) 30 #:use-module (gnu packages perl-check)
31 #:use-module (gnu packages swig)
25 #:use-module (gnu packages web) 32 #:use-module (gnu packages web)
33 #:use-module (gnu packages xorg)
26 #:use-module (guix packages) 34 #:use-module (guix packages)
35 #:use-module (guix build-system gnu)
27 #:use-module (guix build-system perl) 36 #:use-module (guix build-system perl)
28 #:use-module ((guix licenses) #:select (gpl2 gpl3 perl-license)) 37 #:use-module (guix build-system python)
29 #:use-module (guix download)) 38 #:use-module ((guix licenses)
39 #:select
40 (bsd-3 gpl2 gpl2+ gpl3 gpl3+ lgpl2.1 perl-license zpl2.1))
41 #:use-module (guix download)
42 #:use-module (guix git-download)
43 #:use-module (guix utils))
30 44
31(define-public perl-lingua-en-findnumber 45(define-public perl-lingua-en-findnumber
32 (package 46 (package
@@ -406,3 +420,466 @@ string can be easily inferred by a human just by reading the identifier.")
406 (description "This module is a rather incomplete implementation of work 420 (description "This module is a rather incomplete implementation of work
407done by Gudrun Putze-Meier.") 421done by Gudrun Putze-Meier.")
408 (license perl-license))) 422 (license perl-license)))
423
424(define* (tegaki-release-uri proj version
425 #:optional (ext "tar.gz"))
426 (string-append "https://github.com/tegaki/tegaki/releases/download"
427 "/v" version "/" proj "-" version "." ext))
428
429(define remove-pre-compiled-files
430 (lambda exts
431 "Return snippet for removing pre-compiled files matching one of the
432extensions in EXTS."
433 `(begin (for-each delete-file
434 (find-files "."
435 (lambda (name _)
436 (any (cut string-suffix? <> name)
437 (map (cut string-append "." <>)
438 ',exts)))))
439 #t)))
440
441;;; modules required for the above snippet
442(define remove-pre-compiled-files-modules
443 '((guix build utils)
444 (srfi srfi-1)
445 (srfi srfi-26)))
446
447(define-public python2-tegaki-wagomu
448 (package
449 (name "python2-tegaki-wagomu")
450 (version "0.3.1")
451 (source
452 (origin
453 (method url-fetch)
454 (uri (tegaki-release-uri "tegaki-wagomu" version))
455 (sha256
456 (base32
457 "1pzdiq4zy1nyylaj9i6v2h4h0r05klahskzpafpp367p4rysi1x9"))
458 (modules remove-pre-compiled-files-modules)
459 (snippet (remove-pre-compiled-files "pyc"))))
460 (build-system python-build-system)
461 (arguments
462 `(#:python ,python-2 ; only Python 2 is supported
463 #:phases
464 (modify-phases %standard-phases
465 (add-after 'unpack 'fix-recognizer
466 (lambda* (#:key inputs #:allow-other-keys)
467 ;; fix missing module and function
468 (substitute* "tegakiwagomu.py"
469 (("import Results,")
470 "import ")
471 (("def _recognize")
472 "def recognize")
473 (("Results\\(candidates\\)")
474 "candidates"))
475 #t)))))
476 (inputs
477 `(("glib" ,glib)))
478 (native-inputs
479 `(("pkg-config" ,pkg-config)
480 ("swig" ,swig)))
481 (home-page "https://tegaki.github.io/")
482 (synopsis
483 "Chinese and Japanese Handwriting Recognition (Recognition engine)")
484 (description
485 "Tegaki is an ongoing project which aims to develop a free and open-source
486modern implementation of handwriting recognition software, specifically
487designed for Chinese (simplified and traditional) and Japanese, and that is
488suitable for both the desktop and mobile devices.")
489 (license gpl2+))) ; all files
490
491(define-public python2-tegaki-python
492 (package
493 (inherit python2-tegaki-wagomu)
494 (name "python2-tegaki-python")
495 (version "0.3.1")
496 (source
497 (origin
498 (method url-fetch)
499 (uri (tegaki-release-uri "tegaki-python" version))
500 (sha256
501 (base32
502 "0x93k7pw9nh0ywd97pr8pm7jv3f94nw044i5k0zvzhdpsjqvak7p"))
503 (modules remove-pre-compiled-files-modules)
504 (snippet (remove-pre-compiled-files "pyc"))))
505 (arguments
506 (substitute-keyword-arguments (package-arguments python2-tegaki-wagomu)
507 ((#:phases _)
508 `(modify-phases %standard-phases
509 (add-after 'unpack 'pre-configure
510 (lambda* (#:key inputs #:allow-other-keys)
511 ;; Always convert string to unicode to avoid the following error
512 ;; when running "tegaki-build" in python2-tegaki-tools:
513 ;;
514 ;; sqlite3.ProgrammingError: You must not use 8-bit bytestrings
515 ;; unless you use a text_factory that can interpret 8-bit
516 ;; bytestrings (like text_factory = str).
517 ;; It is highly recommended that you instead just switch your
518 ;; application to Unicode strings.
519 (substitute* "tegaki/charcol.py"
520 (("sqlite3.OptimizedUnicode")
521 "lambda s: unicode(s, 'utf-8')"))
522 (substitute* "tegaki/engine.py"
523 (("/usr(/local)?")
524 (assoc-ref inputs "python2-tegaki-wagomu")))
525 #t))))))
526 ;; override inherited inputs
527 (inputs '())
528 (native-inputs '())
529 (propagated-inputs
530 `(("python2-tegaki-wagomu" ,python2-tegaki-wagomu)
531 ("python2-zinnia" ,python2-zinnia)))
532 (synopsis
533 "Chinese and Japanese Handwriting Recognition (Base python library)")
534 (license (list gpl2+ ; all files except...
535 bsd-3 ; dictutils.py
536 zpl2.1)))) ; minjson.py
537
538(define-public python2-tegaki-pygtk
539 (package
540 (inherit python2-tegaki-wagomu)
541 (name "python2-tegaki-pygtk")
542 (version "0.3.1")
543 (source
544 (origin
545 (method url-fetch)
546 (uri (tegaki-release-uri "tegaki-pygtk" version))
547 (sha256
548 (base32
549 "1cip0azxhjdj2dg2z85cp1z3lz4qwx3w1j7z4xmcm7npapmsaqs2"))
550 (modules remove-pre-compiled-files-modules)
551 (snippet (remove-pre-compiled-files "pyc"))))
552 (arguments
553 (substitute-keyword-arguments (package-arguments python2-tegaki-wagomu)
554 ((#:phases _)
555 `(modify-phases %standard-phases
556 (add-after 'unpack 'fix-paths
557 (lambda* (#:key inputs #:allow-other-keys)
558 (substitute* "tegakigtk/fakekey.py"
559 (("libX11.so.6" so)
560 (string-append (assoc-ref inputs "libx11") "/lib/" so))
561 (("libXtst.so.6" so)
562 (string-append (assoc-ref inputs "libxtst") "/lib/" so)))
563 #t))))))
564 (inputs ; required for sending key strokes
565 `(("libx11" ,libx11)
566 ("libxtst" ,libxtst)))
567 (native-inputs '()) ; override inherited inputs
568 (propagated-inputs
569 `(("python2-pygtk" ,python2-pygtk)
570 ("python2-tegaki-python" ,python2-tegaki-python)))
571 (synopsis "Chinese and Japanese Handwriting Recognition (Base UI library)")
572 (license gpl2+))) ; all files
573
574(define-public python2-tegaki-tools
575 (package
576 (inherit python2-tegaki-wagomu)
577 (name "python2-tegaki-tools")
578 (version "0.3.1")
579 (source
580 (origin
581 (method url-fetch)
582 (uri (tegaki-release-uri "tegaki-tools" version))
583 (sha256
584 (base32
585 "0xxv97ggh2jgldw3r7y59lv3fhz733r6l7mdn6nh4m0gvb0ja971"))
586 (modules remove-pre-compiled-files-modules)
587 (snippet (remove-pre-compiled-files "pyc"))))
588 (arguments
589 (substitute-keyword-arguments (package-arguments python2-tegaki-wagomu)
590 ((#:phases _) '%standard-phases)))
591 (inputs
592 `(("python2-tegaki-pygtk" ,python2-tegaki-pygtk)))
593 ;; override inherited inputs
594 (native-inputs '())
595 (propagated-inputs '())
596 (synopsis "Chinese and Japanese Handwriting Recognition (Advanced tools)")
597 ;; Files in gifenc/ are licensed under gpl3+ while other files are licensed
598 ;; under gpl2+. Therefore, the combined work is licensed under gpl3+.
599 (license gpl3+)))
600
601(define-public python2-tegaki-recognize
602 (let ((commit "eceec69fe651d0733c8c8752dae569d2283d0f3c")
603 (revision "1"))
604 (package
605 (inherit python2-tegaki-tools)
606 (name "python2-tegaki-recognize")
607 ;; version copied from <https://github.com/tegaki/tegaki/releases>
608 (version (git-version "0.3.1" revision commit))
609 (source
610 (origin
611 ;; We use GIT-FETCH because 'tegaki-recognize.desktop.in' and
612 ;; 'tegaki-recognize.in' are missing in the tarball.
613 (method git-fetch)
614 (uri (git-reference
615 (url "https://github.com/tegaki/tegaki.git")
616 (commit commit)))
617 (sha256
618 (base32
619 "09mw2if9p885phbgah5f95q3fwy7s5b46qlmpxqyzfcnj6g7afr5"))
620 (file-name (git-file-name name version))
621 (modules `((guix build utils)
622 (ice-9 ftw)
623 (srfi srfi-26)
624 ,@remove-pre-compiled-files-modules))
625 (snippet
626 `(begin
627 ;; remove unnecessary files with potentially different license
628 (for-each delete-file-recursively
629 (scandir "."
630 (negate (cut member <> '("tegaki-recognize"
631 "." "..")))))
632 ,(remove-pre-compiled-files "pyc")
633 #t))))
634 (arguments
635 (substitute-keyword-arguments (package-arguments python2-tegaki-tools)
636 ((#:phases _)
637 `(modify-phases %standard-phases
638 (add-after 'unpack 'chdir
639 (lambda _
640 (chdir "tegaki-recognize")
641 #t))
642 ;; 'setup.py' script does not support one of the Python build
643 ;; system's default flags, "--single-version-externally-managed"
644 (replace 'install
645 (lambda* (#:key outputs #:allow-other-keys)
646 (invoke "python" "setup.py" "install"
647 (string-append "--prefix=" (assoc-ref outputs "out"))
648 "--root=/")
649 #t))))))
650 (synopsis "Chinese and Japanese Handwriting Recognition (Main program)")
651 (license gpl2+)))) ; all files
652
653(define-public tegaki-zinnia-japanese
654 (package
655 (inherit python2-tegaki-wagomu)
656 (name "tegaki-zinnia-japanese")
657 (version "0.3")
658 (source
659 (origin
660 (method url-fetch)
661 (uri (tegaki-release-uri name version "zip"))
662 (sha256
663 (base32
664 "1nmg9acxhcqly9gwkyb9m0hpy76fll91ywk4b1q4xms0ajxip1h7"))
665 (modules remove-pre-compiled-files-modules)
666 (snippet (remove-pre-compiled-files "model"))))
667 (build-system gnu-build-system)
668 (arguments
669 `(#:tests? #f ; no tests
670 #:phases
671 (modify-phases %standard-phases
672 (replace 'configure
673 (lambda* (#:key outputs #:allow-other-keys)
674 (substitute* "Makefile"
675 (("/usr/local")
676 (assoc-ref outputs "out")))
677 #t)))))
678 ;; override inherited inputs
679 (inputs '())
680 (native-inputs
681 `(("python2-tegaki-tools" ,python2-tegaki-tools)))
682 (propagated-inputs '())
683 (native-search-paths
684 (list (search-path-specification
685 (variable "TEGAKI_MODEL_PATH")
686 (files '("share/tegaki/models")))))
687 (synopsis "Chinese and Japanese Handwriting Recognition (Model)")
688 (license lgpl2.1))) ; all files
689
690(define-public tegaki-zinnia-japanese-light
691 (package
692 (inherit tegaki-zinnia-japanese)
693 (name "tegaki-zinnia-japanese-light")
694 (version "0.3")
695 (source
696 (origin
697 (method url-fetch)
698 (uri (tegaki-release-uri name version "zip"))
699 (sha256
700 (base32
701 "0x0fs29ylqzxd6xvg51h7rigpbisd7q8v11df425ib2j792yfyf8"))
702 (modules remove-pre-compiled-files-modules)
703 (snippet (remove-pre-compiled-files "model"))))
704 (license lgpl2.1))) ; all files
705
706(define-public tegaki-zinnia-japanese-kyoiku
707 (package
708 (inherit tegaki-zinnia-japanese)
709 (name "tegaki-zinnia-japanese-kyoiku")
710 (version "0.3")
711 (source
712 (origin
713 (method url-fetch)
714 (uri (tegaki-release-uri name version "zip"))
715 (sha256
716 (base32
717 "0am94bcpmbzplxdnwn9gk15sgaizvcfhmv13mk14jjvx3419cvvx"))
718 (modules remove-pre-compiled-files-modules)
719 (snippet (remove-pre-compiled-files "model"))))
720 (license lgpl2.1))) ; all files
721
722(define-public tegaki-zinnia-japanese-joyo
723 (package
724 (inherit tegaki-zinnia-japanese)
725 (name "tegaki-zinnia-japanese-joyo")
726 (version "0.3")
727 (source
728 (origin
729 (method url-fetch)
730 (uri (tegaki-release-uri name version "zip"))
731 (sha256
732 (base32
733 "1v0j40lzdyiz01ayws0b8r7fsdy2mr32658382kz4wyk883wzx2z"))
734 (modules remove-pre-compiled-files-modules)
735 (snippet (remove-pre-compiled-files "model"))))
736 (license lgpl2.1))) ; all files
737
738(define-public tegaki-zinnia-simplified-chinese
739 (package
740 (inherit tegaki-zinnia-japanese)
741 (name "tegaki-zinnia-simplified-chinese")
742 (version "0.3")
743 (source
744 (origin
745 (method url-fetch)
746 (uri (tegaki-release-uri name version "zip"))
747 (sha256
748 (base32
749 "18wq0jccv7lpnrfnzspyc110d6pj2v1i21xcx4fmgzz1lnln3fs5"))
750 (modules remove-pre-compiled-files-modules)
751 (snippet (remove-pre-compiled-files "model"))))
752 (license lgpl2.1))) ; all files
753
754(define-public tegaki-zinnia-simplified-chinese-light
755 (package
756 (inherit tegaki-zinnia-japanese)
757 (name "tegaki-zinnia-simplified-chinese-light")
758 (version "0.3")
759 (source
760 (origin
761 (method url-fetch)
762 (uri (tegaki-release-uri name version "zip"))
763 (sha256
764 (base32
765 "0v24yf0w0p03lb7fyx128a75mwzad166bigvlbrzqnad789qg1sr"))
766 (modules remove-pre-compiled-files-modules)
767 (snippet (remove-pre-compiled-files "model"))))
768 (license lgpl2.1))) ; all files
769
770(define-public tegaki-zinnia-traditional-chinese
771 (package
772 (inherit tegaki-zinnia-japanese)
773 (name "tegaki-zinnia-traditional-chinese")
774 (version "0.3")
775 (source
776 (origin
777 (method url-fetch)
778 (uri (tegaki-release-uri name version "zip"))
779 (sha256
780 (base32
781 "140nlp6hynrai2svs5670jjfw1za6ayflhyj2dl0bzsfgbk3447l"))
782 (modules remove-pre-compiled-files-modules)
783 (snippet (remove-pre-compiled-files "model"))))
784 (license lgpl2.1))) ; all files
785
786(define-public tegaki-zinnia-traditional-chinese-light
787 (package
788 (inherit tegaki-zinnia-japanese)
789 (name "tegaki-zinnia-traditional-chinese-light")
790 (version "0.3")
791 (source
792 (origin
793 (method url-fetch)
794 (uri (tegaki-release-uri name version "zip"))
795 (sha256
796 (base32
797 "1m6yk6a57vs9wg5y50qciwi1ahhmklp2mgsjysbj4mnyzv6yhcr2"))
798 (modules remove-pre-compiled-files-modules)
799 (snippet (remove-pre-compiled-files "model"))))
800 (license lgpl2.1))) ; all files
801
802(define-public tegaki-wagomu-japanese
803 (package
804 (inherit tegaki-zinnia-japanese)
805 (name "tegaki-wagomu-japanese")
806 (version "0.3")
807 (source
808 (origin
809 (method url-fetch)
810 (uri (tegaki-release-uri name version "zip"))
811 (sha256
812 (base32
813 "0flj5id8xwsn7csrrzqz9prdikswnwm2wms0as2vzdpxzph1az4k"))
814 (modules remove-pre-compiled-files-modules)
815 (snippet (remove-pre-compiled-files "model"))))
816 (license lgpl2.1))) ; all files
817
818(define-public tegaki-wagomu-japanese-kyoiku
819 (package
820 (inherit tegaki-zinnia-japanese)
821 (name "tegaki-wagomu-japanese-kyoiku")
822 (version "0.3")
823 (source
824 (origin
825 (method url-fetch)
826 (uri (tegaki-release-uri name version "zip"))
827 (sha256
828 (base32
829 "0v8crfh8rdf6ndp16g52s5jlrrlwh73xp38zjn5i9dlacx8kfqg1"))
830 (modules remove-pre-compiled-files-modules)
831 (snippet (remove-pre-compiled-files "model"))))
832 (license lgpl2.1))) ; all files
833
834(define-public tegaki-wagomu-japanese-joyo
835 (package
836 (inherit tegaki-zinnia-japanese)
837 (name "tegaki-wagomu-japanese-joyo")
838 (version "0.3")
839 (source
840 (origin
841 (method url-fetch)
842 (uri (tegaki-release-uri name version "zip"))
843 (sha256
844 (base32
845 "0wk8shpr963zp328g991qs6abpnacq4242003m687z2d6yp7nph2"))
846 (modules remove-pre-compiled-files-modules)
847 (snippet (remove-pre-compiled-files "model"))))
848 (license lgpl2.1))) ; all files
849
850(define-public tegaki-wagomu-simplified-chinese
851 (package
852 (inherit tegaki-zinnia-japanese)
853 (name "tegaki-wagomu-simplified-chinese")
854 (version "0.3")
855 (source
856 (origin
857 (method url-fetch)
858 (uri (tegaki-release-uri name version "zip"))
859 (sha256
860 (base32
861 "0wqprynigqxqxv128i1smh81gxvmjj056d9qpznxa3n9f5ymlbj6"))
862 (modules remove-pre-compiled-files-modules)
863 (snippet (remove-pre-compiled-files "model"))))
864 (license lgpl2.1))) ; all files
865
866;;; Upstream does not provide the source for tegaki-wagomu-traditional-chinese.
867;;; Therefore, we use the source for tegaki-zinnia-traditional-chinese and
868;;; patch the Makefile accordingly.
869(define-public tegaki-wagomu-traditional-chinese
870 (package
871 (inherit tegaki-zinnia-traditional-chinese)
872 (name "tegaki-wagomu-traditional-chinese")
873 (arguments
874 (substitute-keyword-arguments
875 (package-arguments tegaki-zinnia-traditional-chinese)
876 ((#:phases phases '%standard-phases)
877 `(modify-phases ,phases
878 (replace 'configure
879 (lambda args
880 (let ((configure (assq-ref ,phases 'configure)))
881 (apply configure args))
882 (substitute* "Makefile"
883 (("zinnia") "wagomu"))
884 #t))))))
885 (license lgpl2.1))) ; all files
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index a543df3fe8b..be187886874 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -349,10 +349,10 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
349 "linux-" version ".tar.xz")) 349 "linux-" version ".tar.xz"))
350 (sha256 hash))) 350 (sha256 hash)))
351 351
352(define-public linux-libre-5.2-version "5.2.13") 352(define-public linux-libre-5.2-version "5.2.15")
353(define-public linux-libre-5.2-pristine-source 353(define-public linux-libre-5.2-pristine-source
354 (let ((version linux-libre-5.2-version) 354 (let ((version linux-libre-5.2-version)
355 (hash (base32 "12hpph3iynr22mfwz7745lp01waf2kg579hr56d4pvhx4iahzdhp"))) 355 (hash (base32 "0jhc70r2rygm91qifjagg1jgbpjwyyq6m8g1n5iv81l1v84i0mpb")))
356 (make-linux-libre-source version 356 (make-linux-libre-source version
357 (%upstream-linux-source version hash) 357 (%upstream-linux-source version hash)
358 deblob-scripts-5.2))) 358 deblob-scripts-5.2)))
@@ -3838,7 +3838,7 @@ and copy/paste text in the console and in xterm.")
3838(define-public btrfs-progs 3838(define-public btrfs-progs
3839 (package 3839 (package
3840 (name "btrfs-progs") 3840 (name "btrfs-progs")
3841 (version "5.2.1") 3841 (version "5.2.2")
3842 (source (origin 3842 (source (origin
3843 (method url-fetch) 3843 (method url-fetch)
3844 (uri (string-append "mirror://kernel.org/linux/kernel/" 3844 (uri (string-append "mirror://kernel.org/linux/kernel/"
@@ -3846,7 +3846,7 @@ and copy/paste text in the console and in xterm.")
3846 "btrfs-progs-v" version ".tar.xz")) 3846 "btrfs-progs-v" version ".tar.xz"))
3847 (sha256 3847 (sha256
3848 (base32 3848 (base32
3849 "0crjv3i20nyj2dagfw6q7byshscpn6j7wlqch3apkzzzk00lmb1n")))) 3849 "1imivxjppi8zl27gn472pwpk8bg5dijkbyi340by31vhy7dj24w2"))))
3850 (build-system gnu-build-system) 3850 (build-system gnu-build-system)
3851 (outputs '("out" 3851 (outputs '("out"
3852 "static")) ; static versions of the binaries in "out" 3852 "static")) ; static versions of the binaries in "out"
@@ -4455,18 +4455,18 @@ cpufreq sub-system is enabled or not.")
4455(define-public haveged 4455(define-public haveged
4456 (package 4456 (package
4457 (name "haveged") 4457 (name "haveged")
4458 (version "1.9.4") 4458 (version "1.9.6")
4459 (source 4459 (source
4460 (origin 4460 (origin
4461 (method git-fetch) 4461 (method git-fetch)
4462 (uri (git-reference 4462 (uri (git-reference
4463 (url "https://github.com/jirka-h/haveged.git") 4463 (url "https://github.com/jirka-h/haveged.git")
4464 (commit version))) 4464 (commit (string-append "v" version))))
4465 (file-name (git-file-name name version)) 4465 (file-name (git-file-name name version))
4466 (sha256 4466 (sha256
4467 (base32 "1hrwzjd4byq4fdrg8svww3d8x449k80jxxrjy9v6jvzhfv19rvxr")))) 4467 (base32 "11kr19n2f87izsj341lv5amhd1wc2ckfmqr9pq5fxix8pkbs94rh"))))
4468 (build-system gnu-build-system) 4468 (build-system gnu-build-system)
4469 (home-page "http://www.issihosts.com/haveged") 4469 (home-page "https://www.issihosts.com/haveged")
4470 (synopsis "Entropy source for the Linux random number generator") 4470 (synopsis "Entropy source for the Linux random number generator")
4471 (description 4471 (description
4472 "haveged generates an unpredictable stream of random numbers for use by 4472 "haveged generates an unpredictable stream of random numbers for use by
@@ -4475,10 +4475,10 @@ standard mechanisms for filling the entropy pool may not be sufficient for
4475systems with high needs or limited user interaction, such as headless servers. 4475systems with high needs or limited user interaction, such as headless servers.
4476 4476
4477@command{haveged} runs as a privileged daemon, harvesting randomness from the 4477@command{haveged} runs as a privileged daemon, harvesting randomness from the
4478indirect effects of hardware events on hidden processor state using the HArdware 4478indirect effects of hardware events on hidden processor state using the
4479Volatile Entropy Gathering and Expansion (@dfn{HAVEGE}) algorithm. It tunes 4479@acronym{HAVEGE, HArdware Volatile Entropy Gathering and Expansion} algorithm.
4480itself to its environment and provides the same built-in test suite for the 4480It tunes itself to its environment and provides the same built-in test suite
4481output stream as used on certified hardware security devices. 4481for the output stream as used on certified hardware security devices.
4482 4482
4483The quality of the randomness produced by this algorithm has not been proven. 4483The quality of the randomness produced by this algorithm has not been proven.
4484It is recommended to run it together with another entropy source like rngd, and 4484It is recommended to run it together with another entropy source like rngd, and
@@ -5140,14 +5140,14 @@ re-use code and to avoid re-inventing the wheel.")
5140(define-public libnftnl 5140(define-public libnftnl
5141 (package 5141 (package
5142 (name "libnftnl") 5142 (name "libnftnl")
5143 (version "1.1.3") 5143 (version "1.1.4")
5144 (source 5144 (source
5145 (origin 5145 (origin
5146 (method url-fetch) 5146 (method url-fetch)
5147 (uri (string-append "mirror://netfilter.org/libnftnl/" 5147 (uri (string-append "mirror://netfilter.org/libnftnl/"
5148 "libnftnl-" version ".tar.bz2")) 5148 "libnftnl-" version ".tar.bz2"))
5149 (sha256 5149 (sha256
5150 (base32 "03xszkcpqk3s1rqc6vh7g5j13kh3d3yjnvjhk5scds3an39rgp92")))) 5150 (base32 "087dfc2n4saf2k68hyi4byvgz5grwpw5kfjvmkpn3wmd8y1riiy8"))))
5151 (build-system gnu-build-system) 5151 (build-system gnu-build-system)
5152 (native-inputs 5152 (native-inputs
5153 `(("pkg-config" ,pkg-config))) 5153 `(("pkg-config" ,pkg-config)))
@@ -5164,7 +5164,7 @@ used by nftables.")
5164(define-public nftables 5164(define-public nftables
5165 (package 5165 (package
5166 (name "nftables") 5166 (name "nftables")
5167 (version "0.9.0") 5167 (version "0.9.2")
5168 (source 5168 (source
5169 (origin 5169 (origin
5170 (method url-fetch) 5170 (method url-fetch)
@@ -5172,7 +5172,7 @@ used by nftables.")
5172 "/files/nftables-" version ".tar.bz2")) 5172 "/files/nftables-" version ".tar.bz2"))
5173 (sha256 5173 (sha256
5174 (base32 5174 (base32
5175 "14bygs6vg2v448cw5r4pxqi8an29hw0m9vab8hpmgjmrzjsq30dd")))) 5175 "1x8kalbggjq44j4916i6vyv1rb20dlh1dcsf9xvzqsry2j063djw"))))
5176 (build-system gnu-build-system) 5176 (build-system gnu-build-system)
5177 (arguments `(#:configure-flags 5177 (arguments `(#:configure-flags
5178 '("--disable-man-doc"))) ; FIXME: Needs docbook2x. 5178 '("--disable-man-doc"))) ; FIXME: Needs docbook2x.
@@ -5874,15 +5874,15 @@ the superuser to make device nodes.")
5874(define-public fakeroot 5874(define-public fakeroot
5875 (package 5875 (package
5876 (name "fakeroot") 5876 (name "fakeroot")
5877 (version "1.23") 5877 (version "1.24")
5878 (source (origin 5878 (source (origin
5879 (method url-fetch) 5879 (method url-fetch)
5880 (uri (string-append "http://ftp.debian.org/debian/pool/main/f/" 5880 (uri (string-append "https://deb.debian.org/debian/pool/main/f/"
5881 "fakeroot/fakeroot_" version ".orig.tar.xz")) 5881 "fakeroot/fakeroot_" version ".orig.tar.gz"))
5882 (file-name (string-append name "-" version ".tar.gz")) 5882 (file-name (string-append name "-" version ".tar.gz"))
5883 (sha256 5883 (sha256
5884 (base32 5884 (base32
5885 "1xpl0s2yjyjwlf832b6kbkaa5921liybaar13k7n45ckd9lxd700")))) 5885 "1vb6f93hjyqnwx8dc8mm3dgma7axgqk8s7sdsjs8l2rpc0qmn11f"))))
5886 (build-system gnu-build-system) 5886 (build-system gnu-build-system)
5887 (arguments 5887 (arguments
5888 `(#:phases 5888 `(#:phases
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 65fc1a58cd8..0c8ad1e2fa5 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -6861,3 +6861,76 @@ extension-points via the concept of hooks.")
6861 6861
6862(define-public ecl-cl-hooks 6862(define-public ecl-cl-hooks
6863 (sbcl-package->ecl-package sbcl-cl-hooks)) 6863 (sbcl-package->ecl-package sbcl-cl-hooks))
6864
6865(define-public sbcl-s-sysdeps
6866 (let ((commit "d28246b5dffef9e73a0e0e6cfbc4e878006fe34d")
6867 (revision "1"))
6868 (package
6869 (name "sbcl-s-sysdeps")
6870 (build-system asdf-build-system/sbcl)
6871 (version (git-version "1" revision commit))
6872 (home-page "https://github.com/svenvc/s-sysdeps")
6873 (source
6874 (origin
6875 (method git-fetch)
6876 (uri (git-reference
6877 (url home-page)
6878 (commit commit)))
6879 (file-name (git-file-name name version))
6880 (sha256
6881 (base32
6882 "14b69b81yrxmjlvmm3lfxk04x5v7hqz4fql121334wh72czznfh9"))))
6883 (synopsis "Common Lisp abstraction layer over platform dependent functionality")
6884 (description "@code{s-sysdeps} is an abstraction layer over platform
6885dependent functionality. This simple package is used as a building block in a
6886number of other open source projects.
6887
6888@code{s-sysdeps} abstracts:
6889
6890@itemize
6891@item managing processes,
6892@item implementing a standard TCP/IP server,
6893@item opening a client TCP/IP socket stream,
6894@item working with process locks.
6895@end itemize\n")
6896 (license license:llgpl))))
6897
6898(define-public cl-s-sysdeps
6899 (sbcl-package->cl-source-package sbcl-s-sysdeps))
6900
6901(define-public ecl-s-sysdeps
6902 (sbcl-package->ecl-package sbcl-s-sysdeps))
6903
6904(define-public sbcl-cl-prevalence
6905 (let ((commit "c163c227ed85d430b82cb1e3502f72d4f88e3cfa")
6906 (revision "1"))
6907 (package
6908 (name "sbcl-cl-prevalence")
6909 (build-system asdf-build-system/sbcl)
6910 (version (git-version "5" revision commit))
6911 (home-page "https://github.com/40ants/cl-prevalence")
6912 (source
6913 (origin
6914 (method git-fetch)
6915 (uri (git-reference
6916 (url home-page)
6917 (commit commit)))
6918 (file-name (git-file-name name version))
6919 (sha256
6920 (base32
6921 "1i9zj1q2ahgwch56an21yzbgkynz0kab9fyxkq9mg8p3xrv38jjn"))))
6922 (inputs
6923 `(("s-sysdeps" ,sbcl-s-sysdeps)
6924 ("s-xml" ,sbcl-s-xml)))
6925 (synopsis "Implementation of object prevalence for Common Lisp")
6926 (description "This Common Lisp library implements object prevalence (see
6927@url{https://en.wikipedia.org/wiki/System_prevalence}). It allows
6928for (de)serializing to and from s-exps as well as XML. Serialization of arbitrary
6929classes and cyclic data structures are supported.")
6930 (license license:llgpl))))
6931
6932(define-public cl-prevalence
6933 (sbcl-package->cl-source-package sbcl-cl-prevalence))
6934
6935(define-public ecl-cl-prevalence
6936 (sbcl-package->ecl-package sbcl-cl-prevalence))
diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm
index ff62d3b362a..075decc61a4 100644
--- a/gnu/packages/lua.scm
+++ b/gnu/packages/lua.scm
@@ -4,7 +4,7 @@
4;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> 4;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
5;;; Copyright © 2014 Andreas Enge <andreas@enge.fr> 5;;; Copyright © 2014 Andreas Enge <andreas@enge.fr>
6;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il> 6;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
7;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> 7;;; Copyright © 2016, 2019 Ricardo Wurmus <rekado@elephly.net>
8;;; Copyright © 2016 doncatnip <gnopap@gmail.com> 8;;; Copyright © 2016 doncatnip <gnopap@gmail.com>
9;;; Copyright © 2016, 2017, 2019 Clément Lassieur <clement@lassieur.org> 9;;; Copyright © 2016, 2017, 2019 Clément Lassieur <clement@lassieur.org>
10;;; Copyright © 2016 José Miguel Sánchez García <jmi2k@openmailbox.org> 10;;; Copyright © 2016 José Miguel Sánchez García <jmi2k@openmailbox.org>
@@ -39,6 +39,7 @@
39 #:use-module (gnu packages tls) 39 #:use-module (gnu packages tls)
40 #:use-module (gnu packages xml) 40 #:use-module (gnu packages xml)
41 #:use-module (gnu packages glib) 41 #:use-module (gnu packages glib)
42 #:use-module (gnu packages libevent)
42 #:use-module (gnu packages libffi) 43 #:use-module (gnu packages libffi)
43 #:use-module (gnu packages pkg-config) 44 #:use-module (gnu packages pkg-config)
44 #:use-module (gnu packages xorg) 45 #:use-module (gnu packages xorg)
@@ -450,6 +451,69 @@ Grammars (PEGs).")
450(define-public lua5.2-lpeg 451(define-public lua5.2-lpeg
451 (make-lua-lpeg "lua5.2-lpeg" lua-5.2)) 452 (make-lua-lpeg "lua5.2-lpeg" lua-5.2))
452 453
454(define (make-lua-luv name lua)
455 (package
456 (name name)
457 (version "1.30.1-0")
458 (source (origin
459 ;; The release tarball includes the sources of libuv but does
460 ;; not include the pkg-config files.
461 (method git-fetch)
462 (uri (git-reference
463 (url "https://github.com/luvit/luv.git")
464 (commit version)))
465 (file-name (git-file-name name version))
466 (sha256
467 (base32
468 "1lfzzyphpim28kw33k7zylcyxnf40ckhdg6hbqyzb5hszdf2hbka"))))
469 (build-system cmake-build-system)
470 (arguments
471 `(#:tests? #f ; there are none
472 #:configure-flags
473 '("-DWITH_LUA_ENGINE=Lua"
474 "-DWITH_SHARED_LIBUV=On"
475 "-DBUILD_MODULE=Off"
476 "-DBUILD_SHARED_LIBS=On"
477 "-DLUA_BUILD_TYPE=System")
478 #:phases
479 (modify-phases %standard-phases
480 (add-after 'unpack 'copy-lua-compat
481 (lambda* (#:key inputs #:allow-other-keys)
482 (copy-recursively (assoc-ref inputs "lua-compat")
483 "lua-compat")
484 (setenv "CPATH"
485 (string-append (getcwd) "/lua-compat:"
486 (or (getenv "CPATH") "")))
487 #t)))))
488 (inputs
489 `(("lua" ,lua)
490 ("libuv" ,libuv)))
491 (native-inputs
492 `(("lua-compat"
493 ,(origin
494 (method git-fetch)
495 (uri (git-reference
496 (url "https://github.com/keplerproject/lua-compat-5.3.git")
497 (commit "daebe77a2f498817713df37f0bb316db1d82222f")))
498 (file-name "lua-compat-5.3-checkout")
499 (sha256
500 (base32
501 "02a14nvn7aggg1yikj9h3dcf8aqjbxlws1bfvqbpfxv9d5phnrpz"))))))
502 (home-page "https://github.com/luvit/luv/")
503 (synopsis "Libuv bindings for Lua")
504 (description
505 "This library makes libuv available to Lua scripts.")
506 (license license:asl2.0)))
507
508(define-public lua-luv
509 (make-lua-luv "lua-luv" lua))
510
511(define-public lua5.1-luv
512 (make-lua-luv "lua5.1-luv" lua-5.1))
513
514(define-public lua5.2-luv
515 (make-lua-luv "lua5.2-luv" lua-5.2))
516
453;; Lua 5.3 is not supported. 517;; Lua 5.3 is not supported.
454(define (make-lua-bitop name lua) 518(define (make-lua-bitop name lua)
455 (package 519 (package
diff --git a/gnu/packages/lxqt.scm b/gnu/packages/lxqt.scm
index e72f5b82d9e..e5487d3ae42 100644
--- a/gnu/packages/lxqt.scm
+++ b/gnu/packages/lxqt.scm
@@ -1177,7 +1177,8 @@ processes currently in existence, much like code{top} or code{ps}.")
1177 (base32 "0v1vvi8vf9y8nv8y0gzffaqji53s75ab5jypksih0ndcws8ryww4")))) 1177 (base32 "0v1vvi8vf9y8nv8y0gzffaqji53s75ab5jypksih0ndcws8ryww4"))))
1178 (build-system cmake-build-system) 1178 (build-system cmake-build-system)
1179 (inputs 1179 (inputs
1180 `(("qtbase" ,qtbase))) 1180 `(("qtbase" ,qtbase)
1181 ("utf8proc" ,utf8proc)))
1181 (native-inputs 1182 (native-inputs
1182 `(("lxqt-build-tools" ,lxqt-build-tools) 1183 `(("lxqt-build-tools" ,lxqt-build-tools)
1183 ("qttools" ,qttools))) 1184 ("qttools" ,qttools)))
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 16d3af3831b..e44ec66cb54 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -1726,11 +1726,16 @@ This is the certified version of the Open Cascade Technology (OCCT) library.")
1726 (version "2.16.0") 1726 (version "2.16.0")
1727 (source 1727 (source
1728 (origin 1728 (origin
1729 (method url-fetch) 1729 (method git-fetch)
1730 (uri (string-append "http://gmsh.info/src/gmsh-" 1730 (uri (git-reference
1731 version "-source.tgz")) 1731 (url "https://gitlab.onelab.info/gmsh/gmsh.git")
1732 (commit
1733 (string-append "gmsh_"
1734 (string-map (lambda (x) (if (eq? x #\.) #\_ x))
1735 version)))))
1736 (file-name (git-file-name name version))
1732 (sha256 1737 (sha256
1733 (base32 "1slf0bfkwrcgn6296wb4qhbk4ahz6i4wfb10hnim08x05vrylag8")) 1738 (base32 "08rq4jajwmlpivnm9yifz2jhaivnz065lnk0h2zv773nwl9wf162"))
1734 (modules '((guix build utils))) 1739 (modules '((guix build utils)))
1735 (snippet 1740 (snippet
1736 ;; Remove non-free METIS code 1741 ;; Remove non-free METIS code
@@ -1756,7 +1761,7 @@ This is the certified version of the Open Cascade Technology (OCCT) library.")
1756 `(#:configure-flags `("-DENABLE_METIS:BOOL=OFF" 1761 `(#:configure-flags `("-DENABLE_METIS:BOOL=OFF"
1757 "-DENABLE_BUILD_SHARED:BOOL=ON" 1762 "-DENABLE_BUILD_SHARED:BOOL=ON"
1758 "-DENABLE_BUILD_DYNAMIC:BOOL=ON"))) 1763 "-DENABLE_BUILD_DYNAMIC:BOOL=ON")))
1759 (home-page "http://www.geuz.org/gmsh/") 1764 (home-page "http://gmsh.info/")
1760 (synopsis "3D finite element grid generator") 1765 (synopsis "3D finite element grid generator")
1761 (description "Gmsh is a 3D finite element grid generator with a built-in 1766 (description "Gmsh is a 3D finite element grid generator with a built-in
1762CAD engine and post-processor. Its design goal is to provide a fast, light 1767CAD engine and post-processor. Its design goal is to provide a fast, light
@@ -3100,6 +3105,10 @@ parts of it.")
3100 3105
3101(define-public openblas 3106(define-public openblas
3102 (package 3107 (package
3108 ;; TODO: Incorporate 'openblas/fixed-num-threads' changes on the next
3109 ;; rebuild cycle.
3110 (replacement openblas/fixed-num-threads)
3111
3103 (name "openblas") 3112 (name "openblas")
3104 (version "0.3.6") 3113 (version "0.3.6")
3105 (source 3114 (source
@@ -3170,7 +3179,7 @@ parts of it.")
3170 (license license:bsd-3))) 3179 (license license:bsd-3)))
3171 3180
3172(define-public openblas-ilp64 3181(define-public openblas-ilp64
3173 (package (inherit openblas) 3182 (package/inherit openblas
3174 (name "openblas-ilp64") 3183 (name "openblas-ilp64")
3175 (supported-systems '("x86_64-linux" "aarch64-linux" "mips64el-linux")) 3184 (supported-systems '("x86_64-linux" "aarch64-linux" "mips64el-linux"))
3176 (arguments 3185 (arguments
@@ -3181,6 +3190,24 @@ parts of it.")
3181 (synopsis "Optimized BLAS library based on GotoBLAS (ILP64 version)") 3190 (synopsis "Optimized BLAS library based on GotoBLAS (ILP64 version)")
3182 (license license:bsd-3))) 3191 (license license:bsd-3)))
3183 3192
3193(define openblas/fixed-num-threads
3194 ;; TODO: Move that to 'openblas' proper on the next rebuild cycle.
3195 (package
3196 (inherit openblas)
3197 (version (match (string-split (package-version openblas) #\.)
3198 ((numbers ... (= string-length len))
3199 (string-join (append numbers
3200 (list (make-string len #\a)))
3201 "."))))
3202 (arguments
3203 (substitute-keyword-arguments (package-arguments openblas)
3204 ((#:make-flags flags ''())
3205 ;; This is the maximum number of threads OpenBLAS will ever use (that
3206 ;; is, if $OPENBLAS_NUM_THREADS is greater than that, then NUM_THREADS
3207 ;; is used.) If we don't set it, the makefile sets it to the number
3208 ;; of cores of the build machine, which is obviously wrong.
3209 `(cons "NUM_THREADS=128" ,flags))))))
3210
3184(define* (make-blis implementation #:optional substitutable?) 3211(define* (make-blis implementation #:optional substitutable?)
3185 "Return a BLIS package with the given IMPLEMENTATION (see config/ in the 3212 "Return a BLIS package with the given IMPLEMENTATION (see config/ in the
3186source tree for a list of implementations.) 3213source tree for a list of implementations.)
@@ -3837,8 +3864,8 @@ set.")
3837 `(("doc++" ,doc++) 3864 `(("doc++" ,doc++)
3838 ("netpbm" ,netpbm) 3865 ("netpbm" ,netpbm)
3839 ("perl" ,perl) ; needed to run 'ppmquant' during tests 3866 ("perl" ,perl) ; needed to run 'ppmquant' during tests
3840 ("texlive" ,(texlive-union (list texlive-generic-xypic 3867 ("texlive" ,(texlive-union (list texlive-xypic
3841 texlive-fonts-xypic 3868 texlive-cm
3842 texlive-latex-hyperref 3869 texlive-latex-hyperref
3843 texlive-bibtex))) 3870 texlive-bibtex)))
3844 ("ghostscript" ,ghostscript))) 3871 ("ghostscript" ,ghostscript)))
diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm
index 7bdd122f2b8..e1cb736b82f 100644
--- a/gnu/packages/mes.scm
+++ b/gnu/packages/mes.scm
@@ -1,5 +1,5 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2017,2018 Jan Nieuwenhuizen <janneke@gnu.org> 2;;; Copyright © 2017, 2018, 2019 Jan Nieuwenhuizen <janneke@gnu.org>
3;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il> 3;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
4;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> 4;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
5;;; 5;;;
@@ -62,14 +62,14 @@ extensive examples, including parsers for the Javascript and C99 languages.")
62(define-public nyacc 62(define-public nyacc
63 (package 63 (package
64 (inherit nyacc-0.86) 64 (inherit nyacc-0.86)
65 (version "0.94.0") 65 (version "0.99.0")
66 (source (origin 66 (source (origin
67 (method url-fetch) 67 (method url-fetch)
68 (uri (string-append "mirror://savannah/nyacc/nyacc-" 68 (uri (string-append "mirror://savannah/nyacc/nyacc-"
69 version ".tar.gz")) 69 version ".tar.gz"))
70 (sha256 70 (sha256
71 (base32 71 (base32
72 "12qnzwm1n3j8z7hbr9hy2wka9a1aasm2rvnpnvdxkjcsbdzj8fn4")) 72 "0hl5qxx19i4x1r0839sxm19ziqq65g4hy97yik81cc2yb9yvgyv3"))
73 (modules '((guix build utils))) 73 (modules '((guix build utils)))
74 (snippet 74 (snippet
75 '(begin 75 '(begin
@@ -93,22 +93,19 @@ extensive examples, including parsers for the Javascript and C99 languages.")
93(define-public mes 93(define-public mes
94 (package 94 (package
95 (name "mes") 95 (name "mes")
96 (version "0.19") 96 (version "0.20")
97 (source (origin 97 (source (origin
98 (method url-fetch) 98 (method url-fetch)
99 (uri (string-append "mirror://gnu/mes/" 99 (uri (string-append "mirror://gnu/mes/"
100 "mes-" version ".tar.gz")) 100 "mes-" version ".tar.gz"))
101 (sha256 101 (sha256
102 (base32 102 (base32
103 "15h4yhaywdc0djpjlin2jz1kzahpqxfki0r0aav1qm9nxxmnp1l0")))) 103 "04pajp8v31na34ls4730ig5f6miiplhdvkmsb9ls1b8bbmw2vb4n"))))
104 (build-system gnu-build-system) 104 (build-system gnu-build-system)
105 (supported-systems '("i686-linux" "x86_64-linux")) 105 (supported-systems '("i686-linux" "x86_64-linux"))
106 (propagated-inputs 106 (propagated-inputs
107 `(("mescc-tools" ,mescc-tools) 107 `(("mescc-tools" ,mescc-tools)
108 108 ("nyacc" ,nyacc)))
109 ;; XXX: MesCC appears to enter an infinite loop (?) while building
110 ;; crt1.o when we switch to nyacc 0.94.
111 ("nyacc" ,nyacc-0.86)))
112 (native-inputs 109 (native-inputs
113 `(("guile" ,guile-2.2) 110 `(("guile" ,guile-2.2)
114 ,@(let ((target-system (or (%current-target-system) 111 ,@(let ((target-system (or (%current-target-system)
@@ -168,3 +165,19 @@ linker, the blood-elf symbol table generator, the kaem shell, exec_enable and
168get_machine.") 165get_machine.")
169 (home-page "https://savannah.nongnu.org/projects/mescc-tools") 166 (home-page "https://savannah.nongnu.org/projects/mescc-tools")
170 (license gpl3+)))) 167 (license gpl3+))))
168
169(define-public mescc-tools-0.6.1
170 (package
171 (inherit mescc-tools)
172 (name "mescc-tools")
173 (version "0.6.1")
174 (source (origin
175 (method url-fetch)
176 (uri (string-append
177 "http://git.savannah.nongnu.org/cgit/mescc-tools.git/snapshot/"
178 name "-Release_" version
179 ".tar.gz"))
180 (file-name (string-append name "-" version ".tar.gz"))
181 (sha256
182 (base32
183 "06jpvq6xfjzn2al6b4rdwd3zv3h4cvilc4n9gqcnjr9cr6wjpw2n"))))))
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index db6c42f6b11..2b30308861b 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -22,6 +22,7 @@
22;;; Copyright © 2019 Gabriel Hondet <gabrielhondet@gmail.com> 22;;; Copyright © 2019 Gabriel Hondet <gabrielhondet@gmail.com>
23;;; Copyright © 2019 Timotej Lazar <timotej.lazar@araneo.si> 23;;; Copyright © 2019 Timotej Lazar <timotej.lazar@araneo.si>
24;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.lonestar.org> 24;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.lonestar.org>
25;;; Copyright © 2019 raingloom <raingloom@protonmail.com>
25;;; 26;;;
26;;; This file is part of GNU Guix. 27;;; This file is part of GNU Guix.
27;;; 28;;;
@@ -2137,7 +2138,7 @@ capabilities, custom envelopes, effects, etc.")
2137(define-public yoshimi 2138(define-public yoshimi
2138 (package 2139 (package
2139 (name "yoshimi") 2140 (name "yoshimi")
2140 (version "1.6.0") 2141 (version "1.6.0.1")
2141 (source (origin 2142 (source (origin
2142 (method url-fetch) 2143 (method url-fetch)
2143 (uri (string-append "mirror://sourceforge/yoshimi/" 2144 (uri (string-append "mirror://sourceforge/yoshimi/"
@@ -2145,10 +2146,10 @@ capabilities, custom envelopes, effects, etc.")
2145 "/yoshimi-" version ".tar.bz2")) 2146 "/yoshimi-" version ".tar.bz2"))
2146 (sha256 2147 (sha256
2147 (base32 2148 (base32
2148 "0bcc5spnq73yp1fmm367d1mxcswqkmzs3cnpb4cxr513ir98sa50")))) 2149 "140f2k4akj39pny8c7i794q125415gyvmy4rday0il5ncp3glik4"))))
2149 (build-system cmake-build-system) 2150 (build-system cmake-build-system)
2150 (arguments 2151 (arguments
2151 `(#:tests? #f ; there are no tests 2152 `(#:tests? #f ; there are no tests
2152 #:configure-flags 2153 #:configure-flags
2153 (list (string-append "-DCMAKE_INSTALL_DATAROOTDIR=" 2154 (list (string-append "-DCMAKE_INSTALL_DATAROOTDIR="
2154 (assoc-ref %outputs "out") "/share")) 2155 (assoc-ref %outputs "out") "/share"))
@@ -4521,3 +4522,65 @@ discard bad quality ones.
4521controller.") 4522controller.")
4522 (home-page "https://github.com/charlesfleche/lpd8editor") 4523 (home-page "https://github.com/charlesfleche/lpd8editor")
4523 (license license:expat))) 4524 (license license:expat)))
4525
4526(define-public fmit
4527 (package
4528 (name "fmit")
4529 (version "1.2.6")
4530 (source (origin
4531 (method git-fetch)
4532 (uri (git-reference
4533 (url "https://github.com/gillesdegottex/fmit/")
4534 (commit (string-append "v" version))))
4535 (file-name (git-file-name name version))
4536 (sha256
4537 (base32
4538 "03nzkig5mw2rqwhwmg0qvc5cnk9bwh2wp13jh0mdrr935w0587mz"))))
4539 (build-system gnu-build-system)
4540 (arguments
4541 '(#:phases
4542 (modify-phases %standard-phases
4543 (delete 'configure)
4544 (add-before 'build 'qmake
4545 (lambda _
4546 (let ((out (assoc-ref %outputs "out")))
4547 (invoke "qmake"
4548 "fmit.pro"
4549 (string-append "PREFIX=" out)
4550 (string-append "PREFIXSHORTCUT=" out)
4551 "CONFIG+=acs_qt acs_alsa acs_jack acs_portaudio"))))
4552 (add-after 'install 'wrap-executable
4553 (lambda* (#:key inputs outputs #:allow-other-keys)
4554 (let ((out (assoc-ref outputs "out")))
4555 (wrap-program (string-append out "/bin/fmit")
4556 `("QT_PLUGIN_PATH" ":" prefix
4557 ,(map (lambda (label)
4558 (string-append (assoc-ref inputs label)
4559 "/lib/qt5/plugins"))
4560 '("qtbase" "qtmultimedia" "qtsvg")))
4561 `("QML2_IMPORT_PATH" ":" prefix
4562 ,(map (lambda (label)
4563 (string-append (assoc-ref inputs label)
4564 "/lib/qt5/qml"))
4565 '("qtmultimedia"))))
4566 #t))))))
4567 (inputs
4568 `(("alsa-lib" ,alsa-lib)
4569 ("fftw" ,fftw)
4570 ("jack" ,jack-1)
4571 ("portaudio" ,portaudio)
4572 ("qtbase" ,qtbase)
4573 ("qtmultimedia" ,qtmultimedia)
4574 ("qtsvg" ,qtsvg)))
4575 (native-inputs
4576 `(("gettext" ,gnu-gettext)
4577 ("hicolor-icon-theme" ,hicolor-icon-theme)
4578 ("itstool" ,itstool)
4579 ("qttools" ,qttools)))
4580 (synopsis "Musical instrument tuner")
4581 (description "FMIT is a graphical utility for tuning musical instruments,
4582with error and volume history, and advanced features.")
4583 (home-page "https://gillesdegottex.github.io/fmit/")
4584 ;; Most of the code is under GPL2+, but some abstract or helper classes
4585 ;; are under LGPL2.1.
4586 (license (list license:gpl2+ license:lgpl2.1))))
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index ee7d65fc06b..bfa901a84e8 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -284,7 +284,7 @@ transparently check connection attempts against an access control list.")
284 (base32 284 (base32
285 "0qzp80ky4y2k7k1ya09v9gkivvfbz2km813snrb8jhnn634bbmzb")))) 285 "0qzp80ky4y2k7k1ya09v9gkivvfbz2km813snrb8jhnn634bbmzb"))))
286 (build-system gnu-build-system) 286 (build-system gnu-build-system)
287 (home-page "http://zeromq.org") 287 (home-page "https://zeromq.org")
288 (synopsis "Library for message-based applications") 288 (synopsis "Library for message-based applications")
289 (description 289 (description
290 "The 0MQ lightweight messaging kernel is a library which extends the 290 "The 0MQ lightweight messaging kernel is a library which extends the
@@ -1968,14 +1968,14 @@ displays the results in real time.")
1968(define-public strongswan 1968(define-public strongswan
1969 (package 1969 (package
1970 (name "strongswan") 1970 (name "strongswan")
1971 (version "5.8.0") 1971 (version "5.8.1")
1972 (source 1972 (source
1973 (origin 1973 (origin
1974 (method url-fetch) 1974 (method url-fetch)
1975 (uri (string-append "https://download.strongswan.org/strongswan-" 1975 (uri (string-append "https://download.strongswan.org/strongswan-"
1976 version ".tar.bz2")) 1976 version ".tar.bz2"))
1977 (sha256 1977 (sha256
1978 (base32 "0cq9m86ydd2i0awxkv4a256f4926p2f9pzlisyskl9fngl6f3c8m")))) 1978 (base32 "034rd6kr1bmnvj8rg2kcxdjb0cgj3dn9310mmm94j1awxan71byr"))))
1979 (build-system gnu-build-system) 1979 (build-system gnu-build-system)
1980 (arguments 1980 (arguments
1981 `(#:phases 1981 `(#:phases
@@ -1998,7 +1998,7 @@ displays the results in real time.")
1998 #t))) 1998 #t)))
1999 #:configure-flags 1999 #:configure-flags
2000 (list 2000 (list
2001 ;; Disable bsd-4 licensed plugins 2001 ;; Disable bsd-4 licensed plugins.
2002 "--disable-des" 2002 "--disable-des"
2003 "--disable-blowfish"))) 2003 "--disable-blowfish")))
2004 (inputs 2004 (inputs
diff --git a/gnu/packages/ntp.scm b/gnu/packages/ntp.scm
index 419b6d7321d..6942ecec2f1 100644
--- a/gnu/packages/ntp.scm
+++ b/gnu/packages/ntp.scm
@@ -5,6 +5,7 @@
5;;; Copyright © 2015, 2018 Ludovic Courtès <ludo@gnu.org> 5;;; Copyright © 2015, 2018 Ludovic Courtès <ludo@gnu.org>
6;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il> 6;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
7;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> 7;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
8;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
8;;; 9;;;
9;;; This file is part of GNU Guix. 10;;; This file is part of GNU Guix.
10;;; 11;;;
@@ -108,8 +109,11 @@ computers over a network.")
108 "0fn12i4kzsi0zkr4qp3dp9bycmirnfapajqvdfx02zhr4hanj0kv")))) 109 "0fn12i4kzsi0zkr4qp3dp9bycmirnfapajqvdfx02zhr4hanj0kv"))))
109 (build-system gnu-build-system) 110 (build-system gnu-build-system)
110 (arguments 111 (arguments
111 '(#:configure-flags '("--with-privsep-user=ntpd" 112 '(#:configure-flags `( "--with-privsep-user=ntpd"
112 "--localstatedir=/var") 113 "--localstatedir=/var"
114 ,(string-append "--with-cacert="
115 (assoc-ref %build-inputs "libressl")
116 "/etc/ssl/cert.pem"))
113 #:phases 117 #:phases
114 (modify-phases %standard-phases 118 (modify-phases %standard-phases
115 (add-after 'unpack 'modify-install-locations 119 (add-after 'unpack 'modify-install-locations
diff --git a/gnu/packages/ocr.scm b/gnu/packages/ocr.scm
index 2808359ca2a..1266e7e419a 100644
--- a/gnu/packages/ocr.scm
+++ b/gnu/packages/ocr.scm
@@ -2,6 +2,7 @@
2;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> 2;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
3;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> 3;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
4;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr> 4;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
5;;; Copyright © 2019 Alex Vong <alexvong1995@gmail.com>
5;;; 6;;;
6;;; This file is part of GNU Guix. 7;;; This file is part of GNU Guix.
7;;; 8;;;
@@ -22,8 +23,11 @@
22 #:use-module ((guix licenses) #:prefix license:) 23 #:use-module ((guix licenses) #:prefix license:)
23 #:use-module (guix packages) 24 #:use-module (guix packages)
24 #:use-module (guix download) 25 #:use-module (guix download)
26 #:use-module (guix git-download)
25 #:use-module (guix build-system gnu) 27 #:use-module (guix build-system gnu)
28 #:use-module (guix build-system python)
26 #:use-module (gnu packages compression) 29 #:use-module (gnu packages compression)
30 #:use-module (gnu packages python)
27 #:use-module (gnu packages image)) 31 #:use-module (gnu packages image))
28 32
29(define-public ocrad 33(define-public ocrad
@@ -76,3 +80,74 @@ positional information and page layout analysis. Several image formats are
76supported through the Leptonica library. It can also detect whether text is 80supported through the Leptonica library. It can also detect whether text is
77monospaced or proportional.") 81monospaced or proportional.")
78 (license license:asl2.0))) 82 (license license:asl2.0)))
83
84(define-public zinnia
85 (let* ((commit "581faa8f6f15e4a7b21964be3a5ec36265c80e5b")
86 (revision "1")
87 ;; version copied from 'configure.in'
88 (version (git-version "0.07" revision commit)))
89 (package
90 (name "zinnia")
91 (version version)
92 (source
93 (origin
94 (method git-fetch)
95 (uri (git-reference
96 (url "https://github.com/taku910/zinnia.git")
97 (commit commit)))
98 (sha256
99 (base32
100 "1izjy5qw6swg0rs2ym2i72zndb90mwrfbd1iv8xbpwckbm4899lg"))
101 (file-name (git-file-name name version))
102 (modules '((guix build utils)
103 (ice-9 ftw)
104 (srfi srfi-26)))
105 (snippet ; remove unnecessary files with potentially different license
106 '(begin
107 (for-each delete-file-recursively
108 (scandir "."
109 (negate (cut member <> '("zinnia"
110 "." "..")))))
111 #t))))
112 (build-system gnu-build-system)
113 (arguments
114 `(#:phases
115 (modify-phases %standard-phases
116 (replace 'bootstrap
117 (lambda _
118 (chdir "zinnia")
119 (for-each make-file-writable
120 '("config.log" "config.status"))
121 #t)))))
122 (home-page "https://taku910.github.io/zinnia/")
123 (synopsis "Online hand recognition system with machine learning")
124 (description
125 "Zinnia is a simple, customizable and portable online hand recognition
126system based on Support Vector Machines. Zinnia simply receives user pen
127strokes as a sequence of coordinate data and outputs n-best characters sorted
128by SVM confidence. To keep portability, Zinnia doesn't have any rendering
129functionality. In addition to recognition, Zinnia provides training module
130that allows us to create any hand-written recognition systems with low-cost.")
131 (license (list license:bsd-3 ; all files except...
132 (license:non-copyleft ; some autotools related files
133 "file://zinnia/aclocal.m4")
134 license:x11 ; 'install-sh'
135 license:public-domain))))) ; 'install-sh'
136
137;;; python 2 bindings, license under the same terms as zinnia
138(define-public python2-zinnia
139 (package
140 (inherit zinnia)
141 (name "python2-zinnia")
142 (build-system python-build-system)
143 (arguments
144 `(#:python ,python-2 ; CObject API is used, it was removed in Python 3.2
145 #:tests? #f ; avoid circular dependency on tegaki-zinnia-japanese
146 #:phases
147 (modify-phases %standard-phases
148 (add-after 'unpack 'chdir
149 (lambda _
150 (chdir "zinnia/python")
151 #t)))))
152 (inputs
153 `(("zinnia" ,zinnia)))))
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 57589d852c5..d396f001ef1 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -31,6 +31,7 @@
31(define-module (gnu packages package-management) 31(define-module (gnu packages package-management)
32 #:use-module (gnu packages) 32 #:use-module (gnu packages)
33 #:use-module (gnu packages acl) 33 #:use-module (gnu packages acl)
34 #:use-module (gnu packages admin)
34 #:use-module (gnu packages attr) 35 #:use-module (gnu packages attr)
35 #:use-module (gnu packages avahi) 36 #:use-module (gnu packages avahi)
36 #:use-module (gnu packages autotools) 37 #:use-module (gnu packages autotools)
@@ -39,6 +40,7 @@
39 #:use-module (gnu packages bdw-gc) 40 #:use-module (gnu packages bdw-gc)
40 #:use-module (gnu packages bison) 41 #:use-module (gnu packages bison)
41 #:use-module (gnu packages bootstrap) ;for 'bootstrap-guile-origin' 42 #:use-module (gnu packages bootstrap) ;for 'bootstrap-guile-origin'
43 #:use-module (gnu packages cdrom)
42 #:use-module (gnu packages check) 44 #:use-module (gnu packages check)
43 #:use-module (gnu packages compression) 45 #:use-module (gnu packages compression)
44 #:use-module (gnu packages cpio) 46 #:use-module (gnu packages cpio)
@@ -48,6 +50,7 @@
48 #:use-module (gnu packages docbook) 50 #:use-module (gnu packages docbook)
49 #:use-module (gnu packages file) 51 #:use-module (gnu packages file)
50 #:use-module (gnu packages gettext) 52 #:use-module (gnu packages gettext)
53 #:use-module (gnu packages ghostscript)
51 #:use-module (gnu packages glib) 54 #:use-module (gnu packages glib)
52 #:use-module (gnu packages gnome) 55 #:use-module (gnu packages gnome)
53 #:use-module (gnu packages gnupg) 56 #:use-module (gnu packages gnupg)
@@ -55,11 +58,19 @@
55 #:use-module (gnu packages gtk) 58 #:use-module (gnu packages gtk)
56 #:use-module (gnu packages guile) 59 #:use-module (gnu packages guile)
57 #:use-module (gnu packages guile-xyz) 60 #:use-module (gnu packages guile-xyz)
61 #:use-module (gnu packages haskell)
62 #:use-module (gnu packages image)
63 #:use-module (gnu packages imagemagick)
64 #:use-module (gnu packages java)
58 #:use-module (gnu packages linux) 65 #:use-module (gnu packages linux)
59 #:use-module (gnu packages lisp) 66 #:use-module (gnu packages lisp)
67 #:use-module (gnu packages llvm)
60 #:use-module (gnu packages man) 68 #:use-module (gnu packages man)
69 #:use-module (gnu packages mono)
70 #:use-module (gnu packages nettle)
61 #:use-module (gnu packages nss) 71 #:use-module (gnu packages nss)
62 #:use-module (gnu packages patchutils) 72 #:use-module (gnu packages patchutils)
73 #:use-module (gnu packages pdf)
63 #:use-module (gnu packages perl) 74 #:use-module (gnu packages perl)
64 #:use-module (gnu packages perl-check) 75 #:use-module (gnu packages perl-check)
65 #:use-module (gnu packages pkg-config) 76 #:use-module (gnu packages pkg-config)
@@ -71,8 +82,10 @@
71 #:use-module (gnu packages sqlite) 82 #:use-module (gnu packages sqlite)
72 #:use-module (gnu packages ssh) 83 #:use-module (gnu packages ssh)
73 #:use-module (gnu packages texinfo) 84 #:use-module (gnu packages texinfo)
85 #:use-module (gnu packages textutils)
74 #:use-module (gnu packages time) 86 #:use-module (gnu packages time)
75 #:use-module (gnu packages tls) 87 #:use-module (gnu packages tls)
88 #:use-module (gnu packages video)
76 #:use-module (gnu packages vim) 89 #:use-module (gnu packages vim)
77 #:use-module (gnu packages virtualization) 90 #:use-module (gnu packages virtualization)
78 #:use-module (gnu packages web) 91 #:use-module (gnu packages web)
@@ -110,8 +123,8 @@
110 ;; Note: the 'update-guix-package.scm' script expects this definition to 123 ;; Note: the 'update-guix-package.scm' script expects this definition to
111 ;; start precisely like this. 124 ;; start precisely like this.
112 (let ((version "1.0.1") 125 (let ((version "1.0.1")
113 (commit "c902458863d1d341ffd74970b75e69c2bb848183") 126 (commit "0ed97e69805253656df929a6ad678016aa81f08a")
114 (revision 4)) 127 (revision 6))
115 (package 128 (package
116 (name "guix") 129 (name "guix")
117 130
@@ -127,7 +140,7 @@
127 (commit commit))) 140 (commit commit)))
128 (sha256 141 (sha256
129 (base32 142 (base32
130 "0w93qjgy9n0qqyij12s7hm7fl4wb6h99bmfril4cqf4ynckpdvbb")) 143 "1h2qlbbdqi72jslx17gp2cak5494nbm8j44rz57lnplnfcn6iwaw"))
131 (file-name (string-append "guix-" version "-checkout")))) 144 (file-name (string-append "guix-" version "-checkout"))))
132 (build-system gnu-build-system) 145 (build-system gnu-build-system)
133 (arguments 146 (arguments
@@ -342,6 +355,19 @@ the Nix package manager.")
342 #f) 355 #f)
343 ((#:phases phases '%standard-phases) 356 ((#:phases phases '%standard-phases)
344 `(modify-phases ,phases 357 `(modify-phases ,phases
358 (add-after 'unpack 'change-default-guix
359 (lambda _
360 ;; We need to tell 'guix-daemon' which 'guix' command to use.
361 ;; Here we use a questionable hack where we hard-code root's
362 ;; current guix, which could be wrong (XXX). Note that scripts
363 ;; like 'guix perform-download' do not run as root so we assume
364 ;; that they have access to /var/guix/profiles/per-user/root.
365 (substitute* "nix/libstore/globals.cc"
366 (("guixProgram = (.*)nixBinDir + \"/guix\"" _ before)
367 (string-append "guixProgram = " before
368 "/var/guix/profiles/per-user/root\
369/current-guix/bin/guix")))
370 #t))
345 (replace 'build 371 (replace 'build
346 (lambda _ 372 (lambda _
347 (invoke "make" "nix/libstore/schema.sql.hh") 373 (invoke "make" "nix/libstore/schema.sql.hh")
@@ -351,19 +377,7 @@ the Nix package manager.")
351 (delete 'copy-bootstrap-guile) 377 (delete 'copy-bootstrap-guile)
352 (replace 'install 378 (replace 'install
353 (lambda* (#:key outputs #:allow-other-keys) 379 (lambda* (#:key outputs #:allow-other-keys)
354 (invoke "make" "install-binPROGRAMS" 380 (invoke "make" "install-binPROGRAMS")))
355 "install-nodist_pkglibexecSCRIPTS")
356
357 ;; We need to tell 'guix-daemon' which 'guix' command to use.
358 ;; Here we use a questionable hack where we hard-code root's
359 ;; current guix, which could be wrong (XXX). Note that scripts
360 ;; like 'guix perform-download' do not run as root so we assume
361 ;; that they have access to /var/guix/profiles/per-user/root.
362 (let ((out (assoc-ref outputs "out")))
363 (substitute* (find-files (string-append out "/libexec"))
364 (("exec \".*/bin/guix\"")
365 "exec \"${GUIX:-/var/guix/profiles/per-user/root/current-guix/bin/guix}\""))
366 #t)))
367 (delete 'wrap-program))))))) 381 (delete 'wrap-program)))))))
368 382
369(define-public guile2.0-guix 383(define-public guile2.0-guix
@@ -544,7 +558,7 @@ transactions from C or Python.")
544 (license license:gpl2+))) 558 (license license:gpl2+)))
545 559
546(define-public diffoscope 560(define-public diffoscope
547 (let ((version "122")) 561 (let ((version "123"))
548 (package 562 (package
549 (name "diffoscope") 563 (name "diffoscope")
550 (version version) 564 (version version)
@@ -556,7 +570,7 @@ transactions from C or Python.")
556 (file-name (git-file-name name version)) 570 (file-name (git-file-name name version))
557 (sha256 571 (sha256
558 (base32 572 (base32
559 "1pwddknk8qyv88ba63why8vbnlc14b47434lv4ijx49m7ya3zfvg")))) 573 "11bxms5rkhi0v4pxx29v4qgvhp3fmf0fkzci6gn5xcv4fl1zy4wj"))))
560 (build-system python-build-system) 574 (build-system python-build-system)
561 (arguments 575 (arguments
562 `(#:phases (modify-phases %standard-phases 576 `(#:phases (modify-phases %standard-phases
@@ -573,6 +587,13 @@ transactions from C or Python.")
573 (lambda _ 587 (lambda _
574 (delete-file "tests/comparators/test_berkeley_db.py") 588 (delete-file "tests/comparators/test_berkeley_db.py")
575 #t)) 589 #t))
590 ;; Test is dynamically generated and may have false
591 ;; negatives with different ocaml versions. Further
592 ;; background in: https://bugs.debian.org/939386
593 (add-after 'unpack 'remove-ocaml-test
594 (lambda _
595 (delete-file "tests/comparators/test_ocaml.py")
596 #t))
576 (add-after 'unpack 'embed-tool-references 597 (add-after 'unpack 'embed-tool-references
577 (lambda* (#:key inputs #:allow-other-keys) 598 (lambda* (#:key inputs #:allow-other-keys)
578 (substitute* "diffoscope/comparators/utils/compare.py" 599 (substitute* "diffoscope/comparators/utils/compare.py"
@@ -592,10 +613,9 @@ transactions from C or Python.")
592 #t)) 613 #t))
593 (add-before 'check 'writable-test-data 614 (add-before 'check 'writable-test-data
594 (lambda _ 615 (lambda _
595 ;; tests/comparators/test_elf.py needs write access to 616 ;; tests may need needs write access to tests
596 ;; test data 617 ;; directory
597 (make-file-writable 618 (for-each make-file-writable (find-files "tests"))
598 "tests/data/ignore_readelf_errors_expected_diff")
599 #t)) 619 #t))
600 (add-before 'check 'delete-failing-test 620 (add-before 'check 'delete-failing-test
601 (lambda _ 621 (lambda _
@@ -612,7 +632,43 @@ transactions from C or Python.")
612 ("xxd" ,xxd))) 632 ("xxd" ,xxd)))
613 ;; Below are modules used for tests. 633 ;; Below are modules used for tests.
614 (native-inputs `(("python-pytest" ,python-pytest) 634 (native-inputs `(("python-pytest" ,python-pytest)
615 ("python-chardet" ,python-chardet))) 635 ("python-chardet" ,python-chardet)
636 ;; test suite skips tests when tool is missing
637 ("bdb" ,bdb)
638 ("binutils" ,binutils)
639 ("bzip2" ,bzip2)
640 ("cdrtools" ,cdrtools)
641 ("colord" ,colord)
642 ("cpio" ,cpio)
643 ("docx2txt" ,docx2txt)
644 ("e2fsprogs" ,e2fsprogs)
645 ("ffmpeg" ,ffmpeg)
646 ("gettext" ,gettext-minimal)
647 ("ghc" ,ghc)
648 ("ghostscript" ,ghostscript)
649 ("giflib:bin" ,giflib "bin")
650 ("gnumeric" ,gnumeric)
651 ("gnupg" ,gnupg)
652 ("imagemagick" ,imagemagick)
653 ("libarchive" ,libarchive)
654 ("llvm" ,llvm)
655 ("lz4" ,lz4)
656 ("mono" ,mono)
657 ("odt2txt" ,odt2txt)
658 ;; no unversioned openjdk available
659 ("openjdk:jdk" ,openjdk12 "jdk")
660 ("openssh" ,openssh)
661 ("pgpdump" ,pgpdump)
662 ("poppler" ,poppler)
663 ("rpm" ,rpm)
664 ("sng" ,sng)
665 ("sqlite" ,sqlite)
666 ("squashfs-tools" ,squashfs-tools)
667 ("tcpdump" ,tcpdump)
668 ("unzip" ,unzip)
669 ("xxd" ,xxd)
670 ("xz" ,xz)
671 ("zip" ,(@ (gnu packages compression) zip))))
616 (home-page "https://diffoscope.org/") 672 (home-page "https://diffoscope.org/")
617 (synopsis "Compare files, archives, and directories in depth") 673 (synopsis "Compare files, archives, and directories in depth")
618 (description 674 (description
diff --git a/gnu/packages/patches/cmake-curl-certificates.patch b/gnu/packages/patches/cmake-curl-certificates.patch
new file mode 100644
index 00000000000..36252083f80
--- /dev/null
+++ b/gnu/packages/patches/cmake-curl-certificates.patch
@@ -0,0 +1,40 @@
1By default commands such as "ctest" would not look for certificates
2at all: <https://issues.guix.gnu.org/issue/37371>.
3
4This changes CMake such that commands honor SSL_CERT_FILE and SSL_CERT_DIR
5as well as /etc/ssl/certs.
6
7--- cmake-3.13.1/Source/cmCurl.cxx 2019-09-10 17:27:36.926907260 +0200
8+++ cmake-3.13.1/Source/cmCurl.cxx 2019-09-10 17:52:35.475903919 +0200
9@@ -4,11 +4,8 @@
10
11 #include "cmThirdParty.h"
12
13-#if !defined(CMAKE_USE_SYSTEM_CURL) && !defined(_WIN32) && \
14- !defined(__APPLE__) && !defined(CURL_CA_BUNDLE) && !defined(CURL_CA_PATH)
15 # define CMAKE_FIND_CAFILE
16 # include "cmSystemTools.h"
17-#endif
18
19 // curl versions before 7.21.5 did not provide this error code
20 #if defined(LIBCURL_VERSION_NUM) && LIBCURL_VERSION_NUM < 0x071505
21@@ -29,6 +26,19 @@ std::string cmCurlSetCAInfo(::CURL* curl
22 ::CURLcode res = ::curl_easy_setopt(curl, CURLOPT_CAINFO, cafile);
23 check_curl_result(res, "Unable to set TLS/SSL Verify CAINFO: ");
24 }
25+
26+ /* Honor the usual environment variables. */
27+ else if (cmSystemTools::GetEnv("SSL_CERT_FILE", e)) {
28+ ::CURLcode res =
29+ ::curl_easy_setopt(curl, CURLOPT_CAINFO, e.c_str());
30+ check_curl_result(res, "Unable to set TLS/SSL Verify CAINFO: ");
31+ }
32+ else if (cmSystemTools::GetEnv("SSL_CERT_DIR", e)) {
33+ ::CURLcode res =
34+ ::curl_easy_setopt(curl, CURLOPT_CAPATH, e.c_str());
35+ check_curl_result(res, "Unable to set TLS/SSL Verify CAINFO: ");
36+ }
37+
38 #ifdef CMAKE_FIND_CAFILE
39 # define CMAKE_CAFILE_FEDORA "/etc/pki/tls/certs/ca-bundle.crt"
40 else if (cmSystemTools::FileExists(CMAKE_CAFILE_FEDORA, true)) {
diff --git a/gnu/packages/patches/tipp10-fix-compiling.patch b/gnu/packages/patches/tipp10-fix-compiling.patch
index 4c206d4d837..3a34a98b224 100644
--- a/gnu/packages/patches/tipp10-fix-compiling.patch
+++ b/gnu/packages/patches/tipp10-fix-compiling.patch
@@ -204,8 +204,7 @@ https://sources.debian.net/data/main/t/tipp10/2.1.0-2/debian/patches/0001-FixCom
204 Name=TIPP10 204 Name=TIPP10
205 Comment=Touch Typing Tutor 205 Comment=Touch Typing Tutor
206 Comment[de]=10-Finger-Schreibtrainer 206 Comment[de]=10-Finger-Schreibtrainer
207-Exec=tipp10 207 Exec=tipp10
208+Exec=/usr/bin/tipp10
209 Icon=tipp10.png 208 Icon=tipp10.png
210 Terminal=false 209 Terminal=false
211 Type=Application 210 Type=Application
diff --git a/gnu/packages/patches/weechat-python.patch b/gnu/packages/patches/weechat-python.patch
deleted file mode 100644
index 8182636ecba..00000000000
--- a/gnu/packages/patches/weechat-python.patch
+++ /dev/null
@@ -1,40 +0,0 @@
1Get Python LDFLAGS from 'pkg-config'.
2
3The other approach is more complex and gets it wrong: it returns
4"-L/path/to/python/lib/python-2.7.10/lib/python2.7/config -lpython -lwhatever";
5since that config/ sub-directory contains libpython2.7.a, we end up
6statically linking Python in Weechat's python.so, which we do not want.
7
8--- weechat-1.3/configure.ac 2015-08-16 08:27:07.000000000 +0200
9+++ weechat-1.3/configure.ac 2015-11-29 18:18:52.975197048 +0100
10@@ -535,29 +535,7 @@ if test "x$enable_python" = "xyes" ; the
11 if test -r "$PYTHON_INCLUDE/Python.h"; then
12 PYTHON_CFLAGS="-I$PYTHON_INCLUDE"
13 AC_MSG_RESULT(found)
14- PYTHON_LIB=`$PYTHON -c "import sys, distutils.sysconfig; sys.stdout.write(distutils.sysconfig.get_config_var('LIBPL'))"`
15- PYTHON_LFLAGS="-lpython$PYTHON_VERSION "`$PYTHON -c "import sys, distutils.sysconfig; sys.stdout.write(distutils.sysconfig.get_config_var('LIBS')+' '+distutils.sysconfig.get_config_var('SYSLIBS')+' '+distutils.sysconfig.get_config_var('LINKFORSHARED'))"`
16- AC_MSG_CHECKING(for Python library)
17- if test -r "$PYTHON_LIB/libpython$PYTHON_VERSION.so"; then
18- PYTHON_LFLAGS="-L$PYTHON_LIB $PYTHON_LFLAGS"
19- AC_MSG_RESULT(found)
20- elif test -r "$PYTHON_LIB/libpython$PYTHON_VERSION.a"; then
21- PYTHON_LFLAGS="-L$PYTHON_LIB $PYTHON_LFLAGS"
22- AC_MSG_RESULT(found)
23- elif test -r "$PYTHON_LIB/libpython$PYTHON_VERSION.dll.a"; then
24- PYTHON_LFLAGS="-L$PYTHON_LIB $PYTHON_LFLAGS"
25- AC_MSG_RESULT(found)
26- elif test -r "$PYTHON_SYSPREFIX/lib/libpython$PYTHON_VERSION.so"; then
27- PYTHON_LFLAGS="-L$PYTHON_SYSPREFIX/lib/ $PYTHON_LFLAGS"
28- AC_MSG_RESULT(found)
29- else
30- AC_MSG_WARN([
31-*** Python library couldn't be found on your system.
32-*** Try to install it with your software package manager.
33-*** WeeChat will be built without Python support.])
34- enable_python="no"
35- not_found="$not_found python"
36- fi
37+ PYTHON_LFLAGS=`pkg-config python2 --libs`
38 else
39 AC_MSG_WARN([
40 *** Python header files couldn't be found on your system.
diff --git a/gnu/packages/perl-compression.scm b/gnu/packages/perl-compression.scm
index ea714922627..d09e68e294c 100644
--- a/gnu/packages/perl-compression.scm
+++ b/gnu/packages/perl-compression.scm
@@ -133,7 +133,7 @@ type by using either Perl modules, or command-line tools on your system.")
133(define-public perl-archive-zip 133(define-public perl-archive-zip
134 (package 134 (package
135 (name "perl-archive-zip") 135 (name "perl-archive-zip")
136 (version "1.64") 136 (version "1.65")
137 (source 137 (source
138 (origin 138 (origin
139 (method url-fetch) 139 (method url-fetch)
@@ -141,8 +141,7 @@ type by using either Perl modules, or command-line tools on your system.")
141 "mirror://cpan/authors/id/P/PH/PHRED/Archive-Zip-" 141 "mirror://cpan/authors/id/P/PH/PHRED/Archive-Zip-"
142 version ".tar.gz")) 142 version ".tar.gz"))
143 (sha256 143 (sha256
144 (base32 144 (base32 "116vcg8x7n92i7cn3bx0xck69mz9vjy0il9i8p7p7lk40kz7jcbl"))))
145 "0zfinh8nx3rxzscp57vq3w8hihpdb0zs67vvalykcf402kr88pyy"))))
146 (build-system perl-build-system) 145 (build-system perl-build-system)
147 (native-inputs 146 (native-inputs
148 ;; For tests. 147 ;; For tests.
diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index 676dae54304..b8aaef9b77b 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -2,6 +2,7 @@
2;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net> 2;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
3;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr> 3;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
4;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il> 4;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
5;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
5;;; 6;;;
6;;; This file is part of GNU Guix. 7;;; This file is part of GNU Guix.
7;;; 8;;;
@@ -226,11 +227,27 @@ testing framework.")
226 (base32 227 (base32
227 "03w2zz3crblj1p6i8nq17946hbn3zqp9z7cfnifw47hi4a4fww12")))) 228 "03w2zz3crblj1p6i8nq17946hbn3zqp9z7cfnifw47hi4a4fww12"))))
228 (build-system python-build-system) 229 (build-system python-build-system)
229 (arguments '(#:tests? #f)) ; one test fails; can't find virtualenv 230 (arguments
231 `(#:phases
232 (modify-phases %standard-phases
233 ;; Reference the virtualenv executable directly, to avoid the need
234 ;; for PYTHONPATH, which gets cleared when instantiating a new
235 ;; virtualenv with pytest-virtualenv.
236 (add-after 'unpack 'patch-virtualenv-executable
237 (lambda* (#:key inputs #:allow-other-keys)
238 (let* ((virtualenv (assoc-ref inputs "python-virtualenv"))
239 (virtualenv-bin (string-append virtualenv
240 "/bin/virtualenv")))
241 (substitute* "pytest_virtualenv.py"
242 (("^DEFAULT_VIRTUALENV_FIXTURE_EXECUTABLE.*$")
243 (format #f "DEFAULT_VIRTUALENV_FIXTURE_EXECUTABLE = '~a'"
244 virtualenv-bin)))
245 #t))))))
230 (propagated-inputs 246 (propagated-inputs
231 `(("python-virtualenv" ,python-virtualenv) 247 `(("python-pytest-shutil" ,python-pytest-shutil)
232 ("python-pytest-shutil" ,python-pytest-shutil)
233 ("python-pytest-fixture-config" ,python-pytest-fixture-config))) 248 ("python-pytest-fixture-config" ,python-pytest-fixture-config)))
249 (inputs
250 `(("python-virtualenv" ,python-virtualenv)))
234 (native-inputs 251 (native-inputs
235 `(("python-mock" ,python-mock) 252 `(("python-mock" ,python-mock)
236 ("python-pytest" ,python-pytest) 253 ("python-pytest" ,python-pytest)
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 296879f5341..eef2079c196 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -3004,38 +3004,44 @@ Language (TOML) configuration files.")
3004Server (PLS).") 3004Server (PLS).")
3005 (license license:expat))) 3005 (license license:expat)))
3006 3006
3007;; XXX: We must use a non-release version since the latest release version
3008;; requires python-jedi version < 0.15.
3007(define-public python-language-server 3009(define-public python-language-server
3008 (package 3010 (let ((commit "c3cab77a85b1de4af1aec1bafea6a7320d6baec5")
3009 (name "python-language-server") 3011 (revision "1"))
3010 (version "0.26.1") 3012 (package
3011 (source 3013 (name "python-language-server")
3012 (origin 3014 (version (git-version "0.28.3" revision commit))
3013 (method url-fetch) 3015 (source
3014 (uri (pypi-uri "python-language-server" version)) 3016 (origin
3015 (sha256 3017 (method git-fetch)
3016 (base32 3018 (uri (git-reference
3017 "1vs9ckfmm534n1hq3m871916wsjvi5h4gyj6wlzg13ck6506lx0s")))) 3019 (url "https://github.com/palantir/python-language-server.git")
3018 (build-system python-build-system) 3020 (commit commit)))
3019 (propagated-inputs 3021 (sha256
3020 `(("python-pluggy" ,python-pluggy) 3022 (base32
3021 ("python-jsonrpc-server" ,python-jsonrpc-server) 3023 "1q0xdwgln09sh58j0ryygj92hfgdhwcs57zjvqihya23jr5v0bz4"))))
3022 ("python-jedi" ,python-jedi) 3024 (build-system python-build-system)
3023 ("python-yapf" ,python-yapf) 3025 (propagated-inputs
3024 ("python-pyflakes" ,python-pyflakes) 3026 `(("python-pluggy" ,python-pluggy)
3025 ("python-pydocstyle" ,python-pydocstyle) 3027 ("python-jsonrpc-server" ,python-jsonrpc-server)
3026 ("python-pycodestyle" ,python-pycodestyle) 3028 ("python-jedi" ,python-jedi)
3027 ("python-mccabe" ,python-mccabe) 3029 ("python-yapf" ,python-yapf)
3028 ("python-rope" ,python-rope) 3030 ("python-pyflakes" ,python-pyflakes)
3029 ("python-autopep8" ,python-autopep8) 3031 ("python-pydocstyle" ,python-pydocstyle)
3030 ("python-pylint" ,python-pylint))) 3032 ("python-pycodestyle" ,python-pycodestyle)
3031 (home-page "https://github.com/palantir/python-language-server") 3033 ("python-mccabe" ,python-mccabe)
3032 (synopsis "Python implementation of the Language Server Protocol") 3034 ("python-rope" ,python-rope)
3033 (description 3035 ("python-autopep8" ,python-autopep8)
3034 "The Python Language Server (pyls) is an implementation of the Python 3 3036 ("python-pylint" ,python-pylint)))
3037 (home-page "https://github.com/palantir/python-language-server")
3038 (synopsis "Python implementation of the Language Server Protocol")
3039 (description
3040 "The Python Language Server (pyls) is an implementation of the Python 3
3035language specification for the Language Server Protocol (LSP). This tool is 3041language specification for the Language Server Protocol (LSP). This tool is
3036used in text editing environments to provide a complete and integrated 3042used in text editing environments to provide a complete and integrated
3037feature-set for programming Python effectively.") 3043feature-set for programming Python effectively.")
3038 (license license:expat))) 3044 (license license:expat))))
3039 3045
3040(define-public python-black 3046(define-public python-black
3041 (package 3047 (package
@@ -3848,14 +3854,14 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.
3848(define-public python-matplotlib 3854(define-public python-matplotlib
3849 (package 3855 (package
3850 (name "python-matplotlib") 3856 (name "python-matplotlib")
3851 (version "2.2.3") 3857 (version "3.1.1")
3852 (source 3858 (source
3853 (origin 3859 (origin
3854 (method url-fetch) 3860 (method url-fetch)
3855 (uri (pypi-uri "matplotlib" version)) 3861 (uri (pypi-uri "matplotlib" version))
3856 (sha256 3862 (sha256
3857 (base32 3863 (base32
3858 "1rcc7x9ig3hpchkc4cwdvym3y451w74275fxr455zkfagrsvymbk")))) 3864 "14qc109dibp32xfd9lah54djc0rc76fhbsj9cwyb328lzqmd5sqz"))))
3859 (build-system python-build-system) 3865 (build-system python-build-system)
3860 (propagated-inputs ; the following packages are all needed at run time 3866 (propagated-inputs ; the following packages are all needed at run time
3861 `(("python-cycler" ,python-cycler) 3867 `(("python-cycler" ,python-cycler)
@@ -3872,7 +3878,7 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.
3872 ;; From version 1.4.0 'matplotlib' makes use of 'cairocffi' instead of 3878 ;; From version 1.4.0 'matplotlib' makes use of 'cairocffi' instead of
3873 ;; 'pycairo'. However, 'pygobject' makes use of a 'pycairo' 'context' 3879 ;; 'pycairo'. However, 'pygobject' makes use of a 'pycairo' 'context'
3874 ;; object. For this reason we need to import both libraries. 3880 ;; object. For this reason we need to import both libraries.
3875 ;; https://pythonhosted.org/cairocffi/cffi_api.html#converting-pycairo 3881 ;; https://cairocffi.readthedocs.io/en/stable/cffi_api.html#converting-pycairo-wrappers-to-cairocffi
3876 ("python-pycairo" ,python-pycairo) 3882 ("python-pycairo" ,python-pycairo)
3877 ("python-cairocffi" ,python-cairocffi))) 3883 ("python-cairocffi" ,python-cairocffi)))
3878 (inputs 3884 (inputs
@@ -3887,11 +3893,59 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.
3887 ("tk" ,tk))) 3893 ("tk" ,tk)))
3888 (native-inputs 3894 (native-inputs
3889 `(("pkg-config" ,pkg-config) 3895 `(("pkg-config" ,pkg-config)
3890 ("python-nose" ,python-nose) 3896 ("python-pytest" ,python-pytest)
3891 ("python-mock" ,python-mock))) 3897 ("python-mock" ,python-mock)
3898 ("unzip" ,unzip)
3899 ("jquery-ui"
3900 ,(origin
3901 (method url-fetch)
3902 (uri "https://jqueryui.com/resources/download/jquery-ui-1.12.1.zip")
3903 (sha256
3904 (base32
3905 "0kb21xf38diqgxcdi1z3s9ssq36pldvyqxy56hn6pcva6rs3c8zq"))))))
3892 (arguments 3906 (arguments
3893 `(#:phases 3907 `(#:phases
3894 (modify-phases %standard-phases 3908 (modify-phases %standard-phases
3909 ;; XXX We disable all image comparison tests because we're using a
3910 ;; newer version of FreeType than matplotlib expects. This leads to
3911 ;; minor differences throughout the tests.
3912 (add-after 'unpack 'fix-and-disable-failing-tests
3913 (lambda _
3914 (substitute* (append (find-files "lib/matplotlib/tests/"
3915 "test_.*\\.py$")
3916 (find-files "lib/mpl_toolkits/tests"
3917 "test_.*\\.py$"))
3918 (("^from matplotlib" match)
3919 (string-append "import pytest\n" match))
3920 (("( *)@image_comparison" match indent)
3921 (string-append indent
3922 "@pytest.mark.skip(reason=\"unknown minor image differences\")\n"
3923 match)))
3924 (substitute* "lib/matplotlib/tests/test_animation.py"
3925 (("/bin/sh") (which "sh")))
3926 (for-each delete-file
3927 ;; test_normal_axes, test_get_tightbbox_polar
3928 '("lib/matplotlib/tests/test_axes.py"
3929 ;; test_outward_ticks
3930 "lib/matplotlib/tests/test_tightlayout.py"
3931 ;; Fontconfig returns no fonts.
3932 "lib/matplotlib/tests/test_font_manager.py"))
3933 #t))
3934 (add-before 'install 'install-jquery-ui
3935 (lambda* (#:key outputs inputs #:allow-other-keys)
3936 (let ((dir (string-append (assoc-ref outputs "out")
3937 "/lib/python3.7/site-packages/matplotlib/backends/web_backend/")))
3938 (mkdir-p dir)
3939 (invoke "unzip"
3940 (assoc-ref inputs "jquery-ui")
3941 "-d" dir))
3942 #t))
3943 (delete 'check)
3944 (add-after 'install 'check
3945 (lambda* (#:key outputs inputs #:allow-other-keys)
3946 (add-installed-pythonpath inputs outputs)
3947 (invoke "python" "tests.py" "-v"
3948 "-m" "not network")))
3895 (add-before 'build 'configure-environment 3949 (add-before 'build 'configure-environment
3896 (lambda* (#:key outputs inputs #:allow-other-keys) 3950 (lambda* (#:key outputs inputs #:allow-other-keys)
3897 (let ((cairo (assoc-ref inputs "cairo"))) 3951 (let ((cairo (assoc-ref inputs "cairo")))
@@ -3903,8 +3957,8 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.
3903 (lambda (port) 3957 (lambda (port)
3904 (format port "[directories]~% 3958 (format port "[directories]~%
3905basedirlist = ~a,~a~% 3959basedirlist = ~a,~a~%
3906 [rc_options]~% 3960[packages]~%
3907backend = TkAgg~%" 3961tests = True~%"
3908 (assoc-ref inputs "tcl") 3962 (assoc-ref inputs "tcl")
3909 (assoc-ref inputs "tk"))))) 3963 (assoc-ref inputs "tk")))))
3910 #t))))) 3964 #t)))))
@@ -3923,6 +3977,14 @@ toolkits.")
3923 (let ((matplotlib (package-with-python2 3977 (let ((matplotlib (package-with-python2
3924 (strip-python2-variant python-matplotlib)))) 3978 (strip-python2-variant python-matplotlib))))
3925 (package (inherit matplotlib) 3979 (package (inherit matplotlib)
3980 (version "2.2.3")
3981 (source
3982 (origin
3983 (method url-fetch)
3984 (uri (pypi-uri "matplotlib" version))
3985 (sha256
3986 (base32
3987 "1rcc7x9ig3hpchkc4cwdvym3y451w74275fxr455zkfagrsvymbk"))))
3926 ;; Make sure to use special packages for Python 2 instead 3988 ;; Make sure to use special packages for Python 2 instead
3927 ;; of those automatically rewritten by package-with-python2. 3989 ;; of those automatically rewritten by package-with-python2.
3928 (propagated-inputs 3990 (propagated-inputs
@@ -3946,6 +4008,7 @@ toolkits.")
3946 `(("python-matplotlib" ,python-matplotlib) 4008 `(("python-matplotlib" ,python-matplotlib)
3947 ("python-colorspacious" ,python-colorspacious) 4009 ("python-colorspacious" ,python-colorspacious)
3948 ("python-sphinx" ,python-sphinx) 4010 ("python-sphinx" ,python-sphinx)
4011 ("python-sphinx-copybutton" ,python-sphinx-copybutton)
3949 ("python-sphinx-gallery" ,python-sphinx-gallery) 4012 ("python-sphinx-gallery" ,python-sphinx-gallery)
3950 ("python-numpydoc" ,python-numpydoc) 4013 ("python-numpydoc" ,python-numpydoc)
3951 ("python-ipython" ,python-ipython) 4014 ("python-ipython" ,python-ipython)
@@ -3972,6 +4035,9 @@ toolkits.")
3972 `(#:tests? #f ; we're only generating documentation 4035 `(#:tests? #f ; we're only generating documentation
3973 #:phases 4036 #:phases
3974 (modify-phases %standard-phases 4037 (modify-phases %standard-phases
4038 ;; The tests in python-matplotlib are run after the install phase, so
4039 ;; we need to delete the extra phase here.
4040 (delete 'check)
3975 (replace 'build 4041 (replace 'build
3976 (lambda _ 4042 (lambda _
3977 (chdir "doc") 4043 (chdir "doc")
@@ -4020,7 +4086,12 @@ toolkits.")
4020 (license (package-license python-matplotlib)))) 4086 (license (package-license python-matplotlib))))
4021 4087
4022(define-public python2-matplotlib-documentation 4088(define-public python2-matplotlib-documentation
4023 (package-with-python2 python-matplotlib-documentation)) 4089 (let ((parent (package-with-python2 python-matplotlib-documentation)))
4090 (package
4091 (inherit parent)
4092 (native-inputs
4093 (alist-delete "python-sphinx-copybutton"
4094 (package-native-inputs parent))))))
4024 4095
4025(define-public python-matplotlib-venn 4096(define-public python-matplotlib-venn
4026 (package 4097 (package
@@ -5014,7 +5085,8 @@ releases.")
5014 (outputs '("out" "doc")) 5085 (outputs '("out" "doc"))
5015 (build-system python-build-system) 5086 (build-system python-build-system)
5016 (propagated-inputs 5087 (propagated-inputs
5017 `(("python-appdirs" ,python-appdirs))) 5088 `(("python-appdirs" ,python-appdirs)
5089 ("python-importlib-metadata" ,python-importlib-metadata)))
5018 (native-inputs 5090 (native-inputs
5019 `(("python-setuptools-scm" ,python-setuptools-scm) 5091 `(("python-setuptools-scm" ,python-setuptools-scm)
5020 ("python-sphinx" ,python-sphinx) 5092 ("python-sphinx" ,python-sphinx)
@@ -5447,6 +5519,13 @@ computing.")
5447 (arguments 5519 (arguments
5448 `(#:phases 5520 `(#:phases
5449 (modify-phases %standard-phases 5521 (modify-phases %standard-phases
5522 (add-after 'unpack 'make-docs-reproducible
5523 (lambda _
5524 (substitute* "IPython/sphinxext/ipython_directive.py"
5525 ((".*import datetime") "")
5526 ((".*datetime.datetime.now\\(\\)") "")
5527 (("%timeit") "# %timeit"))
5528 #t))
5450 ;; Tests can only be run after the library has been installed and not 5529 ;; Tests can only be run after the library has been installed and not
5451 ;; within the source directory. 5530 ;; within the source directory.
5452 (delete 'check) 5531 (delete 'check)
@@ -7500,17 +7579,31 @@ serve the same purpose: provide Python bindings for libmagic.")))
7500 (package 7579 (package
7501 (name "python-debian") 7580 (name "python-debian")
7502 (home-page "https://salsa.debian.org/python-debian-team/python-debian") 7581 (home-page "https://salsa.debian.org/python-debian-team/python-debian")
7503 (version "0.1.28") 7582 (version "0.1.36")
7504 (source 7583 (source
7505 (origin 7584 (origin
7506 (method url-fetch) 7585 ;; Use git-fetch, as pypi doesn't include test suite.
7507 (uri (pypi-uri name version)) 7586 (method git-fetch)
7587 (uri (git-reference
7588 (url home-page)
7589 (commit version)))
7590 (file-name (git-file-name name version))
7508 (sha256 7591 (sha256
7509 (base32 7592 (base32
7510 "0i15f0xzx679sd0ldq2sls9pnnps9fv6vhqvnv9dzf4qhma42i0y")))) 7593 "0qy6x28bj6yfikhjww932v5xq4mf5bm1iczl7acy4c7zm6mwhqfa"))))
7511 (build-system python-build-system) 7594 (build-system python-build-system)
7595 (arguments
7596 `(#:phases (modify-phases %standard-phases
7597 (add-after 'unpack 'remove-debian-specific-tests
7598 ;; python-apt, apt and dpkg are not yet available in guix,
7599 ;; and these tests heavily depend on them.
7600 (lambda _
7601 (delete-file "lib/debian/tests/test_deb822.py")
7602 (delete-file "lib/debian/tests/test_debfile.py")
7603 #t)))))
7512 (propagated-inputs 7604 (propagated-inputs
7513 `(("python-six" ,python-six))) 7605 `(("python-six" ,python-six)
7606 ("python-chardet" ,python-chardet)))
7514 (synopsis "Debian package related modules") 7607 (synopsis "Debian package related modules")
7515 (description 7608 (description
7516 ;; XXX: Use @enumerate instead of @itemize to work around 7609 ;; XXX: Use @enumerate instead of @itemize to work around
@@ -10554,25 +10647,29 @@ characters, mouse support, and auto suggestions.")
10554(define-public python-jedi 10647(define-public python-jedi
10555 (package 10648 (package
10556 (name "python-jedi") 10649 (name "python-jedi")
10557 (version "0.13.3") 10650 (version "0.15.1")
10558 (source 10651 (source
10559 (origin 10652 (origin
10560 (method url-fetch) 10653 (method url-fetch)
10561 (uri (pypi-uri "jedi" version)) 10654 (uri (pypi-uri "jedi" version))
10562 (sha256 10655 (sha256
10563 (base32 10656 (base32
10564 "0nsrjlb57njqppxmi8wjsb1dkad7qa7svx67jbkhixq66lz61c1b")))) 10657 "0bp4pxhsynaarbvzblsn5x32lzp29svy3sxfy8i6m5iwz9s9r1ds"))))
10565 (build-system python-build-system) 10658 (build-system python-build-system)
10566 (arguments 10659 (arguments
10567 `( ;; Many tests are failing with Python 3.7.x as of version 0.13.3 (see: 10660 `(#:phases
10568 ;; https://github.com/davidhalter/jedi/issues/1263)
10569 #:tests? #f
10570 #:phases
10571 (modify-phases %standard-phases 10661 (modify-phases %standard-phases
10662 (add-after 'unpack 'disable-file-completion-test
10663 ;; A single parameterized test currently fail (see:
10664 ;; https://github.com/davidhalter/jedi/issues/1395). Remove it.
10665 (lambda _
10666 (substitute* "test/test_api/test_completion.py"
10667 ((".*'example.py', 'rb\"' \\+ join\\('\\.\\.'.*") ""))
10668 #t))
10572 (replace 'check 10669 (replace 'check
10573 (lambda* (#:key tests? #:allow-other-keys) 10670 (lambda _
10574 (when tests? 10671 (setenv "HOME" "/tmp")
10575 (invoke "py.test" "-vv"))))))) 10672 (invoke "python" "-m" "pytest"))))))
10576 (native-inputs 10673 (native-inputs
10577 `(("python-pytest" ,python-pytest) 10674 `(("python-pytest" ,python-pytest)
10578 ("python-docopt" ,python-docopt))) 10675 ("python-docopt" ,python-docopt)))
@@ -10590,11 +10687,7 @@ well.")
10590 (license license:expat))) 10687 (license license:expat)))
10591 10688
10592(define-public python2-jedi 10689(define-public python2-jedi
10593 (let ((base (package-with-python2 (strip-python2-variant python-jedi)))) 10690 (package-with-python2 python-jedi))
10594 (package
10595 (inherit base)
10596 (arguments (substitute-keyword-arguments (package-arguments base)
10597 ((#:tests? _) #t))))))
10598 10691
10599(define-public ptpython 10692(define-public ptpython
10600 (package 10693 (package
@@ -14729,17 +14822,21 @@ time-based (TOTP) passwords.")
14729(define-public python-parso 14822(define-public python-parso
14730 (package 14823 (package
14731 (name "python-parso") 14824 (name "python-parso")
14732 (version "0.3.1") 14825 (version "0.5.1")
14733 (source 14826 (source
14734 (origin 14827 (origin
14735 (method url-fetch) 14828 (method url-fetch)
14736 (uri (pypi-uri "parso" version)) 14829 (uri (pypi-uri "parso" version))
14737 (sha256 14830 (sha256
14738 (base32 14831 (base32
14739 "18p89iwcm8mnf380f92g9w0bhx5km8wxp392vvjcq4y1ld1llw1m")))) 14832 "171a9ivhxwsd52h1cgsz40zgzpgzscn7yqb7sdjhy8m1lzj0wsv6"))))
14740 (native-inputs 14833 (native-inputs
14741 `(("python-pytest" ,python-pytest))) 14834 `(("python-pytest" ,python-pytest)))
14742 (build-system python-build-system) 14835 (build-system python-build-system)
14836 (arguments
14837 `(#:phases (modify-phases %standard-phases
14838 (replace 'check
14839 (lambda _ (invoke "pytest" "-vv"))))))
14743 (home-page "https://github.com/davidhalter/parso") 14840 (home-page "https://github.com/davidhalter/parso")
14744 (synopsis "Python Parser") 14841 (synopsis "Python Parser")
14745 (description "Parso is a Python parser that supports error recovery and 14842 (description "Parso is a Python parser that supports error recovery and
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 9fec18287ea..644c9d76667 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -509,7 +509,7 @@ instead of @command{python3}.")))
509(define-public micropython 509(define-public micropython
510 (package 510 (package
511 (name "micropython") 511 (name "micropython")
512 (version "1.10") 512 (version "1.11")
513 (source 513 (source
514 (origin 514 (origin
515 (method url-fetch) 515 (method url-fetch)
@@ -518,7 +518,7 @@ instead of @command{python3}.")))
518 "/micropython-" version ".tar.gz")) 518 "/micropython-" version ".tar.gz"))
519 (sha256 519 (sha256
520 (base32 520 (base32
521 "1g1zjip3rkx6bp16qi1bag72wivnbh56fcsl3nffanrx4j5f4z90")) 521 "0px3xhw16rl0l7qifq7jw1gq92wzlnhd17dmszv9m2c3wbzs9p9f"))
522 (modules '((guix build utils))) 522 (modules '((guix build utils)))
523 (snippet 523 (snippet
524 '(begin 524 '(begin
@@ -532,7 +532,7 @@ instead of @command{python3}.")))
532 (arguments 532 (arguments
533 `(#:phases 533 `(#:phases
534 (modify-phases %standard-phases 534 (modify-phases %standard-phases
535 (add-before 'build 'preprare-build 535 (add-before 'build 'prepare-build
536 (lambda _ 536 (lambda _
537 (chdir "ports/unix") 537 (chdir "ports/unix")
538 ;; see: https://github.com/micropython/micropython/pull/4246 538 ;; see: https://github.com/micropython/micropython/pull/4246
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 1f3fb29aba3..7d736c7c279 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -17,6 +17,7 @@
17;;; Copyright © 2019 Mikhail Kirillov <w96k.ru@gmail.com> 17;;; Copyright © 2019 Mikhail Kirillov <w96k.ru@gmail.com>
18;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org> 18;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org>
19;;; Copyright © 2019 Brian Leung <bkleung89@gmail.com> 19;;; Copyright © 2019 Brian Leung <bkleung89@gmail.com>
20;;; Copyright © 2019 Collin J. Doering <collin@rekahsoft.ca>
20;;; 21;;;
21;;; This file is part of GNU Guix. 22;;; This file is part of GNU Guix.
22;;; 23;;;
@@ -670,6 +671,35 @@ RSpec tests.")
670 (home-page "https://github.com/dblock/rspec-rerun") 671 (home-page "https://github.com/dblock/rspec-rerun")
671 (license license:expat))) 672 (license license:expat)))
672 673
674(define-public ruby-rspec-wait
675 (package
676 (name "ruby-rspec-wait")
677 (version "0.0.9")
678 (source
679 (origin
680 (method url-fetch)
681 (uri (rubygems-uri "rspec-wait" version))
682 (sha256
683 (base32
684 "0gvj1bp5ccx001dyvcgk2j49s5sl6vs9fdaqqb08z3bd1554hsww"))))
685 (build-system ruby-build-system)
686 (arguments
687 '(#:phases
688 (modify-phases %standard-phases
689 (replace 'check
690 (lambda _
691 (invoke "rake" "spec"))))))
692 (native-inputs
693 `(("bundler" ,bundler)))
694 (propagated-inputs
695 `(("ruby-rspec" ,ruby-rspec)))
696 (home-page "https://github.com/laserlemon/rspec-wait")
697 (synopsis "Wait for conditions in RSpec")
698 (description
699 "RSpec::Wait strives to make it easier to test asynchronous or slow
700interactions.")
701 (license license:expat)))
702
673(define-public ruby-rspec 703(define-public ruby-rspec
674 (package 704 (package
675 (name "ruby-rspec") 705 (name "ruby-rspec")
diff --git a/gnu/packages/shellutils.scm b/gnu/packages/shellutils.scm
index f7542ea759b..6630332692d 100644
--- a/gnu/packages/shellutils.scm
+++ b/gnu/packages/shellutils.scm
@@ -5,6 +5,7 @@
5;;; Copyright © 2017 Stefan Reichör <stefan@xsteve.at> 5;;; Copyright © 2017 Stefan Reichör <stefan@xsteve.at>
6;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> 6;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
7;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net> 7;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net>
8;;; Copyright © 2019 Collin J. Doering <collin@rekahsoft.ca>
8;;; 9;;;
9;;; This file is part of GNU Guix. 10;;; This file is part of GNU Guix.
10;;; 11;;;
@@ -22,21 +23,107 @@
22;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. 23;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
23 24
24(define-module (gnu packages shellutils) 25(define-module (gnu packages shellutils)
25 #:use-module (gnu packages base)
26 #:use-module (gnu packages golang)
27 #:use-module (gnu packages python)
28 #:use-module ((guix licenses) #:prefix license:) 26 #:use-module ((guix licenses) #:prefix license:)
27 #:use-module (guix utils)
29 #:use-module (guix packages) 28 #:use-module (guix packages)
30 #:use-module (guix download) 29 #:use-module (guix download)
31 #:use-module (guix git-download) 30 #:use-module (guix git-download)
31 #:use-module (guix build-system gnu)
32 #:use-module (guix build-system go)
33 #:use-module (guix build-system python)
32 #:use-module (gnu packages autotools) 34 #:use-module (gnu packages autotools)
35 #:use-module (gnu packages base)
36 #:use-module (gnu packages golang)
33 #:use-module (gnu packages ncurses) 37 #:use-module (gnu packages ncurses)
34 #:use-module (gnu packages readline)
35 #:use-module (gnu packages pkg-config) 38 #:use-module (gnu packages pkg-config)
36 #:use-module (guix utils) 39 #:use-module (gnu packages python)
37 #:use-module (guix build-system gnu) 40 #:use-module (gnu packages readline)
38 #:use-module (guix build-system go) 41 #:use-module (gnu packages ruby)
39 #:use-module (guix build-system python)) 42 #:use-module (gnu packages shells)
43 #:use-module (gnu packages tmux))
44
45(define-public zsh-autosuggestions
46 (package
47 (name "zsh-autosuggestions")
48 (version "0.6.3")
49 (source (origin
50 (method git-fetch)
51 (uri (git-reference
52 (url "https://github.com/zsh-users/zsh-autosuggestions.git")
53 (commit (string-append "v" version))))
54 (file-name (git-file-name name version))
55 (sha256
56 (base32
57 "1h8h2mz9wpjpymgl2p7pc146c1jgb3dggpvzwm9ln3in336wl95c"))))
58 (build-system gnu-build-system)
59 (native-inputs
60 `(("ruby" ,ruby)
61 ("ruby-byebug" ,ruby-byebug)
62 ("ruby-pry" ,ruby-pry)
63 ("ruby-rspec" ,ruby-rspec)
64 ("ruby-rspec-wait" ,ruby-rspec-wait)
65 ("tmux" ,tmux)
66 ("zsh" ,zsh)))
67 (arguments
68 '(#:phases
69 (modify-phases %standard-phases
70 (delete 'configure)
71 (replace 'check ; Tests use ruby's bundler; instead execute rspec directly.
72 (lambda _
73 (setenv "TMUX_TMPDIR" (getenv "TMPDIR"))
74 (setenv "SHELL" (which "zsh"))
75 (invoke "rspec")))
76 (replace 'install
77 (lambda* (#:key outputs #:allow-other-keys)
78 (let* ((out (assoc-ref outputs "out"))
79 (zsh-plugins
80 (string-append out "/share/zsh/plugins/zsh-autosuggestions")))
81 (invoke "make" "all")
82 (install-file "zsh-autosuggestions.zsh" zsh-plugins)
83 #t))))))
84 (home-page "https://github.com/zsh-users/zsh-autosuggestions")
85 (synopsis "Fish-like autosuggestions for zsh")
86 (description
87 "Fish-like fast/unobtrusive autosuggestions for zsh. It suggests commands
88as you type.")
89 (license license:expat)))
90
91(define-public sh-z
92 (package
93 (name "sh-z")
94 (version "1.11")
95 (source (origin
96 (method git-fetch)
97 (uri (git-reference
98 (url "https://github.com/rupa/z.git")
99 (commit (string-append "v" version))))
100 (file-name (git-file-name name version))
101 (sha256
102 (base32
103 "13zbgkj6y0qhvn5jpkrqbd4jjxjr789k228iwma5hjfh1nx7ghyb"))))
104 (build-system gnu-build-system)
105 (arguments
106 `(#:tests? #f ; No tests provided
107 #:phases
108 (modify-phases %standard-phases
109 (delete 'configure)
110 (delete 'build)
111 (replace 'install
112 (lambda* (#:key outputs #:allow-other-keys)
113 (let* ((out (assoc-ref outputs "out"))
114 (man (string-append out "/share/man/man1"))
115 (bin (string-append out "/bin")))
116 (install-file "z.sh" bin)
117 (chmod (string-append bin "/z.sh") #o755)
118 (install-file "z.1" man)
119 #t))))))
120 (synopsis "Jump about directories")
121 (description
122 "Tracks your most used directories, based on ``frecency''. After a short
123learning phase, z will take you to the most ``frecent'' directory that matches
124all of the regexes given on the command line in order.")
125 (home-page "https://github.com/rupa/z")
126 (license license:expat)))
40 127
41(define-public envstore 128(define-public envstore
42 (package 129 (package
diff --git a/gnu/packages/sphinx.scm b/gnu/packages/sphinx.scm
index 5ec769388a3..9bd1e8d4214 100644
--- a/gnu/packages/sphinx.scm
+++ b/gnu/packages/sphinx.scm
@@ -1,6 +1,6 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014 David Thompson <davet@gnu.org> 2;;; Copyright © 2014 David Thompson <davet@gnu.org>
3;;; Copyright © 2015, 2017 Ricardo Wurmus <rekado@elephly.net> 3;;; Copyright © 2015, 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
4;;; Copyright © 2015, 2016, 2017 Leo Famulari <leo@famulari.name> 4;;; Copyright © 2015, 2016, 2017 Leo Famulari <leo@famulari.name>
5;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com> 5;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
6;;; Copyright © 2016, 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com> 6;;; Copyright © 2016, 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com>
@@ -163,6 +163,25 @@ sources.")
163Apple help books.") 163Apple help books.")
164 (license license:bsd-2))) 164 (license license:bsd-2)))
165 165
166(define-public python-sphinx-copybutton
167 (package
168 (name "python-sphinx-copybutton")
169 (version "0.2.5")
170 (source
171 (origin
172 (method url-fetch)
173 (uri (pypi-uri "sphinx-copybutton" version))
174 (sha256
175 (base32
176 "1bk006nv5s9ym6v67cxd4d2wvd8wm6czqi21mqcs33risygksncl"))))
177 (build-system python-build-system)
178 (home-page "https://github.com/choldgraf/sphinx-copybutton")
179 (synopsis "Sphinx extension to add \"copy\" buttons to code blocks")
180 (description
181 "This package provides a small sphinx extension to add \"copy\" buttons
182to code blocks.")
183 (license license:expat)))
184
166(define-public python-sphinxcontrib-devhelp 185(define-public python-sphinxcontrib-devhelp
167 (package 186 (package
168 (name "python-sphinxcontrib-devhelp") 187 (name "python-sphinxcontrib-devhelp")
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 143df3e63e4..2ffe0a10d60 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -49,6 +49,7 @@
49 #:use-module (gnu packages curl) 49 #:use-module (gnu packages curl)
50 #:use-module (gnu packages emacs) 50 #:use-module (gnu packages emacs)
51 #:use-module (gnu packages emacs-xyz) 51 #:use-module (gnu packages emacs-xyz)
52 #:use-module (gnu packages fontutils)
52 #:use-module (gnu packages gcc) 53 #:use-module (gnu packages gcc)
53 #:use-module (gnu packages gtk) 54 #:use-module (gnu packages gtk)
54 #:use-module (gnu packages gettext) 55 #:use-module (gnu packages gettext)
@@ -1199,23 +1200,24 @@ agnes cluster diagrams.")
1199(define-public r-gdtools 1200(define-public r-gdtools
1200 (package 1201 (package
1201 (name "r-gdtools") 1202 (name "r-gdtools")
1202 (version "0.1.9") 1203 (version "0.2.0")
1203 (source 1204 (source
1204 (origin 1205 (origin
1205 (method url-fetch) 1206 (method url-fetch)
1206 (uri (cran-uri "gdtools" version)) 1207 (uri (cran-uri "gdtools" version))
1207 (sha256 1208 (sha256
1208 (base32 1209 (base32
1209 "0w4fihf52q5qxxk0lg36x6yvjjl8vw66y60ncdjs5fvnxqn5z2vb")))) 1210 "1mvpkp8cj30fwd4bwlz96x3cff7yzfbfz7iswmf77zl0a6122inh"))))
1210 (build-system r-build-system) 1211 (build-system r-build-system)
1211 (native-inputs 1212 (native-inputs
1212 `(("pkg-config" ,pkg-config))) 1213 `(("pkg-config" ,pkg-config)))
1213 (inputs 1214 (inputs
1214 `(("cairo" ,cairo) 1215 `(("cairo" ,cairo)
1216 ("freetype2" ,freetype)
1215 ("zlib" ,zlib))) 1217 ("zlib" ,zlib)))
1216 (propagated-inputs 1218 (propagated-inputs
1217 `(("r-rcpp" ,r-rcpp) 1219 `(("r-rcpp" ,r-rcpp)
1218 ("r-withr" ,r-withr))) 1220 ("r-systemfonts" ,r-systemfonts)))
1219 (home-page "https://cran.r-project.org/web/packages/gdtools") 1221 (home-page "https://cran.r-project.org/web/packages/gdtools")
1220 (synopsis "Utilities for graphical rendering") 1222 (synopsis "Utilities for graphical rendering")
1221 (description 1223 (description
@@ -2436,18 +2438,24 @@ informative error messages when it's not available.")
2436(define-public r-devtools 2438(define-public r-devtools
2437 (package 2439 (package
2438 (name "r-devtools") 2440 (name "r-devtools")
2439 (version "2.1.0") 2441 (version "2.2.0")
2440 (source (origin 2442 (source (origin
2441 (method url-fetch) 2443 (method url-fetch)
2442 (uri (cran-uri "devtools" version)) 2444 (uri (cran-uri "devtools" version))
2443 (sha256 2445 (sha256
2444 (base32 2446 (base32
2445 "0393v7nr22gr5g9afgrhq4ab3lwbqy6fd3shnmlhdpqam5357xy1")))) 2447 "05fag25mkqy13yja8x32aqr9c0ah9rbm8cfjcsmy1dv5h4j8cxa1"))))
2446 (build-system r-build-system) 2448 (build-system r-build-system)
2447 (propagated-inputs 2449 (propagated-inputs
2448 `(("r-callr" ,r-callr) 2450 `(("r-callr" ,r-callr)
2449 ("r-cli" ,r-cli) 2451 ("r-cli" ,r-cli)
2452 ("r-covr" ,r-covr)
2453 ("r-crayon" ,r-crayon)
2454 ("r-desc" ,r-desc)
2450 ("r-digest" ,r-digest) 2455 ("r-digest" ,r-digest)
2456 ("r-dt" ,r-dt)
2457 ("r-ellipsis" ,r-ellipsis)
2458 ("r-glue" ,r-glue)
2451 ("r-git2r" ,r-git2r) 2459 ("r-git2r" ,r-git2r)
2452 ("r-httr" ,r-httr) 2460 ("r-httr" ,r-httr)
2453 ("r-jsonlite" ,r-jsonlite) 2461 ("r-jsonlite" ,r-jsonlite)
@@ -2458,6 +2466,7 @@ informative error messages when it's not available.")
2458 ("r-roxygen2" ,r-roxygen2) 2466 ("r-roxygen2" ,r-roxygen2)
2459 ("r-remotes" ,r-remotes) 2467 ("r-remotes" ,r-remotes)
2460 ("r-rstudioapi" ,r-rstudioapi) 2468 ("r-rstudioapi" ,r-rstudioapi)
2469 ("r-rversions" ,r-rversions)
2461 ("r-sessioninfo" ,r-sessioninfo) 2470 ("r-sessioninfo" ,r-sessioninfo)
2462 ("r-testthat" ,r-testthat) 2471 ("r-testthat" ,r-testthat)
2463 ("r-usethis" ,r-usethis) 2472 ("r-usethis" ,r-usethis)
@@ -2598,13 +2607,13 @@ well as additional utilities such as panel and axis annotation functions.")
2598(define-public r-rcpparmadillo 2607(define-public r-rcpparmadillo
2599 (package 2608 (package
2600 (name "r-rcpparmadillo") 2609 (name "r-rcpparmadillo")
2601 (version "0.9.600.4.0") 2610 (version "0.9.700.2.0")
2602 (source (origin 2611 (source (origin
2603 (method url-fetch) 2612 (method url-fetch)
2604 (uri (cran-uri "RcppArmadillo" version)) 2613 (uri (cran-uri "RcppArmadillo" version))
2605 (sha256 2614 (sha256
2606 (base32 2615 (base32
2607 "07jg2667xyhmp1fbcdi5nnhmkk81da76s9rlswfq4k2sjsmbfmr0")))) 2616 "0g25w32dnqrvhnri8x4yxqawxd8qhn7w3m8d29nxxy0gybx3y8x9"))))
2608 (properties `((upstream-name . "RcppArmadillo"))) 2617 (properties `((upstream-name . "RcppArmadillo")))
2609 (build-system r-build-system) 2618 (build-system r-build-system)
2610 ;; All needed for vignettes 2619 ;; All needed for vignettes
@@ -3645,13 +3654,13 @@ t-probabilities, quantiles, random deviates and densities.")
3645(define-public r-matrixstats 3654(define-public r-matrixstats
3646 (package 3655 (package
3647 (name "r-matrixstats") 3656 (name "r-matrixstats")
3648 (version "0.54.0") 3657 (version "0.55.0")
3649 (source (origin 3658 (source (origin
3650 (method url-fetch) 3659 (method url-fetch)
3651 (uri (cran-uri "matrixStats" version)) 3660 (uri (cran-uri "matrixStats" version))
3652 (sha256 3661 (sha256
3653 (base32 3662 (base32
3654 "0vx00ldsg2zvdrjn49jxczk2c9iaabgvzgpdka5j02ihh7hv83cg")))) 3663 "06fvx0rlaz80k0lkqq2n7v0309xpz7h7ss0m9kgyikp4xs8bvmhn"))))
3655 (properties `((upstream-name . "matrixStats"))) 3664 (properties `((upstream-name . "matrixStats")))
3656 (build-system r-build-system) 3665 (build-system r-build-system)
3657 (native-inputs 3666 (native-inputs
@@ -3748,25 +3757,28 @@ selection.")
3748(define-public r-tidyr 3757(define-public r-tidyr
3749 (package 3758 (package
3750 (name "r-tidyr") 3759 (name "r-tidyr")
3751 (version "0.8.3") 3760 (version "1.0.0")
3752 (source 3761 (source
3753 (origin 3762 (origin
3754 (method url-fetch) 3763 (method url-fetch)
3755 (uri (cran-uri "tidyr" version)) 3764 (uri (cran-uri "tidyr" version))
3756 (sha256 3765 (sha256
3757 (base32 3766 (base32
3758 "0dyc4b03wi65bk7j0ma0y188syh37h57wgxji82i0h8j6pn593x1")))) 3767 "1403j0xd93l0r7qj738ryd5zc79hbcghrzybib3c3hrnaq5s78cj"))))
3759 (build-system r-build-system) 3768 (build-system r-build-system)
3760 (propagated-inputs 3769 (propagated-inputs
3761 `(("r-dplyr" ,r-dplyr) 3770 `(("r-dplyr" ,r-dplyr)
3771 ("r-ellipsis" ,r-ellipsis)
3762 ("r-magrittr" ,r-magrittr) 3772 ("r-magrittr" ,r-magrittr)
3763 ("r-glue" ,r-glue) 3773 ("r-glue" ,r-glue)
3774 ("r-lifecycle" ,r-lifecycle)
3764 ("r-purrr" ,r-purrr) 3775 ("r-purrr" ,r-purrr)
3765 ("r-rlang" ,r-rlang) 3776 ("r-rlang" ,r-rlang)
3766 ("r-tidyselect" ,r-tidyselect) 3777 ("r-tidyselect" ,r-tidyselect)
3767 ("r-rcpp" ,r-rcpp) 3778 ("r-rcpp" ,r-rcpp)
3768 ("r-stringi" ,r-stringi) 3779 ("r-stringi" ,r-stringi)
3769 ("r-tibble" ,r-tibble))) 3780 ("r-tibble" ,r-tibble)
3781 ("r-vctrs" ,r-vctrs)))
3770 (home-page "https://github.com/hadley/tidyr") 3782 (home-page "https://github.com/hadley/tidyr")
3771 (synopsis "Tidy data with `spread()` and `gather()` functions") 3783 (synopsis "Tidy data with `spread()` and `gather()` functions")
3772 (description 3784 (description
diff --git a/gnu/packages/suckless.scm b/gnu/packages/suckless.scm
index 427bc445984..f0055cc0ccd 100644
--- a/gnu/packages/suckless.scm
+++ b/gnu/packages/suckless.scm
@@ -724,3 +724,31 @@ as -1, to be used instead of U+FFFD.
724It is a front end for ii-like chat programs. It uses @code{tail -f} to get the 724It is a front end for ii-like chat programs. It uses @code{tail -f} to get the
725chat output in the background.") 725chat output in the background.")
726 (license license:isc)))) 726 (license license:isc))))
727
728(define-public scron
729 (package
730 (name "scron")
731 (version "0.4")
732 (source
733 (origin
734 (method url-fetch)
735 (uri (string-append "https://dl.2f30.org/releases/"
736 name "-" version ".tar.gz"))
737 (sha256
738 (base32
739 "066fwa55kqcgfrsqgxh94sqbkxfsr691360xg4ljxr4i75d25s2a"))))
740 (build-system gnu-build-system)
741 (arguments
742 `(#:tests? #f ; No tests
743 #:make-flags (list "CC=gcc"
744 (string-append "PREFIX=" %output))
745 #:phases
746 (modify-phases %standard-phases
747 (delete 'configure)))) ; No configure script
748 (home-page "https://git.2f30.org/scron/")
749 (synopsis "Simple cron daemon")
750 (description
751 "Schedule commands to be run at specified dates and times.
752Single daemon and configuration file. Log to stdout or syslog. No mail
753support.")
754 (license license:expat)))
diff --git a/gnu/packages/sync.scm b/gnu/packages/sync.scm
index e281f435549..0c840a1a1d4 100644
--- a/gnu/packages/sync.scm
+++ b/gnu/packages/sync.scm
@@ -264,14 +264,14 @@ over the Internet in an HTTP and CDN friendly way;
264(define-public rclone 264(define-public rclone
265 (package 265 (package
266 (name "rclone") 266 (name "rclone")
267 (version "1.49.1") 267 (version "1.49.2")
268 (source 268 (source
269 (origin 269 (origin
270 (method url-fetch) 270 (method url-fetch)
271 (uri (string-append "https://github.com/rclone/rclone/releases/download/" 271 (uri (string-append "https://github.com/rclone/rclone/releases/download/"
272 "v" version "/rclone-v" version ".tar.gz")) 272 "v" version "/rclone-v" version ".tar.gz"))
273 (sha256 273 (sha256
274 (base32 "1d0qvj7fn5bx3zqlf6hzn1922nrmy4x341n760m1b6h9az32mc5x")))) 274 (base32 "1q8lf85hg2havb1xsal75r19ck166rh19lffpd3i43zgblc6gs8j"))))
275 ;; FIXME: Rclone bundles some libraries Guix already provides. Need to 275 ;; FIXME: Rclone bundles some libraries Guix already provides. Need to
276 ;; un-bundle them. 276 ;; un-bundle them.
277 (build-system go-build-system) 277 (build-system go-build-system)
diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index f0117eead3e..98ed77289a7 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -7,7 +7,7 @@
7;;; Copyright © 2016, 2017 José Miguel Sánchez García <jmi2k@openmailbox.org> 7;;; Copyright © 2016, 2017 José Miguel Sánchez García <jmi2k@openmailbox.org>
8;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> 8;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
9;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net> 9;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
10;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net> 10;;; Copyright © 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
11;;; Copyright © 2017 Petter <petter@mykolab.ch> 11;;; Copyright © 2017 Petter <petter@mykolab.ch>
12;;; Copyright © 2018 Hartmut Goebel <h.goebel@crazy-compilers.com> 12;;; Copyright © 2018 Hartmut Goebel <h.goebel@crazy-compilers.com>
13;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net> 13;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
@@ -460,7 +460,7 @@ should be thread-safe.")
460(define-public libvterm 460(define-public libvterm
461 (package 461 (package
462 (name "libvterm") 462 (name "libvterm")
463 (version "0+bzr681") 463 (version "0.1")
464 (source 464 (source
465 (origin 465 (origin
466 (method url-fetch) 466 (method url-fetch)
@@ -468,12 +468,13 @@ should be thread-safe.")
468 "libvterm-" version ".tar.gz")) 468 "libvterm-" version ".tar.gz"))
469 (sha256 469 (sha256
470 (base32 470 (base32
471 "1s56c8p1qz6frkcri0hg4qyydv2wcccj6n2xmz1dwcdqn38ldsmb")))) 471 "1pcxjhvdwhr2f3lyzf2rv1vp3l62bgkjm1ybhj82qf8yly7ca6g4"))))
472 (build-system gnu-build-system) 472 (build-system gnu-build-system)
473 (arguments 473 (arguments
474 `(#:make-flags 474 `(#:make-flags
475 (list "CC=gcc" 475 (list "CC=gcc"
476 (string-append "PREFIX=" (assoc-ref %outputs "out"))) 476 (string-append "PREFIX=" (assoc-ref %outputs "out")))
477 #:tests? #f ; XXX: some tests fail in this release
477 #:test-target "test" 478 #:test-target "test"
478 #:phases 479 #:phases
479 (modify-phases %standard-phases 480 (modify-phases %standard-phases
diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index 28459917c88..e67b0505f39 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -6827,17 +6827,14 @@ titles.")
6827 "/fonts/afm/public/xypic/" 6827 "/fonts/afm/public/xypic/"
6828 "/fonts/tfm/public/xypic/" 6828 "/fonts/tfm/public/xypic/"
6829 "/fonts/type1/public/xypic/" 6829 "/fonts/type1/public/xypic/"
6830 6830 "/tex/generic/xypic/")
6831 ;;"/tex/generic/xypic/" ; I guess these are generated
6832 )
6833 (base32 6831 (base32
6834 "0sqkkvjzzsiazvh8803qqyrcv4is3m1qs9x9v2m35jjikbqc08y8")))) 6832 "09b51bbm189xh7039h5n8nmab5nn2bybhh26qjn08763m80zdhjg")
6833 #:trivial? #t)))
6835 (package 6834 (package
6836 (inherit template) 6835 (inherit template)
6837 (arguments 6836 (arguments
6838 (substitute-keyword-arguments (package-arguments template) 6837 (substitute-keyword-arguments (package-arguments template)
6839 ((#:tex-directory _ #t)
6840 "tex/generic/xypic")
6841 ((#:phases phases) 6838 ((#:phases phases)
6842 `(modify-phases ,phases 6839 `(modify-phases ,phases
6843 (delete 'reset-gzip-timestamps))))) 6840 (delete 'reset-gzip-timestamps)))))
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index 388f164428f..9ce01e66eae 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -13,7 +13,7 @@
13;;; Copyright © 2017,2019 Hartmut Goebel <h.goebel@crazy-compilers.com> 13;;; Copyright © 2017,2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
14;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net> 14;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
15;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com> 15;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
16;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> 16;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
17;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz> 17;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
18;;; Copyright © 2018 Meiyo Peng <meiyo.peng@gmail.com> 18;;; Copyright © 2018 Meiyo Peng <meiyo.peng@gmail.com>
19;;; Copyright © 2019 Yoshinori Arai <kumagusu08@gmail.com> 19;;; Copyright © 2019 Yoshinori Arai <kumagusu08@gmail.com>
@@ -89,23 +89,22 @@ to DOS format and vice versa.")
89(define-public recode 89(define-public recode
90 (package 90 (package
91 (name "recode") 91 (name "recode")
92 (version "3.7.1") 92 (version "3.7.5")
93 (source 93 (source
94 (origin 94 (origin
95 (method url-fetch) 95 (method url-fetch)
96 (uri (string-append "https://github.com/rrthomas/recode/releases/" 96 (uri (string-append "https://github.com/rrthomas/recode/releases/"
97 "download/v" version "/" name "-" version ".tar.gz")) 97 "download/v" version "/recode-" version ".tar.gz"))
98 (sha256 98 (sha256
99 (base32 99 (base32 "1sl99dfx2b76paq86wv3a0lcy66f1hylf6iy04rzwxj7ccwpsk30"))
100 "0215hfj0rhlh0grg91qfx75pp6z09bpv8211qdxqihniw7y9a4fs"))
101 (modules '((guix build utils))) 100 (modules '((guix build utils)))
102 (snippet '(begin 101 (snippet '(begin
103 (delete-file "tests/Recode.c") 102 (delete-file "tests/Recode.c")
104 #t)))) 103 #t))))
105 (build-system gnu-build-system) 104 (build-system gnu-build-system)
106 (native-inputs 105 (native-inputs
107 `(("python" ,python-2) 106 `(("python" ,python)
108 ("python2-cython" ,python2-cython))) 107 ("python-cython" ,python-cython)))
109 (home-page "https://github.com/rrthomas/recode") 108 (home-page "https://github.com/rrthomas/recode")
110 (synopsis "Text encoding converter") 109 (synopsis "Text encoding converter")
111 (description "The Recode library converts files between character sets and 110 (description "The Recode library converts files between character sets and
@@ -879,6 +878,44 @@ indentation.
879 (home-page "http://docx2txt.sourceforge.net") 878 (home-page "http://docx2txt.sourceforge.net")
880 (license license:gpl3+))) 879 (license license:gpl3+)))
881 880
881(define-public odt2txt
882 (package
883 (name "odt2txt")
884 (version "0.5")
885 (source
886 (origin
887 (method git-fetch)
888 (uri (git-reference
889 (url "https://github.com/dstosberg/odt2txt/")
890 (commit (string-append "v" version))))
891 (file-name (git-file-name name version))
892 (sha256
893 (base32
894 "0im3kzvhxkjlx57w6h13mc9584c74ma1dyymgvpq2y61av3gc35v"))))
895 (build-system gnu-build-system)
896 (arguments
897 `(#:tests? #f ; no make check
898 #:make-flags (list "CC=gcc"
899 (string-append "DESTDIR=" (assoc-ref %outputs "out")))
900 #:phases
901 (modify-phases %standard-phases
902 ;; no configure script
903 (delete 'configure))))
904 (inputs
905 `(("zlib" ,zlib)))
906 (home-page "https://github.com/dstosberg/odt2txt/")
907 (synopsis "Converter from OpenDocument Text to plain text")
908 (description "odt2txt is a command-line tool which extracts the text out
909of OpenDocument Texts, as produced by OpenOffice.org, KOffice, StarOffice and
910others.
911
912odt2txt can also extract text from some file formats similar to OpenDocument
913Text, such as OpenOffice.org XML (*.sxw), which was used by OpenOffice.org
914version 1.x and older StarOffice versions. To a lesser extent, odt2txt may be
915useful to extract content from OpenDocument spreadsheets (*.ods) and
916OpenDocument presentations (*.odp).")
917 (license license:gpl2)))
918
882(define-public opencc 919(define-public opencc
883 (package 920 (package
884 (name "opencc") 921 (name "opencc")
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index d896908a124..6689375da64 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -271,6 +271,7 @@ required structures.")
271 (package 271 (package
272 (name "openssl") 272 (name "openssl")
273 (version "1.1.1c") 273 (version "1.1.1c")
274 (replacement openssl-1.1.1d)
274 (source (origin 275 (source (origin
275 (method url-fetch) 276 (method url-fetch)
276 (uri (list (string-append "https://www.openssl.org/source/openssl-" 277 (uri (list (string-append "https://www.openssl.org/source/openssl-"
@@ -372,6 +373,24 @@ required structures.")
372 (license license:openssl) 373 (license license:openssl)
373 (home-page "https://www.openssl.org/"))) 374 (home-page "https://www.openssl.org/")))
374 375
376(define openssl-1.1.1d
377 (package/inherit
378 openssl
379 (version "1.1.1d")
380 (source (origin
381 (method url-fetch)
382 (uri (list (string-append "https://www.openssl.org/source/openssl-"
383 version ".tar.gz")
384 (string-append "ftp://ftp.openssl.org/source/"
385 "openssl-" version ".tar.gz")
386 (string-append "ftp://ftp.openssl.org/source/old/"
387 (string-trim-right version char-set:letter)
388 "/openssl-" version ".tar.gz")))
389 (patches (search-patches "openssl-1.1-c-rehash-in.patch"))
390 (sha256
391 (base32
392 "1whinyw402z3b9xlb3qaxv4b9sk4w1bgh9k0y8df1z4x3yy92fhy"))))))
393
375(define-public openssl-1.0 394(define-public openssl-1.0
376 (package 395 (package
377 (inherit openssl) 396 (inherit openssl)
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 4fb2d76c337..b6c32fabdbb 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -1492,7 +1492,7 @@ access to mpv's powerful playback capabilities.")
1492(define-public youtube-dl 1492(define-public youtube-dl
1493 (package 1493 (package
1494 (name "youtube-dl") 1494 (name "youtube-dl")
1495 (version "2019.08.13") 1495 (version "2019.09.12")
1496 (source (origin 1496 (source (origin
1497 (method url-fetch) 1497 (method url-fetch)
1498 (uri (string-append "https://github.com/rg3/youtube-dl/releases/" 1498 (uri (string-append "https://github.com/rg3/youtube-dl/releases/"
@@ -1500,7 +1500,7 @@ access to mpv's powerful playback capabilities.")
1500 version ".tar.gz")) 1500 version ".tar.gz"))
1501 (sha256 1501 (sha256
1502 (base32 1502 (base32
1503 "0b94hrhbqa7jhn91pxsbphg2ylwkpkknb2y4v4sczp7rjvgmjgdj")))) 1503 "0wmc0rl4l08hnz3agh69ld1pcmjs7czg0d2k7mnnlxhwlwi38w56"))))
1504 (build-system python-build-system) 1504 (build-system python-build-system)
1505 (arguments 1505 (arguments
1506 ;; The problem here is that the directory for the man page and completion 1506 ;; The problem here is that the directory for the man page and completion
diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm
index 8ebdbb9a353..b1f47bd0105 100644
--- a/gnu/packages/vim.scm
+++ b/gnu/packages/vim.scm
@@ -735,7 +735,7 @@ are detected, the user is notified.")))
735(define-public neovim 735(define-public neovim
736 (package 736 (package
737 (name "neovim") 737 (name "neovim")
738 (version "0.3.7") 738 (version "0.4.2")
739 (source 739 (source
740 (origin 740 (origin
741 (method git-fetch) 741 (method git-fetch)
@@ -745,7 +745,7 @@ are detected, the user is notified.")))
745 (file-name (git-file-name name version)) 745 (file-name (git-file-name name version))
746 (sha256 746 (sha256
747 (base32 747 (base32
748 "1j6w5jvq5v7kf7diad91qs1acr427nidnk9s24yyrz0hwdd1c2lh")))) 748 "13w446plvgl219lhj29jyimhiqvs1y1byrz4qpdmxgyddmx9xqss"))))
749 (build-system cmake-build-system) 749 (build-system cmake-build-system)
750 (arguments 750 (arguments
751 `(#:modules ((srfi srfi-26) 751 `(#:modules ((srfi srfi-26)
@@ -754,13 +754,6 @@ are detected, the user is notified.")))
754 #:configure-flags '("-DPREFER_LUA:BOOL=YES") 754 #:configure-flags '("-DPREFER_LUA:BOOL=YES")
755 #:phases 755 #:phases
756 (modify-phases %standard-phases 756 (modify-phases %standard-phases
757 ;; TODO: remove 'patch-tic on update
758 ;; see: https://github.com/neovim/neovim/issues/9687
759 (add-after 'unpack 'patch-tic
760 (lambda _
761 (substitute* "src/nvim/tui/tui.c"
762 (("value != NULL") "value != NULL && value != (char *)-1"))
763 #t))
764 (add-after 'unpack 'set-lua-paths 757 (add-after 'unpack 'set-lua-paths
765 (lambda* (#:key inputs #:allow-other-keys) 758 (lambda* (#:key inputs #:allow-other-keys)
766 (let* ((lua-version "5.1") 759 (let* ((lua-version "5.1")
@@ -774,6 +767,7 @@ are detected, the user is notified.")))
774 (string-append path "/?.lua;" path "/?/?.lua")))) 767 (string-append path "/?.lua;" path "/?/?.lua"))))
775 (lua-inputs (map (cute assoc-ref %build-inputs <>) 768 (lua-inputs (map (cute assoc-ref %build-inputs <>)
776 '("lua" 769 '("lua"
770 "lua-luv"
777 "lua-lpeg" 771 "lua-lpeg"
778 "lua-bitop" 772 "lua-bitop"
779 "lua-libmpack")))) 773 "lua-libmpack"))))
@@ -791,6 +785,7 @@ are detected, the user is notified.")))
791 ("jemalloc" ,jemalloc) 785 ("jemalloc" ,jemalloc)
792 ("libiconv" ,libiconv) 786 ("libiconv" ,libiconv)
793 ("lua" ,lua-5.1) 787 ("lua" ,lua-5.1)
788 ("lua-luv" ,lua5.1-luv)
794 ("lua-lpeg" ,lua5.1-lpeg) 789 ("lua-lpeg" ,lua5.1-lpeg)
795 ("lua-bitop" ,lua5.1-bitop) 790 ("lua-bitop" ,lua5.1-bitop)
796 ("lua-libmpack" ,lua5.1-libmpack))) 791 ("lua-libmpack" ,lua5.1-libmpack)))
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 2e5b1ce16ed..e1ac2189be1 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -411,7 +411,10 @@ manage system or application containers.")
411 (build-system gnu-build-system) 411 (build-system gnu-build-system)
412 (arguments 412 (arguments
413 `(#:configure-flags 413 `(#:configure-flags
414 (list "--with-polkit" 414 (list "--with-qemu"
415 "--with-qemu-user=nobody"
416 "--with-qemu-group=kvm"
417 "--with-polkit"
415 (string-append "--docdir=" (assoc-ref %outputs "out") "/share/doc/" 418 (string-append "--docdir=" (assoc-ref %outputs "out") "/share/doc/"
416 ,name "-" ,version) 419 ,name "-" ,version)
417 "--sysconfdir=/etc" 420 "--sysconfdir=/etc"
@@ -450,23 +453,13 @@ manage system or application containers.")
450 (apply invoke "make" "install" 453 (apply invoke "make" "install"
451 "sysconfdir=/tmp/etc" 454 "sysconfdir=/tmp/etc"
452 "localstatedir=/tmp/var" 455 "localstatedir=/tmp/var"
453 make-flags))) 456 make-flags))))))
454 (add-after 'install 'wrap-libvirtd
455 (lambda* (#:key inputs outputs #:allow-other-keys)
456 (let ((out (assoc-ref outputs "out")))
457 (wrap-program (string-append out "/sbin/libvirtd")
458 `("PATH" = (,(string-append (assoc-ref inputs "iproute")
459 "/sbin")
460 ,(string-append (assoc-ref inputs "qemu")
461 "/bin"))))
462 #t))))))
463 (inputs 457 (inputs
464 `(("libxml2" ,libxml2) 458 `(("libxml2" ,libxml2)
465 ("eudev" ,eudev) 459 ("eudev" ,eudev)
466 ("libpciaccess" ,libpciaccess) 460 ("libpciaccess" ,libpciaccess)
467 ("gnutls" ,gnutls) 461 ("gnutls" ,gnutls)
468 ("dbus" ,dbus) 462 ("dbus" ,dbus)
469 ("qemu" ,qemu)
470 ("libpcap" ,libpcap) 463 ("libpcap" ,libpcap)
471 ("libnl" ,libnl) 464 ("libnl" ,libnl)
472 ("libtirpc" ,libtirpc) ;for <rpc/rpc.h> 465 ("libtirpc" ,libtirpc) ;for <rpc/rpc.h>
diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm
index 3c6db64ad78..bc875b1c99d 100644
--- a/gnu/packages/vpn.scm
+++ b/gnu/packages/vpn.scm
@@ -239,13 +239,13 @@ the user specifically asks to proxy, so the @dfn{VPN} interface no longer
239(define-public openconnect 239(define-public openconnect
240 (package 240 (package
241 (name "openconnect") 241 (name "openconnect")
242 (version "8.04") 242 (version "8.05")
243 (source (origin 243 (source (origin
244 (method url-fetch) 244 (method url-fetch)
245 (uri (string-append "ftp://ftp.infradead.org/pub/openconnect/" 245 (uri (string-append "ftp://ftp.infradead.org/pub/openconnect/"
246 "openconnect-" version ".tar.gz")) 246 "openconnect-" version ".tar.gz"))
247 (sha256 247 (sha256
248 (base32 "07zqcl2ykdc4mgix9sbv4jgpg7cybifxfgrycvf99ckq7xp9r5wq")))) 248 (base32 "14i9q727c2zc9xhzp1a9hz3gzb5lwgsslbhircm84dnbs192jp1k"))))
249 (build-system gnu-build-system) 249 (build-system gnu-build-system)
250 (propagated-inputs 250 (propagated-inputs
251 `(("libxml2" ,libxml2) 251 `(("libxml2" ,libxml2)
@@ -452,14 +452,14 @@ The peer-to-peer VPN implements a Layer 2 (Ethernet) network between the peers
452(define-public wireguard 452(define-public wireguard
453 (package 453 (package
454 (name "wireguard") 454 (name "wireguard")
455 (version "0.0.20190702") 455 (version "0.0.20190913")
456 (source (origin 456 (source (origin
457 (method url-fetch) 457 (method url-fetch)
458 (uri (string-append "https://git.zx2c4.com/WireGuard/snapshot/" 458 (uri (string-append "https://git.zx2c4.com/WireGuard/snapshot/"
459 "WireGuard-" version ".tar.xz")) 459 "WireGuard-" version ".tar.xz"))
460 (sha256 460 (sha256
461 (base32 461 (base32
462 "1b5s1ncwqxdgb0c6cd07x4ynnj6cpbiqp4bxqir7mm5bf6y124qs")))) 462 "06452jfibwar4sh7wf2k2k1a5qk5q703gxqqq5ymj6rdblc2fwwr"))))
463 (build-system gnu-build-system) 463 (build-system gnu-build-system)
464 (outputs '("out" ; The WireGuard userspace tools 464 (outputs '("out" ; The WireGuard userspace tools
465 "kernel-patch")) ; A patch to build Linux with WireGuard support 465 "kernel-patch")) ; A patch to build Linux with WireGuard support
diff --git a/gnu/packages/vulkan.scm b/gnu/packages/vulkan.scm
index 9111a93be5b..479ec9425d6 100644
--- a/gnu/packages/vulkan.scm
+++ b/gnu/packages/vulkan.scm
@@ -1,6 +1,6 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com> 2;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
3;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> 3;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
4;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il> 4;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
5;;; 5;;;
6;;; This file is part of GNU Guix. 6;;; This file is part of GNU Guix.
@@ -52,7 +52,7 @@
52 (sha256 52 (sha256
53 (base32 53 (base32
54 "0m56smanfcczjfif4yfcqhjj4d4sc088kwg6dgia8fwdsjavdm4d")) 54 "0m56smanfcczjfif4yfcqhjj4d4sc088kwg6dgia8fwdsjavdm4d"))
55 (file-name (string-append name "-" version "-checkout")))) 55 (file-name (git-file-name name version))))
56 (build-system cmake-build-system) 56 (build-system cmake-build-system)
57 (arguments 57 (arguments
58 `(#:tests? #f ;; No tests 58 `(#:tests? #f ;; No tests
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index 745b08f90bc..bfc0976f0ed 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -93,14 +93,14 @@ older or slower computers and embedded systems.")
93(define-public links 93(define-public links
94 (package 94 (package
95 (name "links") 95 (name "links")
96 (version "2.19") 96 (version "2.20.1")
97 (source (origin 97 (source (origin
98 (method url-fetch) 98 (method url-fetch)
99 (uri (string-append "http://links.twibright.com/download/" 99 (uri (string-append "http://links.twibright.com/download/"
100 "links-" version ".tar.bz2")) 100 "links-" version ".tar.bz2"))
101 (sha256 101 (sha256
102 (base32 102 (base32
103 "02ls11c02p7xvsdjyb43rrzr850i1yly003r812z0w5vv5yqqxbh")))) 103 "0184g59cxxhg9dqg5gv66f30f1wg8sx957pp5rs7b8icnwnafa5v"))))
104 (build-system gnu-build-system) 104 (build-system gnu-build-system)
105 (arguments 105 (arguments
106 `(#:phases 106 `(#:phases
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 591ae2cb748..f7730f39922 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -6389,7 +6389,7 @@ derivation by David Revoy from the original MonsterID by Andreas Gohr.")
6389 (method url-fetch) 6389 (method url-fetch)
6390 (uri (string-append "https://github.com/nghttp2/nghttp2/" 6390 (uri (string-append "https://github.com/nghttp2/nghttp2/"
6391 "releases/download/v" version "/" 6391 "releases/download/v" version "/"
6392 name "-" version ".tar.xz")) 6392 "nghttp2-" version ".tar.xz"))
6393 (sha256 6393 (sha256
6394 (base32 6394 (base32
6395 "0j0lk37k8k3f61r9nw647hg4b22z1753l36n3xrp9x01civ614b7")))) 6395 "0j0lk37k8k3f61r9nw647hg4b22z1753l36n3xrp9x01civ614b7"))))
@@ -6602,7 +6602,7 @@ Anonip can also be uses as a Python module in your own Python application.")
6602(define-public poussetaches 6602(define-public poussetaches
6603 (package 6603 (package
6604 (name "poussetaches") 6604 (name "poussetaches")
6605 (version "0.0.1") 6605 (version "0.0.2")
6606 (source 6606 (source
6607 (origin 6607 (origin
6608 (method git-fetch) 6608 (method git-fetch)
@@ -6612,7 +6612,7 @@ Anonip can also be uses as a Python module in your own Python application.")
6612 (file-name (git-file-name name version)) 6612 (file-name (git-file-name name version))
6613 (sha256 6613 (sha256
6614 (base32 6614 (base32
6615 "07106kfcz3a39jvrv3mlqqxlihsmdhgkrjnqznyjsij9absgvdv6")))) 6615 "0kckcwvqklavd855np9aq5js6mg84isrlwchr504yigwma0sm7hm"))))
6616 (build-system go-build-system) 6616 (build-system go-build-system)
6617 (propagated-inputs 6617 (propagated-inputs
6618 `(("go-github-com-robfig-cron" ,go-github-com-robfig-cron) 6618 `(("go-github-com-robfig-cron" ,go-github-com-robfig-cron)
diff --git a/gnu/packages/wget.scm b/gnu/packages/wget.scm
index 76ceed5ff7c..1501ea27465 100644
--- a/gnu/packages/wget.scm
+++ b/gnu/packages/wget.scm
@@ -21,15 +21,13 @@
21;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. 21;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
22 22
23(define-module (gnu packages wget) 23(define-module (gnu packages wget)
24 #:use-module (guix licenses) 24 #:use-module ((guix licenses) #:prefix license:)
25 #:use-module (gnu packages) 25 #:use-module (gnu packages)
26 #:use-module (gnu packages autotools)
27 #:use-module (gnu packages base) 26 #:use-module (gnu packages base)
28 #:use-module (gnu packages compression) 27 #:use-module (gnu packages compression)
29 #:use-module (gnu packages documentation) 28 #:use-module (gnu packages documentation)
30 #:use-module (gnu packages flex)
31 #:use-module (gnu packages gettext)
32 #:use-module (gnu packages gnunet) 29 #:use-module (gnu packages gnunet)
30 #:use-module (gnu packages gnupg)
33 #:use-module (gnu packages libidn) 31 #:use-module (gnu packages libidn)
34 #:use-module (gnu packages pcre) 32 #:use-module (gnu packages pcre)
35 #:use-module (gnu packages perl) 33 #:use-module (gnu packages perl)
@@ -40,7 +38,6 @@
40 #:use-module (gnu packages xdisorg) 38 #:use-module (gnu packages xdisorg)
41 #:use-module (guix packages) 39 #:use-module (guix packages)
42 #:use-module (guix download) 40 #:use-module (guix download)
43 #:use-module (guix git-download)
44 #:use-module (guix build-system gnu)) 41 #:use-module (guix build-system gnu))
45 42
46(define-public wget 43(define-public wget
@@ -74,7 +71,7 @@
74HTTPS and FTP protocols. It can resume interrupted downloads, use file name 71HTTPS and FTP protocols. It can resume interrupted downloads, use file name
75wild cards, supports proxies and cookies, and it can convert absolute links 72wild cards, supports proxies and cookies, and it can convert absolute links
76in downloaded documents to relative links.") 73in downloaded documents to relative links.")
77 (license gpl3+))) ; some files are under GPLv2+ 74 (license license:gpl3+))) ; some files are under GPLv2+
78 75
79(define-public wgetpaste 76(define-public wgetpaste
80 (package 77 (package
@@ -136,68 +133,47 @@ in downloaded documents to relative links.")
136 (description 133 (description
137 "@code{wgetpaste} is an extremely simple command-line interface to various 134 "@code{wgetpaste} is an extremely simple command-line interface to various
138online pastebin services.") 135online pastebin services.")
139 (license public-domain))) 136 (license license:public-domain)))
140 137
141(define-public wget2 138(define-public wget2
142 (package 139 (package
143 (name "wget2") 140 (name "wget2")
144 (version "1.99.1") 141 (version "1.99.2")
145 (source 142 (source
146 (origin 143 (origin
147 (method git-fetch) 144 (method url-fetch)
148 (uri (git-reference 145 (uri (string-append "mirror://gnu/wget/wget2-" version ".tar.gz"))
149 (url "https://gitlab.com/gnuwget/wget2.git")
150 (commit (string-append name "-" version))
151 (recursive? #t))) ;; Needed for 'gnulib' git submodule.
152 (file-name (string-append name "-" version "-checkout"))
153 (sha256 146 (sha256
154 (base32 147 (base32
155 "15wxsnjhc6bzk7f60i1djmsarh1w31gwi5h2gh9k19ncwypfj5dm")))) 148 "0qv55f4bablrlhc8bnic8g3mkk1kq44c4cphrk5jmv92z9aqzi6b"))))
156 (build-system gnu-build-system) 149 (build-system gnu-build-system)
157 (arguments 150 (arguments
158 `(#:phases 151 `(#:phases
159 (modify-phases %standard-phases 152 (modify-phases %standard-phases
160 (add-after 'unpack 'skip-network-test 153 (add-after 'unpack 'skip-network-tests
161 (lambda _ 154 (lambda _
162 (substitute* "tests/Makefile.am" 155 (substitute* "tests/Makefile.in"
163 (("test-auth-digest\\$\\(EXEEXT)") "")) 156 (("test-gpg-verify-no-file\\$\\(EXEEXT)") "")
164 #t)) 157 (("test-gpg-valid\\$\\(EXEEXT)") "")
165 (replace 'bootstrap 158 (("test-gpg-styles\\$\\(EXEEXT)") ""))
166 (lambda _ 159 #t)))
167 ;; Make sure all the files are writable so that ./bootstrap 160 #:configure-flags '("--enable-static=no")))
168 ;; can proceed.
169 (for-each (lambda (file)
170 (chmod file #o755))
171 (find-files "."))
172 (patch-shebang "./gnulib/gnulib-tool.py")
173 ;; Remove unnecessary inputs from bootstrap.conf
174 (substitute* "bootstrap.conf"
175 (("flex.*") "")
176 (("makeinfo.*") "")
177 (("lzip.*") "")
178 (("rsync.*") ""))
179 (invoke "sh" "./bootstrap"
180 "--gnulib-srcdir=gnulib"
181 "--no-git"))))))
182 (inputs 161 (inputs
183 `(("gnutls" ,gnutls/dane) 162 `(("bzip2" ,bzip2)
163 ("gnutls" ,gnutls/dane)
164 ("gpgme" ,gpgme)
184 ("libiconv" ,libiconv) 165 ("libiconv" ,libiconv)
185 ("libidn2" ,libidn2) 166 ("libidn2" ,libidn2)
186 ("libmicrohttpd" ,libmicrohttpd) 167 ("libmicrohttpd" ,libmicrohttpd)
187 ("libpsl" ,libpsl) 168 ("libpsl" ,libpsl)
188 ("pcre2" ,pcre2))) 169 ("pcre2" ,pcre2)
170 ("zlib" ,zlib)))
189 ;; TODO: Add libbrotlidec, libnghttp2. 171 ;; TODO: Add libbrotlidec, libnghttp2.
190 (native-inputs 172 (native-inputs
191 `(("autoconf" ,autoconf) 173 `(("pkg-config" ,pkg-config)))
192 ("automake" ,automake)
193 ("flex" ,flex)
194 ("gettext" ,gettext-minimal)
195 ("libtool" ,libtool)
196 ("pkg-config" ,pkg-config)
197 ("python" ,python-2)))
198 (home-page "https://gitlab.com/gnuwget/wget2") 174 (home-page "https://gitlab.com/gnuwget/wget2")
199 (synopsis "Successor of GNU Wget") 175 (synopsis "Successor of GNU Wget")
200 (description "GNU Wget2 is the successor of GNU Wget, a file and recursive 176 (description "GNU Wget2 is the successor of GNU Wget, a file and recursive
201website downloader. Designed and written from scratch it wraps around libwget, 177website downloader. Designed and written from scratch it wraps around libwget,
202that provides the basic functions needed by a web client.") 178that provides the basic functions needed by a web client.")
203 (license (list gpl3+ lgpl3+)))) 179 (license (list license:gpl3+ license:lgpl3+))))
diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm
index 3a5def50b1c..d1c27a65a7d 100644
--- a/gnu/packages/wine.scm
+++ b/gnu/packages/wine.scm
@@ -318,7 +318,7 @@ integrate Windows applications into your desktop.")
318(define-public wine-staging-patchset-data 318(define-public wine-staging-patchset-data
319 (package 319 (package
320 (name "wine-staging-patchset-data") 320 (name "wine-staging-patchset-data")
321 (version "4.15") 321 (version "4.16")
322 (source 322 (source
323 (origin 323 (origin
324 (method git-fetch) 324 (method git-fetch)
@@ -328,7 +328,7 @@ integrate Windows applications into your desktop.")
328 (file-name (git-file-name name version)) 328 (file-name (git-file-name name version))
329 (sha256 329 (sha256
330 (base32 330 (base32
331 "13g40h2ybcl6vab4zbl1ksqfqyly5hzxssza9dv8r5pmp8x54hgr")))) 331 "0zkvwl6rxr6xcqk4a3h43cak67w6bcyqqnajz6azif07ir3z1c61"))))
332 (build-system trivial-build-system) 332 (build-system trivial-build-system)
333 (native-inputs 333 (native-inputs
334 `(("bash" ,bash) 334 `(("bash" ,bash)
@@ -374,7 +374,7 @@ integrate Windows applications into your desktop.")
374 (file-name (string-append name "-" version ".tar.xz")) 374 (file-name (string-append name "-" version ".tar.xz"))
375 (sha256 375 (sha256
376 (base32 376 (base32
377 "0bfh4vd99zwj7f4108zvs80dfvmmnnsap7i6gmf21jgcly3paygq")))) 377 "17qxbddv23ibbayw1ai984m0dlq63cgplms2jhsc09incjhafywd"))))
378 (inputs `(("autoconf" ,autoconf) ; for autoreconf 378 (inputs `(("autoconf" ,autoconf) ; for autoreconf
379 ("faudio" ,faudio) 379 ("faudio" ,faudio)
380 ("ffmpeg" ,ffmpeg) 380 ("ffmpeg" ,ffmpeg)
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index a4ae1c2ddab..275a7665317 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -21,6 +21,7 @@
21;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com> 21;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
22;;; Copyright © 2019 Timothy Sample <samplet@ngyro.com> 22;;; Copyright © 2019 Timothy Sample <samplet@ngyro.com>
23;;; Copyright © 2019 Gábor Boskovits <boskovits@gmail.com> 23;;; Copyright © 2019 Gábor Boskovits <boskovits@gmail.com>
24;;; Copyright © 2019 Kyle Andrews <kyle.c.andrews@gmail.com>
24;;; 25;;;
25;;; This file is part of GNU Guix. 26;;; This file is part of GNU Guix.
26;;; 27;;;
@@ -127,6 +128,86 @@
127the leaves of a full binary tree.") 128the leaves of a full binary tree.")
128 (license license:bsd-2))) 129 (license license:bsd-2)))
129 130
131(define-public herbstluftwm
132 (package
133 (name "herbstluftwm")
134 (version "0.7.2")
135 (source
136 (origin
137 (method url-fetch)
138 (uri (string-append "https://herbstluftwm.org/tarballs/herbstluftwm-"
139 version ".tar.gz"))
140 (sha256
141 (base32
142 "1kc18aj9j3nfz6fj4qxg9s3gg4jvn6kzi3ii24hfm0vqdpy17xnz"))
143 (file-name (string-append "herbstluftwm-" version ".tar.gz"))))
144 (build-system gnu-build-system)
145 (inputs
146 `(("dzen" ,dzen)
147 ("dmenu" ,dmenu)
148 ("glib" ,glib)
149 ("glibmm" ,glibmm)
150 ("xterm" ,xterm)
151 ("xsetroot" ,xsetroot)
152 ("libx11" ,libx11)
153 ("libxext" ,libxext)
154 ("libxinerama" ,libxinerama)))
155 (native-inputs
156 `(("pkg-config" ,pkg-config)))
157 (arguments
158 '(#:phases
159 (modify-phases %standard-phases
160 (delete 'configure)
161 (delete 'check)
162 (add-after 'install 'install-xsession
163 (lambda* (#:key outputs #:allow-other-keys)
164 (let* ((out (assoc-ref outputs "out"))
165 (xsessions (string-append out "/share/xsessions")))
166 (mkdir-p xsessions)
167 (call-with-output-file
168 (string-append xsessions "/herbstluftwm.desktop")
169 (lambda (port)
170 (format port "~
171 [Desktop Entry]~@
172 Name=herbstluftwm~@
173 Comment=Manual tiling window manager~@
174 Exec=~a/bin/herbstluftwm~@
175 Type=XSession~%" out)))
176 #t))))
177 #:tests? #f
178 #:make-flags
179 (let ((out (assoc-ref %outputs "out")))
180 (list "CC=gcc"
181 (string-append "PREFIX=''")
182 (string-append "DESTDIR=" out)
183 (string-append "BASHCOMPLETIONDIR=" out
184 "/etc/bash_completion.d")))))
185 (synopsis "Tiling window manager for X11")
186 (description "herbstluftwm is a manual tiling window manager for X11 using
187Xlib and GLib. Its main features are:
188
189@itemize
190@item
191The layout is based on splitting frames into subframes which can be split
192again or can be filled with windows (similar to i3 or musca).
193
194@item
195Tags (or workspaces or virtual desktops or …) can be added/removed at runtime.
196Each tag contains an own layout.
197
198@item
199Exactly one tag is viewed on each monitor. The tags are monitor independent
200(similar to Xmonad).
201
202@item
203It is configured at runtime via IPC calls from @command{herbstclient}. So the
204configuration file is just a script which is run on startup (similar to wmii
205or musca).
206
207@end itemize")
208 (home-page "https://herbstluftwm.org")
209 (license license:bsd-2)))
210
130(define-public i3status 211(define-public i3status
131 (package 212 (package
132 (name "i3status") 213 (name "i3status")
@@ -270,42 +351,30 @@ Despite the name it should work with any X11 window manager.")
270 (license license:bsd-3))) 351 (license license:bsd-3)))
271 352
272(define-public i3blocks 353(define-public i3blocks
273 (let ((commit "ec050e79ad8489a6f8deb37d4c20ab10729c25c3") 354 (package
274 (revision "2")) 355 (name "i3blocks")
275 (package 356 (version "1.5")
276 (name "i3blocks") 357 (source (origin
277 (version (string-append "1.4-" revision "." 358 (method git-fetch)
278 (string-take commit 7))) 359 (uri (git-reference
279 (source (origin 360 (url "https://github.com/vivien/i3blocks.git")
280 (method git-fetch) 361 (commit version)))
281 (uri (git-reference 362 (sha256
282 (url "https://github.com/vivien/i3blocks.git") 363 (base32
283 (commit commit))) 364 "0v8mwnm8qzpv6xnqvrk43s4b9iyld4naqzbaxk4ldq1qkhai0wsv"))
284 (sha256 365 (file-name (git-file-name name version))))
285 (base32 366 (build-system gnu-build-system)
286 "1fx4230lmqa5rpzph68dwnpcjfaaqv5gfkradcr85hd1z8d1qp1b")) 367 (native-inputs
287 (file-name (git-file-name name version)))) 368 `(("autoconf" ,autoconf)
288 (build-system gnu-build-system) 369 ("automake" ,automake)
289 (arguments 370 ("pkg-config" ,pkg-config)))
290 `(#:make-flags (list "CC=gcc" (string-append "PREFIX=" %output)) 371 (home-page "https://github.com/vivien/i3blocks")
291 #:phases (modify-phases %standard-phases 372 (synopsis "Minimalist scheduler for status bar scripts")
292 (add-after 'install 'install-doc 373 (description "i3blocks executes your command lines and generates a
293 (lambda* (#:key outputs #:allow-other-keys)
294 (let* ((out (assoc-ref outputs "out"))
295 (man1 (string-append out "/share/man/man1")))
296 (install-file "docs/i3blocks.1" man1)
297 #t))))))
298 (native-inputs
299 `(("autoconf" ,autoconf)
300 ("automake" ,automake)
301 ("pkg-config" ,pkg-config)))
302 (home-page "https://github.com/vivien/i3blocks")
303 (synopsis "Minimalist scheduler for status bar scripts")
304 (description "i3blocks executes your command lines and generates a
305status line from their output. The generated line is meant to be displayed by 374status line from their output. The generated line is meant to be displayed by
306the i3 window manager through its i3bar component, as an alternative to 375the i3 window manager through its i3bar component, as an alternative to
307i3status.") 376i3status.")
308 (license license:gpl3+)))) 377 (license license:gpl3+)))
309 378
310(define-public perl-anyevent-i3 379(define-public perl-anyevent-i3
311 (package 380 (package
diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index 0487c24b680..c71285c7bd7 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -9,6 +9,7 @@
9;;; Copyright © 2017 ng0 <ng0@n0.is> 9;;; Copyright © 2017 ng0 <ng0@n0.is>
10;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> 10;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
11;;; Copyright © 2019 Pkill -9 <pkill9@runbox.com> 11;;; Copyright © 2019 Pkill -9 <pkill9@runbox.com>
12;;; Copyright © 2019 L p R n d n <guix@lprndn.info>
12;;; 13;;;
13;;; This file is part of GNU Guix. 14;;; This file is part of GNU Guix.
14;;; 15;;;
@@ -283,11 +284,14 @@ merging features essential for loading menus modified with menu editors.")
283 (inputs 284 (inputs
284 `(("dbus" ,dbus) 285 `(("dbus" ,dbus)
285 ("gdk-pixbuf" ,gdk-pixbuf) 286 ("gdk-pixbuf" ,gdk-pixbuf)
287 ("cairo" ,cairo) ;; Needed for pdf thumbnails (poppler-glibc.pc)
286 ("freetype" ,freetype) 288 ("freetype" ,freetype)
287 ("libjpeg" ,libjpeg) 289 ("libjpeg" ,libjpeg)
288 ("libgsf" ,libgsf) 290 ("libgsf" ,libgsf)
289 ("poppler" ,poppler) 291 ("poppler" ,poppler)
290 ("gstreamer" ,gstreamer))) 292 ;; FIXME Provide gstreamer and gstreamer-tag to get video thumbnails
293 ;; ("gstreamer" ,gstreamer)
294 ))
291 (home-page "https://www.xfce.org/") 295 (home-page "https://www.xfce.org/")
292 (synopsis "D-Bus service for applications to request thumbnails") 296 (synopsis "D-Bus service for applications to request thumbnails")
293 (description 297 (description
@@ -638,7 +642,7 @@ like appearance, display, keyboard and mouse settings.")
638(define-public thunar 642(define-public thunar
639 (package 643 (package
640 (name "thunar") 644 (name "thunar")
641 (version "1.8.7") 645 (version "1.8.9")
642 (source (origin 646 (source (origin
643 (method url-fetch) 647 (method url-fetch)
644 (uri (string-append "http://archive.xfce.org/src/xfce/" 648 (uri (string-append "http://archive.xfce.org/src/xfce/"
@@ -646,7 +650,7 @@ like appearance, display, keyboard and mouse settings.")
646 "Thunar-" version ".tar.bz2")) 650 "Thunar-" version ".tar.bz2"))
647 (sha256 651 (sha256
648 (base32 652 (base32
649 "0afkp528mwwa2m18m39mvw53qgaijyynrw9wwwiyxgjiczq3l0ry")))) 653 "1fah2d7v3a7fp28xa5wv896rap1iad9q9y04qchca09mq1x8wxbs"))))
650 (build-system gnu-build-system) 654 (build-system gnu-build-system)
651 (native-inputs 655 (native-inputs
652 `(("pkg-config" ,pkg-config) 656 `(("pkg-config" ,pkg-config)
@@ -670,7 +674,7 @@ fast.")
670(define-public thunar-volman 674(define-public thunar-volman
671 (package 675 (package
672 (name "thunar-volman") 676 (name "thunar-volman")
673 (version "0.9.3") 677 (version "0.9.5")
674 (source 678 (source
675 (origin 679 (origin
676 (method url-fetch) 680 (method url-fetch)
@@ -678,7 +682,7 @@ fast.")
678 (version-major+minor version) "/" 682 (version-major+minor version) "/"
679 "thunar-volman-" version ".tar.bz2")) 683 "thunar-volman-" version ".tar.bz2"))
680 (sha256 684 (sha256
681 (base32 "1sfmz40164rg77hclrkrgnbk8cb7f325qqi7lz2hh3wbvf8r0c19")))) 685 (base32 "0dqqkbhn43hhmhqyx1fnmawpvysdjzw6ln4ryf629wil6dlwd9vy"))))
682 (build-system gnu-build-system) 686 (build-system gnu-build-system)
683 (native-inputs 687 (native-inputs
684 `(("pkg-config" ,pkg-config) 688 `(("pkg-config" ,pkg-config)
@@ -907,7 +911,7 @@ inhibit interface which allows applications to prevent automatic sleep.")
907(define-public ristretto 911(define-public ristretto
908 (package 912 (package
909 (name "ristretto") 913 (name "ristretto")
910 (version "0.8.4") 914 (version "0.10.0")
911 (source (origin 915 (source (origin
912 (method url-fetch) 916 (method url-fetch)
913 (uri (string-append "http://archive.xfce.org/src/apps/ristretto/" 917 (uri (string-append "http://archive.xfce.org/src/apps/ristretto/"
@@ -915,14 +919,14 @@ inhibit interface which allows applications to prevent automatic sleep.")
915 "ristretto-" version ".tar.bz2")) 919 "ristretto-" version ".tar.bz2"))
916 (sha256 920 (sha256
917 (base32 921 (base32
918 "18nf01djwnbjc91bdlv3p0h6pwcq1kfnjgp6yaxhxv4kdi9f82rs")))) 922 "0sa75m1w6yvv4xvzrwqiif6vnqgi29hjrixrh87nxss58bbms8hn"))))
919 (build-system gnu-build-system) 923 (build-system gnu-build-system)
920 (native-inputs 924 (native-inputs
921 `(("intltool" ,intltool) 925 `(("intltool" ,intltool)
922 ("pkg-config" ,pkg-config))) 926 ("pkg-config" ,pkg-config)))
923 (inputs 927 (inputs
924 `(("desktop-file-utils" ,desktop-file-utils) 928 `(("desktop-file-utils" ,desktop-file-utils)
925 ("gtk+" ,gtk+-2) 929 ("gtk+" ,gtk+)
926 ("libexif" ,libexif) 930 ("libexif" ,libexif)
927 ("libxfce4ui" ,libxfce4ui) 931 ("libxfce4ui" ,libxfce4ui)
928 ("librsvg" ,librsvg) 932 ("librsvg" ,librsvg)
@@ -978,6 +982,14 @@ memory usage graphically, and it can display processes as a tree.")
978 (sha256 982 (sha256
979 (base32 983 (base32
980 "0qlhvnl2m33vfxqlbkic2nmfpwyd4mq230jzhs48cg78392amy9w")))) 984 "0qlhvnl2m33vfxqlbkic2nmfpwyd4mq230jzhs48cg78392amy9w"))))
985 (arguments
986 `(#:phases
987 (modify-phases %standard-phases
988 (add-after 'unpack 'fix-build-with-libical3
989 (lambda* _
990 (substitute* "src/ical-code.c" ;; .is_utc not available in libical3
991 ((".*\\.is_utc.*$") ""))
992 #t)))))
981 (build-system gnu-build-system) 993 (build-system gnu-build-system)
982 (native-inputs 994 (native-inputs
983 `(("intltool" ,intltool) 995 `(("intltool" ,intltool)
@@ -1068,7 +1080,7 @@ of data to either CD/DVD/BD.")
1068(define-public mousepad 1080(define-public mousepad
1069 (package 1081 (package
1070 (name "mousepad") 1082 (name "mousepad")
1071 (version "0.4.1") 1083 (version "0.4.2")
1072 (source (origin 1084 (source (origin
1073 (method url-fetch) 1085 (method url-fetch)
1074 (uri (string-append "http://archive.xfce.org/src/apps/mousepad/" 1086 (uri (string-append "http://archive.xfce.org/src/apps/mousepad/"
@@ -1076,11 +1088,10 @@ of data to either CD/DVD/BD.")
1076 version ".tar.bz2")) 1088 version ".tar.bz2"))
1077 (sha256 1089 (sha256
1078 (base32 1090 (base32
1079 "12si6fvhp68wz4scr339c23jxqq5ywn5nf4w55jld5lxjadkg9rr")))) 1091 "1myy7954r1a30dk7inwy7kwki7zvfbnnsc3a8swk72vzrbgjmh44"))))
1080 (build-system gnu-build-system) 1092 (build-system gnu-build-system)
1081 (arguments 1093 (arguments
1082 '(#:configure-flags '("--enable-gtk3" 1094 '(#:configure-flags '(;; Use the GSettings keyfile backend rather than
1083 ;; Use the GSettings keyfile backend rather than
1084 ;; DConf. 1095 ;; DConf.
1085 "--enable-keyfile-settings") 1096 "--enable-keyfile-settings")
1086 #:phases 1097 #:phases
@@ -1100,7 +1111,8 @@ of data to either CD/DVD/BD.")
1100 ("pkg-config" ,pkg-config))) 1111 ("pkg-config" ,pkg-config)))
1101 (inputs 1112 (inputs
1102 `(("gtk+" ,gtk+) 1113 `(("gtk+" ,gtk+)
1103 ("gtksourceview" ,gtksourceview-3))) 1114 ("gtksourceview" ,gtksourceview-3)
1115 ("xfconf" ,xfconf)))
1104 (home-page "https://git.xfce.org/apps/mousepad/") 1116 (home-page "https://git.xfce.org/apps/mousepad/")
1105 (synopsis "Simple text editor for Xfce") 1117 (synopsis "Simple text editor for Xfce")
1106 (description 1118 (description
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index dcb7278f0f6..25716ef152f 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -8,6 +8,7 @@
8;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> 8;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
9;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com> 9;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
10;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il> 10;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
11;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
11;;; Copyright © 2019 John Soo <jsoo1@asu.edu> 12;;; Copyright © 2019 John Soo <jsoo1@asu.edu>
12;;; 13;;;
13;;; This file is part of GNU Guix. 14;;; This file is part of GNU Guix.
@@ -41,9 +42,9 @@
41 #:use-module (gnu packages admin) 42 #:use-module (gnu packages admin)
42 #:use-module ((gnu packages linux) 43 #:use-module ((gnu packages linux)
43 #:select (alsa-utils crda eudev e2fsprogs fuse gpm kbd lvm2 rng-tools)) 44 #:select (alsa-utils crda eudev e2fsprogs fuse gpm kbd lvm2 rng-tools))
44 #:use-module ((gnu packages base)
45 #:select (canonical-package glibc glibc-utf8-locales))
46 #:use-module (gnu packages bash) 45 #:use-module (gnu packages bash)
46 #:use-module ((gnu packages base)
47 #:select (canonical-package coreutils glibc glibc-utf8-locales))
47 #:use-module (gnu packages package-management) 48 #:use-module (gnu packages package-management)
48 #:use-module ((gnu packages gnupg) #:select (guile-gcrypt)) 49 #:use-module ((gnu packages gnupg) #:select (guile-gcrypt))
49 #:use-module (gnu packages linux) 50 #:use-module (gnu packages linux)
@@ -2425,6 +2426,8 @@ to handle."
2425 2426
2426 (service special-files-service-type 2427 (service special-files-service-type
2427 `(("/bin/sh" ,(file-append (canonical-package bash) 2428 `(("/bin/sh" ,(file-append (canonical-package bash)
2428 "/bin/sh")))))) 2429 "/bin/sh"))
2430 ("/usr/bin/env" ,(file-append (canonical-package coreutils)
2431 "/bin/env"))))))
2429 2432
2430;;; base.scm ends here 2433;;; base.scm ends here
diff --git a/gnu/services/certbot.scm b/gnu/services/certbot.scm
index ae34ad17bb7..0d3be033838 100644
--- a/gnu/services/certbot.scm
+++ b/gnu/services/certbot.scm
@@ -99,6 +99,7 @@
99 "--manual" 99 "--manual"
100 (string-append "--preferred-challenges=" challenge) 100 (string-append "--preferred-challenges=" challenge)
101 "--cert-name" name 101 "--cert-name" name
102 "--manual-public-ip-logging-ok"
102 "-d" (string-join domains ",")) 103 "-d" (string-join domains ","))
103 (if rsa-key-size `("--rsa-key-size" ,rsa-key-size) '()) 104 (if rsa-key-size `("--rsa-key-size" ,rsa-key-size) '())
104 (if authentication-hook 105 (if authentication-hook
diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index 376b4ccc4e2..c775242f998 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -51,6 +51,7 @@
51 #:use-module (guix records) 51 #:use-module (guix records)
52 #:use-module (guix modules) 52 #:use-module (guix modules)
53 #:use-module (guix deprecation) 53 #:use-module (guix deprecation)
54 #:use-module (rnrs enums)
54 #:use-module (srfi srfi-1) 55 #:use-module (srfi srfi-1)
55 #:use-module (srfi srfi-9) 56 #:use-module (srfi srfi-9)
56 #:use-module (srfi srfi-26) 57 #:use-module (srfi srfi-26)
@@ -72,13 +73,22 @@
72 dhcpd-configuration-pid-file 73 dhcpd-configuration-pid-file
73 dhcpd-configuration-interfaces 74 dhcpd-configuration-interfaces
74 75
75 %ntp-servers
76
77 ntp-configuration 76 ntp-configuration
78 ntp-configuration? 77 ntp-configuration?
78 ntp-configuration-ntp
79 ntp-configuration-servers
80 ntp-allow-large-adjustment?
81
82 %ntp-servers
83 ntp-server
84 ntp-server-type
85 ntp-server-address
86 ntp-server-options
87
79 ntp-service 88 ntp-service
80 ntp-service-type 89 ntp-service-type
81 90
91 %openntpd-servers
82 openntpd-configuration 92 openntpd-configuration
83 openntpd-configuration? 93 openntpd-configuration?
84 openntpd-service-type 94 openntpd-service-type
@@ -292,30 +302,86 @@ Protocol (DHCP) client, on all the non-loopback network interfaces."
292 (list (service-extension shepherd-root-service-type dhcpd-shepherd-service) 302 (list (service-extension shepherd-root-service-type dhcpd-shepherd-service)
293 (service-extension activation-service-type dhcpd-activation))))) 303 (service-extension activation-service-type dhcpd-activation)))))
294 304
295(define %ntp-servers
296 ;; Default set of NTP servers. These URLs are managed by the NTP Pool project.
297 ;; Within Guix, Leo Famulari <leo@famulari.name> is the administrative contact
298 ;; for this NTP pool "zone".
299 '("0.guix.pool.ntp.org"
300 "1.guix.pool.ntp.org"
301 "2.guix.pool.ntp.org"
302 "3.guix.pool.ntp.org"))
303
304 305
305;;; 306;;;
306;;; NTP. 307;;; NTP.
307;;; 308;;;
308 309
309;; TODO: Export. 310(define ntp-server-types (make-enumeration
311 '(pool
312 server
313 peer
314 broadcast
315 manycastclient)))
316
317(define-record-type* <ntp-server>
318 ntp-server make-ntp-server
319 ntp-server?
320 ;; The type can be one of the symbols of the NTP-SERVER-TYPE? enumeration.
321 (type ntp-server-type
322 (default 'server))
323 (address ntp-server-address) ; a string
324 ;; The list of options can contain single option names or tuples in the form
325 ;; '(name value).
326 (options ntp-server-options
327 (default '())))
328
329(define (ntp-server->string ntp-server)
330 ;; Serialize the NTP server object as a string, ready to use in the NTP
331 ;; configuration file.
332 (define (flatten lst)
333 (reverse
334 (let loop ((x lst)
335 (res '()))
336 (if (list? x)
337 (fold loop res x)
338 (cons (format #f "~s" x) res)))))
339
340 (match ntp-server
341 (($ <ntp-server> type address options)
342 ;; XXX: It'd be neater if fields were validated at the syntax level (for
343 ;; static ones at least). Perhaps the Guix record type could support a
344 ;; predicate property on a field?
345 (unless (enum-set-member? type ntp-server-types)
346 (error "Invalid NTP server type" type))
347 (string-join (cons* (symbol->string type)
348 address
349 (flatten options))))))
350
351(define %ntp-servers
352 ;; Default set of NTP servers. These URLs are managed by the NTP Pool project.
353 ;; Within Guix, Leo Famulari <leo@famulari.name> is the administrative contact
354 ;; for this NTP pool "zone".
355 (list
356 (ntp-server
357 (type 'pool)
358 (address "0.guix.pool.ntp.org")
359 (options '("iburst"))))) ;as recommended in the ntpd manual
360
310(define-record-type* <ntp-configuration> 361(define-record-type* <ntp-configuration>
311 ntp-configuration make-ntp-configuration 362 ntp-configuration make-ntp-configuration
312 ntp-configuration? 363 ntp-configuration?
313 (ntp ntp-configuration-ntp 364 (ntp ntp-configuration-ntp
314 (default ntp)) 365 (default ntp))
315 (servers ntp-configuration-servers 366 (servers %ntp-configuration-servers ;list of <ntp-server> objects
316 (default %ntp-servers)) 367 (default %ntp-servers))
317 (allow-large-adjustment? ntp-allow-large-adjustment? 368 (allow-large-adjustment? ntp-allow-large-adjustment?
318 (default #f))) 369 (default #t))) ;as recommended in the ntpd manual
370
371(define (ntp-configuration-servers ntp-configuration)
372 ;; A wrapper to support the deprecated form of this field.
373 (let ((ntp-servers (%ntp-configuration-servers ntp-configuration)))
374 (match ntp-servers
375 (((? string?) (? string?) ...)
376 (format (current-error-port) "warning: Defining NTP servers as strings is \
377deprecated. Please use <ntp-server> records instead.\n")
378 (map (lambda (addr)
379 (ntp-server
380 (type 'server)
381 (address addr)
382 (options '()))) ntp-servers))
383 ((($ <ntp-server>) ($ <ntp-server>) ...)
384 ntp-servers))))
319 385
320(define ntp-shepherd-service 386(define ntp-shepherd-service
321 (match-lambda 387 (match-lambda
@@ -324,18 +390,21 @@ Protocol (DHCP) client, on all the non-loopback network interfaces."
324 ;; TODO: Add authentication support. 390 ;; TODO: Add authentication support.
325 (define config 391 (define config
326 (string-append "driftfile /var/run/ntpd/ntp.drift\n" 392 (string-append "driftfile /var/run/ntpd/ntp.drift\n"
327 (string-join (map (cut string-append "server " <>) 393 (string-join (map ntp-server->string servers)
328 servers)
329 "\n") 394 "\n")
330 " 395 "
331# Disable status queries as a workaround for CVE-2013-5211: 396# Disable status queries as a workaround for CVE-2013-5211:
332# <http://support.ntp.org/bin/view/Main/SecurityNotice#DRDoS_Amplification_Attack_using>. 397# <http://support.ntp.org/bin/view/Main/SecurityNotice#DRDoS_Amplification_Attack_using>.
333restrict default kod nomodify notrap nopeer noquery 398restrict default kod nomodify notrap nopeer noquery limited
334restrict -6 default kod nomodify notrap nopeer noquery 399restrict -6 default kod nomodify notrap nopeer noquery limited
335 400
336# Yet, allow use of the local 'ntpq'. 401# Yet, allow use of the local 'ntpq'.
337restrict 127.0.0.1 402restrict 127.0.0.1
338restrict -6 ::1\n")) 403restrict -6 ::1
404
405# This is required to use servers from a pool directive when using the 'nopeer'
406# option by default, as documented in the 'ntp.conf' manual.
407restrict source notrap nomodify noquery\n"))
339 408
340 (define ntpd.conf 409 (define ntpd.conf
341 (plain-file "ntpd.conf" config)) 410 (plain-file "ntpd.conf" config))
@@ -409,6 +478,9 @@ make an initial adjustment of more than 1,000 seconds."
409;;; OpenNTPD. 478;;; OpenNTPD.
410;;; 479;;;
411 480
481(define %openntpd-servers
482 (map ntp-server-address %ntp-servers))
483
412(define-record-type* <openntpd-configuration> 484(define-record-type* <openntpd-configuration>
413 openntpd-configuration make-openntpd-configuration 485 openntpd-configuration make-openntpd-configuration
414 openntpd-configuration? 486 openntpd-configuration?
@@ -422,9 +494,9 @@ make an initial adjustment of more than 1,000 seconds."
422 (sensor openntpd-sensor 494 (sensor openntpd-sensor
423 (default '())) 495 (default '()))
424 (server openntpd-server 496 (server openntpd-server
425 (default %ntp-servers))
426 (servers openntpd-servers
427 (default '())) 497 (default '()))
498 (servers openntpd-servers
499 (default %openntpd-servers))
428 (constraint-from openntpd-constraint-from 500 (constraint-from openntpd-constraint-from
429 (default '())) 501 (default '()))
430 (constraints-from openntpd-constraints-from 502 (constraints-from openntpd-constraints-from
@@ -432,45 +504,58 @@ make an initial adjustment of more than 1,000 seconds."
432 (allow-large-adjustment? openntpd-allow-large-adjustment? 504 (allow-large-adjustment? openntpd-allow-large-adjustment?
433 (default #f))) ; upstream default 505 (default #f))) ; upstream default
434 506
435(define (openntpd-shepherd-service config) 507(define (openntpd-configuration->string config)
508
509 (define (quote-field? name)
510 (member name '("constraints from")))
511
436 (match-record config <openntpd-configuration> 512 (match-record config <openntpd-configuration>
437 (openntpd listen-on query-from sensor server servers constraint-from 513 (listen-on query-from sensor server servers constraint-from
438 constraints-from allow-large-adjustment?) 514 constraints-from)
439 (let () 515 (string-append
440 (define config 516 (string-join
441 (string-join 517 (concatenate
442 (filter-map 518 (filter-map (lambda (field values)
443 (lambda (field value) 519 (match values
444 (string-join 520 (() #f) ;discard entry with filter-map
445 (map (cut string-append field <> "\n") 521 ((val ...) ;validate value type
446 value))) 522 (map (lambda (value)
447 '("listen on " "query from " "sensor " "server " "servers " 523 (if (quote-field? field)
448 "constraint from ") 524 (format #f "~a \"~a\"" field value)
449 (list listen-on query-from sensor server servers constraint-from)) 525 (format #f "~a ~a" field value)))
450 ;; The 'constraints from' field needs to be enclosed in double quotes. 526 values))))
451 (string-join 527 ;; The entry names.
452 (map (cut string-append "constraints from \"" <> "\"\n") 528 '("listen on" "query from" "sensor" "server" "servers"
453 constraints-from)))) 529 "constraint from" "constraints from")
454 530 ;; The corresponding entry values.
455 (define ntpd.conf 531 (list listen-on query-from sensor server servers
456 (plain-file "ntpd.conf" config)) 532 constraint-from constraints-from)))
457 533 "\n")
458 (list (shepherd-service 534 "\n"))) ;add a trailing newline
459 (provision '(ntpd)) 535
460 (documentation "Run the Network Time Protocol (NTP) daemon.") 536(define (openntpd-shepherd-service config)
461 (requirement '(user-processes networking)) 537 (let ((openntpd (openntpd-configuration-openntpd config))
462 (start #~(make-forkexec-constructor 538 (allow-large-adjustment? (openntpd-allow-large-adjustment? config)))
463 (list (string-append #$openntpd "/sbin/ntpd") 539
464 "-f" #$ntpd.conf 540 (define ntpd.conf
465 "-d" ;; don't daemonize 541 (plain-file "ntpd.conf" (openntpd-configuration->string config)))
466 #$@(if allow-large-adjustment? 542
467 '("-s") 543 (list (shepherd-service
468 '())) 544 (provision '(ntpd))
469 ;; When ntpd is daemonized it repeatedly tries to respawn 545 (documentation "Run the Network Time Protocol (NTP) daemon.")
470 ;; while running, leading shepherd to disable it. To 546 (requirement '(user-processes networking))
471 ;; prevent spamming stderr, redirect output to logfile. 547 (start #~(make-forkexec-constructor
472 #:log-file "/var/log/ntpd")) 548 (list (string-append #$openntpd "/sbin/ntpd")
473 (stop #~(make-kill-destructor))))))) 549 "-f" #$ntpd.conf
550 "-d" ;; don't daemonize
551 #$@(if allow-large-adjustment?
552 '("-s")
553 '()))
554 ;; When ntpd is daemonized it repeatedly tries to respawn
555 ;; while running, leading shepherd to disable it. To
556 ;; prevent spamming stderr, redirect output to logfile.
557 #:log-file "/var/log/ntpd"))
558 (stop #~(make-kill-destructor))))))
474 559
475(define (openntpd-service-activation config) 560(define (openntpd-service-activation config)
476 "Return the activation gexp for CONFIG." 561 "Return the activation gexp for CONFIG."
diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
index 705ed84d067..3eecd2c0857 100644
--- a/gnu/services/virtualization.scm
+++ b/gnu/services/virtualization.scm
@@ -432,7 +432,10 @@ potential infinite waits blocking libvirt."))
432 (provision '(libvirtd)) 432 (provision '(libvirtd))
433 (start #~(make-forkexec-constructor 433 (start #~(make-forkexec-constructor
434 (list (string-append #$libvirt "/sbin/libvirtd") 434 (list (string-append #$libvirt "/sbin/libvirtd")
435 "-f" #$config-file))) 435 "-f" #$config-file)
436 #:environment-variables
437 ;; For finding qemu binaries.
438 '("PATH=/run/current-system/profile/bin")))
436 (stop #~(make-kill-destructor)))))) 439 (stop #~(make-kill-destructor))))))
437 440
438(define libvirt-service-type 441(define libvirt-service-type
@@ -442,8 +445,10 @@ potential infinite waits blocking libvirt."))
442 (service-extension polkit-service-type 445 (service-extension polkit-service-type
443 (compose list libvirt-configuration-libvirt)) 446 (compose list libvirt-configuration-libvirt))
444 (service-extension profile-service-type 447 (service-extension profile-service-type
445 (compose list 448 (lambda (config)
446 libvirt-configuration-libvirt)) 449 (list
450 (libvirt-configuration-libvirt config)
451 qemu)))
447 (service-extension activation-service-type 452 (service-extension activation-service-type
448 %libvirt-activation) 453 %libvirt-activation)
449 (service-extension shepherd-root-service-type 454 (service-extension shepherd-root-service-type
diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm
index d11b36f25da..6cf6ccc53eb 100644
--- a/gnu/system/file-systems.scm
+++ b/gnu/system/file-systems.scm
@@ -508,7 +508,7 @@ a bind mount."
508 ;; symlink to a file in a tmpfs which, for an unknown reason, 508 ;; symlink to a file in a tmpfs which, for an unknown reason,
509 ;; cannot be bind mounted read-only within the container. 509 ;; cannot be bind mounted read-only within the container.
510 (writable? (string=? file "/etc/resolv.conf")))) 510 (writable? (string=? file "/etc/resolv.conf"))))
511 %network-configuration-files)) 511 (cons "/var/run/nscd" %network-configuration-files)))
512 512
513(define (file-system-type-predicate type) 513(define (file-system-type-predicate type)
514 "Return a predicate that, when passed a file system, returns #t if that file 514 "Return a predicate that, when passed a file system, returns #t if that file
diff --git a/gnu/system/linux-container.scm b/gnu/system/linux-container.scm
index 6273cee3d30..c6124cd223b 100644
--- a/gnu/system/linux-container.scm
+++ b/gnu/system/linux-container.scm
@@ -30,6 +30,7 @@
30 #:use-module (gnu build linux-container) 30 #:use-module (gnu build linux-container)
31 #:use-module (gnu services) 31 #:use-module (gnu services)
32 #:use-module (gnu services base) 32 #:use-module (gnu services base)
33 #:use-module (gnu services networking)
33 #:use-module (gnu services shepherd) 34 #:use-module (gnu services shepherd)
34 #:use-module (gnu system) 35 #:use-module (gnu system)
35 #:use-module (gnu system file-systems) 36 #:use-module (gnu system file-systems)
@@ -109,7 +110,11 @@ containerized OS. EXTRA-FILE-SYSTEMS is a list of file systems to add to OS."
109 ;; Remove nscd service if network is shared with the host. 110 ;; Remove nscd service if network is shared with the host.
110 (if shared-network? 111 (if shared-network?
111 (list nscd-service-type 112 (list nscd-service-type
112 static-networking-service-type) 113 static-networking-service-type
114 dhcp-client-service-type
115 network-manager-service-type
116 connman-service-type
117 wicd-service-type)
113 (list)))) 118 (list))))
114 119
115 (operating-system 120 (operating-system
@@ -147,13 +152,6 @@ containerized OS. EXTRA-FILE-SYSTEMS is a list of file systems to add to OS."
147 "Return a derivation of a script that runs OS as a Linux container. 152 "Return a derivation of a script that runs OS as a Linux container.
148MAPPINGS is a list of <file-system> objects that specify the files/directories 153MAPPINGS is a list of <file-system> objects that specify the files/directories
149that will be shared with the host system." 154that will be shared with the host system."
150 (define nscd-run-directory "/var/run/nscd")
151
152 (define nscd-mapping
153 (file-system-mapping
154 (source nscd-run-directory)
155 (target nscd-run-directory)))
156
157 (define (mountable-file-system? file-system) 155 (define (mountable-file-system? file-system)
158 ;; Return #t if FILE-SYSTEM should be mounted in the container. 156 ;; Return #t if FILE-SYSTEM should be mounted in the container.
159 (and (not (string=? "/" (file-system-mount-point file-system))) 157 (and (not (string=? "/" (file-system-mount-point file-system)))
@@ -168,28 +166,42 @@ that will be shared with the host system."
168 os (cons %store-mapping mappings) 166 os (cons %store-mapping mappings)
169 #:shared-network? shared-network? 167 #:shared-network? shared-network?
170 #:extra-file-systems %container-file-systems)) 168 #:extra-file-systems %container-file-systems))
171 (nscd-os (containerized-operating-system 169 (specs (os-file-system-specs os)))
172 os (cons* nscd-mapping %store-mapping mappings)
173 #:shared-network? shared-network?
174 #:extra-file-systems %container-file-systems))
175 (specs (os-file-system-specs os))
176 (nscd-specs (os-file-system-specs nscd-os)))
177 170
178 (define script 171 (define script
179 (with-imported-modules (source-module-closure 172 (with-imported-modules (source-module-closure
180 '((guix build utils) 173 '((guix build utils)
181 (gnu build linux-container))) 174 (gnu build linux-container)
175 (guix i18n)
176 (guix diagnostics)))
182 #~(begin 177 #~(begin
183 (use-modules (gnu build linux-container) 178 (use-modules (gnu build linux-container)
184 (gnu system file-systems) ;spec->file-system 179 (gnu system file-systems) ;spec->file-system
185 (guix build utils)) 180 (guix build utils)
186 181 (guix i18n)
187 (call-with-container 182 (guix diagnostics)
188 (map spec->file-system 183 (srfi srfi-1))
189 (if (and #$shared-network? 184
190 (file-exists? #$nscd-run-directory)) 185 (define file-systems
191 '#$nscd-specs 186 (filter-map (lambda (spec)
192 '#$specs)) 187 (let* ((fs (spec->file-system spec))
188 (flags (file-system-flags fs)))
189 (and (or (not (memq 'bind-mount flags))
190 (file-exists? (file-system-device fs)))
191 fs)))
192 '#$specs))
193
194 (define (explain pid)
195 ;; XXX: We can't quite call 'bindtextdomain' so there's actually
196 ;; no i18n.
197 (info (G_ "system container is running as PID ~a~%") pid)
198 ;; XXX: Should we recommend 'guix container exec'? It's more
199 ;; verbose and doesn't bring much.
200 (info (G_ "Run 'sudo nsenter -a -t ~a' to get a shell into it.~%")
201 pid)
202 (newline (guix-warning-port)))
203
204 (call-with-container file-systems
193 (lambda () 205 (lambda ()
194 (setenv "HOME" "/root") 206 (setenv "HOME" "/root")
195 (setenv "TMPDIR" "/tmp") 207 (setenv "TMPDIR" "/tmp")
@@ -203,7 +215,8 @@ that will be shared with the host system."
203 #:host-uids 65536 215 #:host-uids 65536
204 #:namespaces (if #$shared-network? 216 #:namespaces (if #$shared-network?
205 (delq 'net %namespaces) 217 (delq 'net %namespaces)
206 %namespaces))))) 218 %namespaces)
219 #:process-spawned-hook explain))))
207 220
208 (gexp->script "run-container" script))) 221 (gexp->script "run-container" script)))
209 222
diff --git a/guix/build/cargo-build-system.scm b/guix/build/cargo-build-system.scm
index f173b64c83e..4be5443083e 100644
--- a/guix/build/cargo-build-system.scm
+++ b/guix/build/cargo-build-system.scm
@@ -99,7 +99,7 @@ Cargo.toml file present at its root."
99 (for-each 99 (for-each
100 (match-lambda 100 (match-lambda
101 ((name . path) 101 ((name . path)
102 (let* ((basepath (basename path)) 102 (let* ((basepath (strip-store-file-name path))
103 (crate-dir (string-append vendor-dir "/" basepath))) 103 (crate-dir (string-append vendor-dir "/" basepath)))
104 (and (crate-src? path) 104 (and (crate-src? path)
105 ;; Gracefully handle duplicate inputs 105 ;; Gracefully handle duplicate inputs
@@ -168,9 +168,6 @@ directory = '" port)
168 (apply invoke `("cargo" "test" ,@cargo-test-flags)) 168 (apply invoke `("cargo" "test" ,@cargo-test-flags))
169 #t)) 169 #t))
170 170
171(define (touch file-name)
172 (call-with-output-file file-name (const #t)))
173
174(define* (install #:key inputs outputs skip-build? #:allow-other-keys) 171(define* (install #:key inputs outputs skip-build? #:allow-other-keys)
175 "Install a given Cargo package." 172 "Install a given Cargo package."
176 (let* ((out (assoc-ref outputs "out"))) 173 (let* ((out (assoc-ref outputs "out")))
diff --git a/guix/docker.scm b/guix/docker.scm
index 757bdeb4585..97ac6d982b4 100644
--- a/guix/docker.scm
+++ b/guix/docker.scm
@@ -57,22 +57,36 @@
57 (created . ,time) 57 (created . ,time)
58 (container_config . #nil))) 58 (container_config . #nil)))
59 59
60(define (generate-tag path) 60(define (canonicalize-repository-name name)
61 "Generate an image tag for the given PATH." 61 "\"Repository\" names are restricted to roughtl [a-z0-9_.-].
62 (match (string-split (basename path) #\-) 62Return a version of TAG that follows these rules."
63 ((hash name . rest) (string-append name ":" hash)))) 63 (define ascii-letters
64 (string->char-set "abcdefghijklmnopqrstuvwxyz"))
64 65
65(define (manifest path id) 66 (define separators
67 (string->char-set "_-."))
68
69 (define repo-char-set
70 (char-set-union char-set:digit ascii-letters separators))
71
72 (string-map (lambda (chr)
73 (if (char-set-contains? repo-char-set chr)
74 chr
75 #\.))
76 (string-trim (string-downcase name) separators)))
77
78(define* (manifest path id #:optional (tag "guix"))
66 "Generate a simple image manifest." 79 "Generate a simple image manifest."
67 `#(((Config . "config.json") 80 (let ((tag (canonicalize-repository-name tag)))
68 (RepoTags . #(,(generate-tag path))) 81 `#(((Config . "config.json")
69 (Layers . #(,(string-append id "/layer.tar")))))) 82 (RepoTags . #(,(string-append tag ":latest")))
83 (Layers . #(,(string-append id "/layer.tar")))))))
70 84
71;; According to the specifications this is required for backwards 85;; According to the specifications this is required for backwards
72;; compatibility. It duplicates information provided by the manifest. 86;; compatibility. It duplicates information provided by the manifest.
73(define (repositories path id) 87(define* (repositories path id #:optional (tag "guix"))
74 "Generate a repositories file referencing PATH and the image ID." 88 "Generate a repositories file referencing PATH and the image ID."
75 `((,(generate-tag path) . ((latest . ,id))))) 89 `((,(canonicalize-repository-name tag) . ((latest . ,id)))))
76 90
77;; See https://github.com/opencontainers/image-spec/blob/master/config.md 91;; See https://github.com/opencontainers/image-spec/blob/master/config.md
78(define* (config layer time arch #:key entry-point (environment '())) 92(define* (config layer time arch #:key entry-point (environment '()))
@@ -112,6 +126,7 @@
112 126
113(define* (build-docker-image image paths prefix 127(define* (build-docker-image image paths prefix
114 #:key 128 #:key
129 (repository "guix")
115 (extra-files '()) 130 (extra-files '())
116 (transformations '()) 131 (transformations '())
117 (system (utsname:machine (uname))) 132 (system (utsname:machine (uname)))
@@ -121,7 +136,9 @@
121 compressor 136 compressor
122 (creation-time (current-time time-utc))) 137 (creation-time (current-time time-utc)))
123 "Write to IMAGE a Docker image archive containing the given PATHS. PREFIX 138 "Write to IMAGE a Docker image archive containing the given PATHS. PREFIX
124must be a store path that is a prefix of any store paths in PATHS. 139must be a store path that is a prefix of any store paths in PATHS. REPOSITORY
140is a descriptive name that will show up in \"REPOSITORY\" column of the output
141of \"docker images\".
125 142
126When DATABASE is true, copy it to /var/guix/db in the image and create 143When DATABASE is true, copy it to /var/guix/db in the image and create
127/var/guix/gcroots and friends. 144/var/guix/gcroots and friends.
@@ -243,10 +260,10 @@ SRFI-19 time-utc object, as the creation time in metadata."
243 #:entry-point entry-point)))) 260 #:entry-point entry-point))))
244 (with-output-to-file "manifest.json" 261 (with-output-to-file "manifest.json"
245 (lambda () 262 (lambda ()
246 (scm->json (manifest prefix id)))) 263 (scm->json (manifest prefix id repository))))
247 (with-output-to-file "repositories" 264 (with-output-to-file "repositories"
248 (lambda () 265 (lambda ()
249 (scm->json (repositories prefix id))))) 266 (scm->json (repositories prefix id repository)))))
250 267
251 (apply invoke "tar" "-cf" image "-C" directory 268 (apply invoke "tar" "-cf" image "-C" directory
252 `(,@%tar-determinism-options 269 `(,@%tar-determinism-options
diff --git a/guix/gnu-maintenance.scm b/guix/gnu-maintenance.scm
index d63d44f6296..ef067704ad9 100644
--- a/guix/gnu-maintenance.scm
+++ b/guix/gnu-maintenance.scm
@@ -62,7 +62,6 @@
62 62
63 %gnu-updater 63 %gnu-updater
64 %gnu-ftp-updater 64 %gnu-ftp-updater
65 %kde-updater
66 %xorg-updater 65 %xorg-updater
67 %kernel.org-updater)) 66 %kernel.org-updater))
68 67
@@ -230,12 +229,6 @@ network to check in GNU's database."
230 (or (assoc-ref (package-properties package) 'ftp-directory) 229 (or (assoc-ref (package-properties package) 'ftp-directory)
231 (string-append "/gnu/" name))))) 230 (string-append "/gnu/" name)))))
232 231
233(define (sans-extension tarball)
234 "Return TARBALL without its .tar.* or .zip extension."
235 (let ((end (or (string-contains tarball ".tar")
236 (string-contains tarball ".zip"))))
237 (substring tarball 0 end)))
238
239(define %tarball-rx 232(define %tarball-rx
240 ;; The .zip extensions is notably used for freefont-ttf. 233 ;; The .zip extensions is notably used for freefont-ttf.
241 ;; The "-src" pattern is for "TeXmacs-1.0.7.9-src.tar.gz". 234 ;; The "-src" pattern is for "TeXmacs-1.0.7.9-src.tar.gz".
@@ -261,14 +254,15 @@ true."
261 (string-append project 254 (string-append project
262 "-src"))))))) 255 "-src")))))))
263 (not (regexp-exec %alpha-tarball-rx file)) 256 (not (regexp-exec %alpha-tarball-rx file))
264 (let ((s (sans-extension file))) 257 (let ((s (tarball-sans-extension file)))
265 (regexp-exec %package-name-rx s)))) 258 (regexp-exec %package-name-rx s))))
266 259
267(define (tarball->version tarball) 260(define (tarball->version tarball)
268 "Return the version TARBALL corresponds to. TARBALL is a file name like 261 "Return the version TARBALL corresponds to. TARBALL is a file name like
269\"coreutils-8.23.tar.xz\"." 262\"coreutils-8.23.tar.xz\"."
270 (let-values (((name version) 263 (let-values (((name version)
271 (gnu-package-name->name+version (sans-extension tarball)))) 264 (gnu-package-name->name+version
265 (tarball-sans-extension tarball))))
272 version)) 266 version))
273 267
274(define* (releases project 268(define* (releases project
@@ -492,8 +486,9 @@ return the corresponding signature URL, or #f it signatures are unavailable."
492 (and (string=? url (basename url)) ;relative reference? 486 (and (string=? url (basename url)) ;relative reference?
493 (release-file? package url) 487 (release-file? package url)
494 (let-values (((name version) 488 (let-values (((name version)
495 (package-name->name+version (sans-extension url) 489 (package-name->name+version
496 #\-))) 490 (tarball-sans-extension url)
491 #\-)))
497 (upstream-source 492 (upstream-source
498 (package name) 493 (package name)
499 (version version) 494 (version version)
@@ -565,14 +560,16 @@ list available from %GNU-FILE-LIST-URI over HTTP(S)."
565 (release-file? name (basename file)))) 560 (release-file? name (basename file))))
566 files))) 561 files)))
567 (match (sort relevant (lambda (file1 file2) 562 (match (sort relevant (lambda (file1 file2)
568 (version>? (sans-extension (basename file1)) 563 (version>? (tarball-sans-extension
569 (sans-extension (basename file2))))) 564 (basename file1))
565 (tarball-sans-extension
566 (basename file2)))))
570 ((and tarballs (reference _ ...)) 567 ((and tarballs (reference _ ...))
571 (let* ((version (tarball->version reference)) 568 (let* ((version (tarball->version reference))
572 (tarballs (filter (lambda (file) 569 (tarballs (filter (lambda (file)
573 (string=? (sans-extension 570 (string=? (tarball-sans-extension
574 (basename file)) 571 (basename file))
575 (sans-extension 572 (tarball-sans-extension
576 (basename reference)))) 573 (basename reference))))
577 tarballs))) 574 tarballs)))
578 (upstream-source 575 (upstream-source
@@ -615,16 +612,6 @@ releases are on gnu.org."
615(define gnu-hosted? 612(define gnu-hosted?
616 (url-prefix-predicate "mirror://gnu/")) 613 (url-prefix-predicate "mirror://gnu/"))
617 614
618(define (latest-kde-release package)
619 "Return the latest release of PACKAGE, the name of an KDE.org package."
620 (let ((uri (string->uri (origin-uri (package-source package)))))
621 (false-if-ftp-error
622 (latest-ftp-release
623 (package-upstream-name package)
624 #:server "ftp.mirrorservice.org"
625 #:directory (string-append "/sites/ftp.kde.org/pub/kde/"
626 (dirname (dirname (uri-path uri))))))))
627
628(define (latest-xorg-release package) 615(define (latest-xorg-release package)
629 "Return the latest release of PACKAGE, the name of an X.org package." 616 "Return the latest release of PACKAGE, the name of an X.org package."
630 (let ((uri (string->uri (origin-uri (package-source package))))) 617 (let ((uri (string->uri (origin-uri (package-source package)))))
@@ -672,13 +659,6 @@ releases are on gnu.org."
672 (pure-gnu-package? package)))) 659 (pure-gnu-package? package))))
673 (latest latest-release*))) 660 (latest latest-release*)))
674 661
675(define %kde-updater
676 (upstream-updater
677 (name 'kde)
678 (description "Updater for KDE packages")
679 (pred (url-prefix-predicate "mirror://kde/"))
680 (latest latest-kde-release)))
681
682(define %xorg-updater 662(define %xorg-updater
683 (upstream-updater 663 (upstream-updater
684 (name 'xorg) 664 (name 'xorg)
diff --git a/guix/import/cran.scm b/guix/import/cran.scm
index 35caa3e463e..e47aff2b12b 100644
--- a/guix/import/cran.scm
+++ b/guix/import/cran.scm
@@ -49,6 +49,7 @@
49 cran-recursive-import 49 cran-recursive-import
50 %cran-updater 50 %cran-updater
51 %bioconductor-updater 51 %bioconductor-updater
52 %bioconductor-version
52 53
53 cran-package? 54 cran-package?
54 bioconductor-package? 55 bioconductor-package?
diff --git a/guix/import/crate.scm b/guix/import/crate.scm
index f6057dbf8bb..fd1974eae88 100644
--- a/guix/import/crate.scm
+++ b/guix/import/crate.scm
@@ -1,6 +1,7 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2016 David Craven <david@craven.ch> 2;;; Copyright © 2016 David Craven <david@craven.ch>
3;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org> 3;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
4;;; Copyright © 2019 Martin Becze <mjbecze@riseup.net>
4;;; 5;;;
5;;; This file is part of GNU Guix. 6;;; This file is part of GNU Guix.
6;;; 7;;;
@@ -181,9 +182,11 @@ and LICENSE."
181 ;; This regexp matches that. 182 ;; This regexp matches that.
182 (make-regexp "^(.*) OR (.*)$")) 183 (make-regexp "^(.*) OR (.*)$"))
183 184
184(define (crate->guix-package crate-name) 185(define* (crate->guix-package crate-name #:optional version)
185 "Fetch the metadata for CRATE-NAME from crates.io, and return the 186 "Fetch the metadata for CRATE-NAME from crates.io, and return the
186`package' s-expression corresponding to that package, or #f on failure." 187`package' s-expression corresponding to that package, or #f on failure.
188When VERSION is specified, attempt to fetch that version; otherwise fetch the
189latest version of CRATE-NAME."
187 (define (string->license string) 190 (define (string->license string)
188 (match (regexp-exec %dual-license-rx string) 191 (match (regexp-exec %dual-license-rx string)
189 (#f (list (spdx-string->license string))) 192 (#f (list (spdx-string->license string)))
@@ -196,12 +199,18 @@ and LICENSE."
196 (define crate 199 (define crate
197 (lookup-crate crate-name)) 200 (lookup-crate crate-name))
198 201
199 (and crate 202 (define version-number
200 (let* ((version (find (lambda (version) 203 (or version
201 (string=? (crate-version-number version) 204 (crate-latest-version crate)))
202 (crate-latest-version crate))) 205
203 (crate-versions crate))) 206 (define version*
204 (dependencies (crate-version-dependencies version)) 207 (find (lambda (version)
208 (string=? (crate-version-number version)
209 version-number))
210 (crate-versions crate)))
211
212 (and crate version*
213 (let* ((dependencies (crate-version-dependencies version*))
205 (dep-crates (filter normal-dependency? dependencies)) 214 (dep-crates (filter normal-dependency? dependencies))
206 (dev-dep-crates (remove normal-dependency? dependencies)) 215 (dev-dep-crates (remove normal-dependency? dependencies))
207 (cargo-inputs (sort (map crate-dependency-id dep-crates) 216 (cargo-inputs (sort (map crate-dependency-id dep-crates)
@@ -210,14 +219,14 @@ and LICENSE."
210 (sort (map crate-dependency-id dev-dep-crates) 219 (sort (map crate-dependency-id dev-dep-crates)
211 string-ci<?))) 220 string-ci<?)))
212 (make-crate-sexp #:name crate-name 221 (make-crate-sexp #:name crate-name
213 #:version (crate-version-number version) 222 #:version (crate-version-number version*)
214 #:cargo-inputs cargo-inputs 223 #:cargo-inputs cargo-inputs
215 #:cargo-development-inputs cargo-development-inputs 224 #:cargo-development-inputs cargo-development-inputs
216 #:home-page (or (crate-home-page crate) 225 #:home-page (or (crate-home-page crate)
217 (crate-repository crate)) 226 (crate-repository crate))
218 #:synopsis (crate-description crate) 227 #:synopsis (crate-description crate)
219 #:description (crate-description crate) 228 #:description (crate-description crate)
220 #:license (and=> (crate-version-license version) 229 #:license (and=> (crate-version-license version*)
221 string->license))))) 230 string->license)))))
222 231
223(define (guix-package->crate-name package) 232(define (guix-package->crate-name package)
diff --git a/guix/import/github.scm b/guix/import/github.scm
index 55e1f72a422..55ea00a1116 100644
--- a/guix/import/github.scm
+++ b/guix/import/github.scm
@@ -161,7 +161,7 @@ empty list."
161 url)) 161 url))
162 162
163 (match (json-fetch (decorate release-url) #:headers headers) 163 (match (json-fetch (decorate release-url) #:headers headers)
164 (() 164 (#()
165 ;; We got the empty list, presumably because the user didn't use GitHub's 165 ;; We got the empty list, presumably because the user didn't use GitHub's
166 ;; "release" mechanism, but hopefully they did use Git tags. 166 ;; "release" mechanism, but hopefully they did use Git tags.
167 (json-fetch (decorate tag-url) #:headers headers)) 167 (json-fetch (decorate tag-url) #:headers headers))
diff --git a/guix/import/kde.scm b/guix/import/kde.scm
new file mode 100644
index 00000000000..6873418d628
--- /dev/null
+++ b/guix/import/kde.scm
@@ -0,0 +1,190 @@
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2016 David Craven <david@craven.ch>
3;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
4;;; Copyright © 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
5;;;
6;;; This file is part of GNU Guix.
7;;;
8;;; GNU Guix is free software; you can redistribute it and/or modify it
9;;; under the terms of the GNU General Public License as published by
10;;; the Free Software Foundation; either version 3 of the License, or (at
11;;; your option) any later version.
12;;;
13;;; GNU Guix is distributed in the hope that it will be useful, but
14;;; WITHOUT ANY WARRANTY; without even the implied warranty of
15;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16;;; GNU General Public License for more details.
17;;;
18;;; You should have received a copy of the GNU General Public License
19;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
20
21(define-module (guix import kde)
22 #:use-module (guix http-client)
23 #:use-module (guix memoization)
24 #:use-module (guix gnu-maintenance)
25 #:use-module (guix packages)
26 #:use-module (guix upstream)
27 #:use-module (guix utils)
28 #:use-module (ice-9 match)
29 #:use-module (ice-9 rdelim)
30 #:use-module (ice-9 regex)
31 #:use-module (srfi srfi-11)
32 #:use-module (web uri)
33
34 #:export (%kde-updater))
35
36;;; Commentary:
37;;;
38;;; This package provides not an actual importer but simply an updater for
39;;; KDE packages. It grabs available files from the 'ls-lR.bz2' file
40;;; available on download.kde.org.
41;;;
42;;; Code:
43
44(define (tarball->version tarball)
45 "Return the version TARBALL corresponds to. TARBALL is a file name like
46\"coreutils-8.23.tar.xz\"."
47 (let-values (((name version)
48 (gnu-package-name->name+version
49 (tarball-sans-extension tarball))))
50 version))
51
52(define %kde-file-list-uri
53 ;; URI of the file list (ls -lR format) for download.kde.org.
54 (string->uri "https://download.kde.org/ls-lR.bz2"))
55
56(define (download.kde.org-files)
57 ;;"Return the list of files available at download.kde.org."
58
59 (define (ls-lR-line->filename path line)
60 ;; Remove mode, blocks, user, group, size, date, time and one space,
61 ;; then prepend PATH
62 (regexp-substitute
63 #f (string-match "^(\\S+\\s+){6}\\S+\\s" line) path 'post))
64
65 (define (canonicalize path)
66 (let* ((path (if (string-prefix? "/srv/archives/ftp/" path)
67 (string-drop path (string-length "/srv/archives/ftp"))
68 path))
69 (path (if (string-suffix? ":" path)
70 (string-drop-right path 1)
71 path))
72 (path (if (not (string-suffix? "/" path))
73 (string-append path "/")
74 path)))
75 path))
76
77 (define (write-cache input cache)
78 "Read bzipped ls-lR from INPUT, and write it as a list of file paths to
79CACHE."
80 (call-with-decompressed-port 'bzip2 input
81 (lambda (input)
82 (let loop_dirs ((files '()))
83 ;; process a new directory block
84 (let ((path (read-line input)))
85 (if
86 (or (eof-object? path) (string= path ""))
87 (write (reverse files) cache)
88 (let loop_entries ((path (canonicalize path))
89 (files files))
90 ;; process entries within the directory block
91 (let ((line (read-line input)))
92 (cond
93 ((eof-object? line)
94 (write (reverse files) cache))
95 ((string-prefix? "-" line)
96 ;; this is a file entry: prepend to FILES, then re-enter
97 ;; the loop for remaining entries
98 (loop_entries path
99 (cons (ls-lR-line->filename path line) files)
100 ))
101 ((not (string= line ""))
102 ;; this is a non-file entry: ignore it, just re-enter the
103 ;; loop for remaining entries
104 (loop_entries path files))
105 ;; empty line: directory block end, re-enter the outer
106 ;; loop for the next block
107 (#t (loop_dirs files)))))))))))
108
109 (define (cache-miss uri)
110 (format (current-error-port) "fetching ~a...~%" (uri->string uri)))
111
112 (let* ((port (http-fetch/cached %kde-file-list-uri
113 #:ttl 3600
114 #:write-cache write-cache
115 #:cache-miss cache-miss))
116 (files (read port)))
117 (close-port port)
118 files))
119
120(define (uri->kde-path-pattern uri)
121 "Build a regexp from the package's URI suitable for matching the package
122path version-agnostic.
123
124Example:
125Input:
126 mirror://kde//stable/frameworks/5.55/portingAids/kross-5.55.0.zip
127Output:
128 //stable/frameworks/[^/]+/portingAids/
129"
130
131 (define version-regexp
132 ;; regexp for matching versions as used in the ld-lR file
133 (make-regexp
134 (string-join '("^([0-9]+\\.)+[0-9]+-?" ;; 5.12.90, 4.2.0-preview
135 "^[0-9]+$" ;; 20031002
136 ".*-([0-9]+\\.)+[0-9]+$") ;; kdepim-4.6.1
137 "|")))
138
139 (define (version->pattern part)
140 ;; If a path element might be a version, replace it by a catch-all part
141 (if (regexp-exec version-regexp part)
142 "[^/]+"
143 part))
144
145 (let* ((path (uri-path uri))
146 (directory-parts (string-split (dirname path) #\/)))
147 (make-regexp
148 (string-append
149 (string-join (map version->pattern directory-parts) "/")
150 "/"))))
151
152(define (latest-kde-release package)
153 "Return the latest release of PACKAGE, a KDE package, or #f if it could
154not be determined."
155 (let* ((uri (string->uri (origin-uri (package-source package))))
156 (path-rx (uri->kde-path-pattern uri))
157 (name (package-upstream-name package))
158 (files (download.kde.org-files))
159 (relevant (filter (lambda (file)
160 (and (regexp-exec path-rx file)
161 (release-file? name (basename file))))
162 files)))
163 (match (sort relevant (lambda (file1 file2)
164 (version>? (tarball-sans-extension
165 (basename file1))
166 (tarball-sans-extension
167 (basename file2)))))
168 ((and tarballs (reference _ ...))
169 (let* ((version (tarball->version reference))
170 (tarballs (filter (lambda (file)
171 (string=? (tarball-sans-extension
172 (basename file))
173 (tarball-sans-extension
174 (basename reference))))
175 tarballs)))
176 (upstream-source
177 (package name)
178 (version version)
179 (urls (map (lambda (file)
180 (string-append "mirror://kde/" file))
181 tarballs)))))
182 (()
183 #f))))
184
185(define %kde-updater
186 (upstream-updater
187 (name 'kde)
188 (description "Updater for KDE packages")
189 (pred (url-prefix-predicate "mirror://kde/"))
190 (latest latest-kde-release)))
diff --git a/guix/import/utils.scm b/guix/import/utils.scm
index 252875eeabc..4694b6e7ef0 100644
--- a/guix/import/utils.scm
+++ b/guix/import/utils.scm
@@ -212,10 +212,19 @@ with dashes."
212(define (beautify-description description) 212(define (beautify-description description)
213 "Improve the package DESCRIPTION by turning a beginning sentence fragment 213 "Improve the package DESCRIPTION by turning a beginning sentence fragment
214into a proper sentence and by using two spaces between sentences." 214into a proper sentence and by using two spaces between sentences."
215 (let ((cleaned (if (string-prefix? "A " description) 215 (let ((cleaned (cond
216 (string-append "This package provides a" 216 ((string-prefix? "A " description)
217 (substring description 1)) 217 (string-append "This package provides a"
218 description))) 218 (substring description 1)))
219 ((string-prefix? "Provides " description)
220 (string-append "This package provides"
221 (substring description
222 (string-length "Provides"))))
223 ((string-prefix? "Functions " description)
224 (string-append "This package provides functions"
225 (substring description
226 (string-length "Functions"))))
227 (else description))))
219 ;; Use double spacing between sentences 228 ;; Use double spacing between sentences
220 (regexp-substitute/global #f "\\. \\b" 229 (regexp-substitute/global #f "\\. \\b"
221 cleaned 'pre ". " 'post))) 230 cleaned 'pre ". " 'post)))
diff --git a/guix/packages.scm b/guix/packages.scm
index 39ab28d8076..f2c94c7bc2a 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -352,7 +352,7 @@ object."
352 352
353 (match (package-location package) 353 (match (package-location package)
354 (($ <location> file line column) 354 (($ <location> file line column)
355 (catch 'system 355 (catch 'system-error
356 (lambda () 356 (lambda ()
357 ;; In general we want to keep relative file names for modules. 357 ;; In general we want to keep relative file names for modules.
358 (with-fluids ((%file-port-name-canonicalization 'relative)) 358 (with-fluids ((%file-port-name-canonicalization 'relative))
diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm
index f7f7edda48f..cfe0a37c420 100644
--- a/guix/scripts/environment.scm
+++ b/guix/scripts/environment.scm
@@ -463,6 +463,10 @@ host file systems to mount inside the container. If USER is not #f, each
463target of USER-MAPPINGS will be re-written relative to '/home/USER', and USER 463target of USER-MAPPINGS will be re-written relative to '/home/USER', and USER
464will be used for the passwd entry. LINK-PROFILE? creates a symbolic link from 464will be used for the passwd entry. LINK-PROFILE? creates a symbolic link from
465~/.guix-profile to the environment profile." 465~/.guix-profile to the environment profile."
466 (define (optional-mapping->fs mapping)
467 (and (file-exists? (file-system-mapping-source mapping))
468 (file-system-mapping->bind-mount mapping)))
469
466 (mlet %store-monad ((reqs (inputs->requisites 470 (mlet %store-monad ((reqs (inputs->requisites
467 (list (direct-store-path bash) profile)))) 471 (list (direct-store-path bash) profile))))
468 (return 472 (return
@@ -499,11 +503,6 @@ will be used for the passwd entry. LINK-PROFILE? creates a symbolic link from
499 (target cwd) 503 (target cwd)
500 (writable? #t))) 504 (writable? #t)))
501 '()))) 505 '())))
502 ;; When in Rome, do as Nix build.cc does: Automagically
503 ;; map common network configuration files.
504 (if network?
505 %network-file-mappings
506 '())
507 ;; Mappings for the union closure of all inputs. 506 ;; Mappings for the union closure of all inputs.
508 (map (lambda (dir) 507 (map (lambda (dir)
509 (file-system-mapping 508 (file-system-mapping
@@ -512,6 +511,10 @@ will be used for the passwd entry. LINK-PROFILE? creates a symbolic link from
512 (writable? #f))) 511 (writable? #f)))
513 reqs))) 512 reqs)))
514 (file-systems (append %container-file-systems 513 (file-systems (append %container-file-systems
514 (if network?
515 (filter-map optional-mapping->fs
516 %network-file-mappings)
517 '())
515 (map file-system-mapping->bind-mount 518 (map file-system-mapping->bind-mount
516 mappings)))) 519 mappings))))
517 (exit/status 520 (exit/status
diff --git a/guix/scripts/gc.scm b/guix/scripts/gc.scm
index 31657326b60..3f20a2e1928 100644
--- a/guix/scripts/gc.scm
+++ b/guix/scripts/gc.scm
@@ -57,6 +57,8 @@ Invoke the garbage collector.\n"))
57 (display (G_ " 57 (display (G_ "
58 --list-roots list the user's garbage collector roots")) 58 --list-roots list the user's garbage collector roots"))
59 (display (G_ " 59 (display (G_ "
60 --list-busy list store items used by running processes"))
61 (display (G_ "
60 --optimize optimize the store by deduplicating identical files")) 62 --optimize optimize the store by deduplicating identical files"))
61 (display (G_ " 63 (display (G_ "
62 --list-dead list dead paths")) 64 --list-dead list dead paths"))
@@ -174,6 +176,10 @@ is deprecated; use '-D'~%"))
174 (lambda (opt name arg result) 176 (lambda (opt name arg result)
175 (alist-cons 'action 'list-roots 177 (alist-cons 'action 'list-roots
176 (alist-delete 'action result)))) 178 (alist-delete 'action result))))
179 (option '("list-busy") #f #f
180 (lambda (opt name arg result)
181 (alist-cons 'action 'list-busy
182 (alist-delete 'action result))))
177 (option '("list-dead") #f #f 183 (option '("list-dead") #f #f
178 (lambda (opt name arg result) 184 (lambda (opt name arg result)
179 (alist-cons 'action 'list-dead 185 (alist-cons 'action 'list-dead
@@ -265,6 +271,12 @@ is deprecated; use '-D'~%"))
265 (newline)) 271 (newline))
266 roots))) 272 roots)))
267 273
274 (define (list-busy)
275 ;; List store items used by running processes.
276 (for-each (lambda (item)
277 (display item) (newline))
278 (busy-store-items)))
279
268 (with-error-handling 280 (with-error-handling
269 (let* ((opts (parse-options)) 281 (let* ((opts (parse-options))
270 (store (open-connection)) 282 (store (open-connection))
@@ -305,6 +317,9 @@ is deprecated; use '-D'~%"))
305 ((list-roots) 317 ((list-roots)
306 (assert-no-extra-arguments) 318 (assert-no-extra-arguments)
307 (list-roots)) 319 (list-roots))
320 ((list-busy)
321 (assert-no-extra-arguments)
322 (list-busy))
308 ((delete) 323 ((delete)
309 (delete-paths store (map direct-store-path paths))) 324 (delete-paths store (map direct-store-path paths)))
310 ((list-references) 325 ((list-references)
diff --git a/guix/scripts/import/crate.scm b/guix/scripts/import/crate.scm
index cab9a4397bd..7ae86389114 100644
--- a/guix/scripts/import/crate.scm
+++ b/guix/scripts/import/crate.scm
@@ -2,6 +2,7 @@
2;;; GNU Guix --- Functional package management for GNU 2;;; GNU Guix --- Functional package management for GNU
3;;; Copyright © 2014 David Thompson <davet@gnu.org> 3;;; Copyright © 2014 David Thompson <davet@gnu.org>
4;;; Copyright © 2016 David Craven <david@craven.ch> 4;;; Copyright © 2016 David Craven <david@craven.ch>
5;;; Copyright © 2019 Martin Becze <mjbecze@riseup.net>
5;;; 6;;;
6;;; This file is part of GNU Guix. 7;;; This file is part of GNU Guix.
7;;; 8;;;
@@ -75,6 +76,7 @@ Import and convert the crate.io package for PACKAGE-NAME.\n"))
75 (alist-cons 'argument arg result)) 76 (alist-cons 'argument arg result))
76 %default-options)) 77 %default-options))
77 78
79
78 (let* ((opts (parse-options)) 80 (let* ((opts (parse-options))
79 (args (filter-map (match-lambda 81 (args (filter-map (match-lambda
80 (('argument . value) 82 (('argument . value)
@@ -82,11 +84,16 @@ Import and convert the crate.io package for PACKAGE-NAME.\n"))
82 (_ #f)) 84 (_ #f))
83 (reverse opts)))) 85 (reverse opts))))
84 (match args 86 (match args
85 ((package-name) 87 ((spec)
86 (let ((sexp (crate->guix-package package-name))) 88 (define-values (name version)
89 (package-name->name+version spec))
90
91 (let ((sexp (crate->guix-package name version)))
87 (unless sexp 92 (unless sexp
88 (leave (G_ "failed to download meta-data for package '~a'~%") 93 (leave (G_ "failed to download meta-data for package '~a'~%")
89 package-name)) 94 (if version
95 (string-append name "@" version)
96 name)))
90 sexp)) 97 sexp))
91 (() 98 (()
92 (leave (G_ "too few arguments~%"))) 99 (leave (G_ "too few arguments~%")))
diff --git a/guix/scripts/pack.scm b/guix/scripts/pack.scm
index de5b3fc0ff3..920d6c01fe2 100644
--- a/guix/scripts/pack.scm
+++ b/guix/scripts/pack.scm
@@ -516,6 +516,18 @@ the image."
516 `((directory "/tmp" ,(getuid) ,(getgid) #o1777) 516 `((directory "/tmp" ,(getuid) ,(getgid) #o1777)
517 ,@(append-map symlink->directives '#$symlinks))) 517 ,@(append-map symlink->directives '#$symlinks)))
518 518
519 (define tag
520 ;; Compute a meaningful "repository" name, which will show up in
521 ;; the output of "docker images".
522 (let ((manifest (profile-manifest #$profile)))
523 (let loop ((names (map manifest-entry-name
524 (manifest-entries manifest))))
525 (define str (string-join names "-"))
526 (if (< (string-length str) 40)
527 str
528 (match names
529 ((_) str)
530 ((names ... _) (loop names))))))) ;drop one entry
519 531
520 (setenv "PATH" (string-append #$archiver "/bin")) 532 (setenv "PATH" (string-append #$archiver "/bin"))
521 533
@@ -524,6 +536,7 @@ the image."
524 (call-with-input-file "profile" 536 (call-with-input-file "profile"
525 read-reference-graph)) 537 read-reference-graph))
526 #$profile 538 #$profile
539 #:repository tag
527 #:database #+database 540 #:database #+database
528 #:system (or #$target (utsname:machine (uname))) 541 #:system (or #$target (utsname:machine (uname)))
529 #:environment environment 542 #:environment environment
@@ -944,7 +957,8 @@ Create a bundle of PACKAGE.\n"))
944 (list (transform store package) output)) 957 (list (transform store package) output))
945 ((? package? package) 958 ((? package? package)
946 (list (transform store package) "out"))) 959 (list (transform store package) "out")))
947 (filter-map maybe-package-argument opts))) 960 (reverse
961 (filter-map maybe-package-argument opts))))
948 (manifest-file (assoc-ref opts 'manifest))) 962 (manifest-file (assoc-ref opts 'manifest)))
949 (define properties 963 (define properties
950 (if (assoc-ref opts 'save-provenance?) 964 (if (assoc-ref opts 'save-provenance?)
diff --git a/guix/scripts/refresh.scm b/guix/scripts/refresh.scm
index 4591d0f3083..daf6fcf947d 100644
--- a/guix/scripts/refresh.scm
+++ b/guix/scripts/refresh.scm
@@ -368,8 +368,16 @@ the latest known version of ~a (~a)~%")
368 (upstream-source-version source))))))) 368 (upstream-source-version source)))))))
369 (#f 369 (#f
370 (when warn? 370 (when warn?
371 (warn-no-updater package))))) 371 ;; Distinguish between "no updater" and "failing updater."
372 372 (match (lookup-updater package updaters)
373 ((? upstream-updater? updater)
374 (warning (package-location package)
375 (G_ "'~a' updater failed to determine available \
376releases for ~a~%")
377 (upstream-updater-name updater)
378 (package-name package)))
379 (#f
380 (warn-no-updater package)))))))
373 381
374 382
375;;; 383;;;
diff --git a/guix/store/roots.scm b/guix/store/roots.scm
index 4f23ae34e84..58653507f86 100644
--- a/guix/store/roots.scm
+++ b/guix/store/roots.scm
@@ -1,5 +1,5 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org> 2;;; Copyright © 2012, 2013, 2014, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
3;;; 3;;;
4;;; This file is part of GNU Guix. 4;;; This file is part of GNU Guix.
5;;; 5;;;
@@ -26,9 +26,13 @@
26 #:use-module (srfi srfi-26) 26 #:use-module (srfi srfi-26)
27 #:use-module (ice-9 match) 27 #:use-module (ice-9 match)
28 #:use-module (ice-9 regex) 28 #:use-module (ice-9 regex)
29 #:use-module (ice-9 rdelim)
30 #:use-module (ice-9 ftw)
31 #:use-module (rnrs io ports)
29 #:re-export (%gc-roots-directory) 32 #:re-export (%gc-roots-directory)
30 #:export (gc-roots 33 #:export (gc-roots
31 user-owned?)) 34 user-owned?
35 busy-store-items))
32 36
33;;; Commentary: 37;;; Commentary:
34;;; 38;;;
@@ -118,3 +122,124 @@ are user-controlled symlinks stored anywhere on the file system."
118 122
119 (= (stat:uid stat) uid)) 123 (= (stat:uid stat) uid))
120 (const #f))) 124 (const #f)))
125
126
127;;;
128;;; Listing "busy" store items: those referenced by currently running
129;;; processes.
130;;;
131
132(define %proc-directory
133 ;; Mount point of Linuxish /proc file system.
134 "/proc")
135
136(define (proc-file-roots dir file)
137 "Return a one-element list containing the file pointed to by DIR/FILE,
138or the empty list."
139 (or (and=> (false-if-exception (readlink (string-append dir "/" file)))
140 list)
141 '()))
142
143(define proc-exe-roots (cut proc-file-roots <> "exe"))
144(define proc-cwd-roots (cut proc-file-roots <> "cwd"))
145
146(define (proc-fd-roots dir)
147 "Return the list of store files referenced by DIR, which is a
148/proc/XYZ directory."
149 (let ((dir (string-append dir "/fd")))
150 (filter-map (lambda (file)
151 (let ((target (false-if-exception
152 (readlink (string-append dir "/" file)))))
153 (and target
154 (string-prefix? "/" target)
155 target)))
156 (or (scandir dir string->number) '()))))
157
158(define (proc-maps-roots dir)
159 "Return the list of store files referenced by DIR, which is a
160/proc/XYZ directory."
161 (define %file-mapping-line
162 (make-regexp "^.*[[:blank:]]+/([^ ]+)$"))
163
164 (call-with-input-file (string-append dir "/maps")
165 (lambda (maps)
166 (let loop ((line (read-line maps))
167 (roots '()))
168 (cond ((eof-object? line)
169 roots)
170 ((regexp-exec %file-mapping-line line)
171 =>
172 (lambda (match)
173 (let ((file (string-append "/"
174 (match:substring match 1))))
175 (loop (read-line maps)
176 (cons file roots)))))
177 (else
178 (loop (read-line maps) roots)))))))
179
180(define (proc-environ-roots dir)
181 "Return the list of store files referenced by DIR/environ, where DIR is a
182/proc/XYZ directory."
183 (define split-on-nul
184 (cute string-tokenize <>
185 (char-set-complement (char-set #\nul))))
186
187 (define (rhs-file-names str)
188 (let ((equal (string-index str #\=)))
189 (if equal
190 (let* ((str (substring str (+ 1 equal)))
191 (rx (string-append (regexp-quote %store-directory)
192 "/[0-9a-z]{32}-[a-zA-Z0-9\\._+-]+")))
193 (map match:substring (list-matches rx str)))
194 '())))
195
196 (define environ
197 (string-append dir "/environ"))
198
199 (append-map rhs-file-names
200 (split-on-nul
201 (call-with-input-file environ
202 get-string-all))))
203
204(define (referenced-files)
205 "Return the list of referenced store items."
206 (append-map (lambda (pid)
207 (let ((proc (string-append %proc-directory "/" pid)))
208 (catch 'system-error
209 (lambda ()
210 (append (proc-exe-roots proc)
211 (proc-cwd-roots proc)
212 (proc-fd-roots proc)
213 (proc-maps-roots proc)
214 (proc-environ-roots proc)))
215 (lambda args
216 (let ((err (system-error-errno args)))
217 (if (or (= ENOENT err) ;TOCTTOU race
218 (= ESRCH err) ;ditto
219 (= EACCES err)) ;not running as root
220 '()
221 (apply throw args)))))))
222 (scandir %proc-directory string->number
223 (lambda (a b)
224 (< (string->number a) (string->number b))))))
225
226(define canonicalize-store-item
227 (let* ((store (string-append %store-directory "/"))
228 (prefix (string-length store)))
229 (lambda (file)
230 "Return #f if FILE is not a store item; otherwise, return the store file
231name without any sub-directory components."
232 (and (string-prefix? store file)
233 (string-append store
234 (let ((base (string-drop file prefix)))
235 (match (string-index base #\/)
236 (#f base)
237 (slash (string-take base slash)))))))))
238
239(define (busy-store-items)
240 "Return the list of store items used by the currently running processes.
241
242This code should typically run as root; it allows the garbage collector to
243determine which store items must not be deleted."
244 (delete-duplicates
245 (filter-map canonicalize-store-item (referenced-files))))
diff --git a/guix/upstream.scm b/guix/upstream.scm
index d4f9c5bb451..aa47dab4b46 100644
--- a/guix/upstream.scm
+++ b/guix/upstream.scm
@@ -245,18 +245,18 @@ correspond to the same version."
245(define (lookup-updater package updaters) 245(define (lookup-updater package updaters)
246 "Return an updater among UPDATERS that matches PACKAGE, or #f if none of 246 "Return an updater among UPDATERS that matches PACKAGE, or #f if none of
247them matches." 247them matches."
248 (any (match-lambda 248 (find (match-lambda
249 (($ <upstream-updater> name description pred latest) 249 (($ <upstream-updater> name description pred latest)
250 (and (pred package) latest))) 250 (pred package)))
251 updaters)) 251 updaters))
252 252
253(define (package-latest-release package updaters) 253(define (package-latest-release package updaters)
254 "Return an upstream source to update PACKAGE, a <package> object, or #f if 254 "Return an upstream source to update PACKAGE, a <package> object, or #f if
255none of UPDATERS matches PACKAGE. It is the caller's responsibility to ensure 255none of UPDATERS matches PACKAGE. It is the caller's responsibility to ensure
256that the returned source is newer than the current one." 256that the returned source is newer than the current one."
257 (match (lookup-updater package updaters) 257 (match (lookup-updater package updaters)
258 ((? procedure? latest-release) 258 ((? upstream-updater? updater)
259 (latest-release package)) 259 ((upstream-updater-latest updater) package))
260 (_ #f))) 260 (_ #f)))
261 261
262(define (package-latest-release* package updaters) 262(define (package-latest-release* package updaters)
diff --git a/guix/utils.scm b/guix/utils.scm
index f480c3291fb..1f99c5b3f55 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -91,6 +91,7 @@
91 arguments-from-environment-variable 91 arguments-from-environment-variable
92 file-extension 92 file-extension
93 file-sans-extension 93 file-sans-extension
94 tarball-sans-extension
94 compressed-file? 95 compressed-file?
95 switch-symlinks 96 switch-symlinks
96 call-with-temporary-output-file 97 call-with-temporary-output-file
@@ -578,6 +579,12 @@ minor version numbers from version-string."
578 (substring file 0 dot) 579 (substring file 0 dot)
579 file))) 580 file)))
580 581
582(define (tarball-sans-extension tarball)
583 "Return TARBALL without its .tar.* or .zip extension."
584 (let ((end (or (string-contains tarball ".tar")
585 (string-contains tarball ".zip"))))
586 (substring tarball 0 end)))
587
581(define (compressed-file? file) 588(define (compressed-file? file)
582 "Return true if FILE denotes a compressed file." 589 "Return true if FILE denotes a compressed file."
583 (->bool (member (file-extension file) 590 (->bool (member (file-extension file)
diff --git a/nix/libstore/build.cc b/nix/libstore/build.cc
index fe7bf79069c..ad53b814137 100644
--- a/nix/libstore/build.cc
+++ b/nix/libstore/build.cc
@@ -614,9 +614,7 @@ HookInstance::HookInstance()
614{ 614{
615 debug("starting build hook"); 615 debug("starting build hook");
616 616
617 Path buildHook = getEnv("NIX_BUILD_HOOK"); 617 const Path &buildHook = settings.guixProgram;
618 if (string(buildHook, 0, 1) != "/") buildHook = settings.nixLibexecDir + "/nix/" + buildHook;
619 buildHook = canonPath(buildHook);
620 618
621 /* Create a pipe to get the output of the child. */ 619 /* Create a pipe to get the output of the child. */
622 fromHook.create(); 620 fromHook.create();
@@ -642,13 +640,14 @@ HookInstance::HookInstance()
642 if (dup2(builderOut.writeSide, 4) == -1) 640 if (dup2(builderOut.writeSide, 4) == -1)
643 throw SysError("dupping builder's stdout/stderr"); 641 throw SysError("dupping builder's stdout/stderr");
644 642
645 execl(buildHook.c_str(), buildHook.c_str(), settings.thisSystem.c_str(), 643 execl(buildHook.c_str(), buildHook.c_str(), "offload",
644 settings.thisSystem.c_str(),
646 (format("%1%") % settings.maxSilentTime).str().c_str(), 645 (format("%1%") % settings.maxSilentTime).str().c_str(),
647 (format("%1%") % settings.printBuildTrace).str().c_str(), 646 (format("%1%") % settings.printBuildTrace).str().c_str(),
648 (format("%1%") % settings.buildTimeout).str().c_str(), 647 (format("%1%") % settings.buildTimeout).str().c_str(),
649 NULL); 648 NULL);
650 649
651 throw SysError(format("executing `%1%'") % buildHook); 650 throw SysError(format("executing `%1% offload'") % buildHook);
652 }); 651 });
653 652
654 pid.setSeparatePG(true); 653 pid.setSeparatePG(true);
@@ -1581,7 +1580,7 @@ void DerivationGoal::buildDone()
1581 1580
1582HookReply DerivationGoal::tryBuildHook() 1581HookReply DerivationGoal::tryBuildHook()
1583{ 1582{
1584 if (!settings.useBuildHook || getEnv("NIX_BUILD_HOOK") == "") return rpDecline; 1583 if (!settings.useBuildHook) return rpDecline;
1585 1584
1586 if (!worker.hook) 1585 if (!worker.hook)
1587 worker.hook = std::shared_ptr<HookInstance>(new HookInstance); 1586 worker.hook = std::shared_ptr<HookInstance>(new HookInstance);
@@ -2864,15 +2863,6 @@ private:
2864 /* The store path that should be realised through a substitute. */ 2863 /* The store path that should be realised through a substitute. */
2865 Path storePath; 2864 Path storePath;
2866 2865
2867 /* The remaining substituters. */
2868 Paths subs;
2869
2870 /* The current substituter. */
2871 Path sub;
2872
2873 /* Whether any substituter can realise this path */
2874 bool hasSubstitute;
2875
2876 /* Path info returned by the substituter's query info operation. */ 2866 /* Path info returned by the substituter's query info operation. */
2877 SubstitutablePathInfo info; 2867 SubstitutablePathInfo info;
2878 2868
@@ -2898,6 +2888,8 @@ private:
2898 typedef void (SubstitutionGoal::*GoalState)(); 2888 typedef void (SubstitutionGoal::*GoalState)();
2899 GoalState state; 2889 GoalState state;
2900 2890
2891 void tryNext();
2892
2901public: 2893public:
2902 SubstitutionGoal(const Path & storePath, Worker & worker, bool repair = false); 2894 SubstitutionGoal(const Path & storePath, Worker & worker, bool repair = false);
2903 ~SubstitutionGoal(); 2895 ~SubstitutionGoal();
@@ -2915,7 +2907,6 @@ public:
2915 2907
2916 /* The states. */ 2908 /* The states. */
2917 void init(); 2909 void init();
2918 void tryNext();
2919 void gotInfo(); 2910 void gotInfo();
2920 void referencesValid(); 2911 void referencesValid();
2921 void tryToRun(); 2912 void tryToRun();
@@ -2931,7 +2922,6 @@ public:
2931 2922
2932SubstitutionGoal::SubstitutionGoal(const Path & storePath, Worker & worker, bool repair) 2923SubstitutionGoal::SubstitutionGoal(const Path & storePath, Worker & worker, bool repair)
2933 : Goal(worker) 2924 : Goal(worker)
2934 , hasSubstitute(false)
2935 , repair(repair) 2925 , repair(repair)
2936{ 2926{
2937 this->storePath = storePath; 2927 this->storePath = storePath;
@@ -2981,37 +2971,31 @@ void SubstitutionGoal::init()
2981 if (settings.readOnlyMode) 2971 if (settings.readOnlyMode)
2982 throw Error(format("cannot substitute path `%1%' - no write access to the store") % storePath); 2972 throw Error(format("cannot substitute path `%1%' - no write access to the store") % storePath);
2983 2973
2984 subs = settings.substituters;
2985
2986 tryNext(); 2974 tryNext();
2987} 2975}
2988 2976
2989 2977
2990void SubstitutionGoal::tryNext() 2978void SubstitutionGoal::tryNext()
2991{ 2979{
2992 trace("trying next substituter"); 2980 trace("trying substituter");
2993 2981
2994 if (subs.size() == 0) { 2982 SubstitutablePathInfos infos;
2983 PathSet dummy(singleton<PathSet>(storePath));
2984 worker.store.querySubstitutablePathInfos(dummy, infos);
2985 SubstitutablePathInfos::iterator k = infos.find(storePath);
2986 if (k == infos.end()) {
2995 /* None left. Terminate this goal and let someone else deal 2987 /* None left. Terminate this goal and let someone else deal
2996 with it. */ 2988 with it. */
2997 debug(format("path `%1%' is required, but there is no substituter that can build it") % storePath); 2989 debug(format("path `%1%' is required, but there is no substituter that can build it") % storePath);
2998 /* Hack: don't indicate failure if there were no substituters. 2990 /* Hack: don't indicate failure if there were no substituters.
2999 In that case the calling derivation should just do a 2991 In that case the calling derivation should just do a
3000 build. */ 2992 build. */
3001 amDone(hasSubstitute ? ecFailed : ecNoSubstituters); 2993 amDone(ecNoSubstituters);
3002 return; 2994 return;
3003 } 2995 }
3004 2996
3005 sub = subs.front(); 2997 /* Found a substitute. */
3006 subs.pop_front();
3007
3008 SubstitutablePathInfos infos;
3009 PathSet dummy(singleton<PathSet>(storePath));
3010 worker.store.querySubstitutablePathInfos(sub, dummy, infos);
3011 SubstitutablePathInfos::iterator k = infos.find(storePath);
3012 if (k == infos.end()) { tryNext(); return; }
3013 info = k->second; 2998 info = k->second;
3014 hasSubstitute = true;
3015 2999
3016 /* To maintain the closure invariant, we first have to realise the 3000 /* To maintain the closure invariant, we first have to realise the
3017 paths referenced by this one. */ 3001 paths referenced by this one. */
@@ -3099,7 +3083,8 @@ void SubstitutionGoal::tryToRun()
3099 3083
3100 /* Fill in the arguments. */ 3084 /* Fill in the arguments. */
3101 Strings args; 3085 Strings args;
3102 args.push_back(baseNameOf(sub)); 3086 args.push_back("guix");
3087 args.push_back("substitute");
3103 args.push_back("--substitute"); 3088 args.push_back("--substitute");
3104 args.push_back(storePath); 3089 args.push_back(storePath);
3105 args.push_back(destPath); 3090 args.push_back(destPath);
@@ -3112,9 +3097,9 @@ void SubstitutionGoal::tryToRun()
3112 if (dup2(outPipe.writeSide, STDOUT_FILENO) == -1) 3097 if (dup2(outPipe.writeSide, STDOUT_FILENO) == -1)
3113 throw SysError("cannot dup output pipe into stdout"); 3098 throw SysError("cannot dup output pipe into stdout");
3114 3099
3115 execv(sub.c_str(), stringsToCharPtrs(args).data()); 3100 execv(settings.guixProgram.c_str(), stringsToCharPtrs(args).data());
3116 3101
3117 throw SysError(format("executing `%1%'") % sub); 3102 throw SysError(format("executing `%1% substitute'") % settings.guixProgram);
3118 }); 3103 });
3119 3104
3120 pid.setSeparatePG(true); 3105 pid.setSeparatePG(true);
@@ -3127,7 +3112,9 @@ void SubstitutionGoal::tryToRun()
3127 state = &SubstitutionGoal::finished; 3112 state = &SubstitutionGoal::finished;
3128 3113
3129 if (settings.printBuildTrace) 3114 if (settings.printBuildTrace)
3130 printMsg(lvlError, format("@ substituter-started %1% %2%") % storePath % sub); 3115 /* The second element in the message used to be the name of the
3116 substituter but we're left with only one. */
3117 printMsg(lvlError, format("@ substituter-started %1% substitute") % storePath);
3131} 3118}
3132 3119
3133 3120
@@ -3193,9 +3180,7 @@ void SubstitutionGoal::finished()
3193 % storePath % status % e.msg()); 3180 % storePath % status % e.msg());
3194 } 3181 }
3195 3182
3196 /* Try the next substitute. */ 3183 amDone(ecFailed);
3197 state = &SubstitutionGoal::tryNext;
3198 worker.wakeUp(shared_from_this());
3199 return; 3184 return;
3200 } 3185 }
3201 3186
diff --git a/nix/libstore/builtins.cc b/nix/libstore/builtins.cc
index f7c7d424847..4111ac47609 100644
--- a/nix/libstore/builtins.cc
+++ b/nix/libstore/builtins.cc
@@ -39,7 +39,7 @@ static void builtinDownload(const Derivation &drv,
39 39
40 const char *const argv[] = 40 const char *const argv[] =
41 { 41 {
42 "download", drvPath.c_str(), output.c_str(), NULL 42 "guix", "perform-download", drvPath.c_str(), output.c_str(), NULL
43 }; 43 };
44 44
45 /* Tell the script what the store file name is, so that 45 /* Tell the script what the store file name is, so that
@@ -50,7 +50,7 @@ static void builtinDownload(const Derivation &drv,
50 /* Tell it about options such as "print-extended-build-trace". */ 50 /* Tell it about options such as "print-extended-build-trace". */
51 setenv("_NIX_OPTIONS", settings.pack().c_str(), 1); 51 setenv("_NIX_OPTIONS", settings.pack().c_str(), 1);
52 52
53 const string program = settings.nixLibexecDir + "/download"; 53 const string program = settings.guixProgram;
54 execv(program.c_str(), (char *const *) argv); 54 execv(program.c_str(), (char *const *) argv);
55 55
56 throw SysError(format("failed to run download program '%1%'") % program); 56 throw SysError(format("failed to run download program '%1%'") % program);
diff --git a/nix/libstore/gc.cc b/nix/libstore/gc.cc
index 46171e116cc..c4669966686 100644
--- a/nix/libstore/gc.cc
+++ b/nix/libstore/gc.cc
@@ -339,14 +339,11 @@ Roots LocalStore::findRoots()
339 339
340static void addAdditionalRoots(StoreAPI & store, PathSet & roots) 340static void addAdditionalRoots(StoreAPI & store, PathSet & roots)
341{ 341{
342 Path rootFinder = getEnv("NIX_ROOT_FINDER", 342 debug(format("executing `%1% gc --list-busy' to find additional roots")
343 settings.nixLibexecDir + "/list-runtime-roots"); 343 % settings.guixProgram);
344 344
345 if (rootFinder.empty()) return; 345 const Strings args = { "gc", "--list-busy" };
346 346 string result = runProgram(settings.guixProgram, false, args);
347 debug(format("executing `%1%' to find additional roots") % rootFinder);
348
349 string result = runProgram(rootFinder);
350 347
351 StringSet paths = tokenizeString<StringSet>(result, "\n"); 348 StringSet paths = tokenizeString<StringSet>(result, "\n");
352 349
diff --git a/nix/libstore/globals.cc b/nix/libstore/globals.cc
index 6df20e7a52c..0cc001fbe4e 100644
--- a/nix/libstore/globals.cc
+++ b/nix/libstore/globals.cc
@@ -70,9 +70,9 @@ void Settings::processEnvironment()
70 nixStateDir = canonPath(getEnv("GUIX_STATE_DIRECTORY", NIX_STATE_DIR)); 70 nixStateDir = canonPath(getEnv("GUIX_STATE_DIRECTORY", NIX_STATE_DIR));
71 nixDBPath = getEnv("GUIX_DATABASE_DIRECTORY", nixStateDir + "/db"); 71 nixDBPath = getEnv("GUIX_DATABASE_DIRECTORY", nixStateDir + "/db");
72 nixConfDir = canonPath(getEnv("GUIX_CONFIGURATION_DIRECTORY", GUIX_CONFIGURATION_DIRECTORY)); 72 nixConfDir = canonPath(getEnv("GUIX_CONFIGURATION_DIRECTORY", GUIX_CONFIGURATION_DIRECTORY));
73 nixLibexecDir = canonPath(getEnv("NIX_LIBEXEC_DIR", NIX_LIBEXEC_DIR));
74 nixBinDir = canonPath(getEnv("NIX_BIN_DIR", NIX_BIN_DIR)); 73 nixBinDir = canonPath(getEnv("NIX_BIN_DIR", NIX_BIN_DIR));
75 nixDaemonSocketFile = canonPath(nixStateDir + DEFAULT_SOCKET_PATH); 74 nixDaemonSocketFile = canonPath(nixStateDir + DEFAULT_SOCKET_PATH);
75 guixProgram = canonPath(getEnv("GUIX", nixBinDir + "/guix"));
76} 76}
77 77
78 78
diff --git a/nix/libstore/globals.hh b/nix/libstore/globals.hh
index b073f724b67..27616a22834 100644
--- a/nix/libstore/globals.hh
+++ b/nix/libstore/globals.hh
@@ -57,15 +57,15 @@ struct Settings {
57 /* The directory where configuration files are stored. */ 57 /* The directory where configuration files are stored. */
58 Path nixConfDir; 58 Path nixConfDir;
59 59
60 /* The directory where internal helper programs are stored. */
61 Path nixLibexecDir;
62
63 /* The directory where the main programs are stored. */ 60 /* The directory where the main programs are stored. */
64 Path nixBinDir; 61 Path nixBinDir;
65 62
66 /* File name of the socket the daemon listens to. */ 63 /* File name of the socket the daemon listens to. */
67 Path nixDaemonSocketFile; 64 Path nixDaemonSocketFile;
68 65
66 /* Absolute file name of the 'guix' program. */
67 Path guixProgram;
68
69 /* Whether to keep temporary directories of failed builds. */ 69 /* Whether to keep temporary directories of failed builds. */
70 bool keepFailed; 70 bool keepFailed;
71 71
@@ -112,11 +112,6 @@ struct Settings {
112 means infinity. */ 112 means infinity. */
113 time_t buildTimeout; 113 time_t buildTimeout;
114 114
115 /* The substituters. There are programs that can somehow realise
116 a store path without building, e.g., by downloading it or
117 copying it from a CD. */
118 Paths substituters;
119
120 /* Whether to use build hooks (for distributed builds). Sometimes 115 /* Whether to use build hooks (for distributed builds). Sometimes
121 users want to disable this from the command-line. */ 116 users want to disable this from the command-line. */
122 bool useBuildHook; 117 bool useBuildHook;
diff --git a/nix/libstore/local-store.cc b/nix/libstore/local-store.cc
index 892d9300b15..3b08492c643 100644
--- a/nix/libstore/local-store.cc
+++ b/nix/libstore/local-store.cc
@@ -184,13 +184,15 @@ LocalStore::LocalStore(bool reserveSpace)
184LocalStore::~LocalStore() 184LocalStore::~LocalStore()
185{ 185{
186 try { 186 try {
187 foreach (RunningSubstituters::iterator, i, runningSubstituters) { 187 if (runningSubstituter) {
188 if (i->second.disabled) continue; 188 RunningSubstituter &i = *runningSubstituter;
189 i->second.to.close(); 189 if (!i.disabled) {
190 i->second.from.close(); 190 i.to.close();
191 i->second.error.close(); 191 i.from.close();
192 if (i->second.pid != -1) 192 i.error.close();
193 i->second.pid.wait(true); 193 if (i.pid != -1)
194 i.pid.wait(true);
195 }
194 } 196 }
195 } catch (...) { 197 } catch (...) {
196 ignoreException(); 198 ignoreException();
@@ -808,11 +810,12 @@ void LocalStore::setSubstituterEnv()
808} 810}
809 811
810 812
811void LocalStore::startSubstituter(const Path & substituter, RunningSubstituter & run) 813void LocalStore::startSubstituter(RunningSubstituter & run)
812{ 814{
813 if (run.disabled || run.pid != -1) return; 815 if (run.disabled || run.pid != -1) return;
814 816
815 debug(format("starting substituter program `%1%'") % substituter); 817 debug(format("starting substituter program `%1% substitute'")
818 % settings.guixProgram);
816 819
817 Pipe toPipe, fromPipe, errorPipe; 820 Pipe toPipe, fromPipe, errorPipe;
818 821
@@ -829,11 +832,10 @@ void LocalStore::startSubstituter(const Path & substituter, RunningSubstituter &
829 throw SysError("dupping stdout"); 832 throw SysError("dupping stdout");
830 if (dup2(errorPipe.writeSide, STDERR_FILENO) == -1) 833 if (dup2(errorPipe.writeSide, STDERR_FILENO) == -1)
831 throw SysError("dupping stderr"); 834 throw SysError("dupping stderr");
832 execl(substituter.c_str(), substituter.c_str(), "--query", NULL); 835 execl(settings.guixProgram.c_str(), "guix", "substitute", "--query", NULL);
833 throw SysError(format("executing `%1%'") % substituter); 836 throw SysError(format("executing `%1%'") % settings.guixProgram);
834 }); 837 });
835 838
836 run.program = baseNameOf(substituter);
837 run.to = toPipe.writeSide.borrow(); 839 run.to = toPipe.writeSide.borrow();
838 run.from = run.fromBuf.fd = fromPipe.readSide.borrow(); 840 run.from = run.fromBuf.fd = fromPipe.readSide.borrow();
839 run.error = errorPipe.readSide.borrow(); 841 run.error = errorPipe.readSide.borrow();
@@ -889,13 +891,14 @@ string LocalStore::getLineFromSubstituter(RunningSubstituter & run)
889 if (errno == EINTR) continue; 891 if (errno == EINTR) continue;
890 throw SysError("reading from substituter's stderr"); 892 throw SysError("reading from substituter's stderr");
891 } 893 }
892 if (n == 0) throw EndOfFile(format("substituter `%1%' died unexpectedly") % run.program); 894 if (n == 0) throw EndOfFile(format("`%1% substitute' died unexpectedly")
895 % settings.guixProgram);
893 err.append(buf, n); 896 err.append(buf, n);
894 string::size_type p; 897 string::size_type p;
895 while (((p = err.find('\n')) != string::npos) 898 while (((p = err.find('\n')) != string::npos)
896 || ((p = err.find('\r')) != string::npos)) { 899 || ((p = err.find('\r')) != string::npos)) {
897 string thing(err, 0, p + 1); 900 string thing(err, 0, p + 1);
898 writeToStderr(run.program + ": " + thing); 901 writeToStderr("substitute: " + thing);
899 err = string(err, p + 1); 902 err = string(err, p + 1);
900 } 903 }
901 } 904 }
@@ -907,7 +910,7 @@ string LocalStore::getLineFromSubstituter(RunningSubstituter & run)
907 unsigned char c; 910 unsigned char c;
908 run.fromBuf(&c, 1); 911 run.fromBuf(&c, 1);
909 if (c == '\n') { 912 if (c == '\n') {
910 if (!err.empty()) printMsg(lvlError, run.program + ": " + err); 913 if (!err.empty()) printMsg(lvlError, "substitute: " + err);
911 return res; 914 return res;
912 } 915 }
913 res += c; 916 res += c;
@@ -930,38 +933,47 @@ PathSet LocalStore::querySubstitutablePaths(const PathSet & paths)
930{ 933{
931 PathSet res; 934 PathSet res;
932 935
933 if (!settings.useSubstitutes) return res; 936 if (!settings.useSubstitutes || paths.empty()) return res;
934 937
935 foreach (Paths::iterator, i, settings.substituters) { 938 if (!runningSubstituter) {
936 if (res.size() == paths.size()) break; 939 std::unique_ptr<RunningSubstituter>fresh(new RunningSubstituter);
937 RunningSubstituter & run(runningSubstituters[*i]); 940 runningSubstituter.swap(fresh);
938 startSubstituter(*i, run); 941 }
939 if (run.disabled) continue; 942
940 string s = "have "; 943 RunningSubstituter & run = *runningSubstituter;
941 foreach (PathSet::const_iterator, j, paths) 944 startSubstituter(run);
942 if (res.find(*j) == res.end()) { s += *j; s += " "; } 945
943 writeLine(run.to, s); 946 if (!run.disabled) {
944 while (true) { 947 string s = "have ";
945 /* FIXME: we only read stderr when an error occurs, so 948 foreach (PathSet::const_iterator, j, paths)
946 substituters should only write (short) messages to 949 if (res.find(*j) == res.end()) { s += *j; s += " "; }
947 stderr when they fail. I.e. they shouldn't write debug 950 writeLine(run.to, s);
948 output. */ 951 while (true) {
949 Path path = getLineFromSubstituter(run); 952 /* FIXME: we only read stderr when an error occurs, so
950 if (path == "") break; 953 substituters should only write (short) messages to
951 res.insert(path); 954 stderr when they fail. I.e. they shouldn't write debug
952 } 955 output. */
956 Path path = getLineFromSubstituter(run);
957 if (path == "") break;
958 res.insert(path);
959 }
953 } 960 }
961
954 return res; 962 return res;
955} 963}
956 964
957 965
958void LocalStore::querySubstitutablePathInfos(const Path & substituter, 966void LocalStore::querySubstitutablePathInfos(PathSet & paths, SubstitutablePathInfos & infos)
959 PathSet & paths, SubstitutablePathInfos & infos)
960{ 967{
961 if (!settings.useSubstitutes) return; 968 if (!settings.useSubstitutes) return;
962 969
963 RunningSubstituter & run(runningSubstituters[substituter]); 970 if (!runningSubstituter) {
964 startSubstituter(substituter, run); 971 std::unique_ptr<RunningSubstituter>fresh(new RunningSubstituter);
972 runningSubstituter.swap(fresh);
973 }
974
975 RunningSubstituter & run = *runningSubstituter;
976 startSubstituter(run);
965 if (run.disabled) return; 977 if (run.disabled) return;
966 978
967 string s = "info "; 979 string s = "info ";
@@ -993,10 +1005,9 @@ void LocalStore::querySubstitutablePathInfos(const Path & substituter,
993void LocalStore::querySubstitutablePathInfos(const PathSet & paths, 1005void LocalStore::querySubstitutablePathInfos(const PathSet & paths,
994 SubstitutablePathInfos & infos) 1006 SubstitutablePathInfos & infos)
995{ 1007{
996 PathSet todo = paths; 1008 if (!paths.empty()) {
997 foreach (Paths::iterator, i, settings.substituters) { 1009 PathSet todo = paths;
998 if (todo.empty()) break; 1010 querySubstitutablePathInfos(todo, infos);
999 querySubstitutablePathInfos(*i, todo, infos);
1000 } 1011 }
1001} 1012}
1002 1013
@@ -1224,8 +1235,9 @@ static void checkSecrecy(const Path & path)
1224 1235
1225static std::string runAuthenticationProgram(const Strings & args) 1236static std::string runAuthenticationProgram(const Strings & args)
1226{ 1237{
1227 return runProgram(settings.nixLibexecDir + "/authenticate", 1238 Strings fullArgs = { "authenticate" };
1228 false, args); 1239 fullArgs.insert(fullArgs.end(), args.begin(), args.end()); // append
1240 return runProgram(settings.guixProgram, false, fullArgs);
1229} 1241}
1230 1242
1231void LocalStore::exportPath(const Path & path, bool sign, 1243void LocalStore::exportPath(const Path & path, bool sign,
diff --git a/nix/libstore/local-store.hh b/nix/libstore/local-store.hh
index 4e6b4cfc1df..4113fafcb5d 100644
--- a/nix/libstore/local-store.hh
+++ b/nix/libstore/local-store.hh
@@ -40,7 +40,6 @@ struct OptimiseStats
40 40
41struct RunningSubstituter 41struct RunningSubstituter
42{ 42{
43 Path program;
44 Pid pid; 43 Pid pid;
45 AutoCloseFD to, from, error; 44 AutoCloseFD to, from, error;
46 FdSource fromBuf; 45 FdSource fromBuf;
@@ -52,8 +51,8 @@ struct RunningSubstituter
52class LocalStore : public StoreAPI 51class LocalStore : public StoreAPI
53{ 52{
54private: 53private:
55 typedef std::map<Path, RunningSubstituter> RunningSubstituters; 54 /* The currently running substituter or empty. */
56 RunningSubstituters runningSubstituters; 55 std::unique_ptr<RunningSubstituter> runningSubstituter;
57 56
58 Path linksDir; 57 Path linksDir;
59 58
@@ -93,8 +92,8 @@ public:
93 92
94 PathSet querySubstitutablePaths(const PathSet & paths); 93 PathSet querySubstitutablePaths(const PathSet & paths);
95 94
96 void querySubstitutablePathInfos(const Path & substituter, 95 void querySubstitutablePathInfos(PathSet & paths,
97 PathSet & paths, SubstitutablePathInfos & infos); 96 SubstitutablePathInfos & infos);
98 97
99 void querySubstitutablePathInfos(const PathSet & paths, 98 void querySubstitutablePathInfos(const PathSet & paths,
100 SubstitutablePathInfos & infos); 99 SubstitutablePathInfos & infos);
@@ -261,8 +260,7 @@ private:
261 260
262 void removeUnusedLinks(const GCState & state); 261 void removeUnusedLinks(const GCState & state);
263 262
264 void startSubstituter(const Path & substituter, 263 void startSubstituter(RunningSubstituter & runningSubstituter);
265 RunningSubstituter & runningSubstituter);
266 264
267 string getLineFromSubstituter(RunningSubstituter & run); 265 string getLineFromSubstituter(RunningSubstituter & run);
268 266
diff --git a/nix/local.mk b/nix/local.mk
index 6d7e60e9fb2..dc5a8398b2e 100644
--- a/nix/local.mk
+++ b/nix/local.mk
@@ -110,7 +110,6 @@ libstore_a_CPPFLAGS = \
110 -DNIX_STATE_DIR=\"$(localstatedir)/guix\" \ 110 -DNIX_STATE_DIR=\"$(localstatedir)/guix\" \
111 -DNIX_LOG_DIR=\"$(localstatedir)/log/guix\" \ 111 -DNIX_LOG_DIR=\"$(localstatedir)/log/guix\" \
112 -DGUIX_CONFIGURATION_DIRECTORY=\"$(sysconfdir)/guix\" \ 112 -DGUIX_CONFIGURATION_DIRECTORY=\"$(sysconfdir)/guix\" \
113 -DNIX_LIBEXEC_DIR=\"$(libexecdir)/guix\" \
114 -DNIX_BIN_DIR=\"$(bindir)\" \ 113 -DNIX_BIN_DIR=\"$(bindir)\" \
115 -DDEFAULT_CHROOT_DIRS="\"\"" 114 -DDEFAULT_CHROOT_DIRS="\"\""
116 115
@@ -154,21 +153,6 @@ noinst_HEADERS = \
154 (lambda (in) \ 153 (lambda (in) \
155 (write (get-string-all in) out)))))" 154 (write (get-string-all in) out)))))"
156 155
157nodist_pkglibexec_SCRIPTS = \
158 %D%/scripts/list-runtime-roots \
159 %D%/scripts/substitute \
160 %D%/scripts/download
161
162if BUILD_DAEMON_OFFLOAD
163
164nodist_pkglibexec_SCRIPTS += \
165 %D%/scripts/offload
166
167endif BUILD_DAEMON_OFFLOAD
168
169nodist_pkglibexec_SCRIPTS += \
170 %D%/scripts/authenticate
171
172# The '.service' files for systemd. 156# The '.service' files for systemd.
173systemdservicedir = $(libdir)/systemd/system 157systemdservicedir = $(libdir)/systemd/system
174nodist_systemdservice_DATA = etc/guix-daemon.service etc/guix-publish.service 158nodist_systemdservice_DATA = etc/guix-daemon.service etc/guix-publish.service
diff --git a/nix/nix-daemon/guix-daemon.cc b/nix/nix-daemon/guix-daemon.cc
index f47d1426128..6f9c404c8df 100644
--- a/nix/nix-daemon/guix-daemon.cc
+++ b/nix/nix-daemon/guix-daemon.cc
@@ -466,23 +466,15 @@ main (int argc, char *argv[])
466 { 466 {
467 settings.processEnvironment (); 467 settings.processEnvironment ();
468 468
469 /* Use our substituter by default. */ 469 /* Enable substitutes by default. */
470 settings.substituters.clear ();
471 settings.set ("build-use-substitutes", "true"); 470 settings.set ("build-use-substitutes", "true");
472 471
473 /* Use our substitute server by default. */ 472 /* Use our substitute server by default. */
474 settings.set ("substitute-urls", GUIX_SUBSTITUTE_URLS); 473 settings.set ("substitute-urls", GUIX_SUBSTITUTE_URLS);
475 474
476#ifdef HAVE_DAEMON_OFFLOAD_HOOK 475#ifdef HAVE_DAEMON_OFFLOAD_HOOK
477 /* Use our build hook for distributed builds by default. */ 476 /* Use 'guix offload' for distributed builds by default. */
478 settings.useBuildHook = true; 477 settings.useBuildHook = true;
479 if (getenv ("NIX_BUILD_HOOK") == NULL)
480 {
481 std::string build_hook;
482
483 build_hook = settings.nixLibexecDir + "/offload";
484 setenv ("NIX_BUILD_HOOK", build_hook.c_str (), 1);
485 }
486#else 478#else
487 /* We are not installing any build hook, so disable it. */ 479 /* We are not installing any build hook, so disable it. */
488 settings.useBuildHook = false; 480 settings.useBuildHook = false;
@@ -497,14 +489,6 @@ main (int argc, char *argv[])
497 printMsg(lvlDebug, 489 printMsg(lvlDebug,
498 format ("build log compression: %1%") % settings.logCompression); 490 format ("build log compression: %1%") % settings.logCompression);
499 491
500 if (settings.useSubstitutes)
501 settings.substituters.push_back (settings.nixLibexecDir
502 + "/substitute");
503 else
504 /* Clear the substituter list to make sure nothing ever gets
505 substituted, regardless of the client's settings. */
506 settings.substituters.clear ();
507
508 if (geteuid () == 0 && settings.buildUsersGroup.empty ()) 492 if (geteuid () == 0 && settings.buildUsersGroup.empty ())
509 fprintf (stderr, _("warning: daemon is running as root, so \ 493 fprintf (stderr, _("warning: daemon is running as root, so \
510using `--build-users-group' is highly recommended\n")); 494using `--build-users-group' is highly recommended\n"));
diff --git a/nix/nix-daemon/nix-daemon.cc b/nix/nix-daemon/nix-daemon.cc
index 56137701a10..1163a249d18 100644
--- a/nix/nix-daemon/nix-daemon.cc
+++ b/nix/nix-daemon/nix-daemon.cc
@@ -1,3 +1,4 @@
1#include "config.h"
1#include "shared.hh" 2#include "shared.hh"
2#include "local-store.hh" 3#include "local-store.hh"
3#include "util.hh" 4#include "util.hh"
@@ -580,8 +581,14 @@ static void performOp(bool trusted, unsigned int clientVersion,
580 settings.set("build-max-silent-time", std::to_string(readInt(from))); 581 settings.set("build-max-silent-time", std::to_string(readInt(from)));
581 } 582 }
582 583
583 if (GET_PROTOCOL_MINOR(clientVersion) >= 2) 584 if (GET_PROTOCOL_MINOR(clientVersion) >= 2) {
585#ifdef HAVE_DAEMON_OFFLOAD_HOOK
584 settings.useBuildHook = readInt(from) != 0; 586 settings.useBuildHook = readInt(from) != 0;
587#else
588 readInt(from); // ignore the user's setting
589#endif
590 }
591
585 if (GET_PROTOCOL_MINOR(clientVersion) >= 4) { 592 if (GET_PROTOCOL_MINOR(clientVersion) >= 4) {
586 settings.buildVerbosity = (Verbosity) readInt(from); 593 settings.buildVerbosity = (Verbosity) readInt(from);
587 logType = (LogType) readInt(from); 594 logType = (LogType) readInt(from);
@@ -590,8 +597,12 @@ static void performOp(bool trusted, unsigned int clientVersion,
590 if (GET_PROTOCOL_MINOR(clientVersion) >= 6 597 if (GET_PROTOCOL_MINOR(clientVersion) >= 6
591 && GET_PROTOCOL_MINOR(clientVersion) < 0x61) 598 && GET_PROTOCOL_MINOR(clientVersion) < 0x61)
592 settings.set("build-cores", std::to_string(readInt(from))); 599 settings.set("build-cores", std::to_string(readInt(from)));
593 if (GET_PROTOCOL_MINOR(clientVersion) >= 10) 600 if (GET_PROTOCOL_MINOR(clientVersion) >= 10) {
594 settings.set("build-use-substitutes", readInt(from) ? "true" : "false"); 601 if (settings.useSubstitutes)
602 settings.set("build-use-substitutes", readInt(from) ? "true" : "false");
603 else
604 readInt(from); // substitutes remain disabled
605 }
595 if (GET_PROTOCOL_MINOR(clientVersion) >= 12) { 606 if (GET_PROTOCOL_MINOR(clientVersion) >= 12) {
596 unsigned int n = readInt(from); 607 unsigned int n = readInt(from);
597 for (unsigned int i = 0; i < n; i++) { 608 for (unsigned int i = 0; i < n; i++) {
diff --git a/nix/scripts/authenticate.in b/nix/scripts/authenticate.in
deleted file mode 100644
index 5ce57915f02..00000000000
--- a/nix/scripts/authenticate.in
+++ /dev/null
@@ -1,11 +0,0 @@
1#!@SHELL@
2# A shorthand for "guix authenticate", for use by the daemon.
3
4if test "x$GUIX_UNINSTALLED" = "x"
5then
6 prefix="@prefix@"
7 exec_prefix="@exec_prefix@"
8 exec "@bindir@/guix" authenticate "$@"
9else
10 exec guix authenticate "$@"
11fi
diff --git a/nix/scripts/download.in b/nix/scripts/download.in
deleted file mode 100644
index 4d7088a9933..00000000000
--- a/nix/scripts/download.in
+++ /dev/null
@@ -1,11 +0,0 @@
1#!@SHELL@
2# A shorthand for "guix perform-download", for use by the daemon.
3
4if test "x$GUIX_UNINSTALLED" = "x"
5then
6 prefix="@prefix@"
7 exec_prefix="@exec_prefix@"
8 exec "@bindir@/guix" perform-download "$@"
9else
10 exec guix perform-download "$@"
11fi
diff --git a/nix/scripts/list-runtime-roots.in b/nix/scripts/list-runtime-roots.in
deleted file mode 100644
index 5f2660fb5e6..00000000000
--- a/nix/scripts/list-runtime-roots.in
+++ /dev/null
@@ -1,147 +0,0 @@
1#!@GUILE@ -ds
2!#
3;;; GNU Guix --- Functional package management for GNU
4;;; Copyright © 2012, 2013, 2014, 2017 Ludovic Courtès <ludo@gnu.org>
5;;;
6;;; This file is part of GNU Guix.
7;;;
8;;; GNU Guix is free software; you can redistribute it and/or modify it
9;;; under the terms of the GNU General Public License as published by
10;;; the Free Software Foundation; either version 3 of the License, or (at
11;;; your option) any later version.
12;;;
13;;; GNU Guix is distributed in the hope that it will be useful, but
14;;; WITHOUT ANY WARRANTY; without even the implied warranty of
15;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16;;; GNU General Public License for more details.
17;;;
18;;; You should have received a copy of the GNU General Public License
19;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
20
21;;;
22;;; List files being used at run time; these files are garbage collector
23;;; roots. This is equivalent to `find-runtime-roots.pl' in Nix.
24;;;
25
26(use-modules (ice-9 ftw)
27 (ice-9 regex)
28 (ice-9 rdelim)
29 (ice-9 match)
30 (srfi srfi-1)
31 (srfi srfi-26)
32 (rnrs io ports))
33
34(define %proc-directory
35 ;; Mount point of Linuxish /proc file system.
36 "/proc")
37
38(define %store-directory
39 (or (getenv "NIX_STORE_DIR")
40 "@storedir@"))
41
42(define (proc-file-roots dir file)
43 "Return a one-element list containing the file pointed to by DIR/FILE,
44or the empty list."
45 (or (and=> (false-if-exception (readlink (string-append dir "/" file)))
46 list)
47 '()))
48
49(define proc-exe-roots (cut proc-file-roots <> "exe"))
50(define proc-cwd-roots (cut proc-file-roots <> "cwd"))
51
52(define (proc-fd-roots dir)
53 "Return the list of store files referenced by DIR, which is a
54/proc/XYZ directory."
55 (let ((dir (string-append dir "/fd")))
56 (filter-map (lambda (file)
57 (let ((target (false-if-exception
58 (readlink (string-append dir "/" file)))))
59 (and target
60 (string-prefix? "/" target)
61 target)))
62 (or (scandir dir string->number) '()))))
63
64(define (proc-maps-roots dir)
65 "Return the list of store files referenced by DIR, which is a
66/proc/XYZ directory."
67 (define %file-mapping-line
68 (make-regexp "^.*[[:blank:]]+/([^ ]+)$"))
69
70 (call-with-input-file (string-append dir "/maps")
71 (lambda (maps)
72 (let loop ((line (read-line maps))
73 (roots '()))
74 (cond ((eof-object? line)
75 roots)
76 ((regexp-exec %file-mapping-line line)
77 =>
78 (lambda (match)
79 (let ((file (string-append "/"
80 (match:substring match 1))))
81 (loop (read-line maps)
82 (cons file roots)))))
83 (else
84 (loop (read-line maps) roots)))))))
85
86(define (proc-environ-roots dir)
87 "Return the list of store files referenced by DIR/environ, where DIR is a
88/proc/XYZ directory."
89 (define split-on-nul
90 (cute string-tokenize <>
91 (char-set-complement (char-set #\nul))))
92
93 (define (rhs-file-names str)
94 (let ((equal (string-index str #\=)))
95 (if equal
96 (let* ((str (substring str (+ 1 equal)))
97 (rx (string-append (regexp-quote %store-directory)
98 "/[0-9a-z]{32}-[a-zA-Z0-9\\._+-]+")))
99 (map match:substring (list-matches rx str)))
100 '())))
101
102 (define environ
103 (string-append dir "/environ"))
104
105 (append-map rhs-file-names
106 (split-on-nul
107 (call-with-input-file environ
108 get-string-all))))
109
110(define (referenced-files)
111 "Return the list of referenced store items."
112 (append-map (lambda (pid)
113 (let ((proc (string-append %proc-directory "/" pid)))
114 (catch 'system-error
115 (lambda ()
116 (append (proc-exe-roots proc)
117 (proc-cwd-roots proc)
118 (proc-fd-roots proc)
119 (proc-maps-roots proc)
120 (proc-environ-roots proc)))
121 (lambda args
122 (let ((err (system-error-errno args)))
123 (if (or (= ENOENT err) ;TOCTTOU race
124 (= ESRCH err) ;ditto
125 (= EACCES err)) ;not running as root
126 '()
127 (apply throw args)))))))
128 (scandir %proc-directory string->number
129 (lambda (a b)
130 (< (string->number a) (string->number b))))))
131
132(define canonicalize-store-item
133 (let* ((store (string-append %store-directory "/"))
134 (prefix (string-length store)))
135 (lambda (file)
136 "Return #f if FILE is not a store item; otherwise, return the store file
137name without any sub-directory components."
138 (and (string-prefix? store file)
139 (string-append store
140 (let ((base (string-drop file prefix)))
141 (match (string-index base #\/)
142 (#f base)
143 (slash (string-take base slash)))))))))
144
145(for-each (cut simple-format #t "~a~%" <>)
146 (delete-duplicates
147 (filter-map canonicalize-store-item (referenced-files))))
diff --git a/nix/scripts/offload.in b/nix/scripts/offload.in
deleted file mode 100644
index 50faed31c0b..00000000000
--- a/nix/scripts/offload.in
+++ /dev/null
@@ -1,11 +0,0 @@
1#!@SHELL@
2# A shorthand for "guix offload", for use by the daemon.
3
4if test "x$GUIX_UNINSTALLED" = "x"
5then
6 prefix="@prefix@"
7 exec_prefix="@exec_prefix@"
8 exec "@bindir@/guix" offload "$@"
9else
10 exec guix offload "$@"
11fi
diff --git a/nix/scripts/substitute.in b/nix/scripts/substitute.in
deleted file mode 100644
index 5a2eeb7259a..00000000000
--- a/nix/scripts/substitute.in
+++ /dev/null
@@ -1,11 +0,0 @@
1#!@SHELL@
2# A shorthand for "guix substitute", for use by the daemon.
3
4if test "x$GUIX_UNINSTALLED" = "x"
5then
6 prefix="@prefix@"
7 exec_prefix="@exec_prefix@"
8 exec "@bindir@/guix" substitute "$@"
9else
10 exec guix substitute "$@"
11fi
diff --git a/tests/networking.scm b/tests/networking.scm
new file mode 100644
index 00000000000..439cca5ffc9
--- /dev/null
+++ b/tests/networking.scm
@@ -0,0 +1,113 @@
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
3;;;
4;;; This file is part of GNU Guix.
5;;;
6;;; GNU Guix is free software; you can redistribute it and/or modify it
7;;; under the terms of the GNU General Public License as published by
8;;; the Free Software Foundation; either version 3 of the License, or (at
9;;; your option) any later version.
10;;;
11;;; GNU Guix is distributed in the hope that it will be useful, but
12;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14;;; GNU General Public License for more details.
15;;;
16;;; You should have received a copy of the GNU General Public License
17;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
18
19(define-module (tests networking)
20 #:use-module (ice-9 regex)
21 #:use-module (gnu services networking)
22 #:use-module (srfi srfi-64))
23
24;;; Tests for the (gnu services networking) module.
25
26(test-begin "networking")
27
28
29;;;
30;;; NTP.
31;;;
32
33(define ntp-server->string (@@ (gnu services networking) ntp-server->string))
34
35(define %ntp-server-sample
36 (ntp-server
37 (type 'server)
38 (address "some.ntp.server.org")
39 (options `(iburst (version 3) (maxpoll 16) prefer))))
40
41(test-equal "ntp-server->string"
42 (ntp-server->string %ntp-server-sample)
43 "server some.ntp.server.org iburst version 3 maxpoll 16 prefer")
44
45(test-equal "ntp configuration servers deprecated form"
46 (ntp-configuration-servers
47 (ntp-configuration
48 (servers (list (ntp-server
49 (type 'server)
50 (address "example.pool.ntp.org")
51 (options '()))))))
52 (ntp-configuration-servers
53 (ntp-configuration
54 (servers (list "example.pool.ntp.org")))))
55
56
57;;;
58;;; OpenNTPD
59;;;
60
61(define openntpd-configuration->string (@@ (gnu services networking)
62 openntpd-configuration->string))
63
64(define %openntpd-conf-sample
65 (openntpd-configuration
66 (server '("0.guix.pool.ntp.org" "1.guix.pool.ntp.org"))
67 (listen-on '("127.0.0.1" "::1"))
68 (sensor '("udcf0 correction 70000"))
69 (constraint-from '("www.gnu.org"))
70 (constraints-from '("https://www.google.com/"))
71 (allow-large-adjustment? #t)))
72
73(test-assert "openntpd configuration generation sanity check"
74
75 (begin
76 (define (string-match/newline pattern text)
77 (regexp-exec (make-regexp pattern regexp/newline) text))
78
79 (define (match-count pattern text)
80 (fold-matches (make-regexp pattern regexp/newline) text 0
81 (lambda (match count)
82 (1+ count))))
83
84 (let ((config (openntpd-configuration->string %openntpd-conf-sample)))
85 (if (not
86 (and (string-match/newline "^listen on 127.0.0.1$" config)
87 (string-match/newline "^listen on ::1$" config)
88 (string-match/newline "^sensor udcf0 correction 70000$" config)
89 (string-match/newline "^constraint from www.gnu.org$" config)
90 (string-match/newline "^server 0.guix.pool.ntp.org$" config)
91 (string-match/newline
92 "^constraints from \"https://www.google.com/\"$"
93 config)
94
95 ;; Check for issue #3731 (see:
96 ;; http://debbugs.gnu.org/cgi/bugreport.cgi?bug=37318).
97 (= (match-count "^listen on " config) 2)
98 (= (match-count "^sensor " config) 1)
99 (= (match-count "^constraint from " config) 1)
100 (= (match-count "^server " config) 2)
101 (= (match-count "^constraints from " config) 1)))
102 (begin
103 (format #t "The configuration below failed \
104the sanity check:\n~a~%" config)
105 #f)
106 #t))))
107
108(test-equal "openntpd generated config string ends with a newline"
109 (let ((config (openntpd-configuration->string %openntpd-conf-sample)))
110 (string-take-right config 1))
111 "\n")
112
113(test-end "networking")
diff --git a/tests/opam.scm b/tests/opam.scm
index e8c0d151983..d3626fd0104 100644
--- a/tests/opam.scm
+++ b/tests/opam.scm
@@ -99,7 +99,7 @@ url {
99 ('base32 99 ('base32
100 (? string? hash))))) 100 (? string? hash)))))
101 ('build-system 'ocaml-build-system) 101 ('build-system 'ocaml-build-system)
102 ('inputs 102 ('propagated-inputs
103 ('quasiquote 103 ('quasiquote
104 (("ocaml-zarith" ('unquote 'ocaml-zarith))))) 104 (("ocaml-zarith" ('unquote 'ocaml-zarith)))))
105 ('native-inputs 105 ('native-inputs