summary refs log tree commit diff
path: root/gnu/packages
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/admin.scm29
-rw-r--r--gnu/packages/algebra.scm6
-rw-r--r--gnu/packages/animation.scm25
-rw-r--r--gnu/packages/antivirus.scm4
-rw-r--r--gnu/packages/assembly.scm4
-rw-r--r--gnu/packages/audio.scm4
-rw-r--r--gnu/packages/backup.scm9
-rw-r--r--gnu/packages/bioinformatics.scm193
-rw-r--r--gnu/packages/calendar.scm6
-rw-r--r--gnu/packages/cdrom.scm105
-rw-r--r--gnu/packages/conky.scm8
-rw-r--r--gnu/packages/connman.scm11
-rw-r--r--gnu/packages/cran.scm74
-rw-r--r--gnu/packages/databases.scm110
-rw-r--r--gnu/packages/dc.scm6
-rw-r--r--gnu/packages/debug.scm20
-rw-r--r--gnu/packages/dlang.scm174
-rw-r--r--gnu/packages/dns.scm32
-rw-r--r--gnu/packages/docker.scm6
-rw-r--r--gnu/packages/emacs-xyz.scm3350
-rw-r--r--gnu/packages/emacs.scm6
-rw-r--r--gnu/packages/embedded.scm2
-rw-r--r--gnu/packages/emulators.scm162
-rw-r--r--gnu/packages/engineering.scm56
-rw-r--r--gnu/packages/file-systems.scm2
-rw-r--r--gnu/packages/finance.scm16
-rw-r--r--gnu/packages/firmware.scm23
-rw-r--r--gnu/packages/flashing-tools.scm9
-rw-r--r--gnu/packages/freedesktop.scm40
-rw-r--r--gnu/packages/game-development.scm32
-rw-r--r--gnu/packages/games.scm206
-rw-r--r--gnu/packages/geo.scm62
-rw-r--r--gnu/packages/gimp.scm6
-rw-r--r--gnu/packages/gnome.scm14
-rw-r--r--gnu/packages/graphics.scm28
-rw-r--r--gnu/packages/guile-xyz.scm51
-rw-r--r--gnu/packages/haskell.scm24
-rw-r--r--gnu/packages/idris.scm36
-rw-r--r--gnu/packages/java.scm22
-rw-r--r--gnu/packages/kodi.scm3
-rw-r--r--gnu/packages/linux.scm79
-rw-r--r--gnu/packages/lisp.scm166
-rw-r--r--gnu/packages/llvm.scm39
-rw-r--r--gnu/packages/machine-learning.scm491
-rw-r--r--gnu/packages/mail.scm102
-rw-r--r--gnu/packages/mate.scm42
-rw-r--r--gnu/packages/maths.scm110
-rw-r--r--gnu/packages/messaging.scm30
-rw-r--r--gnu/packages/monitoring.scm6
-rw-r--r--gnu/packages/mp3.scm18
-rw-r--r--gnu/packages/mpd.scm6
-rw-r--r--gnu/packages/mpi.scm5
-rw-r--r--gnu/packages/music.scm4
-rw-r--r--gnu/packages/musl.scm4
-rw-r--r--gnu/packages/networking.scm37
-rw-r--r--gnu/packages/ocaml.scm663
-rw-r--r--gnu/packages/parallel.scm2
-rw-r--r--gnu/packages/patches/docker-use-fewer-modprobes.patch30
-rw-r--r--gnu/packages/patches/idris-test-no-node.patch61
-rw-r--r--gnu/packages/patches/knot-include-system-lmdb-header.patch34
-rw-r--r--gnu/packages/patches/kodi-set-libcurl-ssl-parameters.patch16
-rw-r--r--gnu/packages/patches/ocaml-dose3-Add-unix-as-dependency-to-dose3.common-in-META.in.patch25
-rw-r--r--gnu/packages/patches/ocaml-dose3-Fix-for-ocaml-4.06.patch52
-rw-r--r--gnu/packages/patches/ocaml-dose3-Install-mli-cmx-etc.patch133
-rw-r--r--gnu/packages/patches/ocaml-dose3-dont-make-printconf.patch9
-rw-r--r--gnu/packages/patches/quilt-getopt-nondigit-param.patch45
-rw-r--r--gnu/packages/patches/quilt-getopt-second-separator.patch58
-rw-r--r--gnu/packages/patches/quilt-test-fix-regex.patch41
-rw-r--r--gnu/packages/patches/synfigstudio-fix-ui-with-gtk3.patch55
-rw-r--r--gnu/packages/patches/webkitgtk-sse2.patch202
-rw-r--r--gnu/packages/patchutils.scm23
-rw-r--r--gnu/packages/perl-check.scm126
-rw-r--r--gnu/packages/perl-web.scm57
-rw-r--r--gnu/packages/perl.scm250
-rw-r--r--gnu/packages/photo.scm4
-rw-r--r--gnu/packages/plotutils.scm13
-rw-r--r--gnu/packages/poedit.scm80
-rw-r--r--gnu/packages/pretty-print.scm6
-rw-r--r--gnu/packages/python-xyz.scm123
-rw-r--r--gnu/packages/rdf.scm34
-rw-r--r--gnu/packages/ruby.scm28
-rw-r--r--gnu/packages/rust.scm53
-rw-r--r--gnu/packages/samba.scm15
-rw-r--r--gnu/packages/search.scm28
-rw-r--r--gnu/packages/security-token.scm4
-rw-r--r--gnu/packages/spice.scm23
-rw-r--r--gnu/packages/statistics.scm44
-rw-r--r--gnu/packages/suckless.scm7
-rw-r--r--gnu/packages/terminals.scm17
-rw-r--r--gnu/packages/tex.scm2
-rw-r--r--gnu/packages/tls.scm6
-rw-r--r--gnu/packages/upnp.scm4
-rw-r--r--gnu/packages/version-control.scm135
-rw-r--r--gnu/packages/video.scm4
-rw-r--r--gnu/packages/vim.scm10
-rw-r--r--gnu/packages/web-browsers.scm6
-rw-r--r--gnu/packages/web.scm145
-rw-r--r--gnu/packages/webkit.scm5
-rw-r--r--gnu/packages/wine.scm6
-rw-r--r--gnu/packages/wm.scm8
-rw-r--r--gnu/packages/xdisorg.scm4
-rw-r--r--gnu/packages/xorg.scm11
102 files changed, 6351 insertions, 2471 deletions
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index d901110e53..3a250eeaa8 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -1287,7 +1287,7 @@ module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
 (define-public acpica
   (package
     (name "acpica")
-    (version "20190215")
+    (version "20190405")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1295,7 +1295,7 @@ module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
                     version ".tar.gz"))
               (sha256
                (base32
-                "1iy2zwi8aicq0b5a0phfacvk1f9z1d89cx43adcf0qh82gb9m4wg"))))
+                "0hv6r65l8vk3f6i3by7i47vc1917qm47838bpq80lfn22784y53y"))))
     (build-system gnu-build-system)
     (native-inputs `(("flex" ,flex)
                      ("bison" ,bison)))
@@ -1599,13 +1599,13 @@ of supported upstream metrics systems simultaneously.")
 (define-public ansible
   (package
     (name "ansible")
-    (version "2.7.9")
+    (version "2.7.10")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "ansible" version))
        (sha256
-        (base32 "19vyf60zfmnv7frwm96bzqzvia69dysy9apk8bl84vr03ib9vrbf"))))
+        (base32 "15721d0bxymghxnlnknq43lszlxg3ybbcp2p5v424hhw6wg2v944"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-bcrypt" ,python-bcrypt)
@@ -1736,18 +1736,18 @@ limits.")
 (define-public autojump
   (package
     (name "autojump")
-    (version "22.5.1")
+    (version "22.5.3")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/wting/autojump/archive/"
-                           "release-v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/wting/autojump.git")
+             (commit (string-append "release-v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "17z9j9936x0nizwrzf664bngh60x5qbvrrf1s5qdzd0f2gdanpvn"))))
+        (base32 "1rgpsh70manr2dydna9da4x7p8ahii7dgdgwir5fka340n1wrcws"))))
     (build-system gnu-build-system)
-    (native-inputs                      ;for tests
+    (native-inputs                      ; for tests
      `(("python-mock" ,python-mock)
        ("python-pytest" ,python-pytest)))
     (inputs
@@ -1755,6 +1755,11 @@ limits.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'make-git-checkout-writable
+           ;; ‘install.py’ modifies files before installing them.
+           (lambda _
+             (for-each make-file-writable (find-files "."))
+             #t))
          (delete 'configure)
          (delete 'build)
          (replace 'check
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index 9b4c7b8e27..ba1c12daed 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2014, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017, 2019 Eric Bavier <bavier@member.fsf.org>
 ;;;
@@ -499,7 +499,7 @@ matrices, and polynomials over the integers and over finite fields.")
 (define-public singular
   (package
    (name "singular")
-   (version "4.1.1p3")
+   (version "4.1.2p1")
    (source
     (origin
       (method url-fetch)
@@ -513,7 +513,7 @@ matrices, and polynomials over the integers and over finite fields.")
                         #\.) "-")
                       "/singular-" version ".tar.gz"))
              (sha256 (base32
-                      "1qqj9bm9pkzm0iyycpvm8x6s79wws3nq60lz25h8x1q61h3426sm"))))
+                      "0kvd55353fiqyq1msmi0kka66n5h0aqs7m3km60r01b1w2f8085m"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("doxygen" ,doxygen)
diff --git a/gnu/packages/animation.scm b/gnu/packages/animation.scm
index 74a80ab046..b46382c035 100644
--- a/gnu/packages/animation.scm
+++ b/gnu/packages/animation.scm
@@ -41,18 +41,20 @@
   #:use-module (gnu packages qt)
   #:use-module (gnu packages video))
 
+;; ETL, synfig, and Synfig Studio are updated in tandem.
+(define synfig-version "1.2.2")
+
 (define-public etl
   (package
     (name "etl")
-    (version "0.04.22")
+    (version synfig-version)
     (source (origin
               (method url-fetch)
-              ;; Keep this synchronized with the synfig release version.
               (uri (string-append "mirror://sourceforge/synfig/releases/"
-                                  "1.2.0/source/ETL-" version ".tar.gz"))
+                                  version "/source/ETL-" version ".tar.gz"))
               (sha256
                (base32
-                "0ii73nsd3xzkhz6w1rnxwphl637j9w82xiy6apa9vin2isdynnmc"))))
+                "12sd8pz8l5xcxcmapkvih3brihdhdb6xmxisr9a415lydid9rh8d"))))
     (build-system gnu-build-system)
     (home-page "https://www.synfig.org")
     (synopsis "Extended C++ template library")
@@ -65,7 +67,7 @@ C++ @dfn{Standard Template Library} (STL).")
 (define-public synfig
   (package
     (name "synfig")
-    (version "1.2.0")
+    (version synfig-version)
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/synfig/releases/"
@@ -73,7 +75,7 @@ C++ @dfn{Standard Template Library} (STL).")
                                   ".tar.gz"))
               (sha256
                (base32
-                "1gqx4gn4c73rqwhsgzx0a460gr9hadmi28csp75rx30qavqsj7k1"))))
+                "1vy27kl68sbg41sfasa58k3p2nc1xfalvzk3k9gich9h90rpnpsz"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -131,7 +133,8 @@ C++ @dfn{Standard Template Library} (STL).")
        ("openexr" ,openexr)
        ("pango" ,pango)))
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     `(("intltool" ,intltool)
+       ("pkg-config" ,pkg-config)))
     (home-page "https://www.synfig.org")
     (synopsis "Vector-based 2D animation renderer")
     (description
@@ -143,7 +146,7 @@ for tweening, preventing the need to hand-draw each frame.")
 (define-public synfigstudio
   (package
     (name "synfigstudio")
-    (version "1.2.0")
+    (version synfig-version)
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/synfig/releases/"
@@ -151,16 +154,14 @@ for tweening, preventing the need to hand-draw each frame.")
                                   ".tar.gz"))
               (sha256
                (base32
-                "0fbckfbw8dzf0m2wv7vlmw492k1dqa3zf510z019d0as3zpnp6qm"))
+                "1ql92kh9z8w2j9yi3pr7hn7wh2r2j35xynwv9xlwyd7niackgykn"))
               (modules '((guix build utils)))
               (snippet
                '(begin
                   (substitute* "src/synfigapp/pluginmanager.cpp"
                     (("xmlpp::Node\\* n =")    "const xmlpp::Node* n =")
                     (("xmlpp::Node::NodeList") "xmlpp::Node::const_NodeList"))
-                  #t))
-              (patches
-               (search-patches "synfigstudio-fix-ui-with-gtk3.patch"))))
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/antivirus.scm b/gnu/packages/antivirus.scm
index 840b5410a6..5127ba1741 100644
--- a/gnu/packages/antivirus.scm
+++ b/gnu/packages/antivirus.scm
@@ -44,14 +44,14 @@
 (define-public clamav
   (package
     (name "clamav")
-    (version "0.101.1")
+    (version "0.101.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.clamav.net/downloads/production/"
                                   "clamav-" version ".tar.gz"))
               (sha256
                (base32
-                "01mq3z04fjbq5iq8wfwfim72iv3dn04d3ishc5lkhxpmnalqydps"))
+                "0d3n4y8i5q594h4cjglmvpk4jd73r9ajpp1bvq5lr9zpdzgyn4ha"))
               (modules '((guix build utils)))
               (snippet
                '(begin
diff --git a/gnu/packages/assembly.scm b/gnu/packages/assembly.scm
index 00ed00e1c1..c53eee2ac9 100644
--- a/gnu/packages/assembly.scm
+++ b/gnu/packages/assembly.scm
@@ -129,14 +129,14 @@ to the clients.")
 (define-public fasm
   (package
     (name "fasm")
-    (version "1.73.09")
+    (version "1.73.10")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://flatassembler.net/fasm-"
                            version ".tgz"))
        (sha256
-        (base32 "197bcj9aa5wpkvrlaafc1smxjss0fwdspq5fwhwgyy9cc7z5g0ym"))))
+        (base32 "1lk8vlr0vg7h8lhiav99paa5a1mi0r2m8agxjmczhhavqhx44c32"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no tests exist
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 4d2e260e7c..8160ba5487 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -1307,7 +1307,7 @@ patches that can be used with softsynths such as Timidity and WildMidi.")
 (define-public guitarix
   (package
     (name "guitarix")
-    (version "0.38.0")
+    (version "0.38.1")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -1315,7 +1315,7 @@ patches that can be used with softsynths such as Timidity and WildMidi.")
                    version ".tar.xz"))
              (sha256
               (base32
-               "0nv5vm2q86lzsz42kl78jxm6w20al8r7qcnr5f057ria7f8fq2f7"))))
+               "0bw7xnrx062nwb1bfj9x660h7069ncmz77szcs8icpqxrvhs7z80"))))
     (build-system waf-build-system)
     (arguments
      `(#:tests? #f ; no "check" target
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 682cfe57bc..9b26ead91e 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -73,7 +73,7 @@
 (define-public duplicity
   (package
     (name "duplicity")
-    (version "0.7.18.1")
+    (version "0.7.18.2")
     (source
      (origin
       (method url-fetch)
@@ -82,8 +82,7 @@
                           "-series/" version "/+download/duplicity-"
                           version ".tar.gz"))
       (sha256
-       (base32
-        "17c0203y5qz9w8iyhs26l44qf6a1vp26b5ykz1ypdr2kv6g02df9"))))
+       (base32 "0j37dgyji36hvb5dbzlmh5rj83jwhni02yq16g6rd3hj8f7qhdn2"))))
     (build-system python-build-system)
     (native-inputs
      `(("util-linux" ,util-linux)       ; setsid command, for the tests
@@ -996,14 +995,14 @@ precious backup space.
 (define-public burp
   (package
     (name "burp")
-    (version "2.3.2")
+    (version "2.3.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/burp/burp-" version
                                   "/burp-" version ".tar.bz2"))
               (sha256
                (base32
-                "1nkkn0nfydn39cl5rxd1wbmzizird6z05j9h2xr7xczdlhhjnaai"))))
+                "0r82mmfjm57yr4f34za3x3rkgc5z2c7nwbnsjjki16qfc9kjyai3"))))
     (build-system gnu-build-system)
     (inputs
      `(("librsync" ,librsync)
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 4cd032abd4..dc5d84653c 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -7916,13 +7916,13 @@ as well as query and modify the browser state, such as the current viewport.")
 (define-public r-genomicfeatures
   (package
     (name "r-genomicfeatures")
-    (version "1.34.7")
+    (version "1.34.8")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "GenomicFeatures" version))
               (sha256
                (base32
-                "100y8cx9xfglbn36k25y09y0qfwm0qpb4b01qhk367832rqz5dhz"))))
+                "1sxp86hdsg32l2c85jgic65gy92d8kxsm01264hrx6yikdhicjax"))))
     (properties
      `((upstream-name . "GenomicFeatures")))
     (build-system r-build-system)
@@ -14555,3 +14555,192 @@ overlapping paired-ended reads into (longer) consensus sequences.
 Additionally, the AdapterRemoval may be used to recover a consensus adapter
 sequence for paired-ended data, for which this information is not available.")
     (license license:gpl3+)))
+
+(define-public pplacer
+  (let ((commit "807f6f3"))
+    (package
+      (name "pplacer")
+      ;; The commit should be updated with each version change.
+      (version "1.1.alpha19")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/matsen/pplacer.git")
+               (commit (string-append "v" version))))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "11ppbbbx20p2g9wj3ff64dhnarb12q79v7qh4rk0gj6lkbz4n7cn"))))
+      (build-system ocaml-build-system)
+      (arguments
+       `(#:modules ((guix build ocaml-build-system)
+                    (guix build utils)
+                    (ice-9 ftw))
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (add-after 'unpack 'fix-build-with-latest-ocaml
+             (lambda _
+               (substitute* "myocamlbuild.ml"
+                 (("dep \\[\"c_pam\"\\]" m)
+                  (string-append "flag [\"ocaml\"; \"compile\"] (A \"-unsafe-string\");\n"
+                                 m))
+                 (("let run_and_read" m)
+                  (string-append "
+let split s ch =
+  let x = ref [] in
+  let rec go s =
+    let pos = String.index s ch in
+    x := (String.before s pos)::!x;
+    go (String.after s (pos + 1))
+  in
+  try go s
+  with Not_found -> !x
+let split_nl s = split s '\\n'
+let before_space s =
+  try String.before s (String.index s ' ')
+  with Not_found -> s
+
+" m))
+                 (("run_and_read \"ocamlfind list \\| cut -d' ' -f1\"" m)
+                  (string-append "List.map before_space (split_nl & " m ")"))
+                 (("    blank_sep_strings &") "")
+                 (("      Lexing.from_string &") ""))
+               #t))
+           (add-after 'unpack 'replace-bundled-cddlib
+             (lambda* (#:key inputs #:allow-other-keys)
+               (let* ((cddlib-src (assoc-ref inputs "cddlib-src"))
+                      (local-dir "cddlib_guix"))
+                 (mkdir local-dir)
+                 (with-directory-excursion local-dir
+                   (invoke "tar" "xvf" cddlib-src))
+                 (let ((cddlib-src-folder
+                        (string-append local-dir "/"
+                                       (list-ref (scandir local-dir) 2)
+                                       "/lib-src")))
+                   (for-each make-file-writable (find-files "cdd_src" ".*"))
+                   (for-each
+                    (lambda (file)
+                      (copy-file file
+                                 (string-append "cdd_src/" (basename file))))
+                    (find-files cddlib-src-folder ".*[ch]$")))
+                 #t)))
+           (add-after 'unpack 'fix-makefile
+             (lambda _
+               ;; Remove system calls to 'git'.
+               (substitute* "Makefile"
+                 (("^DESCRIPT:=pplacer-.*")
+                  (string-append
+                   "DESCRIPT:=pplacer-$(shell uname)-v" ,version "\n")))
+               (substitute* "myocamlbuild.ml"
+                 (("git describe --tags --long .*\\\" with")
+                  (string-append
+                   "echo -n v" ,version "-" ,commit "\" with")))
+               #t))
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (bin (string-append out "/bin")))
+                 (copy-recursively "bin" bin))
+               #t)))))
+      (inputs
+       `(("zlib" ,zlib "static")
+         ("gsl" ,gsl)
+         ("ocaml-ounit" ,ocaml-ounit)
+         ("ocaml-batteries" ,ocaml-batteries)
+         ("ocaml-camlzip" ,camlzip)
+         ("ocaml-csv" ,ocaml-csv)
+         ("ocaml-sqlite3" ,ocaml-sqlite3)
+         ("ocaml-xmlm" ,ocaml-xmlm)
+         ("ocaml-mcl" ,ocaml-mcl)
+         ("ocaml-gsl" ,ocaml-gsl-1)))
+      (native-inputs
+       `(("cddlib-src" ,(package-source cddlib))
+         ("ocamlbuild" ,ocamlbuild)
+         ("pkg-config" ,pkg-config)))
+      (propagated-inputs
+       `(("pplacer-scripts" ,pplacer-scripts)))
+      (synopsis "Phylogenetic placement of biological sequences")
+      (description
+       "Pplacer places query sequences on a fixed reference phylogenetic tree
+to maximize phylogenetic likelihood or posterior probability according to a
+reference alignment.  Pplacer is designed to be fast, to give useful
+information about uncertainty, and to offer advanced visualization and
+downstream analysis.")
+      (home-page "http://matsen.fhcrc.org/pplacer")
+      (license license:gpl3))))
+
+;; This package is installed alongside 'pplacer'.  It is a separate package so
+;; that it can use the python-build-system for the scripts that are
+;; distributed alongside the main OCaml binaries.
+(define pplacer-scripts
+  (package
+    (inherit pplacer)
+    (name "pplacer-scripts")
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'enter-scripts-dir
+           (lambda _ (chdir "scripts") #t))
+         (replace 'check
+           (lambda _ (invoke "python" "-m" "unittest" "discover" "-v") #t))
+         (add-after 'install 'wrap-executables
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin")))
+               (let ((path (string-append
+                            (assoc-ref inputs "hmmer") "/bin:"
+                            (assoc-ref inputs "infernal") "/bin")))
+                 (display path)
+                 (wrap-program (string-append bin "/refpkg_align.py")
+                   `("PATH" ":" prefix (,path))))
+               (let ((path (string-append
+                            (assoc-ref inputs "hmmer") "/bin")))
+                 (wrap-program (string-append bin "/hrefpkg_query.py")
+                   `("PATH" ":" prefix (,path)))))
+             #t)))))
+    (inputs
+     `(("infernal" ,infernal)
+       ("hmmer" ,hmmer)))
+    (propagated-inputs
+     `(("python-biopython" ,python2-biopython)
+       ("taxtastic" ,taxtastic)))
+    (synopsis "Pplacer Python scripts")))
+
+(define-public python2-checkm-genome
+  (package
+    (name "python2-checkm-genome")
+    (version "1.0.13")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "checkm-genome" version))
+       (sha256
+        (base32
+         "0bm8gpxjmzxsxxl8lzwqhgx8g1dlnmp6znz7wv3hgb0gdjbf9dzz"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2
+       #:tests? #f)) ; some tests are interactive
+    (propagated-inputs
+     `(("python-dendropy" ,python2-dendropy)
+       ("python-matplotlib" ,python2-matplotlib)
+       ("python-numpy" ,python2-numpy)
+       ("python-pysam" ,python2-pysam)
+       ("python-scipy" ,python2-scipy)))
+    (home-page "http://pypi.python.org/pypi/checkm/")
+    (synopsis "Assess the quality of putative genome bins")
+    (description
+     "CheckM provides a set of tools for assessing the quality of genomes
+recovered from isolates, single cells, or metagenomes.  It provides robust
+estimates of genome completeness and contamination by using collocated sets of
+genes that are ubiquitous and single-copy within a phylogenetic lineage.
+Assessment of genome quality can also be examined using plots depicting key
+genomic characteristics (e.g., GC, coding density) which highlight sequences
+outside the expected distributions of a typical genome.  CheckM also provides
+tools for identifying genome bins that are likely candidates for merging based
+on marker set compatibility, similarity in genomic characteristics, and
+proximity within a reference genome.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/calendar.scm b/gnu/packages/calendar.scm
index 90f23452f7..2969228ee9 100644
--- a/gnu/packages/calendar.scm
+++ b/gnu/packages/calendar.scm
@@ -96,13 +96,13 @@ data units.")
 (define-public khal
   (package
     (name "khal")
-    (version "0.10.0")
+    (version "0.10.1")
     (source (origin
              (method url-fetch)
              (uri (pypi-uri "khal" version))
              (sha256
               (base32
-               "1p49f3g25x900vk32spjbr2aipj12kcbhayny2vwhdpkjlv6k396"))))
+               "1r8bkgjwkh7i8ygvsv51h1cnax50sb183vafg66x5snxf3dgjl6l"))))
     (build-system python-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
@@ -146,7 +146,7 @@ data units.")
     (synopsis "Console calendar program")
     (description "Khal is a standards based console calendar program,
 able to synchronize with CalDAV servers through vdirsyncer.")
-    (home-page "http://lostpackets.de/khal/")
+    (home-page "https://lostpackets.de/khal/")
     (license license:expat)))
 
 (define-public remind
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index f16f4ca4f8..2193a94f86 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -863,3 +863,108 @@ Supported extensions to ISO 9660 are Rock Ridge, Joliet, AAIP, zisofs.")
 blanking CD-RW media, creating ISO-9660 file system images, extracting audio
 CD data, and more.  It's mostly compatible with @code{cdrtools}.")
     (license gpl2+)))
+
+(define-public libmirage
+  (package
+    (name "libmirage")
+    (version "3.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://downloads.sourceforge.net/cdemu/libmirage-"
+                    version ".tar.bz2"))
+              (sha256
+               (base32
+                "1ydph33sfxplp4872dp8ghp574jk5d4qr8hqz61qnznq1b11cnbr"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("intltool" ,intltool)))
+    (inputs
+     `(("glib" ,glib)))
+    (arguments
+     ;; No tests.
+     '(#:tests? #f))
+    (home-page "https://cdemu.sourceforge.io/")
+    (synopsis "CD-ROM image access library")
+    (description "libMirage is a CD-ROM image access library.  It supports the
+following formats: B6T, C2D, CCD, CDI, CIF, CUE, ISO, MDS, MDX, NRG, TOC.  It
+is written in C and based on GLib.  Its aim is to provide uniform access to
+the data stored in various image formats.")
+    (license gpl2+)))
+
+(define-public cdemu-daemon
+  (package
+    (name "cdemu-daemon")
+    (version "3.2.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://downloads.sourceforge.net/cdemu/cdemu-daemon/cdemu-daemon-"
+                    version ".tar.bz2"))
+              (sha256
+               (base32
+                "171qqcziqgf6dd9n8xs9hc71krhjiyx9qr767s8znidyjj88hbc4"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("intltool" ,intltool)))
+    (inputs
+     `(("libmirage" ,libmirage)
+       ("glib" ,glib)
+       ("ao" ,ao)))
+    (arguments
+     ;; No tests.
+     '(#:tests? #f))
+    (home-page "https://cdemu.sourceforge.io/")
+    (synopsis "CD/DVD-ROM device emulator")
+    (description "CDemu is a software suite designed to emulate an optical
+drive and disc (including CD-ROMs and DVD-ROMs).")
+    (license gpl2+)))
+
+(define-public cdemu-client
+  (package
+    (name "cdemu-client")
+    (version "3.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://downloads.sourceforge.net/cdemu/cdemu-client-"
+                    version ".tar.bz2"))
+              (sha256
+               (base32
+                "1zwz987pb2pakfk9kz8a6xa9hq1ip48cn4ryl9z85dik8k2sizm9"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("intltool" ,intltool)))
+    (inputs
+     `(("python" ,python)
+       ("python-pygobject" ,python-pygobject)
+       ("cdemu-daemon" ,cdemu-daemon)))
+    (arguments
+     ;; No tests.
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'patch-shebang
+           (lambda* (#:key outputs #:allow-other-keys)
+             (patch-shebang (string-append (assoc-ref outputs "out")
+                                           "/bin/cdemu"))
+             #t))
+         (add-after 'patch-shebang 'wrap-program
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((prog (string-append (assoc-ref outputs "out")
+                                        "/bin/cdemu")))
+               (wrap-program prog
+                 `("PYTHONPATH" = (,(getenv "PYTHONPATH"))))
+               #t))))))
+    (home-page "https://cdemu.sourceforge.io/")
+    (synopsis "Command-line client for controlling cdemu-daemon")
+    (description "CDEmu client is a simple command-line client for controlling
+CDEmu daemon.
+
+It provides a way to perform the key tasks related to controlling the CDEmu
+daemon, such as loading and unloading devices, displaying devices' status and
+retrieving/setting devices' debug masks.")
+    (license gpl2+)))
diff --git a/gnu/packages/conky.scm b/gnu/packages/conky.scm
index c3b72ea063..2b32bf8791 100644
--- a/gnu/packages/conky.scm
+++ b/gnu/packages/conky.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Siniša Biđin <sinisa@bidin.eu>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -37,16 +37,16 @@
   (package
     (name "conky")
     (home-page "https://github.com/brndnmtthws/conky")
-    (version "1.11.2")
+    (version "1.11.3")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url home-page)
              (commit (string-append "v" version))))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "0yalcpwx85smh6nnvxxsgqi344nk7jzlkkam7yjghm87df4v7xmx"))))
+        (base32 "0pdl31xvmy8niagzqx9sd2b6hc6lzwfiaz66m4djf1gz9bksc8qv"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f ; there are no tests
diff --git a/gnu/packages/connman.scm b/gnu/packages/connman.scm
index 1290dd010d..39262b87da 100644
--- a/gnu/packages/connman.scm
+++ b/gnu/packages/connman.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -44,15 +44,14 @@
 (define-public connman
   (package
     (name "connman")
-    (version "1.36")
+    (version "1.37")
     (source
       (origin
         (method url-fetch)
         (uri (string-append "mirror://kernel.org/linux/network/connman/"
-                            name "-" version ".tar.xz"))
+                            "connman-" version ".tar.xz"))
     (sha256
-     (base32
-      "0x00dq5c2frz06md3g5y0jh5kbcj2hrfl5qjcqga8gs4ri0xp2f7"))))
+     (base32 "05kfjiqhqfmbbwc4snnyvi5hc4zxanac62f6gcwaf5mvn0z9pqkc"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -63,8 +62,6 @@
              "--enable-vpnc"
              "--enable-pptp"
              "--enable-l2tp"
-             ;; location for daemon state files and internal configuration
-             ;; needs to be writeable
              "--localstatedir=/var"
              (string-append
               "--with-dbusconfdir=" (assoc-ref %outputs "out") "/etc")
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 94d2c1aca0..47cd1d7217 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -242,14 +242,14 @@ single step.")
 (define-public r-rvest
   (package
     (name "r-rvest")
-    (version "0.3.2")
+    (version "0.3.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "rvest" version))
        (sha256
         (base32
-         "04mv99z8dixywx96kfy4215g6ib23s7qvd77hcf9pxqxzcvqhvhd"))))
+         "0vsm38w83zf0djcrc5ymb1ysg88hmgq2w937ql7pqgvk5px8f2mi"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-httr" ,r-httr)
@@ -2515,14 +2515,14 @@ Delaunay triangulation and convex hull computation.")
 (define-public r-ddalpha
   (package
     (name "r-ddalpha")
-    (version "1.3.8")
+    (version "1.3.9")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ddalpha" version))
        (sha256
         (base32
-         "0gi0hl14ghgf65zxsvgzh9z6xx1nyi49cpx192lmwrwqn3dy7ba0"))))
+         "1vzs0cvl6xw3h9i00rg3hs02xwgxcnh8326y10kxmhs3qq4m7nb2"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-bh" ,r-bh)
@@ -2674,14 +2674,14 @@ by base R methods related to model fitting.")
 (define-public r-broom
   (package
     (name "r-broom")
-    (version "0.5.1")
+    (version "0.5.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "broom" version))
        (sha256
         (base32
-         "0bmf38yvwalqf5j5yrr48nsk5k3n75s0gwcw621hp5lgrgvnp7ns"))))
+         "0qmclih5dm5sqzy4hplcfy677kr12pm9pnpv3r319g14dd27pbqn"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-backports" ,r-backports)
@@ -3701,14 +3701,14 @@ terminals.")
 (define-public r-tinytex
   (package
     (name "r-tinytex")
-    (version "0.11")
+    (version "0.12")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "tinytex" version))
        (sha256
         (base32
-         "017g0niwmx8qafsn9b01gp60j5fgwxch0dnkmjgpxxr1k4h1r64x"))))
+         "03ggxbd4y1ipcmjw5ixa6g6wg4ydargnln7g08bdrdi96zyyq1fh"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-xfun" ,r-xfun)))
@@ -5181,14 +5181,14 @@ obtain a better initial configuration in non-metric MDS.")
 (define-public r-reticulate
   (package
     (name "r-reticulate")
-    (version "1.11.1")
+    (version "1.12")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "reticulate" version))
        (sha256
         (base32
-         "1cyb92dvv9iibsk28i0gm5hm2xqbsn0y6d67id74c8rhai9y8i9v"))))
+         "0pqr1rcs8yg9nlh729mvlws93cqhpmv49j9bcgarh7vxzkwyv0kb"))))
     (build-system r-build-system)
     (inputs `(("python" ,python)))
     (propagated-inputs
@@ -7979,14 +7979,14 @@ terminals that do not support Unicode.")
 (define-public r-usethis
   (package
     (name "r-usethis")
-    (version "1.4.0")
+    (version "1.5.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "usethis" version))
        (sha256
         (base32
-         "1gadckx3sxz9gxvpkprj9x7zcgg2nz5m4q0vi76ya9li1v03rwwn"))))
+         "0pn6ka3726psaqlx573g6nxi90apf0rn5m4k2lz1jr66xdc19sag"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-clipr" ,r-clipr)
@@ -7998,10 +7998,13 @@ terminals that do not support Unicode.")
        ("r-gh" ,r-gh)
        ("r-git2r" ,r-git2r)
        ("r-glue" ,r-glue)
+       ("r-purrr" ,r-purrr)
        ("r-rlang" ,r-rlang)
        ("r-rprojroot" ,r-rprojroot)
        ("r-rstudioapi" ,r-rstudioapi)
-       ("r-whisker" ,r-whisker)))
+       ("r-whisker" ,r-whisker)
+       ("r-withr" ,r-withr)
+       ("r-yaml" ,r-yaml)))
     (home-page "https://github.com/r-lib/usethis")
     (synopsis "Automate R package and project setup")
     (description
@@ -8037,14 +8040,14 @@ more information about packages, and where they were installed from.")
 (define-public r-remotes
   (package
     (name "r-remotes")
-    (version "2.0.2")
+    (version "2.0.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "remotes" version))
        (sha256
         (base32
-         "0rsjxmhwpr51ilsdjfqn06mj8yr2d7nckcn3arv1ljn23qfkpcxa"))))
+         "1jbn4kjimcr82zv5lnqxqa2487a96vn6jxf7wc6gnpxr6k06d61p"))))
     (build-system r-build-system)
     (home-page "https://github.com/r-lib/remotes#readme")
     (synopsis "R package installation from remote repositories")
@@ -8161,14 +8164,14 @@ ways.")
 (define-public r-summarytools
   (package
     (name "r-summarytools")
-    (version "0.9.2")
+    (version "0.9.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "summarytools" version))
        (sha256
         (base32
-         "1q83kii6prqf9z5v8cxj1q2944kx9x7dcxyqix3m883a94dmgivy"))))
+         "1wfbkgvicaic37zgpr6zcm4a58yx43p59h0sqggdj44ncqs7147f"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-checkmate" ,r-checkmate)
@@ -8181,6 +8184,7 @@ ways.")
        ("r-pryr" ,r-pryr)
        ("r-rapportools" ,r-rapportools)
        ("r-rcurl" ,r-rcurl)
+       ("r-tibble" ,r-tibble)
        ("r-tidyr" ,r-tidyr)))
     (home-page "https://github.com/dcomtois/summarytools")
     (synopsis "Tools to quickly and neatly summarize data")
@@ -10618,14 +10622,14 @@ regression coefficients can be conducted via jackknifing.")
 (define-public r-huge
   (package
     (name "r-huge")
-    (version "1.3.1")
+    (version "1.3.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "huge" version))
        (sha256
         (base32
-         "06s22i2cdn6g2r8kq5csyspinayh8dxxg9gkwcf4sa1lmrgb0bf9"))))
+         "1j93gvi1jyq3ld9jhdqhrpm2is54rk3ilmf3yw7fx6gva0y6hjqd"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-igraph" ,r-igraph)
@@ -11806,14 +11810,14 @@ al. (2010).")
 (define-public r-reinforcelearn
   (package
     (name "r-reinforcelearn")
-    (version "0.2.0")
+    (version "0.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "reinforcelearn" version))
        (sha256
         (base32
-         "0naakmyb14d2cf7cy5ir52qh3bp51gvs6hyhfi3f72yl2jfnnpzg"))))
+         "176z2q69p24i29a8sh19xxn2zl3h1z2ixdssr5i6m4yvkvdrvv3b"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-checkmate" ,r-checkmate)
@@ -12721,14 +12725,14 @@ that accept short and long options.")
 (define-public r-wgcna
   (package
     (name "r-wgcna")
-    (version "1.66")
+    (version "1.67")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "WGCNA" version))
        (sha256
         (base32
-         "0rhnyhzfn93yp24jz9v6dzrmyizwzdw070a7idm0k33w1cm8sjqv"))))
+         "09387w85lxvwr8ax2i2h602b4dgfv4wbvsl9aj1q0b1vfs4rkk69"))))
     (properties `((upstream-name . "WGCNA")))
     (build-system r-build-system)
     (propagated-inputs
@@ -13860,3 +13864,27 @@ making it possible to download files over HTTPS across platforms.  The
 @code{RCurl} package provides this functionality (and much more) but has
 external dependencies.  This package has is implemented purely in R.")
     (license license:gpl2)))
+
+(define-public r-rex
+  (package
+    (name "r-rex")
+    (version "1.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "rex" version))
+       (sha256
+        (base32
+         "0alsadgjgass3wr8y5d247j12qqzg454sc84vpskclrkmz778g5x"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-lazyeval" ,r-lazyeval)
+       ("r-magrittr" ,r-magrittr)))
+    (home-page "https://github.com/kevinushey/rex")
+    (synopsis "Friendly regular expressions")
+    (description
+     "This package provides a friendly interface for the construction of
+regular expressions.  Regular expressions are a very powerful feature, however
+they are often difficult to interpret.  Rex allows you to build complex
+regular expressions from human readable expressions")
+    (license license:expat)))
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 11ca214f7c..ed46f897b0 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -82,6 +82,7 @@
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages perl-check)
+  #:use-module (gnu packages perl-web)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages popt)
   #:use-module (gnu packages python)
@@ -984,6 +985,92 @@ for example from a shell script.")
     ;; others (like sparql-query.c) contain a GPLv2+ license header.
     (license (list license:gpl3+))))
 
+(define-public sqitch
+  (package
+    (name "sqitch")
+    (version "0.9999")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/D/DW/DWHEELER/App-Sqitch-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1cvj8grs3bzc4g7dw1zc26g4biv1frav18sq0fkvi2kk0q1aigzm"))))
+    (build-system perl-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'set-check-environment
+           (lambda _
+             (setenv "TZ" "UTC")
+             (setenv "HOME" "/tmp")
+             #t))
+         (add-after 'install 'wrap-program
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (path (getenv "PERL5LIB")))
+               (wrap-program (string-append out "/bin/sqitch")
+                 `("PERL5LIB" ":" prefix
+                   (,(string-append out "/lib/perl5/site_perl"
+                                    ":"
+                                    path)))))
+             #t)))))
+    (native-inputs
+     `(("perl-capture-tiny" ,perl-capture-tiny)
+       ("perl-io-pager" ,perl-io-pager)
+       ("perl-module-build" ,perl-module-build)
+       ("perl-module-runtime" ,perl-module-runtime)
+       ("perl-path-class" ,perl-path-class)
+       ("perl-test-deep" ,perl-test-deep)
+       ("perl-test-dir" ,perl-test-dir)
+       ("perl-test-exception" ,perl-test-exception)
+       ("perl-test-file" ,perl-test-file)
+       ("perl-test-file-contents" ,perl-test-file-contents)
+       ("perl-test-mockmodule" ,perl-test-mockmodule)
+       ("perl-test-nowarnings" ,perl-test-nowarnings)
+       ("perl-test-warn" ,perl-test-warn)))
+    (inputs
+     `(("perl-class-xsaccessor" ,perl-class-xsaccessor)
+       ("perl-clone" ,perl-clone)
+       ("perl-config-gitlike" ,perl-config-gitlike)
+       ("perl-datetime" ,perl-datetime)
+       ("perl-datetime-timezone" ,perl-datetime-timezone)
+       ("perl-dbd-pg" ,perl-dbd-pg)
+       ("perl-dbi" ,perl-dbi)
+       ("perl-devel-stacktrace" ,perl-devel-stacktrace)
+       ("perl-encode-locale" ,perl-encode-locale)
+       ("perl-file-homedir" ,perl-file-homedir)
+       ("perl-hash-merge" ,perl-hash-merge)
+       ("perl-ipc-run3" ,perl-ipc-run3)
+       ("perl-ipc-system-simple" ,perl-ipc-system-simple)
+       ("perl-libintl-perl" ,perl-libintl-perl)
+       ("perl-list-moreutils" ,perl-list-moreutils)
+       ("perl-moo" ,perl-moo)
+       ("perl-mysql-config" ,perl-mysql-config)
+       ("perl-namespace-autoclean" ,perl-namespace-autoclean)
+       ("perl-path-class" ,perl-path-class)
+       ("perl-perlio-utf8_strict" ,perl-perlio-utf8_strict)
+       ("perl-string-formatter" ,perl-string-formatter)
+       ("perl-string-shellquote" ,perl-string-shellquote)
+       ("perl-sub-exporter" ,perl-sub-exporter)
+       ("perl-template-tiny" ,perl-template-tiny)
+       ("perl-template-toolkit" ,perl-template-toolkit)
+       ("perl-throwable" ,perl-throwable)
+       ("perl-try-tiny" ,perl-try-tiny)
+       ("perl-type-tiny" ,perl-type-tiny)
+       ("perl-type-tiny-xs" ,perl-type-tiny-xs)
+       ("perl-uri" ,perl-uri)
+       ("perl-uri-db" ,perl-uri-db)))
+    (home-page "https://sqitch.org/")
+    (synopsis "Database change management tool")
+    (description
+     "Sqitch is a standalone change management system for database schemas,
+which uses SQL to describe changes.")
+    (license license:x11)))
+
 (define-public sqlcrush
   ;; Unfortunately, there is no proper upstream release and may never be.
   (let ((commit "b5f6868f189566a26eecc78d0f0659813c1aa98a")
@@ -1319,6 +1406,29 @@ module, and nothing else.")
     (license license:perl-license)
     (home-page "https://metacpan.org/release/DBD-SQLite")))
 
+(define-public perl-mysql-config
+  (package
+    (name "perl-mysql-config")
+    (version "1.04")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/D/DA/DARREN/MySQL-Config-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1svn7ccw2gc4cazvc58j84rxhnc9vs01zpird0l8460598j475qr"))))
+    (build-system perl-build-system)
+    (home-page "https://metacpan.org/release/MySQL-Config")
+    (synopsis "Parse and utilize MySQL's /etc/my.cnf and ~/.my.cnf files")
+    (description
+     "@code{MySQL::Config} emulates the @code{load_defaults} function from
+libmysqlclient.  It will fill an aray with long options, ready to be parsed by
+@code{Getopt::Long}.")
+    (license license:perl-license)))
+
 (define-public perl-sql-abstract
   (package
     (name "perl-sql-abstract")
diff --git a/gnu/packages/dc.scm b/gnu/packages/dc.scm
index 29d5e451d2..2ef118339f 100644
--- a/gnu/packages/dc.scm
+++ b/gnu/packages/dc.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -33,14 +33,14 @@
 (define-public ncdc
   (package
     (name "ncdc")
-    (version "1.20")
+    (version "1.21")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "http://dev.yorhel.nl/download/ncdc-" version
                            ".tar.gz"))
        (sha256 (base32
-                "0ccn7dqbqpqsbglqyalz32c20rjvf1pw0zr88jyvd2b2vxbqi6ca"))))
+                "10hrk7pcvfl9cj6d0kr4qf3l068ikqhccbg7lf25pr2kln9lz412"))))
     (build-system gnu-build-system)
     (inputs
      `(("bzip2" ,bzip2)
diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm
index 49e40ee9cd..b035951e26 100644
--- a/gnu/packages/debug.scm
+++ b/gnu/packages/debug.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015, 2016, 2017 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2014, 2015, 2016, 2017, 2019 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018, 2019 Rutger Helling <rhelling@mykolab.com>
@@ -92,11 +92,10 @@ program to exhibit a bug.")
     ;; home-page pointing to a bsd-2 license.
     (license bsd-3)))
 
-;; Newer versions depend on LLVM and Clang >= 4, which have yet to be packaged.
 (define-public c-reduce
   (package
     (name "c-reduce")
-    (version "2.6.0")
+    (version "2.8.0")
     (source
      (origin
       (method url-fetch)
@@ -105,12 +104,12 @@ program to exhibit a bug.")
                            "creduce-" version ".tar.gz")))
       (sha256
        (base32
-        "0pf5q0n8vkdcr1wrkxn2jzxv0xkrir13bwmqfw3jpbm3dh2c3b6d"))))
+        "1vqx73ymfscvlyig03972a5m7ar3gx2yv6m8c6h2mibz792j5xkp"))))
     (build-system gnu-build-system)
     (inputs
      `(("astyle"          ,astyle)
-       ("llvm"            ,llvm-3.9.1)
-       ("clang"           ,clang-3.9.1)
+       ("llvm"            ,llvm-6)
+       ("clang"           ,clang-6)
        ("flex"            ,flex)
        ("indent"          ,indent)
        ("perl"            ,perl)
@@ -118,11 +117,16 @@ program to exhibit a bug.")
        ("file-which"      ,perl-file-which)
        ("getopt-tabular"  ,perl-getopt-tabular)
        ("regex-common"    ,perl-regexp-common)
-       ("sys-cpu"         ,perl-sys-cpu)
        ("term-readkey"    ,perl-term-readkey)))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (with-directory-excursion "tests"
+               ;; Running all tests can take a looong time, and tests 4 and 5
+               ;; require frama-c or kcc.  So run just one for sanity.
+               (invoke "./run_tests" "1"))))
          (add-after 'install 'set-load-paths
            (lambda* (#:key inputs outputs #:allow-other-keys)
              ;; Tell creduce where to find the perl modules it needs.
@@ -137,7 +141,7 @@ program to exhibit a bug.")
                                           ,(package-version perl)))
                          '("term-readkey"    "exporter-lite"
                            "file-which"      "getopt-tabular"
-                           "regex-common"    "sys-cpu")))))
+                           "regex-common")))))
              #t)))))
     (home-page "https://embed.cs.utah.edu/creduce")
     (synopsis "Reducer for interesting code")
diff --git a/gnu/packages/dlang.scm b/gnu/packages/dlang.scm
index c164ed849a..3b0c799dc3 100644
--- a/gnu/packages/dlang.scm
+++ b/gnu/packages/dlang.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2015, 2018 Pjotr Prins <pjotr.guix@thebird.nl>
 ;;; Copyright © 2017 Frederick Muriithi <fredmanglis@gmail.com>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -81,15 +81,15 @@ and freshness without requiring additional information from the user.")
     (package
       (name "ldc")
       (version "0.17.4")
-      (source (origin
-                (method url-fetch)
-                (uri (string-append
-                      "https://github.com/ldc-developers/ldc/archive/v"
-                      version ".tar.gz"))
-                (file-name (string-append name "-" version ".tar.gz"))
-                (sha256
-                 (base32
-                  "1kw0j378k6bh0k66dvx99bjq8ilp8bb24w3jrmibn8rhmqv0d5q8"))))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/ldc-developers/ldc.git")
+               (commit (string-append "v" version))))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0nnrjavfmpfp7bib04isqlxvyzh6mlvsdan0gxysdz96hlg4hcq8"))))
       (build-system cmake-build-system)
       (supported-systems '("x86_64-linux" "i686-linux" "armhf-linux"))
       (properties
@@ -101,11 +101,15 @@ and freshness without requiring additional information from the user.")
          (modify-phases %standard-phases
            (add-after 'unpack 'unpack-submodule-sources
              (lambda* (#:key inputs #:allow-other-keys)
-               (let ((unpack (lambda (source target)
-                               (with-directory-excursion target
-                                 (invoke "tar" "xvf"
-                                         (assoc-ref inputs source)
-                                         "--strip-components=1")))))
+               (let ((unpack (lambda (input target)
+                               (let ((source (assoc-ref inputs input)))
+                                 ;; Git checkouts are directories as long as
+                                 ;; there are no patches; tarballs otherwise.
+                                 (if (file-is-directory? source)
+                                     (copy-recursively source target)
+                                     (with-directory-excursion target
+                                       (invoke "tar" "xvf" source
+                                               "--strip-components=1")))))))
                  (unpack "phobos-src" "runtime/phobos")
                  (unpack "druntime-src" "runtime/druntime")
                  (unpack "dmd-testsuite-src" "tests/d2/dmd-testsuite")
@@ -147,32 +151,32 @@ and freshness without requiring additional information from the user.")
          ("unzip" ,unzip)
          ("phobos-src"
           ,(origin
-             (method url-fetch)
-             (uri (string-append
-                   "https://github.com/ldc-developers/phobos/archive/ldc-v"
-                   version ".tar.gz"))
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/ldc-developers/phobos.git")
+                   (commit (string-append "ldc-v" version))))
+             (file-name (git-file-name "phobos" version))
              (sha256
-              (base32
-               "16x36kp46mqiihxx7jvr1d3mv3b96yfmhinb9lzinh2m4clr85wz"))
+              (base32 "0i7gh99w4mi0hdv16261jcdiqyv1nkjdcwy9prw32s0lvplx8fdy"))
              (patches (search-patches "ldc-bootstrap-disable-tests.patch"))))
          ("druntime-src"
           ,(origin
-             (method url-fetch)
-             (uri (string-append
-                   "https://github.com/ldc-developers/druntime/archive/ldc-v"
-                   version ".tar.gz"))
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/ldc-developers/druntime.git")
+                   (commit (string-append "ldc-v" version))))
+             (file-name (git-file-name "druntime" version))
              (sha256
-              (base32
-               "0iw2xxhcbsc5f1707dgdzhff528363l4faqdk513gaxs2dhfx8vx"))))
+              (base32 "0alabm3bbvs94msvxz5psiwk4f51cw9h82z1p5hhsnf8ja6d0am7"))))
          ("dmd-testsuite-src"
           ,(origin
-             (method url-fetch)
-             (uri (string-append
-                   "https://github.com/ldc-developers/dmd-testsuite/archive/ldc-v"
-                   version ".tar.gz"))
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/ldc-developers/dmd-testsuite.git")
+                   (commit (string-append "ldc-v" version))))
+             (file-name (git-file-name "dmd-testsuite" version))
              (sha256
-              (base32
-               "0z6ch930wjkg2vlnqkbliwxxxifad6ydsdpwdxwnajkb2kaxsjx4"))))))
+              (base32 "05qr4cgb4scfqzbw1l5pk72kil074mvj9d55b165ljyr51sgwgbl"))))))
       (home-page "http://wiki.dlang.org/LDC")
       (synopsis "LLVM-based compiler for the D programming language")
       (description
@@ -195,28 +199,33 @@ bootstrapping more recent compilers written in D.")
       (inherit ldc-bootstrap)
       (name "ldc")
       (version "1.10.0")
-      (source (origin
-                (method url-fetch)
-                (uri (string-append
-                      "https://github.com/ldc-developers/ldc/archive/v"
-                      version ".tar.gz"))
-                (file-name (string-append name "-" version ".tar.gz"))
-                (sha256
-                 (base32
-                  "16b1h9kwfggjw6ykc6sfs26ak6vypylsx9wmvp5m6x3cvi6g70yi"))))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/ldc-developers/ldc.git")
+               (commit (string-append "v" version))))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0qcb2rn01wql7y8qp31blbv3hwmnh3zjgzi2n7k168cxr6rrdhlp"))))
       (arguments
        `(#:phases
          (modify-phases %standard-phases
            (add-after 'unpack 'unpack-submodule-sources
              (lambda* (#:key inputs #:allow-other-keys)
-               (let ((unpack (lambda (source target)
-                               (with-directory-excursion target
-                                 (invoke "tar" "xvf"
-                                         (assoc-ref inputs source)
-                                         "--strip-components=1")))))
+               (let ((unpack (lambda (input target)
+                               (let ((source (assoc-ref inputs input)))
+                                 ;; Git checkouts are directories as long as
+                                 ;; there are no patches; tarballs otherwise.
+                                 (if (file-is-directory? source)
+                                     (copy-recursively source target)
+                                     (with-directory-excursion target
+                                       (invoke "tar" "xvf" source
+                                               "--strip-components=1")))))))
                  (unpack "phobos-src" "runtime/phobos")
                  (unpack "druntime-src" "runtime/druntime")
-                 (unpack "dmd-testsuite-src" "tests/d2/dmd-testsuite"))))
+                 (unpack "dmd-testsuite-src" "tests/d2/dmd-testsuite")
+                 #t)))
            (add-after 'unpack-submodule-sources 'patch-phobos
              (lambda* (#:key inputs #:allow-other-keys)
                (substitute* '("runtime/phobos/std/process.d"
@@ -224,7 +233,7 @@ bootstrapping more recent compilers written in D.")
                  (("/bin/sh") (which "sh"))
                  (("echo") (which "echo")))
                (substitute* "tests/d2/dmd-testsuite/Makefile"
-                            (("/bin/bash") (which "bash")))
+                 (("/bin/bash") (which "bash")))
                ;; disable unittests in the following files. We are discussing with
                ;; upstream
                (substitute* '("runtime/phobos/std/net/curl.d"
@@ -241,14 +250,14 @@ bootstrapping more recent compilers written in D.")
                (delete-file "tests/plugins/addFuncEntryCall/testPlugin.d")
                ;; the following tests requires AVX instruction set in the CPU.
                (substitute* "tests/d2/dmd-testsuite/runnable/test_cdvecfill.d"
-                (("^// DISABLED: ") "^// DISABLED: linux64 "))
+                 (("^// DISABLED: ") "^// DISABLED: linux64 "))
                #t))
            (replace 'check
-                    (lambda* (#:key inputs outputs #:allow-other-keys)
-                      ;; some tests call into gdb binary which needs SHELL and CC set
-                      (setenv "SHELL" (which "sh"))
-                      (setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc"))
-                      (invoke "make" "test" "-j" (number->string (parallel-job-count))))))))
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               ;; some tests call into gdb binary which needs SHELL and CC set
+               (setenv "SHELL" (which "sh"))
+               (setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc"))
+               (invoke "make" "test" "-j" (number->string (parallel-job-count))))))))
       (native-inputs
        `(("llvm" ,llvm-6)
          ("clang" ,clang-6)
@@ -259,13 +268,13 @@ bootstrapping more recent compilers written in D.")
          ("gdb" ,gdb)
          ("phobos-src"
           ,(origin
-             (method url-fetch)
-             (uri (string-append
-                   "https://github.com/ldc-developers/phobos/archive/ldc-v"
-                   older-version ".tar.gz"))
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/ldc-developers/phobos.git")
+                   (commit (string-append "ldc-v" older-version))))
+             (file-name (git-file-name "phobos" older-version))
              (sha256
-              (base32
-               "0cpmrww00xf1qx38bcc22rr05qw41p00p45yb5fbwnfaccfwdn0s"))
+              (base32 "1gmlwnjdcf6s5aahadxsif9l5nyaj0rrn379g6fmhcvdk64kf509"))
              ;; This patch deactivates some tests that depend on network access
              ;; to pass.  It also deactivates some tests that have some reliance
              ;; on timezone.
@@ -278,36 +287,37 @@ bootstrapping more recent compilers written in D.")
              (patches (search-patches "ldc-disable-phobos-tests.patch"))))
          ("druntime-src"
           ,(origin
-             (method url-fetch)
-             (uri (string-append
-                   "https://github.com/ldc-developers/druntime/archive/ldc-v"
-                   older-version ".tar.gz"))
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/ldc-developers/druntime.git")
+                   (commit (string-append "ldc-v" older-version))))
+             (file-name (git-file-name "druntime" older-version))
              (sha256
-              (base32
-               "1akh2vdi98jih8642yjbvv2vavxzrmq24kz8i3kfidg5ndqyv222"))))
+              (base32 "0a3yyjcnpvm5fbdczf76fx08kl154w17w06hlxf0j3p1p4jc85aj"))))
          ("dmd-testsuite-src"
           ,(origin
-             (method url-fetch)
-             (uri (string-append
-                   "https://github.com/ldc-developers/dmd-testsuite/archive/ldc-v"
-                   older-version ".tar.gz"))
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/ldc-developers/dmd-testsuite.git")
+                   (commit (string-append "ldc-v" older-version))))
+             (file-name (git-file-name "dmd-testsuite" older-version))
              (sha256
-              (base32
-               "0z5x07qrbkpksshaymp11ir6jlmg9wjicxn6zhp8cya6i1ha9p99")))))))))
+              (base32 "0mm3rliki1nqiqfaha7ssvm156aa398vpvf4v6895m7nn1mz7rss")))))))))
 
 (define-public dub
   (package
     (name "dub")
     (version "1.7.2")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/dlang/dub/archive/"
-                                  "v" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1jvr1mmq8j77wnsrsg7x2xv8yfljqd6x8gn6yy7dd6h6y3cf408q"))))
-   (build-system gnu-build-system)
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/dlang/dub.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "073ibvgm1gphcqs1yjrav9ryp677nh3b194nxmvicwgvdc0sb6w9"))))
+    (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; it would have tested itself by installing some packages (vibe etc)
        #:phases
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index 461d9f8c0c..9cffe3b822 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -569,23 +569,21 @@ Extensions} (DNSSEC).")
 (define-public knot
   (package
     (name "knot")
-    (version "2.8.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://secure.nic.cz/files/knot-dns/"
-                                  "knot-" version ".tar.xz"))
-              (sha256
-               (base32
-                "1vw7xx7bm440jwrpvdd04vrp6ccz2b11swcn9msvs62hf0kdjjj9"))
-              (patches
-               (search-patches "knot-include-system-lmdb-header.patch"))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  ;; Delete bundled libraries.
-                  (with-directory-excursion "src/contrib"
-                    (delete-file-recursively "lmdb"))
-                  #t))))
+    (version "2.8.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://secure.nic.cz/files/knot-dns/"
+                           "knot-" version ".tar.xz"))
+       (sha256
+        (base32 "1im2wb8hl394mzni1wavmvfqd7il8s28kcz8w3s4v05nbhzg06xj"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Delete bundled libraries.
+           (with-directory-excursion "src/contrib"
+             (delete-file-recursively "lmdb"))
+           #t))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/docker.scm b/gnu/packages/docker.scm
index a11ce266d2..39e7e8108b 100644
--- a/gnu/packages/docker.scm
+++ b/gnu/packages/docker.scm
@@ -43,7 +43,7 @@
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages virtualization))
 
-(define %docker-version "18.09.3")
+(define %docker-version "18.09.5")
 
 (define-public python-docker-py
   (package
@@ -241,7 +241,7 @@ network attachments.")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
-       (base32 "06yr5xwr181lalh8z1lk07nxlp7hn38aq8cyqjk617dfy4lz0ixx"))
+       (base32 "0cirpd9l2qazp2jyanwzvrkx2m98nksjdvn43ff38p89w6133ipb"))
       (patches
        (search-patches "docker-engine-test-noinstall.patch"
                        "docker-fix-tests.patch"
@@ -487,7 +487,7 @@ provisioning etc.")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
-       (base32 "09j1i668p330gjz5vw5pss8ghxh1mz7rl2q9ykp02q9p112zhy4j"))))
+       (base32 "0mxxjzkwdny8p2dmyjich7x1gn7hdlfppzjy2skk2k5bwv7nxpmi"))))
     (build-system go-build-system)
     (arguments
      `(#:import-path "github.com/docker/cli"
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index c9cbbaa154..7aec695205 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -44,6 +44,7 @@
 ;;; Copyright © 2018, 2019 Brett Gilio <brettg@posteo.net>
 ;;; Copyright © 2019 Dimakakos Dimos <bendersteed@teknik.io>
 ;;; Copyright © 2019 Brian Leung <bkleung89@gmail.com>
+;;; Copyright © 2019 mikadoZero <mikadozero@yandex.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -722,6 +723,29 @@ can take association lists, hash tables, and in some cases vectors (where the
 index is considered the key).")
     (license license:gpl3+)))
 
+(define-public emacs-ace-jump-mode
+  (package
+    (name "emacs-ace-jump-mode")
+    (version "2.0")
+    (home-page "https://github.com/winterTTr/ace-jump-mode")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url home-page)
+                    (commit (string-append "v" version))))
+              (sha256
+               (base32
+                "1bwvzh056ls2v7y26a0s4j5mj582dmds04lx4x6iqihs04ss74bb"))
+              (file-name (git-file-name name version))))
+    (build-system emacs-build-system)
+    (synopsis "Cursor location minor mode for fast navigation")
+    (description "Ace-jump-mode is a fast/direct cursor location minor
+mode.  It creates an N-Branch search tree internally and marks all
+the possible position with predefined keys in within the whole Emacs
+view.  This allows you to move to the character, word, or line almost
+directly.")
+    (license license:gpl3+)))
+
 (define-public emacs-anaphora
   (package
     (name "emacs-anaphora")
@@ -1117,6 +1141,34 @@ within a specified width.  It is useful for displaying long track titles.")
 ;;; Miscellaneous.
 ;;;
 
+(define-public emacs-ace-link
+  (package
+    (name "emacs-ace-link")
+    (version "0.5.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/abo-abo/ace-link.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "147dz79vg4ym5wg3d544bw2khdb2j3hr73rw4qfm64wf0q2dj0vk"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-avy" ,emacs-avy)))
+    (home-page "https://github.com/abo-abo/ace-link")
+    (synopsis "Quickly follow links in Emacs")
+    (description
+     "Currently, to jump to a link in a @code{Info-mode}, @code{help-mode},
+@code{woman-mode}, @code{org-mode}, @code{eww-mode}, @code{compilation-mode},
+@code{goto-address-mode} buffer, you can tab through the links to select the
+one you want.  This is an O(N) operation, where the N is the amount of links.
+This package turns this into an O(1) operation.  It does so by assigning a
+letter to each link using avy.")
+    (license license:gpl3+)))
+
 (define-public emacs-bbdb
   (package
     (name "emacs-bbdb")
@@ -1393,7 +1445,7 @@ Emacs buffer.")
 (define-public emacs-direnv
   (package
     (name "emacs-direnv")
-    (version "1.2.0")
+    (version "1.5.0")
     (source
      (origin
        (method git-fetch)
@@ -1403,7 +1455,7 @@ Emacs buffer.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "172jyl8v4zy9bbha8nndq63x8svn9xqkafkj3q17z289na8iaylh"))))
+         "02blhinkkfh3iai6j1k5swplf5mkwijy3p7wy38rnd1gnyj2z4la"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("dash" ,emacs-dash)
@@ -1538,7 +1590,7 @@ Maps directly inside Emacs.")
                 (uri (git-reference
                       (url "https://github.com/ppareit/graphviz-dot-mode.git")
                       (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
+                (file-name (git-file-name name version))
                 (sha256
                  (base32
                   "0j1r2rspaakw37b0mx7pwpvdsvixq9sw3xjbww5piihzpdxz58z1"))))
@@ -1729,7 +1781,7 @@ and stored in memory.")
               (uri (git-reference
                     (url "https://notabug.org/alezost/emacs-bui.git")
                     (commit (string-append "v" version))))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "0sszdl4kvqbihdh8d7mybpp0d8yw2p3gyiipjcxz9xhvvmw3ww4x"))))
@@ -1828,7 +1880,7 @@ management tasks from Emacs.  To begin with, run @code{M-x guix-about} or
               (uri (git-reference
                     (url "https://notabug.org/alezost/emacs-build-farm.git")
                     (commit (string-append "v" version))))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "0i0bwbav5861j2y15j9nd5m9rdqg9q97zgcbld8pivr9nyxy63lz"))))
@@ -1849,15 +1901,15 @@ evaluations.  The entry point is @code{M-x build-farm} command.")
   (package
     (name "emacs-d-mode")
     (version "2.0.9")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/Emacs-D-Mode-Maintainers/Emacs-D-Mode/"
-                    "archive/" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "127aa77ix3p7w4g339bx026df9y649dahlr3v359z0hs40zjz3kd"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Emacs-D-Mode-Maintainers/Emacs-D-Mode.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0fzplvi1sm8k2sabfdvrd7j2xypwqh0g9v1mxa75dajdmcd85zpj"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-undercover" ,emacs-undercover)))
@@ -1915,7 +1967,7 @@ in the center.")
               (uri (git-reference
                     (url "http://dr-qubit.org/git/undo-tree.git")
                     (commit (string-append "release/" version))))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "1hnh2mnmw179gr094r561w6cw1haid0lpvpqvkc24wpj82vphzpa"))))
@@ -1931,19 +1983,19 @@ allows easily move between them.")
   (package
     (name "emacs-s")
     (version "1.12.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/magnars/s.el/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0xbl75863pcm806zg0x1lw7qznzjq2c8320k8js7apyag8q4srvh"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/magnars/s.el.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1g8mqd13llj007al4nlxxx4z2lcsg3wk970mgjn0avwrhjjgdmmv"))))
     (build-system emacs-build-system)
     (arguments
      `(#:tests? #t
-       #:emacs ,emacs ; FIXME: tests fail with emacs-minimal
+       #:emacs ,emacs                   ; FIXME: tests fail with emacs-minimal
        #:test-command '("./run-tests.sh")))
     (home-page "https://github.com/magnars/s.el")
     (synopsis "Emacs string manipulation library")
@@ -1957,13 +2009,13 @@ strings.")
     (version "20160630")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/zk-phi/symon/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/zk-phi/symon.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0h4jcgdnq98wc9rj72nwyazq8498yg55jfljiij5qwbn1xf1g5zz"))))
+        (base32 "1q7di9s8k710nx98wnqnbkkhdimrn0jf6z4xkm4c78l6s5idjwlz"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/zk-phi/symon")
     (synopsis "Tiny graphical system monitor")
@@ -2025,15 +2077,15 @@ files and directories.")
   (package
     (name "emacs-git-gutter")
     (version "0.90")
-    (source (origin
-             (method url-fetch)
-             (uri (string-append
-                   "https://github.com/syohex/" name "/archive/"
-                   version ".tar.gz"))
-             (file-name (string-append name "-" version ".tar.gz"))
-             (sha256
-              (base32
-               "1nmhvhpq1l56mj2yq3ag23rw3x4xgnsy8szp30s26l0yjnkhc4qg"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/syohex/emacs-git-gutter.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1abagq0psip7cgsqbfjv72qy60ywsny0ibsfcn74ldj6a9v17mz5"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/syohex/emacs-git-gutter")
     (synopsis "See and manage hunks of text in a version control system")
@@ -2106,13 +2158,13 @@ This package also includes relevant snippets for yasnippet.")
     (version "1.25.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/rejeep/el-mock.el/"
-                           "archive/v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rejeep/el-mock.el.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "16xw94n58xxn3zvgyj72bmzs0k5lkvswjmzs79ws9n7rzdivb38b"))))
+        (base32 "13mv1rhgkwiww2wh5w926jz7idppp492wir1vdl245c5x50dh4f7"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/rejeep/el-mock.el")
     (synopsis "Tiny mock and stub framework in Emacs Lisp")
@@ -2128,13 +2180,13 @@ Expectations, but it can be used in other contexts.")
     (version "0.3.3")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/ecukes/espuds/"
-                           "archive/v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ecukes/espuds.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0xv551376pbmh735a3zjwc9z4qdx6ngj1vpq3xqjpn0a1rwjyn4k"))))
+        (base32 "16r4j27j9yfdiy841w9q5ykkc6n3wrm7hvfacagb32mydk821ijg"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-s" ,emacs-s)
@@ -2175,15 +2227,15 @@ port of @code{cl-spark} to Emacs Lisp.")
   (package
     (name "emacs-es-mode")
     (version "4.3.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/dakrone/es-mode/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0y86qdcb3g7fkcb4pzsjh3syzql6w3314hg1wqxq4a8bbk3y0cgr"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/dakrone/es-mode.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1qhfnd5anp5qrmravv7ks5ix763xnki2f5jwcyj70qyxwr0l60cg"))))
     (build-system emacs-build-system)
     (propagated-inputs
      ;; The version of org in Emacs 24.5 is not sufficient, and causes tables
@@ -2207,13 +2259,13 @@ mode, which displays information about Elasticsearch clusters.")
     (version "0.11.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/magnars/expand-region.el"
-                           "/archive/" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/magnars/expand-region.el.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "08dy1f411sh9wwww53rjw80idcf3vpki6ba2arl4hl5jcw9651g0"))))
+        (base32 "0h40dhc3kn8fq86xnwi5lz7ql8my8737y7wkqr897p15y90swr35"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/magnars/expand-region.el")
     (synopsis "Increase selected region by semantic units")
@@ -2229,13 +2281,13 @@ keep pressing the key until it selects what you want.  There's also
     (version "1.89")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/alpaker/Fill-Column-Indicator"
-                           "/archive/v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/alpaker/Fill-Column-Indicator.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "09ab01np14bdcsr38xf95kpnvxzqr46mdjmphg3pigwnx39a3jvg"))))
+        (base32 "010kf8jsly74y7m6mmkn1h6y205kz23zphs50zgy2nag2p88rz9y"))))
     (build-system emacs-build-system)
     (home-page "https://www.emacswiki.org/emacs/FillColumnIndicator")
     (synopsis "Graphically indicate the fill column")
@@ -2248,15 +2300,15 @@ column by drawing a thin line down the length of the editing window.")
   (package
     (name "emacs-grep-a-lot")
     (version "1.0.7")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/ZungBang/emacs-grep-a-lot.git")
-                    (commit "9f9f645b9e308a0d887b66864ff97d0fca1ba4ad")))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "1f8262mrlinzgnn4m49hbj1hm3c1mvzza24py4b37sasn49546lw"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ZungBang/emacs-grep-a-lot.git")
+             (commit "9f9f645b9e308a0d887b66864ff97d0fca1ba4ad")))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1f8262mrlinzgnn4m49hbj1hm3c1mvzza24py4b37sasn49546lw"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/ZungBang/emacs-grep-a-lot")
     (synopsis "Enables multiple grep buffers in Emacs")
@@ -2270,13 +2322,13 @@ column by drawing a thin line down the length of the editing window.")
     (version "2.5.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/nonsequitur/inf-ruby/"
-                           "archive/" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/nonsequitur/inf-ruby.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0m7323k649ckxql1grsdnf71bjhys7l4qb8wbpphb1mr1q8i4066"))))
+        (base32 "1r452h6cyypqlc59q8dx5smkwhck4qjcg1pf9qdw539cpva5q77z"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/nonsequitur/inf-ruby")
     (synopsis "Provides a REPL buffer connected to a Ruby subprocess in Emacs")
@@ -2313,13 +2365,13 @@ IRC bouncer with ERC.")
     (version "0.3.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/cask/shut-up/"
-                           "archive/v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/cask/shut-up.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "09kzrjdkb569iviyg7ydwq44yh84m3f9hkl7jizfrlk0w4gz67d1"))))
+        (base32 "103yvfgkj78i4bnv1fwk76izsa8h4wyj3vwj1vq7xggj607hkxzq"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/cask/shut-up")
     (synopsis "Silence Emacs")
@@ -2333,13 +2385,13 @@ Emacs shell script.")
     (version "0.6.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/sviridov/undercover.el/"
-                           "archive/v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/sviridov/undercover.el.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0f48fi0xnbsqs382rgh85m9mq1wdnr0yib7as9xhwzvq0hsr5m0a"))))
+        (base32 "06qcvbp5rd0kh3ibrxj5p6r578lwsrgd7yj5c6slwmkdmna2fj33"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -2357,13 +2409,13 @@ Lisp.")
     (version "1.0.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/tarsius/paren-face/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/tarsius/paren-face.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0y4qrhxa9332vsvr999jg7qj1ymnfgwpf591yi4a4jgg90pm7qnn"))))
+        (base32 "0f128gqn170s6hl62n44i9asais75ns1mpvb4l8vzy1sc0v16c0k"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/tarsius/paren-face")
     (synopsis "Face for parentheses in lisp modes")
@@ -2382,13 +2434,13 @@ subconsciously blend out the parentheses.")
     (version "0.11")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/purcell/page-break-lines/"
-                           "archive/" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/purcell/page-break-lines.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1zzhziq5kbrm9rxk30kx2glz455fp1blqxg8cpcf6l8xl3w8z4pg"))))
+        (base32 "1wp974716ih2cz9kdmdz7xwjy1qnnfzdzlfr9kchknagw8d9nn12"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/purcell/page-break-lines")
     (synopsis "Display page breaks as tidy horizontal lines")
@@ -2403,13 +2455,13 @@ as horizontal rules.")
     (version "1.4.6")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/skeeto/emacs-web-server/"
-                           "archive/" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/skeeto/emacs-web-server.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "01r7h3imnj4qx1m53a2wjafvbylcyz5f9r2rg2cs7ky3chlg220r"))))
+        (base32 "1qmkc0w28l53zzf5yd2grrk1sq222g5qnsm35ph25s1cfvc1qb2g"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/skeeto/emacs-http-server")
     (synopsis "HTTP server in pure Emacs Lisp")
@@ -2424,13 +2476,13 @@ serve files and directory listings.")
     (version "1.6.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/skeeto/skewer-mode/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/skeeto/skewer-mode.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "07jpz374j0j964szy3zznrkyja2kpdl3xa87wh7349mzxivqxdx0"))))
+        (base32 "05jndz0c26q60s416vqgvr66axdmxb7qsr2g70fvl5iqavnayhpv"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-simple-httpd" ,emacs-simple-httpd)
@@ -2454,7 +2506,7 @@ in Lisp modes.")
               (uri (git-reference
                     (url "https://github.com/akicho8/string-inflection")
                     (commit "a150e7bdda60b7824d3a936750ce23f73b0e4edd")))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "1k0sm552iawi49v4zis6dbb81d1rzgky9v0dpv7nj31gnb7bmy7k"))))
@@ -2485,13 +2537,13 @@ naming style of a symbol.  It supports different naming conventions such as:
     (version "0.2.5")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/sabof/stripe-buffer/"
-                           "archive/" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/sabof/stripe-buffer.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1p515dq7raly5hw94kiwm3vzsfih0d8af622q4ipvvljsm98aiik"))))
+        (base32 "035ym1c1vzg6hjsnd258z4dkrfc11lj4c0y4gpgybhk54dq3w9dk"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/sabof/stripe-buffer/")
     (synopsis "Add stripes to list buffers")
@@ -2506,13 +2558,13 @@ tables.")
     (version "1.0.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/Malabarba/rich-minority/"
-                           "archive/" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Malabarba/rich-minority.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1l0cb0q7kyi88nwfqd542psnkgwnjklpzc5rx32gzd3lkwkrbr8v"))))
+        (base32 "11hwf9y5ax207w6rwrsmi3pmn7pn7ap6iys0z8hni2f5zzxjrmx3"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/Malabarba/rich-minority")
     (synopsis "Clean-up and beautify the list of minor modes")
@@ -2527,13 +2579,13 @@ mode-line.")
     (version "0.8.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/dgutov/robe/"
-                           "archive/" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/dgutov/robe.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1vp45y99fwj88z04ah4yppz4z568qcib646az6m9az5ar0f203br"))))
+        (base32 "0ll7ivxqnglfb0i70ly6qq2yfw9cyi3vq3lmj4s6h6c1c7rm3gcq"))))
     (build-system emacs-build-system)
     (arguments
      '(#:include (cons "^lib\\/" %default-include)))
@@ -2554,13 +2606,13 @@ method and constant name completion.")
     (version "1.11")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/pezra/rspec-mode/"
-                           "archive/v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/pezra/rspec-mode.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1j0a7ms5516nlg60qfyn730pfxys6acm0rgyxh5xfkpi6jafgpvw"))))
+        (base32 "0hrn5n7aaymwimk511kjij44vqaxbmhly1gwmlmsrnbvvma7f2mp"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/pezra/rspec-mode")
     (synopsis "Provides a rspec mode for working with RSpec")
@@ -2579,13 +2631,13 @@ snippets for yasnippet.")
     (version "2.12.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/Malabarba/smart-mode-line/"
-                           "archive/" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Malabarba/smart-mode-line.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1hn8s6laijmg7w1bgwdfrki6h9vxkbgr8rmmssvd5yqyad5w2sba"))))
+        (base32 "1gs4ay9hdg8gmia4ir74qawk80pqwv99hp4yhy108kpfry5mrq6z"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-rich-minority" ,emacs-rich-minority)))
@@ -2628,13 +2680,13 @@ the speedbar window.")
     (version "1.0.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/DamienCassou/shell-switcher"
-                           "/archive/v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/DamienCassou/shell-switcher.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1c23mfkdqz2g9rixd9smm323vzlvhzz3ng34ambcqjfq309qb2nz"))))
+        (base32 "0ia7sdip4hl27avckv3qpqgm3k4ynvp3xxq1cy53bqfzzx0gcria"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/DamienCassou/shell-switcher")
     (synopsis "Provide fast switching between shell buffers")
@@ -2651,7 +2703,7 @@ the speedbar window.")
               (uri (git-reference
                     (commit "880706469338ab59b5bb7dbe8460016f89755364")
                     (url "https://github.com/gregsexton/ob-ipython.git")))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "1scf25snbds9ymagpny30ijbsg479r3nm0ih01dy4m9d0g7qryb7"))))
@@ -2722,10 +2774,10 @@ framework for Emacs Lisp to be used with @code{ert}.")
               (uri (git-reference
                     (url home-page)
                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0xy9zb6wwkgwhcxdnslqk52bq3z24chgk6prqi4ks0qcf2bwyh5h"))
-              (file-name (string-append name "-" version))))
+                "0xy9zb6wwkgwhcxdnslqk52bq3z24chgk6prqi4ks0qcf2bwyh5h"))))
     (build-system emacs-build-system)
     (arguments
      `(#:phases
@@ -2765,10 +2817,10 @@ for asynchronous tasks.")
               (uri (git-reference
                     (url home-page)
                     (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1pii9dw4skq7nr4na6qxqasl36av8cwjp71bf1fgppqpcd9z8skj"))
-              (file-name (string-append name "-" version))))
+                "1pii9dw4skq7nr4na6qxqasl36av8cwjp71bf1fgppqpcd9z8skj"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-deferred" ,emacs-deferred)))
@@ -2787,13 +2839,13 @@ build jobs.")
     (version "0.9.7")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/company-mode/company-mode/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/company-mode/company-mode.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "19flv38f2qhxda8lbk2ckywvibd72vbzmn4hchqz6d8acsknh4sb"))))
+        (base32 "1gpapjxs4l6fmmj22q0q1pyhj1yd9j5iqfqnjf1abskkj69lqkpj"))))
     (build-system emacs-build-system)
     (arguments
      `(#:phases
@@ -2828,10 +2880,10 @@ These are distributed in separate files and can be used individually.")
               (uri (git-reference
                     (url (string-append home-page ".git"))
                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0nhjrnlmss535jbshjjd30vydbr8py21vkx4p294w6d8vg2rssf8"))
-              (file-name (string-append name "-" version ".tar.gz"))))
+                "0nhjrnlmss535jbshjjd30vydbr8py21vkx4p294w6d8vg2rssf8"))))
     (build-system emacs-build-system)
     (inputs `(("server" ,emacs-irony-mode-server)))
     (arguments `(#:phases
@@ -2900,9 +2952,9 @@ with irony-mode using clang-tooling.")
               (uri (git-reference
                     (url "https://github.com/Sarcasm/flycheck-irony.git")
                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
-               (base32 "0qa5a8wzvzxwqql92ibc9s43k8sj3vwn7skz9hfr8av0skkhx996"))
-              (file-name (string-append name "-" version))))
+               (base32 "0qa5a8wzvzxwqql92ibc9s43k8sj3vwn7skz9hfr8av0skkhx996"))))
     (build-system emacs-build-system)
     (inputs
      `(("irony-mode" ,emacs-irony-mode)
@@ -2924,8 +2976,9 @@ irony-mode do the syntax checking.")
        (uri (git-reference
              (url "https://github.com/ikirill/irony-eldoc.git")
              (commit "0df5831eaae264a25422b061eb2792aadde8b3f2")))
-       (sha256 (base32 "1l5qpr66v1l12fb50yh73grb2rr85xxmbj19mm33b5rdrq2bqmmd"))
-       (file-name (string-append name "-" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1l5qpr66v1l12fb50yh73grb2rr85xxmbj19mm33b5rdrq2bqmmd"))))
     (build-system emacs-build-system)
     (inputs
      `(("irony-mode" ,emacs-irony-mode)))
@@ -2941,14 +2994,13 @@ for the current function or variable in the minibuffer.")
     (version "2.3.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/expez/company-quickhelp/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/expez/company-quickhelp.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0xrn2z1dgk5gmkmp2jkn9g83ckk39lqp5pyyv8rl7f6gqvib3qh0"))))
+        (base32 "08ccsfvwdpzpj0gai3xrdb2bv1nl6myjkxsc5774pbvlq9nkfdvr"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-pos-tip" ,emacs-pos-tip)
@@ -2965,13 +3017,13 @@ completion candidate when using the Company text completion framework.")
     (version "1.4.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/magnars/multiple-cursors.el/"
-                           "archive/" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/magnars/multiple-cursors.el.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0hihihlvcvzayg5fnqzcg45fhvlmq6xlq58syy00rjwbry9w389k"))))
+        (base32 "1ijgvzv5r44xqvz751fd5drbvrspapw6xwv47582w255j363r6ss"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/magnars/multiple-cursors.el")
     (synopsis "Multiple cursors for Emacs")
@@ -2990,10 +3042,10 @@ simultaneous cursors.")
               (uri (git-reference
                     (url home-page)
                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1jhd4grch5iz12gyxwfbsgh4dmz5hj4bg4gnvphccg8dsnni05k2"))
-              (file-name (string-append name "-" version))))
+                "1jhd4grch5iz12gyxwfbsgh4dmz5hj4bg4gnvphccg8dsnni05k2"))))
     (build-system emacs-build-system)
     (synopsis "Minor mode for typographic editing")
     (description
@@ -3039,11 +3091,11 @@ characters and asynchronous fetching of completion candidates.")
       (version (string-append "20151223." (string-take commit 8)))
       (source
        (origin
-         (file-name (string-append name "-" version))
          (method git-fetch)
          (uri (git-reference
                (url "https://github.com/ashinn/scheme-complete.git")
                (commit commit)))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "141wn9l0m33w0g3dqmx8nxbfdny1r5xbr6ak61rsz21bk0qafs7x"))
@@ -3072,7 +3124,7 @@ to a key in your preferred mode.")
          (uri (git-reference
                (url "https://github.com/supercollider/scel.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "0jvmzs1lsjyndqshhii2y4mnr3wghai26i3p75453zrpxpg0zvvw"))))
@@ -3186,13 +3238,13 @@ identifiers in the MIT-Scheme documentation.")
     (home-page "https://staff.fnwi.uva.nl/c.dominik/Tools/constants")
     (source
      (origin
-       (file-name (string-append name "-" version ".tar.gz"))
-       (method url-fetch)
-       (uri (string-append "https://github.com/fedeinthemix/emacs-constants"
-                           "/archive/v" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/fedeinthemix/emacs-constants.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0pnrpmmxq8mh5h2hbrp5vcym0j0fh6dv3s7c5ccn18wllhzg9g7n"))))
+        (base32 "0f5sh6b45a8p9kancjp9jk44ws8ww6x50a0i6zgyyvr7dbvii1a0"))))
     (build-system emacs-build-system)
     (synopsis "Enter definition of constants into an Emacs buffer")
     (description
@@ -3206,13 +3258,13 @@ constants and units into an Emacs buffer.")
     (version "1.4.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/magnars/tagedit/"
-                           "archive/" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/magnars/tagedit.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1apfnann4qklfdsmdi7icjsj18x7gwx8d83iqr4z25clszz95xfq"))))
+        (base32 "0kq40g46s8kgiafrhdq99h79rz9h5fvgz59k7ralmf86bl4sdmdb"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-s" ,emacs-s)
@@ -3230,14 +3282,13 @@ in @code{html-mode}.")
     (version "2.23")
     (source
      (origin
-       (file-name (string-append name "-" version ".tar.gz"))
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/slime/slime/archive/v"
-             version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/slime/slime.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "01gkrqfpifcx1vipwrbhns2r4s8izp3z1w4p41azc943s1a2d5nc"))))
+        (base32 "0i637n0ragpbj39hqx65nx5k99xf0464c4w6w1qpzykm6z42grky"))))
     (build-system emacs-build-system)
     (native-inputs
      `(("texinfo" ,texinfo)))
@@ -3247,6 +3298,10 @@ in @code{html-mode}.")
                    "^contrib/Makefile$" "^contrib/README.md$")
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'make-git-checkout-writable
+           (lambda _
+             (for-each make-file-writable (find-files "."))
+             #t))
          (add-before 'install 'configure
            (lambda* _
              (emacs-substitute-variables "slime.el"
@@ -3290,15 +3345,15 @@ for compilation, debugging, documentation lookup, and so on.")
   (package
     (name "emacs-popup")
     (version "0.5.3")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/auto-complete/popup-el/archive/v"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1yrgfj8y69xmcb6kwgplhq68ndm9410qwh7sd2knnd1gchpphdc0"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/auto-complete/popup-el.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1y538siabcf1n00wr4iz5gbxfndw661kx2mn9w1g4lg7yi4n0h0h"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/auto-complete/popup-el")
     (synopsis "Visual Popup User Interface for Emacs")
@@ -3312,15 +3367,15 @@ and popup menus.")
   (package
     (name "emacs-python-environment")
     (version "0.0.2")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/tkf/emacs-python-environment/")
-                    (commit version)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "0q6bib9nr6xiq6npzbngyfcjk87yyvwzq1zirr3z1h5wadm34lsk"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/tkf/emacs-python-environment/")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0q6bib9nr6xiq6npzbngyfcjk87yyvwzq1zirr3z1h5wadm34lsk"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-deferred" ,emacs-deferred)))
@@ -3420,7 +3475,7 @@ linting of manifests and integration with Puppet Debugger.")
          (uri (git-reference
                (url "https://github.com/chrisdone/god-mode.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1am415k4xxcva6y3vbvyvknzc6bma49pq3p85zmpjsdmsp18qdix"))))
@@ -3440,13 +3495,13 @@ insertion mode.  When enabled all keys are implicitly prefixed with
     (version "0.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/paradoxxxzero/jinja2-mode/"
-                           "archive/v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/paradoxxxzero/jinja2-mode.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0cgxjab1kla2zc2fj7bzib6i7snp08zshandmp9kqcm85l262xpn"))))
+        (base32 "0l26wcy496k6xk7q5sf905xir0p73ziy6c44is77854lv3y0z381"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/paradoxxxzero/jinja2-mode")
     (synopsis "Major mode for jinja2")
@@ -3535,13 +3590,13 @@ number.")
     (version "0.2.4")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/sabof/org-bullets/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/sabof/org-bullets.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1dyxvpb73vj80v8br2q9rf255hfphrgaw91fbvwdcd735np9pcnh"))))
+        (base32 "10nr4sjffnqbllv6gmak6pviyynrb7pi5nvrq331h5alm3xcpq0w"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/sabof/org-bullets")
     (synopsis "Show bullets in org-mode as UTF-8 characters")
@@ -3556,14 +3611,13 @@ number.")
     (version "2.1.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/lolownia/org-pomodoro/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/lolownia/org-pomodoro.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1jalsggw3q5kvj353f84x4nl04a5vmq07h75ggppy1627lb31zm4"))))
+        (base32 "0r5shgikm34d66i2hblyknbblpg92lb2zc9x4bcb28xkh7m9d0xv"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-alert" ,emacs-alert)))
@@ -3583,15 +3637,15 @@ started with 20 minutes.  All values are customizable.")
   (package
     (name "emacs-org-trello")
     (version "0.8.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/org-trello/org-trello/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0549mnf5cgwn8b8jbl38fljbaxmh1605sv9j8f3lsa95jhs1zpa0"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/org-trello/org-trello.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0m5hyhb6211hdmyp1bq6f3fklfgw3957knd96bfdafj727vdnlzm"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -3657,15 +3711,15 @@ organizer.")
   (package
     (name "emacs-zenburn-theme")
     (version "2.6")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/bbatsov/zenburn-emacs/archive/v"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0qc9d1rwq55yzh8shbppyd6izy1grpyr8kqh5zdgm7c5jccngpr4"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/bbatsov/zenburn-emacs.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1n87r5hs7h5r8dgfid66skpzcypl9hssr9m3npp916g6jfsi782f"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/bbatsov/zenburn-emacs")
     (synopsis "Low contrast color theme for Emacs")
@@ -3787,15 +3841,15 @@ library.")
   (package
     (name "emacs-smartparens")
     (version "1.11.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/Fuco1/smartparens/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0q5as813xs8y29i3v2rm97phd6m7xsmmw6hwbvx57gwmi8i1c409"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Fuco1/smartparens.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0zij2f2rjjym98w68jkp10n1ckpfprlkk217c3fg16hz5nq4vnm6"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -3818,15 +3872,15 @@ well as completely new features.")
   (package
     (name "emacs-highlight-symbol")
     (version "1.3")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/nschum/highlight-symbol.el/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1n7k1qns0fn0jsyc0hrjac5nzk21xw48yc30vyrhwvc51h0b9g90"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/nschum/highlight-symbol.el.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "09z13kv2g21kjjkkm3iyaz93sdjmdy2d563r8n7r7ng94acrn7f6"))))
     (build-system emacs-build-system)
     (home-page "https://nschum.de/src/emacs/highlight-symbol")
     (synopsis "Automatic and manual symbol highlighting for Emacs")
@@ -4031,7 +4085,7 @@ parallel.")
               (uri (git-reference
                     (url "https://github.com/tkf/emacs-request.git")
                     (commit (string-append "v" version))))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "0wyxqbb35yqf6ci47531lk32d6fppamx9d8826kdz983vm87him7"))))
@@ -4107,7 +4161,7 @@ automatically.")
        (uri (git-reference
              (url "https://github.com/abo-abo/swiper.git")
              (commit version)))
-       (file-name (string-append name "-" version "-checkout"))
+       (file-name (git-file-name name version))
        (sha256
         (base32
          "009n8zjycs62cv4i1k9adbb284wz2w3r13xki2740sj34k683v13"))))
@@ -4174,13 +4228,13 @@ use it, call @code{M-x ivy-yasnippet} (but make sure you have enabled
     (version "0.1.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/Yevgnen/ivy-rich/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Yevgnen/ivy-rich.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "14r3mx5rkd4wz0ls5pv5w6c7la3z9iy93d3jfind3xyg4kywy95c"))))
+        (base32 "0ayf3dwfhafcbqnckm65zy8nc1rv9ji939qfn53wbhxkrgqdicgz"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-ivy" ,emacs-ivy)))
@@ -4199,13 +4253,13 @@ show icons as well.")
     (version "0.4.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/abo-abo/avy/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/abo-abo/avy.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1wdrq512h25ymzjbf2kbsdymvd2ryfwzb6bh5bc3yv7q203im796"))))
+        (base32 "0rq9ab264565z83cly743nbhrd9m967apmnlhqr1gy8dm4hcy7nm"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/abo-abo/avy")
     (synopsis "Tree-based completion for Emacs")
@@ -4228,13 +4282,13 @@ windows.")
     (version "0.9.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/abo-abo/ace-window/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/abo-abo/ace-window.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1p2sgfl5dml4zbd6ldql6lm2m9vmd236ah996ni32x254s48j5pn"))))
+        (base32 "07mcdzjmgrqdvjs94f2n5bkrf5vrq2fwzz256wbm3wzqxqkfy1q6"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-avy" ,emacs-avy)))
@@ -4253,13 +4307,13 @@ highlighted.  Pressing that character will switch to that window.")
     (version "0.9.9.9")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/victorhge/iedit/archive/v"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/victorhge/iedit.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1hv8q6pr85ss9g3158l1fqv3m62vsq8rslsi86jicr2dcxyascr0"))))
+        (base32 "1pwkrm98vlpzsy5iwwfksdaz3zzyi7bvdf5fglhsn4ssf47p787g"))))
     (build-system emacs-build-system)
     (home-page "http://www.emacswiki.org/emacs/Iedit")
     (synopsis "Edit multiple regions in the same way simultaneously")
@@ -4358,15 +4412,15 @@ state and will work even without lispy being enabled.")
   (package
     (name "emacs-clojure-mode")
     (version "5.6.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/clojure-emacs/clojure-mode/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1f4k1hncy5ygh4izn7mqfp744nnisrp9ywn2njknbjxx34ai1q88"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/clojure-emacs/clojure-mode.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1qadymqzs5fn1sb347xzfw8lqq6s85vvkh4kzm35m61g5i2lm86y"))))
     (build-system emacs-build-system)
     (native-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -4387,15 +4441,15 @@ It is recommended to use @code{clojure-mode} with paredit or smartparens.")
   (package
     (name "emacs-epl")
     (version "0.8")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/cask/epl/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1511n3a3f5gvaf2b4nh018by61ciyzi3y3603fzqma7p9hrckarc"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/cask/epl.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0sjxd5y5hxhrbgfkpwx6m724r3841b53hgc61a0g5zwispw5pmrr"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/cask/epl")
     (synopsis "Emacs Package Library")
@@ -4456,15 +4510,15 @@ be removed from the front.  This type of data structure is sometimes called an
   (package
     (name "emacs-pkg-info")
     (version "0.6")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/lunaryorn/pkg-info.el/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1gy1jks5mmm02gg1c8gcyr4f8a9s5ggzhk56gv33b9mzjqzi5rd5"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/lunaryorn/pkg-info.el.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0nk12dcppdyhav6m6yf7abpywyd7amxd4237zsfd32w4zxsx39k1"))))
     (build-system emacs-build-system)
     (propagated-inputs `(("emacs-epl" ,emacs-epl)))
     (home-page "https://github.com/lunaryorn/pkg-info.el")
@@ -4496,14 +4550,15 @@ ongoing operations.")
   (package
     (name "emacs-sparql-mode")
     (version "2.0.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/ljos/sparql-mode/archive/"
-                                  "v" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1s93mkllxnhy7fw616cnnc2danacdlarys0g3cn89drh0llh53cv"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ljos/sparql-mode.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0ywhqk6n5k0l85zjwbnrivnvxjzqipqrggv06lify6yv18qmyl6s"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/ljos/sparql-mode")
     (synopsis "SPARQL mode for Emacs")
@@ -4596,7 +4651,7 @@ E-Prime forbids the use of the \"to be\" form to strengthen your writing.")
          (uri (git-reference
                (url "https://github.com/JuliaEditorSupport/julia-emacs.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1is4dcv6blslpzbjcg8l2jpxi8xj96q4cm0nxjxsyswpm8bw8ki0"))))
@@ -4637,14 +4692,15 @@ to all the other commands, too.")
   (package
     (name "emacs-js2-mode")
     (version "20190219")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/mooz/js2-mode/archive/"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1gv1vinp2avnnn6an8ffcx79vmsdjhhikz7s6cmphligb26qp2vi"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mooz/js2-mode.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0766bbr4piia9vfr4ivd2gwi8dxah654adv6h28ylz4q8xmfzm1b"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/mooz/js2-mode/")
     (synopsis "Improved JavaScript editing mode for Emacs")
@@ -4821,14 +4877,15 @@ If you want to mark a folder manually as a project just create an empty
   (package
     (name "emacs-elfeed")
     (version "3.0.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/skeeto/elfeed/archive/"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1wkdrxr6zzqb48czqqv34l87bx8aqjk1739ddqg933aqh241kfvn"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/skeeto/elfeed.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "01x4ww63lvn04c7f3ab5vx2s20xqisvv8213qwswz7vr9nxja5yi"))))
     (build-system emacs-build-system)
     (arguments
      `(#:tests? #t
@@ -4849,7 +4906,7 @@ and RSS, with a user interface inspired by notmuch.")
               (uri (git-reference
                     (url "https://github.com/sigma/el-x.git")
                     (commit (string-append "v" version))))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "1i6j44ssxm1xdg0mf91nh1lnprwsaxsx8vsrf720nan7mfr283h5"))))
@@ -4882,7 +4939,7 @@ provide the historic behavior of @code{flet}, as well as
               (uri (git-reference
                     (url "https://github.com/sigma/mocker.el.git")
                     (commit (string-append "v" version))))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "1lav7am41v63xgavq8pr88y828jmd1cxd4prjq7jlbxm6nvrwxh2"))))
@@ -4910,7 +4967,7 @@ maximizes flexibility (at the expense of conciseness).")
               (uri (git-reference
                     (url "https://github.com/technomancy/find-file-in-project.git")
                     (commit version)))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "1sdnyqv69mipbgs9yax88m9b6crsa59rjhwrih197pifl4089awr"))))
@@ -4943,7 +5000,7 @@ functions to assist in reviewing changes on files.")
               (uri (git-reference
                     (url "https://github.com/jorgenschaefer/pyvenv.git")
                     (commit (string-append "v" version))))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "1x052fsavb94x3scpqd6n9spqgzaahzbdxhg4qa5sy6hqsabn6zh"))))
@@ -4974,7 +5031,7 @@ environments (virtualenv) inside Emacs.")
               (uri (git-reference
                     (url "https://github.com/antonj/Highlight-Indentation-for-Emacs.git")
                     (commit (string-append "v" version))))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "00l54k75qk24a0znzl4ij3s3nrnr2wy9ha3za8apphzlm98m907k"))))
@@ -4998,7 +5055,7 @@ indentation (space indentation only).
               (uri (git-reference
                     (url "https://github.com/jorgenschaefer/elpy.git")
                     (commit version)))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "073bwxwjzcbmvpcz9q2xjwzx9x7hkvjni6fwvikh6yawzjp56jis"))))
@@ -5154,15 +5211,15 @@ window edge.")
   (package
     (name "emacs-writeroom")
     (version "3.7")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/joostkremers/writeroom-mode/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0yqgp5h3kvvpgva4azakb2wnjl7gsyh45glf75crspv3xyq57f2r"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/joostkremers/writeroom-mode.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "13nbls5qxz5z8firjxaip8m9vzfbbpxmwrmr01njbk4axpwrpj0z"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-visual-fill-column" ,emacs-visual-fill-column)))
@@ -5293,15 +5350,15 @@ ack, ag, helm and pt.")
   (package
     (name "emacs-helm")
     (version "3.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/" name "/helm/archive/v"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0ymykcsbcgq2kskqc0ddigg0kfznxx3j02mkd5r3c3n8gn3kgz84"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/emacs-helm/helm.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1x3nv8zvp8vvl30bm2d83hd7zxb0ca64pc8kwb81ml9al6r3mm01"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-async" ,emacs-async)
@@ -5322,16 +5379,15 @@ not tied in the trap of backward compatibility.")
   (package
     (name "emacs-helm-swoop")
     (version "1.7.4")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/ShingoFukuyama/helm-swoop/archive/"
-                    version
-                    ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1ssivsjzlnkg049cg993l8fp09l5nhpz6asj7w5c91zp5kpc6fh7"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ShingoFukuyama/helm-swoop.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0b23j1bkpg4pm310hqdhgnl4mxsj05gpl08b6kb2ja4fzrg6adsk"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-helm" ,emacs-helm)))
@@ -5346,16 +5402,15 @@ for search-based navigation of buffers.")
   (package
     (name "emacs-helm-projectile")
     (version "0.14.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/bbatsov/helm-projectile/archive/v"
-                    version
-                    ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "19cfmilqh8kbab3b2hmx6lyrj73q6vfmn3p730x95g23iz16mnd5"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/bbatsov/helm-projectile.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0lph38p112fridighqcizpsyzjbv7qr3d8prbfj6w6q6gfl6cna4"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -5379,7 +5434,7 @@ for search-based navigation of buffers.")
          (uri (git-reference
                (url "https://github.com/abo-abo/helm-make.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1y2v77mmd1bfkkz51cnk1l0dg3lvvxc39wlamnm7wjns66dbvlam"))))
@@ -5535,7 +5590,7 @@ news items, openrc and runscripts.")
        (uri (git-reference
              (url "https://github.com/emacs-evil/evil")
              (commit version)))
-       (file-name (string-append name "-" version "-checkout"))
+       (file-name (git-file-name name version))
        (sha256
         (base32
          "1833w397xhac5g3pp25szr2gyvclxy91aw27azvbmsx94pyk2a3q"))))
@@ -5562,7 +5617,7 @@ extensions.")
                 (uri (git-reference
                       (url "https://github.com/emacs-evil/evil-collection")
                       (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
+                (file-name (git-file-name name version))
                 (sha256
                  (base32
                   "09v97nk7qawphfijzqxzi2y63ydmfq7hsgpljjxwkykrc5h0kdlj"))))
@@ -5600,24 +5655,279 @@ go to the second most recent edit, etc.  Negative argument, @kbd{C-u -}, is
 used for reverse direction.")
     (license license:gpl2+)))
 
+(define-public emacs-janpath-evil-numbers
+  (let ((commit "d988041c1fe6e941dc8d591390750b237f71f524")
+        (version "0.5")
+        (revision "1"))
+    (package
+      (name "emacs-janpath-evil-numbers")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/janpath/evil-numbers")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "16zixhxxcb83m82f2cfiardfn99j3w41v6vh1qk6j9pplrlfw70v"))))
+      (build-system emacs-build-system)
+      (propagated-inputs `(("emacs-evil" ,emacs-evil)))
+      (home-page "https://github.com/janpath/evil-numbers")
+      (synopsis "Increment and decrement numeric literals")
+      (description
+       "This package provides functionality to search for a number up to the
+end of a line and increment or decrement it.")
+      (license license:gpl3+))))
+
+(define-public emacs-evil-exchange
+  (let ((commit "47691537815150715e64e6f6ec79be7746c96120")
+        (version "0.41")
+        (revision "1"))
+    (package
+      (name "emacs-evil-exchange")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/Dewdrops/evil-exchange")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0bjpn4yqig17ddym6wqq5fm1b294q74hzcbj9a6gs97fqiwf88xa"))))
+      (build-system emacs-build-system)
+      (propagated-inputs `(("emacs-evil" ,emacs-evil)))
+      (home-page "https://github.com/Dewdrops/evil-exchange")
+      (synopsis "Exchange text easily within Evil")
+      (description
+       "This package, a port of @code{vim-exchange}, provides an Evil operator
+for exchanging text.")
+      (license license:gpl3+))))
+
+(define-public emacs-evil-replace-with-register
+  (let ((commit "91cc7bf21a94703c441cc9212214075b226b7f67")
+        (version "0.1")
+        (revision "1"))
+    (package
+      (name "emacs-evil-replace-with-register")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/Dewdrops/evil-ReplaceWithRegister")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "14rpn76qrf287s3y2agmddcxi27r226i53ixjvd694ss039g0r11"))))
+      (build-system emacs-build-system)
+      (propagated-inputs `(("emacs-evil" ,emacs-evil)))
+      (home-page "https://github.com/Dewdrops/evil-ReplaceWithRegister")
+      (synopsis "Quickly replace text with the contents of a register")
+      (description
+       "This package provides an Evil operator for replacing text with the
+contents of a register.")
+      (license license:gpl3+))))
+
+(define-public emacs-evil-indent-plus
+  (let ((commit "0c7501e6efed661242c3a20e0a6c79a6455c2c40")
+        (version "1.0.0")
+        (revision "1"))
+    (package
+      (name "emacs-evil-indent-plus")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/TheBB/evil-indent-plus")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1g6r1ydscwjvmhh1zg4q3nap4avk8lb9msdqrh7dff6pla0r2qs6"))))
+      (build-system emacs-build-system)
+      (propagated-inputs `(("emacs-evil" ,emacs-evil)))
+      (home-page "https://github.com/TheBB/evil-indent-plus")
+      (synopsis "Text objects based on indentation")
+      (description
+       "This package adds new text objects for @code{evil-mode} based on
+blocks having the same or higher indentation, including or excluding
+surrounding lines.")
+      (license license:gpl2+))))
+
+(define-public emacs-evil-text-object-python
+  (let ((commit "9a064fe6475429145cbcc3b270fcc963b67adb15")
+        (version "1.0.1")
+        (revision "1"))
+    (package
+      (name "emacs-evil-text-object-python")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/wbolster/evil-text-object-python")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "074zpm6mmr1wfl6d5xdf8jk1fs4ccpbzf4ahhkwga9g71xiplszv"))))
+      (build-system emacs-build-system)
+      (propagated-inputs `(("emacs-evil" ,emacs-evil)))
+      (home-page "https://github.com/wbolster/evil-text-object-python")
+      (synopsis "Text objects for Python")
+      (description
+       "This package provides @code{evil-mode} text objects for Python.")
+      (license license:gpl3+))))
+
+(define-public emacs-evil-lion
+  (let ((commit "6b03593f5dd6e7c9ca02207f9a73615cf94c93ab")
+        (version "0.0.2")
+        (revision "1"))
+    (package
+      (name "emacs-evil-lion")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/edkolev/evil-lion")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1a162hynp0jcsn50c1w5a02mrw9w3q05c7lkqzqd25px3d0p772q"))))
+      (build-system emacs-build-system)
+      (propagated-inputs `(("emacs-evil" ,emacs-evil)))
+      (home-page "https://github.com/edkolev/evil-lion")
+      (synopsis "Align operator for @code{evil-mode}")
+      (description
+       "This package, a port of @code{vim-lion}, provides an operator for
+aligning text objects based on separators.")
+      (license license:gpl3+))))
+
+(define-public emacs-evil-expat
+  (let ((commit "4c344ea19b789002d759a202ffbf594730d2c59a")
+        (version "0.0.1")
+        (revision "1"))
+    (package
+      (name "emacs-evil-expat")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/edkolev/evil-expat")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "16v7fnldxag6l1lsnrnhdjkga9qi78lbdfbb82k6pmv04991mbkr"))))
+      (build-system emacs-build-system)
+      (propagated-inputs `(("emacs-evil" ,emacs-evil)))
+      (home-page "https://github.com/edkolev/evil-expat")
+      (synopsis "Extra @code{ex} commands for @code{evil-mode}")
+      (description
+       "This package provides additional commands for the @code{ex} command
+line, including functions for version control with Git and for copying and
+pasting into and from @code{tmux} paste buffers.")
+      (license license:gpl3+))))
+
+(define-public emacs-evil-nerd-commenter
+  (package
+    (name "emacs-evil-nerd-commenter")
+    (version "3.3.6")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/redguardtoo/evil-nerd-commenter")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0074i9lvfs5hkbf63g1xh3n7dbmkax30bppkx2cd394c7zlsvzzk"))))
+    (build-system emacs-build-system)
+    (propagated-inputs `(("emacs-evil" ,emacs-evil)))
+    (home-page "https://github.com/redguardtoo/evil-nerd-commenter")
+    (synopsis "Comment and uncomment lines efficiently")
+    (description
+     "This package provides text objects and operators for comments within
+@code{evil-mode}.")
+    (license license:gpl3+)))
+
+(define-public emacs-evil-visual-replace
+  (package
+    (name "emacs-evil-visual-replace")
+    (version "0.0.5")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/troyp/evil-visual-replace")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1gfyrq7xfzmzh3x8k5f08n027dlbwi0pkkxf9c39fkxp4jngibsz"))))
+    (build-system emacs-build-system)
+    (propagated-inputs `(("emacs-evil" ,emacs-evil)))
+    (home-page "https://github.com/troyp/evil-visual-replace")
+    (synopsis "Replacement commands for @code{evil-mode} visual blocks")
+    (description
+     "This package provides versions of @code{query-replace} and
+@code{replace-regexp} that work for @code{evil-mode} visual blocks.")
+    (license license:gpl2+)))
+
+(define-public emacs-evil-visualstar
+  (let ((commit "06c053d8f7381f91c53311b1234872ca96ced752")
+        (version "0.0.2")
+        (revision "1"))
+    (package
+      (name "emacs-evil-visualstar")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/bling/evil-visualstar")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0mkbzw12fav945icibc2293m5haxqr3hzkyli2cf4ssk6yvn0x4c"))))
+      (build-system emacs-build-system)
+      (propagated-inputs `(("emacs-evil" ,emacs-evil)))
+      (home-page "https://github.com/bling/evil-visualstar")
+      (synopsis "Instantly search using the visual selection")
+      (description
+       "This package provides @code{evil-mode} functions for using selected text
+to search.")
+      (license license:gpl3+))))
+
 (define-public emacs-monroe
   (package
     (name "emacs-monroe")
     (version "0.3.1")
     (source
-      (origin
-        (method url-fetch)
-        (uri (string-append "https://github.com/sanel/monroe/archive/"
-                            version ".tar.gz"))
-        (file-name (string-append name "-" version ".tar.gz"))
-        (sha256
-          (base32
-            "0icdx8shkd951phlnmcq1vqaxp1l667q5rjscskc5r22aylakh4w"))))
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/sanel/monroe.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "101lfrykdbv37spkbw7zihhx26bc1lhjyxbanrcp9880bxj04jiy"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/sanel/monroe")
     (synopsis "Clojure nREPL client for Emacs")
     (description
-      "Monroe is a nREPL client for Emacs, focused on simplicity and easy
+     "Monroe is a nREPL client for Emacs, focused on simplicity and easy
 distribution, primarily targeting Clojure users")
     (license license:gpl3+)))
 
@@ -5812,7 +6122,7 @@ known loosely as deftheme.  Many mode-specific customizations are included.")
          (uri (git-reference
                (url home-page)
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "0s6rbsb0y8i8m5b9xm4gw1p1cxsxdqnqxqqb638pygz9f76mbir1"))))
@@ -5840,7 +6150,7 @@ known loosely as deftheme.  Many mode-specific customizations are included.")
          (uri (git-reference
                (url "https://github.com/djcb/dream-theme")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "0za18nfkq4xqm35k6006vsixcbmvmxqgma4iw5sw37h8vmcsdylk"))))
@@ -5884,14 +6194,13 @@ extensibility.")
     (version "1.1.9")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/ajc/nginx-mode/archive/v"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ajc/nginx-mode.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0bzyrj6zz1hm67bkhw23bam7qc869s3zg7m1rb1c3aa4n0aw90cq"))))
+        (base32 "17dh5pr3gh6adrbqx588gimxbb2fr7iv2qrxv6r48w2727l344xs"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/ajc/nginx-mode")
     (synopsis "Emacs major mode for editing nginx config files")
@@ -5947,14 +6256,13 @@ procedures for emacs-lisp-mode.")
     (version "2.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/Wilfred/ht.el/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Wilfred/ht.el.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0fsi27gdrh2dgwdbq43vnw5sz25war6shlxaclr60fl7krpxjkzf"))))
+        (base32 "1p3qa7g0wa0wbviv2f8bda39cjys3naayk5xjm3nxxmqsyy8papx"))))
     (build-system emacs-build-system)
     (propagated-inputs `(("emacs-dash" ,emacs-dash)))
     (home-page "https://github.com/Wilfred/ht.el")
@@ -5970,14 +6278,13 @@ provides functions to convert hash tables from and to alists and plists.")
     (version "0.3.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/aki2o/log4e/archive/v"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/aki2o/log4e.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0nbdpbw353snda3v19l9hsm6gimppwnpxj18amm350bm81lyim2g"))))
+        (base32 "1l28n7a0v2zkknc70i1wn6qb5i21dkhfizzk8wcj28v44cgzk022"))))
     (build-system emacs-build-system)
     (arguments
      `(#:phases
@@ -6001,14 +6308,13 @@ you to deal with multiple log levels.")
     (version "0.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/tekai/gntp.el/archive/v"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/tekai/gntp.el.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "16c1dfkia9yhl206bdhjr3b8kfvqcqr38jl5lq8qsyrrzsnmghny"))))
+        (base32 "1nvyjjjydrimpxy4cpg90si7sr8lmldbhlcm2mx8npklp9pn5y3a"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/tekai/gntp.el")
     (synopsis "Growl Notification Protocol for Emacs")
@@ -6025,14 +6331,13 @@ notifications.")
     (version "1.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/jwiegley/alert/archive/v"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/jwiegley/alert.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1693kck3k2iz5zhpmxwqyafxm68hr6gzs60lkxd3j1wlp2c9fwyr"))))
+        (base32 "1vpc3q40m6dcrslki4bg725j4kv6c6xfxwjjl1ilg7la49fwwf26"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-gntp" ,emacs-gntp)
@@ -6080,14 +6385,13 @@ is, in effect, a (typically) noncontiguous set of text.")
     (version "1.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/iqbalansari/mu4e-alert/archive/v"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/iqbalansari/mu4e-alert.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "07qc834qnxn8xi4bw5nawj8g91bmkzw0r0vahkgysp7r9xrf57gj"))))
+        (base32 "1nvsfbfsma59ilf7c3vjngnmx3aapwvvvaafdy5szm5r6lkicqvg"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-alert" ,emacs-alert)
@@ -6166,7 +6470,7 @@ abbreviation and automatically expand it into function templates.")
          (uri (git-reference
                (url "https://github.com/AndreaCrotti/yasnippet-snippets")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1m935zgglw0iakzrixld5rcjz3wnj84f8wy2mvc3pggjri9l0qr9"))))
@@ -6212,7 +6516,7 @@ To make YASnippet aware of these snippets, add the above directory to
                 (uri (git-reference
                       (url "https://github.com/emacs-jp/helm-c-yasnippet")
                       (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
+                (file-name (git-file-name name version))
                 (sha256
                  (base32
                   "1cbafjqlzxbg19xfdqsinsh7afq58gkf44rsg1qxfgm8g6zhr7f8"))))
@@ -6274,14 +6578,13 @@ above over the network.")
     (version "1.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/skeeto/emacs-memoize/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/skeeto/emacs-memoize.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "05ijgwi4ymxx31vpjm2pn356j85cykknajn14lrzz8pn5sh0vrg4"))))
+        (base32 "04qgnlg4x6va7x364dhj1wbjmz8p5iq2vk36mn9198k2vxmijwzk"))))
     (build-system emacs-build-system)
     (arguments
      `(#:tests? #t
@@ -6300,14 +6603,13 @@ memoizing functions.")
     (version "0.5")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/coldnew/linum-relative/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/coldnew/linum-relative.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0s4frvr27866lw1rn3jal9wj5rkz9fx4yiszqv7w06azsdgsqksv"))))
+        (base32 "11bjnqqwvr9zrvz5dlm8a0yw4zg9ysh3jdiq5a6iw09d3f0h1v2s"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/coldnew/linum-relative")
     (synopsis "Relative line numbering for Emacs")
@@ -6321,14 +6623,13 @@ number on the left margin in Emacs.")
     (version "1.1.3")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/nonsequitur/idle-highlight-mode/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/nonsequitur/idle-highlight-mode.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0kdv10hrgqpskjh0zvpnzwlkn5bccnqxas62gkws6njln57bf8nl"))))
+        (base32 "0x4w1ksrw7dicl84zpf4d4scg672dyan9g95jkn6zvri0lr8xciv"))))
     (build-system emacs-build-system)
     (home-page "https://www.emacswiki.org/emacs/IdleHighlight")
     (synopsis "Highlights all occurrences of the word the point is on")
@@ -6344,14 +6645,13 @@ number on the left margin in Emacs.")
     (version "1.1.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/marsmining/ox-twbs/archive/v"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/marsmining/ox-twbs.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1zaq8dczq5wijjk36114k2x3hfrqig3lyx6djril6wyk67vczyqs"))))
+        (base32 "0kd45p8y7ykadmai4jn1x1pgpafyqggwb1ccbjzalxw4k9wmd45f"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/marsmining/ox-twbs")
     (synopsis "Export org-mode docs as HTML compatible with Twitter Bootstrap")
@@ -6368,14 +6668,13 @@ jQuery and Bootstrap resources included via osscdn.")
     (version "1.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/daimrod/highlight-sexp/archive/v"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/daimrod/highlight-sexp.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0jwx87qkln1rg9wmv4qkgkml935fh2pkgrg5x4ca6n5dgb4q6rj1"))))
+        (base32 "12cyk2q5g6p4ac2hykw1cag7dp1prjjnck5f7nalwwaklmy62y79"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/daimrod/highlight-sexp")
     (synopsis "Minor mode that highlights the s-exp at the current position")
@@ -6395,7 +6694,7 @@ jQuery and Bootstrap resources included via osscdn.")
          (uri (git-reference
                (url "https://github.com/zk-phi/highlight-stages.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "0r6nbcrr0dqpgm8dir8ahzjy7rw4nrac48byamzrq96r7ajlxlv0"))
@@ -6542,14 +6841,13 @@ the hunks and revert them selectively.")
     (version "0.45")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/myrjola/diminish.el/archive/v"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/myrjola/diminish.el.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0i3629sv5cfrrb00hcnmaqzgs8mk36yasc1ax3ry1ga09nr6rkj9"))))
+        (base32 "0qpgfgp8hrzz4vdifxq8h25n0a0jlzgf7aa1fpy6r0080v5rqbb6"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/myrjola/diminish.el")
     (synopsis "Diminish minor modes with no modeline display")
@@ -6598,7 +6896,7 @@ performance-oriented and tidy.")
                 (uri (git-reference
                       (url "https://github.com/pkmoore/strace-mode")
                       (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
+                (file-name (git-file-name name version))
                 (sha256
                  (base32
                   "1lbk2kzdznf2bkfazizfbimaxxzfzv00lrz1ran9dc2zqbc0bj9f"))))
@@ -6642,14 +6940,13 @@ source file, @file{jl-encrypt.el}.")
     (version "1.53")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/hniksic/emacs-htmlize/archive/release/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/hniksic/emacs-htmlize.git")
+             (commit (string-append "release/" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1lzaf9m1qr9dhw4nn53g6wszk2vqw95gpsbrc3y85bams4cn24ga"))))
+        (base32 "0dr235c0z8is3pi5xdgqyqljg6px0b2aya6qb79zkyi477bmz4ip"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/hniksic/emacs-htmlize")
     (synopsis "Convert buffer text and decorations to HTML")
@@ -6664,14 +6961,13 @@ fonts is supported.")
     (version "0.5")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/philjackson/xmlgen/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/philjackson/xmlgen.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0zay490vjby3f7455r0vydmjg7q1gwc78hilpfb0rg4gwz224z8r"))))
+        (base32 "096i29v0badx0a6339h9ckdz78zj59gbjdp7vj7vhkq9d830392s"))))
     (build-system emacs-build-system)
     (arguments
      `(#:tests? #t
@@ -6691,14 +6987,13 @@ conversion for Emacs Lisp.")
     (version "4.7")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/cdominik/cdlatex/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/cdominik/cdlatex.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0pivapphmykc6vhvpx7hdyl55ls37vc4jcrxpvs4yk7jzcmwa9xp"))))
+        (base32 "1jj9vmhc4s3ych08bjm1c2xwi81z1p20rj7bvxrgvb5aga2ghi9d"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-auctex" ,emacs-auctex)))
@@ -6716,15 +7011,15 @@ constructs.")
   (package
     (name "emacs-cnfonts")
     (version "0.9.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/tumashu/cnfonts/archive/v"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1l6cgcvc6md1zq97ccczankpyi0k4vjx6apflny6kjq3p33lyhf4"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/tumashu/cnfonts.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "11d44lf0m0kbzq1mvyqkl4aprys0xqaarp08nij57xnynin1rynx"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/tumashu/cnfonts")
     (synopsis "Emacs Chinese fonts setup tool")
@@ -6759,15 +7054,15 @@ browser.")
   (package
     (name "emacs-pos-tip")
     (version "0.4.6")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/pitkali/pos-tip/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "12jqfy26vjk7lq0aa8yn8zqj8c85fkvx7y9prj0pcn4wqiz2ad2r"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/pitkali/pos-tip.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0w8bnspnk871qndp18hs0wk4x9x31xr9rwbvf5dc8mcbnj29ch33"))))
     (build-system emacs-build-system)
     ;; The following functions and variables needed by emacs-pos-tip are
     ;; not included in emacs-minimal:
@@ -6785,15 +7080,15 @@ function to be used by other frontend programs.")
   (package
     (name "emacs-pyim-basedict")
     (version "0.3.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/tumashu/pyim-basedict/archive/v"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0nfgxviavkgrpyfsw60xsws4fk51fcmgl8fp6zf4ibqjjbp53n3n"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/tumashu/pyim-basedict.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0576r8ap9gp91ycjf1d47pn13kxp0f9fysn09zlq44hr0s1y2y5d"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/tumashu/pyim-basedict")
     (synopsis "Input method dictionary of pyim")
@@ -6853,15 +7148,15 @@ posframe is a child frame displayed within its root window's buffer.
   (package
     (name "emacs-el2org")
     (version "0.6.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/tumashu/el2org/archive/v"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0gd3km1swwvg2w0kdi7370f54wgrflxn63gjgssfjc1iyc9sbqwq"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/tumashu/el2org.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0mzddqny6wpg1fv99xrvlv7rxmaifvmy5bvj4in4pldhm4cx4q1b"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/tumashu/el2org")
     (synopsis "Convert Emacs-lisp file to org file")
@@ -6873,15 +7168,15 @@ to org file, you can use this tool to write orgify commentary.")
   (package
     (name "emacs-mustache")
     (version "0.23")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/Wilfred/mustache.el/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0k9lcgil7kykkv1ylrgwy1g13ldjjmgi2cwmysgyb2vlj3jbwpdj"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Wilfred/mustache.el.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1n2ymd92qpvsby6ms0l3kjhdzzc47rri2aiscc6bs07hm4mjpr9q"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -6900,15 +7195,15 @@ and lambdas.")
   (package
     (name "emacs-org2web")
     (version "0.9.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/tumashu/org2web/archive/v"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1c0ixcphlhp4c4qdiwq40bc3yp1gp1llp8pxrk4s7ny9n68s52zp"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/tumashu/org2web.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0wsvfn409a2ivbich8b8zqza78sprirg4bl7igx536ydqclmi0n7"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -7125,14 +7420,13 @@ on mouse-control.")
     (version "0.7.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/bruceravel/gnuplot-mode/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/bruceravel/gnuplot-mode.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0glzymrn138lwig7p4cj17x4if5jisr6l4g6wcbxisqkqgc1h01i"))))
+        (base32 "0bwri3cvm2vr27kyqkrddm28fs08axnd4nm9amfgp54xp20bn4yn"))))
     (build-system gnu-build-system)
     (native-inputs `(("emacs" ,emacs-minimal)))
     (arguments
@@ -7207,14 +7501,13 @@ pressed simultaneously or a single key quickly pressed twice.")
     (version "1.0.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/timcharper/evil-surround/archive/v"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/timcharper/evil-surround.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0p572jgic3q1ia1nz37kclir729ay6i2f4sa7wnaapyxly2lwb3r"))))
+        (base32 "1smv7sqhm1l2bi9fmispnlmjssidblwkmiiycj1n3ag54q27z031"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-evil" ,emacs-evil)))
@@ -7230,14 +7523,13 @@ addition of surrounding pairs, such as parantheses and quotes, in evil mode.")
     (version "2.1.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/linktohack/evil-commentary/archive/v"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/linktohack/evil-commentary.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1jdya0i921nwskwrzdsj0vrr3m7gm49dy6f6pk9p5nxaarfxk230"))))
+        (base32 "0zjs9zyqfygnpxapvf0ymmiid40i06cxbhjzd81zw33nafgkf6r4"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-evil" ,emacs-evil)))
@@ -7256,13 +7548,13 @@ lines, and @code{gc} to comment out the target of a motion.")
     (version "0.4.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/rejeep/ansi.el/archive/v"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rejeep/ansi.el.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "13jj4vbi98j3p17hs99bmy7g21jd5h4v3wpxk4pkvhylm3bfwjw8"))))
+        (base32 "1hbddxarr40ygvaw4pwaivq2l4f0brszw73w1r50lkjlggb7bl3g"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -7283,13 +7575,13 @@ as bold, underscore or italic.")
     (version "0.7.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/rejeep/commander.el/archive/v"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rejeep/commander.el.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "196s2i15z7gwxa97l1wkxvjnfmj5n38wwm6d3g4zz15l2vqggc2y"))))
+        (base32 "1j6hhyzww7wfwk6bllbb5mk4hw4qs8hsgfbfdifsam9c6i4spm45"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -7366,14 +7658,13 @@ running tests easier.")
     (version "0.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/purcell/disable-mouse/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/purcell/disable-mouse.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0haqpq23r1wx04lsqrrg3p5visg9hx5i36dg55ab003wfsrlrzbc"))))
+        (base32 "1v1y5hf6k6ng7xsvgb27nh740d14m6l4krr0paccda8zgm4mw357"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/purcell/disable-mouse")
     (synopsis "Disable mouse commands globally")
@@ -7389,13 +7680,13 @@ running a customisable handler command (@code{ignore} by default). ")
     (version "0.0.6")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/gongo/json-reformat/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/gongo/json-reformat.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "11fbq4scrgr7m0iwnzcrn2g7xvqwm2gf82sa7zy1l0nil7265p28"))
+        (base32 "0qp4n2k6s69jj4gwwimkpadjv245y54wk3bxb1x96f034gkp81vs"))
        (patches (search-patches "emacs-json-reformat-fix-tests.patch"))))
     (build-system emacs-build-system)
     (propagated-inputs
@@ -7409,6 +7700,10 @@ running a customisable handler command (@code{ignore} by default). ")
        #:test-command '("ert-runner")
        #:phases
        (modify-phases %standard-phases
+         (add-before 'check 'make-tests-writable
+           (lambda _
+             (for-each make-file-writable (find-files "test"))
+             #t))
          (add-before 'check 'delete-json-objects-order-test
            (lambda _
              (emacs-batch-edit-file "test/json-reformat-test.el"
@@ -7431,13 +7726,13 @@ running a customisable handler command (@code{ignore} by default). ")
     (version "1.0.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/Sterlingg/json-snatcher/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Sterlingg/json-snatcher.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1nfiwsifpdiz0lbrqa77nl0crnfrv5h85ans9b0g5rggnmyshcfb"))))
+        (base32 "05zsgnk7grgw9jzwl80h5sxfpifxlr37b4mkbvx7mjq4z14xc2jw"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/sterlingg/json-snatcher")
     (synopsis "Grabs the path to JSON values in a JSON file")
@@ -7451,13 +7746,13 @@ a @url{http://json.org/, JSON} file.")
     (version "1.7.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/joshwnj/json-mode/archive/"
-                           "v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/joshwnj/json-mode.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "06h45p4cn767pk9sqi2zb1c65wy5gyyijqxzpglp80zwxhvajdz5"))))
+        (base32 "0i79lqzdg59vkqwjd3q092xxn9vhxspb1vn4pkis0vfvn46g01jy"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-json-reformat" ,emacs-json-reformat)
@@ -7547,7 +7842,7 @@ the actual transformations.")
                 (uri (git-reference
                       (url "https://github.com/Fuco1/dired-hacks.git")
                       (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
+                (file-name (git-file-name name version))
                 (sha256
                  (base32
                   "1g7mky41cahpryzj6frdgzdymknpqq7pidzfjj9304887kijmhj3"))))
@@ -7606,14 +7901,13 @@ or @code{treemacs}, but leveraging @code{Dired} to do the job of display.")
     (version "3.3.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/justbur/emacs-which-key/archive/v"
-             version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/justbur/emacs-which-key.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1g8k0js21bc8mlw6hvmg93zgfjhil77c30cv1hf85y4qb9ldvika"))
-       (file-name (string-append name "-" version ".tar.gz"))))
+        (base32 "1dh6kr00wmql46whjkvnl953zngiv5j99ypvr1b3cb2174623afb"))))
     (build-system emacs-build-system)
     (arguments
      `(#:tests? #t
@@ -7640,7 +7934,7 @@ settings).")
               (uri (git-reference
                     (url "https://github.com/lewang/ws-butler.git")
                     (commit "323b651dd70ee40a25accc940b8f80c3a3185205")))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "1a4b0lsmwq84qfx51c5xy4fryhb1ysld4fhgw2vr37izf53379sb"))))
@@ -7663,14 +7957,13 @@ characters from end of lines.")
     (version "0.8.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/et2010/org-edit-latex/archive/v"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/et2010/org-edit-latex.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1y4h6wrs8286h9pbsv4d8fr67a885vz8b2k80qgv5qddipi2i78p"))))
+        (base32 "0zcllyhx9n9vcr5w87h0hfz25v52lvh5fi717cb7mf3jh89zh842"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-auctex" ,emacs-auctex)
@@ -7688,15 +7981,15 @@ src block.")
   (package
     (name "emacs-emamux")
     (version "0.14")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/syohex/emacs-emamux/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0wlqg4icy037bj70b0qmhvwvmiwhagpnx6pnxhq6gzy1hvwlilkx"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/syohex/emacs-emamux.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "19y69qw79miim9cz5ji54gwspjkcp9g2c1xr5s7jj2fiabnxax6b"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/syohex/emacs-emamux")
     (synopsis "Manipulate Tmux from Emacs")
@@ -7734,14 +8027,13 @@ editing RPM spec files.")
     (version "0.18")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/syohex/emacs-git-messenger/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/syohex/emacs-git-messenger.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "17mqki6g0wx46fn7dcbcc2pjxik7vvrcb1j9jzxim8b9psbsbnp9"))))
+        (base32 "04fnby2nblk8l70gv09asxkmnn53fh1pdfs77ix44npp99fyw8ix"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-popup" ,emacs-popup)))
@@ -7763,13 +8055,13 @@ internally.")
     (version "0.5.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/tumashu/gitpatch/archive/"
-                           "v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/tumashu/gitpatch.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1yj6pmic541lcnscjin300k380qp9xdfprs55xg1q57jrkq6f6k7"))))
+        (base32 "1jj12pjwza6cq8a3kr8nqnmm3vxs0wam8h983irry4xr4ifywsn4"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/tumashu/gitpatch")
     (synopsis "Mail git patch from Emacs")
@@ -7811,13 +8103,13 @@ the nick color and the background color
     (version "2.0.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/hrs/engine-mode/archive/"
-                           "v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/hrs/engine-mode.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1vm4p7pcp1vnwwxvps1bhm7i7hkabqqxl898knxf2hqvxys76684"))))
+        (base32 "02xas46nl28mascqsyr1zcd4hn15bh0fjv2xlxv1kmrj0pis94ml"))))
     (build-system emacs-build-system)
     (synopsis "Minor mode for defining and querying search engines")
     (description "@code{engine-mode} is a global minor mode for Emacs.  It
@@ -7889,14 +8181,13 @@ Idris.")
     (version "0.10.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/rmuslimov/browse-at-remote/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rmuslimov/browse-at-remote.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0ymslsp6i1naw25zckv25bf4aaq6qwkbkn95qyzlwg869l802686"))))
+        (base32 "0vhia7xmszcb3lxrb8wh93a3knjfzj48h8nhj4fh8zj1pjz6args"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-f" ,emacs-f)
@@ -7979,7 +8270,7 @@ well as Github-style emojis like @code{:smile:}.  It provides a minor mode
        (uri (git-reference
              (url "https://github.com/ahyatt/emacs-websocket.git")
              (commit version)))
-       (file-name (string-append name "-" version "-checkout"))
+       (file-name (git-file-name name version))
        (sha256
         (base32
          "1dgrf7na6r6mmkknphzshlbd5fnzisg0qn0j7vfpa38wgsymaq52"))))
@@ -8110,25 +8401,28 @@ messaging service.")
    (version "2.1.0")
    (source
     (origin
-      (method url-fetch)
-      (uri (string-append
-            "https://github.com/szermatt/emacs-bash-completion/archive/v"
-            version ".tar.gz"))
-      (file-name (string-append name "-" version ".tar.gz"))
+      (method git-fetch)
+      (uri (git-reference
+            (url "https://github.com/szermatt/emacs-bash-completion.git")
+            (commit version)))
+      (file-name (git-file-name name version))
       (sha256
-       (base32
-        "1z0qck3v3ra6ivacn8n04w1v33a4xn01xx860761q31qzsv3sksq"))))
+       (base32 "1a1wxcqzh0javjmxwi3lng5i99xiylm8lm04kv4q1lh9bli6vmv0"))))
    (inputs `(("bash" ,bash)))
    (build-system emacs-build-system)
    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'install 'configure
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((bash (assoc-ref inputs "bash")))
-               (emacs-substitute-variables "bash-completion.el"
-                 ("bash-completion-prog" (string-append bash "/bin/bash"))))
-             #t)))))
+    `(#:phases
+      (modify-phases %standard-phases
+        (add-after 'unpack 'make-git-checkout-writable
+          (λ _
+            (for-each make-file-writable (find-files "."))
+            #t))
+        (add-before 'install 'configure
+          (lambda* (#:key inputs #:allow-other-keys)
+            (let ((bash (assoc-ref inputs "bash")))
+              (emacs-substitute-variables "bash-completion.el"
+                ("bash-completion-prog" (string-append bash "/bin/bash"))))
+            #t)))))
    (home-page "https://github.com/szermatt/emacs-bash-completion")
    (synopsis "Bash completion for the shell buffer")
    (description
@@ -8181,15 +8475,15 @@ in a generalized CSV (character-separated values) format.")
   (package
     (name "emacs-transmission")
     (version "0.12.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/holomorph/transmission/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1rrlgn96gi1ljfwbwvlyyxbq75xzamlbdhq1bpyadxxmxcvlmk3n"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/holomorph/transmission.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0kvg2gawsgy440x1fsl2c4pkxwp3zirq9rzixanklk0ryijhd3ry"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/holomorph/transmission")
     (synopsis "Emacs interface to a Transmission session")
@@ -8272,31 +8566,25 @@ for external literate programming tools for exporting, weaving and tangling.")
   (package
     (name "eless")
     (version "0.3")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/kaushalmodi/eless/archive/"
-                    "v" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0gjnnhgw5xs1w3qfnkvwa2nv44gnxr8pkhx3c7qig45p8nh1461h"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/kaushalmodi/eless.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0jr7vhh4vw69llhi0fh9ljscljkszkj0acdxl04da5hvqv6pnqbb"))))
     (build-system trivial-build-system)
     (inputs
      `(("bash" ,bash)))
-    (native-inputs
-     `(("tar" ,tar)
-       ("gzip" ,gzip)))
     (arguments
      `(#:modules ((guix build utils))
        #:builder
        (begin
          (use-modules (guix build utils))
-         (setenv "PATH" (string-append
-                         (assoc-ref %build-inputs "tar") "/bin" ":"
-                         (assoc-ref %build-inputs "gzip") "/bin"))
-         (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
-         (chdir (string-append "eless" "-" ,version))
+         (copy-recursively (assoc-ref %build-inputs "source") "source")
+         (chdir "source")
          (substitute* "eless" (("/usr/bin/env bash")
                                (string-append (assoc-ref %build-inputs "bash")
                                               "/bin/bash")))
@@ -8332,14 +8620,13 @@ Feautures:
     (version "2.2.9")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/redguardtoo/evil-matchit/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/redguardtoo/evil-matchit.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1i5a7szl0m3xnqyjq6zhg5j68x9fgf9ffxghj918c4brj4436sjb"))))
+        (base32 "12if45pxfndy3d7r4gd3zx4d3jk4d64fdmwkhc3y5zhqq9h9iy4c"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-evil" ,emacs-evil)))
@@ -8356,14 +8643,13 @@ evil mode using @kbd{%}.  It is a port of @code{matchit} for Vim.")
     (version "0.4.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/expez/evil-smartparens/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/expez/evil-smartparens.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1bwzdd3054d407d5j4m3njsbvmc9r8zzp33m32pj3b3irxrl68q0"))))
+        (base32 "1di4qz5fbrlwbg16c2j0m7y8zqfxw027qd7zqmc3rwk9znbhg7wl"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-evil" ,emacs-evil)
@@ -8381,13 +8667,13 @@ emulates Vim features and provides Vim-like key bindings.")
     (version "0.1.4")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/blorbx/evil-quickscope/archive/v"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/blorbx/evil-quickscope.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1r26a412mmar7vbf89zcifswiwpdg30mjzj32xdyqss57aqi83ma"))))
+        (base32 "1ja9ggj70wf0nmma4xnc1zdzg2crq9h1cv3cj7cgwjmllflgkfq7"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-evil" ,emacs-evil)))
@@ -8410,14 +8696,13 @@ features and provides Vim-like key bindings.")
     (version "1.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/dbrock/bongo/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/dbrock/bongo.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1pcsyyrvj7djjjwpaswd1i782hvqvlvs39cy9ns0k795si6xd64d"))))
+        (base32 "1q3ws2vn062dh7ci6jn2k2bcn7szh3ap64sgwkzdd6f1pas37fnr"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/dbrock/bongo")
     (synopsis "Media player for Emacs")
@@ -8525,7 +8810,7 @@ formatting rules for that language.")
        (uri (git-reference
              (url "https://github.com/nicferrier/emacs-kv.git")
              (commit "721148475bce38a70e0b678ba8aa923652e8900e")))
-       (file-name (string-append name "-" version "-checkout"))
+       (file-name (git-file-name name version))
        (sha256
         (base32
          "0r0lz2s6gvy04fwnafai668jsf4546h4k6zd6isx5wpk0n33pj5m"))))
@@ -8641,40 +8926,34 @@ Features:
     (version "0.1.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/cute-jumper/epipe/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/cute-jumper/epipe.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "05a036852g4j63k1mhvyfrcsgkl9lczayi7x61570ysw3cli5wp5"))))
+        (base32 "0lkisi1s7sn12nx8zh58qmsxwnk1rjwryj18wcbr148xqz3swg57"))))
     (build-system trivial-build-system)
     (inputs
      `(("bash" ,bash)
        ("perl" ,perl)))
-    (native-inputs
-     `(("tar" ,tar)
-       ("gzip" ,gzip)))
     (arguments
      `(#:modules
        ((guix build utils))
        #:builder
        (begin
          (use-modules (guix build utils))
-         ;; Extract source
-         (setenv "PATH" (string-append
-                         (assoc-ref %build-inputs "tar") "/bin" ":"
-                         (assoc-ref %build-inputs "gzip") "/bin"))
-         (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
-         (chdir (string-append ,name "-" ,version))
-         ;; Patch shebangs
+         ;; Extract source.
+         (copy-recursively (assoc-ref %build-inputs "source") "source")
+         (chdir "source")
+         ;; Patch shebangs.
          (substitute* "epipe"
            (("/usr/bin/env bash")
             (string-append (assoc-ref %build-inputs "bash") "/bin/bash")))
          (patch-shebang "epipe.pl"
                         (list (string-append (assoc-ref %build-inputs "perl")
                                              "/bin")))
-         ;; Installation
+         ;; Install.
          (for-each (lambda (file)
                      (install-file file (string-append %output "/bin")))
                    '("epipe" "epipe.pl"))
@@ -8691,14 +8970,13 @@ the pipeline, featuring the support for running @code{emacsclient}.")
     (version "0.03")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/syohex/emacs-hcl-mode/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/syohex/emacs-hcl-mode.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0pvw74qpwh0znqzp6syp4wxjqs7dp1hbn5h7xfk97mff9l5d8k6x"))))
+        (base32 "0jqrgq15jz6pvx38pnwkizzfiih0d3nxqphyrc92nqpcyimg8b6g"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/syohex/emacs-hcl-mode")
     (synopsis "Major mode for the Hashicorp Configuration Language")
@@ -8714,14 +8992,13 @@ highlighting and indentation support.")
     (version "0.06")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/syohex/emacs-terraform-mode/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/syohex/emacs-terraform-mode.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0h9267ifdjmcin4sj8slxydbacx4bqicbvg8pa1qq2l72h9m5381"))))
+        (base32 "05hn8kskx9lcgn7bzgam99c629zlryir2pickwrqndacjrqpdykx"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-hcl-mode" ,emacs-hcl-mode)))
@@ -8784,13 +9061,13 @@ directories of plain text notes, inspired by Notational Velocity.")
     (version "0.62")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/syohex/emacs-anzu/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/syohex/emacs-anzu.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "16cg3897x5znbmgk7sdy0qyd0fbic9dmmz0dchq2vz5z29yhg4cz"))))
+        (base32 "1lzvc0ihcbplir4hqfyxfqpsd78arz15gk92kmq4f8ggbkl37fan"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/syohex/emacs-anzu")
     (synopsis "Show number of matches in mode-line while searching")
@@ -8886,15 +9163,15 @@ standard Unix password manager\").")
   (package
     (name "emacs-pass")
     (version "1.8")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/NicolasPetton/pass/archive/"
-                    version ".tar.gz"))
-              (sha256
-               (base32
-                "0aiz90gklk0cb8n4v1s3l0mx6pp2b7f4k2c0fjpihwmga13yklwn"))
-              (file-name (string-append name "-" version ".tar.gz"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/NicolasPetton/pass.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "05h4hacv3yygyjcjj004qbyqjpkl4pyhwgp25gsz8mw5c66l70cx"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-password-store" ,emacs-password-store)
@@ -8975,13 +9252,13 @@ match and total match information in the mode-line in various search modes.")
   (version "2.0.0")
   (source
     (origin
-      (method url-fetch)
-      (uri (string-append "https://github.com/skeeto/elisp-finalize/archive/"
-                          version ".tar.gz"))
-      (file-name (string-append name "-" version ".tar.gz"))
+      (method git-fetch)
+      (uri (git-reference
+            (url "https://github.com/skeeto/elisp-finalize.git")
+            (commit version)))
+      (file-name (git-file-name name version))
       (sha256
-        (base32
-         "077fycy3i5f0kjw5z3rhf4kld5lbk2idz690nkwhkz04vppk4q4x"))))
+        (base32 "1gvlm4i62af5jscwz0jccc8ra0grprxpg2rlq91d5nn8dn5lpy79"))))
   (build-system emacs-build-system)
   (propagated-inputs
     `(("emacs-cl-generic" ,emacs-cl-generic)))
@@ -9150,13 +9427,13 @@ Emacs.")
     (version "0.9")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/purcell/elisp-slime-nav/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/purcell/elisp-slime-nav.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1vq7ym1q47p97gxrv45c9gm96d23xbp237vkmakikj6grngxjfb2"))))
+        (base32 "11vyy0bvzbs1h1kggikrvhd658j7c730w0pdp6qkm60rigvfi1ih"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/purcell/elisp-slime-nav")
     (synopsis "Make @code{M-.} and @code{M-,} work for elisp like they do in SLIME")
@@ -9170,16 +9447,15 @@ in @code{emacs-lisp-mode}, together with an elisp equivalent of
   (package
     (name "emacs-dedicated")
     (version "1.0.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/emacsorphanage/dedicated/archive/"
-                    version
-                    ".tar.gz"))
-              (sha256
-               (base32
-                "0nhbkp278cvcznb5rp3jp9ii3mjgb79zx8iwfrw7zfk3yg8688ni"))
-              (file-name (string-append name "-" version ".tar.gz"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/emacsorphanage/dedicated.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0pba9s0h37sxyqh733vi6k5raa4cs7aradipf3826inw36jcw414"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/emacsorphanage/dedicated")
     (synopsis "Emacs minor mode for toggling a windows's \"dedicated\" flag")
@@ -9204,7 +9480,7 @@ the source file.")
                 (uri (git-reference
                       (url "https://github.com/paul-issartel/nnreddit.git")
                       (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
+                (file-name (git-file-name name version))
                 (sha256
                  (base32
                   "0j4h3bnga640250jdq8bwyja49r41ssrsjd6lba4gzzllqk02nbn"))))
@@ -9221,13 +9497,13 @@ newsreader.")
     (version "0.3")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/mickeynp/makey/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mickeynp/makey.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0kzl4q1wf2zhkx9nrymxa67n99iq0bj7zqhpaz4byksna1hsxfmv"))))
+        (base32 "1rr7vpm3xxzcaam3m8xni3ajy8ycyljix07n2jzczayri9sd8csy"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/mickeynp/makey")
     (synopsis "Emacs interactive command-line mode")
@@ -9292,13 +9568,13 @@ outline-mode), so there is no such thing like an outshine mode, only
     (version "2.3.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/joostkremers/parsebib/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/joostkremers/parsebib.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0cxagnmc5ab6idmb26axpizhr4sqglkncc59768yavn3p04jyq63"))))
+        (base32 "1bnqnxkb9dnl0fjrrjx0xn9jsqki2h8ygw3d5dm4bl79smah3qkh"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/joostkremers/parsebib")
     (synopsis "Library for parsing bib files")
@@ -9312,13 +9588,13 @@ outline-mode), so there is no such thing like an outshine mode, only
     (version "0.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/cpitclaudel/biblio.el/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/cpitclaudel/biblio.el.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0vwrljmab8m1z83048gxx5mryml9f5pb3h0jpwkvqcl0ra152lzx"))))
+        (base32 "1gxjind6r235az59dr8liv03d8994mqb8a7m28j3c12q7p70aziz"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-seq" ,emacs-seq)
@@ -9347,7 +9623,7 @@ automatically fetched from well-curated sources, and formatted as BibTeX.")
          (uri (git-reference
                (url "https://github.com/tmalsburg/helm-bibtex.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "14lyx0vbqr97p3anzrsp7m3q0kqclyjcdwplpraim403fcklzbnz"))))
@@ -9444,15 +9720,15 @@ and @code{erc-send-modify-hook} to download and show images.")
   (package
     (name "emacs-helm-gtags")
     (version "1.5.6")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/syohex/emacs-helm-gtags/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1a10snhg6nnnan6w9a7mcziy26vxbsr3c35i0gcarnkdp2yqng36"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/syohex/emacs-helm-gtags.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0zyspn9rqfs3hkq8qx0q1w5qiv30ignbmycyv0vn3a6q7a5fsnhx"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-helm" ,emacs-helm)))
@@ -9468,13 +9744,13 @@ and @code{erc-send-modify-hook} to download and show images.")
     (version "0.4.4")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/rolandwalker/list-utils/archive/"
-                           "v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rolandwalker/list-utils.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1xc1xh8c82h5gdjbgpdsdclgwxkxbb7h3x3a2bscpm41g8pnan4p"))))
+        (base32 "0ql159v7sxs33yh2l080kchrj52vk34knz50cvqi3ykpb7djg3sz"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/rolandwalker/list-utils")
     (synopsis "List-manipulation utility functions")
@@ -9487,13 +9763,13 @@ and @code{erc-send-modify-hook} to download and show images.")
     (version "2.0.8")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/emacsfodder/move-text/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/emacsfodder/move-text.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1sjfja9r25692pgcldgnjzkapzy970m14jh9l4pajysiqcdk72g0"))))
+        (base32 "06jxk5g23822gfmwrxhc34zand3dr8p2wjh1zs3j61ibz6n0nmz1"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/emacsfodder/move-text")
     (synopsis "Move current line or region with M-up or M-down")
@@ -9550,14 +9826,13 @@ orient yourself in the code, and tell which statements are at a given level.")
     (version "0.7.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/DamienCassou/hierarchy/archive/"
-             "v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/DamienCassou/hierarchy.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1a463v5zk6zis2p8cs4mads3iyxh266yahi6j6y0paggfl2yhkc8"))))
+        (base32 "1kykbb1sil5cycfa5aj8dhsxc5yrx1641i2np5kwdjid6ahdlz5r"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/DamienCassou/hierarchy")
     (synopsis "Library to create and display hierarchy structures")
@@ -9578,7 +9853,7 @@ navigate and display hierarchy structures.")
          (uri (git-reference
                (url "https://github.com/emacsorphanage/tree-mode.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "13bbdhdmqg4x9yghanhr8fsbsxbnypzxdxgicz31sjjm675kpnix"))))
@@ -9601,7 +9876,7 @@ navigate and display hierarchy structures.")
                 (uri (git-reference
                       (url "https://github.com/ahungry/md4rd.git")
                       (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
+                (file-name (git-file-name name version))
                 (sha256
                  (base32
                   "0mvv1mvsrpkrmikcpfqf2zbawnzgq33j6zjdrlv48mcw57xb2ak9"))))
@@ -9656,15 +9931,15 @@ navigate and display hierarchy structures.")
   (package
     (name "emacs-datetime")
     (version "0.3")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/doublep/datetime/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "12wqpj67rjij2ki7nmw38rz3k2bsq68pk6zswknlcn9qhp1zd9w9"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/doublep/datetime.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0fdswqi53qx924lib7nd9dazn0916xf1ybrh3bcn3f8cn6b8ikg5"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/doublep/datetime/")
     (synopsis "Library to work with dates in Emacs")
@@ -9685,7 +9960,7 @@ timestamps and date-time format strings library for Emacs.")
          (uri (git-reference
                (url "https://github.com/theodorewiles/org-mind-map.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "0jgkkgq7g64zckrmjib0hvz0qy3ynz5vz13qbmlpf096l3bb65wn"))))
@@ -9704,13 +9979,13 @@ timestamps and date-time format strings library for Emacs.")
     (version "0.6.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/mojochao/npm-mode/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mojochao/npm-mode.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1kq1ww22dwf8c2i2b4z2ldbbmnihj65kb7n5vzvwkch9h4hxpqh5"))))
+        (base32 "1mh6nbffciw4yhv049kdhh796ysj1x21ndm3fwymhskb3dy0w1ss"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/mojochao/npm-mode")
     (synopsis "Minor mode for working with @code{npm} projects")
@@ -9749,7 +10024,7 @@ functions provided by @file{subr.el}.")
          (uri (git-reference
                (url "https://github.com/re5et/itail.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "044nzxh1hq41faxw3lix0wy78vfz304pjcaa5a11dqfz7q3gx5cv"))))
@@ -9768,13 +10043,13 @@ tramp.")
     (version "1.3")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/Wilfred/loop.el/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Wilfred/loop.el.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1z3rhh3zyjabz36410yz0lp4a0qwwj0387as662wvx3z9y54jia9"))))
+        (base32 "1gs95xnmnn8aa4794k7h8mw1sz1nfdh9v0caqj6yvnsdnwy74n5x"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/Wilfred/loop.el")
     (synopsis "Imperative loop structures for Emacs")
@@ -9789,13 +10064,13 @@ continue.")
     (version "1.3")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/Wilfred/elisp-refs/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Wilfred/elisp-refs.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "02nzcn3v14n7mp7q32j5r4wdlpsw3zixzh6cf0cdyarfir6dly3p"))))
+        (base32 "0w7k91xf69zc0zkjrw8h8sjdjf9xq9qs5zhvajhd718lzf93564b"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -9824,7 +10099,7 @@ confused by comments or @code{foo-bar} matching @code{foo}.")
          (uri (git-reference
                (url "https://github.com/bbatsov/crux.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1fdxvv25cs01sg6fmvmzxpzvs50i6v8n2jya60lbavxqqhi0sbxd"))))
@@ -9841,13 +10116,13 @@ confused by comments or @code{foo-bar} matching @code{foo}.")
     (version "1.13")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/stsquad/emacs_chrome/archive/"
-                           "v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/stsquad/emacs_chrome.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1r92kqggslqasza718z4ka883mqfbnibdm43f0j9gaipk0msm2wf"))))
+        (base32 "12dp1xj09jrp0kxp9xb6cak9dn6zkyis1wfn4fnhzmxxnrd8c5rn"))))
     (build-system emacs-build-system)
     (arguments
      `(#:phases
@@ -9923,7 +10198,7 @@ macro takes a first argument (whose value must be an alist) and a body.")
          (uri (git-reference
                (url "https://github.com/jschaf/esup.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "04lxmd0h7mfjjl0qghrycgff0vcv950j1wqv0dbkr61jxp64n5fv"))))
@@ -9941,13 +10216,13 @@ your Emacs.")
     (version "0.03")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/syohex/emacs-sourcemap/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/syohex/emacs-sourcemap.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0bmd5l3cx2iyl7vxn84xdhs80b07kpdpfwki28lh5d0kmm5qs6m6"))))
+        (base32 "115g2mfpbfywp8xnag4gsb50klfvplqfh928a5mabb5s8v4a3582"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/syohex/emacs-sourcemap")
     (synopsis "Sourcemap parser")
@@ -9964,7 +10239,7 @@ your Emacs.")
                 (uri (git-reference
                       (url "https://github.com/joddie/macrostep.git")
                       (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
+                (file-name (git-file-name name version))
                 (sha256
                  (base32
                   "1fm40mxdn289cyzgw992223dgrjmwxn4q8svyyxfaxjrpb38jhjz"))))
@@ -10010,13 +10285,13 @@ until the top-level form is no longer a macro call.")
     (version "2.3")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/Fanael/parent-mode/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Fanael/parent-mode.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0gxbl5s1w96v6v55b7aaansgw4sxhzfx9nrsvpk3pfhsibs6yqjd"))))
+        (base32 "0i5bc7lyyrx6swqlrp9l5x72yzwi53qn6ldrfs99gh08b3yvsnni"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/Fanael/parent-mode")
     (synopsis "Get major mode's parent modes")
@@ -10098,13 +10373,13 @@ until the top-level form is no longer a macro call.")
     (version "2.0.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/DamienCassou/beginend/archive/"
-                           "v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/DamienCassou/beginend.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0z4rbwffh9vxfvcrlvym4p73z7gf72q0b5iv33llbpcpbijknnrq"))))
+        (base32 "1jbhg73g1rrkbwql5vi2b0ys9avfazmwzwgd90gkzwavw0ch9cvl"))))
     ;; TODO: Run tests.
     (build-system emacs-build-system)
     (inputs
@@ -10130,7 +10405,7 @@ key again.")
          (uri (git-reference
                (url "https://github.com/dimitri/mbsync-el.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "0yj93y2mpxlir8x73znlg1slxlv4blm1vjv5h2w3j8lxg8bxvmn6"))))
@@ -10154,7 +10429,7 @@ within Emacs.")
          (uri (git-reference
                (url "https://github.com/purcell/ibuffer-projectile.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1nd26cwwdpnwj0g4w393rd59klpyr6wqrnyr6scmwb5d06bsm44n"))))
@@ -10204,13 +10479,13 @@ documentation.")
     (version "1.0.3")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/hylang/hy-mode/archive/"
-                           "v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/hylang/hy-mode.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0b4pvbr2hf77bq2vsyfsv653q0dab7qzq85wc7kdziw7687jdf2z"))))
+        (base32 "1jxximiznz7fw9ys5k6plw85zrbzvxidql7py1fdi425fdp4058z"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -10226,13 +10501,13 @@ documentation.")
     (version "0.3.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/yasuyk/web-beautify/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/yasuyk/web-beautify.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1j57hwid74id4swkx2g0iljfawx0k9c7qjrwqc0mv657x9p78hcs"))))
+        (base32 "0vms7zz3ym53wf1zdrkbf2ky2xjr1v134ngsd0jr8azyi8siw84d"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/yasuyk/web-beautify")
     (synopsis "Format HTML, CSS and JavaScript, JSON")
@@ -10311,7 +10586,7 @@ their meaning for the current Emacs major-mode.")
          (uri (git-reference
                (url "https://github.com/jkitchin/org-ref.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1rxz0bjdsayk0slv23i07d9xhj2m7s4hsc81wc2d1cs52dkr5zmz"))))
@@ -10389,15 +10664,15 @@ files.")
   (package
     (name "emacs-add-hooks")
     (version "3.1.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/nickmccurdy/add-hooks/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "03a28gb3298g7pc2qji9hi44p4d99ljp5mpi9cmg42ldv8fl6549"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/nickmccurdy/add-hooks.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1jv9fpcsm572zg0j1mbpbfkqgdlqapy89xhhj19pswkhjns1y2wl"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/nickmccurdy/add-hooks/")
     (synopsis "Emacs function for setting multiple hooks")
@@ -10411,13 +10686,13 @@ duplicate hook and function names further into a single declarative call.")
     (version "0.9.5")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/Malabarba/fancy-narrow/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Malabarba/fancy-narrow.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0rf2rnzg82pdqch041yyx3f9ddixffkk9s2ydzg8hwy66sg3385n"))))
+        (base32 "0vcr1gnqawvc1yclqs23jvxm6bqix8kpflf1c7znb0wzxmz9kx7y"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/Malabarba/fancy-narrow/releases")
     (synopsis "Imitate @code{narrow-to-region} with more eye candy")
@@ -10436,14 +10711,13 @@ buffer.")
     (version "0.5.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/for-GET/know-your-http-well/archive/"
-             "v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/for-GET/know-your-http-well.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1y3kwz88awcgwaivlswq0q4g2i02762r23lpwg61bfqy5lrjjqnj"))))
+        (base32 "1lppggnii2r9fvlhh33gbdrwb50za8lnalavlq9s86ngndn4n94k"))))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
@@ -10503,7 +10777,7 @@ buffer.")
          (uri (git-reference
                (url "https://github.com/zk-phi/download-region.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "0v52djg39b6k2snizd9x0qc009ws5y0ywqsfwhqgcbs5ymzh7dsc"))))
@@ -10518,15 +10792,15 @@ downloading manager for Emacs.")
   (package
     (name "emacs-helpful")
     (version "0.15")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/Wilfred/helpful/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1xmvhphzb4hbg647dz4lafy6hd19b7bk3lxni6irqrzdsrclhzn6"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Wilfred/helpful.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1rqnx7672175288yqaslw0d9vw04j6psw7mys8j9zcp2i72hlvkn"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-elisp-refs" ,emacs-elisp-refs)))
@@ -10557,15 +10831,15 @@ and doesn't require memorisation of commands.
   (package
     (name "emacs-logview")
     (version "0.9")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/doublep/logview/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1vd11ppm46ldqsiwhqgw91p34gbjh1y82r9mxcn9r2gj65nvhxcp"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/doublep/logview.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1qhzs75pxnaksbhczmpdcy2zmrqavlzkzss7ik5nv2wf9vs0sn02"))))
     (propagated-inputs
      `(("emacs-datetime" ,emacs-datetime)))
     (build-system emacs-build-system)
@@ -10607,15 +10881,15 @@ functions.")
   (package
     (name "emacs-benchmark-init")
     (version "1.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/dholm/benchmark-init-el/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0szyqr4nncwz4vd5gww1vz31kf9r2lx25p4d0d09pm35974x53kz"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/dholm/benchmark-init-el.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1kyn1izm5sbqbp9whnhk9dn3yc7zy8bz5san5w3ivi3rpx15fh94"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/dholm/benchmark-init-el")
     (synopsis "Benchmark Emacs @code{require} and @code{load} calls")
@@ -10687,13 +10961,13 @@ buffer with each of your todos.")
     (version "0.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/cosmicexplorer/f3/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/cosmicexplorer/f3.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "06b8i1jvklm5k3k90n65f197l1miq1xlxqkqpbppw4h3rhl4y98h"))))
+        (base32 "1qg48zbjdjqimw4516ymrsilz41zkib9321q0caf9474s9xyp2bi"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-helm" ,emacs-helm)))
@@ -10739,7 +11013,7 @@ buffer with each of your todos.")
          (uri (git-reference
                (url "https://github.com/nashamri/academic-phrases.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "0qfzsq8jh05w4zkr0cvq3i1hdn97bq344vcqjg46sib26x3wpz6r"))))
@@ -10772,7 +11046,7 @@ browse the phrases by the paper section and fill-in the blanks if required.")
                 (uri (git-reference
                       (url "https://github.com/abo-abo/auto-yasnippet.git")
                       (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
+                (file-name (git-file-name name version))
                 (sha256
                  (base32
                   "1i8k2qiyzd5rq0zplk4xb5nfa5mp0ibxbzwqj6c7877waq7244xk"))))
@@ -10803,14 +11077,13 @@ yasnippet fields and mirrors to be.")
     (version "0.2.3")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/Fanael/highlight-numbers/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Fanael/highlight-numbers.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "030v5p11d4n0581ncv499l1fqrmfziy756q6378x2bv22ixghqqp"))))
+        (base32 "1r07mpyr7rhd7bkg778hx6vbhb4n9ixgzkpszhgks7ri6ia38pj8"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-parent-mode" ,emacs-parent-mode)))
@@ -10883,7 +11156,7 @@ interactive behavior should be different.")
                 (uri (git-reference
                       (url "https://github.com/purcell/default-text-scale")
                       (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
+                (file-name (git-file-name name version))
                 (sha256
                  (base32
                   "0zds01c3q5yny6ab1fxfkzzgn1kgl3q23lxxap905f4qd70v922h"))))
@@ -10900,13 +11173,13 @@ decreasing the default font size in all GUI Emacs frames.")
     (version "1.1.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/benma/visual-regexp.el/archive/"
-                           "v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/benma/visual-regexp.el.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1czmhvcivlcdyz7rfm0vd4a3xsgmy4qbvbl6yjxc217wrxqflr92"))))
+        (base32 "12zpmzwyp85dzsjpxd3279kpfi9yz3jwc1k9fnb3xv3pjiil5svg"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/benma/visual-regexp.el/")
     (synopsis "Regexp command with interactive visual feedback")
@@ -10927,7 +11200,7 @@ interactive visual feedback.")
          (uri (git-reference
                (url "https://github.com/Lindydancer/faceup.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1yzmy7flrhrh0i10bdszx8idx6r8h6czm4vm4q0z6fp5fw94zwrx"))))
@@ -10952,7 +11225,7 @@ perform regression test for packages that provide font-lock rules.")
          (uri (git-reference
                (url "https://github.com/greghendershott/racket-mode")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "0vp4bbbplqvmnhjpl6ajrlydmrhqzil56cfbs18m5c5fddx0zlh7"))))
@@ -10984,7 +11257,7 @@ perform regression test for packages that provide font-lock rules.")
          (uri (git-reference
                (url "https://github.com/mkcms/grep-context.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1nqfa6kjzjshww4hnwg1c0vcr90bdjihy3kmixq3c3jkvxg99b62"))))
@@ -11012,7 +11285,7 @@ compilation/grep buffers.  Works with @code{wgrep}, @code{ack}, @code{ag},
          (uri (git-reference
                (url "https://github.com/emacs-helm/helm-firefox.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "08mjsi2f9s29fkk35cj1rrparjnkm836qmbfdwdz7y51f9varjbs"))))
@@ -11070,14 +11343,13 @@ decrease the number at point.")
     (version "0.1.5")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/Fanael/highlight-defined/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Fanael/highlight-defined.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1ryd66989b5byqdw8jmjrjf0c78iiz72wibld750skcnj5h5h506"))))
+        (base32 "08czwa165rnd5z0dwwdddn7zi5w63sdk31l47bj0598kbly01n7r"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/Fanael/highlight-defined")
     (synopsis "Syntax highlighting of known Elisp symbols")
@@ -11092,13 +11364,13 @@ macros, faces and variables.  To enable call @code{highlight-defined-mode}. ")
     (version "0.4.10")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/DogLooksGood/parinfer-mode/archive/"
-                           "v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/DogLooksGood/parinfer-mode.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "06ba9qi59sm9ih9m38fbr8kj4qkvrm58n0c0ngfjz60gnr9x9pcv"))))
+        (base32 "0v97ncb0w1slb0x8861l3yr1kqz6fgw1fwl1z9lz6hh8p2ih34sk"))))
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
        ("emacs-rainbow-delimiters" ,emacs-rainbow-delimiters)
@@ -11120,7 +11392,7 @@ keep Parens and Indentation inline with one another.")
               (uri (git-reference
                     (url "https://github.com/emacs-helm/helm-eww.git")
                     (commit version)))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "0hpq1h0p69c9k6hkd2mjpprx213sc5475q7pr2zpmwrjdzgcv70z"))))
@@ -11145,7 +11417,7 @@ bookmarks and history.")
                 (uri (git-reference
                       (url "https://github.com/stumpwm/stumpwm-contrib.git")
                       (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
+                (file-name (git-file-name name version))
                 (sha256
                  (base32
                   "1dfwsvz1c8w6j4jp0kzaz78ml3f5dp0a5pvf090kwpbpg176r7iq"))))
@@ -11187,14 +11459,13 @@ bookmarks and history.")
     (version "0.1.6")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/creichert/ido-vertical-mode.el/archive/"
-             "v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/creichert/ido-vertical-mode.el.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0dprdxq8wvqd45dinwj92k0kixr07c8xvspa6i613mjcpxgwjg53"))))
+        (base32 "1lv82q639xjnmvby56nwqn23ijh6f163bk675s33dkingm8csj8k"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/creichert/ido-vertical-mode.el")
     (synopsis "Makes ido-mode display vertically")
@@ -11207,13 +11478,13 @@ bookmarks and history.")
     (version "0.1.4")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/Fanael/wordgen.el/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Fanael/wordgen.el.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1h2iyixdm49h53pwj9ics9gb9h3g6wa4hainpnjg6mfarf49jkmg"))))
+        (base32 "06vbc9ycz1nbjwjkg99y3lj6jwb6lnwnmkqf09yr00jjrrfhfash"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/Fanael/wordgen.el")
     (synopsis "Random word generator")
@@ -11257,7 +11528,7 @@ the previously visible buffer part after each scroll.")
          (uri (git-reference
                (url "https://github.com/dgutov/highlight-escape-sequences.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "05mc3w1f8ykf80914a1yddw6j8cmh0h57llm07xh89s53821v2is"))))
@@ -11274,14 +11545,13 @@ Emacs minor mode to escape sequences in code.")
     (version "1.2.4")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/rakanalh/emacs-dashboard/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rakanalh/emacs-dashboard.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1738lmbgq6gk24hcwic0qjyajr21l5xzhya4pv58dw1bhd6vxv9g"))))
+        (base32 "1hhh1kfsz87qfmh45wjf2r93rz79rq0vbyxlfrsl02092zjbl1zr"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-page-break-lines" ,emacs-page-break-lines)))
@@ -11298,13 +11568,13 @@ sections for bookmarks, projectil projects, org-agenda and more. ")
     (version "1.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/anwyn/slime-company/archive/"
-                           "v" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/anwyn/slime-company.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1myl79pxj501xfr5qc5a24qddsn2l5iaamg7rf7fpny7mr9v70ar"))
-       (file-name (string-append name "-" version ".tar.gz"))))
+        (base32 "1hl1hqkc1pxga9k2k8k15d7dip7sfsmwf4wm4sh346m6nj606q8g"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-slime" ,emacs-slime)
@@ -11351,7 +11621,7 @@ interactive loop.")
          (uri (git-reference
                (url "https://github.com/xiongtx/eros.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "0whlsq90v13fz69k3wjrwcwb9gkpfxqjd75mg3nrp85j9nwhb5i4"))))
@@ -11373,7 +11643,7 @@ interactive loop.")
          (uri (git-reference
                (url "https://github.com/tuhdo/semantic-stickyfunc-enhance.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "16dxjsr5nj20blww4xpd4jzgjprzzh1nwvb810ggdmp9paf4iy0g"))))
@@ -11393,14 +11663,13 @@ scroll up to read the function name and then scroll down to original position.")
     (version "4.4.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/ryuslash/git-auto-commit-mode/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ryuslash/git-auto-commit-mode.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "04avxmalsl3b7zi2vipfw9rb4wrwysnipsbch96skviql9axk870"))))
+        (base32 "0psmr7749nzxln4b500sl3vrf24x3qijp12ir0i5z4x25k72hrlh"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/ryuslash/git-auto-commit-mode")
     (synopsis "Emacs Minor mode to automatically commit and push")
@@ -11417,14 +11686,13 @@ the current upstream.")
     (version "0.1.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/iquiw/company-restclient/archive/"
-             "v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/iquiw/company-restclient.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1kr3f0wgqlk7r171bvb2kinv7fanwj2md01wdpx04qkgwcr1as00"))))
+        (base32 "0i1fh5lvqwlgn3g3fzh0xacxyljx6gkryipn133vfkv4jbns51n4"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-company" ,emacs-company)
@@ -11453,7 +11721,7 @@ It provides auto-completion for HTTP methods and headers in
          (uri (git-reference
                (url "https://github.com/nicferrier/emacs-noflet")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "0g70gnmfi8n24jzfci9nrj0n9bn1qig7b8f9f325rin8h7x32ypf"))))
@@ -11483,14 +11751,13 @@ through the symbol: @command{this-fn}.")
     (version "0.5.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/jacktasia/dumb-jump/archive/v"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/jacktasia/dumb-jump.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "07n0xjgpxjpf3vp9gxchkjpydyj0zm166930as0kwiwkhjlsirsf"))))
+        (base32 "00ph85vp8sa3k99qrdxfz4l8zx121q9xf47vvspzg26bk9l4nwin"))))
     (build-system emacs-build-system)
     (arguments
      `(#:tests? #f ; FIXME: Tests freeze when run.
@@ -11533,7 +11800,7 @@ Dumb Jump performs best with The Silver Searcher @command{ag} or ripgrep
          (uri (git-reference
                (url "https://github.com/bgamari/dts-mode.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1k8lljdbc90nd29xrhdrsscxavzdq532wq2mg7ljc94krj7538b1"))))
@@ -11555,7 +11822,7 @@ device tree files.")
        (uri (git-reference
              (url "https://github.com/cbowdon/daemons.el")
              (commit version)))
-       (file-name (string-append name "-" version "-checkout"))
+       (file-name (git-file-name name version))
        (sha256
         (base32
          "00bkzfaw3bqykcks610vk9wlpa2z360xn32bpsrycacwfv29j7g4"))))
@@ -11648,7 +11915,7 @@ matching regexps.")
        (uri (git-reference
              (url "https://github.com/dieggsy/esh-autosuggest")
              (commit version)))
-       (file-name (string-append name "-" version "-checkout"))
+       (file-name (git-file-name name version))
        (sha256
         (base32
          "116pdjgpjy9b0psm5kzwkwy7dq8vn0p6dy75dl1zsy2xrjf1iqdw"))))
@@ -11678,7 +11945,7 @@ autosuggestions with:
          (uri (git-reference
                (url "https://gitlab.petton.fr/DamienCassou/desktop-environment")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "0x73x5hy7w55jrzy3xvqhk90rrsznmxjqvsvwhh21qznv5w269xz"))))
@@ -11723,14 +11990,12 @@ This code is still alpha.")
     (version "20180518")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/egh/zotxt-emacs/archive/"
-             "23a4a9f74a658222027d53a9a83cd4bcc583ca8b"
-             ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/egh/zotxt-emacs.git")
+             (commit "23a4a9f74a658222027d53a9a83cd4bcc583ca8b")))
        (sha256
-        (base32
-         "1qlibaciqgsva6fc7vv9krssjq00bi880396jk7llbi3c52q9n1y"))))
+        (base32 "09fq3w9yk9kn6bz7y9kgpiw612dvj3yzsdk734js6zgb0p8lfd2c"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-deferred" ,emacs-deferred)
@@ -11757,7 +12022,7 @@ Org-mode file, and citations of Zotero items in Pandoc Markdown files.")
          (uri (git-reference
                (url "https://github.com/emacs-evil/evil-magit")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "134v7s03jvbhm70mavwab85r09i68g2a5bvriirh0chz1av2y16v"))))
@@ -11789,7 +12054,7 @@ describing the key binding changes.")
        (uri (git-reference
              (url "https://github.com/hlissner/evil-multiedit")
              (commit (string-append "v" version))))
-       (file-name (string-append name "-" version "-checkout"))
+       (file-name (git-file-name name version))
        (sha256
         (base32
          "19h3kqylqzbjv4297wkzzxdmn9yxbg6z4ga4ssrqri90xs7m3rw3"))))
@@ -11818,7 +12083,7 @@ defaults.")
          (uri (git-reference
                (url "https://github.com/Somelauw/evil-org-mode")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "176hrw7y7nczffbyhsa167b8rvfacsmcafm2gpkrdjqlrikbmrhl"))))
@@ -12022,7 +12287,7 @@ on-line service.")
          (uri (git-reference
                (url "https://github.com/Sodel-the-Vociferous/helm-company")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1ciirsanhajdqm5iwl8k9ywf4jha1wdv4sc4d9kslyrfr9zn4q6k"))))
@@ -12048,7 +12313,7 @@ framework.")
          (uri (git-reference
                (url "https://github.com/emacs-helm/helm-descbinds")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1n89p56qwa243w1c85i5awnaf7piwjsvfi7nmnsrwm33hix5dknk"))))
@@ -12076,7 +12341,7 @@ you searched for and execute it, or view its documentation.")
          (uri (git-reference
                (url "https://github.com/emacs-helm/helm-emms")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1595r09y3rmwd46nnhvjja3hb8j2ila295ijxv61cg52ws4wginh"))))
@@ -12098,14 +12363,12 @@ from @code{emms-source-file-default-directory}.")
       (version (git-version "20180703" "2" commit))
       (source
        (origin
-         (method url-fetch)
-         (uri (string-append
-               "https://github.com/emacs-helm/helm-exwm/archive/"
-               commit
-               ".tar.gz"))
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/emacs-helm/helm-exwm.git")
+               (commit commit)))
          (sha256
-          (base32
-           "0n7hdiajw5vxl8ha2r9r4cl4i7crza25348825wb6acwhhzijxcj"))))
+          (base32 "064ziinqa5sdv7rfjn0y278l12kld176fr88k4h78pgf2f2n7cd8"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-helm" ,emacs-helm)
@@ -12131,7 +12394,7 @@ See @code{helm-exwm-switch-browser} for an example.")
          (uri (git-reference
                (url "https://github.com/yasuyk/helm-flycheck")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1a2yfxhz04klwhcandqvfzysxp6b7bxyxx1xk1x3kds5hif5fkl4"))))
@@ -12157,7 +12420,7 @@ See @code{helm-exwm-switch-browser} for an example.")
          (uri (git-reference
                (url "https://github.com/emacs-helm/helm-ls-git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "0vsq1n3xl3ghy5zik2scm7jrs501n4kybdqd6yw6j0cv4jxdqbr0"))))
@@ -12190,14 +12453,12 @@ projects unrelated to current-buffer.
       (version (git-version  "20180513" "1" commit))
       (source
        (origin
-         (method url-fetch)
-         (uri (string-append
-               "https://github.com/emacs-helm/helm-mu/archive/"
-               commit
-               ".tar.gz"))
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/emacs-helm/helm-mu.git")
+               (commit commit)))
          (sha256
-          (base32
-           "0qm4xi3i957scm50nar398pv4x8y03si10l77jb9ckjaviyq2hj9"))))
+          (base32 "1lh0ahxdc5b2z18m9p30gwg8sbg33sjwkjr38p7h5xsm5fm7i0fz"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-helm" ,emacs-helm)
@@ -12255,7 +12516,7 @@ provided by other Emacs packages dealing with pass:
          (uri (git-reference
                (url "https://github.com/mhayashi1120/Emacs-imagex")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "0v66wk9nh0raih4jhrzmmyi5lbysjnmbv791vm2230ffi2hmwxnd"))))
@@ -12294,7 +12555,7 @@ image, rotate it, save modified images, and more.")
          (uri (git-reference
                (url "https://github.com/purcell/package-lint")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1hfricsgmy3x9snnd2p4xq6vnnv94qdsxxnxp07b3hqc9bhw31rq"))))
@@ -12362,7 +12623,7 @@ file.")
                "https://gitlab.com/Ambrevar/mu4e-conversation/"
                "repository/archive.tar.gz?ref="
                commit))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "0b52hf9rm2afba9pvgink9bwqm705sk0y5qikp0ff5sk53wqvy29"))))
@@ -12721,7 +12982,7 @@ few (like NOTE).")
          (uri (git-reference
                (url "https://github.com/jwiegley/git-annex-el")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1mzv40gj7k10h7h5s43my8msgzjpj680qprqa9pp8nbyhl49v3wh"))))
@@ -13546,13 +13807,13 @@ to open SQLite databases.")
     (version "1.2.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/NixOS/nix-mode/archive/v"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/NixOS/nix-mode.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "06aqz0czznsj8835jqnk794sy2p6pa8kxfqwh0nl5d5vxivria6z"))))
+        (base32 "1vz3s2jx14nzy53f04d821n4f2s22ys5h9s7af6cnpynkwawyhhq"))))
     (build-system emacs-build-system)
     (inputs
      `(("emacs-company" ,emacs-company)
@@ -13599,7 +13860,7 @@ front end to mpc, a client for the @dfn{Music Player Daemon} (MPD).")
        (uri (git-reference
              (url "https://github.com/mkmcc/gnuplot-mode")
              (commit "601f6392986f0cba332c87678d31ae0d0a496ce7")))
-       (file-name (string-append name "-" version "-checkout"))
+       (file-name (git-file-name name version))
        (sha256
         (base32
          "14f0yh1rjqc3337j4sbqzfb7pjim2c8a7wk1a73xkrdkmjn82vgb"))))
@@ -14085,6 +14346,813 @@ command\", but because it always involves at least two commands (a prefix and
 a suffix) we prefer to call it just a \"transient\".")
       (license license:gpl3+))))
 
+(define-public emacs-undo-propose-el
+  (let ((commit "5f1fa99a04369a959aad01b476fe4f34229f28cd")
+        (version "1.0.0")
+        (revision "1"))
+    (package
+      (name "emacs-undo-propose-el")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/jackkamm/undo-propose-el")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1p9h1fqmva07mcs46rqrg9vqn537b615as84s9b7xh76k1r8h1c0"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/jackkamm/undo-propose-el")
+      (synopsis "Simple and safe navigation of @code{undo} history")
+      (description "This package permits navigation of @code{undo} history in a
+temporary buffer, which is read-only save for @code{undo} commands, and
+subsequent committal of a chain of @code{undo} commands as a single edit in
+the @code{undo} history.")
+      (license license:gpl3+))))
+
+(define-public emacs-elisp-docstring-mode
+  (let ((commit "f512e509dd690f65133e55563ebbfd2dede5034f")
+        (version "0.0.1")
+        (revision "1"))
+    (package
+      (name "emacs-elisp-docstring-mode")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/Fuco1/elisp-docstring-mode")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0al8m75p359h4n82rf0dsl22qfdg9cwwywn5pn7x6gb96c7qrqaa"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/Fuco1/elisp-docstring-mode")
+      (synopsis "Major mode for editing Emacs Lisp docstrings")
+      (description "This package provides font lock and automatic escaping and
+unescaping of quotes.")
+      (license license:gpl3+))))
+
+(define-public emacs-vimrc-mode
+  (let ((commit "13bc150a870d5d4a95f1111e4740e2b22813c30e")
+        (version "0.3.1")
+        (revision "1"))
+    (package
+      (name "emacs-vimrc-mode")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/mcandre/vimrc-mode")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0026dqs3hwygk2k2xfra90w5sfnxrfj7l69jz7sq5glavbf340pk"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/mcandre/vimrc-mode")
+      (synopsis "Major mode for Vimscript")
+      (description "This package provides font lock and @code{beginning-} and
+@code{end-of-defun} functions for Vimscript files.")
+      (license license:gpl3+))))
+
+(define-public emacs-flycheck-haskell
+  (let ((commit "32ddff87165a7d3a35e7318bee997b5b4bd41278")
+        (version "0.8")
+        (revision "79"))
+    (package
+      (name "emacs-flycheck-haskell")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/flycheck/flycheck-haskell")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "10pgsbagq6qj4mshq5sypv0q0khck92b30sc793b4g1pfpsxvgjn"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-dash" ,emacs-dash)
+         ("emacs-seq" ,emacs-seq)
+         ("emacs-flycheck" ,emacs-flycheck)
+         ("emacs-haskell-mode" ,emacs-haskell-mode)
+         ("emacs-let-alist" ,emacs-let-alist)))
+      (home-page "https://github.com/flycheck/flycheck-haskell")
+      (synopsis "Flycheck for Haskell")
+      (description "This package configures syntax-checking for Haskell
+buffers.")
+      (license license:gpl3+))))
+
+(define-public emacs-js2-refactor-el
+  (let ((commit "79124b3274c43ad1f9ec6205fa362576552db02f")
+        (version "0.9.0")
+        (revision "27"))
+    (package
+      (name "emacs-js2-refactor-el")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/magnars/js2-refactor.el")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1wswhlpbd3airrhyncb9vblqigwnqg9n96z0iis8jnz37q2whica"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-dash" ,emacs-dash)
+         ("emacs-s" ,emacs-s)
+         ("emacs-js2-mode" ,emacs-js2-mode)
+         ("emacs-yasnippet" ,emacs-yasnippet)
+         ("emacs-multiple-cursors" ,emacs-multiple-cursors)))
+      (native-inputs
+       `(("emacs-buttercup" ,emacs-buttercup)
+         ("emacs-espuds" ,emacs-espuds)))
+      (home-page "https://github.com/magnars/js2-refactor.el")
+      (synopsis "JavaScript refactoring in Emacs")
+      (description "This package provides various refactoring functions for
+JavaScript.")
+      (license license:gpl3+))))
+
+(define-public emacs-prettier
+  (let ((commit "e9b73e81d3e1642aec682195f127a42dfb0b5774")
+        (version "0.1.0")
+        (revision "1"))
+    (package
+      (name "emacs-prettier")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/prettier/prettier-emacs")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0hj4fv3fgc60i6jrsx4a81s5c9fsxxafhhs3q2q1dypsscjci9ph"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/prettier/prettier-emacs")
+      (synopsis "Automatic formatting of JavaScript code")
+      (description "This package integrates Prettier with Emacs, and
+provides a minor mode that autoformats the buffer upon saving.")
+      (license license:expat))))
+
+(define-public emacs-fish-mode
+  (package
+    (name "emacs-fish-mode")
+    (version "0.1.4")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/wwwjfy/emacs-fish")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0a74ghmjjrxfdhk4mvq6lar4w6l6lc4iilabs99smqr2fn5rsslq"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/wwwjfy/emacs-fish")
+    (synopsis "Major mode for Fish shell scripts")
+    (description "This package provides syntax highlighting and indentation
+functions for Fish shell scripts.")
+    (license license:gpl3+)))
+
+(define-public emacs-eshell-up
+  (let ((commit "9c100bae5c3020e8d9307e4332d3b64e7dc28519")
+        (version "0.0.3")
+        (revision "12"))
+    (package
+      (name "emacs-eshell-up")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/peterwvj/eshell-up")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "00zdbcncjabgj5mp47l1chymx5na18v2g4kj730dgmj3rnl3iz2q"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/peterwvj/eshell-up")
+      (synopsis "Quickly go to a parent directory in @code{Eshell}")
+      (description "This package provides quick navigation to a specific
+parent directory using @code{Eshell}.")
+      (license license:gpl3+))))
+
+(define-public emacs-tco-el
+  (let ((commit "482db5313f090b17ed22ccd856f0e141dc75afe6")
+        (version "0.3")
+        (revision "1"))
+    (package
+      (name "emacs-tco-el")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/Wilfred/tco.el")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1z7xkbrqznk6ni687qqknp8labcyhl8y6576hjfri89fn21385y9"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-dash" ,emacs-dash)))
+      (home-page "https://github.com/Wilfred/tco.el")
+      (synopsis "Tail-call optimization for Emacs Lisp")
+      (description "This package provides tail-call optimization for Emacs
+Lisp functions that call themselves in tail position.")
+      (license license:gpl3+))))
+
+(define-public emacs-equake
+  (let ((commit "ed15fd55cd4f2276161a6f712ed0b83cd10a8cdc")
+        (version "0.85")
+        (revision "1"))
+    (package
+      (name "emacs-equake")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://gitlab.com/emacsomancer/equake/")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "04kj88rlnn22gwmmv2gly2ibi6jka6l2cd4979pi6lhlvqqgjdnj"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-dash" ,emacs-dash)
+         ("emacs-tco-el" ,emacs-tco-el)))
+      (home-page "https://gitlab.com/emacsomancer/equake/")
+      (synopsis "Drop-down console for @code{Eshell} and terminal emulators")
+      (description "This package provides a Quake-style drop-down console
+compatible with Emacs' shell modes.")
+      (license license:gpl3+))))
+
+(define-public emacs-vdiff
+  (let ((commit "09e15fc932bfd2febe1d4a65780a532394562b07")
+        (version "0.2.3")
+        (revision "1"))
+    (package
+      (name "emacs-vdiff")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/justbur/emacs-vdiff/")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1gvqi5l4zs872nn4pmj603aza09d81qad2rgijzv268lif8z34db"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-hydra" ,emacs-hydra)))
+      (home-page "https://github.com/justbur/emacs-vdiff/")
+      (synopsis "Frontend for diffing based on vimdiff")
+      (description "This package permits comparisons of two or three buffers
+based on diff output.")
+      (license license:gpl3+))))
+
+(define-public emacs-vdiff-magit
+  ;; Need to use a more recent commit than the latest release version because
+  ;; of Magit and Transient
+  (let ((commit "b100d126c69e5c26a61ae05aa1778bcc4302b597")
+        (version "0.3.2")
+        (revision "8"))
+    (package
+      (name "emacs-vdiff-magit")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/justbur/emacs-vdiff-magit/")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "16cjmrzflf2i1w01973sl944xrfanakba8sb4dpwi79d92xp03xy"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-vdiff" ,emacs-vdiff)
+         ("emacs-magit" ,emacs-magit)
+         ("emacs-transient" ,emacs-transient)))
+      (home-page "https://github.com/justbur/emacs-vdiff-magit/")
+      (synopsis "Frontend for diffing based on vimdiff")
+      (description "This package permits comparisons of two or three buffers
+based on diff output.")
+      (license license:gpl3+))))
+
+(define-public emacs-all-the-icons-dired
+  (let ((commit "980b7747d6c4a7992a1ec56afad908956db0a519")
+        (version "1.0")
+        (revision "1"))
+    (package
+      (name "emacs-all-the-icons-dired")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/jtbm37/all-the-icons-dired/")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1pvbgyxfj4j205nj1r02045f1y4wgavdsk7f45hxkkhms1rj8jyy"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-all-the-icons" ,emacs-all-the-icons)))
+      (home-page "https://github.com/jtbm37/all-the-icons-dired/")
+      (synopsis "Show icons for each file in @code{dired-mode}")
+      (description "This package allows icons from @file{all-the-icons.el} to
+be used in @code{dired-mode}.")
+      (license license:gpl3+))))
+
+(define-public emacs-exwm-edit
+  (let ((commit "961c0f3ea45766b888c73d7353da13d329538034")
+        (version "0.0.1")
+        (revision "1"))
+    (package
+      (name "emacs-exwm-edit")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/agzam/exwm-edit/")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "087pk5ckx753qrn6xpka9khhlp7iqlz76w7861x90av2f5cgy6fw"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-exwm" ,emacs-exwm)))
+      (home-page "https://github.com/agzam/exwm-edit/")
+      (synopsis "Open temp buffers for editing text from EXWM buffers")
+      (description "This package facilitates editing text from EXWM buffers by
+generating a temp buffer in which any useful Emacs utilities and modes can be
+invoked.")
+      (license license:gpl3+))))
+
+(define-public emacs-ert-async
+  (package
+    (name "emacs-ert-async")
+    (version "0.1.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rejeep/ert-async.el")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0hn9i405nfhjd1h9vnwj43nxbbz00khrwkjq0acfyxjaz1shfac9"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/rejeep/ert-async.el")
+    (synopsis "Async support for ERT")
+    (description "This package allows ERT to work with asynchronous tests.")
+    (license license:gpl3+)))
+
+(define-public emacs-prodigy-el
+  (let ((commit "701dccaa56de9e6a330c05bde33bce4f3b3d6a97")
+        (version "0.7.0")
+        (revision "28"))
+    (package
+      (name "emacs-prodigy-el")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/rejeep/prodigy.el")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1vyvxawlayp2nra0q83146q2nzv8qwn5a4nj0sx1jc90a0a83vgj"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-dash" ,emacs-dash)
+         ("emacs-s" ,emacs-s)
+         ("emacs-f" ,emacs-f)))
+      (native-inputs
+       `(("emacs-el-mock" ,emacs-el-mock)
+         ("emacs-ert-async" ,emacs-ert-async)))
+      (home-page "https://github.com/rejeep/prodigy.el")
+      (synopsis "Manage external services from within Emacs")
+      (description "This package provides a GUI for defining and monitoring services.")
+      (license license:gpl3+))))
+
+(define-public emacs-web-server
+  (let ((commit "cafa5b7582c57252a0884b2c33da9b18fb678713")
+        (version "0.1.1")
+        (revision "1"))
+    (package
+      (name "emacs-web-server")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/eschulte/emacs-web-server/")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1c0lfqmbs5hvz3fh3c8wgp6ipwmxrwx9xj264bjpj3phixd5419y"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/eschulte/emacs-web-server/")
+      (synopsis "Web server with handlers in Emacs Lisp")
+      (description "This package supports HTTP GET and POST requests with
+url-encoded parameters, as well as web sockets.")
+      (license license:gpl3+))))
+
+(define-public emacs-markdown-preview-mode
+  (package
+    (name "emacs-markdown-preview-mode")
+    (version "0.9.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ancane/markdown-preview-mode")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1d1id99gagymvzdfa1mwqh8y3szm8ii47rpijkfi1qnifjg5jaq9"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-markdown-mode" ,emacs-markdown-mode)
+       ("emacs-websocket" ,emacs-websocket)
+       ("emacs-web-server" ,emacs-web-server)))
+    (arguments '(#:include '("\\.el$" "\\.html$")))
+    (home-page "https://github.com/ancane/markdown-preview-mode")
+    (synopsis "Live web development in Emacs")
+    (description "This package provides a minor mode for preview of Markdown
+files, and sends rendered Markdown to a web browser.")
+    (license license:gpl3+)))
+
+(define-public emacs-dotenv-mode
+  (package
+    (name "emacs-dotenv-mode")
+    (version "0.2.4")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/preetpalS/emacs-dotenv-mode")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1fplkhxnsgdrg10iqsmw162zny2idz4vvv35spsb9j0hsk8imclc"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/preetpalS/emacs-dotenv-mode")
+    (synopsis "Major mode for @file{.env} files")
+    (description "This package provides syntax highlighting for @file{.env}
+files.")
+    (license license:gpl3+)))
+
+(define-public emacs-add-node-modules-path
+  (let ((commit "f31e69ccb681f882aebb806ce6e9478e3ac39708")
+        (version "1.2.0")
+        (revision "10"))
+    (package
+      (name "emacs-add-node-modules-path")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/codesuki/add-node-modules-path")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0p106bqmvdr8by5iv02bshm339qbrjcch2d15mrm4h3nav03v306"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/codesuki/add-node-modules-path")
+      (synopsis "Add @file{node_modules} to the buffer-local @file{exec-path}")
+      (description "This package searches the parent directories of the
+current file for the project's @file{node_modules/.bin/} directory, allowing
+Emacs to find project-specific installations of packages.")
+      (license license:expat))))
+
+(define-public emacs-flow-minor-mode
+  (let ((commit "d1b32a7dd0d33c6a00a106da5f4b2323602cbd3e")
+        (version "0.3")
+        (revision "4"))
+    (package
+      (name "emacs-flow-minor-mode")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/an-sh/flow-minor-mode")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "169r4ib9qg9q6fm3p0p23qs1qx4pa9pg1qvyq4ysr85i7kwygppl"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/an-sh/flow-minor-mode")
+      (synopsis "Minor mode for JavaScript Flow files")
+      (description "This package integrates Flow with Emacs, allowing for
+definition-jumping and type-checking on demand.")
+      (license license:bsd-3))))
+
+(define-public emacs-rjsx-mode
+  (let ((commit "03dd8d1683501e81b58674d64c3032b7b718402c")
+        (version "0.4.0")
+        (revision "35"))
+    (package
+      (name "emacs-rjsx-mode")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/felipeochoa/rjsx-mode")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1kc44g9f38klpjklmz9n50a28nqv7prz6ck6ghdr6bnj1s98pb8a"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-js2-mode" ,emacs-js2-mode)))
+      (home-page "https://github.com/felipeochoa/rjsx-mode")
+      (synopsis "Major mode for JSX files")
+      (description "This package extends the parser of @code{js2-mode} to
+support JSX syntax.")
+      (license license:expat))))
+
+(define-public emacs-origami-el
+  (let ((commit "1f38085c8f9af7842765ed63f7d6dfe4dab59366")
+        (version "1.0")
+        (revision "1"))
+    (package
+      (name "emacs-origami-el")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/gregsexton/origami.el")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0ha1qsz2p36pqa0sa2sp83lspbgx5lr7930qxnwd585liajzdd9x"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-dash" ,emacs-dash)
+         ("emacs-s" ,emacs-s)))
+      (home-page "https://github.com/gregsexton/origami.el")
+      (synopsis "Flexible text-folding")
+      (description "This package provides a minor mode for collapsing and
+expanding regions of text without modifying the actual contents.")
+      (license license:expat))))
+
+(define-public emacs-peep-dired
+  (let ((commit "c88a9a3050197840edfe145f11e0bb9488de32f4")
+        (version "0")
+        (revision "1"))
+    (package
+      (name "emacs-peep-dired")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/asok/peep-dired")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1wy5qpnfri1gha2cnl6q20qar8dbl2mimpb43bnhmm2g3wgjyad6"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/asok/peep-dired")
+      (synopsis "Preview files in another window")
+      (description "This package provides a minor mode that allows files to be
+previewed by scrolling up and down within a @code{dired} buffer.")
+      (license license:gpl3+))))
+
+(define-public emacs-counsel-etags
+  (package
+    (name "emacs-counsel-etags")
+    (version "1.8.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/redguardtoo/counsel-etags")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1d8nlrbsyza6q7yqm9248bxxsf49qf6hchg3zwv0l11acn3w8np5"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-ivy" ,emacs-ivy)))
+    (home-page "https://github.com/redguardtoo/counsel-etags")
+    (synopsis "Fast @code{Ctags}/@code{Etags} solution with @code{ivy-mode}")
+    (description "This package uses @code{ivy-mode} to facilitate navigating
+and searching through @code{Ctags} files.")
+    (license license:gpl3+)))
+
+(define-public emacs-helm-dash
+  (let ((commit "192b862185df661439a06de644791171e899348a")
+        (version "1.3.0")
+        (revision "18"))
+    (package
+      (name "emacs-helm-dash")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/areina/helm-dash")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "06am5vnr4hsxkvh2b8q8kb80y5x1h3qyv7gwggswwhfa7w2vba3w"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-helm" ,emacs-helm)))
+      (home-page "https://github.com/areina/helm-dash")
+      (synopsis "Offline documentation browser for APIs using Dash docsets")
+      (description "This package uses Helm to install and navigate through
+Dash docsets.")
+      (license license:gpl3+))))
+
+(define-public emacs-counsel-dash
+  (let ((commit "07fa74a94ff4da5b6c8c4810f5e143e701b480d2")
+        (version "0.1.3")
+        (revision "3"))
+    (package
+      (name "emacs-counsel-dash")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/nathankot/counsel-dash")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "17h2m9zsadq270mkq12kmdzmpbfjiwjbg8n1rg2apqnm1ndgcwf8"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-helm-dash" ,emacs-helm-dash)
+         ("emacs-dash" ,emacs-dash)
+         ("emacs-ivy" ,emacs-ivy)))
+      (home-page "https://github.com/nathankot/counsel-dash")
+      (synopsis "Offline documentation browser for APIs using Dash docsets")
+      (description "This package uses @code{ivy-mode} to install and navigate
+through Dash docsets.")
+      (license license:expat))))
+
+(define-public emacs-el-patch
+  (package
+    (name "emacs-el-patch")
+    (version "2.2.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/raxod502/el-patch")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "18djslz177q6q33y82zmg2v6n9236a76kiqfvxdk4vbqzjbq82f7"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/raxod502/el-patch")
+    (synopsis "Future-proof your Emacs customizations")
+    (description "This package allows for an alternate definition of an Elisp
+function to be specified and for any differences from the original definition
+to be examined using Ediff.")
+    (license license:expat)))
+
+(define-public emacs-info-plus
+  (let ((commit "b837d710f7d58db586116cf6f75e75a9a074bc4b")
+        (version "5101")
+        (revision "55"))
+    (package
+      (name "emacs-info-plus")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/emacsmirror/info-plus")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1knyjkdm4rcs3qrc51jllw46ph7ycq5zxnvl70ydchzfwava43h6"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/emacsmirror/info-plus")
+      (synopsis "Extensions to @file{info.el}")
+      (description "This package extends Emacs' @file{info.el} by allowing
+outline-enabled table of contents, additional metadata association for Info
+nodes, and more.")
+      (license license:gpl2+))))
+
+(define-public emacs-eval-sexp-fu-el
+  (package
+    (name "emacs-eval-sexp-fu-el")
+    (version "0.5.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/hchbaw/eval-sexp-fu.el")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "01mpnpgmlnfbi2yw9dxz5iw72mw3lk223bj172i4fnx3xdrrxbij"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/hchbaw/eval-sexp-fu.el")
+    (synopsis "Enhancements for evaluating s-expressions")
+    (description "This package provides provides variants of
+@code{eval-last-sexp} that work on the containing list or s-expression, as
+well as an option for visually flashing evaluated s-expressions.")
+    (license license:gpl3+)))
+
+(define-public emacs-counsel-tramp
+  (package
+    (name "emacs-counsel-tramp")
+    (version "0.6.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/masasam/emacs-counsel-tramp")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0nz0733x2b9b5nkwivvhv5c8747dng451na1sdfbkx5x9fjs5gc7"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-ivy" ,emacs-ivy)))
+    (home-page "https://github.com/masasam/emacs-counsel-tramp")
+    (synopsis "Ivy interface for TRAMP")
+    (description "This package allows @code{ivy-mode} to display and filter
+SSH servers.")
+    (license license:gpl3+)))
+
+(define-public emacs-eacl
+  (package
+    (name "emacs-eacl")
+    (version "2.0.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/redguardtoo/eacl")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0ksn11sm3g1ja5lpjz3hrzzw8b480mfcb3q589m52qjgvvn5iyfv"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-ivy" ,emacs-ivy)))
+    (home-page "https://github.com/redguardtoo/eacl")
+    (synopsis "Auto-complete lines by using @code{grep} on a project")
+    (description "This package provides auto-completion cammands for single
+and multiple lines of code in a project.")
+    (license license:gpl3+)))
+
 (define-public emacs-semantic-refactor
   ;; The last release, 0.5, was made on 2015-07-26 and there have been 47
   ;; commits since then.
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index e00931c504..7c60cc6021 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014 Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com>
-;;; Copyright © 2014, 2015, 2016, 2017, 2018 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014, 2015, 2016, 2017 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016, 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2016 Federico Beffa <beffa@fbengineering.ch>
@@ -68,14 +68,14 @@
 (define-public emacs
   (package
     (name "emacs")
-    (version "26.1")
+    (version "26.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/emacs/emacs-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "0b6k1wq44rc8gkvxhi1bbjxbz3cwg29qbq8mklq2az6p1hjgrx0w"))
+               "13n5m60i47k96mpv5pp6km2ph9rv2m5lmbpzj929v02vpsfyc70m"))
              (patches (search-patches "emacs-exec-path.patch"
                                       "emacs-fix-scheme-indent-function.patch"
                                       "emacs-source-date-epoch.patch"))
diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm
index 5ea2b17197..a65998c369 100644
--- a/gnu/packages/embedded.scm
+++ b/gnu/packages/embedded.scm
@@ -1013,6 +1013,8 @@ SPI, I2C, JTAG.")
                             "uptools/atcmd/atinterf.c")
                (("/opt/freecalypso/loadtools")
                 (string-append (assoc-ref outputs "out") "/lib/freecalypso/loadtools"))
+               (("\\$\\{INSTALL_PREFIX\\}/loadtools")
+                (string-append (assoc-ref outputs "out") "/lib/freecalypso/loadtools"))
                (("/opt/freecalypso")
                 (assoc-ref outputs "out")))
              #t)))))
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 902e766438..f9358c7225 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -466,13 +466,13 @@ and Game Boy Color games.")
     (version "2.5")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/mupen64plus/mupen64plus-core/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mupen64plus/mupen64plus-core.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "0dg2hksm5qni2hcha93k7n4fqr92888p946f7phb0ndschzfh9kk"))))
+        (base32 "116fndl6652zrp1r6ag4xv3dzp1x52mlvadj8xwflq07fd5rhri1"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -514,13 +514,13 @@ core library.")
     (version "2.5")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/mupen64plus/mupen64plus-audio-sdl/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mupen64plus/mupen64plus-audio-sdl.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "0ss6w92n2rpfnazhg9lbq0nvs3fqx93nliz3k3wjxdlx4dpi7h3a"))))
+        (base32 "0z19amfg9vr2pqjjri1ipc7hs681fzjcnb0f9y7bjhp5n8d7p6bb"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -560,13 +560,13 @@ SDL audio plugin.")
     (version "2.5")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/mupen64plus/mupen64plus-input-sdl/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mupen64plus/mupen64plus-input-sdl.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "11sj5dbalp2nrlmki34vy7wy28vc175pnnkdk65p8599hnyq37ri"))))
+        (base32 "1dyazfbdjycdfslq8jixqiqhziw0rlkvach2r9dz91229jmkyc9c"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("which" ,which)))
@@ -605,13 +605,13 @@ SDL input plugin.")
     (version "2.5")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/mupen64plus/mupen64plus-rsp-hle/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mupen64plus/mupen64plus-rsp-hle.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "15h7mgz6xd2zjzm6l3f96sbs8kwr3xvbwzgikhnka79m6c69hsxv"))))
+        (base32 "0pi31qzjjp7aypdvvnz6ms18g09c4gqzxi6328zj8sji94b75gf0"))))
     (build-system gnu-build-system)
     (inputs
      `(("mupen64plus-core" ,mupen64plus-core)))
@@ -647,13 +647,13 @@ high-level emulation (HLE) RSP processor plugin.")
     (version "2.0.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/mupen64plus/mupen64plus-rsp-z64/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mupen64plus/mupen64plus-rsp-z64.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "10jz1w2dhx5slhyk4m8mdqlpsd6cshchslr1fckb2ayzb1ls3ghi"))))
+        (base32 "0nfyjns9k8xbg3aqs7593nfaxvlj72h3l8h467442xlk8ajfcylx"))))
     (build-system gnu-build-system)
     (inputs
      `(("mupen64plus-core" ,mupen64plus-core)))
@@ -689,13 +689,13 @@ Z64 RSP processor plugin.")
     (version "2.0.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/mupen64plus/mupen64plus-video-arachnoid/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mupen64plus/mupen64plus-video-arachnoid.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "0jjwf144rihznm4lnqbhgigxw664v3v32wy94adaa6imk8z6gslh"))))
+        (base32 "1v9fqwpb6pawr8z5cm2ki7bqkks4iyr5c4jy4v5khj6h8zcv55gc"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -735,13 +735,13 @@ Arachnoid video plugin.")
     (version "2.0.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/mupen64plus/mupen64plus-video-glide64/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mupen64plus/mupen64plus-video-glide64.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "1rm55dbf6xgsq1blbzs6swa2ajv0qkn38acbljj346abnk6s3dla"))))
+        (base32 "0qn5za7g7796kh2ag3xpmhbqg0yf71g9liz6ks0rha8pz73lgs01"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -789,13 +789,13 @@ Glide64 video plugin.")
     (version "2.5")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/mupen64plus/mupen64plus-video-glide64mk2/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mupen64plus/mupen64plus-video-glide64mk2.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "1ihl4q293d6svba26b4mhapjcdg12p90gibz79b4mx423jlcxxj9"))))
+        (base32 "08pm28a36dpr0cvr8pzw0n5ksdazp7jqvlmqfy2lwb4dm0cwhkqd"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -839,13 +839,13 @@ Glide64MK2 video plugin.")
     (version "2.5")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/mupen64plus/mupen64plus-video-rice/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mupen64plus/mupen64plus-video-rice.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "0rd2scjmh285w61aj3mgx71whg5rqrjbry3cdgicczrnyvf8wdvk"))))
+        (base32 "0rpmbcq67gsj5h5jjis146378qc1mskskvx20y1ikx59yhbamh13"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -887,13 +887,13 @@ Rice Video plugin.")
     (version "2.0.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/mupen64plus/mupen64plus-video-z64/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mupen64plus/mupen64plus-video-z64.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "1x7wsjs5gx2iwx20p4cjcbf696zsjlh31qxmghwv0ifrq8x58s1b"))
+        (base32 "04qa2fdd6dakpk2v0d4l80xh9b4h8gm71g80c0wyyxdhmhwk1r9c"))
        (patches (search-patches "mupen64plus-video-z64-glew-correct-path.patch"))))
     (build-system gnu-build-system)
     (native-inputs
@@ -942,13 +942,13 @@ Z64 video plugin.")
     (version "2.5")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/mupen64plus/mupen64plus-ui-console/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mupen64plus/mupen64plus-ui-console.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "04qkpd8ic7xsgnqz7spl00wxdygf79m7d1k8rabbygjk5lg6p8z2"))
+        (base32 "0vrf98qa6a0y3647kslsv644fag233dxh5dcr1yncjiiwickcr5a"))
        (patches (search-patches "mupen64plus-ui-console-notice.patch"))))
     (build-system gnu-build-system)
     (native-inputs
@@ -1005,21 +1005,21 @@ towards a working Mupen64Plus for casual users.")
   (package
     (name "nestopia-ue")
     (version "1.48")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/rdanbrook/nestopia/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "184y05z4k4a4m4022niy625kan0rklh8gcxyynxli1fss2sjjrpv"))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  ;; We don't need libretro for the GNU/Linux build.
-                  (delete-file-recursively "libretro")
-                  #t))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rdanbrook/nestopia.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "19c8vx5yxbysl0sszk5blfngwacshdgwbf44g1qaxvq8ywiyxmb4"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; We don't need libretro for the GNU/Linux build.
+           (delete-file-recursively "libretro")
+           #t))))
     (build-system cmake-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index a90ceab0d2..cf308e03f6 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -9,7 +9,7 @@
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2018, 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de>
-;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2019 Tim Stahel <swedneck@swedneck.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -2008,3 +2008,57 @@ editors.")
 slicing software to x3g files for standalone 3D printing on common 3D
 printers.")
     (license license:gpl2+)))
+
+(define-public gnucap
+  (package
+    (name "gnucap")
+    (version "20171003")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://git.savannah.gnu.org/cgit/gnucap.git/snapshot/gnucap-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "16m09xa685qhj5fqq3bcgakrwnb74xhf5f7rpqkkf9fg8plzbb1g"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("readline" ,readline)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               ;; Set correct rpath so that gnucap finds libgnucap.so.
+               (substitute* (list "apps/configure" "lib/configure"
+                                  "main/configure" "modelgen/configure")
+                 (("LDFLAGS =")
+                  (string-append "LDFLAGS = -Wl,-rpath=" out "/lib")))
+               ;; gnucap uses a hand-written configure script that expects the
+               ;; --prefix argument to be the first argument passed to it.
+               (invoke "./configure" (string-append "--prefix=" out)))))
+         (replace 'check
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (libpath "../lib/O:../apps/O"))
+               (with-directory-excursion "tests"
+                 ;; Make test return non-zero exit code when a test fails.
+                 (substitute* "test"
+                   (("/bin/sh") "/bin/sh -e")
+                   (("\\|\\| echo \"\\*\\*\\*\\* \\$ii fails \\*\\*\\*\\*\"") ""))
+                 ;; Fix expected plugin search path for test c_attach.1.gc
+                 (substitute* "==out/c_attach.1.gc.out"
+                   (("/usr/local/lib/gnucap")
+                    (string-append libpath ":" out "/lib/gnucap")))
+                 ;; Set library path so that gnucap can find libgnucap.so
+                 ;; while running the tests.
+                 (setenv "LD_LIBRARY_PATH" libpath)
+                 (invoke "./test" "../main/O/gnucap" "" "test-output" "==out"))))))))
+    (home-page "https://www.gnu.org/software/gnucap/")
+    (synopsis "Mixed analog and digital circuit simulator")
+    (description "GNUcap is a circuit analysis package.  It offers a general
+purpose circuit simulator and can perform DC and transient analyses, fourier
+analysis and AC analysis.  The engine is designed to do true mixed-mode
+simulation.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm
index c778ebd21e..3a7e3284a9 100644
--- a/gnu/packages/file-systems.scm
+++ b/gnu/packages/file-systems.scm
@@ -322,7 +322,7 @@ network.  LIBNFS offers three different APIs, for different use :
        `(("bzip2" ,bzip2)
          ("fuse" ,fuse)
          ("zlib" ,zlib)))
-      (synopsis "Read-only FUSE driver for the APFS filesystem")
+      (synopsis "Read-only FUSE driver for the APFS file system")
       (description "APFS-FUSE is a read-only FUSE driver for the @dfn{Apple File
 System} (APFS).  It is currently in an experimental state — it may not be able
 to read all files, and it does not support all the compression methods in
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index 575569d3aa..bd30d466f4 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -390,7 +390,7 @@ other machines/servers.  Electrum does not download the Bitcoin blockchain.")
   (package
     (inherit electrum)
     (name "electron-cash")
-    (version "3.3.6")
+    (version "4.0.1")
     (source
      (origin
        (method url-fetch)
@@ -401,7 +401,7 @@ other machines/servers.  Electrum does not download the Bitcoin blockchain.")
                            ".tar.gz"))
        (sha256
         (base32
-         "110apc376wm4yd9ghpffiipwdn8rzyr3z7ncpp2516wbz4mmyhxc"))
+         "16fi03f23yb5r9s64x1a9wrxnvivlbawvrbq4d486yclzl1r7y48"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -627,7 +627,7 @@ Monero GUI client.")
 (define-public python-trezor-agent
   (package
     (name "python-trezor-agent")
-    (version "0.13.0")
+    (version "0.13.1")
     (source
      (origin
        (method git-fetch)
@@ -636,7 +636,7 @@ Monero GUI client.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0i4igkxi8fwdlbhg6nx27lhnc9v9nmrw4j5fvpnc202n6yjlc7x7"))))
+        (base32 "0q99vbfd3h85s8rnjipnmldixabqmmlk5w9karv6f0rhyi54f4zv"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -733,14 +733,14 @@ Ledger Blue/Nano S.")
 (define-public python-trezor
   (package
     (name "python-trezor")
-    (version "0.11.1")
+    (version "0.11.2")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "trezor" version))
         (sha256
           (base32
-            "064yds8f4px0c6grkkanpdjx022g4q87ihzhkmdv9qanv0hz6hv0"))))
+            "1f0zfki12mnhidkfxpx2lpq1xim8f35i2d64bx9lf4m26xxv9x56"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -779,14 +779,14 @@ TREZOR Hardware Wallet.")
 (define-public python-keepkey
   (package
     (name "python-keepkey")
-    (version "6.0.2")
+    (version "6.0.3")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "keepkey" version))
         (sha256
           (base32
-            "16j8hnxj9r4b2w6kfncmny09pb1al8ppmn59qxzl3qmh1xhpy45g"))))
+            "0z3d0m6364v9dv0njs4cd5m5ai6j6v35xaaxfxl90m9vmyxy81vd"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm
index 0f3e1009ac..4df4b22843 100644
--- a/gnu/packages/firmware.scm
+++ b/gnu/packages/firmware.scm
@@ -377,7 +377,7 @@ Virtual Machines.  OVMF contains a sample UEFI firmware for QEMU and KVM.")
 (define* (make-arm-trusted-firmware platform #:optional (arch "aarch64"))
   (package
     (name (string-append "arm-trusted-firmware-" platform))
-    (version "1.5")
+    (version "2.1")
     (source
       (origin
         (method git-fetch)
@@ -388,7 +388,7 @@ Virtual Machines.  OVMF contains a sample UEFI firmware for QEMU and KVM.")
         (file-name (git-file-name "arm-trusted-firmware" version))
        (sha256
         (base32
-         "1gm0bn2llzfzz9bfsz11fhwxj5lxvyrq7bc13fjj033nljzxn7k8"))))
+         "1gy5qskrjy8n3kxdcm1dx8b45l5b75n0pm8pq80wl6xic1ycy24r"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -448,25 +448,10 @@ such as:
                    license:bsd-2)))) ; libfdt
 
 (define-public arm-trusted-firmware-sun50i-a64
-  (let ((base (make-arm-trusted-firmware "sun50i_a64"))
-        ;; Use unreleased version which enables additional features needed for
-        ;; LCD support
-        (commit "98aab97484b27e40aa74a93e5d1c1ac037a7e0b8")
-        (revision "2"))
+  (let ((base (make-arm-trusted-firmware "sun50i_a64")))
     (package
       (inherit base)
-      (name "arm-trusted-firmware-sun50i-a64")
-      (version (git-version "2.0" revision commit))
-      (source
-        (origin
-          (method git-fetch)
-          (uri (git-reference
-                 (url "https://github.com/ARM-software/arm-trusted-firmware.git")
-                 (commit commit)))
-          (file-name (git-file-name name version))
-          (sha256
-           (base32
-            "0z5si034vcn4m68zaixc5v8fs1c7vxbh7n4hggxs55p0jg01dan5")))))))
+      (name "arm-trusted-firmware-sun50i-a64"))))
 
 (define-public arm-trusted-firmware-puma-rk3399
   (let ((base (make-arm-trusted-firmware "rk3399"))
diff --git a/gnu/packages/flashing-tools.scm b/gnu/packages/flashing-tools.scm
index d9c663d7f4..f0547a1a8a 100644
--- a/gnu/packages/flashing-tools.scm
+++ b/gnu/packages/flashing-tools.scm
@@ -127,15 +127,14 @@ brick your device.")
 (define-public avrdude
   (package
     (name "avrdude")
-    (version "6.1")
+    (version "6.3")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://savannah/avrdude/avrdude-"
                           version ".tar.gz"))
       (sha256
-       (base32
-        "0frxg0q09nrm95z7ymzddx7ysl77ilfbdix1m81d9jjpiv5bm64y"))))
+       (base32 "15m1w1qad3dj7r8n5ng1qqcaiyx1gyd6hnc3p2apgjllccdp77qg"))))
     (build-system gnu-build-system)
     (inputs
      `(("libelf" ,libelf)
@@ -148,8 +147,8 @@ brick your device.")
     (synopsis "AVR downloader and uploader")
     (description
      "AVRDUDE is a utility to download/upload/manipulate the ROM and
-EEPROM contents of AVR microcontrollers using the in-system programming
-technique (ISP).")
+EEPROM contents of AVR microcontrollers using the @acronym{ISP, in-system
+programming} technique.")
     (license license:gpl2+)))
 
 (define-public dfu-programmer
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 25d93fd28d..a84cb3b97a 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -54,12 +54,14 @@
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages gettext)
+  #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)                ;intltool
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gperf)
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages gtk)
+  #:use-module (gnu packages image)
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages libunwind)
   #:use-module (gnu packages libusb)
@@ -74,6 +76,7 @@
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages valgrind)
+  #:use-module (gnu packages video)
   #:use-module (gnu packages w3m)
   #:use-module (gnu packages web)
   #:use-module (gnu packages xdisorg)
@@ -628,7 +631,7 @@ applications, X servers (rootless or fullscreen) or other display servers.")
 (define-public weston
   (package
     (name "weston")
-    (version "5.0.0")
+    (version "6.0.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -636,30 +639,40 @@ applications, X servers (rootless or fullscreen) or other display servers.")
                     "weston-" version ".tar.xz"))
               (sha256
                (base32
-                "1bsc9ry566mpk6fdwkqpvwq2j7m79d9cvh7d3lgf6igsphik98hm"))))
-    (build-system gnu-build-system)
+                "04p6hal5kalmdp5dxwh2h5qhkkb4dvbsk7l091zvvcq70slj6qsl"))))
+    (build-system meson-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("xorg-server" ,xorg-server)))
     (inputs
      `(("cairo" ,cairo-xcb)
+       ("colord" ,colord)
        ("dbus" ,dbus)
        ("elogind" ,elogind)
+       ("lcms" ,lcms)
+       ("libevdev" ,libevdev)
        ("libinput" ,libinput-minimal)
+       ("libjpeg" ,libjpeg)
        ("libunwind" ,libunwind)
+       ("libva" ,libva)
+       ("libwebp" ,libwebp)
        ("libxcursor" ,libxcursor)
        ("libxkbcommon" ,libxkbcommon)
+       ("libxml2" ,libxml2)
        ("mesa" ,mesa)
        ("mtdev" ,mtdev)
        ("linux-pam" ,linux-pam)
+       ("pango" ,pango)
        ("wayland" ,wayland)
        ("wayland-protocols" ,wayland-protocols)
        ("xorg-server-xwayland" ,xorg-server-xwayland)))
     (arguments
      `(#:configure-flags
-       (list "--disable-setuid-install"
-             "--enable-systemd-login"
-             (string-append "--with-xserver-path="
+       (list "-Dbackend-rdp=false" ; TODO: Enable.
+             "-Dremoting=false" ; TODO: Enable.
+             "-Dsimple-dmabuf-drm=auto"
+             "-Dsystemd=false"
+             (string-append "-Dxwayland-path="
                             (assoc-ref %build-inputs "xorg-server-xwayland")
                             "/bin/Xwayland"))
        #:parallel-tests? #f ; Parallel tests cause failures.
@@ -668,8 +681,8 @@ applications, X servers (rootless or fullscreen) or other display servers.")
          (add-before 'configure 'use-elogind
            (lambda _
              ;; Use elogind instead of systemd
-             (substitute* "configure"
-               (("libsystemd-login >= 198") "libelogind"))
+             (substitute* "libweston/meson.build"
+               (("libsystemd-login") "libelogind"))
              (substitute* '("libweston/launcher-logind.c"
                             "libweston/weston-launch.c")
                (("#include <systemd/sd-login.h>")
@@ -677,7 +690,8 @@ applications, X servers (rootless or fullscreen) or other display servers.")
              #t))
          (add-after 'configure 'patch-confdefs.h
            (lambda _
-             (system "echo \"#define HAVE_SYSTEMD_LOGIN_209 1\" >> confdefs.h")))
+             (system "echo \"#define HAVE_SYSTEMD_LOGIN_209 1\" >> confdefs.h")
+             #t))
          (add-before 'check 'setup
            (lambda _
              (setenv "HOME" (getcwd))
@@ -906,7 +920,7 @@ interfaces, based on the useradd, usermod and userdel commands.")
 (define-public libmbim
   (package
     (name "libmbim")
-    (version "1.18.0")
+    (version "1.18.2")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -914,7 +928,7 @@ interfaces, based on the useradd, usermod and userdel commands.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "10mjjy860aakfd3h1yaj9l1jw816amrpwmyqlx37j21xv0l03x3c"))))
+                "0s4jsfsydp2vykv7lnimalp9i680aas1qcx7zdpjiic64b5g48vp"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for glib-mkenums
@@ -937,7 +951,7 @@ which speak the Mobile Interface Broadband Model (MBIM) protocol.")
 (define-public libqmi
   (package
     (name "libqmi")
-    (version "1.22.2")
+    (version "1.22.4")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -945,7 +959,7 @@ which speak the Mobile Interface Broadband Model (MBIM) protocol.")
                     "libqmi-" version ".tar.xz"))
               (sha256
                (base32
-                "09w20dsgr16bgbqw5ds7r6j2s6ihwyalh9zpbjhcn7cvm0afbwgi"))))
+                "1wgrrb9vb3myl8xgck8ik86876ycbg8crylybs3ssi21vrxqwnsc"))))
     (build-system gnu-build-system)
     (inputs
      `(("libgudev" ,libgudev)))
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 5ff28532fb..79b87856d5 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2015, 2016, 2017 David Thompson <davet@gnu.org>
 ;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net>
-;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2017, 2018 Julian Graham <joolean@gmail.com>
 ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
@@ -1404,3 +1404,33 @@ Fenix.")
     (description "This package contains a collection of modules for the Bennu
 Game Developement programming language, from CD handling through SDL to
 joystick support.")))
+
+(define-public plib
+  (package
+    (name "plib")
+    (version "1.8.5")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://plib.sourceforge.net/dist/"
+                                  "plib-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0cha71mflpa10vh2l7ipyqk67dq2y0k5xbafwdks03fwdyzj4ns8"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("mesa" ,mesa)
+       ("libxi" ,libxi)
+       ("libxmu" ,libxmu)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "http://plib.sourceforge.net/")
+    (synopsis "Suite of portable game libraries")
+    (description "PLIB is a set of libraries that will permit programmers to
+write games and other realtime interactive applications that are 100% portable
+across a wide range of hardware and operating systems.  PLIB includes sound
+effects, music, a complete 3D engine, font rendering, a simple Windowing
+library, a game scripting language, a GUI, networking, 3D math library and a
+collection of handy utility functions.  All are 100% portable across nearly
+all modern computing platforms.  Each library component is fairly independent
+of the others")
+    (license license:lgpl2.0+)))
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 2afe5b58ba..0b93409c76 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -3542,12 +3542,19 @@ Linux / Mac OS X servers, and an auto mapper with a VT100 map display.")
     (inputs
      `(("lablgtk" ,lablgtk)
        ("ocaml" ,ocaml)
-       ("ocaml-findlib" ,ocaml-findlib)))
+       ("ocaml-findlib" ,ocaml-findlib)
+       ("ocamlbuild" ,ocamlbuild)))
     (arguments
      '(#:phases
        (modify-phases %standard-phases
          (delete 'configure)
-         (add-before 'build 'setenv
+         (add-before 'build 'allow-unsafe-strings
+           ;; Fix a build failure with ocaml >=4.06.0.
+           ;; See <https://github.com/sgimenez/laby/issues/53>.
+           (lambda _
+             (setenv "OCAMLPARAM" "safe-string=0,_")
+             #t))
+         (add-before 'build 'set-library-path
            (lambda* (#:key inputs #:allow-other-keys)
              (let ((lablgtk (assoc-ref inputs "lablgtk")))
                (setenv "LD_LIBRARY_PATH"
@@ -6765,3 +6772,198 @@ a procedurally generated world, the player can explore thousands of rooms in
 search of powerful artifacts, tools to help them, and to eventually free the
 Orcus Dome from evil.")
     (license license:gpl3+)))
+
+(define-public marble-marcher
+  (let ((commit "e580460a0c3826f9b28ab404607942a8ecb625d7")
+        (revision "1"))
+    (package
+      (name "marble-marcher")
+      (version (git-version "0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/HackerPoet/MarbleMarcher.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0jjv832hl1v170n6gryp2sr3lgqndi9ab841qvgqk68bks8701mx"))))
+      (build-system cmake-build-system)
+      (arguments
+       `(#:tests? #f  ; there are none
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'embed-asset-directory
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let ((assets (string-append (assoc-ref outputs "out")
+                                            "/share/marble-marcher/assets/")))
+                 ;; Some of the files we're patching are
+                 ;; ISO-8859-1-encoded, so choose it as the default
+                 ;; encoding so the byte encoding is preserved.
+                 (with-fluids ((%default-port-encoding #f))
+                   (substitute* "src/Resource.rc"
+                     (("../assets/icon.ico")
+                      (string-append assets "icon.ico")))
+                   (substitute* "src/Res.h"
+                     (("assets/") assets))))
+               #t))
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (assets (string-append out "/share/marble-marcher/assets"))
+                      (bin (string-append out "/bin/")))
+                 (mkdir-p bin)
+                 (mkdir-p assets)
+                 (copy-recursively "../source/assets" assets)
+                 (install-file "MarbleMarcher" bin))
+               #t)))))
+      (inputs
+       `(("eigen" ,eigen)
+         ("mesa" ,mesa)
+         ("sfml" ,sfml)))
+      (native-inputs
+       `(("pkg-config" ,pkg-config)))
+      (home-page "https://codeparade.itch.io/marblemarcher")
+      (synopsis "Guide a marble across fractal landscapes")
+      (description "Marble Marcher is a video game that uses a fractal physics
+engine and fully procedural rendering to produce beautiful and unique
+gameplay.  The game is played on the surface of evolving fractals.  The goal
+of the game is to get your marble to the flag as quickly as possible.  But be
+careful not to fall off the level or get crushed by the fractal!  There are 24
+levels to unlock.")
+      ;; Code is under GPLv2+, assets are under CC-BY-SA 3.0 and OFL 1.1.
+      (license (list license:gpl2+
+                     license:silofl1.1
+                     license:cc-by-sa3.0)))))
+
+;; This must be updated together with flightgear.
+(define simgear
+  (package
+    (name "simgear")
+    (version "2018.3.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/flightgear/release-"
+                                  (version-major+minor version) "/"
+                                  "simgear-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "1941ay8rngz4vwsx37bbpxr48hpcvcbj3xw1hy264lq4qnl99c68"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             ;; Skip tests that require internet access.
+             (invoke "ctest" "-E" "(http|dns)"))))))
+    (inputs
+     `(("boost" ,boost-for-mysql) ; fails with 1.69
+       ("curl" ,curl)
+       ("expat" ,expat)
+       ("mesa" ,mesa)
+       ("openal" ,openal)
+       ("openscenegraph" ,openscenegraph-3.4)
+       ("zlib" ,zlib)))
+    (home-page "https://home.flightgear.org/")
+    (synopsis "Libraries for 3D simulations and games")
+    (description "SimGear is a set of libraries designed to be used as
+building blocks for quickly assembling 3D simulations, games, and
+visualization applications.  SimGear is developed by the FlightGear project
+and also provides the base for the FlightGear Flight Simulator.")
+    (license license:lgpl2.0+)))
+
+(define-public flightgear
+  (package
+    (name "flightgear")
+    (version (package-version simgear))
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/flightgear/release-"
+                                  (version-major+minor version) "/"
+                                  "flightgear-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "0lzy524cjzs8vldcjcc750bgg5c4mq9fkymxxxzqf68ilc4d1jss"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; There are some bundled libraries.
+                  (for-each delete-file-recursively
+                            '("3rdparty/sqlite3/"))
+                  #t))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags
+       (list "-DSYSTEM_SQLITE=ON"
+             (string-append "-DFG_DATA_DIR="
+                            (assoc-ref %outputs "out")
+                            "/share/flightgear"))
+       ;; TODO: test cannot be run because the "run_test_suite" executable
+       ;; does not seem to be built.
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'wrap-executable
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (wrap-program (string-append out "/bin/fgfs")
+                 `("QT_PLUGIN_PATH" ":" prefix
+                   ,(map (lambda (label)
+                           (string-append (assoc-ref inputs label)
+                                          "/lib/qt5/plugins"))
+                         '("qtbase" "qtdeclarative" "qtsvg")))
+                 `("QML2_IMPORT_PATH" ":" prefix
+                   ,(map (lambda (label)
+                           (string-append (assoc-ref inputs label)
+                                          "/lib/qt5/qml"))
+                         '("qtdeclarative" "qtsvg"))))
+               #t)))
+         (add-after 'install 'install-data
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((share (string-append (assoc-ref outputs "out") "/share/flightgear")))
+               (mkdir-p share)
+               (with-directory-excursion share
+                 (invoke "tar" "xf" (assoc-ref inputs "flightgear-data")
+                         "--strip-components=1")))
+             #t)))))
+    (inputs
+     `(("boost" ,boost-for-mysql)       ; same as simgear
+       ("dbus" ,dbus)
+       ("eudev" ,eudev)
+       ("freeglut" ,freeglut)
+       ("freetype" ,freetype)
+       ("glew" ,glew)
+       ("libpng" ,libpng)
+       ("openal" ,openal)
+       ("openscenegraph" ,openscenegraph-3.4)
+       ("plib" ,plib)
+       ("qtbase" ,qtbase)
+       ("qtdeclarative" ,qtdeclarative)
+       ("qtsvg" ,qtsvg)
+       ("simgear" ,simgear)
+       ("speexdsp" ,speexdsp)
+       ("sqlite" ,sqlite)
+       ("zlib" ,zlib)))
+    (native-inputs
+     `(("cppunit" ,cppunit)
+       ("pkg-config" ,pkg-config)
+       ("qttools" ,qttools)
+       ("flightgear-data"
+        ,(origin
+           (method url-fetch)
+           (uri (string-append "mirror://sourceforge/flightgear/release-"
+                               (version-major+minor version) "/"
+                               "FlightGear-" version "-data.tar.bz2"))
+           (sha256
+            (base32
+             "0h4npa7gqpf5fw6pv2bpw0wbwr7fa2vhia21cjbigfgd75x82zi7"))))))
+    (home-page "https://home.flightgear.org/")
+    (synopsis "Flight simulator")
+    (description "The goal of the FlightGear project is to create a
+sophisticated flight simulator framework for use in research or academic
+environments, pilot training, as an industry engineering tool, for DIY-ers to
+pursue their favorite interesting flight simulation idea, and last but
+certainly not least as a fun, realistic, and challenging desktop flight
+simulator.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index 4761a277ae..0b95fbe613 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -746,14 +746,14 @@ to create databases that are optimized for rendering/tile/map-services.")
     (name "libosmium")
     (version "2.14.2")
     (source
-      (origin
-        (method url-fetch)
-        (uri (string-append "https://github.com/osmcode/libosmium/archive/v"
-                version ".tar.gz"))
-    (file-name (string-append name "-" version ".tar.gz"))
-        (sha256
-         (base32
-          "0d9b46qiw7zkw1h9lygjdwqxnbhm3c7v8kydzw9f9f778cyagc94"))))
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/osmcode/libosmium.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "123ri1l0a2b9fljgpwsl7z2w4i3kmgxz79d4ns9z4mwbp8sw0250"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("boost" ,boost)
@@ -776,20 +776,21 @@ OpenStreetMap data.")
   (package
     (name "osm2pgsql")
     (version "0.96.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/openstreetmap/osm2pgsql/archive/"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "08y7776r4l9v9177a4q6cfdri0lpirky96m6g699hwl7v1vhw0mn"))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  (delete-file-recursively "contrib/protozero")
-                  (delete-file-recursively "contrib/libosmium")
-                  #t))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/openstreetmap/osm2pgsql.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "032cydh8ynaqfhdzmkvgbmqyjql668y6qln1l59l2s3ni9963bbl"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           (delete-file-recursively "contrib/protozero")
+           (delete-file-recursively "contrib/libosmium")
+           #t))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f; tests fail because we need to setup a database
@@ -823,14 +824,15 @@ map, geocoding with Nominatim, or general analysis.")
   (package
     (name "tippecanoe")
     (version "1.31.5")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/mapbox/tippecanoe/archive/"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1057na1dkgjaryr7jr15lqkxpam111d3l5zdpdkqzzzpxmdjxqcf"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mapbox/tippecanoe.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1m0x931a945sr7axyhcvpwh798m58hx1zxh6ikgf9gsgqhdhmszz"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm
index 575666fdeb..3ead5b32a3 100644
--- a/gnu/packages/gimp.scm
+++ b/gnu/packages/gimp.scm
@@ -118,7 +118,7 @@ buffers.")
 (define-public gimp
   (package
     (name "gimp")
-    (version "2.10.8")
+    (version "2.10.10")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://download.gimp.org/pub/gimp/v"
@@ -126,7 +126,7 @@ buffers.")
                                   "/gimp-" version ".tar.bz2"))
               (sha256
                (base32
-                "16sb4kslwin2jbgdb4nhks78pd0af8mvj8g5hap3hj946p7w2jfq"))))
+                "0xwck5nbpb945s1cyij3kfqw1pchbhx8i5vf5hgywyjw4r1z5l8j"))))
     (build-system gnu-build-system)
     (outputs '("out"
                "doc"))                            ; 9 MiB of gtk-doc HTML
@@ -368,5 +368,5 @@ MyPaint.")
      "This package provides resynthesizer plugins for GIMP, which encompasses
 tools for healing selections (content-aware fill), enlarging the canvas and
 healing the border, increasing the resolution while adding detail, and
-transfering the style of an image.")
+transferring the style of an image.")
     (license license:gpl3+)))
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index ff8e8ad2e0..5583af576b 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -2666,7 +2666,7 @@ libxml to ease remote use of the RESTful API.")
 (define-public libsoup
   (package
     (name "libsoup")
-    (version "2.66.0")
+    (version "2.66.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/libsoup/"
@@ -2674,7 +2674,7 @@ libxml to ease remote use of the RESTful API.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "08c9kkdhzy504gv23pfdm4sq3dd3j20sikwz6gv0qrwcdjnw5bai"))))
+                "1zs3bhspwg7fggxd7x1rrggpkcf2j9ch6dhncq9syh252z0vcb2a"))))
     (build-system meson-build-system)
     (outputs '("out" "doc"))
     (arguments
@@ -4309,15 +4309,15 @@ work and the interface is well tested.")
 (define-public eolie
   (package
     (name "eolie")
-    (version "0.9.52")
+    (version "0.9.60")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://gitlab.gnome.org/World/eolie/"
-                                  "uploads/d95bf72958276c80dfaca8cce0e4e92c/"
+                                  "uploads/3b2ceb7eb15860587db6886bfdd8a91e/"
                                   "eolie-" version ".tar.xz"))
               (sha256
                (base32
-                "1s3b0rkm8sxmhzzi624snzqvz61i1rja5wxyzw6jg2kcdjcylwln"))))
+                "1s9gkzxa6457v6bh0q8n1ijq1chd2jwgvhk5kppsnya7kxvsx8qh"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t
@@ -4378,9 +4378,9 @@ a secret password store, an adblocker, and a modern UI.")
     (version "3.28.3.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/" name "/"
+              (uri (string-append "mirror://gnome/sources/epiphany/"
                                   (version-major+minor version) "/"
-                                  name "-" version ".tar.xz"))
+                                  "epiphany-" version ".tar.xz"))
               (sha256
                (base32
                 "1xz6xl6b0iihvczyr0cs1z5ifvpai6anb4m0ng1caiph06klc1b9"))))
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 25c9e0b476..f9baf49fe9 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Tomáš Čech <sleep_walker@gnu.org>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016, 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
@@ -538,6 +538,32 @@ virtual reality, scientific visualization and modeling.")
     ;; LGPL 2.1, but with 4 exceptions. This version is called OSGPL.
     (license license:lgpl2.1)))
 
+;; We need this for simgear
+(define-public openscenegraph-3.4
+  (package (inherit openscenegraph)
+    (name "openscenegraph")
+    (version "3.4.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/openscenegraph/OpenSceneGraph")
+             (commit (string-append "OpenSceneGraph-" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1fbzg1ihjpxk6smlq80p3h3ggllbr16ihd2fxpfwzam8yr8yxip9"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments openscenegraph)
+       ((#:configure-flags flags)
+        `(cons
+          ;; The jpeg plugin requires conversion between integers and booleans
+          "-DCMAKE_CXX_FLAGS=-fpermissive"
+          ,flags))))
+    (inputs
+     `(("libjpeg" ,libjpeg)
+       ,@(package-inputs openscenegraph)))))
+
 (define-public povray
   (package
     (name "povray")
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index d4f019c814..e7f9e8fe93 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -17,7 +17,7 @@
 ;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
-;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
 ;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2019 swedebugia <swedebugia@riseup.net>
@@ -898,33 +898,30 @@ tracker's SOAP service, such as @url{https://bugs.gnu.org}.")
     (license license:gpl3+)))
 
 (define-public guile-email
-  (let ((commit "fa52eac55e5946db89621a6c583d2aa357864dee")
-        (revision "1"))
-    (package
-      (name "guile-email")
-      (version (git-version "0.1.0" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://git.systemreboot.net/guile-email")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "1037mbz7qd9bzaqp8ysyhnl9ipd97fmj3b9jr8qfzx9179vvsj63"))))
-      (build-system gnu-build-system)
-      (native-inputs
-       `(("pkg-config" ,pkg-config)
-         ("autoconf" ,autoconf)
-         ("automake" ,automake)))
-      (inputs
-       `(("guile" ,guile-2.2)))
-      (home-page "https://git.systemreboot.net/guile-email")
-      (synopsis "Guile email parser")
-      (description "This package provides an email parser written in pure
+  (package
+    (name "guile-email")
+    (version "0.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://git.systemreboot.net/guile-email/snapshot/guile-email-"
+             version ".tar.xz"))
+       (sha256
+        (base32
+         "0p2v8q2kkz8m6vf2rsjvz3dj1mvnx7dxakjf72dwkndbgk3rp79f"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("autoconf" ,autoconf)
+       ("automake" ,automake)))
+    (inputs
+     `(("guile" ,guile-2.2)))
+    (home-page "https://git.systemreboot.net/guile-email")
+    (synopsis "Guile email parser")
+    (description "This package provides an email parser written in pure
 Guile.")
-      (license license:agpl3+))))
+    (license license:agpl3+)))
 
 (define-public guile-debbugs-next
   (let ((commit "75a331d561c8b6f8efcf16216dab961c17759efe")
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index a23dfe9ae6..3d269cea83 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2015, 2016 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2015 Siniša Biđin <sinisa@bidin.eu>
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
-;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2015, 2019 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
@@ -833,6 +833,28 @@ code pages on Windows.  On all other operating systems, the library does
 nothing.")
   (license license:bsd-3)))
 
+(define-public ghc-libffi
+  (package
+    (name "ghc-libffi")
+    (version "0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "libffi/libffi-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0g7jnhng3j7z5517aaqga0144aamibsbpgm3yynwyfzkq1kp0f28"))))
+    (build-system haskell-build-system)
+    (native-inputs `(("pkg-config" ,pkg-config)))
+    (inputs `(("libffi" ,libffi)))
+    (home-page "http://hackage.haskell.org/package/libffi")
+    (synopsis "Haskell binding to libffi")
+    (description
+     "A binding to libffi, allowing C functions of types only known at runtime
+to be called from Haskell.")
+    (license license:bsd-3)))
+
 (define-public ghc-newtype-generics
   (package
     (name "ghc-newtype-generics")
diff --git a/gnu/packages/idris.scm b/gnu/packages/idris.scm
index f80d6b3894..ec3eb15d63 100644
--- a/gnu/packages/idris.scm
+++ b/gnu/packages/idris.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 ;;; Copyright © 2016, 2017 David Craven <david@craven.ch>
 ;;; Copyright © 2018 Alex ter Weele <alex.ter.weele@gmail.com>
+;;; Copyright © 2019 Eric Bavier <bavier@member.fsf.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -19,11 +20,14 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages idris)
+  #:use-module (gnu packages)
   #:use-module (gnu packages haskell)
   #:use-module (gnu packages haskell-check)
   #:use-module (gnu packages haskell-web)
+  #:use-module (gnu packages libffi)
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages perl)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system haskell)
   #:use-module (guix download)
@@ -34,7 +38,7 @@
 (define-public idris
   (package
     (name "idris")
-    (version "1.3.0")
+    (version "1.3.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -42,8 +46,14 @@
                     "idris-" version "/idris-" version ".tar.gz"))
               (sha256
                (base32
-                "1w5i2z88li4niykwc6yrgxgfp25ll6ih95cip0ri7d8i7ik03c48"))))
+                "0fn9h58l592j72njwma1ia48h8h87wi2rjqfxs7j2lfmvgfv18fi"))
+              (patches (search-patches "idris-test-no-node.patch"))))
     (build-system haskell-build-system)
+    (native-inputs                      ;For tests
+     `(("perl" ,perl)
+       ("ghc-tasty" ,ghc-tasty)
+       ("ghc-tasty-golden" ,ghc-tasty-golden)
+       ("ghc-tasty-rerun" ,ghc-tasty-rerun)))
     (inputs
      `(("gmp" ,gmp)
        ("ncurses" ,ncurses)
@@ -60,6 +70,7 @@
        ("ghc-fingertree" ,ghc-fingertree)
        ("ghc-fsnotify" ,ghc-fsnotify)
        ("ghc-ieee754" ,ghc-ieee754)
+       ("ghc-libffi" ,ghc-libffi)
        ("ghc-megaparsec" ,ghc-megaparsec)
        ("ghc-network" ,ghc-network)
        ("ghc-optparse-applicative" ,ghc-optparse-applicative)
@@ -75,21 +86,16 @@
        ("ghc-vector-binary-instances" ,ghc-vector-binary-instances)
        ("ghc-zip-archive" ,ghc-zip-archive)))
     (arguments
-     `(#:tests? #f ; FIXME: Test suite doesn't run in a sandbox.
-       #:configure-flags
+     `(#:configure-flags
        (list (string-append "--datasubdir="
-                            (assoc-ref %outputs "out") "/lib/idris"))
+                            (assoc-ref %outputs "out") "/lib/idris")
+             "-fFFI" "-fGMP")
        #:phases
        (modify-phases %standard-phases
          (add-before 'configure 'set-cc-command
            (lambda _
              (setenv "CC" "gcc")
              #t))
-         (add-before 'configure 'update-constraints
-           (lambda _
-             (substitute* "idris.cabal"
-               (("aeson >= 0\\.6 && < 1\\.3")
-                "aeson >= 0.6 && < 1.4"))))
          (add-after 'install 'fix-libs-install-location
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -99,7 +105,15 @@
                 (lambda (module)
                   (symlink (string-append modules "/" module)
                            (string-append lib "/" module)))
-                '("prelude" "base" "contrib" "effects" "pruviloj"))))))))
+                '("prelude" "base" "contrib" "effects" "pruviloj")))))
+         (delete 'check)                ;Run check later
+         (add-after 'install 'check
+           (lambda* (#:key outputs #:allow-other-keys #:rest args)
+             (let ((out (assoc-ref outputs "out")))
+               (setenv "TASTY_NUM_THREADS" (number->string (parallel-job-count)))
+               (setenv "IDRIS_CC" "gcc") ;Needed for creating executables
+               (setenv "PATH" (string-append out "/bin:" (getenv "PATH")))
+               (apply (assoc-ref %standard-phases 'check) args)))))))
     (native-search-paths
      (list (search-path-specification
             (variable "IDRIS_LIBRARY_PATH")
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 51c21b68cc..a47a1a008c 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -4027,16 +4027,18 @@ complex transformations and code analysis tools.")
   (package
     (name "java-cglib")
     (version "3.2.4")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/cglib/cglib/archive/RELEASE_"
-                    (string-map (lambda (c) (if (char=? c #\.) #\_ c)) version)
-                    ".tar.gz"))
-              (file-name (string-append "cglib-" version ".tar.gz"))
-              (sha256
-               (base32
-                "162dvd4fln76ai8prfharf66pn6r56p3sxx683j5vdyccrd5hi1q"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/cglib/cglib.git")
+             (commit (string-append
+                      "RELEASE_"
+                      (string-map (lambda (c) (if (char=? c #\.) #\_ c))
+                                  version)))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "186451jms2zfp47yd8kxd77az2cqal1my2br7klgyp8fpl4qfg8v"))))
     (build-system ant-build-system)
     (arguments
      `(;; FIXME: tests fail because junit runs
diff --git a/gnu/packages/kodi.scm b/gnu/packages/kodi.scm
index 3929909d10..58073b6170 100644
--- a/gnu/packages/kodi.scm
+++ b/gnu/packages/kodi.scm
@@ -281,7 +281,8 @@ alternatives. In compilers, this can reduce the cascade of secondary errors.")
               (sha256
                (base32
                 "1w26aqvzxv4c70gcd1vw1pldapsc2xcacwq9b7dqx5m44j0zx1dc"))
-              (patches (search-patches "kodi-skip-test-449.patch"))
+              (patches (search-patches "kodi-skip-test-449.patch"
+                                       "kodi-set-libcurl-ssl-parameters.patch"))
               (snippet
                '(begin
                   (use-modules (guix build utils))
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 6d289b7a0f..b429cda354 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -118,6 +118,7 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
   #:use-module (guix build-system trivial)
+  #:use-module (guix build-system linux-module)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module ((guix licenses) #:prefix license:)
@@ -264,9 +265,7 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
     (search-auxiliary-file file)))
 
 (define %default-extra-linux-options
-  `(;; https://lists.gnu.org/archive/html/guix-devel/2014-04/msg00039.html
-    ("CONFIG_DEVPTS_MULTIPLE_INSTANCES" . #t)
-    ;; Modules required for initrd:
+  `(;; Modules required for initrd:
     ("CONFIG_NET_9P" . m)
     ("CONFIG_NET_9P_VIRTIO" . m)
     ("CONFIG_VIRTIO_BLK" . m)
@@ -401,7 +400,7 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
                     (kmod   (assoc-ref (or native-inputs inputs) "kmod")))
                ;; Install kernel image, kernel configuration and link map.
                (for-each (lambda (file) (install-file file out))
-                         (find-files "." "^(\\.config|bzImage|zImage|Image|vmlinuz|System\\.map)$"))
+                         (find-files "." "^(\\.config|bzImage|zImage|Image|vmlinuz|System\\.map|Module\\.symvers)$"))
                ;; Install device tree files
                (unless (null? (find-files "." "\\.dtb$"))
                  (mkdir-p dtbdir)
@@ -438,6 +437,28 @@ It has been modified to remove all non-free binary blobs.")
                     #:patches %linux-libre-5.0-patches
                     #:configuration-file kernel-config))
 
+(define-public vhba-module
+  (package
+    (name "vhba-module")
+    (version "20170610")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://downloads.sourceforge.net/cdemu/vhba-module-"
+                    version ".tar.bz2"))
+              (sha256
+               (base32
+                "1v6r0bgx0a65vlh36b1l2965xybngbpga6rp54k4z74xk0zwjw3r"))))
+    (build-system linux-module-build-system)
+    (arguments
+     ;; TODO: No tests?
+     `(#:tests? #f))
+    (home-page "https://cdemu.sourceforge.io/")
+    (synopsis "Kernel module that emulates SCSI devices")
+    (description "VHBA module provides a Virtual (SCSI) HBA, which is the link
+between the CDemu userspace daemon and linux kernel.")
+    (license license:gpl2+)))
+
 (define %linux-libre-4.19-version "4.19.34")
 (define %linux-libre-4.19-hash "0rmpyj2qb651p2k2srpjndjxry87hr5vq0jkk4rvxjhm5y3sb65l")
 
@@ -471,7 +492,13 @@ It has been modified to remove all non-free binary blobs.")
   (make-linux-libre "4.4.178"
                     "1lgsd760md6b32qb5ng3anfq1n754a9d0c4xnf2mjxkimncb1jpp"
                     '("x86_64-linux" "i686-linux")
-                    #:configuration-file kernel-config))
+                    #:configuration-file kernel-config
+                    #:extra-options
+                    (append
+                     `(;; https://lists.gnu.org/archive/html/guix-devel/2014-04/msg00039.html
+                       ;; This option was removed upstream in version 4.7.
+                       ("CONFIG_DEVPTS_MULTIPLE_INSTANCES" . #t))
+                     %default-extra-linux-options)))
 
 (define-public linux-libre-arm-generic
   (make-linux-libre %linux-libre-version
@@ -1452,14 +1479,14 @@ Linux-based operating systems.")
 (define-public bridge-utils
   (package
     (name "bridge-utils")
-    (version "1.5")
-    (source (origin
-             (method url-fetch)
-             (uri (string-append "mirror://sourceforge/bridge/bridge/"
-                                 "bridge-utils-" version ".tar.gz"))
-             (sha256
-              (base32
-               "12367cwqmi0yqphi6j8rkx97q8hw52yq2fx4k0xfclkcizxybya2"))))
+    (version "1.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://www.kernel.org/pub/linux/utils/net/"
+                           "bridge-utils/bridge-utils-" version ".tar.xz"))
+       (sha256
+        (base32 "1j16kr44csyr4yqxly26l1yw2bh4nkiasgwvask2i2gvsnsyyryc"))))
     (build-system gnu-build-system)
 
     ;; The tarball lacks all the generated files.
@@ -2467,18 +2494,18 @@ country-specific regulations for the wireless spectrum.")
 (define-public lm-sensors
   (package
     (name "lm-sensors")
-    (version "3.4.0")
-    (source (origin
-              (method url-fetch)
-              (uri (list (string-append
-                           "https://github.com/groeck/lm-sensors/archive/V"
-                           (string-join (string-split version #\.) "-")
-                           ".tar.gz")))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0knb09s9lvx0wzfsaizx3xq58q6kllqf7nkbwvir0wkgn31c2d73"))
-              (patches (search-patches "lm-sensors-hwmon-attrs.patch"))))
+    (version "3.5.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/groeck/lm-sensors.git")
+             (commit (string-append "V" (string-join
+                                         (string-split version #\.) "-")))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1mdrnb9r01z1xfdm6dpkywvf9yy9a4yzb59paih9sijwmigv19fj"))
+       (patches (search-patches "lm-sensors-hwmon-attrs.patch"))))
     (build-system gnu-build-system)
     (inputs `(("rrdtool" ,rrdtool)
               ("perl" ,perl)
@@ -2535,7 +2562,7 @@ country-specific regulations for the wireless spectrum.")
                 (string-append (assoc-ref inputs "coreutils")
                                "/bin/readlink -f")))
              #t)))))
-    (home-page "http://jdelvare.nerim.net/devel.html#lmsensors")
+    (home-page "https://hwmon.wiki.kernel.org/lm_sensors")
     (synopsis "Utilities to read temperature/voltage/fan sensors")
     (description
      "Lm-sensors is a hardware health monitoring package for Linux.  It allows
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 5a30e7c1dd..08592bb770 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -13,6 +13,7 @@
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2018 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2019 Katherine Cox-Buday <cox.katherine.e@gmail.com>
+;;; Copyright © 2019 Jesse Gildersleve <jessejohngildersleve@protonmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -691,13 +692,13 @@ portable between implementations.")
     (version "1.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/sionescu/fiveam/archive/v"
-             version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/sionescu/fiveam.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name "fiveam" version))
        (sha256
-        (base32 "0f48pcbhqs3wwwzjl5nk57d4hcbib4l9xblxc66b8c2fhvhmhxnv"))
-       (file-name (string-append "fiveam-" version ".tar.gz"))))
+        (base32 "1yx9716mk8pq9076q6cjx4c9lyax3amiccy37sh0913k2x8gsm4l"))))
     (inputs `(("alexandria" ,sbcl-alexandria)))
     (build-system asdf-build-system/sbcl)
     (synopsis "Common Lisp testing framework")
@@ -714,18 +715,18 @@ interactive development model in mind.")
   (sbcl-package->ecl-package sbcl-fiveam))
 
 (define-public sbcl-bordeaux-threads
-  (let ((commit "354abb0ae9f1d9324001e1a8abab3128d7420e0e")
+  (let ((commit "5dce49fbc829f4d136a734f5ef4f5d599660984f")
         (revision "1"))
     (package
       (name "sbcl-bordeaux-threads")
-      (version (git-version "0.8.5" revision commit))
+      (version (git-version "0.8.6" revision commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
                       (url "https://github.com/sionescu/bordeaux-threads.git")
                       (commit commit)))
                 (sha256
-                 (base32 "1hcfp21l6av1xj6z7r77sp6h4mwf9vvx4s745803sysq2qy2mwnq"))
+                 (base32 "1gkh9rz7zw57n3110ikcf4835950wr4hgp8l79id5ai6nd86x7wv"))
                 (file-name
                  (git-file-name "bordeaux-threads" version))))
       (inputs `(("alexandria" ,sbcl-alexandria)))
@@ -818,14 +819,21 @@ logical continuation of Stefil.  It focuses on interactive debugging.")
     (version "1.0.16")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/edicl/flexi-streams/archive/v"
-             version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/edicl/flexi-streams.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name "flexi-streams" version))
        (sha256
-        (base32 "1fb0jrwxr5c3i2lhy7kn30m1n0vggfzwjm1dacx6y5wf9wfsbamw"))
-       (file-name (string-append "flexi-streams-" version ".tar.gz"))))
+        (base32 "0gvykjlmja060zqq6nn6aqxlshh6r6ijahmmgf20q0d839rwpgxc"))))
     (build-system asdf-build-system/sbcl)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'make-git-checkout-writable
+           (lambda _
+             (for-each make-file-writable (find-files "."))
+             #t)))))
     (inputs `(("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
     (synopsis "Implementation of virtual bivalent streams for Common Lisp")
     (description "Flexi-streams is an implementation of \"virtual\" bivalent
@@ -848,13 +856,13 @@ streams which are similar to string streams.")
     (version "2.0.11")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/edicl/cl-ppcre/archive/v"
-             version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/edicl/cl-ppcre.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name "cl-ppcre" version))
        (sha256
-        (base32 "1i7daxf0wnydb0pgwiym7qh2wy70n14lxd6dyv28sy0naa8p31gd"))
-       (file-name (string-append "cl-ppcre-" version ".tar.gz"))))
+        (base32 "0q3iany07vgqm144lw6pj0af2d3vsikpbkwcxr30fci3kzsq4f49"))))
     (build-system asdf-build-system/sbcl)
     (native-inputs `(("flexi-streams" ,sbcl-flexi-streams)))
     (synopsis "Portable regular expression library for Common Lisp")
@@ -973,18 +981,19 @@ from other CLXes around the net.")
   (package
     (name "stumpwm")
     (version "18.11")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/stumpwm/stumpwm/archive/"
-                    version ".tar.gz"))
-              (sha256
-               (base32 "177gxfk4c127i9crghx6fmkipznhgylvzgnjb2pna38g21gg6s39"))
-              (file-name (string-append "stumpwm-" version ".tar.gz"))
-              (patches
-               ;; This patch is included in the post-18.11 git master tree
-               ;; and can be removed when we move to the next release.
-               (search-patches "stumpwm-fix-broken-read-one-line.patch"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/stumpwm/stumpwm.git")
+             (commit version)))
+       (file-name (git-file-name "stumpwm" version))
+       (sha256
+        (base32 "003g1fmh7446ws49866kzny4lrk1wf034dq5fa4m9mq1nzc7cwv7"))
+       (patches
+        ;; This patch is included in the post-18.11 git master tree
+        ;; and can be removed when we move to the next release.
+        (search-patches "stumpwm-fix-broken-read-one-line.patch"))))
     (build-system asdf-build-system/sbcl)
     (native-inputs `(("fiasco" ,sbcl-fiasco)
                      ("texinfo" ,texinfo)))
@@ -1604,13 +1613,13 @@ utilities that make it even easier to manipulate text in Common Lisp.  It has
     (version "0.8")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/trivial-features/trivial-features/archive/v"
-             version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/trivial-features/trivial-features.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name "trivial-features" version))
        (sha256
-        (base32 "0db1awn6jyhcfhyfvpjvfziprmq85cigf19mwbvaprhblydsag3c"))
-       (file-name (string-append "trivial-features-" version ".tar.gz"))))
+        (base32 "0ccv7dqyrk55xga78i5vzlic7mdwp28in3g1a8fqhlk6626scsq9"))))
     (build-system asdf-build-system/sbcl)
     (arguments '(#:tests? #f))
     (home-page "http://cliki.net/trivial-features")
@@ -1691,13 +1700,13 @@ with a focus on interactive development.")
     (version "0.5.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/cl-babel/babel/archive/v"
-             version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/cl-babel/babel.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name "babel" version))
        (sha256
-        (base32 "189kgbmslh36xx0d2i1g6a7mcvjryvjzkdlnhilqy5xs7hkyqirq"))
-       (file-name (string-append name "-" version ".tar.gz"))))
+        (base32 "139a8rn2gnhj082n8jg01gc8fyr63hkj57hgrnmb3d1r327yc77f"))))
     (build-system asdf-build-system/sbcl)
     (native-inputs
      `(("tests:cl-hu.dwim.stefil" ,sbcl-hu.dwim.stefil)))
@@ -2971,12 +2980,13 @@ non-consing thread safe queues and fibonacci priority queues.")
     (version "0.19.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/cffi/cffi/archive/v"
-                           version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/cffi/cffi.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name "cffi-bootstrap" version))
        (sha256
-        (base32 "07bc3c1fbfx17wgrvx6bh9byilfzfwv5n597cfdllm0vzwvbmiyk"))
-       (file-name (string-append name "-" version ".tar.gz"))))
+        (base32 "09sfgc6r7ihmbkwfpvkq5fxc7h45cabpvgbvs47i5cvnmv3k72xy"))))
     (build-system asdf-build-system/sbcl)
     (inputs
      `(("libffi" ,libffi)
@@ -3235,13 +3245,13 @@ precisely control behavior of the parser via Common Lisp restarts.")
     (version "0.21")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/trivial-garbage/trivial-garbage/archive/v"
-             version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/trivial-garbage/trivial-garbage.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name "trivial-garbage" version))
        (sha256
-        (base32 "0b244nlszkrqawsnp568clnx32xmvjmbbagbz7625w9n0yq7396y"))
-       (file-name (string-append "trivial-garbage-" version ".tar.gz"))))
+        (base32 "0122jicfg7pca1wxw8zak1n92h5friqy60988ns0ysksj3fphw9n"))))
     (build-system asdf-build-system/sbcl)
     (native-inputs
      `(("rt" ,sbcl-rt)))
@@ -4169,12 +4179,13 @@ sockets, SSL, continuable uploads, file uploads, cookies, and more.")
     (version "1.2.38")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/edicl/hunchentoot/archive/v"
-             version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/edicl/hunchentoot.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name "hunchentoot" version))
        (sha256
-        (base32 "17z8rpd6b5w93jwrdwfwxjha617xnjqw8aq1hw2z76zp1fn8yrmh"))))
+        (base32 "1anpcad7w045m4rsjs1f3xdhjwx5cppq1h0vlb3q7dz81fi3i6yq"))))
     (build-system asdf-build-system/sbcl)
     (native-inputs
      `(("sbcl-cl-who" ,sbcl-cl-who)
@@ -5238,3 +5249,36 @@ Python's WSGI and Ruby's Rack.")
 
 (define-public cl-clack
   (sbcl-package->cl-source-package sbcl-clack))
+
+(define-public sbcl-log4cl
+  (let ((commit "611e094458504b938d49de904eab141285328c7c")
+        (revision "1"))
+    (package
+      (name "sbcl-log4cl")
+      (build-system asdf-build-system/sbcl)
+      (version "1.1.2")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/sharplispers/log4cl")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "08jly0s0g26b56hhpfizxsb4j0yvbh946sd205gr42dkzv8l7dsc"))))
+      ;; FIXME: tests require stefil, sbcl-hu.dwim.stefil wont work
+      (arguments
+       `(#:tests? #f))
+      (inputs `(("bordeaux-threads" ,sbcl-bordeaux-threads)))
+      (synopsis "Common Lisp logging framework, modeled after Log4J")
+      (home-page "https://github.com/7max/log4cl")
+      (description "This is a Common Lisp logging framework that can log at
+various levels and mix text with expressions.")
+      (license license:asl2.0))))
+
+(define-public cl-log4cl
+  (sbcl-package->cl-source-package sbcl-log4cl))
+
+(define-public ecl-log4cl
+  (sbcl-package->ecl-package sbcl-log4cl))
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index 3d46b02338..53884daf9b 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -40,7 +40,9 @@
   #:use-module (gnu packages bootstrap)           ;glibc-dynamic-linker
   #:use-module (gnu packages compression)
   #:use-module (gnu packages libffi)
+  #:use-module (gnu packages mpi)
   #:use-module (gnu packages perl)
+  #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages xml))
 
@@ -282,6 +284,43 @@ code analysis tools.")
 use with Clang, targeting C++11, C++14 and above.")
     (license license:expat)))
 
+(define-public libomp
+  (package
+    (name "libomp")
+    (version (package-version llvm))
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://releases.llvm.org/"
+                                  version  "/openmp-" version
+                                  ".src.tar.xz"))
+              (sha256
+               (base32
+                "030dkg5cypd7j9hq0mcqb5gs31lxwmzfq52j81l7v9ldcy5bf5mz"))
+              (file-name (string-append "libomp-" version ".tar.xz"))))
+    (build-system cmake-build-system)
+    ;; XXX: Note this gets built with GCC because building with Clang itself
+    ;; fails (missing <atomic>, even when libcxx is added as an input.)
+    (arguments
+     '(#:configure-flags '("-DLIBOMP_USE_HWLOC=ON"
+                           "-DOPENMP_TEST_C_COMPILER=clang"
+                           "-DOPENMP_TEST_CXX_COMPILER=clang++")
+       #:test-target "check-libomptarget"))
+    (native-inputs
+     `(("clang" ,clang)
+       ("llvm" ,llvm)
+       ("perl" ,perl)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("hwloc" ,hwloc "lib")))
+    (home-page "https://openmp.llvm.org")
+    (synopsis "OpenMP run-time support library")
+    (description
+     "This package provides the run-time support library developed by the LLVM
+project for the OpenMP multi-theaded programming extension.  This package
+notably provides @file{libgomp.so}, which is has a binary interface compatible
+with that of libgomp, the GNU Offloading and Multi Processing Library.")
+    (license license:expat)))
+
 (define-public clang-runtime
   (clang-runtime-from-llvm
    llvm
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 10aff22206..00662fb26d 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -49,6 +49,7 @@
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cran)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages dejagnu)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages glib)
@@ -65,7 +66,9 @@
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages serialization)
   #:use-module (gnu packages statistics)
+  #:use-module (gnu packages sqlite)
   #:use-module (gnu packages swig)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages web)
@@ -305,28 +308,46 @@ networks) based on simulation of (stochastic) flow in graphs.")
     (version "12-068oasis4")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/fhcrc/mcl/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/fhcrc/mcl.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "1l5jbhwjpsj38x8b9698hfpkv75h8hn3kj0gihjhn8ym2cwwv110"))))
+         "0009dc3h2jp3qg5val452wngpqnbfyhbcxylghq0mrjqxx0jdq5p"))))
     (build-system ocaml-build-system)
     (arguments
-     `(#:ocaml ,ocaml-4.02
-       #:findlib ,ocaml4.02-findlib
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
          (add-before 'configure 'patch-paths
            (lambda _
              (substitute* "configure"
-               (("SHELL = /bin/sh") (string-append "SHELL = "(which "sh"))))
+               (("/bin/sh") (which "sh")))
              (substitute* "setup.ml"
                (("LDFLAGS=-fPIC")
-                (string-append "LDFLAGS=-fPIC\"; \"SHELL=" (which "sh"))))
+                (string-append "LDFLAGS=-fPIC\"; \"SHELL=" (which "sh")))
+               (("-std=c89") "-std=gnu99")
+
+               ;; This is a mutable string, which is no longer supported.  Use
+               ;; a byte buffer instead.
+               (("String.make \\(String.length s\\)")
+                "Bytes.make (String.length s)")
+
+               ;; These two belong together.
+               (("OASISString.replace_chars")
+                "Bytes.to_string (OASISString.replace_chars")
+               ((" s;")
+                " s);"))
+             (substitute* "myocamlbuild.ml"
+               (("std=c89") "std=gnu99"))
+             ;; Since we build with a more recent OCaml, we have to use C99 or
+             ;; later.  This causes problems with the old C code.
+             (substitute* "src/impala/matrix.c"
+               (("restrict") "restrict_"))
              #t)))))
+    (native-inputs
+     `(("ocamlbuild" ,ocamlbuild)))
     (home-page "https://github.com/fhcrc/mcl")
     (synopsis "OCaml wrappers around MCL")
     (description
@@ -1285,3 +1306,451 @@ for load balancing, tracing, health checking and authentication.  It is also
 applicable in last mile of distributed computing to connect devices, mobile
 applications and browsers to backend services.")
     (license license:asl2.0)))
+
+;; Note that Tensorflow includes a "third_party" directory, which seems to not
+;; only contain modified subsets of upstream library source code, but also
+;; adapter headers provided by Google (such as the fft.h header, which is not
+;; part of the upstream project code).  The Tensorflow code includes headers
+;; from the "third_party" directory.  It does not look like we can replace
+;; these headers with unmodified upstream files, so we keep them.
+(define-public tensorflow
+  (package
+    (name "tensorflow")
+    (version "1.9.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/tensorflow/tensorflow.git")
+             (commit (string-append "v" version))))
+       (file-name (string-append "tensorflow-" version "-checkout"))
+       (sha256
+        (base32
+         "0a9kwha395g3wgxfwln5j8vn9nkspmd75xldrlqdq540w996g8xa"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f                      ; no "check" target
+       #:build-type "Release"
+       #:configure-flags
+       (let ((protobuf (assoc-ref %build-inputs "protobuf"))
+             (protobuf:native (assoc-ref %build-inputs "protobuf:native"))
+             (jsoncpp (assoc-ref %build-inputs "jsoncpp"))
+             (snappy (assoc-ref %build-inputs "snappy"))
+             (sqlite (assoc-ref %build-inputs "sqlite")))
+         (list
+          ;; Use protobuf from Guix
+          (string-append "-Dprotobuf_STATIC_LIBRARIES="
+                         protobuf "/lib/libprotobuf.so")
+          (string-append "-DPROTOBUF_PROTOC_EXECUTABLE="
+                         protobuf:native "/bin/protoc")
+
+          ;; Use snappy from Guix
+          (string-append "-Dsnappy_STATIC_LIBRARIES="
+                         snappy "/lib/libsnappy.so")
+          ;; Yes, this is not actually the include directory but a prefix...
+          (string-append "-Dsnappy_INCLUDE_DIR=" snappy)
+
+          ;; Use jsoncpp from Guix
+          (string-append "-Djsoncpp_STATIC_LIBRARIES="
+                         jsoncpp "/lib/libjsoncpp.so")
+          ;; Yes, this is not actually the include directory but a prefix...
+          (string-append "-Djsoncpp_INCLUDE_DIR=" jsoncpp)
+
+          ;; Use sqlite from Guix
+          (string-append "-Dsqlite_STATIC_LIBRARIES="
+                         sqlite "/lib/libsqlite.a")
+
+          ;; Use system libraries wherever possible.  Currently, this
+          ;; only affects zlib.
+          "-Dsystemlib_ALL=ON"
+          "-Dtensorflow_ENABLE_POSITION_INDEPENDENT_CODE=ON"
+          "-Dtensorflow_BUILD_SHARED_LIB=ON"
+          "-Dtensorflow_OPTIMIZE_FOR_NATIVE_ARCH=OFF"
+          "-Dtensorflow_ENABLE_SSL_SUPPORT=OFF"
+          "-Dtensorflow_BUILD_CONTRIB_KERNELS=OFF"))
+       #:make-flags
+       (list "CC=gcc")
+       #:modules ((ice-9 ftw)
+                  (guix build utils)
+                  (guix build cmake-build-system))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'set-source-file-times-to-1980
+           ;; At the end of the tf_python_build_pip_package target, a ZIP
+           ;; archive should be generated via bdist_wheel, but it fails with
+           ;; "ZIP does not support timestamps before 1980".  Luckily,
+           ;; SOURCE_DATE_EPOCH is respected, which we set to some time in
+           ;; 1980.
+           (lambda _ (setenv "SOURCE_DATE_EPOCH" "315532800") #t))
+         ;; See https://github.com/tensorflow/tensorflow/issues/20517#issuecomment-406373913
+         (add-after 'unpack 'python3.7-compatibility
+           (lambda _
+             (substitute* '("tensorflow/python/eager/pywrap_tfe_src.cc"
+                            "tensorflow/python/lib/core/ndarray_tensor.cc"
+                            "tensorflow/python/lib/core/py_func.cc")
+               (("PyUnicode_AsUTF8") "(char *)PyUnicode_AsUTF8"))
+             (substitute* "tensorflow/c/eager/c_api.h"
+               (("unsigned char async")
+                "unsigned char is_async"))
+
+             ;; Remove dependency on tensorboard, a complicated but probably
+             ;; optional package.
+             (substitute* "tensorflow/tools/pip_package/setup.py"
+               ((".*'tensorboard >.*") ""))
+             #t))
+         (add-after 'python3.7-compatibility 'chdir
+           (lambda _ (chdir "tensorflow/contrib/cmake") #t))
+         (add-after 'chdir 'disable-downloads
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* (find-files "external" "\\.cmake$")
+               (("GIT_REPOSITORY.*") "")
+               (("GIT_TAG.*") "")
+               (("PREFIX ")
+                "DOWNLOAD_COMMAND \"\"\nPREFIX "))
+
+             ;; Use packages from Guix
+             (let ((grpc (assoc-ref inputs "grpc")))
+               (substitute* "CMakeLists.txt"
+                 ;; Sqlite
+                 (("include\\(sqlite\\)") "")
+                 (("\\$\\{sqlite_STATIC_LIBRARIES\\}")
+                  (string-append (assoc-ref inputs "sqlite")
+                                 "/lib/libsqlite3.so"))
+                 (("sqlite_copy_headers_to_destination") "")
+
+                 ;; PNG
+                 (("include\\(png\\)") "")
+                 (("\\$\\{png_STATIC_LIBRARIES\\}")
+                  (string-append (assoc-ref inputs "libpng")
+                                 "/lib/libpng16.so"))
+                 (("png_copy_headers_to_destination") "")
+
+                 ;; JPEG
+                 (("include\\(jpeg\\)") "")
+                 (("\\$\\{jpeg_STATIC_LIBRARIES\\}")
+                  (string-append (assoc-ref inputs "libjpeg")
+                                 "/lib/libjpeg.so"))
+                 (("jpeg_copy_headers_to_destination") "")
+
+                 ;; GIF
+                 (("include\\(gif\\)") "")
+                 (("\\$\\{gif_STATIC_LIBRARIES\\}")
+                  (string-append (assoc-ref inputs "giflib")
+                                 "/lib/libgif.so"))
+                 (("gif_copy_headers_to_destination") "")
+
+                 ;; lmdb
+                 (("include\\(lmdb\\)") "")
+                 (("\\$\\{lmdb_STATIC_LIBRARIES\\}")
+                  (string-append (assoc-ref inputs "lmdb")
+                                 "/lib/liblmdb.so"))
+                 (("lmdb_copy_headers_to_destination") "")
+
+                 ;; Protobuf
+                 (("include\\(protobuf\\)") "")
+                 (("protobuf_copy_headers_to_destination") "")
+                 (("^ +protobuf") "")
+
+                 ;; gRPC
+                 (("include\\(grpc\\)")
+                  "find_package(grpc REQUIRED NAMES gRPC)")
+                 (("list\\(APPEND tensorflow_EXTERNAL_DEPENDENCIES grpc\\)") "")
+
+                 ;; Eigen
+                 (("include\\(eigen\\)")
+                  (string-append "find_package(eigen REQUIRED NAMES Eigen3)
+set(eigen_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/external/eigen_archive "
+                                 (assoc-ref inputs "eigen") "/include/eigen3)"))
+                 (("^ +eigen") "")
+
+                 ;; snappy
+                 (("include\\(snappy\\)")
+                  "add_definitions(-DTF_USE_SNAPPY)")
+                 (("list\\(APPEND tensorflow_EXTERNAL_DEPENDENCIES snappy\\)") "")
+
+                 ;; jsoncpp
+                 (("include\\(jsoncpp\\)") "")
+                 (("^ +jsoncpp") ""))
+
+               (substitute* "tf_core_framework.cmake"
+                 ((" grpc") "")
+                 (("\\$\\{GRPC_BUILD\\}/grpc_cpp_plugin")
+                  (which "grpc_cpp_plugin"))
+                 ;; Link with gRPC libraries
+                 (("add_library\\(tf_protos_cc.*" m)
+                  (string-append m
+                                 (format #f "\ntarget_link_libraries(tf_protos_cc PRIVATE \
+~a/lib/libgrpc++_unsecure.a \
+~a/lib/libgrpc_unsecure.a \
+~a/lib/libaddress_sorting.a \
+~a/lib/libgpr.a \
+~a//lib/libcares.so
+)\n"
+                                         grpc grpc grpc grpc
+                                         (assoc-ref inputs "c-ares"))))))
+             (substitute* "tf_tools.cmake"
+               (("add_dependencies\\(\\$\\{proto_text.*") ""))
+             ;; Remove dependency on bundled grpc
+             (substitute* "tf_core_distributed_runtime.cmake"
+               (("tf_core_cpu grpc") "tf_core_cpu"))
+
+             ;; This directory is a dependency of many targets.
+             (mkdir-p "protobuf")
+             #t))
+         (add-after 'configure 'unpack-third-party-sources
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; This is needed to configure bundled packages properly.
+             (setenv "CONFIG_SHELL" (which "bash"))
+             (for-each
+              (lambda (name)
+                (let* ((what  (assoc-ref inputs (string-append name "-src")))
+                       (name* (string-map (lambda (c)
+                                            (if (char=? c #\-)
+                                                #\_ c)) name))
+                       (where (string-append "../build/" name* "/src/" name*)))
+                  (cond
+                   ((string-suffix? ".zip" what)
+                    (mkdir-p where)
+                    (with-directory-excursion where
+                      (invoke "unzip" what)))
+                   ((string-suffix? ".tar.gz" what)
+                    (mkdir-p where)
+                    (invoke "tar" "xf" what
+                            "-C" where "--strip-components=1"))
+                   (else
+                    (let ((parent (dirname where)))
+                      (mkdir-p parent)
+                      (with-directory-excursion parent
+                        (when (file-exists? name*)
+                          (delete-file-recursively name*))
+                        (copy-recursively what name*)
+                        (map make-file-writable
+                             (find-files name* ".*"))))))))
+              (list "boringssl"
+                    "cub"
+                    "double-conversion"
+                    "farmhash"
+                    "fft2d"
+                    "highwayhash"
+                    "nsync"
+                    "re2"))
+
+             (rename-file "../build/cub/src/cub/cub-1.8.0/"
+                          "../build/cub/src/cub/cub/")
+             #t))
+         (add-after 'unpack 'fix-python-build
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (mkdir-p "protobuf-src")
+             (invoke "tar" "xf" (assoc-ref inputs "protobuf:src")
+                     "-C" "protobuf-src" "--strip-components=1")
+             (mkdir-p "eigen-src")
+             (invoke "tar" "xf" (assoc-ref inputs "eigen:src")
+                     "-C" "eigen-src" "--strip-components=1")
+
+             (substitute* "tensorflow/contrib/cmake/tf_python.cmake"
+               ;; Ensure that all Python dependencies can be found at build time.
+               (("PYTHONPATH=\\$\\{CMAKE_CURRENT_BINARY_DIR\\}/tf_python" m)
+                (string-append m ":" (getenv "PYTHONPATH")))
+               ;; Take protobuf source files from our source package.
+               (("\\$\\{CMAKE_CURRENT_BINARY_DIR\\}/protobuf/src/protobuf/src/google")
+                (string-append (getcwd) "/protobuf-src/src/google")))
+
+             (substitute* '("tensorflow/contrib/cmake/tf_shared_lib.cmake"
+                            "tensorflow/contrib/cmake/tf_python.cmake")
+               ;; Take Eigen source files from our source package.
+               (("\\$\\{CMAKE_CURRENT_BINARY_DIR\\}/eigen/src/eigen/")
+                (string-append (getcwd) "/eigen-src/"))
+               ;; Take Eigen headers from our own package.
+               (("\\$\\{CMAKE_CURRENT_BINARY_DIR\\}/external/eigen_archive")
+                (string-append (assoc-ref inputs "eigen") "/include/eigen3")))
+
+             ;; Correct the RUNPATH of ops libraries generated for Python.
+             ;; TODO: this doesn't work :(
+             ;; /gnu/store/...-tensorflow-1.9.0/lib/python3.7/site-packages/tensorflow/contrib/seq2seq/python/ops/lib_beam_search_ops.so:
+             ;; warning: RUNPATH contains bogus entries: ("/tmp/guix-build-tensorflow-1.9.0.drv-0/source/tensorflow/contrib/build")
+             ;; /gnu/store/...-tensorflow-1.9.0/lib/python3.7/site-packages/tensorflow/contrib/seq2seq/python/ops/lib_beam_search_ops.so:
+             ;; error: depends on 'libpywrap_tensorflow_internal.so', which
+             ;; cannot be found in RUNPATH ...
+             (substitute* "tensorflow/contrib/cmake/tf_cc_ops.cmake"
+               (("set_target_properties.*")
+                (string-append "set_target_properties(${_AT_TARGET} PROPERTIES \
+COMPILE_FLAGS ${target_compile_flags} \
+INSTALL_RPATH_USE_LINK_PATH TRUE \
+INSTALL_RPATH " (assoc-ref outputs "out") "/lib)\n")))
+             #t))
+         (add-after 'build 'build-pip-package
+           (lambda* (#:key outputs #:allow-other-keys)
+             (setenv "LDFLAGS"
+                     (string-append "-Wl,-rpath="
+                                    (assoc-ref outputs "out") "/lib"))
+             (invoke "make" "tf_python_build_pip_package")
+             #t))
+         (add-after 'build-pip-package 'install-python
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (wheel (car (find-files "../build/tf_python/dist/" "\\.whl$"))))
+               (invoke "python" "-m" "pip" "install" wheel
+                       (string-append "--prefix=" out))
+
+               ;; XXX: broken RUNPATH, see fix-python-build phase.
+               (delete-file
+                (string-append
+                 out "/lib/python3.7/site-packages/tensorflow/contrib/"
+                 "seq2seq/python/ops/lib_beam_search_ops.so"))
+               #t))))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("protobuf:native" ,protobuf-next) ; protoc
+       ("protobuf:src" ,(package-source protobuf-next))
+       ("eigen:src" ,(package-source eigen-for-tensorflow))
+       ;; The commit hashes and URLs for third-party source code are taken
+       ;; from "tensorflow/workspace.bzl".
+       ("boringssl-src"
+        ,(let ((commit "ee7aa02")
+               (revision "1"))
+           (origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://boringssl.googlesource.com/boringssl")
+                   (commit commit)))
+             (file-name (string-append "boringssl-0-" revision
+                                       (string-take commit 7)
+                                       "-checkout"))
+             (sha256
+              (base32
+               "1jf693q0nw0adsic6cgmbdx6g7wr4rj4vxa8j1hpn792fqhd8wgw")))))
+       ("cub-src"
+        ,(let ((version "1.8.0"))
+           (origin
+             (method url-fetch)
+             (uri (string-append "https://mirror.bazel.build/github.com/NVlabs/"
+                                 "cub/archive/" version ".zip"))
+             (file-name (string-append "cub-" version ".zip"))
+             (sha256
+              (base32
+               "1hsqikqridb90dkxkjr2918dcry6pfh46ccnwrzawl56aamhdykb")))))
+       ("double-conversion-src"
+        ,(let ((commit "5664746")
+               (revision "1"))
+           (origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/google/double-conversion.git")
+                   (commit commit)))
+             (file-name
+              (git-file-name "double-conversion"
+                             (string-append "0-" revision "."
+                                            (string-take commit 7))))
+             (sha256
+              (base32
+               "1h5lppqqxcvdg5jq42i5msgwx20ryij3apvmndflngrgdpc04gn1")))))
+       ("farmhash-src"
+        ,(let ((commit "816a4ae622e964763ca0862d9dbd19324a1eaf45"))
+           (origin
+             (method url-fetch)
+             (uri (string-append
+                   "https://mirror.bazel.build/github.com/google/farmhash/archive/"
+                   commit ".tar.gz"))
+             (file-name (string-append "farmhash-0-" (string-take commit 7)
+                                       ".tar.gz"))
+             (sha256
+              (base32
+               "185b2xdxl4d4cnsnv6abg8s22gxvx8673jq2yaq85bz4cdy58q35")))))
+       ;; The license notice on the home page at
+       ;; http://www.kurims.kyoto-u.ac.jp/~ooura/fft.html says:
+       ;;   Copyright Takuya OOURA, 1996-2001
+       ;;
+       ;;   You may use, copy, modify and distribute this code for any purpose
+       ;;   (include commercial use) and without fee. Please refer to this
+       ;;   package when you modify this code.
+       ;;
+       ;; We take the identical tarball from the Bazel mirror, because the URL
+       ;; at the home page is not versioned and might change.
+       ("fft2d-src"
+        ,(origin
+           (method url-fetch)
+           (uri "https://mirror.bazel.build/www.kurims.kyoto-u.ac.jp/~ooura/fft.tgz")
+           (file-name "fft2d.tar.gz")
+           (sha256
+            (base32
+             "15jjkfvhqvl2c0753d2di8hz0pyzn598g74wqy79awdrf1y67fsj"))))
+       ("highwayhash-src"
+        ,(let ((commit "be5edafc2e1a455768e260ccd68ae7317b6690ee")
+               (revision "1"))
+           (origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/google/highwayhash.git")
+                   (commit commit)))
+             (file-name (string-append "highwayhash-0-" revision
+                                       (string-take commit 7)
+                                       "-checkout"))
+             (sha256
+              (base32
+               "154jwf98cyy54hldr94pgjn85zynly3abpnc1avmb8a18lzwjyb6")))))
+       ("nsync-src"
+        ,(let ((version "0559ce013feac8db639ee1bf776aca0325d28777")
+               (revision "1"))
+           (origin
+             (method url-fetch)
+             (uri (string-append "https://mirror.bazel.build/"
+                                 "github.com/google/nsync/archive/"
+                                 version ".tar.gz"))
+             (file-name (string-append "nsync-0." revision
+                                       "-" (string-take version 7)
+                                       ".tar.gz"))
+             (sha256
+              (base32
+               "0qdkyqym34x739mmzv97ah5r7ph462v5xkxqxvidmcfqbi64b132")))))
+       ("re2-src"
+        ,(let ((commit "e7efc48")
+               (revision "1"))
+           (origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/google/re2")
+                   (commit commit)))
+             (file-name (string-append "re2-0-" revision
+                                       (string-take commit 7)
+                                       "-checkout"))
+             (sha256
+              (base32
+               "161g9841rjfsy5pn52fcis0s9hdr7rxvb06pad38j5rppfihvign")))))
+       ("googletest" ,googletest)
+       ("swig" ,swig)
+       ("unzip" ,unzip)))
+    (propagated-inputs
+     `(("python-absl-py" ,python-absl-py)
+       ("python-astor" ,python-astor)
+       ("python-gast" ,python-gast)
+       ("python-grpcio" ,python-grpcio)
+       ("python-numpy" ,python-numpy)
+       ("python-protobuf" ,python-protobuf-next)
+       ("python-six" ,python-six)
+       ("python-termcolo" ,python-termcolor)
+       ("python-wheel" ,python-wheel)))
+    (inputs
+     `(("c-ares" ,c-ares-next)
+       ("eigen" ,eigen-for-tensorflow)
+       ("gemmlowp" ,gemmlowp-for-tensorflow)
+       ("lmdb" ,lmdb)
+       ("libjpeg" ,libjpeg)
+       ("libpng" ,libpng)
+       ("giflib" ,giflib)
+       ("grpc" ,grpc)
+       ("jsoncpp" ,jsoncpp-for-tensorflow)
+       ("snappy" ,snappy)
+       ("sqlite" ,sqlite)
+       ("protobuf" ,protobuf-next)
+       ("python" ,python-wrapper)
+       ("zlib" ,zlib)))
+    (home-page "https://tensorflow.org")
+    (synopsis "Machine learning framework")
+    (description
+     "TensorFlow is a flexible platform for building and training machine
+learning models.  It provides a library for high performance numerical
+computation and includes high level Python APIs, including both a sequential
+API for beginners that allows users to build models quickly by plugging
+together building blocks and a subclassing API with an imperative style for
+advanced research.")
+    (license license:asl2.0)))
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index d78efbf09c..2ae3fda9a7 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -95,6 +95,7 @@
   #:use-module (gnu packages onc-rpc)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
+  #:use-module (gnu packages perl-web)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-web)
@@ -110,6 +111,7 @@
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages time)
   #:use-module (gnu packages tls)
+  #:use-module (gnu packages version-control)
   #:use-module (gnu packages w3m)
   #:use-module (gnu packages web)
   #:use-module (gnu packages webkit)
@@ -1389,7 +1391,7 @@ How it works:
 @item This password digest is used as a symmetric secret to decrypt a libsodium secretbox.
 @item Inside the secretbox is stored a Curve25519 private key.
 @item The Curve25519 private key is used to decrypt each individual message,
-using lidsodium sealed boxes.
+using libsodium sealed boxes.
 @item New mail is encrypted as it arrives using the Curve25519 public key.
 @end enumerate\n")
     (license agpl3)))
@@ -1504,6 +1506,28 @@ locates email addresses in strings and returns a list of Email::Address
 objects found.  Alternatively you may construct objects manually.")
     (license perl-license)))
 
+(define-public perl-email-address-xs
+  (package
+    (name "perl-email-address-xs")
+    (version "1.04")
+    (source
+    (origin
+      (method url-fetch)
+      (uri (string-append "mirror://cpan/authors/id/P/PA/PALI/"
+                          "Email-Address-XS-" version ".tar.gz"))
+      (sha256
+       (base32
+        "0gjrrl81z3sfwavgx5kwjd87gj44mlnbbqsm3dgdv1xllw26spwr"))))
+    (build-system perl-build-system)
+    (home-page "https://metacpan.org/release/Email-Address-XS")
+    (synopsis "Parse and format RFC 5322 email addresses and groups")
+    (description
+     "Email::Address::XS implements RFC 5322 parser and formatter of email
+addresses and groups.  Unlike Email::Address, this module does not use regular
+expressions for parsing but instead is implemented in XS and uses shared code
+from Dovecot IMAP server.")
+    (license perl-license)))
+
 (define-public perl-email-date-format
   (package
     (name "perl-email-date-format")
@@ -2866,3 +2890,79 @@ replacement for the @code{urlview} program.")
     (description "This package provides a TNEF stream reader library and
 related tools to process winmail.dat files.")
     (license gpl2+)))
+
+(define-public public-inbox
+  (let ((commit "3cf66514aea9e958999973b9f104473b6d800fbe")
+        (revision "0"))
+    (package
+     (name "public-inbox")
+     (version (git-version "1.0.0" revision commit))
+     (source
+      (origin (method git-fetch)
+              (uri (git-reference
+                    (url "https://public-inbox.org")
+                    (commit commit)))
+              (sha256
+               (base32
+                "1sxycwlm2n6p544gn9f0vf3xs6gz8vdswdhs2ha6fka8mgabvmdh"))
+              (file-name (git-file-name name version))))
+     (build-system perl-build-system)
+     (arguments
+      '(#:phases
+        (modify-phases %standard-phases
+          (add-before 'configure 'qualify-paths
+            (lambda _
+              ;; Use absolute paths for 'xapian-compact'.
+              (let ((xapian-compact (which "xapian-compact")))
+                (substitute* "script/public-inbox-compact"
+                  (("xapian-compact") xapian-compact)))
+              #t))
+          (add-before 'check 'pre-check
+            (lambda _
+              (substitute* "t/spawn.t"
+                (("\\['env'\\]") (string-append "['" (which "env") "']")))
+              #t))
+          (add-after 'install 'wrap-programs
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (let ((out (assoc-ref outputs "out")))
+                (for-each
+                 (lambda (prog)
+                   (wrap-program prog
+                     ;; Let those scripts find their perl modules.
+                     `("PERL5LIB" ":" prefix
+                       (,(string-append out "/lib/perl5/site_perl")
+                        ,(getenv "PERL5LIB")))
+                     ;; 'git' is invoked in various files of the PublicInbox
+                     ;; perl module.
+                     `("PATH" ":" prefix
+                       (,(string-append (assoc-ref inputs "git") "/bin")))))
+                 (find-files (string-append out "/bin"))))
+              #t)))))
+     (native-inputs
+      `(("git" ,git)
+        ("xapian" ,xapian)))
+     (inputs
+      `(("perl-danga-socket" ,perl-danga-socket)
+        ("perl-dbd-sqlite" ,perl-dbd-sqlite)
+        ("perl-dbi" ,perl-dbi)
+        ("perl-email-address-xs" ,perl-email-address-xs)
+        ("perl-email-mime-contenttype" ,perl-email-mime-contenttype)
+        ("perl-email-mime" ,perl-email-mime)
+        ("perl-email-simple" ,perl-email-simple)
+        ("perl-filesys-notify-simple" ,perl-filesys-notify-simple)
+        ("perl-plack-middleware-deflater" ,perl-plack-middleware-deflater)
+        ("perl-plack-middleware-reverseproxy" ,perl-plack-middleware-reverseproxy)
+        ("perl-plack" ,perl-plack)
+        ("perl-search-xapian" ,perl-search-xapian)
+        ("perl-timedate" ,perl-timedate)
+        ("perl-uri-escape" ,perl-uri-escape)
+        ;; For testing.
+        ("perl-ipc-run" ,perl-ipc-run)
+        ("perl-xml-feed" ,perl-xml-feed)))
+     (home-page "https://public-inbox.org/README.html")
+     (synopsis "Archive mailing lists in git repositories")
+     (description
+      "public-inbox implements the sharing of an email inbox via git to
+complement or replace traditional mailing lists.  Readers may read via NNTP,
+Atom feeds or HTML archives.")
+     (license agpl3+))))
diff --git a/gnu/packages/mate.scm b/gnu/packages/mate.scm
index 6d157e6ec3..0b668b4224 100644
--- a/gnu/packages/mate.scm
+++ b/gnu/packages/mate.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019 Guy Fleury Iteriteka <hoonandon@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -92,6 +93,46 @@
 MATE applications.")
     (license license:gpl3+)))
 
+(define-public mate-power-manager
+  (package
+    (name "mate-power-manager")
+    (version "1.22.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://pub.mate-desktop.org/releases/"
+                           (version-major+minor version) "/"
+                           name "-" version ".tar.xz"))
+       (sha256
+        (base32
+         "03c09h41qfz83wmjfvwzkq4xqc54aswmki4h034qcxbgfnyfmk1i"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("intltool" ,intltool)
+       ("yelp-tools" ,yelp-tools)
+       ("glib" ,glib "bin") ; glib-gettextize
+       ("libtool" ,libtool)))
+    (inputs
+     `(("gtk+" ,gtk+)
+       ("glib" ,glib)
+       ("dbus-glib" ,dbus-glib)
+       ("libgnome-keyring" ,libgnome-keyring)
+       ("cairo" ,cairo)
+       ("dbus" ,dbus)
+       ("libnotify" ,libnotify)
+       ("mate-panel" ,mate-panel)
+       ("libxrandr" ,libxrandr)
+       ("libcanberra" ,libcanberra)
+       ("upower" ,upower)))
+    (home-page "https://mate-desktop.org/")
+    (synopsis "A Power Manager for MATE")
+    (description
+     "MATE Power Manager is a MATE session daemon that acts as a policy agent on
+top of UPower. It listens to system events and responds with user-configurable
+actions.")
+    (license license:gpl3+)))
+
 (define-public mate-icon-theme
   (package
     (name "mate-icon-theme")
@@ -1565,6 +1606,7 @@ used to bring up authentication dialogs.")
        ("mate-terminal"             ,mate-terminal)
        ("mate-themes"               ,mate-themes)
        ("mate-icon-theme"           ,mate-icon-theme)
+       ("mate-power-manager"        ,mate-power-manager)
        ("mate-menu"                 ,mate-menus)
        ("mate-panel"                ,mate-panel)
        ("mate-control-center"       ,mate-control-center)
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 6746013fad..9bf5f03390 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -650,13 +650,13 @@ plotting engine by third-party applications like Octave.")
     (version "2.0.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/OkoSanto/GCTP/archive/v"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/OkoSanto/GCTP.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0l9aqnqynh9laicn5dxf3rsb1n14xiks79wbyqccirzmjqd1c1x4"))))
+        (base32 "11wqmd443b4nksdbzp1msdws3av948nmwq1xz80w6hka3ss2aigd"))))
     (native-inputs
      `(("fortran" ,gfortran)))
     (build-system gnu-build-system)
@@ -1555,15 +1555,14 @@ script files.")
     (version "0.17.2")
     (source
       (origin
-        (method url-fetch)
-        (uri (string-append
-               "https://github.com/tpaviot/oce/archive/OCE-"
-               version
-               ".tar.gz"))
+        (method git-fetch)
+        (uri (git-reference
+              (url "https://github.com/tpaviot/oce.git")
+              (commit (string-append "OCE-" version))))
+        (file-name (git-file-name name version))
         (patches (search-patches "opencascade-oce-glibc-2.26.patch"))
         (sha256
-          (base32
-            "0vpmnb0k5y2f7lpmwx9pg9yfq24zjvnsak5alzacncfm1hv9b6cd"))))
+          (base32 "0rg5wzkvfmzfl6v2amyryb8dnjad0nn9kyr607wy2gch6rciah69"))))
     (build-system cmake-build-system)
     (arguments
      '(#:configure-flags
@@ -2228,12 +2227,12 @@ programming problems.")
 (define-public r-pracma
   (package
     (name "r-pracma")
-    (version "2.2.2")
+    (version "2.2.5")
     (source (origin
       (method url-fetch)
       (uri (cran-uri "pracma" version))
       (sha256
-        (base32 "18zhni05gwnxbphl6bmjjxmsgg5wwnnkwlb4g971cqyw3dsd83ki"))))
+        (base32 "0isd3s0i4mzmva8lkh0j76hwjy1w50q7d1n9lhxsnnkgalx3xs1g"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/pracma/")
     (synopsis "Practical numerical math functions")
@@ -2952,13 +2951,13 @@ associated functions (eg. contiguous and non-contiguous submatrix views).")
       (version (string-append upstream-version "-" revision))
       (source
        (origin
-         (method url-fetch)
-         (uri (string-append "https://github.com/beltoforion/muparser/archive/v"
-                             upstream-version ".tar.gz"))
-         (file-name (string-append name "-" version ".tar.gz"))
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/beltoforion/muparser.git")
+               (commit (string-append "v" upstream-version))))
+         (file-name (git-file-name name version))
          (sha256
-          (base32
-           "0277qsi5l23jsck1vhn383bmvc2n9l4a1dl5r9bf7hvjv9ayyrh6"))))
+          (base32 "0f0g4995xngf1pp3zr4p6ai2f8v6f8bxwa0k8ayjjiv1l8h44m24"))))
       (build-system gnu-build-system)
       (arguments
        `(#:configure-flags '("--enable-samples=no")
@@ -3146,13 +3145,13 @@ access to BLIS implementations via traditional BLAS routine calls.")
     (version "0.6.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/JuliaLang/openlibm/archive/v"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/JuliaLang/openlibm.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0a5fpm8nra5ldhjk0cqd2rx1qh32wiarkxmcqcm5xl8z7l4kjm6l"))))
+        (base32 "08wfchmmr5200fvmn1kwq9byc1fhsq46hn0y5k8scdl74771c7gh"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
@@ -3185,13 +3184,13 @@ environments.")
     (version "0.5.3")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/JuliaLang/openspecfun/archive/v"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/JuliaLang/openspecfun.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1rs1bv8jq751fv9vq79890wqf9xlbjc7lvz3ighzyfczbyjcf18m"))))
+        (base32 "0pfw6l3ch7isz403llx7inxlvavqh01jh1hb9dpidi86sjjx9kfh"))))
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f                      ; no "check" target
@@ -3682,31 +3681,32 @@ set.")
 (define-public hypre
   (package
     (name "hypre")
-    (version "2.14.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/LLNL/hypre/archive/"
-                                  "v" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0v515i73bvaz378h5465b1dy9v2gf924zy2q94cpq4qqarawvkqh"))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  ;; Remove use of __DATE__ and __TIME__ for reproducibility;
-                  ;; substitute the tarball creation time.
-                  (substitute* "src/utilities/HYPRE_utilities.h"
-                    (("Date Compiled: .*$")
-                     "Date Compiled: Apr 11 2018 16:24:59 +0000\"\n"))
-                  #t))))
+    (version "2.15.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/LLNL/hypre.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1lvh4ybqkriyqfg2zmic6mrg1981qv1i9vry1fdgsabn81hb71g4"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Remove use of __DATE__ and __TIME__ for reproducibility;
+           ;; substitute the release date.
+           (substitute* "src/utilities/HYPRE_utilities.h"
+             (("Date Compiled: .*$")
+              "Date Compiled: Oct 19 2018 15:23:00 +0000\"\n"))
+           #t))))
     (build-system gnu-build-system)
-    (outputs '("out"                    ;6.1 MiB of headers and libraries
-               "doc"))                  ;4.8 MiB of documentation
+    (outputs '("out"                    ; 6.1 MiB of headers and libraries
+               "doc"))                  ; 4.8 MiB of documentation
     (native-inputs
      `(("doc++" ,doc++)
        ("netpbm" ,netpbm)
-       ("perl" ,perl)                   ;needed to run 'ppmquant' during tests
+       ("perl" ,perl)                   ; needed to run 'ppmquant' during tests
        ("texlive" ,(texlive-union (list texlive-generic-xypic
                                         texlive-fonts-xypic
                                         texlive-latex-hyperref
@@ -3770,7 +3770,7 @@ set.")
                (with-directory-excursion "docs"
                  (for-each (lambda (base)
                              (install-file (string-append base ".pdf") docdir)
-                             (copy-recursively base docdir)) ;html docs
+                             (copy-recursively base docdir)) ; html docs
                            '("HYPRE_usr_manual"
                              "HYPRE_ref_manual")))
                #t))))))
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index 32868d1a1f..7305ab9b29 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -1693,18 +1693,19 @@ building the IRC clients and bots.")
 (define-public toxic
   (package
     (name "toxic")
-    (version "0.8.2")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/JFreegman/toxic/archive/v"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "1dx6z7k0zpsd7dpysdy23f0hnm49qlikb0mq8fg0y01dsz9vxgak"))
-              (file-name (git-file-name name version))))
+    (version "0.8.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/JFreegman/toxic.git")
+             (commit (string-append "v" version))))
+       (sha256
+        (base32 "09l2j3lwvrq7bf3051vjsnml9w63790ly3iylgf26gkrmld6k31w"))
+       (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f ; no tests
+     `(#:tests? #f                      ; no tests
        #:make-flags
        (list
         "CC=gcc"
@@ -1721,7 +1722,7 @@ building the IRC clients and bots.")
      `(("c-toxcore" ,c-toxcore)
        ("curl" ,curl)
        ("freealut" ,freealut)
-       ("gdk-pixbuf" ,gdk-pixbuf) ; for libnotify.pc
+       ("gdk-pixbuf" ,gdk-pixbuf)       ; for libnotify.pc
        ("libconfig" ,libconfig)
        ("libnotify" ,libnotify)
        ("libpng" ,libpng)
@@ -1819,13 +1820,13 @@ QMatrixClient project.")
 (define-public hangups
   (package
     (name "hangups")
-    (version "0.4.6")
+    (version "0.4.9")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "hangups" version))
        (sha256
-        (base32 "0mvpfd5dc3zgcvwfidcd2qyn59xl5biv728mxifw0ls5rzkc9chs"))))
+        (base32 "1jw4i58cd4j1ymsnhv9224xsi26w8y0qrj6z4nw50dnbl45b6aaa"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -1847,6 +1848,9 @@ QMatrixClient project.")
        ("python-reparser" ,python-reparser)
        ("python-requests" ,python-requests)
        ("python-urwid" ,python-urwid)))
+    (native-inputs
+     `(("python-httpretty" ,python-httpretty)
+       ("python-pytest" ,python-pytest)))
     (home-page "https://hangups.readthedocs.io/")
     (synopsis "Instant messaging client for Google Hangouts")
     (description
diff --git a/gnu/packages/monitoring.scm b/gnu/packages/monitoring.scm
index d7bc459ed4..a34e002a8c 100644
--- a/gnu/packages/monitoring.scm
+++ b/gnu/packages/monitoring.scm
@@ -427,16 +427,16 @@ written in Go with pluggable metric collectors.")
 (define-public fswatch
   (package
     (name "fswatch")
-    (version "1.13.0")
+    (version "1.14.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
                       (url "https://github.com/emcrisostomo/fswatch.git")
                       (commit version)))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0r9m3rysqa1kdgghv2i6sv4zrd0v8idsbrp627ys642dl39svir3"))))
+                "1ihn7wp3y7ml2lm8drz2hc6fmgj8kygbygnw8mz7gjax88f9dbx7"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("autoconf" ,autoconf)
diff --git a/gnu/packages/mp3.scm b/gnu/packages/mp3.scm
index d408701814..99ca4f9007 100644
--- a/gnu/packages/mp3.scm
+++ b/gnu/packages/mp3.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017 Pierre Langlois <pierre.langlois@gmx.com>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -471,16 +471,16 @@ compression format (.mpc files).")
 (define-public eyed3
   (package
     (name "eyed3")
-    (version "0.8.8")
-    (source (origin
-             (method url-fetch)
-             (uri (pypi-uri "eyeD3" version))
-             (sha256
-              (base32
-               "197lszkyzm377ym5r0ssryfsiz20yjx8y4rii3wc81n92d1qzlaq"))))
+    (version "0.8.10")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "eyeD3" version))
+       (sha256
+        (base32 "1jb22n1jczxgbpcnfiw12r8dcs74556g1d09mzms44f52kgs7lgc"))))
     (build-system python-build-system)
     (arguments
-     `(#:tests? #f)) ; the required test data contains copyrighted material.
+     `(#:tests? #f))    ; the required test data contains copyrighted material
     (propagated-inputs
      `(("python-grako" ,python-grako)
        ("python-magic" ,python-magic)
diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
index 0147ce7756..a8f9916bb3 100644
--- a/gnu/packages/mpd.scm
+++ b/gnu/packages/mpd.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 ;;; Copyright © 2016, 2018, 2019 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -195,7 +195,7 @@ player daemon.")
 (define-public ncmpc
   (package
     (name "ncmpc")
-    (version "0.33")
+    (version "0.34")
     (source (origin
               (method url-fetch)
               (uri
@@ -204,7 +204,7 @@ player daemon.")
                               "/ncmpc-" version ".tar.xz"))
               (sha256
                (base32
-                "19fp7xkpai4lq3vmpbppgh3ism7lg2sibv237c0sl5a0hls4mq4l"))))
+                "0mz8r6vc4zn5sa3hlq4ii74qcrkh01nbg784zcwahgz8g3fb3i8l"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags
diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm
index 952edca66e..461296f66b 100644
--- a/gnu/packages/mpi.scm
+++ b/gnu/packages/mpi.scm
@@ -161,7 +161,7 @@ bind processes, and much more.")
 (define-public openmpi
   (package
     (name "openmpi")
-    (version "4.0.0")
+    (version "4.0.1")
     (source
      (origin
       (method url-fetch)
@@ -169,8 +169,7 @@ bind processes, and much more.")
                           (version-major+minor version)
                           "/downloads/openmpi-" version ".tar.bz2"))
       (sha256
-       (base32
-        "0srnjwzsmyhka9hhnmqm86qck4w3xwjm8g6sbns58wzbrwv8l2rg"))))
+       (base32 "02cpzcp113gj5hb0j2xc0cqma2fn04i2i0bzf80r71120p9bdryc"))))
     (build-system gnu-build-system)
     (inputs
      `(("hwloc" ,hwloc "lib")
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 1707dfa944..10a23c919f 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -2222,14 +2222,14 @@ computer's keyboard.")
 (define-public aj-snapshot
   (package
     (name "aj-snapshot")
-    (version "0.9.8")
+    (version "0.9.9")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/aj-snapshot/"
                                   "aj-snapshot-" version ".tar.bz2"))
               (sha256
                (base32
-                "0wilky1g2mb88v2z0520s7sw1dsn10iwanc8id5p6z1xsnhg7b6p"))))
+                "0z8wd5yvxdmw1h1rj6km9h01xd4xmp4d86gczlix7hsc7zrf0wil"))))
     (build-system gnu-build-system)
     (inputs
      `(("minixml" ,minixml)
diff --git a/gnu/packages/musl.scm b/gnu/packages/musl.scm
index 8592db1373..1356b8d14d 100644
--- a/gnu/packages/musl.scm
+++ b/gnu/packages/musl.scm
@@ -28,14 +28,14 @@
 (define-public musl
   (package
     (name "musl")
-    (version "1.1.21")
+    (version "1.1.22")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.musl-libc.org/releases/"
                                   "musl-" version ".tar.gz"))
               (sha256
                (base32
-                "0i2z52zgc86af1n1gjiz43hgd85mxjgvgn345zsybja9dxpvchn7"))))
+                "1qr9xqdzziy5bsyyqlh6k8yz056ll55d5yvc0gbhz61ginj422cb"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; musl has no tests
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 9af3d97d95..56369abc41 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -161,7 +161,7 @@ residing in IPv4-only networks, even when they are behind a NAT device.")
 (define-public socat
   (package
     (name "socat")
-    (version "1.7.3.2")
+    (version "1.7.3.3")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -169,7 +169,7 @@ residing in IPv4-only networks, even when they are behind a NAT device.")
                     version ".tar.bz2"))
               (sha256
                (base32
-                "0lcj6zpra33xhgvhmz9l3cqz10v8ybafb8dd1yqkwf1rhy01ymp3"))))
+                "0jnhjijyq74g3wa4ph0am83z6vq7qna7ac0xqjma8s4197z3zmhd"))))
     (build-system gnu-build-system)
     (arguments '(#:tests? #f))                    ;no 'check' phase
     (inputs `(("openssl" ,openssl)))
@@ -590,15 +590,14 @@ of the same name.")
 (define-public wireshark
   (package
     (name "wireshark")
-    (version "3.0.0")
+    (version "3.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.wireshark.org/download/src/wireshark-"
                            version ".tar.xz"))
        (sha256
-        (base32
-         "17h0ixq7yr6scscjkidaj3dh5x6dfd3f97ggdxlklkz9nbsk0kxw"))))
+        (base32 "13605bpnnbqsdr8ybqnscbz9g422zmyymn4q5aci28vc1wylr1l6"))))
     (build-system cmake-build-system)
     (arguments
      `(#:phases
@@ -894,6 +893,30 @@ attacking, testing, and cracking.  All tools are command-line driven, which
 allows for heavy scripting.")
     (license (list license:gpl2+ license:bsd-3))))
 
+(define-public perl-danga-socket
+  (package
+    (name "perl-danga-socket")
+    (version "1.61")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/B/BR/BRADFITZ/"
+                           "Danga-Socket-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0nciapvxnc922ms304af0vavz1kgyr45ard8wc659k9srqar4hwf"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-sys-syscall" ,perl-sys-syscall)))
+    (home-page "https://metacpan.org/release/Danga-Socket")
+    (synopsis "Event loop and event-driven async socket base class")
+    (description
+     "Danga::Socket is an abstract base class for objects backed by a socket
+which provides the basic framework for event-driven asynchronous IO, designed
+to be fast.  Danga::Socket is both a base class for objects, and an event
+loop.")
+    (license license:perl-license)))
+
 (define-public perl-data-validate-ip
   (package
     (name "perl-data-validate-ip")
@@ -924,7 +947,7 @@ private (reserved).")
 (define-public perl-net-dns
  (package
   (name "perl-net-dns")
-  (version "1.19")
+  (version "1.20")
   (source
     (origin
       (method url-fetch)
@@ -935,7 +958,7 @@ private (reserved).")
         (string-append "mirror://cpan/authors/id/N/NL/NLNETLABS/Net-DNS-"
                        version ".tar.gz")))
       (sha256
-       (base32 "1myc23vz0m42yyg8iw7bf1pdrmx9ql6fhl2vwk1vwf55v6yphqi0"))))
+       (base32 "06z09igd42s0kg2ps5k7vpypg77zswfryqzbyalbllvjd0mnknbz"))))
   (build-system perl-build-system)
   (inputs
     `(("perl-digest-hmac" ,perl-digest-hmac)))
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 7bebf3921b..6bb15dc5e9 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2016, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016-2018 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Peter Kreye <kreyepr@gmail.com>
 ;;; Copyright © 2018, 2019 Gabriel Hondet <gabrielhondet@gmail.com>
 ;;; Copyright © 2018 Kei Kebreau <kkebreau@posteo.net>
@@ -57,6 +57,7 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages protobuf)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages sdl)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages tex)
@@ -264,14 +265,15 @@ functional, imperative and object-oriented styles of programming.")
   (package
     (name "ocamlbuild")
     (version "0.13.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/ocaml/ocamlbuild/archive/"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1320cfkixs1xlng5av04pa5qjb3ynvi2kl3k1ngqzg5fpi29b0vr"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ocaml/ocamlbuild.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0v37vjvdqw35yvj8ipmlzmwf1jhip0hbsmcbdcn9cnj12p3mr6k7"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
@@ -302,33 +304,200 @@ functional, imperative and object-oriented styles of programming.")
 for building OCaml library and programs.")
     (license license:lgpl2.1+)))
 
+(define-public ocaml-extlib
+  (package
+    (name "ocaml-extlib")
+    (version "1.7.6")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://ygrek.org.ua/p/release/ocaml-extlib/"
+                                  "extlib-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0wfs20v1yj5apdbj7214wdsr17ayh0qqq7ihidndvc8nmmwfa1dz"))))
+    (build-system ocaml-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (delete 'configure))))
+    (native-inputs
+      `(("ocaml-cppo" ,ocaml-cppo)))
+    (home-page "https://github.com/ygrek/ocaml-extlib")
+    (synopsis "Complete and small extension for OCaml standard library")
+    (description "This library adds new functions to OCaml standard library
+modules, modifies some functions in order to get better performances or
+safety (tail-recursive) and also provides new modules which should be useful
+for day to day programming.")
+    ;; With static-linking exception
+    (license license:lgpl2.1+)))
+
+(define-public ocaml-cudf
+  (package
+    (name "ocaml-cudf")
+    (version "0.9")
+    (source
+      (origin
+        (method url-fetch)
+        (uri "https://gforge.inria.fr/frs/download.php/36602/cudf-0.9.tar.gz")
+        (sha256
+          (base32
+            "0771lwljqwwn3cryl0plny5a5dyyrj4z6bw66ha5n8yfbpcy8clr"))))
+    (build-system ocaml-build-system)
+    (propagated-inputs `(("ocaml-extlib" ,ocaml-extlib)))
+    (native-inputs
+      `(("perl" ,perl)
+        ("ocamlbuild" ,ocamlbuild)
+        ("ocaml-ounit" ,ocaml-ounit)))
+    (arguments
+     `(#:make-flags
+       (list
+         "all" "opt"
+         (string-append "BINDIR=" (assoc-ref %outputs "out")
+                        "/bin"))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure))))
+    (home-page "http://www.mancoosi.org/cudf/")
+    (synopsis "CUDF library (part of the Mancoosi tools)")
+    (description "CUDF (for Common Upgradeability Description Format) is a
+format for describing upgrade scenarios in package-based Free and Open Source
+Software distribution.")
+    ;; With static-linking exception
+    (license license:lgpl2.1+)))
+
+(define-public ocaml-mccs
+  (package
+    (name "ocaml-mccs")
+    (version "1.1+9")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/AltGr/ocaml-mccs")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1i0hhkrqi7rqlainlg5pc4hibbx6b5dp3x99gmav8c3sbfvlk9mc"))))
+    (build-system dune-build-system)
+    (propagated-inputs `(("ocaml-cudf" ,ocaml-cudf)))
+    (home-page "http://www.i3s.unice.fr/~cpjm/misc/")
+    (synopsis "Upgrade path problem solver")
+    (description "Mccs (Multi Criteria CUDF Solver) is a CUDF problem solver.
+Mccs take as input a CUDF problem and computes the best solution according to
+a set of criteria.  It relies on a Integer Programming solver or a
+Pseudo Boolean solver to achieve its task.  Mccs can use a wide set of
+underlying solvers like Cplex, Gurobi, Lpsolver, Glpk, CbC, SCIP or WBO.")
+    (license (list
+               license:bsd-3
+               license:gpl3+
+               ;; With static-linking exception
+               license:lgpl2.1+))))
+
+(define-public ocaml-dose3
+  (package
+    (name "ocaml-dose3")
+    (version "5.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri "https://gforge.inria.fr/frs/download.php/file/36063/dose3-5.0.1.tar.gz")
+              (sha256
+               (base32
+                "00yvyfm4j423zqndvgc1ycnmiffaa2l9ab40cyg23pf51qmzk2jm"))
+              (patches
+               (search-patches
+                "ocaml-dose3-Add-unix-as-dependency-to-dose3.common-in-META.in.patch"
+                "ocaml-dose3-Fix-for-ocaml-4.06.patch"
+                "ocaml-dose3-dont-make-printconf.patch"
+                "ocaml-dose3-Install-mli-cmx-etc.patch"))))
+    (build-system ocaml-build-system)
+    (arguments
+     `(#:configure-flags
+       (list (string-append "SHELL="
+                            (assoc-ref %build-inputs "bash")
+                            "/bin/sh"))
+       #:make-flags
+       (list (string-append "LIBDIR="
+                            (assoc-ref %outputs "out")
+                            "/lib/ocaml/site-lib"))))
+    (propagated-inputs
+      `(("ocaml-graph" ,ocaml-graph)
+        ("ocaml-cudf" ,ocaml-cudf)
+        ("ocaml-extlib" ,ocaml-extlib)
+        ("ocaml-re" ,ocaml-re)))
+    (native-inputs
+      `(("perl" ,perl)
+        ("python" ,python-2) ; for a test script
+        ("python2-pyyaml" ,python2-pyyaml) ; for a test script
+        ("ocaml-extlib" ,ocaml-extlib)
+        ("ocamlbuild" ,ocamlbuild)
+        ("ocaml-cppo" ,ocaml-cppo)))
+    (home-page "http://www.mancoosi.org/software/")
+    (synopsis "Package distribution management framework")
+    (description "Dose3 is a framework made of several OCaml libraries for
+managing distribution packages and their dependencies.  Though not tied to
+any particular distribution, dose3 constitutes a pool of libraries which
+enable analyzing packages coming from various distributions.  Besides basic
+functionalities for querying and setting package properties, dose3 also
+implements algorithms for solving more complex problems such as monitoring
+package evolutions, correct and complete dependency resolution and
+repository-wide uninstallability checks.")
+    ;; with static-linking exception
+    (license license:lgpl2.1+)))
+
+(define-public ocaml-opam-file-format
+  (package
+    (name "ocaml-opam-file-format")
+    (version "2.0.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/ocaml/opam-file-format")
+                     (commit version)))
+              (sha256
+               (base32
+                "0fqb99asnair0043hhc8r158d6krv5nzvymd0xwycr5y72yrp0hv"))))
+    (build-system ocaml-build-system)
+    (arguments
+     `(#:tests? #f; No tests
+       #:make-flags (list (string-append "LIBDIR=" (assoc-ref %outputs "out")
+                                         "/lib/ocaml/site-lib"))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure))))
+    (home-page "https://opam.ocaml.org")
+    (synopsis "Parser and printer for the opam file syntax")
+    (description "This package contains a parser and a pretty-printer for
+the opam file fomat.")
+    ;; With static-linking exception
+    (license license:lgpl2.1+)))
+
 (define-public opam
   (package
     (name "opam")
-    (version "2.0.3")
+    (version "2.0.4")
     (source (origin
-              (method url-fetch)
-              ;; Use the '-full' version, which includes all the dependencies.
-              (uri (string-append
-                    "https://github.com/ocaml/opam/releases/download/"
-                    version "/opam-full-" version ".tar.gz")
-               ;; (string-append "https://github.com/ocaml/opam/archive/"
-               ;;                    version ".tar.gz")
-               )
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/ocaml/opam")
+                     (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1qphm1grxx5j8li7f9qfpih4ylrnjl08b4ym8ma4ln44l56xm285"))))
-    (build-system gnu-build-system)
+                "1yx5k8v5vnnc20fmz5zx8kqd242j48qcknlk6vmkr7rkq886ipq2"))))
+    (build-system ocaml-build-system)
     (arguments
-     '(;; Sometimes, 'make -jX' would fail right after ./configure with
-       ;; "Fatal error: exception End_of_file".
-       #:parallel-build? #f
+     `(#:configure-flags
+       (list (string-append "SHELL="
+                            (assoc-ref %build-inputs "bash")
+                            "/bin/sh"))
 
        ;; For some reason, 'ocp-build' needs $TERM to be set.
-       #:make-flags `("TERM=screen"
-                      ,(string-append "SHELL="
-                                      (assoc-ref %build-inputs "bash")
-                                      "/bin/sh"))
+       #:make-flags
+       (list "TERM=screen"
+             (string-append "SHELL="
+                            (assoc-ref %build-inputs "bash")
+                            "/bin/sh"))
+
        #:test-target "tests"
 
        ;; FIXME: There's an obscure test failure:
@@ -354,12 +523,10 @@ for building OCaml library and programs.")
                          ;; isolated environment when building with opam.
                          ;; This is necessary for packages to find external
                          ;; dependencies, such as a C compiler, make, etc...
-                         (("^add_mounts ro /usr")
-                          "add_mounts ro /gnu /run/current-system /usr"))
+                         (("^add_sys_mounts /usr")
+                          "add_sys_mounts /gnu /run/current-system /usr"))
                        (substitute* "src/client/opamInitDefaults.ml"
                          (("\"bwrap\"") (string-append "\"" bwrap "\"")))
-                       ;; Build dependencies
-                       (apply invoke "make" "lib-ext" make-flags)
                        #t)))
                  (add-before 'check 'pre-check
                    (lambda _
@@ -368,7 +535,9 @@ for building OCaml library and programs.")
                      (invoke "git" "config" "--global" "user.name" "Guix")
                      #t)))))
     (native-inputs
-     `(("git" ,git)                               ;for the tests
+     `(("dune" ,dune)
+       ("git" ,git)                               ;for the tests
+       ("ocaml-cppo" ,ocaml-cppo)
        ("python" ,python)                         ;for the tests
        ("camlp4" ,camlp4)))
     (inputs
@@ -376,6 +545,12 @@ for building OCaml library and programs.")
        ("ncurses" ,ncurses)
        ("curl" ,curl)
        ("bubblewrap" ,bubblewrap)))
+    (propagated-inputs
+     `(("ocaml-cmdliner" ,ocaml-cmdliner)
+       ("ocaml-dose3" ,ocaml-dose3)
+       ("ocaml-mccs" ,ocaml-mccs)
+       ("ocaml-opam-file-format" ,ocaml-opam-file-format)
+       ("ocaml-re" ,ocaml-re)))
     (home-page "http://opam.ocamlpro.com/")
     (synopsis "Package manager for OCaml")
     (description
@@ -390,14 +565,15 @@ Git-friendly development workflow.")
   (package
     (name "camlp4")
     (version "4.02+6")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/ocaml/camlp4/archive/"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "0icdfzhsbgf89925gc8gl3fm8z2xzszzlib0v9dj5wyzkyv3a342"))
-              (file-name (string-append name "-" version ".tar.gz"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ocaml/camlp4.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "06yl4q0qazl7g25b0axd1gdkfd4qpqzs1gr5fkvmkrcbz113h1hj"))))
     (build-system gnu-build-system)
     (native-inputs `(("ocaml" ,ocaml-4.02)
                      ("which" ,which)))
@@ -447,14 +623,15 @@ syntax of OCaml.")
     (inherit camlp4-4.02)
     (name "camlp4")
     (version "4.07+1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/ocaml/camlp4/archive/"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "143hhxv1i6aq413z0i1pynrjcfl2g5gnh5r3863v6h9z0riqknzc"))
-              (file-name (string-append name "-" version ".tar.gz"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ocaml/camlp4.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0cxl4hkqcvspvkx4f2k83217rh6051fll9i2yz7cw6m3bq57mdvl"))))
     (properties
      `((ocaml4.02-variant . ,(delay camlp4-4.02))))
     (native-inputs
@@ -470,14 +647,15 @@ syntax of OCaml.")
   (package
     (name "camlp5")
     (version "7.07")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/camlp5/camlp5/archive/rel"
-                                  (string-delete #\. version) ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "148r6p93xlxi6v7kbsqv8i70r6av04cyn0109pwss5xj6fw97i52"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/camlp5/camlp5.git")
+             (commit (string-append "rel" (string-delete #\. version)))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1c8v45553ccbqha2ypfranqlgw06rr5wjr2hlnrx5bf9jfq0h0dn"))))
     (build-system gnu-build-system)
     (inputs
      `(("ocaml" ,ocaml)))
@@ -556,14 +734,15 @@ written in Objective Caml.")
   (package
     (name "ocaml-num")
     (version "1.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/ocaml/num/archive/v"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1xlkd0svc0mgq5s7nrm2rjrsvg15i9wxqkc1kvwjp6sv8vv8bb04"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ocaml/num.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0a4mhxgs5hi81d227aygjx35696314swas0vzy3ig809jb7zq4h0"))))
     (build-system ocaml-build-system)
     (arguments
      `(#:phases
@@ -600,20 +779,25 @@ the OCaml core distribution.")
   (package
     (name "emacs-tuareg")
     (version "2.2.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/ocaml/tuareg/archive/"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1ynpfc170f9jqx49biji9npfkvfpflbm29xf24wc7fnxxayr49ig"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ocaml/tuareg.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "06zxnn85fk5087iq0zxc5l5n9fz8r0367wylmynbfhc9711vccy6"))))
     (build-system gnu-build-system)
     (native-inputs `(("emacs" ,emacs-minimal)
                      ("opam" ,opam)))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'make-git-checkout-writable
+           (lambda _
+             (for-each make-file-writable (find-files "."))
+             #t))
          (delete 'configure)
          (add-before 'install 'fix-install-path
            (lambda* (#:key outputs #:allow-other-keys)
@@ -1094,14 +1278,15 @@ GNU CC attributes.  It provides also a C pretty printer as an example of use.")
   (package
     (name "ocaml-qcheck")
     (version "0.5.3.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/c-cube/qcheck/archive/"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1zs1pg5cb1iry554v3cdmmiglsrwmsqa9x8zxmzb118fnk5d3ha6"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/c-cube/qcheck.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0vl2asr7md99pv558nbszxvjj36b4l6rj05hyczfy524vihhl0gf"))))
     (build-system ocaml-build-system)
     (native-inputs
      `(("ounit" ,ocaml-ounit)
@@ -1185,17 +1370,18 @@ full_split, cut, rcut, etc..")
   (package
     (name "ocaml-bisect")
     (version "1.3.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/gasche/bisect/archive/"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0p67fppk5ifb63b00kxwrb1xg75hrqhknng3bsdyw3gxxqyjlpmx"))
-              (patches
-               (search-patches
-                "ocaml-bisect-fix-camlp4-in-another-directory.patch"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/gasche/bisect.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0hm5za61qydda6ri3887b4zqqbqilh42x712xnclm1rr7ggga2nh"))
+       (patches
+        (search-patches
+         "ocaml-bisect-fix-camlp4-in-another-directory.patch"))))
     (build-system ocaml-build-system)
     (native-inputs
      `(("camlp4" ,camlp4)
@@ -1613,32 +1799,28 @@ spans without being subject to operating system calendar time adjustments.")
 (define-public ocaml-cmdliner
   (package
     (name "ocaml-cmdliner")
-    (version "1.0.2")
+    (version "1.0.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://erratique.ch/software/cmdliner/releases/"
                                   "cmdliner-" version ".tbz"))
               (sha256
                (base32
-                "18jqphjiifljlh9jg8zpl6310p3iwyaqphdkmf89acyaix0s4kj1"))))
+                "0g3w4hvc1cx9x2yp5aqn6m2rl8lf9x1dn754hfq8m1sc1102lxna"))))
     (build-system ocaml-build-system)
     (inputs
      `(("ocaml-result" ,ocaml-result)))
     (native-inputs
-     `(("ocamlbuild" ,ocamlbuild)
-       ("opam" ,opam)))
+     `(("ocamlbuild" ,ocamlbuild)))
     (arguments
      `(#:tests? #f
-       #:build-flags '("native=true" "native-dynlink=true")
+       #:make-flags (list (string-append "LIBDIR=" (assoc-ref %outputs "out")
+                                         "/lib/ocaml/site-lib/cmdliner"))
        #:phases
        (modify-phases %standard-phases
-         (replace 'install
-           ;; The makefile says 'adjust on cli invocation'
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (invoke "make" "install" (string-append "PREFIX=" out))
-               #t)))
          (delete 'configure))))
+    (properties
+     `((ocaml4.02-variant . ,(delay ocaml4.02-cmdliner))))
     (home-page "http://erratique.ch/software/cmdliner")
     (synopsis "Declarative definition of command line interfaces for OCaml")
     (description "Cmdliner is a module for the declarative definition of command
@@ -1650,7 +1832,17 @@ most of the POSIX and GNU conventions.")
     (license license:bsd-3)))
 
 (define-public ocaml4.02-cmdliner
-  (package-with-ocaml4.02 ocaml-cmdliner))
+  (let ((base (package-with-ocaml4.02 (strip-ocaml4.02-variant ocaml-cmdliner))))
+    (package
+      (inherit base)
+      (version "1.0.2")
+      (source (origin
+                (method url-fetch)
+                (uri (string-append "http://erratique.ch/software/cmdliner/releases/"
+                                    "cmdliner-" version ".tbz"))
+                (sha256
+                 (base32
+                  "18jqphjiifljlh9jg8zpl6310p3iwyaqphdkmf89acyaix0s4kj1")))))))
 
 (define-public ocaml-fmt
   (package
@@ -1764,18 +1956,19 @@ simple (yet expressive) query language to select the tests to run.")
     (name "ocaml-ppx-tools")
     (version "5.1+4.06.0")
     (source
-      (origin
-        (method url-fetch)
-        (uri (string-append "https://github.com/alainfrisch/ppx_tools/archive/"
-                            version ".tar.gz"))
-        (sha256 (base32
-                  "0mncpy9v2mcjgnj7s2vqpp2b1ixv54djicfx66ic9wny9d202gj1"))))
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/alainfrisch/ppx_tools.git")
+             (commit version)))
+       (sha256 (base32
+                "1ww4cspdpgjjsgiv71s0im5yjkr3544x96wsq1vpdacq7dr7zwiw"))))
     (build-system ocaml-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases (delete 'configure))
        #:tests? #f))
     (properties
-      `((ocaml4.02-variant . ,(delay ocaml4.02-ppx-tools))))
+     `((ocaml4.02-variant . ,(delay ocaml4.02-ppx-tools))))
     (home-page "https://github.com/alainfrisch/ppx_tools")
     (synopsis "Tools for authors of ppx rewriters and other syntactic tools")
     (description "Tools for authors of ppx rewriters and other syntactic tools.")
@@ -1787,12 +1980,13 @@ simple (yet expressive) query language to select the tests to run.")
       (inherit base)
       (version "5.0+4.02.0")
       (source
-        (origin
-          (method url-fetch)
-          (uri (string-append "https://github.com/alainfrisch/ppx_tools/archive/"
-                              version ".tar.gz"))
-          (sha256 (base32
-                    "0rjg4rngi8k9873z4zq95zn9hj8qyw1vcrf11y15aqasfpqq16rc")))))))
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/alainfrisch/ppx_tools.git")
+               (commit version)))
+         (sha256
+          (base32 "16drjk0qafjls8blng69qiv35a84wlafpk16grrg2i3x19p8dlj8")))))))
 
 (define-public ocaml-react
   (package
@@ -2088,14 +2282,15 @@ representation of the data.")
   (package
     (name "ocaml-ulex")
     (version "1.2")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/whitequark/ulex/archive/v"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-                (base32
-                  "16gnbhqs6y2v89vw4igzvxdf2g8ybh5643636824aldcv8sscac0"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/whitequark/ulex.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "08yf2x9a52l2y4savjqfjd2xy4pjd1rpla2ylrr9qrz1drpfw4ic"))))
     (build-system ocaml-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases (delete 'configure))
@@ -2761,13 +2956,14 @@ programs.  It allows the definition of simple macros and file inclusion.  Cpp oi
     (name "ocaml4.02-ppx-deriving")
     (version "4.1")
     (source
-      (origin
-        (method url-fetch)
-        (uri (string-append "https://github.com/whitequark/ppx_deriving//archive/v"
-                            version ".tar.gz"))
-        (sha256 (base32
-                  "1fr16g121j6zinwcprzlhx2py4271n9jzs2m9hq2f3qli2b1p0vl"))
-        (file-name (string-append name "-" version ".tar.gz"))))
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/whitequark/ppx_deriving.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0cy9p8d8cbcxvqyyv8fz2z9ypi121zrgaamdlp4ld9f3jnwz7my9"))))
     (build-system ocaml-build-system)
     (native-inputs
      `(("js-build-tools" ,ocaml4.02-js-build-tools)
@@ -2782,13 +2978,17 @@ programs.  It allows the definition of simple macros and file inclusion.  Cpp oi
        #:findlib ,ocaml4.02-findlib
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'make-git-checkout-writable
+           (lambda _
+             (for-each make-file-writable (find-files "."))
+             #t))
          (delete 'configure)
-           (add-before 'install 'fix-environment
-             (lambda* (#:key outputs #:allow-other-keys)
-               ;; the installation procedures looks for the installed module
-               (setenv "OCAMLPATH"
-                       (string-append (getenv "OCAMLPATH") ":"
-                                      (getenv "OCAMLFIND_DESTDIR"))))))))
+         (add-before 'install 'fix-environment
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; the installation procedures looks for the installed module
+             (setenv "OCAMLPATH"
+                     (string-append (getenv "OCAMLPATH") ":"
+                                    (getenv "OCAMLFIND_DESTDIR"))))))))
     (home-page "https://github.com/whitequark/ppx_deriving/")
     (synopsis "Type-driven code generation for OCaml >=4.02")
     (description "Ppx_deriving provides common infrastructure for generating
@@ -3316,14 +3516,15 @@ new record values.")
   (package
     (name "ocaml-seq")
     (version "0.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/c-cube/seq/archive/"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "02lb2d9i12bxrz2ba5wygk2bycan316skqlyri0597q7j9210g8r"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/c-cube/seq.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1cjpsc7q76yfgq9iyvswxgic4kfq2vcqdlmxjdjgd4lx87zvcwrv"))))
     (build-system ocaml-build-system)
     (arguments
      `(#:tests? #f
@@ -3342,9 +3543,9 @@ new record values.")
 version=\"[distributed with ocaml]\"
 description=\"dummy package for compatibility\"
 requires=\"\"")))
-             #t))))))
+               #t))))))
     (properties
-      `((ocaml4.02-variant . ,(delay ocaml4.02-seq))))
+     `((ocaml4.02-variant . ,(delay ocaml4.02-seq))))
     (home-page "https://github.com/c-cube/seq")
     (synopsis "OCaml's standard iterator type")
     (description "This package is a compatibility package for OCaml's
@@ -3365,14 +3566,15 @@ standard iterator type starting from 4.07.")
   (package
     (name "ocaml-re")
     (version "1.8.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/ocaml/ocaml-re//archive/"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1pdb0mr6z5ax6szblr3f5lbdnqq9grm97cmsfjmdma60yrx2rqhd"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ocaml/ocaml-re.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0ch6hvmm4ym3w2vghjxf3ka5j1023a37980fqi4zcb7sx756z20i"))))
     (build-system dune-build-system)
     (arguments
      `(#:tests? #f
@@ -3751,14 +3953,15 @@ writing to these structures, and they are accessed via the Bigarray module.")
   (package
     (name "ocaml4.02-ezjsonm")
     (version "0.4.3")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/mirage/ezjsonm/archive/"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "1kag0z2xlk4rw73a240dmkxh9rj6psxxcxkm7d7z0rrj6hzjajgq"))
-              (file-name (string-append name "-" version ".tar.gz"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mirage/ezjsonm.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1y6p3ga6vj1wx5dyns7hjgd0qgrrn2hnn323a7y5didgci5pybls"))))
     (build-system ocaml-build-system)
     (native-inputs
      `(("alcotest" ,ocaml4.02-alcotest)))
@@ -3783,14 +3986,15 @@ JSON.")
   (package
     (name "ocaml4.02-uri")
     (version "1.9.2")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/mirage/ocaml-uri/archive/v"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "02bzrag79prx261rxf9mlak749pwf4flpfl8p012x1xznv9m0clc"))
-              (file-name (string-append name "-" version ".tar.gz"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mirage/ocaml-uri.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "137pg8j654x7r0d1664iy2zp3l82nki1kkh921lwdrwc5qqdl6jx"))))
     (build-system ocaml-build-system)
     (arguments
      `(#:ocaml ,ocaml-4.02
@@ -3838,14 +4042,15 @@ Format module of the OCaml standard library.")
   (package
     (name "optcomp")
     (version "1.6")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/diml/optcomp/archive/"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "0hhhb2gisah1h22zlg5iszbgqxdd7x85cwd57bd4mfkx9l7dh8jh"))
-              (file-name (string-append name "-" version ".tar.gz"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/diml/optcomp.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0bm4f3fs9g1yiz48hdxvcjwnrgymwisqilxhmm87ndz81wp47zfy"))))
     (build-system ocaml-build-system)
     (arguments
      `(#:ocaml ,ocaml-4.02
@@ -3867,14 +4072,15 @@ cpp-like directives.")
   (package
     (name "ocaml-piqilib")
     (version "0.6.14")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/alavrik/piqi/archive/v"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "1ssccnwqzfyf7syfq2fv4zyhwayxwd75rhq9y28mvq1w6qbww4l7"))
-              (file-name (string-append name "-" version ".tar.gz"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/alavrik/piqi.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0lyqllmfsxmwlg7qidy92kvxi9n39lvachmydcyi81f8p07ykd2d"))))
     (build-system ocaml-build-system)
     (arguments
      `(#:phases
@@ -4135,15 +4341,15 @@ library is currently designed for Unicode Standard 3.2.")
   (package
     (name "ocaml-jbuilder")
     (version "1.0+beta16")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/janestreet/jbuilder/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1cy07pwvbrlysszs938yd74yyvvbgkffpb82qrjph77zf0h2gdi7"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/janestreet/jbuilder.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1y3fgf570w3vrnhianrg26jy5j749zczq3f78s2dy5ylbp1hrx71"))))
     (build-system ocaml-build-system)
     (arguments
      `(#:ocaml ,ocaml-4.02
@@ -4171,14 +4377,15 @@ is provide a description of your project and Jbuilder will do the rest.")
   (package
     (name "ocaml-zed")
     (version "1.6")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/diml/zed/archive/"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "19m5vrj60vg1b63qfsv0aabdlzgn40cqmx65s3wafqi4fs9xp6jn"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/diml/zed.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "00hhxcjf3bj3w2qm8nzs9x6vrqkadf4i0277s5whzy2rmiknj63v"))))
     (build-system ocaml-build-system)
     (arguments
      `(#:phases
@@ -4212,12 +4419,13 @@ connect an engine to your inputs and rendering functions to get an editor.")
     (version "1.13")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/diml/lambda-term/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/diml/lambda-term.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "1hy5ryagqclgdm9lzh1qil5mrynlypv7mn6qm858hdcnmz9zzn0l"))))
+        (base32 "0wwib20b2ir3h2g9zwhzn04cv160psb805skp8v23wqgyn5cnbh8"))))
     (build-system dune-build-system)
     (arguments
      `(#:build-flags (list "--profile" "release")
@@ -4243,14 +4451,15 @@ instead of bindings to a C library.")
   (package
     (name "ocaml-utop")
     (version "2.2.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/ocaml-community/utop/archive/"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1414snwmqaxs1x8wbpjf6fn3jsl01hq0phrr7639xmb5vh15mgd4"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ocaml-community/utop.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "02hjkc0rdzfq3bqy9mqm5wmw312r3187v9cl66ynb6hxkj6s3glb"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
@@ -4824,6 +5033,26 @@ Atom.")
 the OCaml language.")
     (license license:gpl3+)))
 
+(define-public ocaml-gsl-1
+  (package
+    (inherit ocaml-gsl)
+    (version "1.19.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/mmottl/gsl-ocaml"
+                                  "/releases/download/v"
+                                  version "/gsl-ocaml-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0nzp43hp8pbjqkrxnwp5lgjrabxayf61h18fjaydi0s5faq6f3xh"))))
+    (build-system ocaml-build-system)
+    (inputs
+     `(("gsl" ,gsl)))
+    (native-inputs
+     `(("ocamlbuild" ,ocamlbuild)))
+    (arguments '())
+    (propagated-inputs '())))
+
 (define-public cubicle
   (package
     (name "cubicle")
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index 167d03b954..ceedae2e61 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -136,7 +136,7 @@ and they are executed on lists of files, hosts, users or other items.")
    (build-system gnu-build-system)
    (arguments
     `(#:configure-flags
-      (list "--enable-pam"
+      (list "--enable-pam" "--sysconfdir=/etc/slurm"
             (string-append "--with-freeipmi=" (assoc-ref %build-inputs "freeipmi"))
             (string-append "--with-hwloc=" (assoc-ref %build-inputs "hwloc"))
             (string-append "--with-json=" (assoc-ref %build-inputs "json-c"))
diff --git a/gnu/packages/patches/docker-use-fewer-modprobes.patch b/gnu/packages/patches/docker-use-fewer-modprobes.patch
index 2779e1be5d..4e4a45b6ce 100644
--- a/gnu/packages/patches/docker-use-fewer-modprobes.patch
+++ b/gnu/packages/patches/docker-use-fewer-modprobes.patch
@@ -103,17 +103,35 @@ See <https://github.com/moby/moby/pull/38930>.
  
 --- docker-18.09.0-checkout/vendor/github.com/docker/libnetwork/ns/init_linux.go.orig	2019-03-19 11:23:20.738316699 +0100
 +++ docker-18.09.0-checkout/vendor/github.com/docker/libnetwork/ns/init_linux.go	2019-03-19 11:27:57.149753073 +0100
-@@ -100,12 +100,7 @@
+@@ -76,12 +76,8 @@ func NlHandle() *netlink.Handle {
+ func getSupportedNlFamilies() []int {
+ 	fams := []int{syscall.NETLINK_ROUTE}
+ 	// NETLINK_XFRM test
+-	if err := loadXfrmModules(); err != nil {
+-		if checkXfrmSocket() != nil {
+-			logrus.Warnf("Could not load necessary modules for IPSEC rules: %v", err)
+-		} else {
+-			fams = append(fams, syscall.NETLINK_XFRM)
+-		}
++	if err := checkXfrmSocket(); err != nil {
++		logrus.Warnf("Could not load necessary modules for IPSEC rules: %v", err)
+ 	} else {
+ 		fams = append(fams, syscall.NETLINK_XFRM)
+ 	}
+@@ -99,16 +95,6 @@ func getSupportedNlFamilies() []int {
+ 	return fams
  }
  
- func loadXfrmModules() error {
+-func loadXfrmModules() error {
 -	if out, err := exec.Command("modprobe", "-va", "xfrm_user").CombinedOutput(); err != nil {
 -		return fmt.Errorf("Running modprobe xfrm_user failed with message: `%s`, error: %v", strings.TrimSpace(string(out)), err)
 -	}
 -	if out, err := exec.Command("modprobe", "-va", "xfrm_algo").CombinedOutput(); err != nil {
 -		return fmt.Errorf("Running modprobe xfrm_algo failed with message: `%s`, error: %v", strings.TrimSpace(string(out)), err)
 -	}
-+	// Those are automatically loaded when someone opens the socket anyway.
- 	return nil
- }
- 
+-	return nil
+-}
+-
+ // API check on required xfrm modules (xfrm_user, xfrm_algo)
+ func checkXfrmSocket() error {
+ 	fd, err := syscall.Socket(syscall.AF_NETLINK, syscall.SOCK_RAW, syscall.NETLINK_XFRM)
diff --git a/gnu/packages/patches/idris-test-no-node.patch b/gnu/packages/patches/idris-test-no-node.patch
new file mode 100644
index 0000000000..c04ad41a8e
--- /dev/null
+++ b/gnu/packages/patches/idris-test-no-node.patch
@@ -0,0 +1,61 @@
+From 6c52e1b902b869c25e2fe39cff6364143a04da61 Mon Sep 17 00:00:00 2001
+From: Niklas Larsson <niklas@mm.st>
+Date: Tue, 11 Dec 2018 19:56:22 +0100
+Subject: [PATCH] Only check for Node when required
+
+---
+ test/TestRun.hs | 34 ++++++++++++++++++++--------------
+ 1 file changed, 20 insertions(+), 14 deletions(-)
+
+diff --git a/test/TestRun.hs b/test/TestRun.hs
+index c7db9fdcd..4809911f3 100644
+--- a/test/TestRun.hs
++++ b/test/TestRun.hs
+@@ -11,6 +11,7 @@ import Data.Proxy
+ import Data.Typeable
+ import Options.Applicative
+ import System.Directory
++import System.Environment
+ import System.Exit
+ import System.FilePath ((</>))
+ import System.Info
+@@ -103,20 +104,25 @@ runTest path flags = do
+       normalise (x : xs) = x : normalise xs
+       normalise [] = []
+ 
++checkNode :: IO  ()
++checkNode = do
++    nodePath   <- findExecutable "node"
++    nodejsPath <- findExecutable "nodejs"
++    let node = nodePath <|> nodejsPath
++    case node of
++      Nothing -> do
++        putStrLn "For running the test suite against Node, node must be installed."
++        exitFailure
++      Just _  -> return ()
++
+ main :: IO ()
+ main = do
+-  nodePath   <- findExecutable "node"
+-  nodejsPath <- findExecutable "nodejs"
+-  let node = nodePath <|> nodejsPath
+-  case node of
+-    Nothing -> do
+-      putStrLn "For running the test suite against Node, node must be installed."
+-      exitFailure
+-    Just _  -> do
+-      defaultMainWithIngredients ingredients $
++    args <- getArgs
++    when ("--node" `elem` args) checkNode
++    defaultMainWithIngredients ingredients $
+         askOption $ \(NodeOpt node) ->
+-          let (codegen, flags) = if node then (JS, ["--codegen", "node"])
+-                                         else (C , [])
+-           in
+-            mkGoldenTests (testFamiliesForCodegen codegen)
+-                        (flags ++ idrisFlags)
++            let (codegen, flags) = if node then (JS, ["--codegen", "node"])
++                                           else (C , [])
++            in
++                mkGoldenTests (testFamiliesForCodegen codegen) (flags ++ idrisFlags)
++
diff --git a/gnu/packages/patches/knot-include-system-lmdb-header.patch b/gnu/packages/patches/knot-include-system-lmdb-header.patch
deleted file mode 100644
index 5c5c0beabc..0000000000
--- a/gnu/packages/patches/knot-include-system-lmdb-header.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From: Tobias Geerinckx-Rice <me@tobias.gr>
-Date: Wed, 20 Mar 2019 00:08:00 +0100
-Subject: [PATCH] gnu: knot: Include system <lmdb.h>.
-
-Copied verbatim from Knot master[0].
-
-[0]: https://gitlab.labs.nic.cz/knot/knot-dns/commit/b557430cffbb1c6b30617a394b02acc514e7e536
-
-From b557430cffbb1c6b30617a394b02acc514e7e536 Mon Sep 17 00:00:00 2001
-From: Daniel Salzman <daniel.salzman@nic.cz>
-Date: Wed, 6 Mar 2019 17:35:44 +0100
-Subject: [PATCH] journal: include proper header <lmdb.h>
-
-fixes #638
----
- src/knot/journal/knot_lmdb.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/knot/journal/knot_lmdb.h b/src/knot/journal/knot_lmdb.h
-index 35a88845c..b1d09cbb4 100644
---- a/src/knot/journal/knot_lmdb.h
-+++ b/src/knot/journal/knot_lmdb.h
-@@ -16,7 +16,7 @@
- 
- #pragma once
- 
--#include "contrib/lmdb/lmdb.h"
-+#include <lmdb.h>
- 
- #include <stdbool.h>
- #include <stdlib.h>
--- 
-2.18.1
-
diff --git a/gnu/packages/patches/kodi-set-libcurl-ssl-parameters.patch b/gnu/packages/patches/kodi-set-libcurl-ssl-parameters.patch
new file mode 100644
index 0000000000..f977c6dd98
--- /dev/null
+++ b/gnu/packages/patches/kodi-set-libcurl-ssl-parameters.patch
@@ -0,0 +1,16 @@
+Kodi doesn't set the CAPATH and CAINFO parameters for libcurl. To make HTTPS
+connections work we can set them based on SSL_CERT_DIR and SSL_CERT_FILE.
+
+--- a/xbmc/filesystem/CurlFile.cpp
++++ b/xbmc/filesystem/CurlFile.cpp
+@@ -626,5 +626,9 @@
+   // Setup allowed TLS/SSL ciphers. New versions of cURL may deprecate things that are still in use.
+   if (!m_cipherlist.empty())
+     g_curlInterface.easy_setopt(h, CURLOPT_SSL_CIPHER_LIST, m_cipherlist.c_str());
++
++  // Load certificate data from environment paths
++  g_curlInterface.easy_setopt(m_state->m_easyHandle, CURLOPT_CAPATH, getenv("SSL_CERT_DIR"));
++  g_curlInterface.easy_setopt(m_state->m_easyHandle, CURLOPT_CAINFO, getenv("SSL_CERT_FILE"));
+ }
+ 
+ void CCurlFile::SetRequestHeaders(CReadState* state)
\ No newline at end of file
diff --git a/gnu/packages/patches/ocaml-dose3-Add-unix-as-dependency-to-dose3.common-in-META.in.patch b/gnu/packages/patches/ocaml-dose3-Add-unix-as-dependency-to-dose3.common-in-META.in.patch
new file mode 100644
index 0000000000..d2cc44c784
--- /dev/null
+++ b/gnu/packages/patches/ocaml-dose3-Add-unix-as-dependency-to-dose3.common-in-META.in.patch
@@ -0,0 +1,25 @@
+From b94cf24739818e5aff397e0a83b19ea32dc81f42 Mon Sep 17 00:00:00 2001
+From: Louis Gesbert <louis.gesbert@ocamlpro.com>
+Date: Tue, 6 Feb 2018 10:15:45 +0100
+Subject: [PATCH 3/3] Add "unix" as dependency to dose3.common in META.in
+
+---
+ META.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/META.in b/META.in
+index aa2cd8d..0f9d337 100644
+--- a/META.in
++++ b/META.in
+@@ -8,7 +8,7 @@ package "common" (
+ version = "@PACKAGE_VERSION@"
+ archive(byte) = "common.cma"
+ archive(native) = "common.cmxa"
+-requires = "extlib, re.pcre, cudf, @ZIP@, @BZ2@"
++requires = "extlib, re.pcre, cudf, unix, @ZIP@, @BZ2@"
+ )
+ 
+ package "algo" (
+-- 
+2.11.0
+
diff --git a/gnu/packages/patches/ocaml-dose3-Fix-for-ocaml-4.06.patch b/gnu/packages/patches/ocaml-dose3-Fix-for-ocaml-4.06.patch
new file mode 100644
index 0000000000..2c344af821
--- /dev/null
+++ b/gnu/packages/patches/ocaml-dose3-Fix-for-ocaml-4.06.patch
@@ -0,0 +1,52 @@
+From aeca7656f499d7f4595319858f242276920e31bb Mon Sep 17 00:00:00 2001
+From: Louis Gesbert <louis.gesbert@ocamlpro.com>
+Date: Sat, 2 Dec 2017 12:51:01 +0100
+Subject: [PATCH] Fix for ocaml 4.06
+
+---
+ common/criteria_lexer.mll | 8 ++++----
+ common/util.ml            | 2 +-
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/common/criteria_lexer.mll b/common/criteria_lexer.mll
+index 71f9178..fc4eae3 100644
+--- a/common/criteria_lexer.mll
++++ b/common/criteria_lexer.mll
+@@ -18,7 +18,7 @@
+     let c = Lexing.lexeme_char lexbuf 2 in (* the delimiter can be any character *)
+     (* find the terminating delimiter *)
+     let endpos =
+-      try String.index_from lexbuf.lex_buffer (lexbuf.lex_start_pos + 3) c with
++      try Bytes.index_from lexbuf.lex_buffer (lexbuf.lex_start_pos + 3) c with
+       |Invalid_argument _ ->
+           raise (Format822.Syntax_error (
+             Format822.error lexbuf "String too short"))
+@@ -27,9 +27,9 @@
+             Format822.error lexbuf (Printf.sprintf "cannot find: %c" c)))
+     in
+     let len = endpos - (lexbuf.lex_start_pos + 3) in
+-    let s = String.sub lexbuf.lex_buffer (lexbuf.lex_start_pos + 3) len in
+-    lexbuf.Lexing.lex_curr_pos <- lexbuf.Lexing.lex_start_pos + ((String.length s)+4);
+-    s
++    let s = Bytes.sub lexbuf.lex_buffer (lexbuf.lex_start_pos + 3) len in
++    lexbuf.Lexing.lex_curr_pos <- lexbuf.Lexing.lex_start_pos + ((Bytes.length s)+4);
++    Bytes.to_string s
+ 
+ }
+ 
+diff --git a/common/util.ml b/common/util.ml
+index 598f266..36ca3d1 100644
+--- a/common/util.ml
++++ b/common/util.ml
+@@ -87,7 +87,7 @@ module MakeMessages(X : sig val label : string end) = struct
+   let clean label =
+     try 
+       let s = Filename.chop_extension (Filename.basename label) in
+-      String.capitalize s
++      String.capitalize_ascii s
+     with Invalid_argument _ -> label
+ 
+   let create ?(enabled=false) label =
+-- 
+2.11.0
+
diff --git a/gnu/packages/patches/ocaml-dose3-Install-mli-cmx-etc.patch b/gnu/packages/patches/ocaml-dose3-Install-mli-cmx-etc.patch
new file mode 100644
index 0000000000..41494e7b3c
--- /dev/null
+++ b/gnu/packages/patches/ocaml-dose3-Install-mli-cmx-etc.patch
@@ -0,0 +1,133 @@
+From b5314c20d8e3caf62fe0dc96ad937a2950158b23 Mon Sep 17 00:00:00 2001
+From: Louis Gesbert <louis.gesbert@ocamlpro.com>
+Date: Thu, 2 Mar 2017 12:19:56 +0100
+Subject: [PATCH] Install mli, cmx, etc.
+
+---
+ Makefile | 26 +++++++++++++-------------
+ 1 file changed, 13 insertions(+), 13 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 09464ff..5044d7f 100644
+--- a/Makefile
++++ b/Makefile
+@@ -56,7 +56,7 @@ $(DOSELIBS)/cudf.%:
+ 	@for i in _build/cudf/cudf.*; do \
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
++	  rm -f $(DOSELIBS)/*.mlpack ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -67,7 +67,7 @@ $(DOSELIBS)/common.%: common/*.ml common/*.mli
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+ 		rm $$i ;\
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
++	  rm -f $(DOSELIBS)/*.mlpack ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -78,7 +78,7 @@ $(DOSELIBS)/versioning.%: versioning/*.ml versioning/*.mli
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+ 		rm $$i ;\
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
++	  rm -f $(DOSELIBS)/*.mlpack ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -88,7 +88,7 @@ $(DOSELIBS)/algo.%: algo/*.ml algo/*.mli $(DOSELIBS)/common.%
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+ 		rm $$i ;\
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
++	  rm -f $(DOSELIBS)/*.mlpack ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -98,7 +98,7 @@ $(DOSELIBS)/debian.%: deb/*.ml deb/*.mli $(DOSELIBS)/pef.%
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+ 		rm $$i ;\
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
++	  rm -f $(DOSELIBS)/*.mlpack ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -108,7 +108,7 @@ $(DOSELIBS)/opam.%: opam/*.ml opam/*.mli $(DOSELIBS)/pef.%
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+ 		rm $$i ;\
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
++	  rm -f $(DOSELIBS)/*.mlpack ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -118,7 +118,7 @@ $(DOSELIBS)/npm.%: npm/*.ml npm/*.mli $(DOSELIBS)/versioning.% $(DOSELIBS)/pef.%
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+ 		rm $$i ;\
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
++	  rm -f $(DOSELIBS)/*.mlpack ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -128,7 +128,7 @@ $(DOSELIBS)/rpm.%: rpm/*.ml $(DOSELIBS)/algo.%
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+ 		rm $$i ;\
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
++	  rm -f $(DOSELIBS)/*.mlpack ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -138,7 +138,7 @@ $(DOSELIBS)/pef.%: pef/*.ml pef/*.mli
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+ 		rm $$i ;\
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
++	  rm -f $(DOSELIBS)/*.mlpack ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -148,7 +148,7 @@ $(DOSELIBS)/csw.%: opencsw/*.ml $(DOSELIBS)/versioning.%
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+ 		rm $$i ;\
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
++	  rm -f $(DOSELIBS)/*.mlpack ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -158,7 +158,7 @@ $(DOSELIBS)/doseparse.%: $(DOSELIBS)/pef.% $(DOSELIBS)/debian.%
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+ 		rm $$i ;\
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx $(DOSELIBS)/*.ml ; \
++	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.ml ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -168,7 +168,7 @@ $(DOSELIBS)/doseparseNoRpm.%: $(DOSELIBS)/pef.% $(DOSELIBS)/debian.%
+ 	  if [ -e $$i ]; then \
+ 			cp $$i $(DOSELIBS) ;\
+ 			rm $$i ;\
+-			rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ;\
++			rm -f $(DOSELIBS)/*.mlpack ;\
+ 	  fi ; \
+ 	done
+ 
+@@ -223,7 +223,7 @@ INSTALL_STUFF_ = META
+ INSTALL_STUFF_ += $(wildcard _build/doselibs/*.cma _build/doselibs/*.cmi)
+ INSTALL_STUFF_ += $(wildcard _build/doselibs/*.cmxa _build/doselibs/*.cmxs)
+ INSTALL_STUFF_ += $(wildcard _build/doselibs/*.a)
+-#INSTALL_STUFF_ += $(wildcard _build/*/*.mli)
++INSTALL_STUFF_ += $(wildcard _build/doselibs/*.mli) $(wildcard _build/doselibs/*.cmti) $(wildcard _build/doselibs/*.cmx)
+ INSTALL_STUFF_ += $(wildcard _build/rpm/*.so)
+ 
+ exclude_cudf = $(wildcard _build/doselibs/*cudf* _build/cudf/*)
+-- 
+2.11.0
+
diff --git a/gnu/packages/patches/ocaml-dose3-dont-make-printconf.patch b/gnu/packages/patches/ocaml-dose3-dont-make-printconf.patch
new file mode 100644
index 0000000000..84b6a3b81b
--- /dev/null
+++ b/gnu/packages/patches/ocaml-dose3-dont-make-printconf.patch
@@ -0,0 +1,9 @@
+--- a/configure
++++ b/configure
+@@ -6552,6 +6552,3 @@ if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+ $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+ fi
+-
+-
+-make printconf
diff --git a/gnu/packages/patches/quilt-getopt-nondigit-param.patch b/gnu/packages/patches/quilt-getopt-nondigit-param.patch
deleted file mode 100644
index 6bbec67e75..0000000000
--- a/gnu/packages/patches/quilt-getopt-nondigit-param.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From: Jean Delvare <jdelvare@suse.de>
-Subject: compat/getopt: Allow non-digit parameter embedded in short option
-
-The compatibility getopt script allows only digit parameters to be
-embedded in short options. Util-linux's getopt implementation does
-not have such a restriction and allows any parameter to be embedded
-in short options. As a consequence, using the compatibility getopt
-script would choke for example on "-pab", which is a legal option
-of the "quilt refresh" command.
-
-Remove the limitation on digits so that the compatibility getopt
-script allows what util-linux allows. This fixes the second half
-of bug #54772:
-https://savannah.nongnu.org/bugs/index.php?54772
-
-As a side note, this feature of the compatibility script was broken
-anyway, as it would output the digits in reverse order.
-
-Signed-off-by: Jean Delvare <jdelvare@suse.de>
----
- compat/getopt.in |   13 ++++---------
- 1 file changed, 4 insertions(+), 9 deletions(-)
-
---- quilt.orig/compat/getopt.in	2018-10-03 16:05:56.818667040 +0200
-+++ quilt/compat/getopt.in	2018-10-03 16:12:17.624841732 +0200
-@@ -108,15 +108,10 @@ foreach my $word (@words) {
- 				if (scalar(@letters) == 0) {
- 					$need_param = $letter;
- 				} else {
--					# short options can have numerical args
--					# embedded in the short option list: -UO
--					die "unexpected character after option $letter"
--						if ($letters[$#letters] !~ /[0-9]/);
--					my @digits;
--					while (scalar(@letters) && ($letters[$#letters] =~ /[0-9]/)) {
--						push @digits, pop @letters;
--					}
--					push @options, quote_word(join('', reverse @digits));
-+					# short options can have args
-+					# embedded in the short option list
-+					push @options, quote_word(join('', reverse @letters));
-+					@letters = ();
- 				}
- 			}
- 		}
diff --git a/gnu/packages/patches/quilt-getopt-second-separator.patch b/gnu/packages/patches/quilt-getopt-second-separator.patch
deleted file mode 100644
index cde2c8d41c..0000000000
--- a/gnu/packages/patches/quilt-getopt-second-separator.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From: Jean Delvare <jdelvare@suse.de>
-Subject: compat/getopt: Handle a second separator
-
-getopt can be passed 2 '--' separators. The first one tells that
-getopt options are over and target program options start. The second
-one tells that the target program's options are over and following
-arguments should be treated as non-options even if they look like
-options.
-
-This second separator was not handled, causing the compatibility
-getopt script to treat the following arguments as options, eventually
-failing one way or another.
-
-Properly detect and handle the second separator. This fixes the first
-half of bug #54772:
-https://savannah.nongnu.org/bugs/index.php?54772
-
-Signed-off-by: Jean Delvare <jdelvare@suse.de>
----
- compat/getopt.in |   13 ++++++++++---
- 1 file changed, 10 insertions(+), 3 deletions(-)
-
---- quilt.orig/compat/getopt.in	2018-10-03 15:23:21.147620172 +0200
-+++ quilt/compat/getopt.in	2018-10-03 16:05:56.818667040 +0200
-@@ -8,12 +8,12 @@
- 
- use strict;
- 
--my $opts;
-+my $opts = '';
- my @words;
- my $found_sep = 0;
- 
- foreach my $arg (@ARGV) {
--  if ($arg eq '--') {
-+  if (!$found_sep && $arg eq '--') {
-     $found_sep = 1;
-   }
-   else {
-@@ -62,10 +62,17 @@ sub quote_word
- 	return "'$word'";
- }
- 
-+# there can be a second separator, to inhibit processing following arguments
-+# as options
-+$found_sep = 0;
- foreach my $word (@words) {
-+	if ($word eq '--') {
-+		$found_sep = 1;
-+		next;
-+	}
- 
- 	# allow '-' to be an option value
--	if (!$need_param && $word !~ /^-./) {
-+	if ($found_sep || (!$need_param && $word !~ /^-./)) {
- 		push @barewords, quote_word($word);
- 		next;
- 	}
diff --git a/gnu/packages/patches/quilt-test-fix-regex.patch b/gnu/packages/patches/quilt-test-fix-regex.patch
deleted file mode 100644
index 2e249ac55b..0000000000
--- a/gnu/packages/patches/quilt-test-fix-regex.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 5193b137b5a9034ce79946edd40760df2f63a82a Mon Sep 17 00:00:00 2001
-From: Jean Delvare <jdelvare@suse.de>
-Date: Tue, 25 Apr 2017 15:17:53 +0200
-Subject: test: Escape curly braces in regex
-
-Curly braces in perl regex are supposed to be escaped, recent
-versions of perl complain when they aren't:
-
-Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/%{ <-- HERE (\w+)}/ at ./run line 114.
-Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/%{ <-- HERE \?}/ at ./run line 290.
-
-Signed-off-by: Jean Delvare <jdelvare@suse.de>
----
- test/run | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/test/run b/test/run
-index 942014e..03afc7a 100755
---- a/test/run
-+++ b/test/run
-@@ -112,7 +112,7 @@ sub flush_output()
- sub substitute_vars($)
- {
- 	my ($line) = @_;
--	$line =~ s[%{(\w+)}][defined $ENV{$1} ? $ENV{$1} : ""]eg;
-+	$line =~ s[%\{(\w+)\}][defined $ENV{$1} ? $ENV{$1} : ""]eg;
- 	return $line;
- }
- 
-@@ -288,7 +288,7 @@ while (defined(my $line = <SOURCE>)) {
- 	# Parse the next command
- 	if ($line =~ s/^\s*\$ ?//) {
- 		# Substitute %{?} with the last command's status
--		$line =~ s[%{\?}][$last_status]eg;
-+		$line =~ s[%\{\?\}][$last_status]eg;
- 
- 		chomp($prog = substitute_vars($line));
- 		$prog_line = $lineno;
--- 
-cgit v1.0-41-gc330
-
diff --git a/gnu/packages/patches/synfigstudio-fix-ui-with-gtk3.patch b/gnu/packages/patches/synfigstudio-fix-ui-with-gtk3.patch
deleted file mode 100644
index d7b3e92507..0000000000
--- a/gnu/packages/patches/synfigstudio-fix-ui-with-gtk3.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-Downloaded from
-https://github.com/synfig/synfig/commit/b9c3b73ee35b83c4d9183c800809040cef98b2f2.patch
-
-Without this patch the UI of Synfig Studio (when built with the latest version
-of GTK) displays very large buttons in the header of every frame.
-
-This patch can be removed with the next release.
-
-
-From b9c3b73ee35b83c4d9183c800809040cef98b2f2 Mon Sep 17 00:00:00 2001
-From: caryoscelus <caryoscelus@gmx.com>
-Date: Wed, 25 Jan 2017 18:34:39 +0300
-Subject: [PATCH] Fix dock drop area size
-
-Fixes #227
-
-By using Frame instead of Button we avoid intrusive Gtk themes
-from forcing huge drop area size.
----
- synfig-studio/src/gui/docks/dockdroparea.cpp | 15 ++++++++++-----
- 1 file changed, 10 insertions(+), 5 deletions(-)
-
-diff --git a/src/gui/docks/dockdroparea.cpp b/synfig-studio/src/gui/docks/dockdroparea.cpp
-index 0f8936fdb..e012282f0 100644
---- a/src/gui/docks/dockdroparea.cpp
-+++ b/src/gui/docks/dockdroparea.cpp
-@@ -35,7 +35,7 @@
- #include "app.h"
- #include "docks/dockdroparea.h"
- #include "docks/dockmanager.h"
--#include <gtkmm/button.h>
-+#include <gtkmm/frame.h>
- 
- #endif
- 
-@@ -61,10 +61,15 @@ DockDropArea::DockDropArea(Gtk::Widget *target):
- 	std::vector<Gtk::TargetEntry> listTargets;
- 	listTargets.push_back( Gtk::TargetEntry("SYNFIG_DOCK") );
- 
--	Gtk::Button *button_left   = manage(new Gtk::Button());
--	Gtk::Button *button_right  = manage(new Gtk::Button());
--	Gtk::Button *button_top    = manage(new Gtk::Button());
--	Gtk::Button *button_bottom = manage(new Gtk::Button());
-+	Gtk::Frame *button_left   = manage(new Gtk::Frame());
-+	Gtk::Frame *button_right  = manage(new Gtk::Frame());
-+	Gtk::Frame *button_top    = manage(new Gtk::Frame());
-+	Gtk::Frame *button_bottom = manage(new Gtk::Frame());
-+
-+	button_left->set_size_request(20, 10);
-+	button_right->set_size_request(20, 10);
-+	button_top->set_size_request(20, 10);
-+	button_bottom->set_size_request(20, 10);
- 
- 	button_left->drag_dest_set(listTargets);
- 	button_right->drag_dest_set(listTargets);
diff --git a/gnu/packages/patches/webkitgtk-sse2.patch b/gnu/packages/patches/webkitgtk-sse2.patch
new file mode 100644
index 0000000000..df70e38919
--- /dev/null
+++ b/gnu/packages/patches/webkitgtk-sse2.patch
@@ -0,0 +1,202 @@
+Fix build on i686.
+
+This patch is taken from upstream, with ChangeLog entries omitted.
+
+From 5048338c5f21605441c6833907d1136ac9640b35 Mon Sep 17 00:00:00 2001
+From: "mcatanzaro@igalia.com"
+ <mcatanzaro@igalia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
+Date: Wed, 10 Apr 2019 18:27:25 +0000
+Subject: [PATCH] Unreviewed, rolling out r243989.
+
+Broke i686 builds
+
+Reverted changeset:
+
+"[CMake] Detect SSE2 at compile time"
+https://bugs.webkit.org/show_bug.cgi?id=196488
+https://trac.webkit.org/changeset/243989
+
+git-svn-id: http://svn.webkit.org/repository/webkit/trunk@244138 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+---
+ CMakeLists.txt                                | 10 ---
+ ChangeLog                                     | 12 ++++
+ Source/JavaScriptCore/ChangeLog               | 12 ++++
+ .../assembler/MacroAssemblerX86Common.cpp     |  7 ++
+ .../assembler/MacroAssemblerX86Common.h       | 30 +++++++++
+ Source/cmake/FindSSE2.cmake                   | 65 -------------------
+ 6 files changed, 61 insertions(+), 75 deletions(-)
+ delete mode 100644 Source/cmake/FindSSE2.cmake
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index acd77f4b623..d3e8a23f9ff 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -114,16 +114,6 @@ else ()
+     set(WTF_CPU_UNKNOWN 1)
+ endif ()
+ 
+-#---------------------------
+-# Make sure SSE2 is present.
+-#---------------------------
+-if (WTF_CPU_X86)
+-    include(FindSSE2)
+-    if (NOT SSE2_SUPPORT_FOUND)
+-        message(FATAL_ERROR "SSE2 support is required to compile WebKit")
+-    endif ()
+-endif ()
+-
+ # -----------------------------------------------------------------------------
+ # Determine the operating system
+ # -----------------------------------------------------------------------------
+diff --git a/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp b/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp
+index 8c752c0d030..31753589df7 100644
+--- a/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp
++++ b/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp
+@@ -168,6 +168,11 @@ static_assert(PROBE_OFFSETOF_REG(cpu.fprs, X86Registers::xmm15) == PROBE_CPU_XMM
+ static_assert(sizeof(Probe::State) == PROBE_SIZE, "Probe::State::size's matches ctiMasmProbeTrampoline");
+ static_assert((PROBE_EXECUTOR_OFFSET + PTR_SIZE) <= (PROBE_SIZE + OUT_SIZE), "Must have room after ProbeContext to stash the probe handler");
+ 
++#if CPU(X86)
++// SSE2 is a hard requirement on x86.
++static_assert(isSSE2Present(), "SSE2 support is required in JavaScriptCore");
++#endif
++
+ #undef PROBE_OFFSETOF
+ 
+ #if CPU(X86)
+@@ -787,6 +792,7 @@ void MacroAssemblerX86Common::collectCPUFeatures()
+     std::call_once(onceKey, [] {
+         {
+             CPUID cpuid = getCPUID(0x1);
++            s_sse2CheckState = (cpuid[3] & (1 << 26)) ? CPUIDCheckState::Set : CPUIDCheckState::Clear;
+             s_sse4_1CheckState = (cpuid[2] & (1 << 19)) ? CPUIDCheckState::Set : CPUIDCheckState::Clear;
+             s_sse4_2CheckState = (cpuid[2] & (1 << 20)) ? CPUIDCheckState::Set : CPUIDCheckState::Clear;
+             s_popcntCheckState = (cpuid[2] & (1 << 23)) ? CPUIDCheckState::Set : CPUIDCheckState::Clear;
+@@ -803,6 +809,7 @@ void MacroAssemblerX86Common::collectCPUFeatures()
+     });
+ }
+ 
++MacroAssemblerX86Common::CPUIDCheckState MacroAssemblerX86Common::s_sse2CheckState = CPUIDCheckState::NotChecked;
+ MacroAssemblerX86Common::CPUIDCheckState MacroAssemblerX86Common::s_sse4_1CheckState = CPUIDCheckState::NotChecked;
+ MacroAssemblerX86Common::CPUIDCheckState MacroAssemblerX86Common::s_sse4_2CheckState = CPUIDCheckState::NotChecked;
+ MacroAssemblerX86Common::CPUIDCheckState MacroAssemblerX86Common::s_avxCheckState = CPUIDCheckState::NotChecked;
+diff --git a/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h b/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h
+index ff097290ef3..097bcb0bb86 100644
+--- a/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h
++++ b/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h
+@@ -4197,11 +4197,41 @@ private:
+     }
+ #endif
+ 
++#if CPU(X86)
++#if OS(MAC_OS_X)
++
++    // All X86 Macs are guaranteed to support at least SSE2,
++    static bool isSSE2Present()
++    {
++        return true;
++    }
++
++#else // OS(MAC_OS_X)
++    static bool isSSE2Present()
++    {
++        if (s_sse2CheckState == CPUIDCheckState::NotChecked)
++            collectCPUFeatures();
++        return s_sse2CheckState == CPUIDCheckState::Set;
++    }
++
++#endif // OS(MAC_OS_X)
++#elif !defined(NDEBUG) // CPU(X86)
++
++    // On x86-64 we should never be checking for SSE2 in a non-debug build,
++    // but non debug add this method to keep the asserts above happy.
++    static bool isSSE2Present()
++    {
++        return true;
++    }
++
++#endif
++
+     using CPUID = std::array<unsigned, 4>;
+     static CPUID getCPUID(unsigned level);
+     static CPUID getCPUIDEx(unsigned level, unsigned count);
+     JS_EXPORT_PRIVATE static void collectCPUFeatures();
+ 
++    JS_EXPORT_PRIVATE static CPUIDCheckState s_sse2CheckState;
+     JS_EXPORT_PRIVATE static CPUIDCheckState s_sse4_1CheckState;
+     JS_EXPORT_PRIVATE static CPUIDCheckState s_sse4_2CheckState;
+     JS_EXPORT_PRIVATE static CPUIDCheckState s_avxCheckState;
+diff --git a/Source/cmake/FindSSE2.cmake b/Source/cmake/FindSSE2.cmake
+deleted file mode 100644
+index 7a947feadd4..00000000000
+--- a/Source/cmake/FindSSE2.cmake
++++ /dev/null
+@@ -1,65 +0,0 @@
+-#################################
+-# Check for the presence of SSE2.
+-#
+-# Once done, this will define:
+-# - SSE2_SUPPORT_FOUND - the system supports (at least) SSE2.
+-#
+-# Copyright (c) 2014, Pablo Fernandez Alcantarilla, Jesus Nuevo
+-# Copyright (c) 2019, Igalia S.L.
+-#
+-# Redistribution and use in source and binary forms, with or without modification,
+-# are permitted provided that the following conditions are met:
+-#
+-#   * Redistributions of source code must retain the above copyright notice,
+-#     this list of conditions and the following disclaimer.
+-#
+-#   * Redistributions in binary form must reproduce the above copyright notice,
+-#     this list of conditions and the following disclaimer in the documentation
+-#     and/or other materials provided with the distribution.
+-#
+-#   * Neither the name of the copyright holders nor the names of its contributors
+-#     may be used to endorse or promote products derived from this software without
+-#     specific prior written permission.
+-#
+-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+-# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+-# SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+-# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+-# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
+-# WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-
+-set(SSE2_SUPPORT_FOUND FALSE)
+-
+-macro(CHECK_FOR_SSE2)
+-    include(CheckCXXSourceRuns)
+-
+-    check_cxx_source_runs("
+-        #include <emmintrin.h>
+-        int main ()
+-        {
+-            __m128d a, b;
+-            double vals[2] = {0};
+-            a = _mm_loadu_pd (vals);
+-            b = _mm_add_pd (a,a);
+-            _mm_storeu_pd (vals,b);
+-            return(0);
+-        }"
+-        HAVE_SSE2_EXTENSIONS)
+-
+-    if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANG)
+-        if (HAVE_SSE2_EXTENSIONS)
+-            set(SSE2_SUPPORT_FOUND TRUE)
+-        endif ()
+-    elseif (MSVC AND NOT CMAKE_CL_64)
+-        if (HAVE_SSE2_EXTENSIONS)
+-            set(SSE2_SUPPORT_FOUND TRUE)
+-            message(STATUS "Found SSE2 extensions.")
+-        endif (HAVE_SSE2_EXTENSIONS)
+-    endif ()
+-
+-endmacro(CHECK_FOR_SSE2)
+-
+-CHECK_FOR_SSE2()
+-- 
+2.21.0
+
diff --git a/gnu/packages/patchutils.scm b/gnu/packages/patchutils.scm
index ec669e2e23..f6197b98ee 100644
--- a/gnu/packages/patchutils.scm
+++ b/gnu/packages/patchutils.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014, 2018 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015, 2018 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -98,18 +98,14 @@ listing the files modified by a patch.")
 (define-public quilt
   (package
     (name "quilt")
-    (version "0.65")
+    (version "0.66")
     (source
      (origin
-      (method url-fetch)
-      (uri (string-append "mirror://savannah/quilt/"
-                          name "-" version ".tar.gz"))
-      (sha256
-       (base32
-        "06b816m2gz9jfif7k9v2hrm7fz76zjg5pavf7hd3ifybwn4cgjzn"))
-      (patches (search-patches "quilt-test-fix-regex.patch"
-                               "quilt-getopt-second-separator.patch"
-                               "quilt-getopt-nondigit-param.patch"))))
+       (method url-fetch)
+       (uri (string-append "mirror://savannah/quilt/"
+                           "quilt-" version ".tar.gz"))
+       (sha256
+        (base32 "01vfvk4pqigahx82fhaaffg921ivd3k7rylz1yfvy4zbdyd32jri"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("gettext" ,gnu-gettext)))
@@ -248,7 +244,7 @@ GiB).")
 (define-public meld
   (package
     (name "meld")
-    (version "3.20.0")
+    (version "3.20.1")
     (source
      (origin
        (method url-fetch)
@@ -256,8 +252,7 @@ GiB).")
                            (version-major+minor version)
                            "/meld-" version ".tar.xz"))
        (sha256
-        (base32
-         "11khi1sg02k3b9qdag3r939cwi27cql4kjim7jhxf9ckfhpzwh6b"))))
+        (base32 "0jdj7kd6vj1mdc16gvrj1kar88b2j5875ajq18fx7cbc9ny46j55"))))
     (build-system python-build-system)
     (native-inputs
      `(("intltool" ,intltool)
diff --git a/gnu/packages/perl-check.scm b/gnu/packages/perl-check.scm
index a25c43cc32..47e25083cd 100644
--- a/gnu/packages/perl-check.scm
+++ b/gnu/packages/perl-check.scm
@@ -142,6 +142,30 @@ framework base class.  It concentrates on offering reusable data driven
 patterns, so that you can write tests with a minimum of code.")
     (license perl-license)))
 
+(define-public perl-test-checkdeps
+  (package
+    (name "perl-test-checkdeps")
+    (version "0.010")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/L/LE/LEONT/Test-CheckDeps-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1vjinlixxdx6gfcw8y1dw2rla8bfhi8nmgcqr3nffc7kqskcrz36"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-cpan-meta-check" ,perl-cpan-meta-check)))
+    (home-page "https://metacpan.org/release/Test-CheckDeps")
+    (synopsis "Check for presence of dependencies")
+    (description
+     "This module provides a test that checks all dependencies have been
+installed properly.")
+    (license perl-license)))
+
 (define-public perl-test-class
   (package
     (name "perl-test-class")
@@ -361,6 +385,30 @@ functions.")
     ;; license, any version, ..."
     (license gpl3+)))
 
+(define-public perl-test-dir
+  (package
+    (name "perl-test-dir")
+    (version "1.16")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/M/MT/MTHURN/"
+                           "Test-Dir-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1hpafgr93jjl6s8spskhdxhgich4cccmaiq99mla5diyj4iv6ckk"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-pod-coverage" ,perl-pod-coverage)
+       ("perl-test-pod" ,perl-test-pod)
+       ("perl-test-pod-coverage" ,perl-test-pod-coverage)))
+    (home-page "https://metacpan.org/release/Test-Dir")
+    (synopsis "Utilities for testing directory attributes")
+    (description
+     "This modules provides a collection of test utilities for directory
+attributes.")
+    (license perl-license)))
+
 (define-public perl-test-directory
   (package
     (name "perl-test-directory")
@@ -500,6 +548,58 @@ Test::Exception.  It does much less, but should allow greater flexibility in
 testing exception-throwing code with about the same amount of typing.")
     (license perl-license)))
 
+(define-public perl-test-file
+  (package
+    (name "perl-test-file")
+    (version "1.443")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/B/BD/BDFOY/Test-File-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1mdwb3x8d4l24wsymamsnq2c73a637v4q5kmb5xqqz31iymsdd31"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-utf8" ,perl-test-utf8)))
+    (home-page "https://metacpan.org/release/Test-File")
+    (synopsis "Utilities for testing file attributes")
+    (description
+     "@code{Test::File} provides a collection of test utilities for file
+attributes.")
+    (license perl-license)))
+
+(define-public perl-test-file-contents
+  (package
+    (name "perl-test-file-contents")
+    (version "0.23")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/D/DW/DWHEELER/Test-File-Contents-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0g8zgfyw84181snw7ghahnl9r4lrmlfj7zwi76sv8d0bj7xssvyd"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-module-build" ,perl-module-build)))
+    (propagated-inputs
+     `(("perl-test-pod" ,perl-test-pod)
+       ("perl-test-pod-coverage" ,perl-test-pod-coverage)
+       ("perl-text-diff" ,perl-text-diff)))
+    (home-page "https://metacpan.org/release/Test-File-Contents")
+    (synopsis "Test routines for examining the contents of files")
+    (description
+     "@{Test::File::Contents} provides functions for testing the contents of
+files.")
+    (license perl-license)))
+
 (define-public perl-test-file-sharedir-dist
   (package
     (name "perl-test-file-sharedir-dist")
@@ -1275,6 +1375,32 @@ check if a string is valid and not corrupt, whereas the characteristics tests
 will check that string has a given set of characteristics.")
     (license perl-license)))
 
+(define-public perl-test-version
+  (package
+    (name "perl-test-version")
+    (version "2.09")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/P/PL/PLICEASE/Test-Version-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1q1qradaf7r2rb3jhpv01wl8z3bxymkfqrl9gwdhxwx5jwldvqcw"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-exception" ,perl-test-exception)))
+    (propagated-inputs
+     `(("perl-file-find-rule-perl" ,perl-file-find-rule-perl)))
+    (home-page "https://metacpan.org/release/Test-Version")
+    (synopsis "Check versions in modules")
+    (description
+     "@code{Test::Version} checks to ensure that all modules have a version
+defined, and that the version is valid.")
+    (license artistic2.0)))
+
 (define-public perl-test-warn
   (package
     (name "perl-test-warn")
diff --git a/gnu/packages/perl-web.scm b/gnu/packages/perl-web.scm
index 6ced2d160e..77a66f71d0 100644
--- a/gnu/packages/perl-web.scm
+++ b/gnu/packages/perl-web.scm
@@ -21,9 +21,11 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages)
   #:use-module (guix packages)
+  #:use-module (gnu packages perl)
   #:use-module (gnu packages perl-check)
   #:use-module (guix download)
-  #:use-module (guix build-system perl))
+  #:use-module (guix build-system perl)
+  #:use-module (gnu packages web))
 
 (define-public perl-mojolicious
   (package
@@ -48,6 +50,33 @@ used are outdated now, the idea behind it is not.  Mojolicious is a new
 endeavor to implement this idea using modern technologies.")
     (license license:artistic2.0)))
 
+(define-public perl-uri-db
+  (package
+    (name "perl-uri-db")
+    (version "0.19")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/D/DW/DWHEELER/URI-db-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0n56xxlw7c39pfar0dxckr9mbmp6yrzk53ic0cb24raiykm9v6f4"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-module-build" ,perl-module-build)))
+    (propagated-inputs
+     `(("perl-uri" ,perl-uri)
+       ("perl-uri-nested" ,perl-uri-nested)))
+    (home-page "https://metacpan.org/release/URI-db")
+    (synopsis "Handle database URIs")
+    (description
+     "This module defines a format for database URIs, and provides a @{URI}
+class to handle these.")
+    (license license:perl-license)))
+
 (define-public perl-uri-escape
   (package
     (name "perl-uri-escape")
@@ -70,3 +99,29 @@ percent-decode URI strings as defined by RFC 3986.  Percent-encoding URI's is
 informally called URI escaping.  This is the terminology used by this module,
 which predates the formalization of the terms by the RFC by several years.")
     (license license:perl-license)))
+
+(define-public perl-uri-nested
+  (package
+    (name "perl-uri-nested")
+    (version "0.10")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/D/DW/DWHEELER/URI-Nested-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1bzg6f11m8wfnmycflvp858rs99xknsx8hkip0xcdfjzlqwi75z1"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-module-build" ,perl-module-build)))
+    (propagated-inputs
+     `(("perl-uri" ,perl-uri)))
+    (home-page "https://metacpan.org/release/URI-Nested")
+    (synopsis "Nested URIs")
+    (description
+     "@code{URI::Nested} provides support for nested URIs, where the scheme is
+a prefix, and the remainder of the URI is another URI.")
+    (license license:perl-license)))
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index ff387354e7..86d07c3ccc 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -49,6 +49,7 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages freedesktop)
+  #:use-module (gnu packages less)
   #:use-module (gnu packages perl-check)
   #:use-module (gnu packages perl-compression)
   #:use-module (gnu packages perl-web)
@@ -1435,6 +1436,33 @@ some enhancements such as here-documents, C-style comments, and multiline
 options.")
     (license (package-license perl))))
 
+(define-public perl-config-gitlike
+  (package
+    (name "perl-config-gitlike")
+    (version "1.17")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/A/AL/ALEXMV/Config-GitLike-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0kp57na9mk6yni693h2fwap6l1ndbcj97l4860r9vkzx2jw0fjk7"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-exception" ,perl-test-exception)))
+    (propagated-inputs
+     `(("perl-moo" ,perl-moo)
+       ("perl-moox-types-mooselike" ,perl-moox-types-mooselike)))
+    (home-page "https://metacpan.org/release/Config-GitLike")
+    (synopsis "Parse Git style configuration files")
+    (description
+     "This module handles parsing, modifying and creating configuration files
+of the style used by the Git version control system.")
+    (license perl-license)))
+
 (define-public perl-config-ini
   (package
     (name "perl-config-ini")
@@ -1530,6 +1558,28 @@ data.")
 @file{Changes} files that conform to a common specification.")
     (license perl-license)))
 
+(define-public perl-cpan-distnameinfo
+  (package
+    (name "perl-cpan-distnameinfo")
+    (version "0.12")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/G/GB/GBARR/CPAN-DistnameInfo-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0d94kx596w7k328cvq4y96z1gz12hdhn3z1mklkbrb7fyzlzn91g"))))
+    (build-system perl-build-system)
+    (home-page "https://metacpan.org/release/CPAN-DistnameInfo")
+    (synopsis "Extract the name and version from a distribution filename")
+    (description
+     "@code{CPAN::DistnameInfo} uses heuristics to extract the distribution
+name and version from filenames.")
+    (license perl-license)))
+
 (define-public perl-cpan-meta-check
   (package
     (name "perl-cpan-meta-check")
@@ -2738,6 +2788,26 @@ equivalent of \"$@{^GLOBAL_PHASE@} eq 'DESTRUCT'\" for older perls.")
 files/modules are installed or not).")
     (license (package-license perl))))
 
+(define-public perl-devel-leak
+  (package
+    (name "perl-devel-leak")
+    (version "0.03")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/N/NI/NI-S/"
+                           "Devel-Leak-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0lkj2xwc3lhxv7scl43r8kfmls4am0b98sqf5vmf7d72257w6hkg"))))
+    (build-system perl-build-system)
+    (home-page "https://metacpan.org/release/Devel-Leak")
+    (synopsis "Utility for looking for perl objects that are not reclaimed")
+    (description
+     "This module provides a basic way to discover if a piece of perl code is
+allocating perl data and not releasing them again.")
+    (license perl-license)))
+
 (define-public perl-devel-lexalias
   (package
     (name "perl-devel-lexalias")
@@ -3803,6 +3873,31 @@ functionality; it returns a list of file names that match the given pattern.
 For instance, it supports the @code{**/*.pm} form.")
     (license (package-license perl))))
 
+(define-public perl-filesys-notify-simple
+  (package
+    (name "perl-filesys-notify-simple")
+    (version "0.13")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
+                           "Filesys-Notify-Simple-" version ".tar.gz"))
+       (sha256
+        (base32
+         "18jv96k1pf8wqf4vn2ahs7dv44lc9cyqj0bja9z17qici3dx7qxd"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-sharedfork" ,perl-test-sharedfork)))
+    (home-page "https://metacpan.org/release/Filesys-Notify-Simple")
+    (synopsis "Simple and dumb file system watcher")
+    (description
+     "Filesys::Notify::Simple is a simple but unified interface to get
+notifications of changes to a given filesystem path.  It utilizes inotify2 on
+Linux, fsevents on OS X, kqueue on FreeBSD and FindFirstChangeNotification on
+Windows if they're installed, with a fallback to the full directory scan if
+they're not available.")
+    (license perl-license)))
+
 (define-public perl-getopt-long
   (package
     (name "perl-getopt-long")
@@ -4212,6 +4307,41 @@ easier to develop interactive applications: is_interactive(), interactive(),
 and busy().")
     (license (package-license perl))))
 
+(define-public perl-io-pager
+  (package
+    (name "perl-io-pager")
+    (version "0.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/J/JP/JPIERCE/IO-Pager-"
+             version
+             "0.tgz"))
+       (sha256
+        (base32
+         "1vzdypsr7vkj8nnda9ccrksci6pqj5awwmi89l7x3mbpq36gad87"))))
+    (build-system perl-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-less
+           (lambda _
+             (substitute* "lib/IO/Pager.pm"
+               (("/usr/local/bin/less', '/usr/bin/less")
+                (which "less")))
+             #t)))))
+    (propagated-inputs
+     `(("perl-file-which" ,perl-file-which)))
+    (inputs
+     `(("less" ,less)))
+    (home-page "https://metacpan.org/release/IO-Pager")
+    (synopsis "Select a pager and pipe text to it")
+    (description
+     "@code{IO::Pager} can be used to locate an available pager and use it to
+display output if a TTY is in use.")
+    (license (package-license perl))))
+
 (define-public perl-io-string
   (package
     (name "perl-io-string")
@@ -7539,6 +7669,32 @@ expanding standard C/Unix-style backslash escapes like \n and \t, wrapping and
 removing double-quotes, and truncating to fit within a desired length.")
     (license (package-license perl))))
 
+(define-public perl-string-formatter
+  (package
+    (name "perl-string-formatter")
+    (version "0.102084")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/R/RJ/RJBS/String-Formatter-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0mlwm0rirv46gj4h072q8gdync5zxxsxy8p028gdyrhczl942dc3"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-params-util" ,perl-params-util)
+       ("perl-sub-exporter" ,perl-sub-exporter)))
+    (home-page "https://metacpan.org/release/String-Formatter")
+    (synopsis "Build your own sprintf-like functions")
+    (description
+     "@code{String::Formatter} is a tool for building sprintf-like formatting
+routines.  It supports named or positional formatting, custom conversions,
+fixed string interpolation, and simple width-matching.")
+    (license gpl2)))
+
 (define-public perl-string-rewriteprefix
   (package
     (name "perl-string-rewriteprefix")
@@ -7560,6 +7716,28 @@ removing double-quotes, and truncating to fit within a desired length.")
 known prefixes.")
     (license (package-license perl))))
 
+(define-public perl-string-shellquote
+  (package
+    (name "perl-string-shellquote")
+    (version "1.04")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/R/RO/ROSCH/String-ShellQuote-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0dfxhr6hxc2majkkrm0qbx3qcbykzpphbj2ms93dc86f7183c1p6"))))
+    (build-system perl-build-system)
+    (home-page "https://metacpan.org/release/String-ShellQuote")
+    (synopsis "Quote strings for passing through a shell")
+    (description
+     "@code{shell-quote} lets you pass arbitrary strings through the shell so
+that they won't be changed.")
+    (license (package-license perl))))
+
 (define-public perl-string-print
   (package
     (name "perl-string-print")
@@ -7893,6 +8071,28 @@ determining their type and clock speed.")
 of a system.")
     (license (package-license perl))))
 
+(define-public perl-sys-syscall
+  (package
+    (name "perl-sys-syscall")
+    (version "0.25")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/B/BR/BRADFITZ/"
+                           "Sys-Syscall-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1r8k4q04dhs191zgdfgiagvbra770hx0bm6x24jsykxn0c6ghi8y"))))
+    (build-system perl-build-system)
+    (home-page "https://metacpan.org/release/Sys-Syscall")
+    (synopsis
+     "Access system calls that Perl doesn't normally provide access to")
+    (description
+     "Sys::Syscall allows one to use epoll and sendfile system calls from
+Perl.  Support is mostly Linux-only for now, but other syscalls/OSes are
+planned for the future.")
+    (license perl-license)))
+
 (define-public perl-task-weaken
   (package
     (name "perl-task-weaken")
@@ -7932,7 +8132,7 @@ error encouraging the user to seek support.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/A/AB/ABW/"
+       (uri (string-append "mirror://cpan/authors/id/A/AT/ATOOMIC/"
                            "Template-Toolkit-" version ".tar.gz"))
        (sha256
         (base32
@@ -7971,6 +8171,32 @@ documents: HTML, XML, POD, PostScript, LaTeX, and so on.")
 processing in Perl code.")
     (license (list gpl3 artistic2.0))))
 
+(define-public perl-template-tiny
+  (package
+    (name "perl-template-tiny")
+    (version "1.12")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/A/AD/ADAMK/Template-Tiny-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0jhadxbc8rzbk2v8qvjrbhnvfp0m56iqar6d4nvxyl8bccn0cgh7"))))
+    (build-system perl-build-system)
+    (home-page "https://metacpan.org/release/Template-Tiny")
+    (synopsis "Template Toolkit reimplemented in as little code as possible")
+    (description
+     "@code{Template::Tiny} is a reimplementation of a subset of the
+functionality from Template Toolkit in as few lines of code as possible.
+
+It is intended for use in light-usage, low-memory, or low-cpu templating
+situations, where you may need to upgrade to the full feature set in the
+future, or if you want the retain the familiarity of TT-style templates.")
+    (license perl-license)))
+
 (define-public perl-term-encoding
   (package
     (name "perl-term-encoding")
@@ -8538,6 +8764,28 @@ can also be set to any arbitrary supplied order.  The familiar perl array
 operations can also be performed on the IxHash.")
   (license (package-license perl))))
 
+(define-public perl-tie-handle-offset
+  (package
+    (name "perl-tie-handle-offset")
+    (version "0.004")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/D/DA/DAGOLDEN/Tie-Handle-Offset-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "17m8s8314wi4g0wasdxk15rf12vzsgzmcbr598jam5f6bl2kk7zf"))))
+    (build-system perl-build-system)
+    (home-page "https://metacpan.org/release/Tie-Handle-Offset")
+    (synopsis "Special file handle that hides the beginning of a file")
+    (description
+     "This modules provides a file handle that hides the beginning of a file,
+by modifying the @code{seek()} and @code{tell()} calls.")
+    (license asl2.0)))
+
 (define-public perl-tie-toobject
   (package
     (name "perl-tie-toobject")
diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm
index 69ec69548b..e62d13fe91 100644
--- a/gnu/packages/photo.scm
+++ b/gnu/packages/photo.scm
@@ -360,7 +360,7 @@ photographic equipment.")
 (define-public darktable
   (package
     (name "darktable")
-    (version "2.6.1")
+    (version "2.6.2")
     (source
      (origin
        (method url-fetch)
@@ -368,7 +368,7 @@ photographic equipment.")
              "https://github.com/darktable-org/darktable/releases/"
              "download/release-" version "/darktable-" version ".tar.xz"))
        (sha256
-        (base32 "09ihbj0602spgc5lfbskf9am38n03gam2r8v3kj4dyfgxqr37ib3"))))
+        (base32 "0igvgyd042j7hm4y8fcm6dc1qqjs4d1r7y6f0pzpa0x416xyzfcw"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ; there are no tests
diff --git a/gnu/packages/plotutils.scm b/gnu/packages/plotutils.scm
index 35e632cf8c..b4ea20e387 100644
--- a/gnu/packages/plotutils.scm
+++ b/gnu/packages/plotutils.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016, 2017, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -93,7 +93,16 @@ scientific data.")
                                   "guile-charting-" version ".tar.gz"))
               (sha256
                (base32
-                "0w5qiyv9v0ip5li22x762bm48g8xnw281w66iyw094zdw611pb2m"))))
+                "0w5qiyv9v0ip5li22x762bm48g8xnw281w66iyw094zdw611pb2m"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; By default, .go files would be installed to
+                  ;; $libdir/…/ccache instead of $libdir/…/site-ccache.  Fix
+                  ;; that.
+                  (substitute* (find-files "." "^Makefile\\.in$")
+                    (("/ccache") "/site-ccache"))
+                  #t))))
     (build-system gnu-build-system)
     (native-inputs `(("pkg-config" ,pkg-config)))
     (inputs `(("guile" ,guile-2.2)))
diff --git a/gnu/packages/poedit.scm b/gnu/packages/poedit.scm
new file mode 100644
index 0000000000..0b21a9eea7
--- /dev/null
+++ b/gnu/packages/poedit.scm
@@ -0,0 +1,80 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages poedit)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages)
+  #:use-module (guix packages)
+  #:use-module (guix git-download)
+  #:use-module (guix utils)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages boost)
+  #:use-module (gnu packages enchant)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages icu4c)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages rdf)
+  #:use-module (gnu packages wxwidgets)
+  #:use-module (gnu packages xml))
+
+(define-public poedit
+  (package
+    (name "poedit")
+    (version "2.2.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/vslavik/poedit")
+                     (commit (string-append "v" version "-oss"))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1fxzmry4b23l90j03jdyvd4jprdpy4xcnhw7xrmmfnlbh2abf9x7"))
+             (modules '((guix build utils)))
+             (snippet
+              '(begin
+                 (delete-file-recursively "deps")
+                 #t))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       (list (string-append "--with-boost-libdir="
+                            (assoc-ref %build-inputs "boost")
+                            "/lib"))))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("gettext-minimal" ,gettext-minimal)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("boost" ,boost)
+       ("enchant" ,enchant)
+       ("gtk+" ,gtk+)
+       ("gtkspell3" ,gtkspell3)
+       ("icu4c" ,icu4c)
+       ("lucene++" ,lucene++)
+       ("pugixml" ,pugixml)
+       ("wxwidgets" ,wxwidgets)))
+    (home-page "https://poedit.net/")
+    (synopsis "Gettext catalog editing tool")
+    (description "Poedit is a GUI frontend to the GNU gettext utilities and
+a catalog editor/source code parser.  It helps with translating applications
+into other languages.")
+    (license license:expat)))
diff --git a/gnu/packages/pretty-print.scm b/gnu/packages/pretty-print.scm
index 346d3660d5..405ad08ba4 100644
--- a/gnu/packages/pretty-print.scm
+++ b/gnu/packages/pretty-print.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Meiyo Peng <meiyo@riseup.net>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -241,14 +241,14 @@ seen in a terminal.")
 (define-public highlight
   (package
     (name "highlight")
-    (version "3.49")
+    (version "3.50")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "http://www.andre-simon.de/zip/highlight-"
                            version ".tar.bz2"))
        (sha256
-        (base32 "1zlhmlq5fnsxxmm04qfchhl4w2iw5fa6sn81c34q6k2m1m77g6aj"))))
+        (base32 "0frcq12zy3dqfhwwzylm10ydp7zp51w9jlijm23zvx09daslg1bl"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 0379095dab..5484c325ec 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -3349,24 +3349,16 @@ color scales, and color space conversion easy.  It has support for:
 (define-public python-pygit2
   (package
     (name "python-pygit2")
-    (version "0.27.4")
+    (version "0.28.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pygit2" version))
        (sha256
-        (base32
-         "15c1mhwwjc7nr8hn5gm21hcfhw61jmwb0vngpjhlm3y5565wg2pz"))))
+        (base32 "0lngsaz029d4fjcwhl17pr59nh9gwl6hwfin36nph60fgsmfdg3d"))))
     (build-system python-build-system)
     (arguments
-     '(#:tests? #f; tests don't run correctly in our environment
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-dependency-versioning
-           (lambda _
-             (substitute* "setup.py"
-               (("<") "<="))
-             #t)))))
+     '(#:tests? #f))            ; tests don't run correctly in our environment
     (propagated-inputs
      `(("python-six" ,python-six)
        ("python-cffi" ,python-cffi)
@@ -4453,13 +4445,13 @@ memoizing PEG/Packrat parser in Python.")
     (version "0.13.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/pygridtools/gridmap/archive/v"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/pygridtools/gridmap.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "1gzjg2k6f14i1msm2b0ax8d9ds1hvk6qd5nlaivg8m4cxqp4cp1x"))))
+        (base32 "1478lbwsr1w24cii2x01m2910fvh8r43ghnb78nc972a96hqiknm"))))
     (build-system python-build-system)
     (arguments
      '(#:tests? #f)) ; FIXME: Requires python-cherrypy.
@@ -4484,13 +4476,13 @@ cluster without needing to write any wrapper code yourself.")
     (version "1.0.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/nickstenning/honcho/archive/v"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/nickstenning/honcho.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "0zizn61n5z5hq421hkypk9pw8s6fpxw30f4hsg7k4ivwzy3gjw9j"))))
+        (base32 "11bd87474qpif20xdcn0ra1idj5k16ka51i658wfpxwc6nzsn92b"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-pytest" ,python-pytest)
@@ -6747,14 +6739,15 @@ Python Package Index (PyPI).")
     (name "python-tlsh")
     (version "3.4.5")
     (home-page "https://github.com/trendmicro/tlsh")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/trendmicro/tlsh/archive/v"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "1x1vahd4zg5kpyr9h9hs3fvh460p25rjy4cclwdnbbw8x3vc30q3"))
-              (file-name (string-append name "-" version ".tar.gz"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/trendmicro/tlsh.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1ydliir308xn4ywy705mmsh7863ldlixdvpqwdhbipzq9vfpmvll"))))
     (build-system cmake-build-system)
     (arguments
      '(#:out-of-source? #f
@@ -10235,20 +10228,21 @@ discovery, monitoring and configuration.")
     (name "python-schematics")
     (version "1.1.1")
     (source
-      (origin
-        (method url-fetch)
-        (uri (string-append
-               "https://github.com/schematics/schematics/archive/v" version ".tar.gz"))
-        (file-name (string-append name "-" version ".tar.gz"))
-        (sha256
-         (base32
-          "19v1i69bf3bzarfxmbv0v6ivpcn758x3shvbiy9l2hy0lvqwnp6l"))))
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/schematics/schematics.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0xdqskycznqc7mfp60bhw1zq8wx7yx1dvmbq3brnm1dx3xnqa0zd"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-six" ,python-six)))
     (arguments
-     `(#:tests? #f)) ; requires a bunch of not very nice packages with fixed
-                     ; version requirements (eg python-coveralls)
+     ;; The tests require a bunch of not very nice packages with fixed
+     ;; version requirements (e.g. python-coveralls).
+     `(#:tests? #f))
     (home-page "https://github.com/schematics/schematics")
     (synopsis "Python Data Structures for Humans")
     (description "Python Data Structures for Humans.")
@@ -12585,13 +12579,13 @@ Swagger 2.0).")
     (version "0.6.3")
     (source
       (origin
-        (method url-fetch)
-        (uri (string-append "https://github.com/rochacbruno/flasgger/archive/"
-                            version ".tar.gz"))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (method git-fetch)
+        (uri (git-reference
+              (url "https://github.com/rochacbruno/flasgger.git")
+              (commit version)))
+        (file-name (git-file-name name version))
         (sha256
-          (base32
-            "1gqzlm0rb55fdpsy5ipkganlx9cnpi454fqyycr03jm22zql14ay"))))
+          (base32 "0yydxsyjnc0clbrjqb1n7587l6cdqvwdagwxk5hkx01qwdfbkvpn"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -13097,13 +13091,13 @@ executed more than a given number of times during a given period.")
     (version "0.3")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/kovidgoyal/dukpy/archive/v"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/kovidgoyal/dukpy.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0pj39rfwlzivqm5hkrsza7gssg6ggpxlq5ivc8f3h7x5pfgc6y6c"))))
+        (base32 "13h21nqzasv4zj32xs61brmc106pr2cx243672crcmwxxnjgaxls"))))
     (build-system python-build-system)
     (home-page "https://github.com/kovidgoyal/dukpy")
     (synopsis "Run JavaScript in python")
@@ -14170,16 +14164,15 @@ manager compatible with @code{asyncio}.")
   (package
     (name "python-glob2")
     (version "0.6")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/miracle2k/python-glob2/archive/"
-                    version
-                    ".tar.gz"))
-              (sha256
-               (base32
-                "0ja168f0dz4kbz4m06dm0rd3acaypk6hjx2km541pw22y9s40mag"))
-              (file-name (string-append name "-" version ".tar.gz"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/miracle2k/python-glob2.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1lm1xz3k3l0k1c5bcp9hlzmi3gp5j8dl1k3xhpiq5mnm0xq6n163"))))
     (build-system python-build-system)
     (home-page "https://github.com/miracle2k/python-glob2/")
     (synopsis "Extended Version of the python buildin glob module")
@@ -14863,14 +14856,14 @@ append on old values.  Partd excels at shuffling operations.")
 (define-public python-dask
   (package
     (name "python-dask")
-    (version "1.1.4")
+    (version "1.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "dask" version))
        (sha256
         (base32
-         "1hrnfz4pzawikz9b622vjz2500n7hs25nz9msy1k8l4g7l2kr6ky"))))
+         "1y0dqcp72ixwblgway0jpvfirlxfcmwrjiivdq96firj1hw127sd"))))
     (build-system python-build-system)
     ;; A single test out of 5000+ fails.  This test is marked as xfail when
     ;; pytest-xdist is used.
diff --git a/gnu/packages/rdf.scm b/gnu/packages/rdf.scm
index 4a3efd8d3f..3e2db7acdf 100644
--- a/gnu/packages/rdf.scm
+++ b/gnu/packages/rdf.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015, 2016, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,7 +21,7 @@
 
 (define-module (gnu packages rdf)
   #:use-module ((guix licenses)
-                #:select (non-copyleft isc gpl2 lgpl2.1 lgpl2.1+))
+                #:select (non-copyleft asl2.0 isc gpl2 lgpl2.1 lgpl2.1+ lgpl3+))
   #:use-module (guix packages)
   #:use-module (guix git-download)
   #:use-module (guix download)
@@ -119,6 +120,37 @@ full-featured indexing and searching API.  It is a port of the very popular
 Java Lucene text search engine API to C++.")
     (license lgpl2.1)))
 
+(define-public lucene++
+  (package
+    (name "lucene++")
+    (version "3.0.7")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/luceneplusplus/LucenePlusPlus")
+                     (commit (string-append "rel_" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "06b37fly6l27zc6kbm93f6khfsv61w792j8xihfagpcm9cfz2zi1"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags
+       ;; CXX_FLAGS suggested in a closed issue on github:
+       ;; https://github.com/luceneplusplus/LucenePlusPlus/issues/100
+       (list "-Wno-dev" "-DCMAKE_CXX_FLAGS=-DBOOST_VARIANT_USE_RELAXED_GET_BY_DEFAULT"
+             ;; Install in lib64 break rpath
+             "-DCMAKE_INSTALL_LIBDIR:PATH=lib")))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("boost" ,boost)))
+    (home-page "https://github.com/luceneplusplus/LucenePlusPlus")
+    (synopsis "Text search engine")
+    (description "Lucene++ is an up to date C++ port of the popular Java
+Lucene library, a high-performance, full-featured text search engine.")
+    (license (list asl2.0 lgpl3+)))); either asl or lgpl.
+
 (define-public lrdf
   (package
     (name "lrdf")
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 9a899b6bb4..8bde577229 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -2986,12 +2986,13 @@ with processes on remote servers, via SSH2.")
     (version "1.2.2.rc2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/net-ssh/net-scp/archive/v"
-                           version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/net-ssh/net-scp.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0xyf17mhgvyz54xjj9ria4wnq3x62bhmkfgzqv8jwiip2bplv1nk"))))
+        (base32 "1nyn17sy71fn7zs3y6wbgcn35318c10flqgc0582409095x4h0sx"))))
     (build-system ruby-build-system)
     (native-inputs
      `(("bundler" ,bundler)
@@ -7679,14 +7680,15 @@ strings or files.")
   (package
     (name "ruby-sass-spec")
     (version "3.5.4")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/sass/sass-spec/archive/v"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0nx8lp7c9qa58w489crgqa3c489xsyarn1a8h4np9mwwfqm1h3rr"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/sass/sass-spec.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1zsw66830w0xlc7kxz6fm4b5nyb44vdsdgm9mgy06s5aixx83pwr"))))
     (build-system ruby-build-system)
     (propagated-inputs
      `(("ruby-command-line-reporter-3" ,ruby-command-line-reporter-3)
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 7b76858a9f..61fc0d46ac 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -726,6 +726,16 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
           `(modify-phases ,phases
              ;; binaryen was replaced with LLD project from LLVM
              (delete 'dont-build-native)
+             (replace 'check
+               (lambda* _
+                 ;; Enable parallel execution.
+                 (let ((parallel-job-spec
+                        (string-append "-j" (number->string
+                                             (min 4
+                                                  (parallel-job-count))))))
+                   (invoke "./x.py" parallel-job-spec "test" "-vv")
+                   (invoke "./x.py" parallel-job-spec "test"
+                           "src/tools/cargo"))))
              (replace 'remove-unsupported-tests
                (lambda* _
                  ;; Our ld-wrapper cannot process non-UTF8 bytes in LIBRARY_PATH.
@@ -930,7 +940,7 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                    (("```rust") "```rust,no_run"))
                  #t)))))))))
 
-(define-public rust
+(define-public rust-1.32
   (let ((base-rust
          (rust-bootstrapped-package rust-1.31 "1.32.0"
           "0ji2l9xv53y27xy72qagggvq47gayr5lcv2jwvmfirx029vlqnac"
@@ -982,3 +992,44 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
              ;; Remove no longer relevant steps
              (delete 'remove-flaky-test)
              (delete 'patch-aarch64-test))))))))
+
+(define-public rust-1.33
+  (let ((base-rust
+         (rust-bootstrapped-package rust-1.32 "1.33.0"
+                                    "152x91mg7bz4ygligwjb05fgm1blwy2i70s2j03zc9jiwvbsh0as"
+                                    #:patches '())))
+    (package
+      (inherit base-rust)
+      (inputs
+       ;; Upgrade to jemalloc@5.1.0
+       (alist-replace "jemalloc" (list jemalloc)
+                      (package-inputs base-rust)))
+      (arguments
+       (substitute-keyword-arguments (package-arguments base-rust)
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (delete 'ignore-cargo-package-tests)
+             (add-after 'configure 'configure-test-threads
+               ;; Several rustc and cargo tests will fail if run on one core
+               ;; https://github.com/rust-lang/rust/issues/59122
+               ;; https://github.com/rust-lang/cargo/issues/6746
+               ;; https://github.com/rust-lang/rust/issues/58907
+               (lambda* (#:key inputs #:allow-other-keys)
+                 (setenv "RUST_TEST_THREADS" "2")
+                 #t)))))))))
+
+(define-public rust
+  (let ((base-rust
+         (rust-bootstrapped-package rust-1.33 "1.34.0"
+                                    "0n8z1wngkxab1rvixqg6w8b727hzpnm9wp9h8iy3mpbrzp7mmj3s"
+                                    #:patches '())))
+    (package
+      (inherit base-rust)
+      (source
+        (origin
+          (inherit (package-source base-rust))
+          (snippet '(begin
+                      (delete-file-recursively "src/llvm-emscripten")
+                      (delete-file-recursively "src/llvm-project")
+                      (delete-file-recursively "vendor/jemalloc-sys/jemalloc")
+                      #t)))))))
diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm
index 3d64eaf11a..8a117799ef 100644
--- a/gnu/packages/samba.scm
+++ b/gnu/packages/samba.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2016 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017, 2018 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
 ;;;
@@ -56,14 +56,14 @@
 (define-public cifs-utils
   (package
     (name "cifs-utils")
-    (version "6.8")
+    (version "6.9")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://download.samba.org/pub/linux-cifs/"
-                           name "/" name "-" version ".tar.bz2"))
+                           "cifs-utils/cifs-utils-" version ".tar.bz2"))
        (sha256 (base32
-                "0ygz3pagjpaj5ky11hzh4byyymb7fpmqiqkprn11zwj31h2zdlg7"))))
+                "175cp509wn1zv8p8mv37hkf6sxiskrsxdnq22mhlsg61jazz3n0q"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("autoconf" ,autoconf)
@@ -80,7 +80,8 @@
      `(#:phases
        (modify-phases %standard-phases
          (add-before 'configure 'set-root-sbin
-           (lambda _ ; Don't try to install in "/sbin".
+           (lambda _
+             ;; Don't try to install into "/sbin".
              (setenv "ROOTSBINDIR"
                      (string-append (assoc-ref %outputs "out") "/sbin"))
              #t)))))
@@ -152,14 +153,14 @@ anywhere.")
 (define-public samba
   (package
     (name "samba")
-    (version "4.10.1")
+    (version "4.10.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.samba.org/pub/samba/stable/"
                                  "samba-" version ".tar.gz"))
              (sha256
               (base32
-               "0kf5v65xgz7z18ggj1k46yy5g5dy76k7ni04s79kalzqqs25scd7"))))
+               "112yizx9cpjhi8c7mh9znqg0c9dkj3383hwr8dhgpykl3g2zv347"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/search.scm b/gnu/packages/search.scm
index a127d5ca34..fe51900179 100644
--- a/gnu/packages/search.scm
+++ b/gnu/packages/search.scm
@@ -23,11 +23,12 @@
 
 (define-module (gnu packages search)
   #:use-module ((guix licenses)
-                #:select (gpl2 gpl2+ gpl3+ lgpl2.1+ bsd-3 x11))
+                #:select (gpl2 gpl2+ gpl3+ lgpl2.1+ bsd-3 x11 perl-license))
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
   #:use-module (gnu packages)
   #:use-module (gnu packages compression)
@@ -110,6 +111,31 @@ rich set of boolean query operators.")
     (synopsis "Python bindings for the Xapian search engine library")
     (license gpl2+)))
 
+(define-public perl-search-xapian
+  (package
+    (name "perl-search-xapian")
+    (version "1.2.25.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/O/OL/OLLY/"
+                           "Search-Xapian-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0hpa8gi38j0ibq8af6dy69lm1bl5jnq76nsa69dbrzbr88l5m594"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-devel-leak" ,perl-devel-leak)))
+    (inputs
+     `(("xapian" ,xapian)))
+    (home-page "https://metacpan.org/release/Search-Xapian")
+    (synopsis "Perl XS frontend to the Xapian C++ search library")
+    (description
+     "Search::Xapian wraps most methods of most Xapian classes.  The missing
+classes and methods should be added in the future.  It also provides a
+simplified, more 'perlish' interface to some common operations.")
+    (license perl-license)))
+
 (define-public libtocc
   (package
     (name "libtocc")
diff --git a/gnu/packages/security-token.scm b/gnu/packages/security-token.scm
index 29d691dd31..c88a1c6b2a 100644
--- a/gnu/packages/security-token.scm
+++ b/gnu/packages/security-token.scm
@@ -312,7 +312,7 @@ and other operations.  It includes a library and a command-line tool.")
 (define-public yubikey-personalization
   (package
     (name "yubikey-personalization")
-    (version "1.19.0")
+    (version "1.19.3")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -320,7 +320,7 @@ and other operations.  It includes a library and a command-line tool.")
                     "/Releases/ykpers-" version ".tar.gz"))
               (sha256
                (base32
-                "104lc0nnqdr365fa7c4vrq67rxp1dp8idndsh9jlhnj9dnhszj1b"))))
+                "0jhvnavjrpwzmmjcw486df5s48j53njqgyz36yz3dskbaz3kwlfr"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags (list (string-append "--with-udevrulesdir="
diff --git a/gnu/packages/spice.scm b/gnu/packages/spice.scm
index e9e9042bd1..52e4f4f7f6 100644
--- a/gnu/packages/spice.scm
+++ b/gnu/packages/spice.scm
@@ -117,7 +117,7 @@ which allows users to view a desktop computing environment.")
 (define-public spice-gtk
   (package
     (name "spice-gtk")
-    (version "0.35")
+    (version "0.36")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -125,7 +125,7 @@ which allows users to view a desktop computing environment.")
                 "spice-gtk-" version ".tar.bz2"))
               (sha256
                (base32
-                "11lymg467gvj5ys8k22ihnfbxjn4x34ygyzirpg2nphjwlyhgrml"))))
+                "1kfpixfdmxs9wn3id48gc9bvfrgxz935y3wpykf40bgi9mcc69ki"))))
     (build-system gnu-build-system)
     (propagated-inputs
       `(("gstreamer" ,gstreamer)
@@ -134,20 +134,23 @@ which allows users to view a desktop computing environment.")
         ("gst-plugins-good" ,gst-plugins-good)
         ("gst-plugins-bad" ,gst-plugins-bad)
         ("gst-plugins-ugly" ,gst-plugins-ugly)
-        ("spice-protocol" ,spice-protocol)))
+        ("spice-protocol" ,spice-protocol)
+
+        ;; These are required by the pkg-config files.
+        ("gtk+" ,gtk+)
+        ("pixman" ,pixman)
+        ("openssl" ,openssl)))
     (inputs
       `(("glib-networking" ,glib-networking)
         ("gobject-introspection" ,gobject-introspection)
-        ("gtk+" ,gtk+)
+        ("json-glib" ,json-glib)
         ("libepoxy" ,libepoxy)
         ("libjpeg" ,libjpeg)
         ("libxcb" ,libxcb)
         ("lz4" ,lz4)
         ("mesa" ,mesa)
-        ("pixman" ,pixman)
         ("pulseaudio" ,pulseaudio)
         ("python" ,python)
-        ("openssl" ,openssl)
         ("opus" ,opus)
         ("usbredir" ,usbredir)))
     (native-inputs
@@ -162,6 +165,13 @@ which allows users to view a desktop computing environment.")
           "--enable-introspection")
         #:phases
          (modify-phases %standard-phases
+           (add-before 'check 'disable-session-test
+             (lambda _
+               ;; XXX: Disable session tests, because they require USB support,
+               ;; which is not available in the build container.
+               (substitute* "tests/Makefile"
+                 (("test-session\\$\\(EXEEXT\\) ") ""))
+               #t))
            (add-after
             'install 'wrap-spicy
             (lambda* (#:key inputs outputs #:allow-other-keys)
@@ -291,7 +301,6 @@ resolution scaling on graphical console window resize.")
       `(("gtk+" ,gtk+)
         ("libcap" ,libcap)
         ("libxml2" ,libxml2)
-        ("openssl" ,openssl)
         ("spice-gtk" ,spice-gtk)))
     (native-inputs
       `(("glib:bin" ,glib "bin")
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 1c834c3166..26e5f62666 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -570,14 +570,14 @@ and operations on them using LAPACK and SuiteSparse.")
 (define-public r-nlme
   (package
     (name "r-nlme")
-    (version "3.1-137")
+    (version "3.1-139")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "nlme" version))
        (sha256
         (base32
-         "11vyxxc0n36vb8d8g02zr0402ymicvbifwdsqm7gy9iqqnwrn101"))))
+         "0fap121c18nbznyzvnqvsdiszg2nbmkas6zhgrz1f8jiv1lzqq04"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-lattice" ,r-lattice)))
@@ -636,14 +636,14 @@ single hidden layer, and for multinomial log-linear models.")
 (define-public r-rpart
   (package
     (name "r-rpart")
-    (version "4.1-13")
+    (version "4.1-15")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "rpart" version))
        (sha256
         (base32
-         "0k29qx3k3pj5sgrpg0p47yd8i811rmdakaw57bigpq1449asc4cf"))))
+         "0p5frya963ppn476p5dxs2mnarsalksr6gw9zzmjsn8ikq7bx3ib"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/rpart")
     (synopsis "Recursive partitioning and regression trees")
@@ -1120,13 +1120,13 @@ legends.")
 (define-public r-ggplot2
   (package
     (name "r-ggplot2")
-    (version "3.1.0")
+    (version "3.1.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ggplot2" version))
        (sha256
-        (base32 "1msy36r21nlmnpyaw2m9k0ykmnd19b9il01b65w457pfw75prrs9"))))
+        (base32 "0y8cks9r9hvjlx0isnvbgs3p0al167hlr3q7c3syfcj77dzjkpmz"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-digest" ,r-digest)
@@ -1635,13 +1635,13 @@ defined in different packages.")
 (define-public r-rlang
   (package
     (name "r-rlang")
-    (version "0.3.3")
+    (version "0.3.4")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "rlang" version))
               (sha256
                (base32
-                "1pdlafnijpd2vzy8jxcxwakfi66n4qzrqxvcxi1ja389m066cvbb"))))
+                "1pks7d2xavzgaxqrnk3f79qsmv4wqv93f8991jv93pnb1mxpyijf"))))
     (build-system r-build-system)
     (home-page "http://rlang.tidyverse.org")
     (synopsis "Functions for base types, core R and Tidyverse features")
@@ -1827,13 +1827,13 @@ times.")
 (define-public r-data-table
   (package
     (name "r-data-table")
-    (version "1.12.0")
+    (version "1.12.2")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "data.table" version))
               (sha256
                (base32
-                "1xz388khklqqc39r1cmjvqm65azambgzqw0743aypm6v4chi26v1"))))
+                "1x929lwhai6nkppm4zvicyw5qh5va5sizp86r30qnfkh1n7w2mfv"))))
     (build-system r-build-system)
     (home-page "https://github.com/Rdatatable/data.table/wiki")
     (synopsis "Enhanced version of data.frame R object")
@@ -2056,13 +2056,13 @@ jackknifed confidence intervals are available for most estimates.")
 (define-public r-rversions
   (package
     (name "r-rversions")
-    (version "1.0.3")
+    (version "1.1.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "rversions" version))
               (sha256
                (base32
-                "0i2gi05nrvknr7g89rbppkswyfcwwd4r9gp75fdfhpah8sgq1l11"))))
+                "0g4wvq6m9inhy6ww18lvkhkgarb1m9dp2kdxkkyk5qvldgqa598l"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-curl" ,r-curl)
@@ -2096,14 +2096,14 @@ limited to R.")
 (define-public r-backports
   (package
     (name "r-backports")
-    (version "1.1.3")
+    (version "1.1.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "backports" version))
        (sha256
         (base32
-         "1hac46xaawnqajlsfb5k7pfkc2ya9h76s5qv9ycj3jafh93d26z4"))))
+         "00zz969vc2gfi5p9q65pzghq2bxm3p9zqgwqswkyz9rgybz5wjzf"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/backports")
     (synopsis "Reimplementations of functions introduced since R 3.0.0")
@@ -2421,13 +2421,13 @@ informative error messages when it's not available.")
 (define-public r-devtools
   (package
     (name "r-devtools")
-    (version "2.0.1")
+    (version "2.0.2")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "devtools" version))
               (sha256
                (base32
-                "1nyspqicn9zd1rgq3k07b3179i8w5ys6jbd65g9q8qczrb7z3x8f"))))
+                "028pppj39ng7q17k27531s8k00lmw982vz5krn74n9b8f2azm8lr"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-callr" ,r-callr)
@@ -2521,13 +2521,13 @@ disk (or a connection).")
 (define-public r-plotrix
   (package
     (name "r-plotrix")
-    (version "3.7-4")
+    (version "3.7-5")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "plotrix" version))
               (sha256
                (base32
-                "1hs0zwaqs34559girinvysjfbvznyn8znp9cwvkqx6k2cqvcjinj"))))
+                "0k6ivryac1k81z2dijjds376a9jxwk8rf5g48snj67cnjffkybxj"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/plotrix")
     (synopsis "Various plotting functions")
@@ -3805,13 +3805,13 @@ features present in other programming languages.")
 (define-public r-plotly
   (package
     (name "r-plotly")
-    (version "4.8.0")
+    (version "4.9.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "plotly" version))
               (sha256
                (base32
-                "19p8pa03q9mw5vaan7r56xgd13d90ssiz0flbrkvpfrir2105ybq"))))
+                "1kz2hm7vnkn4clxr6yyxxnmdmkz9zwjq6bzysw7j27r3721i8qgp"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-base64enc" ,r-base64enc)
@@ -4427,13 +4427,13 @@ data at that region, and avoids over-plotting.")
 (define-public r-ggthemes
   (package
     (name "r-ggthemes")
-    (version "4.1.0")
+    (version "4.1.1")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "ggthemes" version))
               (sha256
                (base32
-                "1a6r384v72hb91qkg9rz2m7s3qskbl9haxynf2vzz6v1ak9xd4c5"))))
+                "092hks6bxi6al8nclgswnzfmx5wp6n3qf63aqiajca7dx8w8n0m2"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-ggplot2" ,r-ggplot2)
diff --git a/gnu/packages/suckless.scm b/gnu/packages/suckless.scm
index 92d5358c5e..427bc44598 100644
--- a/gnu/packages/suckless.scm
+++ b/gnu/packages/suckless.scm
@@ -496,15 +496,14 @@ cups server to be installed.")
 (define-public noice
   (package
     (name "noice")
-    (version "0.7")
+    (version "0.8")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://dl.2f30.org/releases/"
-                           name "-" version ".tar.gz"))
+                           "noice-" version ".tar.gz"))
        (sha256
-        (base32
-         "03b0kzngzacfpz4n8lgbvia2s765i5bkw55v482hh4m49dm41gpc"))))
+        (base32 "0g01iwzscdv27c1idv93gd74kjzy3n9kazgm6qz08rygp96qx4xw"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index 2d46585865..d0531b0c14 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -249,10 +249,14 @@ compatibility to existing emulators like xterm, gnome-terminal, konsole, etc.")
                   "0q62kjsvy2iwy8adfiygx2bfwlh83rphgxbis95ycspqidg9py87"))
                 (patches
                  (search-patches "kmscon-runtime-keymap-switch.patch"))
-                (modules '((guix build utils)))))
+                (modules '((guix build utils)))
+                (file-name (git-file-name name version))))
       (build-system gnu-build-system)
       (arguments
-       `(#:phases (modify-phases %standard-phases
+       `(;; The closure of MESA is huge so we'd rather avoid it.
+         #:disallowed-references (,mesa)
+
+         #:phases (modify-phases %standard-phases
                     (replace 'bootstrap
                       (lambda _
                         (setenv "NOCONFIGURE" "indeed")
@@ -285,7 +289,10 @@ compatibility to existing emulators like xterm, gnome-terminal, konsole, etc.")
          ("libtsm" ,libtsm)
          ("libxkbcommon" ,libxkbcommon)
          ("logind" ,elogind)
-         ("mesa" ,mesa)
+         ;; MESA can be used for accelerated video output via OpenGLESv2, but
+         ;; it's a bit dependency that we'd rather avoid in the installation
+         ;; image.
+         ;; ("mesa" ,mesa)
          ("pango" ,pango)
          ("udev" ,eudev)))
       (synopsis "Linux KMS-based terminal emulator")
@@ -377,7 +384,7 @@ to all types of devices that provide serial consoles.")
 (define-public beep
   (package
     (name "beep")
-    (version "1.4.3")
+    (version "1.4.4")
     (source
      (origin
        (method git-fetch)
@@ -390,7 +397,7 @@ to all types of devices that provide serial consoles.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1gramwa2zm59kqjhv96fi8vg7l6lyffv02h0310vb90naschi99g"))))
+        (base32 "1bk7g63qpiclbq20iz2x238by8s1b2iafdim7i6dq1i5n01s7lgx"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index 314d88f2fc..c3ce80c8f5 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -6022,7 +6022,7 @@ typearea (which are the main parts of the bundle).")
            (copy-recursively (assoc-ref %build-inputs "source") target)
            #t))))
     (home-page "https://www.ctan.org/pkg/listofitems")
-    (synopsis "Grab items in lists using user-specified seperation character")
+    (synopsis "Grab items in lists using user-specified separation character")
     (description
      "This package allows one to capture all the items of a list, for which
 the parsing character has been selected by the user, and to access any of
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 1ab909d53e..11bb64ce8b 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -529,13 +529,13 @@ netcat implementation that supports TLS.")
   (package
     (name "python-acme")
     ;; Remember to update the hash of certbot when updating python-acme.
-    (version "0.33.0")
+    (version "0.33.1")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "acme" version))
               (sha256
                (base32
-                "0gmnbjanv8dl8035n2b30wisqn4w9rr6fxzxrbrbnhhd40pnlplx"))))
+                "10ks4wp55qxzkf8ms3xcfs5njg2zz7w499wh24gzw7h7s1qxp35k"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -586,7 +586,7 @@ netcat implementation that supports TLS.")
               (uri (pypi-uri name version))
               (sha256
                (base32
-                "0iiqr306zy56y8wpxsvzw1izs184pzps72kxhssmznqlgz5ngni5"))))
+                "1nf3bb6j3nmdd5bcp3k7d6jqilmwvpzllzpr5niwaghgqlr3y86m"))))
     (build-system python-build-system)
     (arguments
      `(,@(substitute-keyword-arguments (package-arguments python-acme)
diff --git a/gnu/packages/upnp.scm b/gnu/packages/upnp.scm
index 5411ca249b..3f3d80f576 100644
--- a/gnu/packages/upnp.scm
+++ b/gnu/packages/upnp.scm
@@ -32,14 +32,14 @@
 (define-public miniupnpc
   (package
     (name "miniupnpc")
-    (version "2.1.20190403")
+    (version "2.1.20190408")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://miniupnp.tuxfamily.org/files/"
                            name "-" version ".tar.gz"))
        (sha256
-        (base32 "0qgwcinj8h312v2995qc2z1lbpmw916glkc8j9fa16xr4l2skxfy"))))
+        (base32 "1v0l2m8j7r6jiy871d6v11ls243xqn6s3856iwd3bmk5c37npi50"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("python" ,python-2)))
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 50284182c9..22771a129c 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -522,13 +522,14 @@ everything from small to very large projects with speed and efficiency.")
     (name "libgit2")
     (version "0.28.1")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/libgit2/libgit2/"
-                                  "archive/v" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/libgit2/libgit2.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0swk2dyq5a4p1jn5wvbcsrxckhh808vifxz5y8w663avg541188c"))
+                "0j5p0hhz2wizvgkf0nbpd8g32mb5bg1vp8ckpbhb0pq38ja4h43r"))
               (patches (search-patches "libgit2-avoid-python.patch"
                                        "libgit2-mtime-0.patch"))
 
@@ -551,6 +552,10 @@ everything from small to very large projects with speed and efficiency.")
                (("/bin/cp") (which "cp"))
                (("/bin/rm") (which "rm")))
              #t))
+         (add-after 'unpack 'make-git-checkout-writable
+           (lambda _
+             (for-each make-file-writable (find-files "."))
+             #t))
          ;; Run checks more verbosely.
          (replace 'check
            (lambda _ (invoke "./libgit2_clar" "-v" "-Q"))))))
@@ -577,14 +582,15 @@ write native speed custom Git applications in any language with bindings.")
   (package
     (name "git-crypt")
     (version "0.5.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/AGWA/git-crypt"
-                                  "/archive/" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0454fdmgm5f3razkn8n03lfqm5zyzvr4r2528zmlxiwba9518l2i"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/AGWA/git-crypt.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1x9209n3k49k998saadr2d0lmvs01smjinx7gzzyjdwj9l904sii"))))
     (build-system gnu-build-system)
     (inputs
      `(("git" ,git)
@@ -771,14 +777,13 @@ a built-in cache to decrease server I/O pressure.")
     (version "0.5.5")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/davisp/ghp-import/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/davisp/ghp-import.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0x887v690xsac2hzjkpbvp3a6crh3m08mqbk3nb4xwc9dnk869q7"))))
+        (base32 "12pmw3zz3i57ljnm0rxdyjqdyhisbvy18mjwkb3bzp5pgzs2f45c"))))
     (build-system python-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
@@ -1026,14 +1031,15 @@ manipulate them in various ways.")
   (package
     (name "vcsh")
     (version "1.20151229")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/RichiH/vcsh/archive/v"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1ym3swkh738c3vciffvlr96vqzhwmzkb8ajqzap8f0j9n039a1mf"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/RichiH/vcsh.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1grpj45nbpv4j60vd2kg4rj53zrm0bc0h9l4pfd3c2mwbvywm6ab"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("which" ,which)))
@@ -1100,15 +1106,15 @@ also walk each side of a merge and test those changes individually.")
   (package
     (name "gitolite")
     (version "3.6.7")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/sitaramc/gitolite/archive/v"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1idxipg0df80bhjcxgwxs3lllqnkvhwpinmfv1xvg1l98fxiapgp"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/sitaramc/gitolite.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0rmyzr66lxh2ildf3h1nh3hh2ndwk21rjdin50r5vhwbdd7jg8vb"))))
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f ; no tests
@@ -1762,14 +1768,15 @@ output of the @code{git} command.")
   (package
     (name "findnewest")
     (version "0.3")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/0-wiz-0/findnewest/archive/findnewest-"
-                    version ".tar.gz"))
-              (sha256
-               (base32
-                "1ydis4y0amkgfr4y60sn076f1l41ya2kn89kfd9fqf44f9ccgb5r"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/0-wiz-0/findnewest.git")
+             (commit (string-append "findnewest-" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1x1cbn2b27h5r0ah5xc06fkalfdci2ngrgd4wibxjw0h88h0nvgq"))))
     (build-system gnu-build-system)
     (native-inputs `(("autoconf" ,autoconf)
                      ("automake" ,automake)))
@@ -1833,15 +1840,15 @@ Mercurial, Bazaar, Darcs, CVS, Fossil, and Veracity.")
   (package
     (name "git-annex-remote-hubic")
     (version "0.3.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/Schnouki/" name "/archive/v"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "196g3jkaybjx11nbr51n0cjps3wjzb145ab76y717diqvvxp5v4r"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Schnouki/git-annex-remote-hubic.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "16y9sk67hfi17h9n2kkffyabfccksh5rab40hhk69v6cxmbpn2sx"))))
     (build-system python-build-system)
     (arguments `(#:python ,python-2))
     (native-inputs
@@ -2096,18 +2103,18 @@ how information about the merge is displayed.")
   (package
     (name "git-imerge")
     (version "1.1.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/mhagger/git-imerge/archive/v"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0a6ay8fpgz3yd84jc40w41x0rcfpan6bcq4wd1hxiiqwb51jysb2"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mhagger/git-imerge.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0vi1w3f0yk4gqhxj2hzqafqq28rihyhyfnp8x7xzib96j2si14a4"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f  ; The are only manual test scripts.
+     `(#:tests? #f                      ; only manual test scripts
        #:make-flags (list (string-append "DESTDIR=" %output)
                           "PREFIX=")
        #:phases
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 2993e7dea3..9bc3073ab0 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -1446,7 +1446,7 @@ access to mpv's powerful playback capabilities.")
 (define-public youtube-dl
   (package
     (name "youtube-dl")
-    (version "2019.03.18")
+    (version "2019.04.07")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/rg3/youtube-dl/releases/"
@@ -1454,7 +1454,7 @@ access to mpv's powerful playback capabilities.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0r31q7j3gg2zfw3b45jancxl7mmr2gin8dyfx5dgyyp92ss8hih7"))))
+                "1krx4y8nzpaqpq9qs8dnv2y988jpdccyfl9sdx9wrb0baycl119k"))))
     (build-system python-build-system)
     (arguments
      ;; The problem here is that the directory for the man page and completion
diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm
index 56deb12c3d..dadffa3ab1 100644
--- a/gnu/packages/vim.scm
+++ b/gnu/packages/vim.scm
@@ -756,7 +756,7 @@ are detected, the user is notified.")))
              #t))
          (add-after 'unpack 'set-lua-paths
            (lambda* (#:key inputs #:allow-other-keys)
-             (let* ((lua-version "5.2")
+             (let* ((lua-version "5.1")
                     (lua-cpath-spec
                      (lambda (prefix)
                        (let ((path (string-append prefix "/lib/lua/" lua-version)))
@@ -783,10 +783,10 @@ are detected, the user is notified.")))
        ("unibilium" ,unibilium)
        ("jemalloc" ,jemalloc)
        ("libiconv" ,libiconv)
-       ("lua" ,lua-5.2)
-       ("lua-lpeg" ,lua5.2-lpeg)
-       ("lua-bitop" ,lua5.2-bitop)
-       ("lua-libmpack" ,lua5.2-libmpack)))
+       ("lua" ,lua-5.1)
+       ("lua-lpeg" ,lua5.1-lpeg)
+       ("lua-bitop" ,lua5.1-bitop)
+       ("lua-libmpack" ,lua5.1-libmpack)))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("gettext" ,gettext-minimal)
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index b6af572778..bb0b5e1b4e 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -93,14 +93,14 @@ older or slower computers and embedded systems.")
 (define-public links
   (package
     (name "links")
-    (version "2.18")
+    (version "2.19")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://links.twibright.com/download/"
-                                  name "-" version ".tar.bz2"))
+                                  "links-" version ".tar.bz2"))
                 (sha256
                (base32
-                "0mwhh61klicn2vwk39nc7y4cw4mygzdi2nljn4r0gjbw6jmw3337"))))
+                "02ls11c02p7xvsdjyb43rrzr850i1yly003r812z0w5vv5yqqxbh"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index e84b42358c..fd6bfbab22 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -30,6 +30,7 @@
 ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com>
 ;;; Copyright © 2018 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de>
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
+;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -198,14 +199,14 @@ Interface} specification.")
     ;; ’stable’ and recommends that “in general you deploy the NGINX mainline
     ;; branch at all times” (https://www.nginx.com/blog/nginx-1-6-1-7-released/)
     ;; Consider updating the nginx-documentation package together with this one.
-    (version "1.15.9")
+    (version "1.15.12")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://nginx.org/download/nginx-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0hxfsz1117r91b9fb5hjddyrf1czvb36lh1z7zalqqdskfcbmkz4"))))
+                "1giavdph0jqhywdkj4650s5qhz6qfd6nrv74k9q005yy2ym90nrx"))))
     (build-system gnu-build-system)
     (inputs `(("openssl" ,openssl)
               ("pcre" ,pcre)
@@ -3009,6 +3010,33 @@ simple requests without the overhead of a large framework like LWP::UserAgent.
 It supports proxies and redirection.  It also correctly resumes after EINTR.")
     (license l:perl-license)))
 
+(define-public perl-http-tinyish
+  (package
+    (name "perl-http-tinyish")
+    (version "0.15")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/M/MI/MIYAGAWA/HTTP-Tinyish-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "199sa722amvwhq0czjfb7psj3hbqmvni5vxkrm579r5943pg0rax"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-file-which" ,perl-file-which)
+       ("perl-ipc-run3" ,perl-ipc-run3)))
+    (home-page "https://metacpan.org/release/HTTP-Tinyish")
+    (synopsis "@code{HTTP::Tiny} compatible HTTP client wrappers")
+    (description
+     "@code{HTTP::Tinyish} is a wrapper module for @acronym{LWP,libwww-perl},
+@code{HTTP::Tiny}, curl and wget.
+
+It provides an API compatible to HTTP::Tiny.")
+    (license l:perl-license)))
+
 (define-public perl-io-html
   (package
     (name "perl-io-html")
@@ -3374,6 +3402,35 @@ application frameworks.  Plack is like Ruby's Rack or Python's Paste for
 WSGI.")
     (license l:perl-license)))
 
+(define-public perl-plack-middleware-deflater
+  (package
+    (name "perl-plack-middleware-deflater")
+    (version "0.12")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/K/KA/KAZEBURO/"
+             "Plack-Middleware-Deflater-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0xf2visi16hgwgyp9q0cjr10ikbn474hjia5mj8mb2scvbkrbni8"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-module-install" ,perl-module-install)
+       ("perl-test-requires" ,perl-test-requires)))
+    (propagated-inputs
+     `(("perl-plack" ,perl-plack)))
+    (home-page "https://metacpan.org/release/Plack-Middleware-Deflater")
+    (synopsis "Compress response body with Gzip or Deflate")
+    (description
+     "Plack::Middleware::Deflater is a middleware to encode your response body
+in gzip or deflate, based on \"Accept-Encoding\" HTTP request header.  It
+would save the bandwidth a little bit but should increase the Plack server
+load, so ideally you should handle this on the frontend reverse proxy
+servers.")
+    (license l:perl-license)))
+
 (define-public perl-plack-middleware-fixmissingbodyinredirect
   (package
     (name "perl-plack-middleware-fixmissingbodyinredirect")
@@ -4608,14 +4665,15 @@ handling many of the web standards in use today.")
 (define-public surfraw
   (package
     (name "surfraw")
-    (version "2.2.9")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://surfraw.alioth.debian.org/dist/"
-                                  name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1fy4ph5h9kp0jzj1m6pfylxnnmgdk0mmdppw76z9jhna4jndk5xa"))))
+    (version "2.3.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://gitlab.com/surfraw/Surfraw/uploads/"
+                           "2de827b2786ef2fe43b6f07913ca7b7f/"
+                           "surfraw-" version ".tar.gz"))
+       (sha256
+        (base32 "099nbif0x5cbcf18snc58nx1a3q7z0v9br9p2jiq9pcc7ic2015d"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -4753,14 +4811,14 @@ tools like SSH (Secure Shell) to reach the outside world.")
 (define-public stunnel
   (package
   (name "stunnel")
-  (version "5.50")
+  (version "5.53")
   (source
     (origin
       (method url-fetch)
       (uri (string-append "https://www.stunnel.org/downloads/stunnel-"
                           version ".tar.gz"))
       (sha256
-       (base32 "0j811iakljjxw39qchmqf235jdkwixb0i4xxjyi55f08558947cm"))))
+       (base32 "119560alb8k0qz2zkjb2i80ikmn76fa6dg681fvrw9hlxsb9hhw0"))))
   (build-system gnu-build-system)
   (native-inputs
    ;; For tests.
@@ -5096,7 +5154,7 @@ into your tests.  It automatically starts up a HTTP server in a separate thread
 (define-public http-parser
   (package
     (name "http-parser")
-    (version "2.9.0")
+    (version "2.9.2")
     (home-page "https://github.com/nodejs/http-parser")
     (source (origin
               (method git-fetch)
@@ -5105,7 +5163,7 @@ into your tests.  It automatically starts up a HTTP server in a separate thread
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1qa3rh9x4as2fc2p0y2hah83iqs7jr5106a8anv317359dgf3ssj"))))
+                "1qs6x3n2nrcj1wiik5pg5i16inykf7rcfdfdy7rwyzf40pvdl3c2"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
@@ -5125,6 +5183,36 @@ Depending on your architecture, it only requires about 40 bytes of data per
 message stream (in a web server that is per connection).")
     (license l:expat)))
 
+(define-public python-httpretty
+  (package
+    (name "python-httpretty")
+    (version "0.9.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "httpretty" version))
+       (sha256
+        (base32 "1p1rb4mpngh0632xrmdfhvc8yink519yfkqz97d2ww3y0x2jvd81"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-six" ,python-six)))
+    (native-inputs
+     `(("python-coverage" ,python-coverage)
+       ("python-httplib2" ,python-httplib2)
+       ("python-mock" ,python-mock)
+       ("python-nose" ,python-nose)
+       ("python-nose-randomly" ,python-nose-randomly)
+       ("python-rednose" ,python-rednose)
+       ("python-requests" ,python-requests)
+       ("python-sure" ,python-sure)
+       ("python-tornado" ,python-tornado)
+       ("python-urllib3" ,python-urllib3)))
+    (home-page "https://httpretty.readthedocs.io")
+    (synopsis "HTTP client mock for Python")
+    (description "@code{httpretty} is a helper for faking web requests,
+inspired by Ruby's @code{fakeweb}.")
+    (license l:expat)))
+
 (define-public python2-httpretty
   (package
     (name "python2-httpretty")
@@ -6430,3 +6518,32 @@ compressed JSON header blocks.
 provided by Guix.  The list of packages is searchable and provides
 instructions on how to use Guix in a shared HPC environment.")
       (license l:agpl3+))))
+
+(define-public httrack
+  (package
+    (name "httrack")
+    (version "3.49.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://mirror.httrack.com/historical/"
+                                  "httrack-" version ".tar.gz"))
+              (sha256
+               (base32
+                "09a0gm67nml86qby1k1gh7rdxamnrnzwr6l9r5iiq94favjs0xrl"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("libressl" ,libressl)
+       ("zlib" ,zlib)))
+    (home-page "https://www.httrack.com/")
+    (synopsis "Easy-to-use offline browser utility")
+    (description "HTTrack allows you to download a World Wide Web site from
+the Internet to a local directory, building recursively all directories,
+getting HTML, images, and other files from the server to your computer.
+
+HTTrack arranges the original site's relative link-structure.  Simply open
+a page of the ``mirrored'' website in your browser, and you can browse the
+site from link to link, as if you were viewing it online.  HTTrack can also
+update an existing mirrored site, and resume interrupted downloads.
+
+HTTrack is fully configurable, and has an integrated help system.")
+    (license l:gpl3+)))
diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm
index 14c374dd3e..ce69d0a7d4 100644
--- a/gnu/packages/webkit.scm
+++ b/gnu/packages/webkit.scm
@@ -168,14 +168,15 @@ HTML/CSS applications to full-fledged web browsers.")
 (define-public webkitgtk-2.24
   (package/inherit webkitgtk
     (name "webkitgtk")
-    (version "2.24.0")
+    (version "2.24.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.webkitgtk.org/releases/"
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "01s446lmjk7y8il4snjm32vpxws2rp4hmxrwm2swx0p47x8d2jif"))))
+                "0v9riwrmwi9wxbb8hlvcbyyxa9zxhcdk6s1xcspalk6asam8xjsk"))
+              (patches (search-patches "webkitgtk-sse2.patch"))))
     (native-inputs
      `(("gcc" ,gcc-7)  ; webkitgtk-2.22 requires gcc-6 or newer
        ,@(package-native-inputs webkitgtk)))
diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm
index 57b755c8a2..9cafa07c28 100644
--- a/gnu/packages/wine.scm
+++ b/gnu/packages/wine.scm
@@ -310,7 +310,7 @@ integrate Windows applications into your desktop.")
 (define-public wine-staging-patchset-data
   (package
     (name "wine-staging-patchset-data")
-    (version "4.5")
+    (version "4.6")
     (source
      (origin
        (method git-fetch)
@@ -320,7 +320,7 @@ integrate Windows applications into your desktop.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "18xpha7nl3jg7c24cgbncciyyqqb6svsyfp1xk81993wnl6r8abs"))))
+         "0mripibsi1p8h2j9ngqszkcjppdxji027ss4shqwb0nypaydd9w2"))))
     (build-system trivial-build-system)
     (native-inputs
      `(("bash" ,bash)
@@ -366,7 +366,7 @@ integrate Windows applications into your desktop.")
               (file-name (string-append name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1dy1v27cw9vp2xnr8y4bdcvvw5ivcgpk2375jgn536csbwaxgwjz"))))
+                "1nk2nlkdklwpd0kbq8hx59gl05b5wglcla0v3892by6k4kwh341j"))))
     (inputs `(("autoconf" ,autoconf) ; for autoreconf
               ("faudio" ,faudio)
               ("ffmpeg" ,ffmpeg)
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index a0076f24cf..2695b5f99c 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -536,7 +536,7 @@ tiled on several screens.")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://hackage/package/xmobar/"
-                                  name "-" version ".tar.gz"))
+                                  "xmobar-" version ".tar.gz"))
               (sha256
                (base32
                 "1xh87asg8y35srvp7d3gyyy4bkxsw122liihxgzgm8pqv2z3h4zd"))))
@@ -1048,14 +1048,14 @@ its size
 (define-public polybar
   (package
     (name "polybar")
-    (version "3.3.0")
+    (version "3.3.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/jaagr/polybar/releases/"
-                           "download/" version "/polybar.tar"))
+                           "download/" version "/polybar-" version ".tar"))
        (sha256
-        (base32 "0sjh3xmf11g09spi88zj7xsc3a3vv78kixab6n5i7436py7xwzb4"))
+        (base32 "0758na059vpgnsrcdrxmh9wsahs80wnmizb9g7bmixlrkxr2m65h"))
        (file-name (string-append name "-" version ".tar"))))
     (build-system cmake-build-system)
     (arguments
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index 9fde0fcbd4..c4b7f9a87f 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -957,7 +957,7 @@ Escape key when Left Control is pressed and released on its own.")
 (define-public libwacom
   (package
     (name "libwacom")
-    (version "0.32")
+    (version "0.33")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -965,7 +965,7 @@ Escape key when Left Control is pressed and released on its own.")
                     "libwacom-" version "/libwacom-" version ".tar.bz2"))
               (sha256
                (base32
-                "102kz0q7i0bjsnl6yy83vcj2rpir12rs2d4xr0wvhw84rs5sp7bb"))))
+                "1wnv34y7m9l6avlvwqvfrnksfnsz1lbgb412dn6s7x1h3wvs7y4l"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 18270a6771..d3e6b79277 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -5961,18 +5961,17 @@ Conventions Manual) and some of the @dfn{EWMH}
 (define-public xcompmgr
   (package
     (name "xcompmgr")
-    (version "1.1.7")
+    (version "1.1.8")
     (source
      (origin
-       ;; there's no current tarball
+       ;; There's no current tarball.
        (method git-fetch)
        (uri (git-reference
              (url "https://anongit.freedesktop.org/git/xorg/app/xcompmgr.git")
-             (commit (string-append name "-" version))))
+             (commit (string-append "xcompmgr-" version))))
        (sha256
-        (base32
-         "04swkrm3gk689wrjc418bd3n25w8r20kg1xfbn5j8d7mx1r5gf16"))
-       (file-name (string-append name "-" version))))
+        (base32 "11i7vyk3pynw8q8aczpy56qncm84y0cmhlvyja3sj8dgy60g03q2"))
+       (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases