summary refs log tree commit diff
path: root/gnu/packages
diff options
context:
space:
mode:
authorTobias Geerinckx-Rice <me@tobias.gr>2021-06-23 18:45:21 +0200
committerTobias Geerinckx-Rice <me@tobias.gr>2021-06-23 18:45:21 +0200
commit9dea3f101f252331c049c03f501398a5ec837ba9 (patch)
tree61d683a9fae3e147332d07fef207c1ddf51fc301 /gnu/packages
parent7f0af119a1e3ea9d0ae53811b619437b3e942702 (diff)
parent620669fd17306c2edb21c64a99fa47160fefb319 (diff)
downloadguix-9dea3f101f252331c049c03f501398a5ec837ba9.tar.gz
Merge branch 'master' into core-updates
Conflicts:
	gnu/packages/cups.scm
	gnu/packages/python-web.scm
	gnu/packages/web.scm
	guix/build/maven/pom.scm
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/admin.scm26
-rw-r--r--gnu/packages/algebra.scm4
-rw-r--r--gnu/packages/audio.scm93
-rw-r--r--gnu/packages/backup.scm4
-rw-r--r--gnu/packages/bioconductor.scm118
-rw-r--r--gnu/packages/bioinformatics.scm119
-rw-r--r--gnu/packages/browser-extensions.scm8
-rw-r--r--gnu/packages/chromium.scm8
-rw-r--r--gnu/packages/cran.scm3
-rw-r--r--gnu/packages/crates-io.scm113
-rw-r--r--gnu/packages/databases.scm14
-rw-r--r--gnu/packages/disk.scm52
-rw-r--r--gnu/packages/dns.scm4
-rw-r--r--gnu/packages/emacs-xyz.scm55
-rw-r--r--gnu/packages/emulators.scm5
-rw-r--r--gnu/packages/engineering.scm16
-rw-r--r--gnu/packages/erlang.scm2
-rw-r--r--gnu/packages/finance.scm9
-rw-r--r--gnu/packages/fonts.scm34
-rw-r--r--gnu/packages/game-development.scm35
-rw-r--r--gnu/packages/games.scm42
-rw-r--r--gnu/packages/geo.scm89
-rw-r--r--gnu/packages/gnome.scm64
-rw-r--r--gnu/packages/golang.scm27
-rw-r--r--gnu/packages/irc.scm4
-rw-r--r--gnu/packages/java.scm203
-rw-r--r--gnu/packages/libreoffice.scm50
-rw-r--r--gnu/packages/linux.scm7
-rw-r--r--gnu/packages/lisp-xyz.scm224
-rw-r--r--gnu/packages/lua.scm13
-rw-r--r--gnu/packages/mail.scm8
-rw-r--r--gnu/packages/maths.scm13
-rw-r--r--gnu/packages/maven.scm66
-rw-r--r--gnu/packages/messaging.scm31
-rw-r--r--gnu/packages/moreutils.scm10
-rw-r--r--gnu/packages/networking.scm8
-rw-r--r--gnu/packages/ocaml.scm177
-rw-r--r--gnu/packages/patches/cups-CVE-2020-10001.patch47
-rw-r--r--gnu/packages/patches/linkchecker-tests-require-network.patch182
-rw-r--r--gnu/packages/patches/tlf-support-hamlib-4.2+.patch66
-rw-r--r--gnu/packages/patches/widelands-system-wide_minizip.patch44
-rw-r--r--gnu/packages/protobuf.scm2
-rw-r--r--gnu/packages/python-science.scm3
-rw-r--r--gnu/packages/python-web.scm10
-rw-r--r--gnu/packages/python-xyz.scm78
-rw-r--r--gnu/packages/radio.scm62
-rw-r--r--gnu/packages/rust-apps.scm4
-rw-r--r--gnu/packages/serialization.scm4
-rw-r--r--gnu/packages/text-editors.scm10
-rw-r--r--gnu/packages/tmux.scm9
-rw-r--r--gnu/packages/video.scm97
-rw-r--r--gnu/packages/vim.scm45
-rw-r--r--gnu/packages/virtualization.scm6
-rw-r--r--gnu/packages/vpn.scm4
-rw-r--r--gnu/packages/web-browsers.scm4
-rw-r--r--gnu/packages/web.scm37
56 files changed, 1841 insertions, 631 deletions
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 52c9492fcb..aab62331a3 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -42,6 +42,7 @@
 ;;; Copyright © 2021 Hyunseok Kim <lasnesne@lagunposprasihopre.org>
 ;;; Copyright © 2021 David Larsson <david.larsson@selfhosted.xyz>
 ;;; Copyright © 2021 WinterHound <winterhound@yandex.com>
+;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1333,14 +1334,14 @@ network statistics collection, security monitoring, network debugging, etc.")
 (define-public tcpdump
   (package
     (name "tcpdump")
-    (version "4.99.0")
+    (version "4.99.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.tcpdump.org/release/tcpdump-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0hmqh2fx8rgs9v1mk3vpywj61xvkifz260q685xllxr8jmxg3wlc"))))
+                "1ghfs5gifzrk3813zf9zalfbjs70wg6llz6q31k180r7zf2nkcvr"))))
     (build-system gnu-build-system)
     (inputs `(("libpcap" ,libpcap)
               ("openssl" ,openssl)))
@@ -1712,18 +1713,27 @@ commands and their arguments.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
+         (add-before 'configure 'pre-configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "GNUmakefile"
+               (("^\tchown.*$") ""))
+             ;; OpenDoas look for binaries in safepath when a rule specify a
+             ;; relative command, such as “permit keepenv :wheel cmd guix”.
+             (substitute* "doas.c"
+               (("safepath =" match)
+                (string-append match " \""
+                               "/run/setuid-programs:"
+                               "/run/current-system/profile/bin:"
+                               "/run/current-system/profile/sbin:"
+                               "\" ")))
+             #t))
          (replace 'configure
            ;; The configure script doesn't accept most of the default flags.
            (lambda* (#:key configure-flags #:allow-other-keys)
              ;; The configure script can be told which compiler to use only
              ;; through environment variables.
              (setenv "CC" ,(cc-for-target))
-             (apply invoke "./configure" configure-flags)))
-         (add-before 'install 'fix-makefile
-           (lambda* (#:key outputs #:allow-other-keys)
-             (substitute* "GNUmakefile"
-               (("^\tchown.*$") ""))
-             #t)))
+             (apply invoke "./configure" configure-flags))))
        #:configure-flags
        (list (string-append "--prefix=" (assoc-ref %outputs "out"))
              "--with-timestamp")
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index 40f1971860..35839b5ee9 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -76,7 +76,7 @@
 (define-public mpfrcx
   (package
    (name "mpfrcx")
-   (version "0.6.1")
+   (version "0.6.2")
    (source (origin
             (method url-fetch)
             (uri (string-append
@@ -84,7 +84,7 @@
                   version ".tar.gz"))
             (sha256
              (base32
-              "0gk2l40awp3q1lh828dhcjshcldy3b1l2v51glaq0lj1h7w34sin"))))
+              "165syd6kihwp6bry9hvr3v0908cgadsz5w5h5ry4mjnchrklnb7w"))))
    (build-system gnu-build-system)
    (propagated-inputs
      `(("gmp" ,gmp)
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index f7a675802c..09330c3bd3 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -85,6 +85,7 @@
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages image)
   #:use-module (gnu packages libbsd)
+  #:use-module (gnu packages libffi)
   #:use-module (gnu packages libusb)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages llvm)
@@ -2427,6 +2428,98 @@ included are the command line utilities @code{send_osc} and @code{dump_osc}.")
 (define-public python2-pyliblo
   (package-with-python2 python-pyliblo))
 
+(define-public python-soundfile
+  (package
+    (name "python-soundfile")
+    (version "0.10.3.post1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "SoundFile" version))
+       (sha256
+        (base32
+         "0yqhrfz7xkvqrwdxdx2ydy4h467sk7z3gf984y1x2cq7cm1gy329"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-cffi" ,python-cffi)
+       ("python-numpy" ,python-numpy)
+       ("libsndfile" ,libsndfile)))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)))
+    (arguments
+     `(#:tests? #f ; missing OGG support
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "soundfile.py"
+               (("_find_library\\('sndfile'\\)")
+                (string-append "\"" (assoc-ref inputs "libsndfile")
+                               "/lib/libsndfile.so\""))))))))
+    (home-page "https://github.com/bastibe/SoundFile")
+    (synopsis "Python bindings for libsndfile")
+    (description "This package provides python bindings for libsndfile based on
+CFFI and NumPy.")
+    (license license:expat)))
+
+(define-public python-python3-midi
+  (package
+    (name "python-python3-midi")
+    (version "0.2.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "python3_midi" version))
+       (sha256
+        (base32
+         "1z9j1w7mpn3xhkcpxmqm5rvmj6nffb5rf14bv7n3sdh07nf6n7sf"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/NFJones/python3-midi")
+    (synopsis "Python MIDI API")
+    (description "This package provides a python API to read and write MIDI
+files.")
+    (license license:expat)))
+
+(define-public audio-to-midi
+  (package
+    (name "audio-to-midi")
+    (version "2020.7")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+              (url "https://github.com/NFJones/audio-to-midi")
+              (commit (string-append "v" version))))
+        (sha256
+          (base32
+            "12wf17abn3psbsg2r2lk0xdnk8n5cd5rrvjlpxjnjfhd09n7qqgm"))))
+    (build-system python-build-system)
+    (propagated-inputs
+      `(("python-cffi" ,python-cffi)
+        ("python-cython" ,python-cython)
+        ("python-numpy" ,python-numpy)
+        ("python-progressbar2" ,python-progressbar2)
+        ("python-pycparser" ,python-pycparser)
+        ("python-python3-midi" ,python-python3-midi)
+        ("python-soundfile" ,python-soundfile)))
+    (native-inputs
+     `(("libsndfile" ,libsndfile)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-versions
+           (lambda _
+             (substitute* "requirements.txt" (("==") ">=")))))))
+    (home-page "https://github.com/NFJones/audio-to-midi")
+    (synopsis "Convert audio to multichannel MIDI.")
+    (description "@command{audio-to-midi} converts audio files to multichannel
+MIDI files.  It accomplishes this by performing FFTs on all channels of the
+audio data at user-specified time steps.  It then separates the resulting
+frequency analysis into equivalence classes which correspond to the twelve tone
+scale; the volume of each class being the average volume of its constituent
+frequencies.  This data is then formatted to MIDI and written to disk.")
+    (license license:expat)))
+
 (define-public lilv
   (package
     (name "lilv")
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 01849a0328..7bfbffe48c 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -451,7 +451,7 @@ rdiff-backup is easy to use and settings have sensible defaults.")
 (define-public rsnapshot
   (package
     (name "rsnapshot")
-    (version "1.4.3")
+    (version "1.4.4")
     (source
      (origin
        (method url-fetch)
@@ -459,7 +459,7 @@ rdiff-backup is easy to use and settings have sensible defaults.")
              "https://github.com/rsnapshot/rsnapshot/releases/download/"
              version "/rsnapshot-" version ".tar.gz"))
        (sha256
-        (base32 "1lavqmmsf53pim0nvming7fkng6p0nk2a51k2c2jdq0l7snpl31b"))))
+        (base32 "0yc5k2fhm54ypxgm1fsaf8vrg5b7qbvbsqk371n6baf592vprjy1"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index 35fb43b3cd..e8d353f49a 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -6205,6 +6205,80 @@ classification (assignment) methods.  It also contains a Shiny application for
 interactive exploration of results.")
     (license license:gpl2+)))
 
+(define-public r-residualmatrix
+  (package
+    (name "r-residualmatrix")
+    (version "1.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "ResidualMatrix" version))
+       (sha256
+        (base32
+         "0p7va19aw0j6anx7ck879kbi5cn7dy712h5ia94adr38ssismv1v"))))
+    (properties
+     `((upstream-name . "ResidualMatrix")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-delayedarray" ,r-delayedarray)
+       ("r-matrix" ,r-matrix)
+       ("r-s4vectors" ,r-s4vectors)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (home-page "https://github.com/LTLA/ResidualMatrix")
+    (synopsis "Create a DelayedMatrix of regression residuals")
+    (description
+     "This package implements tools for delayed computation of a matrix of
+residuals after fitting a linear model to each column of an input matrix.  It
+also supports partial computation of residuals where selected factors are to
+be preserved in the output matrix.  It implements a number of efficient
+methods for operating on the delayed matrix of residuals, most notably matrix
+multiplication and calculation of row/column sums or means.")
+    (license license:gpl3)))
+
+(define-public r-batchelor
+  (package
+    (name "r-batchelor")
+    (version "1.8.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "batchelor" version))
+       (sha256
+        (base32
+         "1xm204wp3m3mmlc1s59lscbbjvwm5nj32vvf16njcg7pb32lsiqa"))))
+    (properties `((upstream-name . "batchelor")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-beachmat" ,r-beachmat)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-biocneighbors" ,r-biocneighbors)
+       ("r-biocparallel" ,r-biocparallel)
+       ("r-biocsingular" ,r-biocsingular)
+       ("r-delayedarray" ,r-delayedarray)
+       ("r-delayedmatrixstats" ,r-delayedmatrixstats)
+       ("r-igraph" ,r-igraph)
+       ("r-matrix" ,r-matrix)
+       ("r-rcpp" ,r-rcpp)
+       ("r-residualmatrix" ,r-residualmatrix)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-scaledmatrix" ,r-scaledmatrix)
+       ("r-scuttle" ,r-scuttle)
+       ("r-singlecellexperiment" ,r-singlecellexperiment)
+       ("r-summarizedexperiment" ,r-summarizedexperiment)))
+    (native-inputs `(("r-knitr" ,r-knitr)))
+    (home-page "https://bioconductor.org/packages/batchelor")
+    (synopsis "Single-Cell Batch Correction Methods")
+    (description
+     "This package implements a variety of methods for batch correction of
+single-cell (RNA sequencing) data.  This includes methods based on detecting
+mutually nearest neighbors, as well as several efficient variants of linear
+regression of the log-expression values.  Functions are also provided to
+perform global rescaling to remove differences in depth between batches, and
+to perform a principal components analysis that is robust to differences in
+the numbers of cells across batches.")
+    (license license:gpl3)))
+
 (define-public r-mast
   (package
     (name "r-mast")
@@ -6297,10 +6371,44 @@ tasks on single cell expression data.  It is designed to work with RNA-Seq and
 qPCR data, but could be used with other types as well.")
     (license license:artistic2.0)))
 
+(define-public r-leidenbase
+  (let ((commit "430f22af6982cc7d2e6e77f6b0df47bc970dcbce")
+        (revision "1"))
+    (package
+      (name "r-leidenbase")
+      (version (git-version "0.1.3" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/cole-trapnell-lab/leidenbase")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0ylqsmdpv4xq6f6ldxvwkhk33a9i1jcgk60zvksk3iplykfzd6c0"))))
+      (properties `((upstream-name . "leidenbase")))
+      (build-system r-build-system)
+      (inputs
+       `(("zlib" ,zlib)))
+      (native-inputs
+       `(("gfortran" ,gfortran)))
+      (propagated-inputs
+       `(("r-igraph" ,r-igraph)))
+      (home-page "https://github.com/cole-trapnell-lab/leidenbase")
+      (synopsis "R and C wrappers to run the Leiden find_partition function")
+      (description
+       "This package provides an R to C interface that runs the Leiden
+community detection algorithm to find a basic partition.  It runs the
+equivalent of the @code{find_partition} function.  This package includes the
+required source code files from the official Leidenalg distribution and
+several functions from the R igraph package.")
+      (license license:gpl3+))))
+
 (define-public r-monocle3
   (package
     (name "r-monocle3")
-    (version "0.1.2")
+    (version "1.0.0")
     (source
      (origin
        (method git-fetch)
@@ -6310,10 +6418,12 @@ qPCR data, but could be used with other types as well.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1cjxqfw3qvy269hsf5v80d4kshl932wrl949iayas02saj6f70ls"))))
+         "16vpvlbms8fdvpfwzcig0rkg2mxnsq1h80d2l7q3953wm91qc9x4"))))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-biobase" ,r-biobase)
+     `(("r-assertthat" ,r-assertthat)
+       ("r-batchelor" ,r-batchelor)
+       ("r-biobase" ,r-biobase)
        ("r-biocgenerics" ,r-biocgenerics)
        ("r-delayedmatrixstats" ,r-delayedmatrixstats)
        ("r-dplyr" ,r-dplyr)
@@ -6323,6 +6433,7 @@ qPCR data, but could be used with other types as well.")
        ("r-htmlwidgets" ,r-htmlwidgets)
        ("r-igraph" ,r-igraph)
        ("r-irlba" ,r-irlba)
+       ("r-leidenbase" ,r-leidenbase)
        ("r-limma" ,r-limma)
        ("r-lmtest" ,r-lmtest)
        ("r-mass" ,r-mass)
@@ -6342,6 +6453,7 @@ qPCR data, but could be used with other types as well.")
        ("r-reshape2" ,r-reshape2)
        ("r-reticulate" ,r-reticulate)
        ("r-rhpcblasctl" ,r-rhpcblasctl)
+       ("r-rsample" ,r-rsample)
        ("r-rtsne" ,r-rtsne)
        ("r-shiny" ,r-shiny)
        ("r-slam" ,r-slam)
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index e4a01ca208..ab698fc0e8 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -11894,6 +11894,30 @@ options), bedgraph, links (represented as arcs), and Hi-C matrices.
 pyGenomeTracks can make plots with or without Hi-C data.")
     (license license:gpl3+)))
 
+(define-public python-iced
+  (package
+    (name "python-iced")
+    (version "0.5.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "iced" version))
+       (sha256
+        (base32
+         "1avcjmpyyvhgbj5qca4l70ipiz7j3xmcw9p6rd9c06j99faa0r71"))))
+    (build-system python-build-system)
+    (arguments `(#:tests? #false)) ; there are none
+    (propagated-inputs
+     `(("python-numpy" ,python-numpy)
+       ("python-pandas" ,python-pandas)
+       ("python-scipy" ,python-scipy)
+       ("python-scikit-learn" ,python-scikit-learn)))
+    (home-page "https://github.com/hiclib/iced")
+    (synopsis "ICE normalization")
+    (description "This is a package for normalizing Hi-C contact counts
+efficiently.")
+    (license license:bsd-3)))
+
 (define-public python-hic2cool
   (package
     (name "python-hic2cool")
@@ -14175,6 +14199,100 @@ researchers to design and build computational workflows for the analysis of
 large-scale data-analysis.")
     (license license:expat)))
 
+(define-public perl-cworld-dekker
+  (package
+    (name "perl-cworld-dekker")
+    (version "1.01")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/dekkerlab/cworld-dekker.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1dvh23fx52m59y6304xi2j2pl2hiqadlqg8jyv2pm14j1hy71ych"))))
+    (build-system perl-build-system)
+    (arguments
+     `(#:modules ((guix build perl-build-system)
+                  (guix build utils)
+                  (srfi srfi-26))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'hardcode-references
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((bedtools (assoc-ref inputs "bedtools"))
+                   (r (assoc-ref inputs "r-minimal")))
+               (substitute* '("scripts/python/getEigenVectors.py"
+                              "scripts/python/matrix2EigenVectors.py")
+                 (("bedtools intersect")
+                  (string-append bedtools "/bin/bedtools intersect")))
+               (substitute* "lib/cworld/dekker.pm"
+                 (("bedtools --version")
+                  (string-append bedtools "/bin/bedtools --version")))
+               (substitute* '("scripts/perl/correlateMatrices.pl"
+                              "scripts/perl/matrix2scaling.pl"
+                              "scripts/perl/matrix2distance.pl"
+                              "scripts/perl/coverageCorrect.pl"
+                              "scripts/perl/matrix2anchorPlot.pl"
+                              "scripts/python/matrix2EigenVectors.py"
+                              "scripts/python/matrix2insulation-lite.py"
+                              "scripts/perl/matrix2compartment.pl"
+                              "scripts/perl/anchorPurge.pl"
+                              "scripts/perl/applyCorrection.pl"
+                              "scripts/perl/compareInsulation.pl"
+                              "scripts/perl/fillMissingData.pl"
+                              "scripts/perl/matrix2loess.pl"
+                              "scripts/python/getEigenVectors.py"
+                              "scripts/perl/aggregateBED.pl"
+                              "scripts/perl/collapseMatrix.pl"
+                              "scripts/perl/matrix2direction.pl"
+                              "scripts/perl/singletonRemoval.pl"
+                              "lib/cworld/dekker.pm"
+                              "scripts/perl/matrix2insulation.pl")
+                 (("(`|\")Rscript" _ pre)
+                  (string-append pre r "/bin/Rscript"))))))
+         (add-after 'install 'install-scripts
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out   (assoc-ref outputs "out"))
+                    (share (string-append out "/share/cworld-dekker")))
+               (mkdir-p share)
+               (copy-recursively "scripts" share)
+
+               ;; Make all scripts executable and wrap them.
+               (let ((r     (find-files share "\\.R$"))
+                     (py    (find-files share "\\.py$"))
+                     (pl    (find-files share "\\.pl$"))
+                     (wrap  (lambda* (script var #:optional (extra ""))
+                              (let ((path (string-append (getenv var)
+                                                         extra)))
+                                (wrap-program script
+                                  `(,var ":" prefix (,path)))))))
+                 (for-each (cut chmod <> #o555) (append r py pl))
+                 (for-each (cut wrap <> "PERL5LIB"
+                                (string-append ":" out
+                                               "/lib/perl5/site_perl"))
+                           pl)
+                 (for-each (cut wrap <> "PYTHONPATH") py))))))))
+    (inputs
+     `(("libgd" ,gd)
+       ("perl-gd" ,perl-gd)
+       ("bedtools" ,bedtools)
+       ("python" ,python-wrapper)
+       ("python-scipy" ,python-scipy)
+       ("python-numpy" ,python-numpy)
+       ("python-matplotlib" ,python-matplotlib)
+       ("python-h5py" ,python-h5py)
+       ("python-scikit-learn" ,python-scikit-learn)
+       ("r-minimal" ,r-minimal)))
+    (native-inputs
+     `(("perl-module-build" ,perl-module-build)))
+    (home-page "https://github.com/dekkerlab/cworld-dekker")
+    (synopsis "Utility and analysis scripts for 3C, 4C, 5C, and Hi-C data")
+    (description "This package is a collection of Perl, Python, and R
+scripts for manipulating 3C/4C/5C/Hi-C data.")
+    (license license:asl2.0)))
+
 (define-public ensembl-vep
   (let* ((api-version "103")
          (api-module
@@ -14195,6 +14313,7 @@ large-scale data-analysis.")
          (uri (git-reference
                (url "https://github.com/Ensembl/ensembl-vep.git")
                (commit (string-append "release/" version))))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1iq7p72cv9b38jz2v8a4slzy2n8y0md487943180ym9xc8qvw09c"))))
diff --git a/gnu/packages/browser-extensions.scm b/gnu/packages/browser-extensions.scm
index a5f0472c7e..a6120baf96 100644
--- a/gnu/packages/browser-extensions.scm
+++ b/gnu/packages/browser-extensions.scm
@@ -49,7 +49,7 @@ supported content to the Kodi media center.")
   (make-chromium-extension play-to-kodi))
 
 (define uassets
-  (let ((commit "f521473026f5f60cc753fa4a533af41badfc700e"))
+  (let ((commit "20d21ad7e92539660c7cde4c5884b3e234854264"))
     (origin
       (method git-fetch)
       (uri (git-reference
@@ -58,12 +58,12 @@ supported content to the Kodi media center.")
       (file-name (git-file-name "uAssets" (string-take commit 9)))
       (sha256
        (base32
-        "0ms0xxj6rcfkib33wjbki631wix17vvzr4m6z0phqmaj49bla4kz")))))
+        "1xcl4qnvjb4pv3fajpmycg1i0xqsah2qakhq2figvyrq991pldy1")))))
 
 (define ublock-origin
   (package
     (name "ublock-origin")
-    (version "1.35.2")
+    (version "1.36.0")
     (home-page "https://github.com/gorhill/uBlock")
     (source (origin
               (method git-fetch)
@@ -71,7 +71,7 @@ supported content to the Kodi media center.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0w4rfwgvkjvdfccxi9b4qhp0hylnd946diri19cp3fd72zkjlcky"))))
+                "1r3aic18zkz8s3v1a2kffidp4swzbxnq0h8444bif9myjffnpxpj"))))
     (build-system gnu-build-system)
     (outputs '("xpi" "firefox" "chromium"))
     (arguments
diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm
index 8d7326e1c4..596a84a0d6 100644
--- a/gnu/packages/chromium.scm
+++ b/gnu/packages/chromium.scm
@@ -322,11 +322,11 @@
                   (string-append "ungoogled-chromium-" category "-" name))))
     (sha256 (base32 hash))))
 
-(define %chromium-version "91.0.4472.106")
+(define %chromium-version "91.0.4472.114")
 (define %debian-revision "debian/90.0.4430.85-1")
 ;; Note: use 'git describe --long' even for exact tags to placate the
 ;; custom version format for ungoogled-chromium.
-(define %ungoogled-revision "91.0.4472.101-1-2-gbd0ffd1")
+(define %ungoogled-revision "91.0.4472.114-1-0-ga9eb6fd")
 
 (define %debian-patches
   (list (debian-patch "fixes/nomerge.patch"
@@ -346,7 +346,7 @@
     (file-name (git-file-name "ungoogled-chromium" %ungoogled-revision))
     (sha256
      (base32
-      "0676wkk1zlccwwwk4hi8ifhrk2x5s66fi0amsj30b7lnydzwpfv9"))))
+      "1xb5g3hybaiwn3y1zw1fxd3g0zwmvplrs06sdqnxzsr1qm8b874h"))))
 
 (define %guix-patches
   (list (local-file
@@ -488,7 +488,7 @@
                                   %chromium-version ".tar.xz"))
               (sha256
                (base32
-                "1fxy1l2dl0f6v8566lykcng18ma6fv4nlwxmdb0hh06fgp6khpjl"))
+                "0wbyiwbdazgjjgj9vs56x26q3g9r80a57gfl0f2rfl1j7xwgxiy1"))
               (modules '((guix build utils)))
               (snippet (force ungoogled-chromium-snippet))))
     (build-system gnu-build-system)
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index e01b2417d2..f8c2258c34 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -17760,7 +17760,8 @@ colored by the number of neighboring points.  This is useful to visualize the
     (properties `((upstream-name . "arrow")))
     (build-system r-build-system)
     (inputs
-     `(("zlib" ,zlib)))
+     `(("apache-arrow" ,apache-arrow "lib")
+       ("zlib" ,zlib)))
     (propagated-inputs
      `(("r-assertthat" ,r-assertthat)
        ("r-bit64" ,r-bit64)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index e78f081c37..e6f7aca19b 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -18,6 +18,7 @@
 ;;; Copyright © 2021 Alexandru-Sergiu Marton <brown121407@posteo.ro>
 ;;; Copyright © 2021 Antero Mejr <antero@kodmin.com>
 ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -4206,6 +4207,42 @@ c6e7d37.  However, this package works only up to 128 bytes.")
     (description "This library provides for encoding and decoding any base.")
     (license license:expat)))
 
+(define-public rust-battery-0.7
+  (package
+    (name "rust-battery")
+    (version "0.7.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "battery" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1r1641dyks76p39i1iihswhc6iz5z51pihmpxniy1h1pi4k29dml"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f ;; Tests fail with "No such file or directory".
+       #:cargo-inputs
+       (("rust-cfg-if" ,rust-cfg-if-1)
+        ("rust-core-foundation"
+         ,rust-core-foundation-0.7)
+        ("rust-lazycell" ,rust-lazycell-1)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-mach" ,rust-mach-0.3)
+        ("rust-nix" ,rust-nix-0.19)
+        ("rust-num-traits" ,rust-num-traits-0.2)
+        ("rust-uom" ,rust-uom-0.30)
+        ("rust-winapi" ,rust-winapi-0.3))
+       #:cargo-development-inputs
+       (("rust-approx" ,rust-approx-0.3)
+        ("rust-tempfile" ,rust-tempfile-3))))
+    (home-page "https://github.com/svartalf/rust-battery")
+    (synopsis "Information about the notebook batteries")
+    (description
+     "@code{battery} provides a unified API to a notebook batteries state.")
+    ;; Dual licensed, either license applies.
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-beef-0.5
   (package
     (name "rust-beef")
@@ -23160,7 +23197,7 @@ requires non-const function calls to be computed.")
 (define-public rust-lazycell-1
   (package
     (name "rust-lazycell")
-    (version "1.2.1")
+    (version "1.3.0")
     (source
      (origin
        (method url-fetch)
@@ -23169,11 +23206,10 @@ requires non-const function calls to be computed.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0gvqycmpv7parc98i6y64ai7rvxrn1947z2a6maa02g4kvxdd55j"))))
+         "0m8gw7dn30i0zjjpjdyf6pc16c34nl71lpv461mix50x3p70h3c3"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs (("rust-clippy" ,rust-clippy-0.0))))
+     `(#:cargo-inputs (("rust-clippy" ,rust-clippy-0.0))))
     (home-page "https://github.com/indiv0/lazycell")
     (synopsis "Lazily filled Cell struct")
     (description
@@ -24874,17 +24910,17 @@ lexer.")
      "This package provides a collection of great and ubiqutitous macros.")
     (license (list license:asl2.0 license:expat))))
 
-(define-public rust-mach-0.2
+(define-public rust-mach-0.3
   (package
     (name "rust-mach")
-    (version "0.2.3")
+    (version "0.3.0")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "mach" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "1qdhs16cl1j3w7kvy6ak7h8lbyqmr6i3i15qfzpnv9gyrn3j9pc6"))))
+        (base32 "0a895rhg3a1l3ws4qf83s5mx0g29v1fzgjmbag1h36v62hmg1vi8"))))
     (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
@@ -24897,6 +24933,19 @@ lexer.")
 Mach 3.0 kernel that underlies OSX.")
     (license (list license:asl2.0 license:expat license:bsd-2))))
 
+(define-public rust-mach-0.2
+  (package
+    (inherit rust-mach-0.3)
+    (name "rust-mach")
+    (version "0.2.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "mach" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1qdhs16cl1j3w7kvy6ak7h8lbyqmr6i3i15qfzpnv9gyrn3j9pc6"))))))
+
 (define-public rust-mach-o-sys-0.1
   (package
     (name "rust-mach-o-sys")
@@ -29688,14 +29737,14 @@ system for OpenSSL.")
 (define-public rust-openssl-sys-0.9
   (package
     (name "rust-openssl-sys")
-    (version "0.9.60")
+    (version "0.9.64")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "openssl-sys" version))
         (file-name (string-append name "-" version ".tar.gz"))
         (sha256
-         (base32 "1rpkfl0rmdcvxzyzp3n24g9clplh4avgzpi5c2a3hx96hcccf7wj"))
+         (base32 "1bsim2zk69q1dw6rixn48l1ci8bmz5kvbkgsks2ci079w0pzr7i0"))
         (patches (search-patches "rust-openssl-sys-no-vendor.patch"))))
     (build-system cargo-build-system)
     (arguments
@@ -51619,6 +51668,52 @@ untrusted inputs in Rust.")
        (sha256
         (base32 "0byf88b7ca1kb5aap8f6npp6xncvg95dnma8ipmnmd4n9r5izkam"))))))
 
+(define-public rust-uom-0.31
+  (package
+    (name "rust-uom")
+    (version "0.31.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "uom" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "0dwih0bclq18gfdf7if6kqip82w8yrf076l0ad1n3gr71bynpvmi"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-num-bigint" ,rust-num-bigint-0.3)
+        ("rust-num-rational" ,rust-num-rational-0.3)
+        ("rust-num-traits" ,rust-num-traits-0.2)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-typenum" ,rust-typenum-1))
+       #:cargo-development-inputs
+       (("rust-approx" ,rust-approx-0.3)
+        ("rust-quickcheck" ,rust-quickcheck-0.9)
+        ("rust-serde-json" ,rust-serde-json-1)
+        ("rust-static-assertions"
+         ,rust-static-assertions-1))))
+    (home-page "https://github.com/iliekturtles/uom")
+    (synopsis "Units of measurement")
+    (description "Units of measurement is a crate that does automatic
+type-safe zero-cost dimensional analysis.")
+    ;; Dual-licensed, either license applies.
+    (license (list license:asl2.0 license:expat))))
+
+(define-public rust-uom-0.30
+  (package
+    (inherit rust-uom-0.31)
+    (name "rust-uom")
+    (version "0.30.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "uom" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1vg59hnb7hh0p8kjjhgmrsnn3597722lkfdkp481wksq6vk06rg7"))))))
+
 (define-public rust-url-2
   (package
     (name "rust-url")
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 63f9656e2d..0983951e5d 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -81,6 +81,7 @@
   #:use-module (gnu packages check)
   #:use-module (gnu packages cmake)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages cpp)
   #:use-module (gnu packages crypto)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages cyrus-sasl)
@@ -3640,7 +3641,7 @@ the SQL language using a syntax that reflects the resulting query.")
 (define-public apache-arrow
   (package
     (name "apache-arrow")
-    (version "3.0.0")
+    (version "4.0.1")
     (source
      (origin
        (method git-fetch)
@@ -3650,21 +3651,22 @@ the SQL language using a syntax that reflects the resulting query.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "03ngddh3r1g6f9aja2jlfksgvgyzmxmfy4bxvzjrcv5fvl5x8ii0"))))
+         "1lcd9gdpwlrr92rm812a5p4l6zx0arwd0zj72a4ga699s1psz8yv"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f
        #:phases
        (modify-phases %standard-phases
          (add-before 'configure 'enter-source-directory
-           (lambda _ (chdir "cpp") #t))
+           (lambda _ (chdir "cpp")))
          (add-after 'unpack 'set-env
            (lambda _
+             (substitute* "cpp/cmake_modules/ThirdpartyToolchain.cmake"
+               (("set\\(xsimd_SOURCE.*") ""))
              (setenv "BOOST_ROOT" (assoc-ref %build-inputs "boost"))
              (setenv "BROTLI_HOME" (assoc-ref %build-inputs "brotli"))
              (setenv "FLATBUFFERS_HOME" (assoc-ref %build-inputs "flatbuffers"))
-             (setenv "RAPIDJSON_HOME" (assoc-ref %build-inputs "rapidjson"))
-             #t)))
+             (setenv "RAPIDJSON_HOME" (assoc-ref %build-inputs "rapidjson")))))
        #:build-type "Release"
        #:configure-flags
        (list "-DARROW_PYTHON=ON"
@@ -3686,6 +3688,7 @@ the SQL language using a syntax that reflects the resulting query.")
              ;; function, or using pkg-config for packages that do not
              ;; have this feature
              "-DARROW_DEPENDENCY_SOURCE=SYSTEM"
+             "-Dxsimd_SOURCE=SYSTEM"
 
              ;; Split output into its component packages.
              (string-append "-DCMAKE_INSTALL_PREFIX="
@@ -3744,6 +3747,7 @@ the SQL language using a syntax that reflects the resulting query.")
        ("re2" ,re2)
        ("snappy" ,snappy)
        ("utf8proc" ,utf8proc)
+       ("xsimd" ,xsimd)
        ("zlib" ,zlib)
        ("zstd" ,zstd "lib")))
     (native-inputs
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index ccda71b268..2a4dbee748 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -20,6 +20,7 @@
 ;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org>
 ;;; Copyright © 2021 Michael Rohleder <mike@rohleder.de>
 ;;; Copyright © 2021 Mathieu Othacehe <othacehe@gnu.org>
+;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -46,6 +47,7 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages crypto)
   #:use-module (gnu packages cryptsetup)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages elf)
@@ -1303,3 +1305,53 @@ like raw system image files, can be copied or flashed a lot faster and more
 reliably with @code{bmaptool} than with traditional tools, like @code{dd} or
 @code{cp}.")
     (license license:gpl2)))
+
+(define-public duc
+  (package
+    (name "duc")
+    (version "1.4.4")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/zevv/duc")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1i7ry25xzy027g6ysv6qlf09ax04q4vy0kikl8h0aq5jbxsl9q52"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out")))
+               (substitute* "src/duc/cmd-ui.c"
+                 (("ncursesw/ncurses.h") "ncurses.h"))
+               (substitute* "examples/index.cgi"
+                 (("/usr/local/bin/duc")
+                  (string-append out "/bin/duc"))))))
+         (add-after 'install 'install-examples
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (doc (string-append out "/share/doc/" ,name "-" ,version)))
+               (copy-recursively "examples" (string-append doc "/examples"))))))))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("cairo" ,cairo)
+       ("pango" ,pango)
+       ("tokyocabinet" ,tokyocabinet)
+       ("ncurses" ,ncurses)))
+    (home-page "http://duc.zevv.nl")
+    (synopsis "Library and suite of tools for inspecting disk usage")
+    (description "Duc maintains a database of accumulated sizes of
+directories of the file system, and allows you to query this database with
+some tools, or create fancy graphs showing you where your bytes are.
+
+Duc comes with console utilities, ncurses and X11 user interfaces and a CGI
+wrapper for disk usage querying and visualisation.")
+    (license license:lgpl3+)))
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index 199b876369..dc6b101e3c 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -817,7 +817,7 @@ Extensions} (DNSSEC).")
 (define-public knot
   (package
     (name "knot")
-    (version "3.0.6")
+    (version "3.0.7")
     (source
      (origin
        (method git-fetch)
@@ -826,7 +826,7 @@ Extensions} (DNSSEC).")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0mjgjx43yb3w688jw16g5m1724wb0wnv4y7di2rslrp0s11wl2a9"))
+        (base32 "0ihd0lfh0r1nzz2di2rqkrx5j1017xv7m54irlhccx21inwv6g3y"))
        (modules '((guix build utils)))
        (snippet
         '(begin
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 1cc4a8de66..e7733d72d0 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -55,7 +55,7 @@
 ;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org>
 ;;; Copyright © 2019 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;; Copyright © 2019 Stephen Webber <montokapro@gmail.com>
-;;; Copyright © 2019 Leo Prikler <leo.prikler@student.tugraz.at>
+;;; Copyright © 2019, 2021 Leo Prikler <leo.prikler@student.tugraz.at>
 ;;; Copyright © 2019 David Wilson <david@daviwil.com>
 ;;; Copyright © 2020 Paul Garlick <pgarlick@tourbillion-technology.com>
 ;;; Copyright © 2020 Robert Smith <robertsmith@posteo.net>
@@ -2050,14 +2050,14 @@ incrementally confined in Isearch manner.")
 (define emacs-emms-print-metadata
   (package
     (name "emacs-emms-print-metadata")
-    (version "7.4")
+    (version "7.5")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "emms-" version ".tar"))
        (sha256
-        (base32 "153j76jfnh01b4pkkpyxfh83rl975rx0mh7mx4nnf83qd4dzkkd4"))))
+        (base32 "0d7nsx2idzbp6d5im5rrsnwppbr2cimvxgx31bhwsm2aq3ya5v2j"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags '("emms-print-metadata")
@@ -2815,7 +2815,7 @@ of bibliographic references.")
 (define-public emacs-corfu
   (package
     (name "emacs-corfu")
-    (version "0.8")
+    (version "0.9")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2824,7 +2824,7 @@ of bibliographic references.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "007r1l3ian2bfj4h2xkd2qwh1d1m7kda1p6pj51dikbzaphglh1r"))))
+                "0265kld5vg870n1zaks42qdawl03zi6rjhffrkkngwgs9i9ap30i"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/minad/corfu")
     (synopsis "Completion overlay region function")
@@ -3308,7 +3308,7 @@ during idle time, while Emacs is doing nothing else.")
                  ("pdf-tools-handle-upgrades" '()))))
            (add-after 'emacs-patch-variables 'emacs-expand-load-path
              (assoc-ref emacs:%standard-phases 'expand-load-path))
-           (add-after 'emacs-add-source-to-load-path 'emacs-install
+           (add-after 'emacs-expand-load-path 'emacs-install
              (assoc-ref emacs:%standard-phases 'install))
            (add-after 'emacs-install 'emacs-build
              (assoc-ref emacs:%standard-phases 'build))
@@ -8029,7 +8029,7 @@ list of candidates.")
 (define-public emacs-marginalia
   (package
     (name "emacs-marginalia")
-    (version "0.6")
+    (version "0.7")
     (source
      (origin
        (method git-fetch)
@@ -8038,7 +8038,7 @@ list of candidates.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1lisns2vghmqlg8wiv6jy15cfgnc8j83khz0vfnmrjwgcmjw3bbz"))))
+        (base32 "0yn6dybvsdhr37hnadmbfqi7pf7scxr9z6a6ghsqbrghycddd0mc"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/minad/marginalia")
     (synopsis "Marginalia in the minibuffer completions")
@@ -14361,7 +14361,7 @@ or @code{treemacs}, but leveraging @code{Dired} to do the job of display.")
 (define-public emacs-which-key
   (package
     (name "emacs-which-key")
-    (version "3.5.2")
+    (version "3.5.3")
     (source
      (origin
        (method git-fetch)
@@ -14370,7 +14370,7 @@ or @code{treemacs}, but leveraging @code{Dired} to do the job of display.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1wgygby4zwlbx6ry6asraaixl169qdz092zgk1brvg63w7f8vkkb"))))
+        (base32 "144i3hkgm36wnfmqk5vq390snziy3zhwifbh6q6dzs99ic77d5g6"))))
     (build-system emacs-build-system)
     (arguments
      `(#:tests? #t
@@ -20483,6 +20483,36 @@ e.g. the package dependencies it requires.  See function
 file.")
     (license license:gpl3+)))
 
+(define-public emacs-packed
+  (package
+    (name "emacs-packed")
+    (version "3.0.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/emacscollective/packed")
+             (commit version)))
+       (sha256
+        (base32
+         "06blk8parnpq3qi6y5628q3v59c8dyi41glb289a0l16248qwphk"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/emacscollective/packed")
+    (synopsis "Package manager agnostic Emacs Lisp package utilities")
+    (description
+     "Packed provides some package manager agnostic utilities to work
+with Emacs Lisp packages.  As far as Packed is concerned packages
+are collections of Emacs Lisp libraries that are stored in a
+dedicated directory such as a Git repository.  And libraries are
+Emacs Lisp files that provide the correct feature (matching the
+filename).
+
+Where a package manager might depend on metadata, Packed instead
+uses some heuristics to get the same information---that is slower
+and might also fail at times but makes it unnecessary to maintain
+package recipes.")
+    (license license:gpl3+)))
+
 (define-public emacs-picpocket
   (let ((version "41")
         (commit "fa3a49f011b5ae139728548fec7375743f61c7c7"))
@@ -27815,6 +27845,7 @@ Features:
               (uri (git-reference
                     (url "https://git.sr.ht/~zge/bang")
                     (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32 "1micvz6smhjma7qbka8h3w0crb3sgrxf9lz2548iqfgww50gb0lj"))))
     (build-system emacs-build-system)
@@ -28499,7 +28530,7 @@ and preferred services can easily be configured.")
 (define-public emacs-vertico
   (package
     (name "emacs-vertico")
-    (version "0.11")
+    (version "0.12")
     (source
      (origin
        (method git-fetch)
@@ -28508,7 +28539,7 @@ and preferred services can easily be configured.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0vx23csk1nsrcazifwjxchqdmp3qbg2mwbvkqxn134g89qi8pqkw"))))
+        (base32 "1qb5qmspc7042r366d73j26hrzmrsdwscv8ly9glsa4gbdxcjkln"))))
     (build-system emacs-build-system)
     (native-inputs
      `(("texinfo" ,texinfo)))
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index ca935036d4..84c6b0624f 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -523,14 +523,14 @@ V2.")
 (define-public mednafen
   (package
     (name "mednafen")
-    (version "1.26.1")
+    (version "1.27.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://mednafen.github.io/releases/files/"
                            "mednafen-" version ".tar.xz"))
        (sha256
-        (base32 "1x7xhxjhwsdbak8l0iyb497f043xkhibk73w96xck4j2bk10fac4"))))
+        (base32 "1ysmb56wzr17ki6f1b486r2dzjr11igd021qb4r3437l68prpa7k"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -541,6 +541,7 @@ V2.")
      `(("pkg-config" ,pkg-config)))
     (inputs
      `(("alsa" ,alsa-lib)
+       ("flac" ,flac)
        ;; ("libmpcdec" ,libmpcdec) FIXME: not recognized.
        ("libsndfile" ,libsndfile)
        ("lzo" ,lzo)
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index e6e1382380..c02d07fba1 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -1711,24 +1711,30 @@ high-performance parallel differential evolution (DE) optimization algorithm.")
              (substitute* "man/man1/Makefile.in"
                (("^man_MANS = ngspice\\.1 ngnutmeg\\.1 ngsconvert\\.1 ngmultidec\\.1")
                 "man_MANS = "))))
-         (add-after 'install 'delete-script-files
+         (add-after 'install 'delete-scripts-and-config
            (lambda* (#:key outputs #:allow-other-keys)
              (delete-file-recursively
               (string-append (assoc-ref outputs "out")
-                             "/share/ngspice/scripts")))))
+                             "/share/ngspice/scripts"))
+             ;; This file is autogenerated by the configure script and should
+             ;; not be distributed.  It could be removed in ngspice 35.  See
+             ;; https://bugs.archlinux.org/task/70569 for reference.
+             (delete-file (string-append (assoc-ref outputs "out")
+                                         "/include/config.h")))))
        #:configure-flags
        (list "--enable-openmp"
              "--enable-ciderlib"
              "--enable-xspice"
              "--with-ngshared"
-             "--with-readline=yes")))
+             ;; Readline must be disabled to build KiCad with ngspice 34.  See
+             ;; https://bugs.archlinux.org/task/70563 for reference.
+             "--with-readline=no")))
     (native-inputs
      `(("bison" ,bison)
        ("flex" ,flex)))
     (inputs
      `(("libxaw" ,libxaw)
-       ("mpi" ,openmpi)
-       ("readline" ,readline)))
+       ("mpi" ,openmpi)))
     (home-page "http://ngspice.sourceforge.net/")
     (synopsis "Mixed-level/mixed-signal circuit simulator")
     (description
diff --git a/gnu/packages/erlang.scm b/gnu/packages/erlang.scm
index 7b5dc70b5d..d52d5c3983 100644
--- a/gnu/packages/erlang.scm
+++ b/gnu/packages/erlang.scm
@@ -232,7 +232,7 @@ built-in support for concurrency, distribution and fault tolerance.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-before 'add-source-to-load-path 'change-working-directory
+         (add-before 'expand-load-path 'change-working-directory
            (lambda _ (chdir "lib/tools/emacs") #t)))))
     (home-page "https://www.erlang.org/")
     (synopsis "Erlang major mode for Emacs")
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index d4c571d3ec..b3a8e2b732 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -1457,7 +1457,14 @@ following three utilities are included with the library:
              (substitute* "src/Makefile.test.include"
                (("test/utilprocess_tests.cpp")
                 ""))
-             #t))
+
+             ;; Some transaction validation rules have changed (see upstream
+             ;; commit f208400825d4641b9310a1fba023d56e0862e3b0), which makes
+             ;; a test fail. Disable it for now.
+             ;; TODO: Remove this when the next version is released.
+             (substitute* "src/Makefile.test.include"
+               (("test/txvalidationcache_tests.cpp")
+                ""))))
          (add-before 'check 'set-home
            (lambda _
              (setenv "HOME" (getenv "TMPDIR")) ; tests write to $HOME
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index 618686a0ea..a1d7abd435 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -426,7 +426,7 @@ The unified Libertinus family consists of:
        (sha256
         (base32 "0yggffiplk22lgqklfmd2c0rw8gwchynjh5kz4bz8yv2h6vw2qfr"))))
     (build-system gnu-build-system)
-    (outputs (list "out" "pcf-8bit"))
+    (outputs (list "out" "pcf-8bit" "otb"))
     (arguments
      `(#:tests? #f                      ; no test target in tarball
        #:phases
@@ -441,6 +441,15 @@ The unified Libertinus family consists of:
              (let ((pcf-8bit (assoc-ref outputs "pcf-8bit")))
                (apply invoke "make" "install-pcf-8bit" (string-append "prefix="
                                                                       pcf-8bit)
+                      make-flags))))
+         (add-after 'build-more-bits 'build-otb
+           ;; Build Open Type Bitmap
+           (lambda* (#:key make-flags #:allow-other-keys)
+             (apply invoke "make" "otb" make-flags)))
+         (add-after 'install 'install-otb
+           (lambda* (#:key make-flags outputs #:allow-other-keys)
+             (let ((otb (assoc-ref outputs "otb")))
+               (apply invoke "make" "install-otb" (string-append "prefix=" otb)
                       make-flags)))))))
     (native-inputs
      `(("bdftopcf" ,bdftopcf)
@@ -809,6 +818,27 @@ and Chrome OS, and the recommended font for the
 visual language \"Material Design\".")
     (license license:asl2.0)))
 
+(define-public font-borg-sans-mono
+  (package
+    (name "font-borg-sans-mono")
+    (version "0.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/charje/borg-sans-mono"
+             "/releases/download/v" version "/borg-sans-mono.zip"))
+       (sha256
+        (base32
+         "1xxakd9nfb8wz76rh0gbd69gh0mlqs2453g0j516xgxn8bxip2yj"))))
+    (build-system font-build-system)
+    (home-page "https://github.com/charje/borg-sans-mono")
+    (synopsis "The Borg Sans Mono font")
+    (description "Borg Sans Mono is a monospaced font derived from Droid Sans
+Mono.  It includes additions commonly found in programming fonts such as a
+slashed zero and ligatures for operators.")
+    (license license:asl2.0)))
+
 (define-public font-un
   (package
     (name "font-un")
@@ -2234,6 +2264,6 @@ half of the twentieth century.")
     (description
      "Overpass is a sans-serif typeface based on the U.S. interstate highway
 road signage typefaces, adapted for on-screen display and user interfaces.
-Overpass includes proprotional and monospace variants.")
+Overpass includes proportional and monospace variants.")
     (license (list license:silofl1.1
                    license:lgpl2.1))))
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index b67c4e51d2..600940049b 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2015, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015, 2018 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2015, 2016, 2017 David Thompson <davet@gnu.org>
-;;; Copyright © 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017, 2020 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2016, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2017, 2018 Julian Graham <joolean@gmail.com>
@@ -2288,6 +2288,39 @@ computer games, 3D authoring tools and simulation tools.")
 rigid body physics library written in C.")
     (license license:expat)))
 
+(define-public box2d
+  (package
+    (name "box2d")
+    (version "2.4.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/erincatto/box2d")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1ja9cahf3z9zzrdaqcw44lpjmqf2ir2g4chwz0iwqwlkckwhpgvh"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Bundled code only used for the testbed.
+           (delete-file-recursively "extern")))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:test-target "unit_test"
+       #:configure-flags '("-DBUILD_SHARED_LIBS=ON"
+                           "-DBOX2D_BUILD_TESTBED=OFF")))
+    (inputs
+     `(("libx11" ,libx11)))
+    (home-page "https://box2d.org/")
+    (synopsis "2D physics engine for games")
+    (description "Box2D is a 2D rigid body simulation library for games.
+Programmers can use it in their games to make objects move in realistic ways and
+make the game world more interactive.  From the game engine's point of view, a
+physics engine is just a system for procedural animation.")
+    (license license:expat)))
+
 (define-public libtcod
   (package
     (name "libtcod")
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 6bd6104629..483cb87dcb 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -396,14 +396,14 @@ The game includes a built-in editor so you can design and share your own maps.")
 (define-public armagetronad
   (package
     (name "armagetronad")
-    (version "0.2.9.0.1")
+    (version "0.2.9.1.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/armagetronad/stable/"
                                   version "/armagetronad-" version ".tbz"))
               (sha256
                (base32
-                "19rfhlg4gp0r7k1j8v4iw20325ciy156nmzax4xikmw22c6nmxcz"))))
+                "18gn4sg4j5sw38ngb90sl50raliplrsgjcvy8fjwry733k0cgdjr"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -946,7 +946,7 @@ allows users to brew while offline.")
 (define-public corsix-th
   (package
     (name "corsix-th")
-    (version "0.64")
+    (version "0.65")
     (source
      (origin
        (method git-fetch)
@@ -955,7 +955,7 @@ allows users to brew while offline.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0chh9cv2kdc39sr0x8hclcyzd8dz2y6grgagqzkvr7j570wa5cqh"))))
+        (base32 "0hp7da7b73dpn1h22rw3h8w6aaj9azn18qnp3ap3lrlqhj4fzcb3"))))
     (build-system cmake-build-system)
     (arguments
      `(#:phases
@@ -4164,7 +4164,7 @@ falling, themeable graphics and sounds, and replays.")
 (define-public wesnoth
   (package
     (name "wesnoth")
-    (version "1.14.16")
+    (version "1.14.17")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/wesnoth/wesnoth-"
@@ -4173,7 +4173,7 @@ falling, themeable graphics and sounds, and replays.")
                                   "wesnoth-" version ".tar.bz2"))
               (sha256
                (base32
-                "1d9hq3dcx0sgs2v4400rg2nw98v46m7bwiqqjv8z8n7vw8kx8lhg"))))
+                "1qc4ylhc4ab51milclzhflpmzw6bg35knwqaj3b157700jkcniin"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f))                    ;no check target
@@ -5203,15 +5203,16 @@ tactics.")
 (define-public widelands
   (package
     (name "widelands")
-    (version "21")
+    (version "1.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://launchpad.net/widelands/"
-                           "build" version "/build" version "/+download/"
-                           "widelands-build" version "-source.tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+              (url "https://github.com/widelands/widelands")
+              (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "0mz3jily0w1zxxqbnkqrp6hl88xhrwzbil9crq7gpcwidx60w7k0"))
+        (base32 "1hw51binnbia15mj1gzx1cbk3cw9r91sisqci2qzcy4ahxiadnw0"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -5251,7 +5252,8 @@ tactics.")
      `(("gettext" ,gettext-minimal)
        ("python" ,python-wrapper)))
     (inputs
-     `(("boost" ,boost)
+     `(("curl" ,curl)
+       ("boost" ,boost)
        ("glew" ,glew)
        ("icu4c" ,icu4c)
        ("libpng" ,libpng)
@@ -5270,8 +5272,8 @@ nothing but your headquarters, where all your resources are stored.
 In the course of the game, you will build an ever growing settlement.  Every
 member of your clan will do his or her part to produce more resources---wood,
 food, iron, gold and more---to further this growth.  The economic network is
-complex and different in the four tribes (Barbarians, Empire, Atlanteans, and
-Frisians).
+complex and different in the five tribes (Barbarians, Empire, Atlanteans,
+Frisians and Amazons).
 
 As you are not alone in the world, you will meet other clans sooner or later.
 Some of them may be friendly and you may eventually trade with them.  However,
@@ -5289,6 +5291,12 @@ of war.  Widelands also offers an Artificial Intelligence to challenge you.")
                    license:silofl1.1       ;Widelands.ttf
                    license:cc-by-sa3.0)))) ;some music files
 
+(define-public widelands-21
+  (package
+    (inherit widelands)
+    (version "21")
+    (properties `((superseded . ,widelands)))))
+
 (define-public starfighter
   (package
     (name "starfighter")
@@ -7499,7 +7507,7 @@ Strife, Chex Quest, and fan-created games like Harmony, Hacx and Freedoom.")
 (define-public odamex
   (package
     (name "odamex")
-    (version "0.9.0")
+    (version "0.9.3")
     (source
      (origin
        (method url-fetch)
@@ -7507,7 +7515,7 @@ Strife, Chex Quest, and fan-created games like Harmony, Hacx and Freedoom.")
              "mirror://sourceforge/odamex/Odamex/" version "/"
              "odamex-src-" version ".tar.bz2"))
        (sha256
-        (base32 "0yfrvx8zb3chy47fyz4nik6gbh0y5608yvld4gz4y8l158qk71y1"))))
+        (base32 "0vmw9ijb6n4wrxjxixakn7l6a6carnvs9wbbzb4vcq1brbzyrb0p"))))
     (build-system cmake-build-system)
     (arguments `(#:tests? #f))          ; no tests
     (native-inputs
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index a0b43308e4..546be33e55 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -15,6 +15,7 @@
 ;;; Copyright © 2020 Christopher Baines <mail@cbaines.net>
 ;;; Copyright © 2020, 2021 Felix Gruber <felgru@posteo.net>
 ;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com>
+;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -91,6 +92,7 @@
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-check)
+  #:use-module (gnu packages python-science)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages qt)
@@ -881,6 +883,93 @@ utilities for data translation and processing.")
      `(("gdal" ,gdal)))
     (synopsis "GDAL (Geospatial Data Abstraction Library) python bindings")))
 
+(define-public python-pyshp
+  (package
+    (name "python-pyshp")
+    (version "2.1.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/GeospatialPython/pyshp")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0jsraqzq82pw19wvx84x7w5cs8agr44a9b5y0jjw540wim4xa73r"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               ;; This is the only test file.
+               (invoke "python" "-m" "pytest" "test_shapefile.py")))))))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)
+       ("python-pytest-runner" ,python-pytest-runner)))
+    (home-page "https://github.com/GeospatialPython/pyshp")
+    (synopsis "Read/write support for ESRI Shapefile format")
+    (description
+      "The Python Shapefile Library (PyShp) reads and writes ESRI Shapefiles.")
+    (license license:expat)))
+
+(define-public python-cartopy
+  (package
+    (name "python-cartopy")
+    ;; This is a post-release fix that adds build_ext to setup.py.
+    (version "0.19.0.post1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "Cartopy" version))
+       (sha256
+        (base32 "0xnm8z3as3hriivdfd26s6vn5b63gb46x6vxw6gh1mwfm5rlg2sb"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key inputs outputs tests? #:allow-other-keys)
+             (when tests?
+               (add-installed-pythonpath inputs outputs)
+               (invoke "python" "-m" "pytest" "--pyargs" "cartopy"
+                       ;; These tests require online data.
+                       "-m" "not natural_earth and not network"
+                       ;; This one too but it's not marked as such.
+                       "-k" "not test_gridliner_labels_bbox_style")))))))
+    (propagated-inputs
+     `(("python-matplotlib" ,python-matplotlib)
+       ("python-numpy" ,python-numpy)
+       ("python-pykdtree" ,python-pykdtree)
+       ("python-pyshp" ,python-pyshp)
+       ("python-scipy" ,python-scipy)
+       ("python-shapely" ,python-shapely)))
+    (inputs
+     `(("geos" ,geos)
+       ("proj" ,proj)))
+    (native-inputs
+     `(("python-cython" ,python-cython)
+       ("python-flufl-lock" ,python-flufl-lock)
+       ("python-pytest" ,python-pytest)))
+    (home-page "https://scitools.org.uk/cartopy/docs/latest/")
+    (synopsis "Cartographic library for visualisation")
+    (description
+     "Cartopy is a Python package designed to make drawing maps for data
+analysis and visualisation easy.
+
+It features:
+
+@itemize
+@item object oriented projection definitions
+@item point, line, polygon and image transformations between projections
+@item integration to expose advanced mapping in Matplotlib with a simple and
+intuitive interface
+@item powerful vector data handling by integrating shapefile reading with
+Shapely capabilities
+@end itemize")
+    (license license:lgpl3+)))
+
 (define-public postgis
   (package
     (name "postgis")
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index e03ed77374..37b279b6eb 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -127,6 +127,7 @@
   #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages haskell-xyz)
   #:use-module (gnu packages ibus)
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages image)
@@ -11578,6 +11579,69 @@ and toolbars.")
 GTK+.  It integrates well with the GNOME desktop environment.")
     (license license:gpl3+)))
 
+(define-public apostrophe
+  (package
+    (name "apostrophe")
+    (version "2.4")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.gnome.org/somas/apostrophe")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1qzy3zhi18wf42m034s8kcmx9gl05j620x3hf6rnycq2fvy7g4gz"))))
+    (build-system meson-build-system)
+    (arguments
+     `(#:glib-or-gtk? #t
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-meson
+           (lambda _
+             (substitute* "build-aux/meson_post_install.py"
+               (("gtk-update-icon-cache") "true"))
+             #t))
+         (add-after 'glib-or-gtk-wrap 'python-and-gi-wrap
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((prog (string-append (assoc-ref outputs "out")
+                                        "/bin/apostrophe"))
+                   (pylib (string-append (assoc-ref outputs "out")
+                                         "/lib/python"
+                                         ,(version-major+minor
+                                           (package-version python))
+                                         "/site-packages")))
+               (wrap-program prog
+                 `("PYTHONPATH" = (,(getenv "PYTHONPATH") ,pylib))
+                 `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))
+                 `("PATH" prefix (,(string-append (assoc-ref inputs "pandoc")
+                                                  "/bin"))))
+               #t))))))
+    (inputs
+     `(("glib" ,glib)
+       ("gobject-introspection" ,gobject-introspection)
+       ("gspell" ,gspell)
+       ("gtk+" ,gtk+)
+       ("libhandy" ,libhandy)
+       ("pandoc" ,pandoc)
+       ("python-chardet" ,python-chardet)
+       ("python-levenshtein" ,python-levenshtein)
+       ("python-regex" ,python-regex)
+       ("python-pycairo" ,python-pycairo)
+       ("python-pygobject" ,python-pygobject)
+       ("python-pyenchant" ,python-pyenchant)
+       ("python-pypandoc" ,python-pypandoc)
+       ("webkitgtk" ,webkitgtk)))
+    (native-inputs
+     `(("gettext" ,gettext-minimal)
+       ("glib:bin" ,glib "bin")
+       ("pkg-config" ,pkg-config)))
+    (home-page "https://gitlab.gnome.org/somas/apostrophe")
+    (synopsis "Markdown editor written in Python with GTK+")
+    (description "Apostrophe is a GTK+ based distraction free Markdown editor.
+It uses pandoc as back-end for parsing Markdown.")
+    (license license:gpl3)))
+
 (define-public libratbag
   (package
     (name "libratbag")
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 8c3c81ceda..1d17f02cdd 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -25,6 +25,7 @@
 ;;; Copyright © 2020 Martin Becze <mjbecze@riseup.net>
 ;;; Copyright © 2021 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@mgail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -2413,6 +2414,32 @@ which satisfies the cron expression.")
 values.")
     (license license:asl2.0)))
 
+(define-public go-gopkg-in-yaml-v3
+  (package
+    (name "go-gopkg-in-yaml-v3")
+    (version "3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gopkg.in/yaml.v3")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "06f4lnrp494wqaygv09dggr2dwf3z2bawqhnlnnwiamg5y787k4g"))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "gopkg.in/yaml.v3"))
+    (native-inputs
+     `(("go-gopkg-in-check-v1" ,go-gopkg-in-check-v1)))
+    (home-page "https://gopkg.in/yaml.v3")
+    (synopsis "YAML reader and writer for the Go language")
+    (description
+     "This package provides a Go library for encode and decode YAML values.
+The yaml package supports most of YAML 1.2, but preserves some behavior from
+1.1 for backwards compatibility.")
+    (license license:asl2.0)))
+
 (define-public go-github-com-mattn-go-isatty
   (package
     (name "go-github-com-mattn-go-isatty")
diff --git a/gnu/packages/irc.scm b/gnu/packages/irc.scm
index 3d1753bff4..7f5394c03c 100644
--- a/gnu/packages/irc.scm
+++ b/gnu/packages/irc.scm
@@ -378,7 +378,7 @@ for the IRCv3 protocol.")
 (define-public kirc
   (package
     (name "kirc")
-    (version "0.2.6")
+    (version "0.2.7")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -386,7 +386,7 @@ for the IRCv3 protocol.")
                      (commit version)))
               (file-name (git-file-name name version))
               (sha256
-               (base32 "11pwbil44q7sm3mp1khgw8wmwln2n03f1qawlgmg168jzyxqrs16"))))
+               (base32 "0phx00lr7ya8rx1hskv1wdwbq2vlihiqhnplqdvk1r3m23is7al9"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index bf5da8272f..f7840f6ca4 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016, 2017 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2017, 2019, 2021 Carlo Zancanaro <carlo@zancanaro.id.au>
-;;; Copyright © 2017-2020 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2017-2021 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2016, 2017, 2018 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2017, 2019, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -45,6 +45,7 @@
   #:use-module (guix gexp)
   #:use-module (guix build-system ant)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system maven)
   #:use-module (guix build-system trivial)
   #:use-module (gnu packages)
   #:use-module (gnu packages attr)
@@ -3851,25 +3852,11 @@ documentation tools.")
     (arguments
      `(#:jar-name "qdox.jar"
        #:tests? #f; no tests
-       #:modules
-       ((guix build ant-build-system)
-        (guix build java-utils)
-        (guix build utils)
-        (sxml simple))
        #:phases
        (modify-phases %standard-phases
          (add-before 'install 'create-pom
-           (lambda _
-             (with-output-to-file "pom.xml"
-               (lambda _
-                 (sxml->xml
-                   `((project
-                       (modelVersion "4.0.0")
-                       (name "QDox")
-                       (groupId "com.thoughtworks.qdox")
-                       (artifactId "qdox")
-                       (version ,,version))))))
-             #t))
+           (generate-pom.xml "pom.xml" "com.thoughtworks.qdox" "qdox" ,version
+                             #:name "QDox"))
          (replace 'install
            (install-from-pom "pom.xml")))))
     (home-page "https://github.com/codehaus/qdox")
@@ -3895,7 +3882,14 @@ documentation tools.")
                                   "/qdox-" version "-sources.jar"))
               (sha256
                (base32
-                "1s2jnmx2dkwnaha12lcj26aynywgwa8sslc47z82wx8xai13y4fg"))))))
+                "1s2jnmx2dkwnaha12lcj26aynywgwa8sslc47z82wx8xai13y4fg"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments java-qdox)
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (replace 'create-pom
+             (generate-pom.xml "pom.xml" "com.thoughtworks.qdox" "qdox" ,version
+                               #:name "QDox"))))))))
 
 (define-public java-jarjar
   (package
@@ -5792,7 +5786,13 @@ The jMock library
     (build-system ant-build-system)
     (arguments
      `(#:tests? #f ; there are no tests
-       #:jar-name "jopt-simple.jar"))
+       #:jar-name "jopt-simple.jar"
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'install 'create-pom
+           (generate-pom.xml "pom.xml" "net.sf.jopt-simple" "jopt-simple" ,version))
+         (replace 'install
+           (install-from-pom "pom.xml")))))
     (home-page "https://pholser.github.io/jopt-simple/")
     (synopsis "Java library for parsing command line options")
     (description "JOpt Simple is a Java library for parsing command line
@@ -5804,6 +5804,28 @@ retrieval of options and their arguments simple and expressive, without being
 overly clever.")
     (license license:expat)))
 
+;; Required by jmh
+(define-public java-jopt-simple-4
+  (package
+    (inherit java-jopt-simple)
+    (version "4.6")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://repo1.maven.org/maven2/"
+                                  "net/sf/jopt-simple/jopt-simple/"
+                                  version "/jopt-simple-"
+                                  version "-sources.jar"))
+              (sha256
+               (base32
+                "0ny82zczxkn201ld0b7rps0ifzjhfs8m1ncdmy1f50145ciszkpd"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments java-jopt-simple)
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (replace 'create-pom
+             (generate-pom.xml "pom.xml" "net.sf.jopt-simple" "jopt-simple"
+                               ,version))))))))
+
 (define-public java-commons-math3
   (package
     (name "java-commons-math3")
@@ -5838,7 +5860,7 @@ overly clever.")
              #t))
          ;; There is no install target.
          (replace 'install
-           (install-jars "target")))))
+           (install-from-pom "pom.xml")))))
     (native-inputs
      `(("java-junit" ,java-junit)
        ("java-hamcrest-core" ,java-hamcrest-core)))
@@ -5852,36 +5874,37 @@ available in the Java programming language or Commons Lang.")
 (define-public java-jmh
   (package
     (name "java-jmh")
-    (version "1.17.5")
+    (version "1.32")
     (source (origin
-              (method hg-fetch)
-              (uri (hg-reference
-                    (url "http://hg.openjdk.java.net/code-tools/jmh/")
-                    (changeset version)))
-              (file-name (string-append name "-" version "-checkout"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/openjdk/jmh")
+                    (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1fxyxhg9famwcg1prc4cgwb5wzyxqavn3cjm5vz8605xz7x5k084"))))
-    (build-system ant-build-system)
+                "0i7fa7l3gdqkkgz5ddayp6m46dgbj9rqlz35xffrcbyiz3gpljy0"))))
+    (build-system maven-build-system)
     (arguments
-     `(#:jar-name "jmh-core.jar"
-       #:source-dir "jmh-core/src/main"
-       #:test-dir "jmh-core/src/test"
+     `(#:exclude
+       (("org.apache.maven.plugins" .
+         ("maven-source-plugin" "maven-archetype-plugin" "maven-shade-plugin"
+          "maven-site-plugin" "maven-javadoc-plugin" "maven-eclipse-plugin"))
+        ("com.mycila.maven-license-plugin" . ("maven-license-plugin"))
+        ("org.apache.maven.wagon" . ("wagon-ssh")))
+       #:maven-plugins
+       (("maven-enforcer-plugin" ,maven-enforcer-plugin)
+        ,@(default-maven-plugins))
        #:phases
        (modify-phases %standard-phases
-         ;; This seems to be a bug in the JDK.  It may not be necessary in
-         ;; future versions of the JDK.
-         (add-after 'unpack 'fix-bug
+         (add-after 'unpack 'remove-unnecessary
            (lambda _
-             (with-directory-excursion
-                 "jmh-core/src/main/java/org/openjdk/jmh/runner/options"
-               (substitute* '("IntegerValueConverter.java"
-                              "ThreadsValueConverter.java")
-                 (("public Class<Integer> valueType")
-                  "public Class<? extends Integer> valueType")))
-             #t)))))
-    (inputs
-     `(("java-jopt-simple" ,java-jopt-simple)
+             ;; requires org.apache.maven.archetype:archetype-packaging.
+             ;; Its subprojects also require groovy, kotlin and scala,
+             ;; respectively.
+             (delete-file-recursively "jmh-archetypes"))))))
+    (propagated-inputs
+     `(("java-jopt-simple" ,java-jopt-simple-4)
        ("java-commons-math3" ,java-commons-math3)))
     (native-inputs
      `(("java-junit" ,java-junit)
@@ -6467,25 +6490,11 @@ bottlenecks move away from the database in an effectively cached system.")
      `(#:tests? #f ; no tests included
        #:jdk ,icedtea-8
        #:jar-name "jsr250.jar"
-       #:modules ((guix build ant-build-system)
-                  (guix build utils)
-                  (guix build maven pom)
-                  (guix build java-utils)
-                  (sxml simple))
        #:phases
        (modify-phases %standard-phases
          (add-before 'install 'create-pom
-           (lambda _
-             (with-output-to-file "pom.xml"
-               (lambda _
-                 (sxml->xml
-                   `((project
-                       (modelVersion "4.0.0")
-                       (name "jsr250")
-                       (groupId "javax.annotation")
-                       (artifactId "jsr250-api")
-                       (version ,,version))))))
-             #t))
+           (generate-pom.xml "pom.xml" "javax.annotation" "jsr250-api" ,version
+                             #:name "jsr250"))
          (replace 'install
            (install-from-pom "pom.xml")))))
     (home-page "https://jcp.org/en/jsr/detail?id=250")
@@ -6514,25 +6523,10 @@ namespaces.")
     (arguments
      `(#:tests? #f ; no tests included
        #:jar-name "jsr305.jar"
-       #:modules ((guix build ant-build-system)
-                  (guix build java-utils)
-                  (guix build maven pom)
-                  (guix build utils)
-                  (sxml simple))
        #:phases
        (modify-phases %standard-phases
          (add-before 'install 'create-pom
-           (lambda _
-             (with-output-to-file "pom.xml"
-               (lambda _
-                 (sxml->xml
-                   `((project
-                       (modelVersion "4.0.0")
-                       (name "jsr305")
-                       (groupId "com.google.code.findbugs")
-                       (artifactId "jsr305")
-                       (version ,,version))))))
-             #t))
+           (generate-pom.xml "pom.xml" "com.google.code.findbugs" "jsr305" ,version))
          (replace 'install
            (install-from-pom "pom.xml")))))
     (home-page "http://findbugs.sourceforge.net/")
@@ -10563,25 +10557,10 @@ this is not a static analysis tool.)")
        #:jdk ,icedtea-8
        #:tests? #f; no tests
        #:source-dir "aopalliance/src/main"
-       #:modules ((guix build ant-build-system)
-                  (guix build utils)
-                  (guix build maven pom)
-                  (guix build java-utils)
-                  (sxml simple))
        #:phases
        (modify-phases %standard-phases
          (add-before 'install 'create-pom
-           (lambda _
-             (with-output-to-file "pom.xml"
-               (lambda _
-                 (sxml->xml
-                   `((project
-                       (modelVersion "4.0.0")
-                       (name "aopalliance")
-                       (groupId "aopalliance")
-                       (artifactId "aopalliance")
-                       (version "1.0"))))))
-             #t))
+           (generate-pom.xml "pom.xml" "aopalliance" "aopalliance" ,version))
          (replace 'install
            (install-from-pom "pom.xml")))))
     (home-page "http://aopalliance.sourceforge.net")
@@ -11706,7 +11685,9 @@ protocol-independent framework to build mail and messaging applications.")
          "**/ClientUtilsTest.java"
          ;; End with errors that seem related to our powermock
          "**/KafkaProducerTest.java"
-         "**/BufferPoolTest.java")))
+         "**/BufferPoolTest.java"
+         ;; Undeterministic failure, seems to affect mostly ci
+         "**/GarbageCollectedMemoryPoolTest.java")))
     (inputs
      `(("java-slf4j-api" ,java-slf4j-api)
        ("java-lz4" ,java-lz4)))
@@ -12180,29 +12161,14 @@ sequences to format your console output which works on every platform.")
     (build-system ant-build-system)
     (arguments
      `(#:jar-name "java-jboss-el-api_spec.jar"
-       #:modules ((guix build ant-build-system)
-                  (guix build utils)
-                  (guix build maven pom)
-                  (guix build java-utils)
-                  (sxml simple))
        #:phases
        (modify-phases %standard-phases
          ;; the origin of javax.el:javax.el-api is unknown, so we use this package
          ;; instead, which implements the same thing.  We override the pom file
          ;; to "rename" the package so it can be found by maven.
          (add-before 'install 'override-pom
-           (lambda _
-             (delete-file "pom.xml")
-             (with-output-to-file "pom.xml"
-               (lambda _
-                 (sxml->xml
-                   `(project
-                      (modelVersion "4.0.0")
-                      (name "el-api")
-                      (groupId "javax.el")
-                      (artifactId "javax.el-api")
-                      (version "3.0")))))
-             #t))
+           (generate-pom.xml "pom.xml" "javax.el" "javax.el-api" "3.0"
+                             #:name "el-api"))
          (replace 'install
            (install-from-pom "pom.xml")))))
     (inputs
@@ -12234,11 +12200,6 @@ JavaServer Pages (JSP).")
        #:jdk ,icedtea-8
        #:source-dir "."
        #:tests? #f; no tests
-       #:modules ((guix build ant-build-system)
-                  (guix build utils)
-                  (guix build maven pom)
-                  (guix build java-utils)
-                  (sxml simple))
        #:phases
        (modify-phases %standard-phases
          ;; the origin of javax.interceptor:javax.interceptor-api is unknown,
@@ -12246,18 +12207,8 @@ JavaServer Pages (JSP).")
          ;; We override the pom file to "rename" the package so it can be found
          ;; by maven.
          (add-before 'install 'override-pom
-           (lambda _
-             (delete-file "pom.xml")
-             (with-output-to-file "pom.xml"
-               (lambda _
-                 (sxml->xml
-                   `(project
-                      (modelVersion "4.0.0")
-                      (name "interceptor-api")
-                      (groupId "javax.interceptor")
-                      (artifactId "javax.interceptor-api")
-                      (version "3.0")))))
-             #t))
+           (generate-pom.xml "pom.xml" "javax.interceptor" "javax.interceptor-api"
+                             "3.0" #:name "interceptor-api"))
          (replace 'install
            (install-from-pom "pom.xml")))))
     (home-page "https://github.com/jboss/jboss-interceptors-api_spec")
diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm
index e03047c3fd..429f3647b7 100644
--- a/gnu/packages/libreoffice.scm
+++ b/gnu/packages/libreoffice.scm
@@ -57,6 +57,7 @@
   #:use-module (gnu packages flex)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages freedesktop)
+  #:use-module (gnu packages game-development)
   #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
@@ -88,7 +89,7 @@
 (define-public ixion
   (package
     (name "ixion")
-    (version "0.15.0")
+    (version "0.16.1")
     (source
      (origin
        (method url-fetch)
@@ -96,7 +97,7 @@
                            version ".tar.xz"))
        (sha256
         (base32
-         "1rmrl2zjzi4z0abf2cd54acypkccdhx2065dlyzy6xg83gv0mxmi"))))
+         "17q84mhy4rb3masvjw24x549irdjmccnc8n04xh58v9l7hxn8v22"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -115,7 +116,7 @@ their dependencies automatically upon calculation.")
 (define-public orcus
   (package
     (name "orcus")
-    (version "0.15.3")
+    (version "0.16.1")
     (source
      (origin
        (method url-fetch)
@@ -123,8 +124,10 @@ their dependencies automatically upon calculation.")
                            "orcus-" version ".tar.xz"))
        (sha256
         (base32
-         "14gbnqsv5n2fm4sxa17014f440clrzls6p2w2ixk9wipg4950v9s"))))
+         "1bps34sqz7wlrl01ssywjd5fbmssplifs0rskivgrg801lr6pcm4"))))
     (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags '("--disable-static")))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (inputs
@@ -1086,7 +1089,7 @@ converting QuarkXPress file format.  It supports versions 3.1 to 4.1.")
 (define-public libreoffice
   (package
     (name "libreoffice")
-    (version "6.4.7.2")
+    (version "7.1.4.2")
     (source
      (origin
        (method url-fetch)
@@ -1095,7 +1098,7 @@ converting QuarkXPress file format.  It supports versions 3.1 to 4.1.")
          "https://download.documentfoundation.org/libreoffice/src/"
          (version-prefix version 3) "/libreoffice-" version ".tar.xz"))
        (sha256
-        (base32 "0i3654rmzs8aazj8j3dmxamilslfrki0y4sksg3n1zygc2ddfk83"))))
+        (base32 "1jsskhnlyra7q6d12kkc8dxq5fgrnd8grl32bdck7j9hkwv6d13m"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("bison" ,bison)
@@ -1108,6 +1111,7 @@ converting QuarkXPress file format.  It supports versions 3.1 to 4.1.")
     (inputs
      `(("bluez" ,bluez)
        ("boost" ,boost)
+       ("box2d" ,box2d)
        ("clucene" ,clucene)
        ("cups" ,cups)
        ("dbus-glib" ,dbus-glib)
@@ -1178,12 +1182,23 @@ converting QuarkXPress file format.  It supports versions 3.1 to 4.1.")
        ("vigra" ,vigra)
        ("xdg-utils" ,xdg-utils)
        ("xmlsec" ,xmlsec-nss)
-       ("zip" ,zip)))
+       ("zip" ,zip)
+       ("dtoa"              ; needed after version 6.4.7.2.
+        ,(origin
+           (method url-fetch)
+           (uri "https://dev-www.libreoffice.org/src/dtoa-20180411.tgz")
+           (sha256
+            (base32 "1d0iwy0q5sjznv23d3nbwmy0r7m1mdzlnv5pc4izddkx9xld10h0"))))))
     (arguments
      `(#:tests? #f                     ; Building the tests already fails.
-       #:make-flags '("build-nocheck") ; Do not build unit tests, which fails.
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'insert-external-tarballs
+           (lambda* (#:key inputs #:allow-other-keys)
+             (mkdir-p "external/tarballs")
+             (copy-file (assoc-ref inputs "dtoa")
+                        "external/tarballs/dtoa-20180411.tgz")
+             #t))
          (add-before 'configure 'prepare-src
            (lambda* (#:key inputs #:allow-other-keys)
              (substitute*
@@ -1201,14 +1216,11 @@ converting QuarkXPress file format.  It supports versions 3.1 to 4.1.")
                        (list "dirname" "grep" "uname"))
 
              ;; GPGME++ headers are installed in a gpgme++ subdirectory, but
-             ;; files in "xmlsecurity/source/gpg/" and elsewhere expect to
-             ;; find them on the include path without a prefix.
-             (substitute* '("xmlsecurity/Library_xsec_xmlsec.mk"
-                            "comphelper/Library_comphelper.mk")
-               (("\\$\\$\\(INCLUDE\\)")
-                (string-append "$$(INCLUDE) -I"
-                               (assoc-ref inputs "gpgme")
-                               "/include/gpgme++")))
+             ;; configure is hardcoded to use FHS directories.
+             (substitute* "configure"
+               (("GPGMEPP_CFLAGS=-I/usr")
+                (string-append "GPGMEPP_CFLAGS=-I"
+                               (assoc-ref inputs "gpgme"))))
 
              ;; /usr/bin/xdg-open doesn't exist on Guix System.
              (substitute* '("shell/source/unix/exec/shellexec.cxx"
@@ -1259,10 +1271,6 @@ converting QuarkXPress file format.  It supports versions 3.1 to 4.1.")
                                "/bin/soffice")
                (symlink-output "/lib/libreoffice/program/soffice"
                                "/bin/libreoffice")
-               (install "workdir/CustomTarget/sysui/share/libreoffice/openoffice.keys"
-                        "/share/mime-info/libreoffice.keys")
-               (install "workdir/CustomTarget/sysui/share/libreoffice/openoffice.mime"
-                        "/share/mime-info/libreoffice.mime")
                (install
                 "workdir/CustomTarget/sysui/share/libreoffice/openoffice.org.xml"
                 "/share/mime/packages/libreoffice.xml")
@@ -1278,6 +1286,7 @@ converting QuarkXPress file format.  It supports versions 3.1 to 4.1.")
        #:configure-flags
        (list
         "--enable-release-build"
+        "--with-vendor=GNU Guix"
         ;; Avoid using all cpu cores by default
         (format #f "--with-parallelism=~d" (parallel-job-count))
         "--disable-fetch-external"      ; disable downloads
@@ -1295,6 +1304,7 @@ converting QuarkXPress file format.  It supports versions 3.1 to 4.1.")
         "--without-java"
         ;; FIXME: Enable once the corresponding inputs are packaged.
         "--disable-coinmp"
+        "--disable-skia"
         ;; This could (Debian does this) be a separate output containing only
         ;; program/libfirebird_sdbclo.so, if there's a way to point to it.
         "--enable-firebird-sdbc"
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 37f7317fc4..c40fa80d56 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -730,9 +730,9 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
 
 (define* (make-linux-libre version hash-string supported-systems
                            #:key
+                           (extra-version #f)
                            ;; A function that takes an arch and a variant.
                            ;; See kernel-config for an example.
-                           (extra-version #f)
                            (configuration-file #f)
                            (defconfig "defconfig")
                            (extra-options %default-extra-linux-options)
@@ -751,9 +751,9 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
 
 (define* (make-linux-libre* version source supported-systems
                             #:key
+                            (extra-version #f)
                             ;; A function that takes an arch and a variant.
                             ;; See kernel-config for an example.
-                            (extra-version #f)
                             (configuration-file #f)
                             (defconfig "defconfig")
                             (extra-options %default-extra-linux-options))
@@ -819,7 +819,8 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
                  (format #t "`CROSS_COMPILE' set to `~a'~%"
                          (getenv "CROSS_COMPILE"))))
 
-             (setenv "EXTRA_VERSION" ,extra-version)
+             (setenv "EXTRAVERSION" ,(and extra-version
+                                          (string-append "-" extra-version)))
 
              (let ((build  (assoc-ref %standard-phases 'build))
                    (config (assoc-ref (or native-inputs inputs) "kconfig")))
diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm
index 1bd35d5812..f2fe9c93d1 100644
--- a/gnu/packages/lisp-xyz.scm
+++ b/gnu/packages/lisp-xyz.scm
@@ -17471,3 +17471,227 @@ Memory transactions give freedom from deadlocks, are immune to thread-safety
 bugs and race conditions, provide automatic roll-back on failure, and aim at
 resolving the tension between granularity and concurrency.")
      (license license:llgpl))))
+
+(define-public ecl-stmx
+  (sbcl-package->ecl-package sbcl-stmx))
+
+(define-public cl-stmx
+  (sbcl-package->cl-source-package sbcl-stmx))
+
+(define-public sbcl-binding-arrows
+  ;; Fork of sbcl-arrows that does not have a new tag.
+  (let ((commit "d19364ec8850880ed6e42078ccaa2ed9114dc83a")
+        (revision "1"))
+    (package
+     (name "sbcl-binding-arrows")
+     (version (git-version "1.0.0" revision commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/phoe/binding-arrows")
+             (commit commit)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0hqikgzic7kjq2n1d924yldfm30qz67cmsk6gghi9cbmxkwdlwp8"))))
+     (build-system asdf-build-system/sbcl)
+     (native-inputs
+      `(("hu.dwim.stefil" ,sbcl-hu.dwim.stefil)))
+     (home-page "https://github.com/phoe/binding-arrows")
+     (synopsis "Threading macros based on binding anonymous variables")
+     (description
+      "This system implements binding threading macros -- a kind of threading
+macros with different semantics than classical, Clojure core threading macros
+or their extension, swiss-arrows.  Two Common Lisp implementations of those are
+@code{arrows} and @code{arrow-macros}.
+
+This system is a fork of @code{arrows} with changes in semantics that make it
+impossible to merge back upstream.")
+     (license license:expat))))
+
+(define-public ecl-binding-arrows
+  (sbcl-package->ecl-package sbcl-binding-arrows))
+
+(define-public cl-binding-arrows
+  (sbcl-package->cl-source-package sbcl-binding-arrows))
+
+(define-public sbcl-atomics
+  ;; No release in years.
+  (let ((commit "9ee0bdebcd2bb9b242671a75460db13fbf45454c")
+        (revision "1"))
+    (package
+      (name "sbcl-atomics")
+      (version (git-version "1.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/Shinmera/atomics")
+               (commit commit)))
+         (file-name (git-file-name "atomics" version))
+         (sha256
+          (base32 "0mp5jdqq0aamdhgnvw149cqqi3zg7dkkibp25qi4rafw1fnpd40z"))))
+      (build-system asdf-build-system/sbcl)
+      (inputs
+       `(("documentation-utils" ,sbcl-documentation-utils)))
+      (native-inputs
+       `(("parachute" ,sbcl-parachute)))
+      (home-page "https://shinmera.github.io/atomics/")
+      (synopsis "Common Lisp portability layer for atomic operations")
+      (description
+       "This is a library for access to atomic operation primitives such as
+compare-and-swap.  It aims to be a rather thin layer over what the
+implementations offer.")
+      (license license:zlib))))
+
+(define-public ecl-atomics
+  (sbcl-package->ecl-package sbcl-atomics))
+
+(define-public cl-atomics
+  (sbcl-package->cl-source-package sbcl-atomics))
+
+(define-public sbcl-cl-mock
+  ;; .asd version only got updated recently, despired the old GitHug "1.0.1" release.
+  (let ((commit "7988dca2093358911b67597a2cd1570c785dfe76"))
+    (package
+      (name "sbcl-cl-mock")
+      (version (git-version "1.0.1" "1" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/Ferada/cl-mock/")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0f40wikcf783jx26ip0nnhwjjfjvjiw7njqsqrb6kaphc8bgw0i1"))))
+      (build-system asdf-build-system/sbcl)
+      (inputs
+       `(("alexandria" ,sbcl-alexandria)
+         ("closer-mop" ,sbcl-closer-mop)
+         ("trivia" ,sbcl-trivia)))
+      (native-inputs
+       `(("fiveam" ,sbcl-fiveam)))
+      (home-page "https://github.com/Ferada/cl-mock")
+      (synopsis "Mocking functions for Common Lisp testing")
+      (description
+       "This small library provides a way to replace the actual implementation
+of either regular or generic functions with mocks.")
+      (license license:agpl3))))
+
+(define-public ecl-cl-mock
+  (sbcl-package->ecl-package sbcl-cl-mock))
+
+(define-public cl-mock
+  (sbcl-package->cl-source-package sbcl-cl-mock))
+
+(define-public sbcl-cl-murmurhash
+  ;; No release.
+  (let ((commit "5433f5e95f1cce63a81259a471150834c6a59364")
+        (revision "1"))
+    (package
+      (name "sbcl-cl-murmurhash")
+      (version (git-version "0.0.0" revision commit))
+      (home-page "https://github.com/ruricolist/cl-murmurhash/")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url home-page)
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0251r0mpjm0y3qsm4lm7ncvrkxvgwc53spdm1p2mpayhvkkqqsws"))))
+      (build-system asdf-build-system/sbcl)
+      (inputs
+       `(("babel" ,sbcl-babel)))
+      (native-inputs
+       `(("fiveam" ,sbcl-fiveam)))
+      (synopsis "32-bit version of Murmurhash3 for Common Lisp")
+      (description
+       "This Common Lisp package offers an implementation of the 32-bit
+variant of MurmurHash3 (@url{https://github.com/aappleby/smhasher}), a fast
+non-crytographic hashing algorithm.")
+      (license license:expat))))
+
+(define-public ecl-cl-murmurhash
+  (sbcl-package->ecl-package sbcl-cl-murmurhash))
+
+(define-public cl-murmurhash
+  (sbcl-package->cl-source-package sbcl-cl-murmurhash))
+
+(define-public sbcl-cl-hamt
+  ;; No release
+  (let ((commit "7a99eaaca1f952029def9ad5a2b80a612a712208"))
+    (package
+      (name "sbcl-cl-hamt")
+      (version (git-version "0.0.0" "1" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/danshapero/cl-hamt/")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1ycbd73ykfj5j9sdhlzamyv18qbjj6xqf7fhm4fa0nsyr6sr3rf5"))))
+      (build-system asdf-build-system/sbcl)
+      (inputs
+       `(("cl-murmurhash" ,sbcl-cl-murmurhash)))
+      (native-inputs
+       `(("fiveam" ,sbcl-fiveam)))
+      (home-page "https://github.com/danshapero/cl-hamt")
+      (synopsis "Dictionary & set data structure using hash array-mapped tries")
+      (description
+       "This library provides purely functional dictionaries and sets in
+Common Lisp based on the hash array-mapped trie data structure.")
+      (license license:bsd-3))))
+
+(define-public ecl-cl-hamt
+  (sbcl-package->ecl-package sbcl-cl-hamt))
+
+(define-public cl-hamt
+  (sbcl-package->cl-source-package sbcl-cl-hamt))
+
+(define-public sbcl-cl-gserver
+  (package
+    (name "sbcl-cl-gserver")
+    (version "1.7.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mdbergmann/cl-gserver")
+             (commit version)))
+       (file-name (git-file-name "cl-gserver" version))
+       (sha256
+        (base32 "1vkxs6ybi1pkpji2crmhq8c71zg0dn2ji0lcwhs0rivphz5jxk24"))))
+    (build-system asdf-build-system/sbcl)
+    (inputs
+     `(("alexandria" ,sbcl-alexandria)
+       ("bordeaux-threads" ,sbcl-bordeaux-threads)
+       ("lparallel" ,sbcl-lparallel)
+       ("cl-speedy-queue" ,sbcl-cl-speedy-queue)
+       ("log4cl" ,sbcl-log4cl)
+       ("str" ,sbcl-cl-str)
+       ("blackbird" ,sbcl-blackbird)
+       ("cl-hamt" ,sbcl-cl-hamt)
+       ("binding-arrows" ,sbcl-binding-arrows)
+       ("atomics" ,sbcl-atomics)))
+    (native-inputs
+     `(("fiveam" ,sbcl-fiveam)
+       ("mock" ,sbcl-cl-mock)))
+    (home-page "https://mdbergmann.github.io/cl-gserver/index.html")
+    (synopsis "Actor framework for easy access to state and async operations")
+    (description
+     "@code{cl-gserver} is a 'message passing' library / framework with actors
+similar to Erlang or Akka.  It supports creating reactive systems for parallel
+computing and event based message handling.")
+    (license license:agpl3)))
+
+(define-public ecl-cl-gserver
+  (sbcl-package->ecl-package sbcl-cl-gserver))
+
+(define-public cl-gserver
+  (sbcl-package->cl-source-package sbcl-cl-gserver))
diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm
index ad36ef1ca2..73dfa0b675 100644
--- a/gnu/packages/lua.scm
+++ b/gnu/packages/lua.scm
@@ -1108,23 +1108,20 @@ shell command executions.")
 (define-public emilua
   (package
    (name "emilua")
-   (version "0.3.0")
+   (version "0.3.2")
    (source (origin
             (method git-fetch)
             (uri (git-reference
                   (url "https://gitlab.com/emilua/emilua.git")
                   (commit (string-append "v" version))
-                  ;; Current version requires bundled CLI11, but at some future
-                  ;; release the one found in the system could be used
-                  ;; instead. Current version also requires Trial.Protocol and
-                  ;; the HTTP lib developed as part of GSoC 2014 for Boost, but
-                  ;; these are dependencies unlikely to be "unbundled" in future
-                  ;; releases.
+                  ;; Current version requires Trial.Protocol and the HTTP lib
+                  ;; developed as part of GSoC 2014 for Boost, and these are
+                  ;; dependencies unlikely to be "unbundled" in future releases.
                   (recursive? #t)))
             (file-name (git-file-name name version))
             (sha256
              (base32
-              "124fj73722c03znwdyqp1i0jygwv3s11f6s1j9rzym513qrf7fnd"))))
+              "1999bgrh52124a5g4qizav3x257ff2brjr855srpm1jv1nxzbygv"))))
    (build-system meson-build-system)
    (arguments
     `(;; Tests are disabled for now due to an issue that affecs guix:
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 4ab1bf0729..e983fb8b14 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -1833,7 +1833,7 @@ facilities for checking incoming mail.")
   (package
     (name "dovecot")
     ;; Also update dovecot-pigeonhole when updating to a new minor version.
-    (version "2.3.14")
+    (version "2.3.15")
     (source
      (origin
        (method url-fetch)
@@ -1841,7 +1841,7 @@ facilities for checking incoming mail.")
                            (version-major+minor version) "/"
                            "dovecot-" version ".tar.gz"))
        (sha256
-        (base32 "0jm3p52z619v7ajh533g2g7d790k82fk0w7ry0zqlm8ymzrxgcy8"))))
+        (base32 "141manrh54cy8xizr7f8fsa3vdzc2ccfgdz87l9rjylm8mfxvfr1"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -1902,7 +1902,7 @@ It supports mbox/Maildir and its own dbox/mdbox formats.")
   (let ((dovecot-version (version-major+minor (package-version dovecot))))
     (package
       (name "dovecot-pigeonhole")
-      (version "0.5.14")
+      (version "0.5.15")
       (source
        (origin
          (method url-fetch)
@@ -1910,7 +1910,7 @@ It supports mbox/Maildir and its own dbox/mdbox formats.")
                "https://pigeonhole.dovecot.org/releases/" dovecot-version "/"
                "dovecot-" dovecot-version "-pigeonhole-" version ".tar.gz"))
          (sha256
-          (base32 "1lmjzz4kd90wbdslacybizd1dks4bhwmrx39lj8b19naldw0zjk8"))
+          (base32 "1l2h0p8ddsl3ja2lnwk0mfqplqh8n0iw8k27awd3ak7prr88yjg1"))
          (modules '((guix build utils)))
          (snippet
           '(begin
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 3bd382f1f3..3b41d1bfd7 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -2421,7 +2421,7 @@ September 2004}")
      `(("python" ,python-2)))
     (inputs
      `(("gfortran" ,gfortran)
-       ("lapack" ,lapack)
+       ("openblas" ,openblas)
        ("superlu" ,superlu)
        ;; leaving out hdf5 and fftw, as petsc expects them to be built with mpi
        ;; leaving out opengl, as configuration seems to only be for mac
@@ -2432,6 +2432,7 @@ September 2004}")
        #:configure-flags
        `("--with-mpi=0"
          "--with-openmp=1"
+         "--with-openblas=1"
          "--with-superlu=1")
        #:make-flags
        ;; Honor (parallel-job-count) for build.  Do not use --with-make-np,
@@ -6314,14 +6315,14 @@ numeric differences and differences in numeric formats.")
 (define-public why3
   (package
     (name "why3")
-    (version "1.3.1")
+    (version "1.3.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://gforge.inria.fr/frs/download.php/file"
-                                  "/38291/why3-" version ".tar.gz"))
+                                  "/38367/why3-" version ".tar.gz"))
               (sha256
                (base32
-                "16zcrc60zz2j3gd3ww93z2z9x2jkxb3kr57y8i5rcgmacy7mw3bv"))))
+                "1n0a2nn1gnk0zg339lh698g4wpk7m8m1vyi2yvifd5adqvk4milw"))))
     (build-system ocaml-build-system)
     (native-inputs
      `(("coq" ,coq)
@@ -6345,8 +6346,8 @@ numeric differences and differences in numeric formats.")
              (setenv "CONFIG_SHELL" (which "sh"))
              (substitute* "configure"
                ;; find ocaml-num in the correct directory
-               (("\\$DIR/nums.cma") "$DIR/../nums.cma")
-               (("\\$DIR/num.cmi") "$DIR/../num.cmi"))
+               (("\\$DIR/nums.cma") "$DIR/num.cma")
+               (("\\$DIR/num.cmi") "$DIR/core/num.cmi"))
              #t))
          (add-after 'configure 'fix-makefile
            (lambda _
diff --git a/gnu/packages/maven.scm b/gnu/packages/maven.scm
index c637e5c7ae..f7cb168f47 100644
--- a/gnu/packages/maven.scm
+++ b/gnu/packages/maven.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2018-2021 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
@@ -1541,7 +1541,9 @@ process."))))
             (add-before 'build 'modify-metainf
               (lambda _
                 (substitute* "build.xml"
-                  (("message=\"\"") "message=\"Implementation-Version: 3.5.4\n\""))
+                  (("message=\"\"")
+                   (string-append "message=\"Implementation-Version: "
+                                  (package-version maven) "\n\"")))
                 #t))
             (add-before 'build 'add-maven-files
               (lambda _
@@ -1590,7 +1592,28 @@ artifactId=maven-core" ,(package-version maven-core-bootstrap))))
                                        default-bindings-xml
                                        artifact-handlers-xml)))))))
                 #t))
-            (add-after 'generate-metadata 'rebuild
+            (add-after 'generate-metadata 'fix-plugin-versions
+              (lambda _
+                ;; This file controls the default plugins used by Maven.  Ensure
+                ;; we use the versions we have packaged by default
+                (substitute* '("build/classes/META-INF/plexus/default-bindings.xml"
+                               "build/classes/META-INF/plexus/components.xml")
+                  (("maven-install-plugin:[0-9.]+")
+                   (string-append "maven-install-plugin:"
+                                  ,(package-version maven-install-plugin)))
+                  (("maven-resources-plugin:[0-9.]+")
+                   (string-append "maven-resources-plugin:"
+                                  ,(package-version maven-resources-plugin)))
+                  (("maven-compiler-plugin:[0-9.]+")
+                   (string-append "maven-compiler-plugin:"
+                                  ,(package-version maven-compiler-plugin)))
+                  (("maven-surefire-plugin:[0-9.]+")
+                   (string-append "maven-surefire-plugin:"
+                                  ,(package-version maven-surefire-plugin)))
+                  (("maven-jar-plugin:[0-9.]+")
+                   (string-append "maven-jar-plugin:"
+                                  ,(package-version maven-jar-plugin))))))
+            (add-after 'fix-plugin-versions 'rebuild
               (lambda _
                 (invoke "ant" "jar")
                 #t))))))
@@ -2690,6 +2713,15 @@ Maven project dependencies.")
        (modify-phases %standard-phases
          (delete 'configure)
          (delete 'build)
+         (add-before 'install 'fix-pom-versions
+           (lambda _
+             (substitute* "pom.xml"
+               (("3.8.1") ,(package-version java-commons-lang3))
+               (("1.4.1") ,(package-version maven-resolver-util))
+               (("1.12") ,(package-version java-commons-codec))
+               (("<version>2.2</version>")
+                ,(string-append "<version>" (package-version maven-dependency-tree)
+                                "</version>")))))
          (replace 'install
            (install-pom-file "pom.xml")))))
     (propagated-inputs
@@ -3424,23 +3456,17 @@ starting from JUnit 4.")))
        #:phases
        (modify-phases %standard-phases
          (add-before 'install 'regenerate-own-pom
-           (lambda _
-             ;; Surefire struggles resolving artifacts because of this pom
-             ;; file, resulting in a NullPointerException when collecting
-             ;; Artifacts (and a "Failure detected." message from
-             ;; DefaultArtifactResolver).  Replace the pom file with a much
-             ;; simpler one.  Everything is shaded anyway (as used to be the
-             ;; case in 2.22), so there will not be missing dependencies.
-             (with-output-to-file "surefire-providers/surefire-junit4/pom.xml"
-               (lambda _
-                 (sxml->xml
-                   `((project
-                       (modelVersion "4.0.0")
-                       (name "Surefire JUnit4")
-                       (groupId "org.apache.maven.surefire")
-                       (artifactId "surefire-junit4")
-                       (version ,,(package-version java-surefire-common-java5)))))))
-             #t))
+           ;; Surefire struggles resolving artifacts because of this pom
+           ;; file, resulting in a NullPointerException when collecting
+           ;; Artifacts (and a "Failure detected." message from
+           ;; DefaultArtifactResolver).  Replace the pom file with a much
+           ;; simpler one.  Everything is shaded anyway (as used to be the
+           ;; case in 2.22), so there will not be missing dependencies.
+           (generate-pom.xml
+             "surefire-providers/surefire-junit4/pom.xml"
+             "org.apache.maven.surefire" "surefire-junit4"
+             ,(package-version java-surefire-common-java5)
+             #:name "Surefire JUnit4"))
          (add-before 'build 'copy-resources
            (lambda _
              (mkdir-p "build/classes")
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index 8e9842515c..9fd0e70afe 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -1242,30 +1242,49 @@ Encryption to Gajim.")
                            (guix build glib-or-gtk-build-system))
        #:phases
        (modify-phases %standard-phases
+         ;; To be enabled in v0.3.0, for A/V support.
+         ;;(add-after 'install 'wrap
+           ;;(lambda* (#:key outputs #:allow-other-keys)
+             ;;(let* ((out (assoc-ref outputs "out"))
+                    ;;(dino (string-append out "/bin/dino"))
+                    ;;(gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
+               ;;(wrap-program dino
+                 ;;`("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))))))
          (add-after 'install 'glib-or-gtk-wrap
            (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
     (native-inputs
      `(("gettext" ,gettext-minimal)
        ("glib:bin" ,glib "bin")
+       ("gobject-introspection" ,gobject-introspection)
        ("gtk+:bin" ,gtk+ "bin")
        ("pkg-config" ,pkg-config)
        ("vala" ,vala)))
     (inputs
-     `(("glib" ,glib)
+     ;; NOTE: Commented-out lines are to be enabled in v0.3.0.
+     `(("atk" ,atk)
+       ("cairo" ,cairo)
+       ("gdk-pixbuf" ,gdk-pixbuf+svg)
+       ("glib" ,glib)
        ("glib-networking" ,glib-networking)
        ("gpgme" ,gpgme)
        ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+       ("gspell" ,gspell)               ;for spell-check support
+       ;;("gstreamer" ,gstreamer)         ;for A/V support
+       ;;("gst-plugins-base" ,gst-plugins-base)
+       ;;("gst-plugins-good" ,gst-plugins-good)
        ("gtk+" ,gtk+)
+       ("icu4c" ,icu4c)                 ;for emoji support
+       ;;("libcanberra" ,libcanberra)    ;for sound-notification support
        ("libgcrypt" ,libgcrypt)
        ("libgee" ,libgee)
+       ("libnice" ,libnice)
        ("libsignal-protocol-c" ,libsignal-protocol-c)
        ("libsoup" ,libsoup)
+       ;;("libsrtp" ,libsrtp)             ;for calls support
+       ("pango" ,pango)
        ("qrencode" ,qrencode)
-       ("sqlite" ,sqlite)
-       ("gpgme" ,gpgme)
-       ("gtk+" ,gtk+)
-       ("glib-networking" ,glib-networking)
-       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)))
+       ("sqlite" ,sqlite)))
+       ;;("webrtc-audio-processing" ,webrtc-audio-processing))) ;for A/V support
     (synopsis "Graphical Jabber/XMPP Client using GTK+/Vala")
     (description "Dino is a chat client for the desktop.  It focuses on providing
 a minimal yet reliable Jabber/XMPP experience and having encryption enabled by
diff --git a/gnu/packages/moreutils.scm b/gnu/packages/moreutils.scm
index 9e3bf0fc29..47bda32126 100644
--- a/gnu/packages/moreutils.scm
+++ b/gnu/packages/moreutils.scm
@@ -34,13 +34,9 @@
     (source
      (origin
        (method url-fetch)
-       (uri (list
-             (string-append
-              "https://git.joeyh.name/index.cgi/moreutils.git/snapshot/"
-              name "-" version ".tar.gz")
-             (string-append
-              "http://drabczyk.org/"
-              name "-" version ".tar.gz")))
+       (uri (string-append
+             "https://git.joeyh.name/index.cgi/moreutils.git/snapshot/"
+             name "-" version ".tar.gz"))
        (sha256
         (base32 "10c8b4bwnli4gxwvgmgkc5kin1ksrxsnxmigs7y4rrh4aaszdjb0"))))
     (build-system gnu-build-system)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index b8d5cf510e..c212fc3ef7 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -1399,7 +1399,7 @@ and up to 1 Mbit/s downstream.")
 (define-public whois
   (package
     (name "whois")
-    (version "5.5.9")
+    (version "5.5.10")
     (source
      (origin
        (method git-fetch)
@@ -1408,7 +1408,7 @@ and up to 1 Mbit/s downstream.")
               (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0l9dhyciylh14lqw8j5mrk0y2hl95cnj8pyvvabbgwxpsdn0yvbb"))))
+        (base32 "179hgmh9yqk8jq26ybik4cr3lgryd5p6kdwccc3r7mfssk3yp8lz"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no test suite
@@ -3033,14 +3033,14 @@ asynchronous model using a modern C++ approach.")
 (define-public asio
   (package
     (inherit asio-1.12)
-    (version "1.18.1")
+    (version "1.18.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://sourceforge/asio/asio/"
                            version " (Stable)/asio-" version ".tar.bz2"))
        (sha256
-        (base32 "04wi69d72l1p5c7d63z1dz06zn8pdqsbgx1if98dszs9ymfqgyaa"))))))
+        (base32 "1wpr4ymv63a192fmymwyxd7v0bv575v022gz53y0mcflhr2mvh1s"))))))
 
 (define-public shadowsocks
   ;; There are some security fixes after the last release.
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 4510affe0f..1262c0e303 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -647,7 +647,14 @@ underlying solvers like Cplex, Gurobi, Lpsolver, Glpk, CbC, SCIP or WBO.")
        #:make-flags
        (list (string-append "LIBDIR="
                             (assoc-ref %outputs "out")
-                            "/lib/ocaml/site-lib"))))
+                            "/lib/ocaml/site-lib"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-test-script
+           (lambda _
+             (substitute* "applications/dose-tests.py"
+               (("warning\\(")
+                "from warnings import warn\nwarn(")))))))
     (propagated-inputs
       `(("ocaml-graph" ,ocaml-graph)
         ("ocaml-cudf" ,ocaml-cudf)
@@ -1030,7 +1037,7 @@ Emacs.")
 (define-public ocaml-menhir
   (package
     (name "ocaml-menhir")
-    (version "20200211")
+    (version "20210419")
     (source
      (origin
        (method git-fetch)
@@ -1039,7 +1046,7 @@ Emacs.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "019izf51kdc7pzkw68zg8a2alc8lxw1gwdp7in970mr90n16b5zj"))))
+        (base32 "0jcbr7s3iwfr7xxfybs3h407g76yfp5yq5r9i0wg2ahvvbqh03ky"))))
     (build-system dune-build-system)
     (inputs
      `(("ocaml" ,ocaml)))
@@ -3086,39 +3093,41 @@ every compliant installation of OCaml and organize these libraries into a
 hierarchy of modules.")
     (license license:lgpl2.1+)))
 
-(define-public ocaml4.07-pcre
+(define-public ocaml-pcre
   (package
-    (name "ocaml4.07-pcre")
-    (version "7.4.1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                     (url "https://github.com/mmottl/pcre-ocaml")
-                     (commit version)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "11sd8g668h48790lamz0riw9jgnfkaif5qdfa0akcndwa6aj07jf"))))
+    (name "ocaml-pcre")
+    (version "7.4.6")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+              (url "https://github.com/mmottl/pcre-ocaml")
+              (commit version)))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32
+            "11mck879p5zvkghps4ky8yslm0isgz52d84adl0dmcfxv2ibvcym"))))
     (build-system dune-build-system)
     (arguments
-     `(#:test-target "."
-       #:ocaml ,ocaml-4.07
-       #:findlib ,ocaml4.07-findlib
-       #:dune ,ocaml4.07-dune))
+     ;; No tests.
+     '(#:tests? #f))
+    (propagated-inputs
+     `(("dune-configurator" ,dune-configurator)
+       ("pcre" ,pcre)))
     (native-inputs
-     `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
-       ("pcre:bin" ,pcre "bin")))
-    (propagated-inputs `(("pcre" ,pcre)))
+     `(("pcre:bin" ,pcre "bin")))
     (home-page "https://mmottl.github.io/pcre-ocaml")
-    (synopsis "Bindings to the Perl Compatibility Regular Expressions library")
-    (description "Pcre-ocaml offers library functions for string pattern
-matching and substitution, similar to the functionality offered by the Perl
-language.")
-    (license license:lgpl2.1+))); with the OCaml link exception
+    (synopsis
+      "Bindings to the Perl Compatibility Regular Expressions library")
+    (description "Pcre-ocaml offers library functions for string
+pattern matching and substitution, similar to the functionality
+offered by the Perl language.")
+    ;; With static linking exception
+    (license license:lgpl2.1+)))
 
-(define-public ocaml4.07-expect
+(define-public ocaml-expect
   (package
-    (name "ocaml4.07-expect")
+    (name "ocaml-expect")
     (version "0.0.6")
     (source (origin
               (method url-fetch)
@@ -3127,21 +3136,20 @@ language.")
                (base32
                 "098qvg9d4yrqzr5ax291y3whrpax0m3sx4gi6is0mblc96r9yqk0"))))
     (arguments
-     `(#:tests? #f
-       #:ocaml ,ocaml-4.07
-       #:findlib ,ocaml4.07-findlib))
+     `(#:tests? #f))
     (build-system ocaml-build-system)
     (native-inputs
-     `(("ocamlbuild" ,(package-with-ocaml4.07 ocamlbuild))
-       ("ocaml-num" ,(package-with-ocaml4.07 ocaml-num))
-       ("ocaml-pcre" ,ocaml4.07-pcre)
-       ("ounit" ,(package-with-ocaml4.07 ocaml-ounit))))
+     `(("ocamlbuild" ,ocamlbuild)
+       ("ocaml-num" ,ocaml-num)
+       ("ocaml-pcre" ,ocaml-pcre)
+       ("ounit" ,ocaml-ounit)))
     (propagated-inputs
-     `(("batteries" ,(package-with-ocaml4.07 ocaml-batteries))))
+     `(("batteries" ,ocaml-batteries)))
     (home-page "https://forge.ocamlcore.org/projects/ocaml-expect/")
     (synopsis "Simple implementation of expect")
-    (description "Help building unitary testing of interactive program.  You
-can match the question using a regular expression or a timeout.")
+    (description "This package provides utilities for building unitary testing
+of interactive program.  You can match the question using a regular expression
+or a timeout.")
     (license license:lgpl2.1+))) ; with the OCaml static compilation exception
 
 (define-public ocaml-stdlib-shims
@@ -3452,6 +3460,7 @@ JSON.")
        (uri (git-reference
              (url home-page)
              (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
          "10bf28my1yhj8a2d7bkgbna9j20wq0ghp92k926y29bmjj2qh0l7"))))
@@ -4539,7 +4548,7 @@ format}.  @code{craml} is released as a single binary (called @code{craml}).")
 (define-public ocaml-dot-merlin-reader
   (package
     (name "ocaml-dot-merlin-reader")
-    (version "3.4.2")
+    (version "4.2-411")
     (source
      (origin
        (method git-fetch)
@@ -4549,7 +4558,7 @@ format}.  @code{craml} is released as a single binary (called @code{craml}).")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0i2nwkdh6cfzmnsdsr8aw86vs8j1k5jkjzrs61b9384wnffdbbmj"))))
+         "1vl6p8m2pag5j283h5g2gzxxfm599k6qhyrjkdf3kyc476fc9lw8"))))
     (build-system dune-build-system)
     (arguments '(#:package "dot-merlin-reader"
                  #:tests? #f))          ; no tests
@@ -4565,21 +4574,16 @@ format}.  @code{craml} is released as a single binary (called @code{craml}).")
 
 (define-public ocaml-merlin
   (package
+    (inherit ocaml-dot-merlin-reader)
     (name "ocaml-merlin")
-    (version "3.4.2")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/ocaml/merlin")
-             (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32
-         "0i2nwkdh6cfzmnsdsr8aw86vs8j1k5jkjzrs61b9384wnffdbbmj"))))
-    (build-system dune-build-system)
-    (arguments '(#:package "merlin"
-                 #:test-target "tests"))
+    (arguments
+     '(#:package "merlin"
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "dune" "runtest" "-p" "merlin,dot-merlin-reader")))))))
     (inputs
      `(("ocaml-yojson" ,ocaml-yojson)
        ("ocaml-csexp" ,ocaml-csexp)
@@ -4588,7 +4592,6 @@ format}.  @code{craml} is released as a single binary (called @code{craml}).")
      `(("ocaml-dot-merlin-reader" ,ocaml-dot-merlin-reader) ; required for tests
        ("ocaml-mdx" ,ocaml-mdx)
        ("jq" ,jq)))
-    (home-page "https://ocaml.github.io/merlin/")
     (synopsis "Context sensitive completion for OCaml in Vim and Emacs")
     (description "Merlin is an editor service that provides modern IDE
 features for OCaml.  Emacs and Vim support is provided out-of-the-box.
@@ -5024,7 +5027,7 @@ as part of the same ocaml-migrate-parsetree driver.")
 (define-public ocaml-ppxlib
   (package
     (name "ocaml-ppxlib")
-    (version "0.22.0")
+    (version "0.22.1")
     (home-page "https://github.com/ocaml-ppx/ppxlib")
     (source
      (origin
@@ -5035,7 +5038,7 @@ as part of the same ocaml-migrate-parsetree driver.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0kf7lgcwygf6zlx7rwddqpqvasa6v7xiq0bqal8vxlib6lpg074q"))))
+         "0cpfg634if1py1b2rljk3cagq9gj68dl2gk1kdg76f9rapvl2i4g"))))
     (build-system dune-build-system)
     (propagated-inputs
      `(("ocaml-base" ,ocaml-base)
@@ -6798,6 +6801,64 @@ in the documentation always stays up-to-date.
 compatibility.")
     (license license:isc)))
 
+(define-public ocaml-mparser
+  (package
+    (name "ocaml-mparser")
+    (version "1.3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+              (url "https://github.com/murmour/mparser")
+              (commit version)))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32
+            "16j19v16r42gcsii6a337zrs5cxnf12ig0vaysxyr7sq5lplqhkx"))))
+    (build-system dune-build-system)
+    (arguments
+     ;; No tests.
+     '(#:package "mparser"
+       #:tests? #f))
+    (home-page "https://github.com/murmour/mparser")
+    (synopsis "Simple monadic parser combinator library")
+    (description
+      "This library implements a rather complete and efficient monadic parser
+combinator library similar to the Parsec library for Haskell by Daan Leijen and
+the FParsec library for FSharp by Stephan Tolksdorf.")
+    ;; With static linking exception.
+    (license license:lgpl2.1+)))
+
+(define-public ocaml-mparser-re
+  (package
+    (inherit ocaml-mparser)
+    (name "ocaml-mparser-re")
+    (arguments
+     ;; No tests.
+     '(#:package "mparser-re"
+       #:tests? #f))
+    (propagated-inputs
+     `(("ocaml-mparser" ,ocaml-mparser)
+       ("ocaml-re" ,ocaml-re)))
+    (synopsis "MParser plugin for RE-based regular expressions")
+    (description "This package provides RE-based regular expressions
+support for Mparser.")))
+
+(define-public ocaml-mparser-pcre
+  (package
+    (inherit ocaml-mparser)
+    (name "ocaml-mparser-pcre")
+    (arguments
+     ;; No tests.
+     '(#:package "mparser-pcre"
+       #:tests? #f))
+    (propagated-inputs
+     `(("ocaml-mparser" ,ocaml-mparser)
+       ("ocaml-pcre" ,ocaml-pcre)))
+    (synopsis "MParser plugin for PCRE-based regular expressions")
+    (description "This package provides PCRE-based regular expressions
+support for Mparser.")))
+
 (define-public lablgtk3
   (package
     (name "lablgtk")
diff --git a/gnu/packages/patches/cups-CVE-2020-10001.patch b/gnu/packages/patches/cups-CVE-2020-10001.patch
new file mode 100644
index 0000000000..1b16c7d97c
--- /dev/null
+++ b/gnu/packages/patches/cups-CVE-2020-10001.patch
@@ -0,0 +1,47 @@
+From efbea1742bd30f842fbbfb87a473e5c84f4162f9 Mon Sep 17 00:00:00 2001
+From: Michael R Sweet <msweet@msweet.org>
+Date: Mon, 1 Feb 2021 15:02:32 -0500
+Subject: [PATCH] Fix a buffer (read) overflow in ippReadIO (CVE-2020-10001)
+
+---
+
+diff --git a/cups/ipp.c b/cups/ipp.c
+index 3d529346c..adbb26fba 100644
+--- a/cups/ipp.c
++++ b/cups/ipp.c
+@@ -2866,7 +2866,8 @@ ippReadIO(void       *src,		/* I - Data source */
+   unsigned char		*buffer,	/* Data buffer */
+ 			string[IPP_MAX_TEXT],
+ 					/* Small string buffer */
+-			*bufptr;	/* Pointer into buffer */
++			*bufptr,	/* Pointer into buffer */
++			*bufend;	/* End of buffer */
+   ipp_attribute_t	*attr;		/* Current attribute */
+   ipp_tag_t		tag;		/* Current tag */
+   ipp_tag_t		value_tag;	/* Current value tag */
+@@ -3441,6 +3442,7 @@ ippReadIO(void       *src,		/* I - Data source */
+ 		}
+ 
+                 bufptr = buffer;
++                bufend = buffer + n;
+ 
+ 	       /*
+ 	        * text-with-language and name-with-language are composite
+@@ -3454,7 +3456,7 @@ ippReadIO(void       *src,		/* I - Data source */
+ 
+ 		n = (bufptr[0] << 8) | bufptr[1];
+ 
+-		if ((bufptr + 2 + n) >= (buffer + IPP_BUF_SIZE) || n >= (int)sizeof(string))
++		if ((bufptr + 2 + n + 2) > bufend || n >= (int)sizeof(string))
+ 		{
+ 		  _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
+ 		                _("IPP language length overflows value."), 1);
+@@ -3481,7 +3483,7 @@ ippReadIO(void       *src,		/* I - Data source */
+                 bufptr += 2 + n;
+ 		n = (bufptr[0] << 8) | bufptr[1];
+ 
+-		if ((bufptr + 2 + n) >= (buffer + IPP_BUF_SIZE))
++		if ((bufptr + 2 + n) > bufend)
+ 		{
+ 		  _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
+ 		                _("IPP string length overflows value."), 1);
diff --git a/gnu/packages/patches/linkchecker-tests-require-network.patch b/gnu/packages/patches/linkchecker-tests-require-network.patch
deleted file mode 100644
index f3e488cec2..0000000000
--- a/gnu/packages/patches/linkchecker-tests-require-network.patch
+++ /dev/null
@@ -1,182 +0,0 @@
-From f24c88a0732024028fffe0372039a847e91722ea Mon Sep 17 00:00:00 2001
-From: Christopher Baines <mail@cbaines.net>
-Date: Tue, 1 Jan 2019 22:36:29 +0000
-Subject: [PATCH] Mark more tests that require the network
-
-I believe all these tests require the network, at least they seem to
-fail if it's I run them without connecting my computer to the web.
-
-I'm looking at this as part of packaging linkchecker for GNU Guix,
-where the package is build and the tests are run in a isolated
-environment, intentionally without network access, to avoid issues
-with non-reproducible package builds.
----
- tests/checker/test_http.py          | 2 ++
- tests/checker/test_http_misc.py     | 2 ++
- tests/checker/test_http_redirect.py | 2 ++
- tests/checker/test_httpbin.py       | 5 +++++
- tests/checker/test_misc.py          | 4 ++++
- tests/checker/test_whitespace.py    | 3 +++
- 6 files changed, 18 insertions(+)
-
-diff --git a/tests/checker/test_http.py b/tests/checker/test_http.py
-index e4c1e097..8a8af567 100644
---- a/tests/checker/test_http.py
-+++ b/tests/checker/test_http.py
-@@ -20,6 +20,7 @@
- 
- import pytest
- 
-+from tests import need_network
- from .httpserver import HttpServerTest, CookieRedirectHttpRequestHandler
- 
- class TestHttp (HttpServerTest):
-@@ -29,6 +30,7 @@ def __init__(self, methodName='runTest'):
-         super(TestHttp, self).__init__(methodName=methodName)
-         self.handler = CookieRedirectHttpRequestHandler
- 
-+    @need_network
-     def test_html (self):
-         confargs = dict(recursionlevel=1)
-         self.file_test("http.html", confargs=confargs)
-diff --git a/tests/checker/test_http_misc.py b/tests/checker/test_http_misc.py
-index 9922d85f..c6b6afdb 100644
---- a/tests/checker/test_http_misc.py
-+++ b/tests/checker/test_http_misc.py
-@@ -20,11 +20,13 @@
- import os
- import sys
- from .httpserver import HttpServerTest
-+from tests import need_network
- from linkcheck.network import iputil
- 
- class TestHttpMisc (HttpServerTest):
-     """Test http:// misc link checking."""
- 
-+    @need_network
-     def test_html (self):
-         self.swf_test()
-         self.obfuscate_test()
-diff --git a/tests/checker/test_http_redirect.py b/tests/checker/test_http_redirect.py
-index f212d98e..2253a70d 100644
---- a/tests/checker/test_http_redirect.py
-+++ b/tests/checker/test_http_redirect.py
-@@ -17,6 +17,7 @@
- """
- Test http checking.
- """
-+from tests import need_network
- from .httpserver import HttpServerTest, CookieRedirectHttpRequestHandler
- 
- class TestHttpRedirect (HttpServerTest):
-@@ -26,6 +27,7 @@ def __init__(self, methodName='runTest'):
-         super(TestHttpRedirect, self).__init__(methodName=methodName)
-         self.handler = CookieRedirectHttpRequestHandler
- 
-+    @need_network
-     def test_redirect (self):
-         self.redirect1()
-         self.redirect2()
-diff --git a/tests/checker/test_httpbin.py b/tests/checker/test_httpbin.py
-index 0319c2f6..4c8fa846 100644
---- a/tests/checker/test_httpbin.py
-+++ b/tests/checker/test_httpbin.py
-@@ -18,6 +18,7 @@
- Test http stuff with httpbin.org.
- """
- import re
-+from tests import need_network
- from . import LinkCheckTest
- 
- 
-@@ -30,6 +31,7 @@ def get_httpbin_url(path):
- class TestHttpbin(LinkCheckTest):
-     """Test http:// link redirection checking."""
- 
-+    @need_network
-     def test_http_link(self):
-         linkurl = u"http://www.example.com"
-         nlinkurl = self.norm(linkurl)
-@@ -48,6 +50,7 @@ def test_http_link(self):
-         ]
-         self.direct(url, resultlines, recursionlevel=1)
- 
-+    @need_network
-     def test_basic_auth(self):
-         user = u"testuser"
-         password = u"testpassword"
-@@ -67,6 +70,7 @@ def test_basic_auth(self):
-         ]
-         self.direct(url, resultlines, confargs=confargs)
- 
-+    @need_network
-     def test_http_refresh_header(self):
-         linkurl = u"http://www.example.com"
-         nlinkurl = self.norm(linkurl)
-@@ -85,6 +89,7 @@ def test_http_refresh_header(self):
-         ]
-         self.direct(url, resultlines, recursionlevel=1)
- 
-+    @need_network
-     def test_http_content_location_header(self):
-         linkurl = u"http://www.example.com"
-         nlinkurl = self.norm(linkurl)
-diff --git a/tests/checker/test_misc.py b/tests/checker/test_misc.py
-index 2e4cfd07..f9591f9d 100644
---- a/tests/checker/test_misc.py
-+++ b/tests/checker/test_misc.py
-@@ -17,6 +17,7 @@
- """
- Test miscellaneous html tag parsing and URL types
- """
-+from tests import need_network
- from . import LinkCheckTest
- 
- 
-@@ -25,15 +26,18 @@ class TestMisc (LinkCheckTest):
-     Test misc link types.
-     """
- 
-+    @need_network
-     def test_misc (self):
-         self.file_test("misc.html")
- 
-     def test_html5 (self):
-         self.file_test("html5.html")
- 
-+    @need_network
-     def test_archive (self):
-         self.file_test("archive.html")
- 
-+    @need_network
-     def test_itms_services(self):
-         url = u"itms-services:?action=download-manifest&url=http://www.example.com/"
-         resultlines = [
-diff --git a/tests/checker/test_whitespace.py b/tests/checker/test_whitespace.py
-index 609c108a..fc2727d6 100644
---- a/tests/checker/test_whitespace.py
-+++ b/tests/checker/test_whitespace.py
-@@ -17,6 +17,7 @@
- """
- Test whitespace handling.
- """
-+from tests import need_network
- from . import LinkCheckTest
- 
- 
-@@ -25,6 +26,7 @@ class TestWhitespace (LinkCheckTest):
-     Test whitespace in URLs.
-     """
- 
-+    @need_network
-     def test_leading_whitespace (self):
-         # Leading whitespace
-         url = u" http://www.example.org/"
-@@ -50,6 +52,7 @@ def test_leading_whitespace (self):
-         ]
-         self.direct(url, resultlines)
- 
-+    @need_network
-     def test_trailing_whitespace (self):
-         # Trailing whitespace
-         url = u"http://www.example.org/ "
diff --git a/gnu/packages/patches/tlf-support-hamlib-4.2+.patch b/gnu/packages/patches/tlf-support-hamlib-4.2+.patch
new file mode 100644
index 0000000000..3c5db10010
--- /dev/null
+++ b/gnu/packages/patches/tlf-support-hamlib-4.2+.patch
@@ -0,0 +1,66 @@
+From 295fa956f899af37acb6bda9c76ad77748eb9a4a Mon Sep 17 00:00:00 2001
+From: Ervin Hegedus <airween@gmail.com>
+Date: Sat, 5 Jun 2021 09:23:06 +0200
+Subject: [PATCH] Quick fix for changing of Hamlib's FILPATHLEN macro
+
+This patch was prepared for Guix by Jack Hill <jackhill@jackhill.us> by
+squashing together the changes from upstream #268
+<https://github.com/Tlf/tlf/pull/268>.
+
+It allows the released version of Tlf to build against the version 4.2 of
+hamlib in Guix.
+
+---
+ src/sendqrg.c |  6 +++---
+ src/sendqrg.h | 10 ++++++++++
+ 2 files changed, 13 insertions(+), 3 deletions(-)
+
+diff --git a/src/sendqrg.c b/src/sendqrg.c
+index ceeb356..5d4420e 100644
+--- a/src/sendqrg.c
++++ b/src/sendqrg.c
+@@ -87,7 +87,7 @@ int init_tlf_rig(void) {
+ 
+     rigportname[strlen(rigportname) - 1] = '\0';	// remove '\n'
+     strncpy(my_rig->state.rigport.pathname, rigportname,
+-	    FILPATHLEN - 1);
++	    TLFFILPATHLEN - 1);
+ 
+     caps = my_rig->caps;
+ 
+@@ -104,9 +104,9 @@ int init_tlf_rig(void) {
+     if (dcd_type != RIG_DCD_NONE)
+ 	my_rig->state.dcdport.type.dcd = dcd_type;
+     if (ptt_file)
+-	strncpy(my_rig->state.pttport.pathname, ptt_file, FILPATHLEN);
++	strncpy(my_rig->state.pttport.pathname, ptt_file, TLFFILPATHLEN);
+     if (dcd_file)
+-	strncpy(my_rig->state.dcdport.pathname, dcd_file, FILPATHLEN);
++	strncpy(my_rig->state.dcdport.pathname, dcd_file, TLFFILPATHLEN);
+ 
+     my_rig->state.rigport.parm.serial.rate = serial_rate;
+ 
+diff --git a/src/sendqrg.h b/src/sendqrg.h
+index 8c53f2e..1ef85a6 100644
+--- a/src/sendqrg.h
++++ b/src/sendqrg.h
+@@ -23,6 +23,16 @@
+ 
+ #include <hamlib/rig.h>
+ 
++#ifdef HAMLIB_FILPATHLEN
++  #define TLFFILPATHLEN HAMLIB_FILPATHLEN
++#else
++  #ifdef FILPATHLEN
++  #define TLFFILPATHLEN FILPATHLEN
++  #else
++  #error "(HAMLIB_)FILPATHLEN macro not found"
++  #endif
++#endif
++
+ int init_tlf_rig(void);
+ void close_tlf_rig(RIG *my_rig);
+ 
+-- 
+2.32.0
+
diff --git a/gnu/packages/patches/widelands-system-wide_minizip.patch b/gnu/packages/patches/widelands-system-wide_minizip.patch
index 1fac0d5396..b59fed7531 100644
--- a/gnu/packages/patches/widelands-system-wide_minizip.patch
+++ b/gnu/packages/patches/widelands-system-wide_minizip.patch
@@ -2,41 +2,29 @@ Description: use the system-wide minizip instead of the embeeded one if found.
 Forwarded-Upstream: It was provided by upstream: http://bazaar.launchpad.net/~widelands-dev/widelands/b19-debian/revision/8147
  .
  Thanks to Fòram na Gàidhlig for the patch.
- 
-I just added this line to make its use easier:
-  set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_HOME_DIRECTORY}/Modules)
 
 === modified file 'CMakeLists.txt'
 ---
- CMakeLists.txt                     |    3 +++
- Modules/FindMinizip.cmake          |   37 +++++++++++++++++++++++++++++++++++++
- cmake/WlFunctions.cmake            |    7 +++++++
- src/io/CMakeLists.txt              |    2 +-
- src/third_party/CMakeLists.txt     |   20 +++++++++++---------
- src/third_party/minizip/README.txt |    4 ++++
- 6 files changed, 63 insertions(+), 10 deletions(-)
+ CMakeLists.txt                     |  1 +
+ cmake/Modules/FindMinizip.cmake    | 37 +++++++++++++++++++++++++++++++++++++
+ cmake/WlFunctions.cmake            |  8 ++++++++
+ src/io/filesystem/CMakeLists.txt   |  2 +-
+ src/io/filesystem/zip_filesystem.h |  6 ++++++
+ src/third_party/CMakeLists.txt     | 20 +++++++++++---------
+ 6 files changed, 64 insertions(+), 10 deletions(-)
 
 --- a/CMakeLists.txt
 +++ b/CMakeLists.txt
-@@ -43,6 +43,7 @@
- endif(POLICY CMP0074)
- 
- include("${CMAKE_SOURCE_DIR}/cmake/WlFunctions.cmake")
-+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_HOME_DIRECTORY}/Modules)
- 
- option(OPTION_USE_GLBINDING "Use glbinding instead of GLEW" OFF)
- option(OPTION_GLEW_STATIC "Use static GLEW Library" OFF)
-@@ -105,6 +106,8 @@
+@@ -142,6 +142,7 @@
+ find_package(SDL2_mixer REQUIRED)
  find_package(SDL2_ttf REQUIRED)
  find_package(ZLIB REQUIRED)
- find_package(ICU REQUIRED)
 +find_package(Minizip)
-+
- if(OPTION_USE_GLBINDING)
-   find_package(glbinding REQUIRED)
+ if(${CMAKE_VERSION} VERSION_LESS 3.9.0)
+     find_package(ICU_old REQUIRED)
  else()
 --- /dev/null
-+++ b/Modules/FindMinizip.cmake
++++ b/cmake/Modules/FindMinizip.cmake
 @@ -0,0 +1,37 @@
 +# - Try to find Minizip
 +# Once done this will define
@@ -77,10 +65,10 @@ I just added this line to make its use easier:
 +
 --- a/cmake/WlFunctions.cmake
 +++ b/cmake/WlFunctions.cmake
-@@ -81,6 +81,14 @@
+@@ -84,6 +84,14 @@
+ 
    if(ARG_USES_ZLIB)
-     wl_include_system_directories(${NAME} ${ZLIB_INCLUDE_DIRS})
-     target_link_libraries(${NAME} ${ZLIB_LIBRARY})
+     target_link_libraries(${NAME} ZLIB::ZLIB)
 +    if (MINIZIP_FOUND)
 +      wl_include_system_directories(${NAME}  ${MINIZIP_INCLUDE_DIR})
 +      target_link_libraries(${NAME}  ${MINIZIP_LIBRARY})
@@ -136,7 +124,7 @@ I just added this line to make its use easier:
  )
 --- a/src/io/filesystem/zip_filesystem.h
 +++ b/src/io/filesystem/zip_filesystem.h
-@@ -28,8 +28,14 @@
+@@ -25,8 +25,14 @@
  #include "io/filesystem/filesystem.h"
  #include "io/streamread.h"
  #include "io/streamwrite.h"
diff --git a/gnu/packages/protobuf.scm b/gnu/packages/protobuf.scm
index 405b83efee..bd3b4c959c 100644
--- a/gnu/packages/protobuf.scm
+++ b/gnu/packages/protobuf.scm
@@ -298,7 +298,7 @@ structured data.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-before 'add-source-to-load-path 'change-working-directory
+         (add-before 'expand-load-path 'change-working-directory
            (lambda _ (chdir "editors") #t)))))
     (home-page "https://github.com/protocolbuffers/protobuf")
     (synopsis "Protocol buffers major mode for Emacs")
diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm
index 10fb2403e6..d2c4caac3a 100644
--- a/gnu/packages/python-science.scm
+++ b/gnu/packages/python-science.scm
@@ -73,8 +73,7 @@
        ("python-matplotlib" ,python-matplotlib)
        ("python-pyparsing" ,python-pyparsing)))
     (inputs
-     `(("lapack" ,lapack)
-       ("openblas" ,openblas)
+     `(("openblas" ,openblas)
        ("pybind11" ,pybind11)))
     (native-inputs
      `(("python-cython" ,python-cython)
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index 23978547d0..e4d1326fb8 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -356,13 +356,13 @@ WSGI.  This package includes libraries for implementing ASGI servers.")
 (define-public python-aws-sam-translator
   (package
     (name "python-aws-sam-translator")
-    (version "1.30.1")
+    (version "1.36.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "aws-sam-translator" version))
               (sha256
                (base32
-                "0d9ppd94x2kw404m49ajswmmxgdngbs4p5ajyrdvnlivfzqbv7dx"))))
+                "115mcbb4r205c1hln199llqrvvbijfqz075rwx991l99jc6rj6zs"))))
     (build-system python-build-system)
     (arguments
      `(;; XXX: Tests are not distributed with the PyPI archive, and would
@@ -456,7 +456,7 @@ emit information from within their applications to the AWS X-Ray service.")
 (define-public python-cfn-lint
   (package
     (name "python-cfn-lint")
-    (version "0.41.0")
+    (version "0.51.0")
     (home-page "https://github.com/aws-cloudformation/cfn-python-lint")
     (source (origin
               (method git-fetch)
@@ -466,7 +466,7 @@ emit information from within their applications to the AWS X-Ray service.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0nqs0fmj3hd7pnd9hkb4z57jvi2iv82hh6n3xxba6i6p8zgx75q4"))))
+                "1027s243sik25c6sqw6gla7k7vl3jdicrik5zdsa8pafxh2baja4"))))
     (build-system python-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
@@ -477,6 +477,8 @@ emit information from within their applications to the AWS X-Ray service.")
                         ;; to avoid a dependency on 'git'.
                         (delete-file
                          "test/unit/module/maintenance/test_update_documentation.py")
+                        (delete-file
+                         "test/unit/module/maintenance/test_update_resource_specs.py")
                         (invoke "python" "-m" "unittest" "discover"
                                 "-s" "test")))))))
     (native-inputs
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index bbc51590b6..69414dbcee 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
-;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013, 2014, 2015, 2016, 2019 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014, 2017, 2021 Eric Bavier <bavier@posteo.net>
@@ -3514,14 +3514,14 @@ environments and back.")
 (define-public python-pyyaml
   (package
     (name "python-pyyaml")
-    (version "5.3.1")
+    (version "5.4.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "PyYAML" version))
        (sha256
         (base32
-         "0pb4zvkfxfijkpgd1b86xjsqql97ssf1knbd1v53wkg1qm9cgsmq"))))
+         "0pm440pmpvgv5rbbnm8hk4qga5a292kvlm1bh3x2nwr8pb5p8xv0"))))
     (build-system python-build-system)
     (inputs
      `(("libyaml" ,libyaml)))
@@ -4916,8 +4916,7 @@ between language specification and implementation aspects.")
          "1ak9dmjja0q90a7fsxli51ypcwssh8c4pb6f8wkrsnf2xgdk6dy9"))))
     (build-system python-build-system)
     (inputs
-     `(("openblas" ,openblas)
-       ("lapack" ,lapack)))
+     `(("openblas" ,openblas)))
     (native-inputs
      `(("python-cython" ,python-cython)
        ("python-pytest" ,python-pytest)
@@ -5859,6 +5858,28 @@ operators such as union, intersection, and difference.")
 (define-public python2-pysnptools
   (package-with-python2 python-pysnptools))
 
+(define-public python-pykdtree
+  (package
+    (name "python-pykdtree")
+    (version "1.3.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pykdtree" version))
+       (sha256
+        (base32 "0p8n2ljdacfixkiw092974dmhy4s1c0h032ii1z9kwi9h5h5rgmy"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-nose" ,python-nose)))
+    (propagated-inputs
+     `(("python-numpy" ,python-numpy)))
+    (home-page "https://github.com/storpipfugl/pykdtree")
+    (synopsis "Fast kd-tree implementation with OpenMP-enabled queries")
+    (description
+     "@code{pykdtree} is a kd-tree implementation for fast nearest neighbour
+search in Python.")
+    (license license:lgpl3+)))
+
 (define-public python-wurlitzer
   (package
     (name "python-wurlitzer")
@@ -6204,13 +6225,13 @@ the OleFileIO module from PIL, the Python Image Library.")
 (define-public python-pikepdf
   (package
     (name "python-pikepdf")
-    (version "2.12.2")
+    (version "2.13.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pikepdf" version))
        (sha256
-        (base32 "1r68zh8whp8wg4brjf5vha8h1ly8pjqyb37pfw91hyxfn6cm9wsz"))))
+        (base32 "1di5bbh2mr8m1aydky8ix12pkybrd0cvs8xqf5s2y1xa349r514l"))))
     (build-system python-build-system)
     (arguments
      `(#:tests? #false))                ;require python-xmp-toolkit
@@ -14322,17 +14343,40 @@ focus on event-based network programming and multiprotocol integration.")
 (define-public python-pika
   (package
     (name "python-pika")
-    (version "0.12.0")
+    (version "1.2.0")
     (source
       (origin
-        (method url-fetch)
-        (uri (pypi-uri "pika" version))
+        (method git-fetch)
+        (uri (git-reference
+              (url "https://github.com/pika/pika")
+              (commit version)))
+        (file-name (git-file-name name version))
         (sha256
          (base32
-          "0ld7akgm93s8pfa4dsx9qlzlhj76zspbr5m9ms0ns09yd2w4aq9h"))))
+          "0cm45xydk2jigydwszwik89qlbk6l3l18sxhzppzqmxw2rdkm22s"))))
     (build-system python-build-system)
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (add-before 'check 'disable-live-tests
+                    (lambda _
+                      ;; Disable tests that require RabbitMQ, which is not
+                      ;; yet available in Guix.
+                      (substitute* "setup.cfg"
+                        (("tests/unit,tests/acceptance")
+                         "tests/unit"))
+                      (with-directory-excursion "tests"
+                        (for-each delete-file
+                                '("unit/base_connection_tests.py"
+                                  "unit/threaded_test_wrapper_test.py")))))
+                  (replace 'check
+                    (lambda _
+                      (invoke "nosetests"))))))
     (native-inputs
-     `(("python-pyev" ,python-pyev)
+     `(("python-mock" ,python-mock)
+       ("python-nose" ,python-nose)
+
+       ;; These are optional at runtime, and provided here for tests.
+       ("python-gevent" ,python-gevent)
        ("python-tornado" ,python-tornado)
        ("python-twisted" ,python-twisted)))
     (home-page "https://pika.readthedocs.org")
@@ -14343,9 +14387,6 @@ Protocol) 0-9-1 protocol that tries to stay fairly independent of the underlying
 network support library.")
     (license license:bsd-3)))
 
-(define-public python2-pika
-  (package-with-python2 python-pika))
-
 (define-public python-ply
   (package
     (name "python-ply")
@@ -16584,14 +16625,14 @@ can even create animations with the cursor controls.")
 (define-public python-ddt
   (package
     (name "python-ddt")
-    (version "1.4.1")
+    (version "1.4.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "ddt" version))
        (sha256
         (base32
-         "1niqpzc26sxdbyi46r07n4pma5fjx6crww2539vpfmsf0w6yg585"))))
+         "0y2k756qjz1rhpivi60hy29b4bf0bh3wck39i1mn6pkil9k779k4"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-pytest" ,python-pytest)))
@@ -22680,8 +22721,7 @@ standard error channel (stderr) in your program.")
          ("python-mock" ,python-mock)
          ("python-pytest" ,python-pytest)
          ("python-pytest-cov" ,python-pytest-cov)
-         ("python-pytest-xdist" ,python-pytest-xdist)
-         ("python-tox" ,python-tox)))
+         ("python-pytest-xdist" ,python-pytest-xdist)))
       (home-page "https://github.com/neithere/argh/")
       (synopsis "Argparse wrapper with natural syntax")
       (description
diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm
index fbbca3cbc8..9a64686c50 100644
--- a/gnu/packages/radio.scm
+++ b/gnu/packages/radio.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2020 Charlie Ritter <chewzerita@posteo.net>
 ;;; Copyright © 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2021 João Pedro Simas <jpsimas@gmail.com>
+;;; Copyright © 2021 Jack Hill <jackhill@jackhill.us>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -29,6 +30,7 @@
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix utils)
+  #:use-module (gnu packages)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages astronomy)
@@ -68,6 +70,7 @@
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages networking)
+  #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
@@ -1065,6 +1068,65 @@ users.")
                            "--with-tcl-binding"
                            "--with-xml-support")))))
 
+(define-public tlf
+  (package
+    (name "tlf")
+    (version "1.4.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/tlf/tlf")
+             (commit (string-append "tlf-" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1xpgs4k27pjd9mianfknknp6mf34365bcp96wrv5xh4dhph573rj"))
+       (patches
+        (search-patches "tlf-support-hamlib-4.2+.patch"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags
+       (list "--enable-fldigi-xmlrpc")))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("perl" ,perl)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("cmocka" ,cmocka)
+       ("glib" ,glib)
+       ("hamlib" ,hamlib)
+       ("libusb" ,libusb) ;`Requires.private: libusb-1.0` in hamlib pkg-config
+       ("ncurses" ,ncurses)
+       ("xmlrpc-c" ,xmlrpc-c)))
+    (home-page "https://tlf.github.io/")
+    (synopsis "Amateur radio contest logging for the terminal")
+    (description "TLF is a @acronym{Text User Interface, TUI} amateur radio
+contest logging program.  It integrates with radios supported by hamlib and
+other ham radio programs like fldigi.  Many contests are supported including:
+
+@itemize
+@item CQWW (SO, M/S and M/M)
+@item WPX (SO, M/S and M/M)
+@item ARRL Sweepstakes (SO, M/S )
+@item EU SPRINT
+@item EUHFC
+@item ARRL-DX (both sides)
+@item ARRL-FD
+@item ARRL 10m
+@item ARRL 160m
+@item Region1 field day
+@item SP DX contest
+@item PACC (both sides)
+@item NRAU - scandinavian
+@item Wysiwyg mults mode (per band or per contest)
+@item WAEDX
+@end itemize
+
+It also supports connecting to DX clusters, log synchronization with other TLF
+instances over the network, and general QSO and DXpedition logging.")
+    (license license:gpl2+)))
+
 (define-public wsjtx
   (package
     (name "wsjtx")
diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm
index 82afb01998..5108ade3c9 100644
--- a/gnu/packages/rust-apps.scm
+++ b/gnu/packages/rust-apps.scm
@@ -587,14 +587,14 @@ gitignore rules.")
 (define-public tectonic
   (package
     (name "tectonic")
-    (version "0.6.4")
+    (version "0.7.0")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "tectonic" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "1h6m0mxqd8580c82dknja7qqhkg1pbvwmw4rlzfr1ndfjrcbk3al"))))
+        (base32 "1x6i97dl28y6wxpq2r4dcsa853sa4yw5vhl79qdb44q5wsd6ba1f"))))
     (build-system cargo-build-system)
     (arguments
      `(#:rust ,rust-1.52
diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index 2f99407b94..95c7dcee63 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -424,9 +424,9 @@ it a convenient format to store user input files.")
              ;; /etc/services, which is not present in build environment.
              (substitute* "src/kj/async-io-test.c++" ((":http") ":80"))
              #t))
-         (add-before 'check 'use-tmp-for-tempory-files
+         (add-before 'check 'use-tmp-for-temporary-files
            (lambda _
-             ;; Use /tmp for tempory files, as the default /var/tmp directory
+             ;; Use /tmp for temporary files, as the default /var/tmp directory
              ;; doesn't exist.
              (substitute* "src/kj/filesystem-disk-test.c++"
                (("VAR\\_TMP \"/var/tmp\"")
diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm
index 62b198fd0d..3040082ee2 100644
--- a/gnu/packages/text-editors.scm
+++ b/gnu/packages/text-editors.scm
@@ -840,14 +840,14 @@ editors.")
 (define-public texmacs
   (package
     (name "texmacs")
-    (version "1.99.21")
+    (version "2.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.texmacs.org/Download/ftp/tmftp/"
                            "source/TeXmacs-" version "-src.tar.gz"))
        (sha256
-        (base32 "0zmm8212cha22dp1xablj1h4anlnyhjh09n13ckqf6ppb1bkf4gm"))))
+        (base32 "1gl6k1bwrk1y7hjyl4xvlqvmk5crl4jvsk8wrfp7ynbdin6n2i48"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -868,16 +868,14 @@ editors.")
              (let ((out (assoc-ref outputs "out")))
                (substitute* "packages/linux/icons.sh"
                  (("/usr/share")
-                  (string-append out "/share")))
-               #t)))
+                  (string-append out "/share"))))))
          (add-after 'install 'install-desktop-file
            (lambda* (#:key outputs #:allow-other-keys)
              ;; Install desktop file.
              (let* ((out (assoc-ref outputs "out"))
                     (apps (string-append out "/share/applications"))
                     (source "TeXmacs/misc/mime/texmacs.desktop"))
-               (install-file source apps)
-               #t)))
+               (install-file source apps))))
          (add-before 'configure 'gzip-flags
            (lambda _
              (substitute* "Makefile.in"
diff --git a/gnu/packages/tmux.scm b/gnu/packages/tmux.scm
index a4a3c1c012..79bcb956a9 100644
--- a/gnu/packages/tmux.scm
+++ b/gnu/packages/tmux.scm
@@ -6,8 +6,9 @@
 ;;; Copyright © 2017 Stefan Reichör <stefan@xsteve.at>
 ;;; Copyright © 2019–2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Oleg Pykhalov <go.wigust@gmail.com>
-;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
+;;; Copyright © 2020, 2021 Brice Waegeneire <brice@waegenei.re>
 ;;; Copyright © 2020 Edouard Klein <edk@beaver-labs.com>
+;;; Copyright © 2021 Matthew James Kraai <kraai@ftbfs.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -43,7 +44,7 @@
 (define-public tmux
   (package
     (name "tmux")
-    (version "3.2")
+    (version "3.2a")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -51,12 +52,12 @@
                     version "/tmux-" version ".tar.gz"))
              (sha256
               (base32
-               "16d310gcpfnfh7rl5vy1lwqy54ai5awkkybzkm1bw761719k8kb6"))))
+               "0pyhmipg6vxvxjk7mr410007qk98rh5q0mljvkdaisibz2j565am"))))
     (build-system gnu-build-system)
     (inputs
      `(("libevent" ,libevent)
        ("ncurses" ,ncurses)))
-    (home-page "https://tmux.github.io/")
+    (home-page "https://github.com/tmux/tmux/wiki")
     (synopsis "Terminal multiplexer")
     (description
      "tmux is a terminal multiplexer: it enables a number of terminals (or
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 79d80dbb7b..44d215c69c 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -42,7 +42,7 @@
 ;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2020 Alex McGrath <amk@amk.ie>
 ;;; Copyright © 2020, 2021 Michael Rohleder <mike@rohleder.de>
-;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2020, 2021 Vinicius Monego <monego@posteo.net>
 ;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
 ;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@posteo.ro>
 ;;; Copyright © 2020 Ivan Kozlov <kanichos@yandex.ru>
@@ -86,6 +86,7 @@
   #:use-module (guix build-system meson)
   #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
+  #:use-module (guix build-system qt)
   #:use-module (guix build-system waf)
   #:use-module (guix build-system trivial)
   #:use-module (gnu packages)
@@ -2988,7 +2989,7 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
 (define-public mlt
   (package
     (name "mlt")
-    (version "6.22.1")
+    (version "6.26.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2997,11 +2998,12 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0jxv848ykw0csbnayrd710ylw46m0picfv7rpzsxz1vh4jzs395k"))))
+                "1gz79xvs5jrzqhwhfk0dqdd3xiavnjp4q957h7nb02rij32byb39"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
-       #:make-flags '("CC=gcc" "CXX=g++")
+       #:make-flags '(,(string-append "CC=" (cc-for-target))
+                      ,(string-append "CXX=" (cxx-for-target)))
        #:configure-flags
        (list "--enable-gpl3"
              "--enable-gpl")
@@ -3018,6 +3020,7 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
              #t)))))
     (inputs
      `(("alsa-lib" ,alsa-lib)
+       ("alsa-plugins" ,alsa-plugins "pulseaudio")
        ("ffmpeg" ,ffmpeg)
        ("fftw" ,fftw)
        ("frei0r-plugins" ,frei0r-plugins)
@@ -3026,6 +3029,7 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
        ("libxml2" ,libxml2)
        ("jack" ,jack-1)
        ("ladspa" ,ladspa)
+       ("libebur128" ,libebur128)
        ("libexif" ,libexif)
        ("libvorbis" ,libvorbis)
        ("rubberband" ,rubberband)
@@ -3033,8 +3037,11 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
        ("pulseaudio" ,pulseaudio)
        ("qtbase" ,qtbase-5)
        ("qtsvg" ,qtsvg)
-       ("sdl" ,sdl)
-       ("sox" ,sox)))
+       ("rtaudio" ,rtaudio)
+       ("sdl2" ,sdl2)
+       ("sdl2-image" ,sdl2-image)
+       ("sox" ,sox)
+       ("vidstab" ,vidstab)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (home-page "https://www.mltframework.org/")
@@ -3045,7 +3052,7 @@ broadcasting.  It provides a toolkit for broadcasters, video editors, media
 players, transcoders, web streamers and many more types of applications.  The
 functionality of the system is provided via an assortment of ready to use
 tools, XML authoring components, and an extensible plug-in based API.")
-    (license license:gpl3)))
+    (license license:lgpl2.1+)))
 
 (define-public v4l-utils
   (package
@@ -4606,6 +4613,82 @@ helps you create the film you have always dreamed of.  Easily add sub-titles,
 transitions, and effects and then export your film to many common formats.")
     (license license:gpl3+)))
 
+(define-public shotcut
+  (package
+    (name "shotcut")
+    (version "21.03.21")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mltframework/shotcut")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0jb488vynn0vmq22z51bg4hb4617732nva9rg52lzl89v5n8gmsi"))))
+    (build-system qt-build-system)
+    (arguments
+     `(#:tests? #f ;there are no tests
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out")))
+               (invoke "qmake"
+                       (string-append "PREFIX=" out)
+                       "QMAKE_LRELEASE=lrelease"
+                       "QMAKE_LUPDATE=lupdate"
+                       "shotcut.pro"))))
+         (add-after 'install 'wrap-executable
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (frei0r (assoc-ref inputs "frei0r-plugins"))
+                    (ffmpeg (assoc-ref inputs "ffmpeg"))
+                    (jack (assoc-ref inputs "jack"))
+                    (sdl2 (assoc-ref inputs "sdl2")))
+               (wrap-program (string-append out "/bin/shotcut")
+                 `("PATH" ":" prefix
+                   ,(list (string-append ffmpeg "/bin")))
+                 `("LD_LIBRARY_PATH" ":" prefix
+                   ,(list (string-append jack "/lib" ":" sdl2 "/lib")))
+                 `("FREI0R_PATH" ":" =
+                   (,(string-append frei0r "/lib/frei0r-1/")))
+                 `("MLT_PREFIX" ":" =
+                   (,(assoc-ref inputs "mlt")))))
+             #t)))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("python" ,python-wrapper)
+       ("qttools" ,qttools)))
+    (inputs
+     `(("ffmpeg" ,ffmpeg)
+       ("frei0r-plugins" ,frei0r-plugins)
+       ("jack" ,jack-1)
+       ("ladspa" ,ladspa)
+       ("lame" ,lame)
+       ("libvpx" ,libvpx)
+       ("libx264" ,libx264)
+       ("mlt" ,mlt)
+       ("pulseaudio" ,pulseaudio)
+       ("qtbase" ,qtbase-5)
+       ("qtdeclarative" ,qtdeclarative)
+       ("qtgraphicaleffects" ,qtgraphicaleffects)
+       ("qtmultimedia" ,qtmultimedia)
+       ("qtquickcontrols" ,qtquickcontrols)
+       ("qtquickcontrols2" ,qtquickcontrols2)
+       ("qtsvg" ,qtsvg)
+       ("qtwebkit" ,qtwebkit)
+       ("qtwebsockets" ,qtwebsockets)
+       ("qtx11extras" ,qtx11extras)
+       ("sdl2" ,sdl2)))
+    (home-page "https://www.shotcut.org/")
+    (synopsis "Video editor built on the MLT framework")
+    (description
+     "Shotcut is a video editor built on the MLT framework.  Features include
+a wide range of formats through @code{ffmpeg}, 4k resolution support, webcam
+and audio capture, network stream playback, and many more.")
+    (license license:gpl3+)))
+
 (define-public dav1d
   (package
     (name "dav1d")
diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm
index 238c25d486..7a37162116 100644
--- a/gnu/packages/vim.scm
+++ b/gnu/packages/vim.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2019 HiPhish <hiphish@posteo.de>
 ;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2019, 2020 Jakub Kądziołka <kuba@kadziolka.net>
-;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us>
+;;; Copyright © 2020, 2021 Jack Hill <jackhill@jackhill.us>
 ;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
 ;;; Copyright © 2021 Tissevert <tissevert+guix@marvid.fr>
 ;;;
@@ -43,6 +43,7 @@
   #:use-module (gnu packages attr)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages enlightenment)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gawk)
   #:use-module (gnu packages gettext)
@@ -746,6 +747,48 @@ refactor Vim in order to:
     ;; except for parts that were contributed under the Vim license.
     (license (list license:asl2.0 license:vim))))
 
+(define-public eovim
+  (package
+    (name "eovim")
+    (version "0.2.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/jeanguyomarch/eovim/")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "06b7crmz3wvvq15ncl0jk20s8j1pmna2jin0k5y5n5qxpafbgp3k"))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:tests? #false ;no tests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'configure 'reference-nvim
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((nvim (string-append (assoc-ref inputs "neovim")
+                                        "/bin/nvim")))
+               ;; This substitution should change one line, and replaces the default
+               ;; value in the struct of options with an absolute store reference.
+               (substitute* "../source/src/main.c"
+                 (("(^[[:blank:]]+\\.nvim = \")nvim" _ start)
+                  (string-append start nvim))))))
+         (add-before 'build 'set-home
+           (lambda _ (setenv "HOME" "/tmp"))))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("efl" ,efl)
+       ("msgpack" ,msgpack)
+       ("neovim" ,neovim)))
+    (home-page "https://github.com/jeanguyomarch/eovim/")
+    (synopsis "EFL GUI for Neovim")
+    (description "Graphical Neovim interface based on the @acronym{EFL, Enlightenment
+Foundation Libraries} toolkit.  Its features include customizable appearance
+and support for fonts with ligatures.")
+    (license license:expat)))
+
 (define-public vifm
   (package
     (name "vifm")
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 9bd8ebbe18..a969f1e769 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -1026,10 +1026,10 @@ manage system or application containers.")
     (inputs
      `(("fuse" ,fuse)))
     (build-system gnu-build-system)
-    (synopsis "FUSE based filesystem for LXC")
-    (description "LXCFS is a small FUSE filesystem written with the intention
+    (synopsis "FUSE-based file system for LXC")
+    (description "LXCFS is a small FUSE file system written with the intention
 of making Linux containers feel more like a virtual machine.
-It started as a side-project of LXC but is useable by any runtime.")
+It started as a side project of LXC but can be used by any run-time.")
     (license license:lgpl2.1+)))
 
 (define-public libvirt
diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm
index 6267ca92da..ddde10977c 100644
--- a/gnu/packages/vpn.scm
+++ b/gnu/packages/vpn.scm
@@ -516,7 +516,7 @@ this process.  It is compatible with Fortinet VPNs.")
 (define-public openvpn
   (package
     (name "openvpn")
-    (version "2.5.2")
+    (version "2.5.3")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -524,7 +524,7 @@ this process.  It is compatible with Fortinet VPNs.")
                     version ".tar.xz"))
               (sha256
                (base32
-                "1j0xkiya20hhvalfjg5l3v1226vyjs9j9aw2mzpnbwq1d61l69xi"))))
+                "0zlski66mw10klmwvg445z051mld7xjng4iyl4f9b883qr1rjspv"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--enable-iproute2=yes")))
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index f70af1af50..97da3d74e3 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -604,7 +604,7 @@ driven and does not detract you from your daily work.")
 (define-public nyxt
   (package
     (name "nyxt")
-    (version "2.0.0")
+    (version "2.1.0")
     (source
      (origin
        (method git-fetch)
@@ -615,7 +615,7 @@ driven and does not detract you from your daily work.")
              (commit version)))
        (sha256
         (base32
-         "0y91hnanf1bj378zsxhjh33qnhj09f6ixpdqmkl69k0075zls93r"))
+         "0f2c029213apppj6ziky3wsrpsi2gpx9s55wnfriy6hp33j241gd"))
        (file-name (git-file-name "nyxt" version))))
     (build-system gnu-build-system)
     (arguments
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 0ecc12e361..47f2063a98 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -15,7 +15,7 @@
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
-;;; Copyright © 2016, 2017, 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2016, 2017, 2018, 2019, 2021 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2016–2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016 Bake Timmons <b3timmons@speedymail.org>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
@@ -1597,7 +1597,7 @@ used to validate and fix HTML data.")
 (define-public esbuild
   (package
     (name "esbuild")
-    (version "0.11.14")
+    (version "0.12.9")
     (source
      (origin
        (method git-fetch)
@@ -1606,7 +1606,7 @@ used to validate and fix HTML data.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0qxylzc7lzpsp5hm3dl5jvy9aca8azn8dmbjz9z5n5rkdmm8vd9p"))
+        (base32 "10bz1xq2frdja7mbx04m009svg8b5rj7vfq3sc2gc88n31v21b1j"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -6577,41 +6577,36 @@ Instagram and YouTube.")
 (define-public linkchecker
   (package
     (name "linkchecker")
-    (version "9.4.0")
+    (version "10.0.1")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/linkchecker/linkchecker")
              (commit (string-append "v" version))))
-       (patches
-        (search-patches "linkchecker-tests-require-network.patch"))
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "03ihjmc4bqxxqv71bb43r2f23sx0xnbq1k2fsg9fw05qa5s9x187"))))
+         "1j97dc9a4yhpscwadhv5dxp7036pnrxiaky18l8ddr3pvxdjvkxs"))))
     (build-system python-build-system)
     (inputs
-     `(("python2-dnspython" ,python2-dnspython-1.16)
-       ("python2-pyxdg" ,python2-pyxdg)
-       ("python2-requests" ,python2-requests)))
+     `(("python-beautifulsoup4" ,python-beautifulsoup4)
+       ("python-dnspython" ,python-dnspython)
+       ("python-pyxdg" ,python-pyxdg)
+       ("python-requests" ,python-requests)))
     (native-inputs
      `(("gettext" ,gettext-minimal)
-       ("python2-pytest" ,python2-pytest)
-       ("python2-miniboa" ,python2-miniboa)
-       ("python2-parameterized" ,python2-parameterized)))
+       ("python-pytest" ,python-pytest)
+       ("python-miniboa" ,python-miniboa)
+       ("python-parameterized" ,python-parameterized)))
     (arguments
-     `(#:python ,python-2
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
          (replace 'check
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               ;; Remove this directory to avoid it being used when running
-               ;; the tests
-               (delete-file-recursively "linkcheck")
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
                (invoke "py.test" "tests")))))))
-    (home-page "https://linkcheck.github.io/linkchecker")
+    (home-page "https://linkchecker.github.io/linkchecker/")
     (synopsis "Check websites for broken links")
     (description "LinkChecker is a website validator.  It checks for broken
 links in websites.  It is recursive and multithreaded providing output in