summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--doc/guix-cookbook.texi469
-rw-r--r--doc/guix.texi3
-rw-r--r--gnu/local.mk3
-rw-r--r--gnu/packages/algebra.scm4
-rw-r--r--gnu/packages/bittorrent.scm4
-rw-r--r--gnu/packages/cdrom.scm4
-rw-r--r--gnu/packages/ci.scm2
-rw-r--r--gnu/packages/cran.scm111
-rw-r--r--gnu/packages/disk.scm4
-rw-r--r--gnu/packages/emacs-xyz.scm4
-rw-r--r--gnu/packages/emulators.scm4
-rw-r--r--gnu/packages/freedesktop.scm4
-rw-r--r--gnu/packages/games.scm4
-rw-r--r--gnu/packages/gettext.scm6
-rw-r--r--gnu/packages/gnome.scm87
-rw-r--r--gnu/packages/gnuzilla.scm303
-rw-r--r--gnu/packages/guile-xyz.scm37
-rw-r--r--gnu/packages/haskell-apps.scm5
-rw-r--r--gnu/packages/image.scm6
-rw-r--r--gnu/packages/linux.scm62
-rw-r--r--gnu/packages/lisp.scm4
-rw-r--r--gnu/packages/mail.scm198
-rw-r--r--gnu/packages/man.scm4
-rw-r--r--gnu/packages/messaging.scm65
-rw-r--r--gnu/packages/password-utils.scm18
-rw-r--r--gnu/packages/patches/dav1d-aarch64-symbol-alignment.patch25
-rw-r--r--gnu/packages/patches/icecat-default-search-ddg.patch1108
-rw-r--r--gnu/packages/patches/icecat-disable-sync.patch9
-rw-r--r--gnu/packages/patches/icecat-makeicecat.patch33
-rw-r--r--gnu/packages/perl-check.scm4
-rw-r--r--gnu/packages/perl.scm4
-rw-r--r--gnu/packages/php.scm4
-rw-r--r--gnu/packages/python-xyz.scm9
-rw-r--r--gnu/packages/ruby.scm27
-rw-r--r--gnu/packages/security-token.scm46
-rw-r--r--gnu/packages/ssh.scm4
-rw-r--r--gnu/packages/statistics.scm16
-rw-r--r--gnu/packages/tls.scm2
-rw-r--r--gnu/packages/video.scm9
-rw-r--r--gnu/packages/vpn.scm4
-rw-r--r--gnu/packages/web-browsers.scm2
-rw-r--r--gnu/packages/web.scm15
-rw-r--r--gnu/services/cuirass.scm5
-rw-r--r--gnu/services/xorg.scm5
-rw-r--r--guix/scripts/build.scm15
45 files changed, 2297 insertions, 464 deletions
diff --git a/doc/guix-cookbook.texi b/doc/guix-cookbook.texi
index 66f94a0fe7..1b081a820e 100644
--- a/doc/guix-cookbook.texi
+++ b/doc/guix-cookbook.texi
@@ -58,6 +58,7 @@ Translation Project}.
 * Scheme tutorials::            Meet your new favorite language!
 * Packaging::                   Packaging tutorials
 * System Configuration::        Customizing the GNU System
+* Advanced package management:: Power to the users!
 
 * Acknowledgments::             Thanks!
 * GNU Free Documentation License::  The license of this document.
@@ -124,14 +125,14 @@ and @code{#f} stand for the booleans "true" and "false", respectively.
 
 Examples of valid expressions:
 
-@example scheme
+@lisp
 > "Hello World!"
 "Hello World!"
 > 17
 17
 > (display (string-append "Hello " "Guix" "\n"))
 "Hello Guix!"
-@end example
+@end lisp
 
 @item
 This last example is a function call nested in another function call.  When a
@@ -142,66 +143,66 @@ last evaluated expression as its return value.
 @item
 Anonymous functions are declared with the @code{lambda} term:
 
-@example scheme
+@lisp
 > (lambda (x) (* x x))
 #<procedure 120e348 at <unknown port>:24:0 (x)>
-@end example
+@end lisp
 
 The above procedure returns the square of its argument.  Since everything is
 an expression, the @code{lambda} expression returns an anonymous procedure,
 which can in turn be applied to an argument:
 
-@example scheme
+@lisp
 > ((lambda (x) (* x x)) 3)
 9
-@end example
+@end lisp
 
 @item
 Anything can be assigned a global name with @code{define}:
 
-@example scheme
+@lisp
 > (define a 3)
 > (define square (lambda (x) (* x x)))
 > (square a)
 9
-@end example
+@end lisp
 
 @item
 Procedures can be defined more concisely with the following syntax:
 
-@example scheme
+@lisp
 (define (square x) (* x x))
-@end example
+@end lisp
 
 @item
 A list structure can be created with the @code{list} procedure:
 
-@example scheme
+@lisp
 > (list 2 a 5 7)
 (2 3 5 7)
-@end example
+@end lisp
 
 @item
 The @emph{quote} disables evaluation of a parenthesized expression: the first
 term is not called over the other terms.  Thus it effectively returns a list
 of terms.
 
-@example scheme
+@lisp
 > '(display (string-append "Hello " "Guix" "\n"))
 (display (string-append "Hello " "Guix" "\n"))
 > '(2 a 5 7)
 (2 a 5 7)
-@end example
+@end lisp
 
 @item
 The @emph{quasiquote} disables evaluation of a parenthesized expression until
 a comma re-enables it.  Thus it provides us with fine-grained control over
 what is evaluated and what is not.
 
-@example scheme
+@lisp
 > `(2 a 5 7 (2 ,a 5 ,(+ a 4)))
 (2 a 5 7 (2 3 5 7))
-@end example
+@end lisp
 
 Note that the above result is a list of mixed elements: numbers, symbols (here
 @code{a}) and the last element is a list itself.
@@ -209,7 +210,7 @@ Note that the above result is a list of mixed elements: numbers, symbols (here
 @item
 Multiple variables can be named locally with @code{let}:
 
-@example scheme
+@lisp
 > (define x 10)
 > (let ((x 2)
         (y 3))
@@ -219,17 +220,17 @@ Multiple variables can be named locally with @code{let}:
 10
 > y
 ERROR: In procedure module-lookup: Unbound variable: y
-@end example
+@end lisp
 
 Use @code{let*} to allow later variable declarations to refer to earlier
 definitions.
 
-@example scheme
+@lisp
 > (let* ((x 2)
          (y (* x 3)))
     (list x y))
 (2 6)
-@end example
+@end lisp
 
 @item
 The keyword syntax is @code{#:}; it is used to create unique identifiers.
@@ -243,12 +244,12 @@ Scheme treats @code{%} exactly the same as any other letter.
 @item
 Modules are created with @code{define-module}.  For instance
 
-@example scheme
+@lisp
 (define-module (guix build-system ruby)
   #:use-module (guix store)
   #:export (ruby-build
             ruby-build-system))
-@end example
+@end lisp
 
 defines the module @code{guix build-system ruby} which must be located in
 @file{guix/build-system/ruby.scm} somewhere in the Guile load path.  It
@@ -342,7 +343,7 @@ install}).  Guix already provides a package definition which is a perfect
 example to start with.  You can look up its declaration with @code{guix edit
 hello} from the command line.  Let's see how it looks:
 
-@example scheme
+@lisp
 (define-public hello
   (package
     (name "hello")
@@ -362,7 +363,7 @@ serves as an example of standard GNU coding practices.  As such, it supports
 command-line arguments, multiple languages, and so on.")
     (home-page "https://www.gnu.org/software/hello/")
     (license gpl3+)))
-@end example
+@end lisp
 
 As you can see, most of it is rather straightforward.  But let's review the
 fields together:
@@ -422,7 +423,7 @@ setup later; for now we will go the simplest route.
 
 Save the following to a file @file{my-hello.scm}.
 
-@example scheme
+@lisp
 (use-modules (guix packages)
              (guix download)
              (guix build-system gnu)
@@ -446,7 +447,7 @@ serves as an example of standard GNU coding practices.  As such, it supports
 command-line arguments, multiple languages, and so on.")
   (home-page "https://www.gnu.org/software/hello/")
   (license gpl3+))
-@end example
+@end lisp
 
 We will explain the extra code in a moment.
 
@@ -563,7 +564,7 @@ nature of how the package definition is written.
 The @code{linux-libre} kernel package definition is actually a procedure which
 creates a package.
 
-@example scheme
+@lisp
 (define* (make-linux-libre version hash supported-systems
                            #:key
                            ;; A function that takes an arch and a variant.
@@ -574,19 +575,19 @@ creates a package.
                            (extra-options %default-extra-linux-options)
                            (patches (list %boot-logo-patch)))
   ...)
-@end example
+@end lisp
 
 The current @code{linux-libre} package is for the 5.1.x series, and is
 declared like this:
 
-@example scheme
+@lisp
 (define-public linux-libre
   (make-linux-libre %linux-libre-version
                     %linux-libre-hash
                     '("x86_64-linux" "i686-linux" "armhf-linux" "aarch64-linux")
                     #:patches %linux-libre-5.1-patches
                     #:configuration-file kernel-config))
-@end example
+@end lisp
 
 Any keys which are not assigned values inherit their default value from the
 @code{make-linux-libre} definition.  When comparing the two snippets above,
@@ -602,7 +603,7 @@ including an actual @file{.config} file as a native input to our custom
 kernel.  The following is a snippet from the custom @code{'configure} phase of
 the @code{make-linux-libre} package definition:
 
-@example scheme
+@lisp
 (let ((build  (assoc-ref %standard-phases 'build))
       (config (assoc-ref (or native-inputs inputs) "kconfig")))
 
@@ -613,13 +614,13 @@ the @code{make-linux-libre} package definition:
         (copy-file config ".config")
         (chmod ".config" #o666))
       (invoke "make" ,defconfig))
-@end example
+@end lisp
 
 Below is a sample kernel package.  The @code{linux-libre} package is nothing
 special and can be inherited from and have its fields overridden like any
 other package:
 
-@example scheme
+@lisp
 (define-public linux-libre/E2140
   (package
     (inherit linux-libre)
@@ -627,7 +628,7 @@ other package:
      `(("kconfig" ,(local-file "E2140.config"))
       ,@@(alist-delete "kconfig"
                       (package-native-inputs linux-libre))))))
-@end example
+@end lisp
 
 In the same directory as the file defining @code{linux-libre-E2140} is a file
 named @file{E2140.config}, which is an actual kernel configuration file.  The
@@ -640,7 +641,7 @@ The second way to create a custom kernel is to pass a new value to the
 @code{extra-options} keyword works with another function defined right below
 it:
 
-@example scheme
+@lisp
 (define %default-extra-linux-options
   `(;; https://lists.gnu.org/archive/html/guix-devel/2014-04/msg00039.html
    ("CONFIG_DEVPTS_MULTIPLE_INSTANCES" . #t)
@@ -666,11 +667,11 @@ it:
                        (string-append option "=n")))
                     options)
                "\n"))
-@end example
+@end lisp
 
 And in the custom configure script from the `make-linux-libre` package:
 
-@example scheme
+@lisp
 ;; Appending works even when the option wasn't in the
 ;; file.  The last one prevails if duplicated.
 (let ((port (open-file ".config" "a"))
@@ -679,13 +680,13 @@ And in the custom configure script from the `make-linux-libre` package:
   (close-port port))
 
 (invoke "make" "oldconfig"))))
-@end example
+@end lisp
 
 So by not providing a configuration-file the @file{.config} starts blank, and
 then we write into it the collection of flags that we want.  Here's another
 custom kernel:
 
-@example scheme
+@lisp
 (define %macbook41-full-config
   (append %macbook41-config-options
           %filesystems
@@ -702,7 +703,7 @@ custom kernel:
                       #:extra-version "macbook41"
                       #:patches (@@@@ (gnu packages linux) %linux-libre-5.1-patches)
                       #:extra-options %macbook41-config-options))
-@end example
+@end lisp
 
 In the above example @code{%filesystems} is a collection of flags enabling
 different filesystem support, @code{%efi-support} enables EFI support and
@@ -779,6 +780,394 @@ kernel, since certain modules which are expected to be built may not be
 available for inclusion into the initrd.
 
 @c *********************************************************************
+@node Advanced package management
+@chapter Advanced package management
+
+Guix is a functional package manager that offers many features beyond
+what more traditional package managers can do.  To the uninitiated,
+those features might not have obvious use cases at first.  The purpose
+of this chapter is to demonstrate some advanced package management
+concepts.
+
+@pxref{Package Management,,, guix, GNU Guix Reference Manual} for a complete
+reference.
+
+@menu
+* Guix Profiles in Practice::     Strategies for multiple profiles and manifests.
+@end menu
+
+@node Guix Profiles in Practice
+@section Guix Profiles in Practice
+
+Guix provides a very useful feature that may be quite foreign to newcomers:
+@emph{profiles}.  They are a way to group package installations together and all users
+on a same system are free to use as many profiles as they want.
+
+Whether you're a developer or not, you may find that multiple profiles bring you
+great power and flexibility.  While they shift the paradigm somewhat compared to
+@emph{traditional package managers}, they are very convenient to use once you've
+understood how to set them up.
+
+If you are familiar with Python's @samp{virtualenv}, you can think of a profile as a
+kind of universal @samp{virtualenv} that can hold any kind of software whatsoever, not
+just Python software.  Furthermore, profiles are self-sufficient: they capture
+all the runtime dependencies which guarantees that all programs within a profile
+will always work at any point in time.
+
+Multiple profiles have many benefits:
+
+@itemize
+@item
+Clean semantic separation of the various packages a user needs for different contexts.
+
+@item
+Multiple profiles can be made available into the environment either on login
+or within a dedicated shell.
+
+@item
+Profiles can be loaded on demand.  For instance, the user can use multiple
+shells, each of them running different profiles.
+
+@item
+Isolation: Programs from one profile will not use programs from the other, and
+they user can even install different versions of the same programs to the two
+profiles without conflict.
+
+@item
+Deduplication: Profiles share dependencies that happens to be the exact same.
+This makes multiple profiles storage-efficient.
+
+@item
+Reproducible: when used with declarative manifests, a profile can be fully
+specified by the Guix commit that was active when it was set up.  This means
+that the exact same profile can be @uref{https://guix.gnu.org/blog/2018/multi-dimensional-transactions-and-rollbacks-oh-my/, set up anywhere, anytime}, with just the
+commit information.  See the section on @ref{Reproducible profiles}.
+
+@item
+Easier upgrades and maintenance: Multiple profiles make it easy to keep
+package listings at hand and make upgrades completely friction-less.
+@end itemize
+
+Concretely, here follows some typical profiles:
+
+@itemize
+@item
+The dependencies of a project you are working on.
+
+@item
+Your favourite programming language libraries.
+
+@item
+Laptop-specific programs (like @samp{powertop}) that you don't need on a desktop.
+
+@item
+@TeX{}live (this one can be really useful when you need to install just one
+package for this one document you've just received over email).
+
+@item
+Games.
+@end itemize
+
+Let's dive in the set up!
+
+@node Basic setup with manifests
+@subsection Basic setup with manifests
+
+A Guix profile can be set up @emph{via} a so-called @emph{manifest specification} that looks like
+this:
+
+@lisp
+(specifications->manifest
+  '("package-1"
+    ;; Version 1.3 of package-2.
+    "package-2@@1.3"
+    ;; The "lib" output of package-3.
+    "package-3:lib"
+    ; ...
+    "package-N"))
+@end lisp
+
+@pxref{Invoking guix package,,, guix, GNU Guix Reference Manual}, for
+the syntax details.
+
+We can create a manifest specification per profile and install them this way:
+
+@example
+GUIX_EXTRA_PROFILES=$HOME/.guix-extra-profiles
+mkdir -p "$GUIX_EXTRA_PROFILES"/my-project # if it does not exist yet
+guix package --manifest=/path/to/guix-my-project-manifest.scm --profile="$GUIX_EXTRA_PROFILES"/my-project/my-project
+@end example
+
+Here we set an arbitrary variable @samp{GUIX_EXTRA_PROFILES} to point to the directory
+where we will store our profiles in the rest of this article.
+
+Placing all your profiles in a single directory, with each profile getting its
+own sub-directory, is somewhat cleaner.  This way, each sub-directory will
+contain all the symlinks for precisely one profile.  Besides, "looping over
+profiles" becomes obvious from any programming language (e.g. a shell script) by
+simply looping over the sub-directories of @samp{$GUIX_EXTRA_PROFILES}.
+
+Note that it's also possible to loop over the output of
+
+@example
+guix package --list-profiles
+@end example
+
+although you'll probably have to filter out @samp{~/.config/guix/current}.
+
+To enable all profiles on login, add this to your @samp{~/.bash_profile} (or similar):
+
+@example
+for i in $GUIX_EXTRA_PROFILES/*; do
+  profile=$i/$(basename "$i")
+  if [ -f "$profile"/etc/profile ]; then
+    GUIX_PROFILE="$profile"
+    . "$GUIX_PROFILE"/etc/profile
+  fi
+  unset profile
+done
+@end example
+
+Note to Guix System users: the above reflects how your default profile
+@samp{~/.guix-profile} is activated from @samp{/etc/profile}, that latter being loaded by
+@samp{~/.bashrc} by default.
+
+You can obviously choose to only enable a subset of them:
+
+@example
+for i in "$GUIX_EXTRA_PROFILES"/my-project-1 "$GUIX_EXTRA_PROFILES"/my-project-2; do
+  profile=$i/$(basename "$i")
+  if [ -f "$profile"/etc/profile ]; then
+    GUIX_PROFILE="$profile"
+    . "$GUIX_PROFILE"/etc/profile
+  fi
+  unset profile
+done
+@end example
+
+When a profile is off, it's straightforward to enable it for an individual shell
+without "polluting" the rest of the user session:
+
+@example
+GUIX_PROFILE="path/to/my-project" ; . "$GUIX_PROFILE"/etc/profile
+@end example
+
+The key to enabling a profile is to @emph{source} its @samp{etc/profile} file.  This file
+contains shell code that exports the right environment variables necessary to
+activate the software contained in the profile.  It is built automatically by
+Guix and meant to be sourced.
+It contains the same variables you would get if you ran:
+
+@example
+guix package --search-paths=prefix --profile=$my_profile"
+@end example
+
+Once again, see (@pxref{Invoking guix package,,, guix, GNU Guix Reference Manual})
+for the command line options.
+
+To upgrade a profile, simply install the manifest again:
+
+@example
+guix package -m /path/to/guix-my-project-manifest.scm -p "$GUIX_EXTRA_PROFILES"/my-project/my-project
+@end example
+
+To upgrade all profiles, it's easy enough to loop over them.  For instance,
+assuming your manifest specifications are stored in
+@samp{~/.guix-manifests/guix-$profile-manifest.scm}, with @samp{$profile} being the name
+of the profile (e.g. "project1"), you could do the following in Bourne shell:
+
+@example
+for profile in "$GUIX_EXTRA_PROFILES"/*; do
+  guix package --profile="$profile" --manifest="$HOME/.guix-manifests/guix-$profile-manifest.scm"
+done
+@end example
+
+Each profile has its own generations:
+
+@example
+guix package -p "$GUIX_EXTRA_PROFILES"/my-project/my-project --list-generations
+@end example
+
+You can roll-back to any generation of a given profile:
+
+@example
+guix package -p "$GUIX_EXTRA_PROFILES"/my-project/my-project --switch-generations=17
+@end example
+
+@node Required packages
+@subsection Required packages
+
+Activating a profile essentially boils down to exporting a bunch of
+environmental variables.  This is the role of the @samp{etc/profile} within the
+profile.
+
+@emph{Note: Only the environmental variables of the packages that consume them will
+be set.}
+
+For instance, @samp{MANPATH} won't be set if there is no consumer application for man
+pages within the profile.  So if you need to transparently access man pages once
+the profile is loaded, you've got two options:
+
+@itemize
+@item
+Either export the variable manually, e.g.
+@example
+export MANPATH=/path/to/profile$@{MANPATH:+:@}$MANPATH"
+@end example
+
+@item
+Or include @samp{man-db} to the profile manifest.
+@end itemize
+
+The same is true for @samp{INFOPATH} (you can install @samp{info-reader}),
+@samp{PKG_CONFIG_PATH} (install @samp{pkg-config}), etc.
+
+@node Default profile
+@subsection Default profile
+
+What about the default profile that Guix keeps in @samp{~/.guix-profile}?
+
+You can assign it the role you want.  Typically you would install the manifest
+of the packages you want to use all the time.
+
+Alternatively, you could keep it "manifest-less" for throw-away packages
+that you would just use for a couple of days.
+This way makes it convenient to run
+
+@example
+guix install package-foo
+guix upgrade package-bar
+@end example
+
+without having to specify the path to a profile.
+
+@node The benefits of manifests
+@subsection The benefits of manifests
+
+Manifests are a convenient way to keep your package lists around and, say,
+to synchronize them across multiple machines using a version control system.
+
+A common complaint about manifests is that they can be slow to install when they
+contain large number of packages.  This is especially cumbersome when you just
+want get an upgrade for one package within a big manifest.
+
+This is one more reason to use multiple profiles, which happen to be just
+perfect to break down manifests into multiple sets of semantically connected
+packages.  Using multiple, small profiles provides more flexibility and
+usability.
+
+Manifests come with multiple benefits.  In particular, they ease maintenance:
+
+@itemize
+@item
+When a profile is set up from a manifest, the manifest itself is
+self-sufficient to keep a "package listing" around and reinstall the profile
+later or on a different system.  For ad-hoc profiles, we would need to
+generate a manifest specification manually and maintain the package versions
+for the packages that don't use the default version.
+
+@item
+@code{guix package --upgrade} always tries to update the packages that have
+propagated inputs, even if there is nothing to do.  Guix manifests remove this
+problem.
+
+@item
+When partially upgrading a profile, conflicts may arise (due to diverging
+dependencies between the updated and the non-updated packages) and they can be
+annoying to resolve manually.  Manifests remove this problem altogether since
+all packages are always upgraded at once.
+
+@item
+As mentioned above, manifests allow for reproducible profiles, while the
+imperative @code{guix install}, @code{guix upgrade}, etc. do not, since they produce
+different profiles every time even when they hold the same packages.  See
+@uref{https://issues.guix.gnu.org/issue/33285, the related discussion on the matter}.
+
+@item
+Manifest specifications are usable by other @samp{guix} commands.  For example, you
+can run @code{guix weather -m manifest.scm} to see how many substitutes are
+available, which can help you decide whether you want to try upgrading today
+or wait a while.  Another example: you can run @code{guix pack -m manifest.scm} to
+create a pack containing all the packages in the manifest (and their
+transitive references).
+
+@item
+Finally, manifests have a Scheme representation, the @samp{<manifest>} record type.
+They can be manipulated in Scheme and passed to the various Guix @uref{https://en.wikipedia.org/wiki/Api, APIs}.
+@end itemize
+
+It's important to understand that while manifests can be used to declare
+profiles, they are not strictly equivalent: profiles have the side effect that
+they "pin" packages in the store, which prevents them from being
+garbage-collected (@pxref{Invoking guix gc,,, guix, GNU Guix Reference Manual})
+and ensures that they will still be available at any point in
+the future.
+
+Let's take an example:
+
+@enumerate
+@item
+We have an environment for hacking on a project for which there isn't a Guix
+package yet.  We build the environment using a manifest, and then run @code{guix
+   environment -m manifest.scm}.  So far so good.
+
+@item
+Many weeks pass and we have run a couple of @code{guix pull} in the mean time.
+Maybe a dependency from our manifest has been updated; or we may have run
+@code{guix gc} and some packages needed by our manifest have been
+garbage-collected.
+
+@item
+Eventually, we set to work on that project again, so we run @code{guix environment
+   -m manifest.scm}.  But now we have to wait for Guix to build and install
+stuff!
+@end enumerate
+
+Ideally, we could spare the rebuild time.  And indeed we can, all we need is to
+install the manifest to a profile and use @code{GUIX_PROFILE=/the/profile;
+. "$GUIX_PROFILE"/etc/profile} as explained above: this guarantees that our
+hacking environment will be available at all times.
+
+@emph{Security warning:} While keeping old profiles around can be convenient, keep in
+mind that outdated packages may not have received the latest security fixes.
+
+@node Reproducible profiles
+@subsection Reproducible profiles
+
+To reproduce a profile bit-for-bit, we need two pieces of information:
+
+@itemize
+@item
+a manifest,
+@item
+a Guix channel specification.
+@end itemize
+
+Indeed, manifests alone might not be enough: different Guix versions (or
+different channels) can produce different outputs for a given manifest.
+
+You can output the Guix channel specification with @samp{guix describe
+--format=channels}.
+Save this to a file, say @samp{channel-specs.scm}.
+
+On another computer, you can use the channel specification file and the manifest
+to reproduce the exact same profile:
+
+@example
+GUIX_EXTRA_PROFILES=$HOME/.guix-extra-profiles
+GUIX_EXTRA=$HOME/.guix-extra
+
+mkdir "$GUIX_EXTRA"/my-project
+guix pull --channels=channel-specs.scm --profile "$GUIX_EXTRA/my-project/guix"
+
+mkdir -p "$GUIX_EXTRA_PROFILES/my-project"
+"$GUIX_EXTRA"/my-project/guix/bin/guix package --manifest=/path/to/guix-my-project-manifest.scm --profile="$GUIX_EXTRA_PROFILES"/my-project/my-project
+@end example
+
+It's safe to delete the Guix channel profile you've just installed with the
+channel specification, the project profile does not depend on it.
+
+@c *********************************************************************
 @node Acknowledgments
 @chapter Acknowledgments
 
diff --git a/doc/guix.texi b/doc/guix.texi
index 746561ed97..a934626e5a 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -13988,6 +13988,9 @@ When @code{auto-login?} is false, GDM presents a log-in screen.
 When @code{auto-login?} is true, GDM logs in directly as
 @code{default-user}.
 
+@item @code{debug?} (default: @code{#f})
+When true, GDM writes debug messages to its log.
+
 @item @code{gnome-shell-assets} (default: ...)
 List of GNOME Shell assets needed by GDM: icon theme, fonts, etc.
 
diff --git a/gnu/local.mk b/gnu/local.mk
index c6ddbf4e99..683bcc5f45 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -769,7 +769,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/cursynth-wave-rand.patch			\
   %D%/packages/patches/cvs-CVE-2017-12836.patch		\
   %D%/packages/patches/darkice-workaround-fpermissive-error.patch	\
-  %D%/packages/patches/dav1d-aarch64-symbol-alignment.patch	\
   %D%/packages/patches/dbus-helper-search-path.patch		\
   %D%/packages/patches/dbus-c++-gcc-compat.patch		\
   %D%/packages/patches/dbus-c++-threading-mutex.patch		\
@@ -976,6 +975,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/hplip-remove-imageprocessor.patch	\
   %D%/packages/patches/hydra-disable-darcs-test.patch		\
   %D%/packages/patches/icecat-makeicecat.patch			\
+  %D%/packages/patches/icecat-default-search-ddg.patch		\
+  %D%/packages/patches/icecat-disable-sync.patch		\
   %D%/packages/patches/icecat-avoid-bundled-libraries.patch	\
   %D%/packages/patches/icecat-use-system-graphite2+harfbuzz.patch	\
   %D%/packages/patches/icecat-use-system-media-libs.patch	\
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index 02058b24ac..828a0fc748 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -344,7 +344,7 @@ precision.")
 (define-public giac
   (package
     (name "giac")
-    (version "1.5.0-65")
+    (version "1.5.0-69")
     (source (origin
               (method url-fetch)
               ;; "~parisse/giac" is not used because the maintainer regularly
@@ -356,7 +356,7 @@ precision.")
                                   "source/giac_" version ".tar.gz"))
               (sha256
                (base32
-                "1g2fp9vgy0gqjmi6mlc3ldfn8ryq3h4mfd7rcq5hs6ry21hblv30"))))
+                "05l1qa2kfmvsbp0iqjmg3ixkcqa3h9ry1mjpcps52bxw05s3k1z9"))))
     (build-system gnu-build-system)
     (arguments
      `(#:modules ((ice-9 ftw)
diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm
index 43712d4bcf..416186409c 100644
--- a/gnu/packages/bittorrent.scm
+++ b/gnu/packages/bittorrent.scm
@@ -416,7 +416,7 @@ desktops.")
 (define-public qbittorrent
   (package
     (name "qbittorrent")
-    (version "4.1.6")
+    (version "4.1.8")
     (source
      (origin
        (method git-fetch)
@@ -425,7 +425,7 @@ desktops.")
              (commit (string-append "release-" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1y9kv84sy5fg64wbl4xpm8qh0hjba7ibk045cazp0m736rjmxk8c"))))
+        (base32 "1mx59mazfmd5yaqdgb6cm8hr5sbp2xgzz3y3yipq1fwq85dj3r5w"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index 1f2c694246..ef4ce022e4 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -671,7 +671,7 @@ information is written to standard error.")
 (define-public asunder
   (package
     (name "asunder")
-    (version "2.9.3")
+    (version "2.9.5")
     (source (origin
               (method url-fetch)
               (uri
@@ -680,7 +680,7 @@ information is written to standard error.")
                               ".tar.bz2"))
               (sha256
                (base32
-                "1630i1df06y840v3fgdf75jxw1s8kwbfn5bhi0686viah0scccw5"))))
+                "069x6az2r3wlb2hd07iz0hxpxwknw7s9h7pyhnkmzv1pw9ci3kk4"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      '(#:out-of-source? #f
diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm
index f9dae5fd66..964980ef88 100644
--- a/gnu/packages/ci.scm
+++ b/gnu/packages/ci.scm
@@ -68,6 +68,8 @@
                     (ice-9 rdelim)
                     (ice-9 popen))
 
+         #:configure-flags '("--localstatedir=/var") ;for /var/log/cuirass
+
          #:phases
          (modify-phases %standard-phases
            (add-after 'unpack 'disable-repo-tests
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index d3d6f7f4f0..fc5d40186c 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -2786,14 +2786,14 @@ Delaunay triangulation and convex hull computation.")
 (define-public r-ddalpha
   (package
     (name "r-ddalpha")
-    (version "1.3.9")
+    (version "1.3.10")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ddalpha" version))
        (sha256
         (base32
-         "1vzs0cvl6xw3h9i00rg3hs02xwgxcnh8326y10kxmhs3qq4m7nb2"))))
+         "1064g7y8d7kmvd5kjc2m48yvidmh2ci1y0xgil3pcx4ix6mf0ljz"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-bh" ,r-bh)
@@ -3163,14 +3163,14 @@ Laplace approximation and adaptive Gauss-Hermite quadrature.")
 (define-public r-jomo
   (package
     (name "r-jomo")
-    (version "2.6-9")
+    (version "2.6-10")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "jomo" version))
        (sha256
         (base32
-         "16ychdhhv8cii8zrdfdf5gzgnvmfaq573bmi00xqdf323q3lf3xr"))))
+         "1k9l4290g350zbw1pjs871q9bxj3j2h1dilxpp06v4wy4n7d8qs0"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-lme4" ,r-lme4)
@@ -6527,25 +6527,51 @@ comparisons to Cohen's d are offered based on Huberty & Lowman's Percentage of
 Group (Non-)Overlap considerations.")
     (license license:gpl2)))
 
+(define-public r-deriv
+  (package
+    (name "r-deriv")
+    (version "3.9.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "Deriv" version))
+       (sha256
+        (base32
+         "0hlqm216bg3l79gq6m0am0xz6vd3l2hgjnjm6lym3mkmgkka4kxw"))))
+    (properties `((upstream-name . "Deriv")))
+    (build-system r-build-system)
+    (home-page "https://cran.r-project.org/web/packages/Deriv")
+    (synopsis "Symbolic differentiation")
+    (description
+     "This package provides an R-based solution for symbolic differentiation.
+It admits user-defined functions as well as function substitution in arguments
+of functions to be differentiated.  Some symbolic simplification is part of
+the work.")
+    (license license:gpl3+)))
+
 (define-public r-doby
   (package
     (name "r-doby")
-    (version "4.6-2")
+    (version "4.6-3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "doBy" version))
        (sha256
         (base32
-         "02vbv9nfgywg6lsiialkmfnax5z3rkyb9nr8j9l2cp8xi6ml95mb"))))
+         "1d0d6pwai1g4i5jls0jm9va29ci5hy92n5957608f3fzi1jwy635"))))
     (properties `((upstream-name . "doBy")))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-dplyr" ,r-dplyr)
+     `(("r-broom" ,r-broom)
+       ("r-deriv" ,r-deriv)
+       ("r-dplyr" ,r-dplyr)
        ("r-magrittr" ,r-magrittr)
        ("r-mass" ,r-mass)
        ("r-matrix" ,r-matrix)
-       ("r-plyr" ,r-plyr)))
+       ("r-plyr" ,r-plyr)
+       ("r-pbkrtest" ,r-pbkrtest)
+       ("r-tibble" ,r-tibble)))
     (home-page "http://people.math.aau.dk/~sorenh/software/doBy/")
     (synopsis "Groupwise statistics, LSmeans, linear contrasts, and utilities")
     (description
@@ -6717,13 +6743,13 @@ the analyzed items.")
 (define-public r-slam
   (package
     (name "r-slam")
-    (version "0.1-45")
+    (version "0.1-46")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "slam" version))
        (sha256
-        (base32 "0xvj8va6xd7zkn3l4a5ad7v62s7xmkz8frq7gpcl3b6vqwckkaw4"))))
+        (base32 "1ihhbx76miwys35gsbhijriadvrw4f51lc3v45pnn6cvcfd9hr0b"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/slam/")
     (synopsis "Sparse lightweight arrays and matrices")
@@ -7964,14 +7990,14 @@ Hothorn, Westfall, 2010, CRC Press).")
 (define-public r-emmeans
   (package
     (name "r-emmeans")
-    (version "1.4.1")
+    (version "1.4.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "emmeans" version))
        (sha256
         (base32
-         "1fpawaxnmj67md169a9mzrnnh2d0c973xydfg6hw865933jil9lq"))))
+         "1sxwbh6sym2shrj7gva8q96ca2csqz3081q4d84avpxz15dfz1z1"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-estimability" ,r-estimability)
@@ -8197,14 +8223,14 @@ differentiation.")
 (define-public r-bayestestr
   (package
     (name "r-bayestestr")
-    (version "0.3.0")
+    (version "0.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "bayestestR" version))
        (sha256
         (base32
-         "0r453zb106hj9w53jjgckxqajjf7shlrgv10gjxsv8if6qybdz5b"))))
+         "1d3f50rzjzgzclwd6j887dssyhv7hdq7pik9nnlr3w775v3f69zc"))))
     (properties `((upstream-name . "bayestestR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -8222,14 +8248,14 @@ ROPE percentage and pd).")
 (define-public r-performance
   (package
     (name "r-performance")
-    (version "0.3.0")
+    (version "0.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "performance" version))
        (sha256
         (base32
-         "13j74ffhx950kacs86ixx84nviq9qlwzr7hjnhkmzw2hspjxq99w"))))
+         "0lxpmp9smn5r3xvfik36nr608wcpmmximjh0v2sckyvjf7hnb4s0"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-bayestestr" ,r-bayestestr)
@@ -8968,14 +8994,14 @@ other values.")
 (define-public r-ncdf4
   (package
     (name "r-ncdf4")
-    (version "1.16.1")
+    (version "1.17")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ncdf4" version))
        (sha256
         (base32
-         "083sb24anyd4sw0il3x07pqn9rbx5y5ayqass6mz8x443rnjvphd"))))
+         "1xls44ln2zjrrlimxl8v4bk2ni3g45c9j0gxdnjx31rikmrc95fv"))))
     (build-system r-build-system)
     (inputs
      `(("netcdf" ,netcdf)
@@ -8995,14 +9021,14 @@ netCDF files.")
 (define-public r-biocmanager
   (package
     (name "r-biocmanager")
-    (version "1.30.8")
+    (version "1.30.9")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "BiocManager" version))
        (sha256
         (base32
-         "0pqgb7j4aqpcp3bapl313rmyxxj3j96s9csip4f65444gjy5r2x2"))))
+         "1l9b2mr99nhpvk1wkd93397i0d6z4vvbq3zm8dk86gb1pfci26sx"))))
     (properties `((upstream-name . "BiocManager")))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/BiocManager/")
@@ -10853,14 +10879,14 @@ This makes it a convenient and fast interface to C/C++ and Fortran code.")
 (define-public r-spam
   (package
     (name "r-spam")
-    (version "2.3-0")
+    (version "2.3-0.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "spam" version))
        (sha256
         (base32
-         "194n5mgvyms9ckjqixl3h33apii8h9kqspqg2si9k741k578qb3w"))))
+         "0mas2ra7d5f9ccwxwsvxls3dz53prpf59hi2a0rvc347wbm6540b"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-dotcall64" ,r-dotcall64)))
@@ -11709,18 +11735,17 @@ users of rARPACK are advised to switch to the RSpectra package.")
 (define-public r-compositions
   (package
     (name "r-compositions")
-    (version "1.40-2")
+    (version "1.40-3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "compositions" version))
        (sha256
         (base32
-         "12mp05yi7jkdqg9iwh6bc9sx6sdxagcnrirznxy9hq8502p7238i"))))
+         "103hbmibrf1n333pn4xpll1gqqsv4szms0n5gdq7zak31aar0bg4"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-bayesm" ,r-bayesm)
-       ("r-energy" ,r-energy)
        ("r-robustbase" ,r-robustbase)
        ("r-tensora" ,r-tensora)))
     (home-page "http://www.stat.boogaart.de/compositions")
@@ -12529,21 +12554,43 @@ The bedr package's API enhances access to these tools as well as offers
 additional utilities for genomic regions processing.")
     (license license:gpl2)))
 
+(define-public r-sets
+  (package
+    (name "r-sets")
+    (version "1.0-18")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "sets" version))
+       (sha256
+        (base32
+         "16v7650p47khqrbbw0z98llmwmmhswqmhri0n7nrfhdqwmby1lbl"))))
+    (properties `((upstream-name . "sets")))
+    (build-system r-build-system)
+    (home-page "https://cran.r-project.org/web/packages/sets")
+    (synopsis "Sets, generalized sets, customizable sets and intervals")
+    (description
+     "This package provides data structures and basic operations for ordinary
+sets, generalizations such as fuzzy sets, multisets, and fuzzy multisets,
+customizable sets, and intervals.")
+    (license license:gpl2)))
+
 (define-public r-partitions
   (package
     (name "r-partitions")
-    (version "1.9-19")
+    (version "1.9-22")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "partitions" version))
        (sha256
         (base32
-         "1pklfnjdc094c8nzkqcdvqzdh8v3p5n8jbg4pf9678iw648saiyx"))))
+         "1qqy4df28wy4q0g572azrj171jlhvrnzbh7x0wr2g7v6gr20y0ns"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-gmp" ,r-gmp)
-       ("r-polynom" ,r-polynom)))
+       ("r-polynom" ,r-polynom)
+       ("r-sets" ,r-sets)))
     (home-page "https://cran.r-project.org/web/packages/partitions")
     (synopsis "Additive partitions of integers")
     (description
@@ -14066,14 +14113,14 @@ discriminant analysis for the purpose of classifying high dimensional data.")
 (define-public r-ggvis
   (package
     (name "r-ggvis")
-    (version "0.4.4")
+    (version "0.4.5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ggvis" version))
        (sha256
         (base32
-         "1bxggjr2313kfy895j0fvrv4bg7yh2z87907lk48i1kn5c9flchk"))))
+         "091i9f17912j8qcyxppjgwzjnyqj7769ixs9d2gjg6f2clskqdw2"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-assertthat" ,r-assertthat)
@@ -14746,14 +14793,14 @@ engine (Salmon et al., 2011) as provided by the package @code{sitmo}.")
 (define-public r-dalex
   (package
     (name "r-dalex")
-    (version "0.4.7")
+    (version "0.4.9")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "DALEX" version))
        (sha256
         (base32
-         "0iiwkf0pfdb90lf1xhv43qd32z3cjmkmf0ly9841n5lldkjazy3h"))))
+         "1zviaf7530v8w996lbma0vplabrapgwldi7h70pr0439sxaqd421"))))
     (properties `((upstream-name . "DALEX")))
     (build-system r-build-system)
     (propagated-inputs `(("r-ggplot2" ,r-ggplot2)))
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index 8421682924..08ce9eb2d7 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -713,7 +713,7 @@ to create devices with respective mappings for the ATARAID sets discovered.")
 (define-public libblockdev
   (package
     (name "libblockdev")
-    (version "2.21")
+    (version "2.23")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/storaged-project/"
@@ -721,7 +721,7 @@ to create devices with respective mappings for the ATARAID sets discovered.")
                                   version "-1/libblockdev-" version ".tar.gz"))
               (sha256
                (base32
-                "02p13l4194j0vyd2zs7bb9dmyclcpqq8l3qv9289vjfbsvq2awii"))))
+                "15c7g2gbkahmy8c6677pvbvblan5h8jxcqqmn6nlvqwqynq2mkjm"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 2a77abd505..e14151bffb 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -1511,7 +1511,7 @@ links.")
 (define-public emacs-ag
   (package
     (name "emacs-ag")
-    (version "0.47")
+    (version "0.48")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1520,7 +1520,7 @@ links.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "15kp99vwyi7hb1jkq3lwvqzw3v62ycixsq6y4pd1x0nn2v5p5m5r"))))
+                "1p918y24vcn2pdliaymd210xp9fvhd4a1srqbv2lfiqrh59yjidx"))))
     (build-system emacs-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 8095d3c44d..604214ecbd 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -1053,7 +1053,7 @@ emulation community.  It provides highly accurate emulation.")
 (define-public retroarch
   (package
     (name "retroarch")
-    (version "1.7.8.4")
+    (version "1.7.9.2")
     (source
      (origin
        (method git-fetch)
@@ -1062,7 +1062,7 @@ emulation community.  It provides highly accurate emulation.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1i3i23xwvmck8k2fpalr49np7xjzfg507243mybqrljawlnbxvph"))))
+        (base32 "14kay5g9rnm79mly7b4x5jwkidjaki8qqkpf21hnj1r2z1q7bp5b"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 3aa88337c8..8f539939d1 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -464,7 +464,7 @@ with localed.  This package is extracted from the broader systemd package.")
 (define-public packagekit
   (package
     (name "packagekit")
-    (version "1.1.11")
+    (version "1.1.12")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -473,7 +473,7 @@ with localed.  This package is extracted from the broader systemd package.")
                    "PackageKit-" version ".tar.xz"))
              (sha256
               (base32
-               "0fi6wn54y03zh5sn92nmmxkh4cd8yn44cyk0l8phw60ivfwmkh1q"))))
+               "00css16dv3asaxrklvyxy9dyjzhw82wmfrqxqpca9w2xryz58i8z"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index a5b8ee9dd4..3e85449fac 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -5158,7 +5158,7 @@ Crowther & Woods, its original authors, in 1995.  It has been known as
 (define-public tome4
   (package
     (name "tome4")
-    (version "1.5.10")
+    (version "1.6.0")
     (synopsis "Single-player, RPG roguelike game set in the world of Eyal")
     (source
      (origin
@@ -5167,7 +5167,7 @@ Crowther & Woods, its original authors, in 1995.  It has been known as
                            version ".tar.bz2"))
        (sha256
         (base32
-         "0mc5dgh2x9nbili7gy6srjhb23ckalf08wqq2amyjr5rq392jvd7"))
+         "1z1w4ycgl5wbm0sv7577vcdfwwf4k7vaf2njzyb21rvqjizpbkwr"))
        (modules '((guix build utils)))
        (snippet
         '(begin
diff --git a/gnu/packages/gettext.scm b/gnu/packages/gettext.scm
index 245fdc9ec0..202acf25d4 100644
--- a/gnu/packages/gettext.scm
+++ b/gnu/packages/gettext.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2017, 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Miguel <rosen644835@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -179,14 +179,14 @@ color, font attributes (weight, posture), or underlining.")
 (define-public po4a
   (package
     (name "po4a")
-    (version "0.56")
+    (version "0.57")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/mquinson/po4a/releases/download/v"
                                   version "/po4a-" version ".tar.gz"))
               (sha256
                (base32
-                "0kyhww0yw4q0m4vj8vil2wsf6sn4hidh8mqz2gjrq7gpdf83cmnr"))))
+                "15yd27krlpdvjhcnwys6i5k1ww62ifq2yx8k1zxyxiwy84myqmdv"))))
     (build-system perl-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 870c4be4ab..12993eadef 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -3023,15 +3023,14 @@ keyboard shortcuts.")
 (define-public colord
   (package
     (name "colord")
-    (version "1.4.3")
+    (version "1.4.4")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.freedesktop.org/software/colord/releases/"
-                           name "-" version ".tar.xz"))
+                           "colord-" version ".tar.xz"))
        (sha256
-        (base32
-         "1xwxahg9mgmapc16xkb4kgmc40zpadrwav33xqmn6cgaw6g6d3ls"))))
+        (base32 "19f0938fr7nvvm3jr263dlknaq7md40zrac2npfyz25zc00yh3ws"))))
     (build-system meson-build-system)
     (arguments
      '(;; FIXME: One test fails:
@@ -3046,13 +3045,12 @@ keyboard shortcuts.")
                                ;; Wants to install to global completion dir;
                                ;; punt.
                                "-Dbash_completion=false"
-                               ;; colord-gtk not packaged yet.
-                               "-Dsession_example=false"
                                "-Ddaemon_user=colord"
                                "-Dsane=true"
-                               ;; Requires spotread
+                               "-Dvapi=true"
+                               ;; Requires spotread.
                                "-Dargyllcms_sensor=false"
-                               ;; TODO: Requires docbook2x
+                               ;; TODO: Requires docbook2x.
                                "-Dman=false")
        #:phases
        (modify-phases %standard-phases
@@ -3063,25 +3061,26 @@ keyboard shortcuts.")
                 (string-append "'" (assoc-ref outputs "out") "/lib/udev'")))
              #t)))))
     (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("glib:bin" ,glib "bin") ; for glib-compile-resources, etc.
+     `(("glib:bin" ,glib "bin")         ; for glib-compile-resources, etc.
        ("gobject-introspection" ,gobject-introspection)
        ("gtk-doc" ,gtk-doc)
+       ("intltool" ,intltool)
        ("libtool" ,libtool)
-       ("intltool" ,intltool)))
+       ("pkg-config" ,pkg-config)
+       ("vala" ,vala)))
     (propagated-inputs
      ;; colord.pc refers to all these.
      `(("glib" ,glib)
-       ("udev" ,eudev)
-       ("lcms" ,lcms)))
+       ("lcms" ,lcms)
+       ("udev" ,eudev)))
     (inputs
      `(("dbus-glib" ,dbus-glib)
        ("gusb" ,gusb)
        ("libgudev" ,libgudev)
        ("libusb" ,libusb)
-       ("sqlite" ,sqlite)
        ("polkit" ,polkit)
        ("python" ,python-wrapper)
+       ("sqlite" ,sqlite)
        ("sane-backends" ,sane-backends)))
     (home-page "https://www.freedesktop.org/software/colord/")
     (synopsis "Color management service")
@@ -4325,54 +4324,41 @@ USB transfers with your high-level application or system daemon.")
 (define-public simple-scan
   (package
     (name "simple-scan")
-    (version "3.24.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://launchpad.net/simple-scan/"
-                                  (version-major+minor version) "/"
-                                  version "/+download/simple-scan-"
-                                  version ".tar.xz"))
-              (sha256
-               (base32
-                "1czg21cdbd2fgqylxfnzfhhzy69gycf816d5bbaq6hb62hmq7bjy"))))
-    (build-system glib-or-gtk-build-system)
+    (version "3.34.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://gnome/sources/simple-scan/"
+                           (version-major+minor version) "/"
+                           "simple-scan-" version ".tar.xz"))
+       (sha256
+        (base32 "0glzskxdc7p9z7nwcakqc7qzij4l79adlvvb2cj5fmis731zw9yq"))))
+    (build-system meson-build-system)
+    ;; TODO: Fix icons in home screen, About dialogue, and scan menu.
+    (arguments
+     '(#:glib-or-gtk? #t))
     (inputs
      `(("gtk" ,gtk+)
        ("zlib" ,zlib)
        ("cairo" ,cairo)
+       ("colord" ,colord)
        ("gdk-pixbuf" ,gdk-pixbuf)
        ("gusb" ,gusb)
        ("libsane" ,sane-backends)))
     (native-inputs
      `(("gettext" ,gettext-minimal)
        ("itstool" ,itstool)
-       ("colord" ,colord)
-       ("glib" ,glib "bin")                       ; glib-compile-schemas, etc.
+       ("glib" ,glib "bin")             ; glib-compile-schemas, etc.
        ("pkg-config" ,pkg-config)
        ("vala" ,vala)
        ("xmllint" ,libxml2)))
-    (arguments
-     '(#:configure-flags '("--disable-packagekit")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'clean
-                    (lambda _
-                      ;; Remove a left-over reference to PackageKit.
-
-                      ;; https://bugs.launchpad.net/simple-scan/+bug/1462769
-
-                      ;; There are some generated C files erroneously
-                      ;; included in the source distribution, and this
-                      ;; one breaks the build by referring to a
-                      ;; non-existent header (packagekit.h)
-                      (delete-file "src/ui.c"))))))
     (home-page "https://gitlab.gnome.org/GNOME/simple-scan")
     (synopsis "Document and image scanner")
-    (description "Simple Scan is an easy-to-use application, designed to let
-users connect their scanner and quickly have the image/document in an
-appropriate format.  Simple Scan is basically a frontend for SANE - which is
-the same backend as XSANE uses. This means that all existing scanners will
-work and the interface is well tested.")
+    (description
+     "Document Scanner is an easy-to-use application that lets you connect your
+scanner and quickly capture images and documents in an appropriate format.  It
+supports any scanner for which a suitable SANE driver is available, which is
+almost all of them.")
     (license license:gpl3+)))
 
 (define-public eolie
@@ -7823,8 +7809,10 @@ views can be printed as PDF or PostScript files, or exported to HTML.")
                (wrap-program (string-append out "/bin/lollypop")
                  `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
              #t))
-         (add-after 'install 'wrap
-           (@@ (guix build python-build-system) wrap)))))
+         (add-after 'install 'wrap-python
+           (@@ (guix build python-build-system) wrap))
+         (add-after 'install 'wrap-glib-or-gtk
+           (@@ (guix build glib-or-gtk-build-system) wrap-all-programs)))))
     (native-inputs
      `(("intltool" ,intltool)
        ("itstool" ,itstool)
@@ -7833,6 +7821,7 @@ views can be printed as PDF or PostScript files, or exported to HTML.")
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("gobject-introspection" ,gobject-introspection)
+       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
        ("gst-plugins-base" ,gst-plugins-base)
        ("libnotify" ,libnotify)
        ("libsecret" ,libsecret)
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 95ba67652b..01647fedd9 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -34,6 +34,7 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
+  #:use-module (guix hg-download)
   #:use-module (guix gexp)
   #:use-module (guix store)
   #:use-module (guix monads)
@@ -64,10 +65,12 @@
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages node)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages assembly)
   #:use-module (gnu packages rust)
+  #:use-module (gnu packages rust-cbindgen)
   #:use-module (gnu packages llvm)
   #:use-module (gnu packages nss)
   #:use-module (gnu packages icu4c)
@@ -404,6 +407,127 @@ in C/C++.")
        ("pkg-config" ,pkg-config)
        ("python" ,python-2)))))
 
+(define mozilla-compare-locales
+  (origin
+    (method hg-fetch)
+    (uri (hg-reference
+          (url "https://hg.mozilla.org/l10n/compare-locales/")
+          (changeset "RELEASE_3_3_0")))
+    (file-name "mozilla-compare-locales")
+    (sha256 (base32 "0biazbq7vbi99b99rfn4szwyx032dkpi09c9z4zs6f1br0f86iy1"))))
+
+(define (mozilla-locale locale changeset hash-string)
+  (origin
+    (method hg-fetch)
+    (uri (hg-reference
+          (url (string-append "https://hg.mozilla.org/l10n-central/"
+                              locale))
+          (changeset changeset)))
+    (file-name (string-append "mozilla-locale-" locale))
+    (sha256 (base32 hash-string))))
+
+(define-syntax-rule (mozilla-locales (hash-string changeset locale) ...)
+  (list (mozilla-locale locale changeset hash-string)
+        ...))
+
+(define all-mozilla-locales
+  (mozilla-locales
+   ;;                      sha256                            changeset    locale
+   ;;---------------------------------------------------------------------------
+   ("0pybx6j2ycbrr1xmv0spv19sd8a1dyzcs8kf6pzn71w8y6kiagcf" "35959cf2343c" "ach")
+   ("0dixmkha738w7fkx20nx95xkfyrqb9vczpy6m03qnqfvb76xaxj5" "e8dc1010f909" "af")
+   ("124j09va25gwfxdzyfixrli0skxv53c7niagjyp7g3a3kcv2lbhc" "4c67f6b96a7b" "an")
+   ("0flgqll3xx0ym0zj0w9j2jw3fmhs6h9m4l5da6m0bpnk5ff80r06" "34cbea5f44a5" "ar")
+   ("0kdb1yqfbfz508f4p77z3p1v6fwy190vs5ipj58hgdixjgbxkqay" "b4790b27633c" "ast")
+   ("1vm5xw6wg12pygswd3p0qpkaxyryah6nif5n15chb4sb42c1gqcm" "96d341bf49d4" "az")
+   ("1j2qrrws51qij6haz5b77n5vzqhsxgs1ppqqw4mdrkacwvz4ciwh" "4adaede00646" "be")
+   ("0ydr8f9lbd51prgcbjb5yacb461j8va0s5bqfs0rnglkvhmk6ard" "d1140972aefe" "bg")
+   ("0wyw90zjp8kpd1gljng00in9wr2cf59ww6z002lgx5k4gibnqcfd" "2b3ce92c2310" "bn")
+   ("0kkq621h1qdmimyrmms9g5p70m54z2ddw4cd962nqbkrnmabq9vn" "426896350893" "br")
+   ("0vibhnb3cbpbgf10db04g6vm372kb9i27p0jkwif019f7qprswd8" "7463f339ce07" "bs")
+   ("1l8cn2fqfvx7bswzfy9vavv8cd32ha9ygdxxdbxi64wcgw0f80bf" "dab3f05125e4" "ca")
+   ("0fik17y8zyg9w82lq501ic73a53c0q9r8v4zgn9bnzgsygig8qpq" "ebb9d989275a" "cak")
+   ("0sj29v6144h39wzb4rvxph3cwgvs4gzkgpr0463d3fcs6jdi0kjs" "522352780348" "cs")
+   ("1nz8jlx62l69jcdi59hlk8jysm15sh3d1cxqginjmx7w351wsidm" "0791b954c333" "cy")
+   ("1vc01q1vlq26xm1vm1x0119jawxxp975p9k8ashmiwncl1bvqb48" "121f5f876f4c" "da")
+   ("1iqny61rg57banfbbskc2y3pr6d35fabnxmynv7vxm9jd86pndz3" "95fb3e99a2bc" "de")
+   ("06v9j8acx5h8za7m65v6qm0wjbkx6vm46m8sigcp69phyg3fjc96" "90e681b74587" "dsb")
+   ("0lbk90x2dxdbh63fycqxspx6jqq2zlzys6grg45balw8yyvzqrkz" "58ba4c13fd42" "el")
+   ("0c2ypvy0z8g78s5158v6h9khckq1xps34r5wbiiciix289m43dgl" "8953d8c98a30" "en-CA")
+   ("0z3riz3w2z6p710p90ridmwwam4snnz5mn90gd4jc1h2n7vc9mr0" "5a2b9bca3f52" "en-GB")
+   ("102gn3h4ap8c3x1p7vfc88vapkfiz6264y6byhxy1axxjk3x3a77" "e87cb1c61d6e" "eo")
+   ("148wj6wsx0aq7cpaxk8njj7cb1wfjr2m96dgxq6b3qcv781ldvjn" "5db15fdf95d5" "es-AR")
+   ("0r11d8vzvbyz17n371byvkrnszcv1zhr7rg64i58xra3y6d7is7n" "ce2ee0e51a92" "es-CL")
+   ("1xmqa8p7lpqvkgg879hfnmf6kxcpawjk8z31cdzfp1hrdlmxg8n7" "7346617620f3" "es-ES")
+   ("0jxv3jh2018lnybr9mzqrffvwmr87yab9bh8lxqjj294fxw1hrxm" "687f05eb0c58" "es-MX")
+   ("1rpgv7pajv4xldsn1xxsia5j72vn3x8zl5wmbzkyw56lvn9fckvf" "839a5029c496" "et")
+   ("0hxp4fr3y05rkpamdb1hlmybn6d3bv3rcawjm3axbpqxbyfdpfzc" "54e8d87230c9" "eu")
+   ("1y50knymnmcihw8bhvahicc386mjm6dx4hx0j6fv8sl23wzx2h9m" "c5ffca960f9c" "fa")
+   ("0pj9zgi0c3yl3myhvb5afiijayp2lqzhlk630ahxn5hgjgkz0lx7" "75c000a8538d" "ff")
+   ("199jg0zv7wp1cq0ik2hf84j99jx5vq2jwac0gaayvjzkh2z83jqr" "f11b2e689e7b" "fi")
+   ("1vxkiwwni7470ywy99arxxa56ljkhjrhxslsp1l1l61g6gdbbspr" "49ec4f791806" "fr")
+   ("0d8gwdcj0jpjv03nhjds8jrg86pg371xpylaibwri76wlyl7m54i" "faa761a5cfdc" "fy-NL")
+   ("0nipbxx11a2sjadzhbi88vgknw5hzr4nqy2722q3kc1212jbi754" "5bd9466f9f9d" "ga-IE")
+   ("0bay8mrm65cvmnvqpwqgzr0h3cb18ifzg5kbsbxcvdfm9xv0zi9g" "a4f6a47e82dd" "gd")
+   ("00kn5w3nnpw1pxg6hhrn9asf9hgpjd6ia4038iwzcqs68w887qcy" "6c2aa01ada4e" "gl")
+   ("0jj13i0ach85c975vaz2rr83mibs29ipssa7qsjkb0y2ch6xya1k" "c2d607e36cb5" "gn")
+   ("1nhqbgzilcb0pr7941dxkhg079bf8v7ldikp1s5xli34wf9sabm2" "f34465d6ac1c" "gu-IN")
+   ("11bh0541d996cfin1zy72l66753q94i4idgv2waf0h40h9g3z1bm" "c2ecb2762274" "he")
+   ("1lslji7hh5lx5ig1xgfjh4cdindsgh3n2a7qlvzwz96gda43lvv4" "94d2bb10ee03" "hi-IN")
+   ("1nx5yw00l25i3m3grdm29mi9mi7h0cy5qx02pypir754pk3hiwcc" "08df0d94edd5" "hr")
+   ("19yc9dk2pwqycynmx58d1ik6x4mnyfxscgr6sg676dpl613xd7nq" "21b614e77025" "hsb")
+   ("0l3z64jlx6b6ivk1b5hwqyx9hm1m5721ywnb2m4zmg3g9fw4vn7f" "f82cad7170af" "hu")
+   ("1sn0dxbbf2zwcpybwcw77qb4p0hf6fxapnsnn4avaab5g55dlgz4" "d94c30920396" "hy-AM")
+   ("0c92cqxrhv4317kirmhpjk7mrq44yn6fp3v6syxnhz7xwxnhshjm" "6a5f176b0626" "ia")
+   ("03gyg9gqsd6pwb9nydglhm46fi2wk2p2qygmhmrf8hnav3ba7n0r" "94e4302e0f85" "id")
+   ("0ky8aaps92mn56rvkwn0i13wg8av8hzi1fvr0ahqhjcpj5sfgdwq" "eca348a59888" "is")
+   ("01py0sfg7nljcsgpivryrvai4p4wzbcvhgc2ymr19r579nv1vw7g" "d541a6197359" "it")
+   ("0iv7vmj43njmi7g1gjzsv68ax4j502d2wnkvbfz1rx11lrqs7yw1" "a5ab3a1d95b7" "ja")
+   ("1sr9ccshcw6agbj4hbnpblxixb1jz0m36glas6f9ahxmi7m605si" "63763ffa5a94" "ja-JP-mac")
+   ("1as33pzcsdkynrj16dv7w642vl6plbhk650am4l5djwm64f2rgms" "aa83e8555ddc" "ka")
+   ("1jwaqb5qps3i5y9iw8l2hrwa0n8lfnx1k9x0p54y3jkh6p3q3fzc" "0e0e25c26247" "kab")
+   ("0cjfiwv0q5i8d7fpwb4m2w5ahq687dqjlwlicgpa443yi2zsxr4s" "33117723ceb1" "kk")
+   ("0k5b56cv39aaxf9r0p9c27f3fp6yq2ffd4w6qmd0ibpl69sm629d" "aff7b2a7825e" "km")
+   ("1a0zg96jgq4zn9cz0h2qwc0vv1fbkfzs5qrgabg62wqgz286jvvv" "ea91638cb1dd" "kn")
+   ("0jhmv2n3yx55r6fg3myg7j1c1nhsv25g016m6lh2j023xbr723gp" "88821009b5b3" "ko")
+   ("06bybgv4m4i7r9p0qld65j31vbrnljhsdj649dl93msv2r69ilif" "88685d5f07b3" "lij")
+   ("1bzjf8smw6ngi88j5g3fawrg54m8fifbhshwjbgkpj7rnrpjgh4w" "e046c7ffa7d0" "lt")
+   ("18dmzmpavijb7fwzffas0j5nb6byqp8h6ki7hhf6qb35diqgfq6n" "c520ef4f576c" "lv")
+   ("055zf7xj5h1h8mzxj1cjzhngpcvg2p5vs2dmffsa5zfprj02d0dm" "9e43723f18ad" "mk")
+   ("1496fbyyzcl075gzcd3xy50h9jyhnzgb544k1scji56yhyfajacb" "ce615fef92c1" "mr")
+   ("1wc1q8ksry181pvnysqsq4dhhsg5adw5vgqafmmq5sf6i2bwn2z0" "4fefe88cfaee" "ms")
+   ("0awf6mrdwdhy2yvxynssvp1zg1nc2fqbmg2d2bhjcib69zx944xw" "3987a06866fd" "my")
+   ("1hycvz7i4jd40hfs5abx6sgfdkafg0jhdgqih9b7lb08aqcl35pj" "2b3b8997d9a1" "nb-NO")
+   ("048z1ib46izwryyy8l1x71kq4775n7l2ilbskhsyrbxqryma13k8" "f25324281615" "ne-NP")
+   ("1qkxqpyr4la9bn1bqsgc2h9869arglh9n2kwpkq6722jzdbynkz2" "04c7d32c57f6" "nl")
+   ("08gnmdll55dbqj7qs63gq1kljbvg24nzns6q4m0av3sszsic0jv5" "5587520e5019" "nn-NO")
+   ("1yh2p4ipj5p2b7gh0xxj0n7ndvwn5bw2773ibrh7vz932mkzhhjn" "499386b02695" "oc")
+   ("0kjbnixjzv9hvyba4ll20gs76vx84pviy134fvpjp9lfjpnpib55" "31c01c325675" "pa-IN")
+   ("0g61imvr4639bbydyi0kwc1il7l1gzlfij4ywx7hdcmq2x6vgb9v" "fb5f3b8dea09" "pl")
+   ("13n68d7z94d7943m6fwl4kizbqm3wp82xz69vng4w9vyqlvv7d41" "9a541cbdc748" "pt-BR")
+   ("1j8afvrl1afmj2zixrp91rrhag5w4xw90raca1ic6mxyih9kvdi4" "edc959a685c2" "pt-PT")
+   ("0wf4a6q9nvcmam2g8ksbymjdnrz59pdr5nirfpjprfhifjmxx4nn" "d2699db715cd" "rm")
+   ("1k9qalir5pbh490w1mxyq31yhy9hbxsyrrk11hwlwlgn6syp9nvp" "b5460a9017bc" "ro")
+   ("1avy6wyfa5lbvy36wai6mwhhh6x1y8a0jyjk8hvjn52yfxj1gypk" "59ffa8ad047a" "ru")
+   ("1cakhm4jxcw1ij0l1vhxw74hsp5wg68i3319dkdncyyc5a2s1qv9" "8b3c8a7ebdfa" "si")
+   ("0s534r09bqdfvw3q17y9b1035kzzlafjv656v73mqhyz3fkffsx5" "cb39dc77980e" "sk")
+   ("1s58vgmnb9aiaiaqwwcivq3iyzpzj527w2aqh2nrh6xmaw7f43sr" "17d7969b1d9a" "sl")
+   ("147qm7x5z8rkf24jpqvkdlqg0fjz1l3zwnaxvkh9y2jpzv7m0x7z" "c55b0e9ff99d" "son")
+   ("0nn4r1rxi8cy7x9nmn5ljd8gcsn2rjl2ma2j7waxkafkm4rs6n20" "2bb3808072da" "sq")
+   ("0jsb01b94z7qbm59yaj56nb7yx7a6hpgw8v6nzwhbvmnmcsird4p" "c323c0d02d61" "sr")
+   ("1n7vv9y4sk3gig56rgfd2jk8jr2160grxk31bd1wkm7fvbndd259" "4220ce487cbc" "sv-SE")
+   ("06270mq7gajxfrsb8gqd25v2dac68ask5vvlh6kkkp3hrgy02vid" "6a1dbc2fe1d3" "ta")
+   ("10az7pd3npa7n8wq0qywvsj2qrx9592i2wffs3rnc1fviv1i1q0y" "028505b5ecd1" "te")
+   ("0yj0c3iyibb3jyypvyiyhbr9asxa48v0nq21kcf9gphi8fnyp5if" "e44d38b6a67b" "th")
+   ("1qc4nvhw834lx7p304fxma0fjdr4xfj4lf69dhh6biqz795lx45p" "1e0771d95708" "tr")
+   ("1g4y2yq5xp61ncy7c08j7fqqr1jc0m1hjxmbg5659wzif3b3dkg4" "e3c96943e98f" "uk")
+   ("1zbi28z1c3p5il7ndixyjsv4nrimzq36zjvlmq10am38ycqr9df8" "f35da1b02691" "ur")
+   ("1jrxjjj8k771y0wljqbadxdj4pasg0771jmg4l3hvpgs929i3j9g" "6fd2084b3efe" "uz")
+   ("1f8sqgxzgqmw6vzjv3f49lg43q09i3j62f471864vr71815agl8n" "33b5dfd0cd63" "vi")
+   ("0ssnsbxw3q5k88fa081gkn1mbqn4j7bm6vb7yvz6h44j214xkz9x" "2d87c0740715" "xh")
+   ("0kd3mrvvgczhsmw4rvpxxxc71bb469ayr8r4azf7gc0y5nmlm950" "a2b6625688d3" "zh-CN")
+   ("0qy1asyfplkyc89z3g3gfm7b32aka92350b3ayv9d9dcgwxmfdwz" "4d6e959a13d1" "zh-TW")))
+
 (define (mozilla-patch file-name changeset hash)
   "Return an origin for CHANGESET from the mozilla-esr60 repository."
   (origin
@@ -426,7 +550,7 @@ from forcing GEXP-PROMISE."
                       #:system system
                       #:guile-for-build guile)))
 
-(define %icecat-version "60.9.0-guix1")
+(define %icecat-version "68.2.0-guix0-preview1")
 
 ;; 'icecat-source' is a "computed" origin that generates an IceCat tarball
 ;; from the corresponding upstream Firefox ESR tarball, using the 'makeicecat'
@@ -448,24 +572,11 @@ from forcing GEXP-PROMISE."
                   "firefox-" upstream-firefox-version ".source.tar.xz"))
             (sha256
              (base32
-              "0gy5x2rnnbkqmjd9sq93s3q5na9nkba68xwpizild7k6qn63qicz"))))
-
-         (upstream-icecat-base-version "60.7.0") ; maybe older than base-version
-         (upstream-icecat-gnu-version "1")
-         (upstream-icecat-version (string-append upstream-icecat-base-version
-                                                 "-gnu"
-                                                 upstream-icecat-gnu-version))
-         (upstream-icecat-source
-          (origin
-            (method url-fetch)
-            (uri (string-append
-                  "mirror://gnu/gnuzilla/" upstream-icecat-base-version
-                  "/icecat-" upstream-icecat-version ".tar.bz2"))
-            (sha256
-             (base32
-              "09xqdfd8rwbn2n6m7n059qf1psbrj5v5kfzm7gg5xng22ddxawv8"))))
+              "0f3gf5gwhxabm6xs29nlxmfqdw3fs7v458vq1fydrglfyvmc5wc5"))))
 
-         (gnuzilla-commit (string-append "v" upstream-icecat-base-version))
+         (upstream-icecat-base-version "68.1.0") ; maybe older than base-version
+         ;;(gnuzilla-commit (string-append "v" upstream-icecat-base-version))
+         (gnuzilla-commit "395cc0798600cde44a30abaa3f5d08ce8b68f782")
          (gnuzilla-source
           (origin
             (method git-fetch)
@@ -475,7 +586,7 @@ from forcing GEXP-PROMISE."
             (file-name (git-file-name "gnuzilla" upstream-icecat-base-version))
             (sha256
              (base32
-              "1vqhb0py28hnwcynbaad304ziciz1kn5bv1qg2q4f7g13js3b1hf"))))
+              "1ll3j2kpsfp1f9dxy67fay1cidsng02l8a3a23wdjqkxgrg1cf4g"))))
 
          (makeicecat-patch
           (local-file (search-patch "icecat-makeicecat.patch"))))
@@ -492,9 +603,7 @@ from forcing GEXP-PROMISE."
               (let ((firefox-dir
                      (string-append "firefox-" #$base-version))
                     (icecat-dir
-                     (string-append "icecat-" #$%icecat-version))
-                    (old-icecat-dir
-                     (string-append "icecat-" #$upstream-icecat-base-version)))
+                     (string-append "icecat-" #$%icecat-version)))
 
                 (mkdir "/tmp/bin")
                 (set-path-environment-variable
@@ -540,9 +649,6 @@ from forcing GEXP-PROMISE."
                      (string-append "FFMINOR=" #$minor-version "\n"))
                     (("^FFSUB=.*")
                      (string-append "FFSUB=" #$sub-version "\n"))
-                    (("^GNUVERSION=.*")
-                     (string-append "GNUVERSION="
-                                    #$upstream-icecat-gnu-version "\n"))
                     (("^DATA=.*")
                      "DATA=/tmp/gnuzilla/data\n")
                     (("^find extensions/gnu/ ")
@@ -556,19 +662,39 @@ from forcing GEXP-PROMISE."
                 (rename-file firefox-dir icecat-dir)
 
                 (with-directory-excursion icecat-dir
+                  (format #t "Populating l10n directory...~%")
+                  (force-output)
                   (mkdir "l10n")
+                  (with-directory-excursion "l10n"
+                    (for-each
+                     (lambda (locale-dir)
+                       (let ((locale
+                              (string-drop (basename locale-dir)
+                                           (+ 32  ; length of hash
+                                              (string-length "-mozilla-locale-")))))
+                         (format #t "  ~a~%" locale)
+                         (force-output)
+                         (copy-recursively locale-dir locale
+                                           #:log (%make-void-port "w"))
+                         (for-each make-file-writable (find-files locale))
+                         (with-directory-excursion locale
+                           (when (file-exists? ".hgtags")
+                             (delete-file ".hgtags"))
+                           (mkdir-p "browser/chrome/browser/preferences")
+                           (call-with-output-file
+                               "browser/chrome/browser/preferences/advanced-scripts.dtd"
+                             (lambda (port) #f)))))
+                     '#+all-mozilla-locales)
+                    (copy-recursively #+mozilla-compare-locales
+                                      "compare-locales"
+                                      #:log (%make-void-port "w"))
+                    (delete-file "compare-locales/.gitignore")
+                    (delete-file "compare-locales/.hgignore")
+                    (delete-file "compare-locales/.hgtags"))
+
                   (format #t "Running makeicecat script...~%")
                   (force-output)
-                  (invoke "bash" "/tmp/gnuzilla/makeicecat")
-                  (delete-file-recursively "l10n"))
-
-                (format #t (string-append "Unpacking l10n/* from"
-                                          " upstream IceCat tarball...~%"))
-                (force-output)
-                (unless (string=? icecat-dir old-icecat-dir)
-                  (symlink icecat-dir old-icecat-dir))
-                (invoke "tar" "xf" #+upstream-icecat-source
-                        (string-append old-icecat-dir "/l10n"))
+                  (invoke "bash" "/tmp/gnuzilla/makeicecat"))
 
                 (format #t "Packing new IceCat tarball...~%")
                 (force-output)
@@ -605,7 +731,6 @@ from forcing GEXP-PROMISE."
        ("pango" ,pango)
        ("freetype" ,freetype)
        ("harfbuzz" ,harfbuzz)
-       ("hunspell" ,hunspell)
        ("libcanberra" ,libcanberra)
        ("libgnome" ,libgnome)
        ("libjpeg-turbo" ,libjpeg-turbo)
@@ -640,24 +765,32 @@ from forcing GEXP-PROMISE."
      ;; and therefore we prefer to leave them out of 'source', which should be
      ;; a tarball suitable for compilation on any system that IceCat supports.
      ;; (Bug fixes and security fixes, however, should go in 'source').
-     `(("icecat-avoid-bundled-libraries.patch"
-        ,(search-patch "icecat-avoid-bundled-libraries.patch"))
-       ("icecat-use-system-graphite2+harfbuzz.patch"
-        ,(search-patch "icecat-use-system-graphite2+harfbuzz.patch"))
-       ("icecat-use-system-media-libs.patch"
-        ,(search-patch "icecat-use-system-media-libs.patch"))
+     `(;; XXX TODO: Adapt these patches to IceCat 68.
+       ;; ("icecat-avoid-bundled-libraries.patch"
+       ;;  ,(search-patch "icecat-avoid-bundled-libraries.patch"))
+       ;; ("icecat-use-system-graphite2+harfbuzz.patch"
+       ;;  ,(search-patch "icecat-use-system-graphite2+harfbuzz.patch"))
+       ;; ("icecat-use-system-media-libs.patch"
+       ;;  ,(search-patch "icecat-use-system-media-libs.patch"))
+       ("icecat-default-search-ddg.patch"
+        ,(search-patch "icecat-default-search-ddg.patch"))
+       ("icecat-disable-sync.patch"
+        ,(search-patch "icecat-disable-sync.patch"))
 
        ("patch" ,(canonical-package patch))
 
-       ;; Icecat 60 checks for rust>=1.24
-       ("rust" ,rust-1.24)
-       ("cargo" ,rust-1.24 "cargo")
-       ("llvm" ,llvm-3.9.1)
-       ("clang" ,clang-3.9.1)
+       ("rust" ,rust)
+       ("cargo" ,rust "cargo")
+       ("rust-cbindgen" ,rust-cbindgen)
+       ("llvm" ,llvm)
+       ("clang" ,clang)
        ("perl" ,perl)
-       ("python" ,python-2) ; Python 3 not supported
+       ("node" ,node)
+       ("python" ,python)
+       ("python-2" ,python-2)
        ("python2-pysqlite" ,python2-pysqlite)
        ("yasm" ,yasm)
+       ("nasm" ,nasm)  ; XXX FIXME: only needed on x86_64 and i686
        ("pkg-config" ,pkg-config)
        ("autoconf" ,autoconf-2.13)
        ("which" ,which)))
@@ -681,7 +814,6 @@ from forcing GEXP-PROMISE."
                            "--disable-tests"
                            "--disable-updater"
                            "--disable-crashreporter"
-                           "--disable-maintenance-service"
                            "--disable-eme"
                            "--disable-gconf"
 
@@ -712,11 +844,11 @@ from forcing GEXP-PROMISE."
                            "--with-system-zlib"
                            "--with-system-bz2"
                            "--with-system-jpeg"        ; must be libjpeg-turbo
-                           "--with-system-libevent"
-                           "--with-system-ogg"
-                           "--with-system-vorbis"
-                           ;; "--with-system-theora" ; wants theora-1.2, not yet released
-                           "--with-system-libvpx"
+                           ;; UNBUNDLE-ME! "--with-system-libevent"
+                           ;; UNBUNDLE-ME! "--with-system-ogg"
+                           ;; UNBUNDLE-ME! "--with-system-vorbis"
+                           ;; UNBUNDLE-ME! "--with-system-theora" ; wants theora-1.2, not yet released
+                           ;; UNBUNDLE-ME! "--with-system-libvpx"
                            "--with-system-icu"
                            
                            ;; See <https://bugs.gnu.org/32833>
@@ -725,12 +857,11 @@ from forcing GEXP-PROMISE."
                            ;; UNBUNDLE-ME! "--with-system-nspr"
                            ;; UNBUNDLE-ME! "--with-system-nss"
                            
-                           "--with-system-harfbuzz"
-                           "--with-system-graphite2"
+                           ;; UNBUNDLE-ME! "--with-system-harfbuzz"
+                           ;; UNBUNDLE-ME! "--with-system-graphite2"
                            "--enable-system-pixman"
                            "--enable-system-ffi"
-                           "--enable-system-hunspell"
-                           "--enable-system-sqlite"
+                           ;; UNBUNDLE-ME! "--enable-system-sqlite"
 
                            ;; Fails with "--with-system-png won't work because
                            ;; the system's libpng doesn't have APNG support".
@@ -748,6 +879,8 @@ from forcing GEXP-PROMISE."
        #:modules ((ice-9 ftw)
                   (ice-9 rdelim)
                   (ice-9 match)
+                  (srfi srfi-34)
+                  (srfi srfi-35)
                   ,@%gnu-build-system-modules)
        #:phases
        (modify-phases %standard-phases
@@ -802,18 +935,18 @@ from forcing GEXP-PROMISE."
                          ;;
                          "modules/freetype2"
                          "modules/zlib"
-                         "modules/libbz2"
-                         "ipc/chromium/src/third_party/libevent"
-                         "media/libjpeg"
-                         "media/libvpx"
-                         "media/libogg"
-                         "media/libvorbis"
-                         ;; "media/libtheora" ; wants theora-1.2, not yet released
-                         "media/libtremor"
-                         "gfx/harfbuzz"
-                         "gfx/graphite2"
+                         ;; "media/libjpeg"  ; needed for now, because media/libjpeg/moz.build is referenced from config/external/moz.build
+                         ;; UNBUNDLE-ME! "ipc/chromium/src/third_party/libevent"
+                         ;; UNBUNDLE-ME! "media/libvpx"
+                         ;; UNBUNDLE-ME! "media/libogg"
+                         ;; UNBUNDLE-ME! "media/libvorbis"
+                         ;; UNBUNDLE-ME! "media/libtheora" ; wants theora-1.2, not yet released
+                         ;; UNBUNDLE-ME! "media/libtremor"
+                         ;; UNBUNDLE-ME! "gfx/harfbuzz"
+                         ;; UNBUNDLE-ME! "gfx/graphite2"
                          "js/src/ctypes/libffi"
-                         "db/sqlite3"))
+                         ;; UNBUNDLE-ME! "db/sqlite3"
+                         ))
              #t))
          (add-after 'remove-bundled-libraries 'link-libxul-with-libraries
            (lambda _
@@ -840,7 +973,7 @@ from forcing GEXP-PROMISE."
            (lambda _
              (use-modules (guix build cargo-utils))
              (let ((null-hash "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"))
-               (substitute* '("Cargo.lock" "servo/Cargo.lock")
+               (substitute* '("Cargo.lock" "gfx/wr/Cargo.lock")
                  (("(\"checksum .* = )\".*\"" all name)
                   (string-append name "\"" null-hash "\"")))
                (generate-all-checksums "third_party/rust"))
@@ -882,6 +1015,22 @@ from forcing GEXP-PROMISE."
                (apply invoke bash
                       (string-append srcdir "/configure")
                       flags))))
+         (replace 'build
+           ;; The build system often spuriously fails.  See
+           ;; <https://bugs.gentoo.org/show_bug.cgi?id=680934>.  To
+           ;; work around this, we try the standard 'build' phase up
+           ;; to 5 times.
+           (lambda args
+             (let ((build (assoc-ref %standard-phases 'build)))
+               (let retry ((remaining-attempts 5))
+                 (if (= remaining-attempts 1)
+                     (apply build args)
+                     (guard (c ((invoke-error? c)
+                                (format #t "~%Retrying build! (~a attempts remaining)~%~%"
+                                        (- remaining-attempts 1))
+                                (force-output)
+                                (retry (- remaining-attempts 1))))
+                       (apply build args)))))))
          (add-before 'configure 'install-desktop-entry
            (lambda* (#:key outputs #:allow-other-keys)
              ;; Install the '.desktop' file.
@@ -917,16 +1066,24 @@ from forcing GEXP-PROMISE."
              (let* ((out (assoc-ref outputs "out"))
                     (lib (string-append out "/lib"))
                     (gtk (assoc-ref inputs "gtk+"))
-                    (gtk-share (string-append gtk "/share")))
+                    (gtk-share (string-append gtk "/share"))
+                    (pulseaudio (assoc-ref inputs "pulseaudio"))
+                    (pulseaudio-lib (string-append pulseaudio "/lib")))
                (wrap-program (car (find-files lib "^icecat$"))
-                 `("XDG_DATA_DIRS" ":" prefix (,gtk-share)))
+                 `("XDG_DATA_DIRS" prefix (,gtk-share))
+                 `("LD_LIBRARY_PATH" prefix (,pulseaudio-lib))
+                 `("MOZ_LEGACY_PROFILES" = ("1")))
                #t))))))
     (home-page "https://www.gnu.org/software/gnuzilla/")
     (synopsis "Entirely free browser derived from Mozilla Firefox")
     (description
      "IceCat is the GNU version of the Firefox browser.  It is entirely free
 software, which does not recommend non-free plugins and addons.  It also
-features built-in privacy-protecting features.")
+features built-in privacy-protecting features.
+
+WARNING: IceCat 68 has not yet been released by the upstream IceCat project.
+This is a preview release, and does not currently meet the privacy-respecting
+standards of the IceCat project.")
     (license license:mpl2.0)     ;and others, see toolkit/content/license.html
     (properties
      `((ftp-directory . "/gnu/gnuzilla")
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index 2e9ba7bc65..3a55585251 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -1994,11 +1994,11 @@ The picture values can directly be displayed in Geiser.")
       (license license:lgpl3+))))
 
 (define-public guile-studio
-  (let ((commit "4d63f3d684f61bf83566745e8572496cdf6daad0")
-        (revision "2"))
+  (let ((commit "98fbbbd08de396cd8a0e45f2a4badf1c733a5772")
+        (revision "3"))
     (package
       (name "guile-studio")
-      (version (git-version "0" revision commit))
+      (version (git-version "0.0.1" revision commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -2006,28 +2006,25 @@ The picture values can directly be displayed in Geiser.")
                       (commit commit)))
                 (sha256
                  (base32
-                  "1d3hhw3c3mk5i87xvfqa643674f08j1jd1rc1pl534gydz529vd5"))))
+                  "0rxl5gv2mavycwkl33lcwyb3z71j2f4zyzk60k7vl3hzszpr08iq"))))
       (build-system gnu-build-system)
       (arguments
        `(#:tests? #f                      ; there are none
+         #:make-flags
+         (list (string-append "ICONS_DIR="
+                              (assoc-ref %build-inputs "adwaita-icon-theme")
+                              "/share/icons/Adwaita/")
+               (string-append "PICT_DIR="
+                              (assoc-ref %build-inputs "guile-picture-language"))
+               (string-append "EMACS_DIR="
+                              (assoc-ref %build-inputs "emacs"))
+               (string-append "GUILE_DIR="
+                              (assoc-ref %build-inputs "guile"))
+               (string-join (cons "INPUTS=" (map cdr %build-inputs)))
+               (string-append "PREFIX=" (assoc-ref %outputs "out")))
          #:phases
          (modify-phases %standard-phases
            (delete 'configure)
-           (replace 'build
-             (lambda* (#:key source inputs outputs #:allow-other-keys)
-               (let* ((out   (assoc-ref outputs "out"))
-                      (bin   (string-append out "/bin/"))
-                      (share (string-append out "/share/")))
-                 (mkdir-p share)
-                 (mkdir-p bin)
-                 (apply invoke "guile" "-s" "guile-studio-configure.scm"
-                        out
-                        (assoc-ref inputs "emacs")
-                        (assoc-ref inputs "guile-picture-language")
-                        (string-append (assoc-ref inputs "adwaita-icon-theme")
-                                       "/share/icons/Adwaita/")
-                        (map cdr inputs))
-                 #t)))
            (delete 'install))))
       (inputs
        `(("guile" ,guile-2.2)
@@ -2039,6 +2036,8 @@ The picture values can directly be displayed in Geiser.")
          ("emacs-smart-mode-line" ,emacs-smart-mode-line)
          ("emacs-paren-face" ,emacs-paren-face)
          ("adwaita-icon-theme" ,adwaita-icon-theme)))
+      (native-inputs
+       `(("texinfo" ,texinfo)))
       (home-page "https://gnu.org/software/guile")
       (synopsis "IDE for Guile")
       (description
diff --git a/gnu/packages/haskell-apps.scm b/gnu/packages/haskell-apps.scm
index 13d228b856..c5e1cd6c64 100644
--- a/gnu/packages/haskell-apps.scm
+++ b/gnu/packages/haskell-apps.scm
@@ -245,15 +245,14 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}.
 (define-public git-annex
   (package
     (name "git-annex")
-    (version "7.20191009")
+    (version "7.20191024")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://hackage.haskell.org/package/"
                            "git-annex/git-annex-" version ".tar.gz"))
        (sha256
-        (base32
-         "10ycvjl9b3aa81zdz239ngjbbambfjrzds1a23wdlbjkn12nsg4g"))))
+        (base32 "11n0wvw7i1rgrsmm2wkv01rfa0azgaw1ib7jbmy4fyg9pw0s27y1"))))
     (build-system haskell-build-system)
     (arguments
      `(#:configure-flags
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index ff9fdf4b36..3237071e03 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2013, 2015, 2016 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
-;;; Copyright © 2014, 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2014, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 ;;; Copyright © 2015 Amirouche Boubekki <amirouche@hypermove.net>
 ;;; Copyright © 2014, 2017 John Darrington <jmd@gnu.org>
@@ -1668,14 +1668,14 @@ Features:
 (define-public r-jpeg
   (package
    (name "r-jpeg")
-   (version "0.1-8")
+   (version "0.1-8.1")
    (source
      (origin
        (method url-fetch)
        (uri (cran-uri "jpeg" version))
        (sha256
         (base32
-         "05hawv5qcb82ljc1l2nchx1wah8mq2k2kfkhpzyww554ngzbwcnh"))))
+         "1a8mi70x79a691r40yiw684jkg1mr9n8agkxlcksxcnrdybs9c0x"))))
    (build-system r-build-system)
    (inputs `(("libjpeg" ,libjpeg)))
    (home-page "http://www.rforge.net/jpeg/")
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 96c69bd126..8f4cccce81 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -938,6 +938,52 @@ and should be used with caution, especially on untested models.")
 between the CDemu userspace daemon and linux kernel.")
     (license license:gpl2+)))
 
+(define-public ddcci-driver-linux
+  (package
+    (name "ddcci-driver-linux")
+    (version "0.3.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri
+        (git-reference
+         (url "https://gitlab.com/ddcci-driver-linux/ddcci-driver-linux.git")
+         (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0vkkja3ykjil783zjpwp0vz7jy2fp9ccazzi3afd4fjk8gldin7f"))))
+    (build-system linux-module-build-system)
+    (arguments
+     `(#:tests? #f                               ; no tests
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'build
+           (lambda args
+             (for-each
+              (lambda (module)
+                (with-directory-excursion module
+                  (apply (assoc-ref %standard-phases 'build) args)))
+              '("ddcci" "ddcci-backlight"))
+             #t))
+         (replace 'install
+           (lambda args
+             (for-each
+              (lambda (module)
+                (with-directory-excursion module
+                  (apply (assoc-ref %standard-phases 'install) args)))
+              '("ddcci" "ddcci-backlight"))
+             #t)))))
+    (home-page "https://gitlab.com/ddcci-driver-linux/ddcci-driver-linux")
+    (synopsis "Pair of Linux kernel drivers for DDC/CI monitors")
+    (description "This package provides two Linux kernel drivers, ddcci and
+ddcci-backlight, that allows the control of DDC/CI monitors through the sysfs
+interface.  The ddcci module creates a character device for each DDC/CI
+monitors in @file{/dev/bus/ddcci/[I²C busnumber]}.  While the ddcci-backlight
+module allows the control of the backlight level or luminance property when
+supported under @file{/sys/class/backlight/}.")
+    (license license:gpl2+)))
+
 
 ;;;
 ;;; Pluggable authentication modules (PAM).
@@ -1019,16 +1065,14 @@ at login.  Local and dynamic reconfiguration are its key features.")
     (source
      (origin
       (method url-fetch)
-      (uri (string-append "mirror://sourceforge/psmisc/psmisc devel/psmisc-"
+      (uri (string-append "mirror://sourceforge/psmisc/psmisc/psmisc-"
                           version ".tar.xz"))
       (sha256
-       (base32
-        "0s1kjhrik0wzqbm7hv4gkhywhjrwhp9ajw0ad05fwharikk6ah49"))))
+       (base32 "103qp3f8jvz07x8r8zgsqwyw84g5g92w6pdq97d78d1pr7yvyz2b"))))
     (build-system gnu-build-system)
     (inputs `(("ncurses" ,ncurses)))
     (home-page "https://gitlab.com/psmisc/psmisc")
-    (synopsis
-     "Small utilities that use the proc file system")
+    (synopsis "Small utilities that use the proc file system")
     (description
      "This PSmisc package is a set of some small useful utilities that
 use the proc file system.  We're not about changing the world, but
@@ -1042,8 +1086,8 @@ providing the system administrator with some help in common tasks.")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://kernel.org/linux/utils/"
-                                  name "/v" (version-major+minor version) "/"
-                                  name "-" version ".tar.xz"))
+                                  "util-linux/v" (version-major+minor version) "/"
+                                  "util-linux-" version ".tar.xz"))
               (sha256
                (base32
                 "1db2kydkwjmvgd1glkcba3adhidxw0f1x735dcjdpdjjf869sgvl"))
@@ -3857,7 +3901,7 @@ and copy/paste text in the console and in xterm.")
 (define-public btrfs-progs
   (package
     (name "btrfs-progs")
-    (version "5.2.2")
+    (version "5.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://kernel.org/linux/kernel/"
@@ -3865,7 +3909,7 @@ and copy/paste text in the console and in xterm.")
                                   "btrfs-progs-v" version ".tar.xz"))
               (sha256
                (base32
-                "1imivxjppi8zl27gn472pwpk8bg5dijkbyi340by31vhy7dj24w2"))))
+                "13ivb1b627qkiiqxh2y7zawynarkmgxrnwwpqhx6cci621yyqqqp"))))
     (build-system gnu-build-system)
     (outputs '("out"
                "static"))      ; static versions of the binaries in "out"
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 4a7527344f..fdde7f744c 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -328,14 +328,14 @@ an interpreter, a compiler, a debugger, and much more.")
 (define-public sbcl
   (package
     (name "sbcl")
-    (version "1.5.7")
+    (version "1.5.8")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://sourceforge/sbcl/sbcl/" version "/sbcl-"
                            version "-source.tar.bz2"))
        (sha256
-        (base32 "11cl839512898shxcgjmnn1178pwc8vcfaypmzxm1wzkwasjyx2l"))
+        (base32 "0k7zjrky8r2krkd8780cph214hiihg9nh5rxn4nrhg6i6f8jymw4"))
        (modules '((guix build utils)))
        (snippet
         ;; Add sbcl-bundle-systems to 'default-system-source-registry'.
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 578a5c07fa..2c6192ca01 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -390,103 +390,101 @@ operating systems.")
     (license gpl2+)))
 
 (define-public neomutt
-  (package
-    (name "neomutt")
-    (version "20180716")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/" name "/" name
-                           "/archive/" name "-" version ".tar.gz"))
-       (sha256
-        (base32
-         "0072in2d6znwqq461shsaxlf40r4zr7w3j9848qvm4xlh1lq52dx"))))
-    (build-system gnu-build-system)
-    (inputs
-     `(("cyrus-sasl" ,cyrus-sasl)
-       ("gdbm" ,gdbm)
-       ("gpgme" ,gpgme)
-       ("ncurses" ,ncurses)
-       ("gnutls" ,gnutls)
-       ("openssl" ,openssl) ;For smime
-       ("perl" ,perl)
-       ("kyotocabinet" ,kyotocabinet)
-       ("libxslt" ,libxslt)
-       ("libidn" ,libidn)
-       ("libxml2" ,libxml2)
-       ("lmdb" ,lmdb)
-       ("notmuch" ,notmuch)))
-    (native-inputs
-     `(("automake" ,automake)
-       ("gettext-minimal" ,gettext-minimal)
-       ("pkg-config" ,pkg-config)
-       ("docbook-xsl" ,docbook-xsl)
-       ("docbook-xml" ,docbook-xml-4.2)
-       ("w3m" ,w3m)
-       ("tcl" ,tcl)))
-    (arguments
-     `(#:tests? #f
-       #:configure-flags
-       (list "--gpgme"
-
-             ;; database, implies header caching
-             "--disable-tokyocabinet"
-             "--disable-qdbm"
-             "--disable-bdb"
-             "--lmdb"
-             "--kyotocabinet"
-
-             "--gdbm"
-
-             "--gnutls"
-             "--disable-ssl"
-             "--sasl"
-             (string-append "--with-sasl="
-                            (assoc-ref %build-inputs "cyrus-sasl"))
-
-
-             "--smime"
-             "--notmuch"
-             "--idn"
-
-             ;; If we do not set this, neomutt wants to check
-             ;; whether the path exists, which it does not
-             ;; in the chroot. The workaround is this.
-             "--with-mailpath=/var/mail"
-
-             "--with-ui=ncurses"
-             (string-append "--with-ncurses="
-                            (assoc-ref %build-inputs "ncurses"))
-             (string-append "--prefix="
-                            (assoc-ref %outputs "out"))
-             "--debug")
-       #:phases
-       (modify-phases %standard-phases
-         ;; TODO: autosetup is meant to be included in the source,
-         ;; but we should package autosetup and use our own version of it.
-         (add-before 'configure 'fix-sasl-test
-           (lambda _
-             ;; Upstream suggestion to fix the failing sasl autosetup test.
-             (substitute* "auto.def"
-               (("cc-with \\[list -cflags -I\\$prefix/include -libs")
-                "cc-with [list -includes stddef.h -cflags -I$prefix/include -libs"))
-             #t))
-         (replace 'configure
-           (lambda* (#:key outputs inputs configure-flags #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (flags `(,@configure-flags))
-                    (bash (which "bash")))
-               (setenv "SHELL" bash)
-               (setenv "CONFIG_SHELL" bash)
-               (apply invoke bash
-                      (string-append (getcwd) "/configure")
-                      flags)))))))
-    (home-page "https://www.neomutt.org/")
-    (synopsis "Command-line mail reader based on Mutt")
-    (description
-     "NeoMutt is a command-line mail reader which is based on mutt.
+  (let ((tag "2019-10-25"))
+    (package
+      (name "neomutt")
+      ;; Upstream now uses YYYY-MM-DD instead of YYYYMMDD, but we're forever
+      ;; wed to the latter through ‘guix upgrade’.
+      (version (apply string-append (string-split tag #\-)))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/neomutt/neomutt.git")
+               (commit tag)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0hy6rxgm3acjqxpf4ss7391kps4g06fbjhbpgv1jdrj1y9kv0rm1"))))
+      (build-system gnu-build-system)
+      (inputs
+       `(("cyrus-sasl" ,cyrus-sasl)
+         ("gdbm" ,gdbm)
+         ("gpgme" ,gpgme)
+         ("ncurses" ,ncurses)
+         ("gnutls" ,gnutls)
+         ("openssl" ,openssl)           ; for S/MIME
+         ("perl" ,perl)
+         ("kyotocabinet" ,kyotocabinet)
+         ("libxslt" ,libxslt)
+         ("libidn2" ,libidn2)
+         ("libxml2" ,libxml2)
+         ("lmdb" ,lmdb)
+         ("notmuch" ,notmuch)))
+      (native-inputs
+       `(("automake" ,automake)
+         ("gettext-minimal" ,gettext-minimal)
+         ("pkg-config" ,pkg-config)
+         ("docbook-xsl" ,docbook-xsl)
+         ("docbook-xml" ,docbook-xml-4.2)
+         ("w3m" ,w3m)
+         ("tcl" ,tcl)))
+      (arguments
+       `(#:test-target "test"
+         #:configure-flags
+         (list "--gpgme"
+
+               ;; Database, implies header caching.
+               "--disable-tokyocabinet"
+               "--disable-qdbm"
+               "--disable-bdb"
+               "--lmdb"
+               "--kyotocabinet"
+
+               "--gdbm"
+
+               "--gnutls"
+               "--disable-ssl"
+               "--sasl"
+               (string-append "--with-sasl="
+                              (assoc-ref %build-inputs "cyrus-sasl"))
+
+
+               "--smime"
+               "--notmuch"
+               "--disable-idn"
+               "--idn2"
+
+               ;; If we do not set this, neomutt wants to check
+               ;; whether the path exists, which it does not
+               ;; in the chroot.
+               "--with-mailpath=/var/mail"
+
+               "--with-ui=ncurses"
+               (string-append "--with-ncurses="
+                              (assoc-ref %build-inputs "ncurses"))
+               (string-append "--prefix="
+                              (assoc-ref %outputs "out"))
+               "--debug")
+         #:phases
+         (modify-phases %standard-phases
+           ;; TODO: autosetup is meant to be included in the source,
+           ;; but we should package autosetup and use our own version of it.
+           (replace 'configure
+             (lambda* (#:key outputs inputs configure-flags #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (flags `(,@configure-flags))
+                      (bash (which "bash")))
+                 (setenv "SHELL" bash)
+                 (setenv "CONFIG_SHELL" bash)
+                 (apply invoke bash
+                        (string-append (getcwd) "/configure")
+                        flags)))))))
+      (home-page "https://www.neomutt.org/")
+      (synopsis "Command-line mail reader based on Mutt")
+      (description
+       "NeoMutt is a command-line mail reader which is based on mutt.
 It adds a large amount of new and improved features to mutt.")
-    (license gpl2+)))
+      (license gpl2+))))
 
 (define-public gmime
   (package
@@ -2271,20 +2269,22 @@ e-mails with other systems speaking the SMTP protocol.")
 (define-public opensmtpd-next
   (package
     (name "opensmtpd-next")
-    (version "6.4.2p1")
+    (version "6.6.0p1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.opensmtpd.org/archives/"
                            "opensmtpd-" version ".tar.gz"))
        (sha256
-        (base32 "0pgv080ai7d98l9340jadp9wjiaqj2qvgpqhilcz0kps2mdiawbd"))))
+        (base32 "1sgwbvc28h9nyyj4lv8d9b4ilzz03p2j1j763yr759k336a2193m"))))
     (build-system gnu-build-system)
     (inputs
      `(("bdb" ,bdb)
        ("libasr" ,libasr)
        ("libevent" ,libevent)
-       ("libressl" ,libressl)
+       ;; XXX Upstream recommends LibreSSL, which doesn't support TLS 1.3 yet,
+       ;; and requires a development release (3.0.2).  Use OpenSSL instead.
+       ("openssl" ,openssl)
        ("linux-pam" ,linux-pam)
        ("zlib" ,zlib)))
     (native-inputs
diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm
index de2377a14e..86efe64e52 100644
--- a/gnu/packages/man.scm
+++ b/gnu/packages/man.scm
@@ -60,14 +60,14 @@ a flexible and convenient way.")
 (define-public man-db
   (package
     (name "man-db")
-    (version "2.8.5")
+    (version "2.9.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://savannah/man-db/man-db-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "1hgnfcgbllmws8cs6zaxklq8b69i05zynxi87f3zxw9lfms54kdn"))))
+                "0qg2sdn8mayya0ril484iz1r7hi46l68d2d80cr6lvc7x3csqjjx"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index 741b3285e2..f890ad8dd5 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -15,6 +15,7 @@
 ;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2018 Pierre-Antoine Rouby <contact@parouby.fr>
+;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1615,39 +1616,39 @@ are both supported).")
     (license (list license:gpl3+ license:x11))))
 
 (define-public profanity
-    (package
-        (name "profanity")
-        (version "0.5.1")
-        (source (origin
-                  (method url-fetch)
-                  (uri (string-append "http://www.profanity.im/profanity-"
-                                      version ".tar.gz"))
-                  (sha256
-                   (base32
-                     "1f7ylw3mhhnii52mmk40hyc4kqhpvjdr3hmsplzkdhsfww9kflg3"))))
-        (build-system gnu-build-system)
-        (inputs
-         `(("curl" ,curl)
-           ("expat" ,expat)
-           ("glib" ,glib)
-           ("gpgme" ,gpgme)
-           ("libmesode" ,libmesode)
-           ("libotr" ,libotr)
-           ("ncurses" ,ncurses)
-           ("openssl" ,openssl)
-           ("readline" ,readline)))
-        (native-inputs
-         `(("autoconf" ,autoconf)
-           ("autoconf-archive" ,autoconf-archive)
-           ("automake" ,automake)
-           ("cmocka" ,cmocka)
-           ("libtool" ,libtool)
-           ("pkg-config" ,pkg-config)))
-        (synopsis "Console-based XMPP client")
-        (description "Profanity is a console based XMPP client written in C
+  (package
+    (name "profanity")
+    (version "0.7.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://profanity-im.github.io/profanity-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0nxh81j8ky0fzv47pip1jb7rs5rrin3jx0f3h632bvpjiya45r1z"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("curl" ,curl)
+       ("expat" ,expat)
+       ("glib" ,glib)
+       ("gpgme" ,gpgme)
+       ("libmesode" ,libmesode)
+       ("libotr" ,libotr)
+       ("ncurses" ,ncurses)
+       ("openssl" ,openssl)
+       ("readline" ,readline)))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("autoconf-archive" ,autoconf-archive)
+       ("automake" ,automake)
+       ("cmocka" ,cmocka)
+       ("libtool" ,libtool)
+       ("pkg-config" ,pkg-config)))
+    (synopsis "Console-based XMPP client")
+    (description "Profanity is a console based XMPP client written in C
 using ncurses and libmesode, inspired by Irssi.")
-        (home-page "http://www.profanity.im")
-        (license license:gpl3+)))
+    (home-page "http://www.profanity.im")
+    (license license:gpl3+)))
 
 (define-public libircclient
   (package
diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm
index efca02ff68..207e501520 100644
--- a/gnu/packages/password-utils.scm
+++ b/gnu/packages/password-utils.scm
@@ -75,6 +75,8 @@
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages readline)
+  #:use-module (gnu packages security-token)
   #:use-module (gnu packages suckless)
   #:use-module (gnu packages tcl)
   #:use-module (gnu packages tls)
@@ -109,7 +111,7 @@ human.")
 (define-public keepassxc
   (package
     (name "keepassxc")
-    (version "2.4.3")
+    (version "2.5.0")
     (source
      (origin
        (method url-fetch)
@@ -118,24 +120,25 @@ human.")
                            version "-src.tar.xz"))
        (sha256
         (base32
-         "0d17izx6qvcsxsxlsmaa17rgn38fvxsp5yzqqf4pc11i44cm5jfp"))))
+         "10bq2934xqpjpr99wbjg2vwmi73fcq0419cb3v78n2kj5fbwwnb3"))))
     (build-system cmake-build-system)
     (arguments
-     '(#:configure-flags '("-DWITH_XC_NETWORKING=YES"
-                           "-DWITH_XC_BROWSER=YES"
-                           "-DWITH_XC_SSHAGENT=YES"
+     '(#:configure-flags '("-DWITH_XC_ALL=YES"
                            "-DWITH_XC_UPDATECHECK=NO")))
     (inputs
      `(("argon2" ,argon2)
-       ("curl" ,curl)                   ; XC_NETWORKING
        ("libgcrypt" ,libgcrypt)
        ("libsodium" ,libsodium)         ; XC_BROWSER
+       ("libyubikey" ,libyubikey)       ; XC_YUBIKEY
        ("libxi" ,libxi)
        ("libxtst" ,libxtst)
        ("qrencode" ,qrencode)
        ("qtbase" ,qtbase)
        ("qtsvg" ,qtsvg)
        ("qtx11extras" ,qtx11extras)
+       ("quazip" ,quazip)               ; XC_KEESHARE
+       ("readline" ,readline)
+       ("yubikey-personalization" ,yubikey-personalization) ; XC_YUBIKEY
        ("zlib" ,zlib)))
     (native-inputs
      `(("qttools" ,qttools)))
@@ -146,7 +149,8 @@ manage your passwords in a secure way.  You can put all your passwords in one
 database, which is locked with one master key or a key-file which can be stored
 on an external storage device.  The databases are encrypted using the
 algorithms AES or Twofish.")
-    ;; Non-functional parts use various licences.
+    ;; While various parts of the software are licensed under different licenses,
+    ;; the combined work falls under the GPLv3.
     (license license:gpl3)))
 
 (define-public keepassx
diff --git a/gnu/packages/patches/dav1d-aarch64-symbol-alignment.patch b/gnu/packages/patches/dav1d-aarch64-symbol-alignment.patch
deleted file mode 100644
index a47adf9b05..0000000000
--- a/gnu/packages/patches/dav1d-aarch64-symbol-alignment.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-Ensure local debug symbols are aligned on AArch64.
-
-Taken from upstream:
-https://code.videolan.org/videolan/dav1d/commit/a6228f47f0eebcdfebb1753a786e3e1654b51ea4
-
-diff --git a/src/arm/64/ipred.S b/src/arm/64/ipred.S
-index 41b3c1c..9513212 100644
---- a/src/arm/64/ipred.S
-+++ b/src/arm/64/ipred.S
-@@ -2244,6 +2244,7 @@ L(ipred_cfl_ac_420_tbl):
-         .hword L(ipred_cfl_ac_420_tbl) - L(ipred_cfl_ac_420_w16)
-         .hword L(ipred_cfl_ac_420_tbl) - L(ipred_cfl_ac_420_w8)
-         .hword L(ipred_cfl_ac_420_tbl) - L(ipred_cfl_ac_420_w4)
-+        .hword 0
- 
- L(ipred_cfl_ac_420_w16_tbl):
-         .hword L(ipred_cfl_ac_420_w16_tbl) - L(ipred_cfl_ac_420_w16_wpad0)
-@@ -2432,6 +2433,7 @@ L(ipred_cfl_ac_422_tbl):
-         .hword L(ipred_cfl_ac_422_tbl) - L(ipred_cfl_ac_422_w16)
-         .hword L(ipred_cfl_ac_422_tbl) - L(ipred_cfl_ac_422_w8)
-         .hword L(ipred_cfl_ac_422_tbl) - L(ipred_cfl_ac_422_w4)
-+        .hword 0
- 
- L(ipred_cfl_ac_422_w16_tbl):
-         .hword L(ipred_cfl_ac_422_w16_tbl) - L(ipred_cfl_ac_422_w16_wpad0)
diff --git a/gnu/packages/patches/icecat-default-search-ddg.patch b/gnu/packages/patches/icecat-default-search-ddg.patch
new file mode 100644
index 0000000000..9eea07bcab
--- /dev/null
+++ b/gnu/packages/patches/icecat-default-search-ddg.patch
@@ -0,0 +1,1108 @@
+--- a/browser/components/search/SearchTelemetry.jsm.orig	1980-01-01 18:59:51.000000000 -0500
++++ b/browser/components/search/SearchTelemetry.jsm	2019-10-25 06:58:49.564335696 -0400
+@@ -40,6 +40,12 @@
+  *     page mightbe an advert.
+  */
+ const SEARCH_PROVIDER_INFO = {
++  duckduckgo: {
++    regexp: /^https:\/\/duckduckgo\.com\//,
++    queryParam: "q",
++    codeParam: "t",
++    codePrefixes: ["ff"],
++  },
+   google: {
+     regexp: /^https:\/\/www\.google\.(?:.+)\/search/,
+     queryParam: "q",
+@@ -50,12 +56,6 @@
+       /^https:\/\/www\.googleadservices\.com\/(?:pagead\/)?aclk/,
+     ],
+   },
+-  duckduckgo: {
+-    regexp: /^https:\/\/duckduckgo\.com\//,
+-    queryParam: "q",
+-    codeParam: "t",
+-    codePrefixes: ["ff"],
+-  },
+   yahoo: {
+     regexp: /^https:\/\/(?:.*)search\.yahoo\.com\/search/,
+     queryParam: "p",
+--- a/browser/components/search/extensions/list.json.orig	1980-01-01 18:59:51.000000000 -0500
++++ b/browser/components/search/extensions/list.json	2019-10-25 07:27:58.209006756 -0400
+@@ -1,9 +1,9 @@
+ {
+   "default": {
+-    "searchDefault": "Google",
+-    "searchOrder": ["Google", "Bing"],
++    "searchDefault": "DuckDuckGo",
++    "searchOrder": ["DuckDuckGo", "Google", "Bing"],
+     "visibleDefaultEngines": [
+-      "google-b-d", "amazondotcom", "bing", "ddg", "ebay", "twitter", "wikipedia"
++      "ddg", "google-b-d", "amazondotcom", "bing", "ebay", "twitter", "wikipedia"
+     ]
+   },
+   "regionOverrides": {
+@@ -54,32 +54,32 @@
+     "en-US": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "amazondotcom", "bing", "ddg", "ebay", "twitter", "wikipedia"
++          "ddg", "google-b-d", "amazondotcom", "bing", "ebay", "twitter", "wikipedia"
+         ]
+       },
+       "KZ": {
+         "visibleDefaultEngines": [
+-          "amazondotcom", "bing", "google", "twitter", "wikipedia", "ddg", "yandex-en"
++          "ddg", "amazondotcom", "bing", "google", "twitter", "wikipedia", "yandex-en"
+         ],
+-        "searchDefault": "Yandex"
++        "searchDefault": "DuckDuckGo"
+       },
+       "BY": {
+         "visibleDefaultEngines": [
+-          "amazondotcom", "bing", "google", "twitter", "wikipedia", "ddg", "yandex-en"
++          "ddg", "amazondotcom", "bing", "google", "twitter", "wikipedia", "yandex-en"
+         ],
+-        "searchDefault": "Yandex"
++        "searchDefault": "DuckDuckGo"
+       },
+       "RU": {
+         "visibleDefaultEngines": [
+-          "amazondotcom", "bing", "google", "twitter", "wikipedia", "ddg", "yandex-en"
++          "ddg", "amazondotcom", "bing", "google", "twitter", "wikipedia", "yandex-en"
+         ],
+-        "searchDefault": "Yandex"
++        "searchDefault": "DuckDuckGo"
+       },
+       "TR": {
+         "visibleDefaultEngines": [
+-          "amazondotcom", "bing", "google", "twitter", "wikipedia", "ddg", "yandex-en"
++          "ddg", "amazondotcom", "bing", "google", "twitter", "wikipedia", "yandex-en"
+         ],
+-        "searchDefault": "Yandex"
++        "searchDefault": "DuckDuckGo"
+       },
+       "experimental-hidden": {
+         "visibleDefaultEngines": [
+@@ -90,131 +90,131 @@
+     "ach": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia"
++          "ddg", "google-b-d", "bing", "amazondotcom", "twitter", "wikipedia"
+         ]
+       }
+     },
+     "af": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazondotcom", "ddg", "wikipedia-af"
++          "ddg", "google-b-d", "bing", "amazondotcom", "wikipedia-af"
+         ]
+       }
+     },
+     "an": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "ebay-es", "wikipedia-an", "ddg", "twitter"
++          "ddg", "google-b-d", "bing", "ebay-es", "wikipedia-an", "twitter"
+         ]
+       }
+     },
+     "ar": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazondotcom", "ddg", "wikipedia-ar"
++          "ddg", "google-b-d", "bing", "amazondotcom", "wikipedia-ar"
+         ]
+       }
+     },
+     "as": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "amazon-in", "ddg", "wikipedia-as"
++          "ddg", "google-b-d", "amazon-in", "wikipedia-as"
+         ]
+       }
+     },
+     "ast": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "ddg", "ebay-es", "wikipedia-ast"
++          "ddg", "google-b-d", "bing", "ebay-es", "wikipedia-ast"
+         ]
+       }
+     },
+     "az": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "amazondotcom", "azerdict", "bing", "ddg", "wikipedia-az", "yandex-az"
++          "ddg", "google-b-d", "amazondotcom", "azerdict", "bing", "wikipedia-az", "yandex-az"
+         ]
+       }
+     },
+     "be": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "yandex-by", "google-b-d", "ddg", "wikipedia-be", "wikipedia-be-tarask"
++          "ddg", "yandex-by", "google-b-d", "wikipedia-be", "wikipedia-be-tarask"
+         ]
+       },
+       "BY": {
+-        "searchDefault": "Яндекс"
++        "searchDefault": "DuckDuckGo"
+       },
+       "KZ": {
+-        "searchDefault": "Яндекс"
++        "searchDefault": "DuckDuckGo"
+       },
+       "RU": {
+-        "searchDefault": "Яндекс"
++        "searchDefault": "DuckDuckGo"
+       },
+       "TR": {
+-        "searchDefault": "Яндекс"
++        "searchDefault": "DuckDuckGo"
+       }
+     },
+     "bg": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "amazondotcom", "ddg", "pazaruvaj", "wikipedia-bg"
++          "ddg", "google-b-d", "amazondotcom", "pazaruvaj", "wikipedia-bg"
+         ]
+       }
+     },
+     "bn": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "amazon-in", "bing", "ddg", "wikipedia-bn"
++          "ddg", "google-b-d", "amazon-in", "bing", "wikipedia-bn"
+         ]
+       }
+     },
+     "bn-BD": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "ddg", "wikipedia-bn"
++          "ddg", "google-b-d", "bing", "wikipedia-bn"
+         ]
+       }
+     },
+     "bn-IN": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "amazon-in", "bing", "ddg", "wikipedia-bn"
++          "ddg", "google-b-d", "amazon-in", "bing", "wikipedia-bn"
+         ]
+       }
+     },
+     "br": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "amazon-france", "ddg", "ebay-fr", "freelang", "wikipedia-br"
++          "ddg", "google-b-d", "amazon-france", "ebay-fr", "freelang", "wikipedia-br"
+         ]
+       }
+     },
+     "bs": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "ddg", "olx", "twitter", "wikipedia-bs"
++          "ddg", "google-b-d", "olx", "twitter", "wikipedia-bs"
+         ]
+       }
+     },
+     "ca": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "diec2", "ddg", "ebay-es", "twitter", "wikipedia-ca"
++          "ddg", "google-b-d", "bing", "diec2", "ebay-es", "twitter", "wikipedia-ca"
+         ]
+       }
+     },
+     "cak": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazondotcom", "ddg", "wikipedia-es"
++          "ddg", "google-b-d", "bing", "amazondotcom", "wikipedia-es"
+         ]
+       }
+     },
+     "crh": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "ddg", "twitter", "wikipedia-crh"
++          "ddg", "google-b-d", "twitter", "wikipedia-crh"
+         ]
+       }
+     },
+@@ -222,74 +222,74 @@
+       "default": {
+         "searchOrder": ["Google", "Seznam"],
+         "visibleDefaultEngines": [
+-          "google-b-d", "seznam-cz", "ddg", "heureka-cz", "mapy-cz", "wikipedia-cz"
++          "ddg", "google-b-d", "seznam-cz", "heureka-cz", "mapy-cz", "wikipedia-cz"
+         ]
+       }
+     },
+     "cy": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "amazon-en-GB", "ddg", "ebay-uk", "palasprint", "wikipedia-cy"
++          "ddg", "google-b-d", "amazon-en-GB", "ebay-uk", "palasprint", "wikipedia-cy"
+         ]
+       }
+     },
+     "da": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazon-en-GB", "ddg", "wikipedia-da"
++          "ddg", "google-b-d", "bing", "amazon-en-GB", "wikipedia-da"
+         ]
+       }
+     },
+     "de": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "amazon-de", "bing", "ddg", "ebay-de", "ecosia", "leo_ende_de", "wikipedia-de"
++          "ddg", "google-b-d", "amazon-de", "bing", "ebay-de", "ecosia", "leo_ende_de", "wikipedia-de"
+         ]
+       }
+     },
+     "dsb": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazon-de", "ddg", "ebay-de", "leo_ende_de", "wikipedia-dsb"
++          "ddg", "google-b-d", "bing", "amazon-de", "ebay-de", "leo_ende_de", "wikipedia-dsb"
+         ]
+       }
+     },
+     "el": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "amazon-en-GB", "bing", "ddg", "wikipedia-el"
++          "ddg", "google-b-d", "amazon-en-GB", "bing", "wikipedia-el"
+         ]
+       }
+     },
+     "en-CA": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "amazon-ca", "bing", "ddg", "ebay-ca", "twitter", "wikipedia"
++          "ddg", "google-b-d", "amazon-ca", "bing", "ebay-ca", "twitter", "wikipedia"
+         ]
+       },
+       "KZ": {
+         "visibleDefaultEngines": [
+-          "yandex-en", "google-b-d", "amazon-ca", "bing", "ddg", "ebay-ca", "twitter", "wikipedia"
++          "ddg", "yandex-en", "google-b-d", "amazon-ca", "bing", "ebay-ca", "twitter", "wikipedia"
+         ],
+-        "searchDefault": "Yandex"
++        "searchDefault": "DuckDuckGo"
+       },
+       "BY": {
+         "visibleDefaultEngines": [
+-          "yandex-en", "google-b-d", "amazon-ca", "bing", "ddg", "ebay-ca", "twitter", "wikipedia"
++          "ddg", "yandex-en", "google-b-d", "amazon-ca", "bing", "ebay-ca", "twitter", "wikipedia"
+         ],
+-        "searchDefault": "Yandex"
++        "searchDefault": "DuckDuckGo"
+       },
+       "RU": {
+         "visibleDefaultEngines": [
+-          "yandex-en", "google-b-d", "amazon-ca", "bing", "ddg", "ebay-ca", "twitter", "wikipedia"
++          "ddg", "yandex-en", "google-b-d", "amazon-ca", "bing", "ebay-ca", "twitter", "wikipedia"
+         ],
+-        "searchDefault": "Yandex"
++        "searchDefault": "DuckDuckGo"
+       },
+       "TR": {
+         "visibleDefaultEngines": [
+-          "yandex-en", "google-b-d", "amazon-ca", "bing", "ddg", "ebay-ca", "twitter", "wikipedia"
++          "ddg", "yandex-en", "google-b-d", "amazon-ca", "bing", "ebay-ca", "twitter", "wikipedia"
+         ],
+-        "searchDefault": "Yandex"
++        "searchDefault": "DuckDuckGo"
+       },
+       "experimental-hidden": {
+         "visibleDefaultEngines": [
+@@ -300,32 +300,32 @@
+     "en-GB": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazon-en-GB", "chambers-en-GB", "ddg", "ebay-uk", "twitter", "wikipedia"
++          "ddg", "google-b-d", "bing", "amazon-en-GB", "chambers-en-GB", "ebay-uk", "twitter", "wikipedia"
+         ]
+       },
+       "KZ": {
+         "visibleDefaultEngines": [
+-          "yandex-en", "google-b-d", "bing", "amazon-en-GB", "chambers-en-GB", "ddg", "ebay-uk", "twitter", "wikipedia"
++          "ddg", "yandex-en", "google-b-d", "bing", "amazon-en-GB", "chambers-en-GB", "ebay-uk", "twitter", "wikipedia"
+         ],
+-        "searchDefault": "Yandex"
++        "searchDefault": "DuckDuckGo"
+       },
+       "BY": {
+         "visibleDefaultEngines": [
+-          "yandex-en", "google-b-d", "bing", "amazon-en-GB", "chambers-en-GB", "ddg", "ebay-uk", "twitter", "wikipedia"
++          "ddg", "yandex-en", "google-b-d", "bing", "amazon-en-GB", "chambers-en-GB", "ebay-uk", "twitter", "wikipedia"
+         ],
+-        "searchDefault": "Yandex"
++        "searchDefault": "DuckDuckGo"
+       },
+       "RU": {
+         "visibleDefaultEngines": [
+-          "yandex-en", "google-b-d", "bing", "amazon-en-GB", "chambers-en-GB", "ddg", "ebay-uk", "twitter", "wikipedia"
++          "ddg", "yandex-en", "google-b-d", "bing", "amazon-en-GB", "chambers-en-GB", "ebay-uk", "twitter", "wikipedia"
+         ],
+-        "searchDefault": "Yandex"
++        "searchDefault": "DuckDuckGo"
+       },
+       "TR": {
+         "visibleDefaultEngines": [
+-          "yandex-en", "google-b-d", "bing", "amazon-en-GB", "chambers-en-GB", "ddg", "ebay-uk", "twitter", "wikipedia"
++          "ddg", "yandex-en", "google-b-d", "bing", "amazon-en-GB", "chambers-en-GB", "ebay-uk", "twitter", "wikipedia"
+         ],
+-        "searchDefault": "Yandex"
++        "searchDefault": "DuckDuckGo"
+       },
+       "experimental-hidden": {
+         "visibleDefaultEngines": [
+@@ -336,66 +336,66 @@
+     "en-ZA": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia"
++          "ddg", "google-b-d", "bing", "amazondotcom", "twitter", "wikipedia"
+         ]
+       },
+       "KZ": {
+         "visibleDefaultEngines": [
+-          "yandex-en", "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia"
++          "ddg", "yandex-en", "google-b-d", "bing", "amazondotcom", "twitter", "wikipedia"
+         ],
+-        "searchDefault": "Yandex"
++        "searchDefault": "DuckDuckGo"
+       },
+       "BY": {
+         "visibleDefaultEngines": [
+-          "yandex-en", "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia"
++          "ddg", "yandex-en", "google-b-d", "bing", "amazondotcom", "twitter", "wikipedia"
+         ],
+-        "searchDefault": "Yandex"
++        "searchDefault": "DuckDuckGo"
+       },
+       "RU": {
+         "visibleDefaultEngines": [
+-          "yandex-en", "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia"
++          "ddg", "yandex-en", "google-b-d", "bing", "amazondotcom", "twitter", "wikipedia"
+         ],
+-        "searchDefault": "Yandex"
++        "searchDefault": "DuckDuckGo"
+       },
+       "TR": {
+         "visibleDefaultEngines": [
+-          "yandex-en", "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia"
++          "ddg", "yandex-en", "google-b-d", "bing", "amazondotcom", "twitter", "wikipedia"
+         ],
+-        "searchDefault": "Yandex"
++        "searchDefault": "DuckDuckGo"
+       }
+     },
+     "eo": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazondotcom", "ddg", "wikipedia-eo"
++          "ddg", "google-b-d", "bing", "amazondotcom", "wikipedia-eo"
+         ]
+       }
+     },
+     "es-AR": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "amazondotcom", "drae", "ddg", "mercadolibre-ar", "wikipedia-es"
++          "ddg", "google-b-d", "amazondotcom", "drae", "mercadolibre-ar", "wikipedia-es"
+         ]
+       }
+     },
+     "es-CL": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "drae", "ddg", "mercadolibre-cl", "wikipedia-es"
++          "ddg", "google-b-d", "bing", "drae", "mercadolibre-cl", "wikipedia-es"
+         ]
+       }
+     },
+     "es-ES": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "drae", "ddg", "ebay-es", "twitter", "wikipedia-es"
++          "ddg", "google-b-d", "bing", "drae", "ebay-es", "twitter", "wikipedia-es"
+         ]
+       }
+     },
+     "es-MX": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "ddg", "mercadolibre-mx", "wikipedia-es"
++          "ddg", "google-b-d", "bing", "mercadolibre-mx", "wikipedia-es"
+         ]
+       },
+       "experimental-hidden": {
+@@ -407,49 +407,49 @@
+     "et": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "neti-ee", "ddg", "osta-ee", "wikipedia-et", "eki-ee"
++          "ddg", "google-b-d", "neti-ee", "osta-ee", "wikipedia-et", "eki-ee"
+         ]
+       }
+     },
+     "eu": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazon-en-GB", "ddg", "ebay-es", "wikipedia-eu"
++          "ddg", "google-b-d", "bing", "amazon-en-GB", "ebay-es", "wikipedia-eu"
+         ]
+       }
+     },
+     "fa": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "amazondotcom", "bing", "ddg", "wikipedia-fa"
++          "ddg", "google-b-d", "amazondotcom", "bing", "wikipedia-fa"
+         ]
+       }
+     },
+     "ff": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazon-france", "ddg", "wikipedia-fr"
++          "ddg", "google-b-d", "bing", "amazon-france", "wikipedia-fr"
+         ]
+       }
+     },
+     "fi": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "ddg", "wikipedia-fi"
++          "ddg", "google-b-d", "bing", "wikipedia-fi"
+         ]
+       }
+     },
+     "fr": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazon-france", "ddg", "ebay-fr", "qwant", "wikipedia-fr"
++          "ddg", "google-b-d", "bing", "amazon-france", "ebay-fr", "qwant", "wikipedia-fr"
+         ]
+       }
+     },
+     "fy-NL": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "bolcom-fy-NL", "ddg", "ebay-nl", "marktplaats-fy-NL", "wikipedia-fy-NL"
++          "ddg", "google-b-d", "bing", "bolcom-fy-NL", "ebay-nl", "marktplaats-fy-NL", "wikipedia-fy-NL"
+         ]
+       },
+       "experimental-hidden": {
+@@ -461,105 +461,105 @@
+     "ga-IE": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "amazon-en-GB", "ddg", "ebay-ie", "tearma", "twitter", "wikipedia-ga-IE"
++          "ddg", "google-b-d", "amazon-en-GB", "ebay-ie", "tearma", "twitter", "wikipedia-ga-IE"
+         ]
+       }
+     },
+     "gd": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "amazon-en-GB", "bbc-alba", "ddg", "ebay-uk", "faclair-beag", "wikipedia-gd"
++          "ddg", "google-b-d", "amazon-en-GB", "bbc-alba", "ebay-uk", "faclair-beag", "wikipedia-gd"
+         ]
+       }
+     },
+     "gl": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "amazon-en-GB", "ddg", "ebay-es", "wikipedia-gl"
++          "ddg", "google-b-d", "amazon-en-GB", "ebay-es", "wikipedia-gl"
+         ]
+       }
+     },
+     "gn": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-gn"
++          "ddg", "google-b-d", "bing", "amazondotcom", "twitter", "wikipedia-gn"
+         ]
+       }
+     },
+     "gu-IN": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazon-in", "ddg", "wikipedia-gu"
++          "ddg", "google-b-d", "bing", "amazon-in", "wikipedia-gu"
+         ]
+       }
+     },
+     "he": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "ddg", "wikipedia-he", "morfix-dic"
++          "ddg", "google-b-d", "wikipedia-he", "morfix-dic"
+         ]
+       }
+     },
+     "hi-IN": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "ddg", "wikipedia-hi"
++          "ddg", "google-b-d", "bing", "wikipedia-hi"
+         ]
+       }
+     },
+     "hr": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "amazon-en-GB", "bing", "ddg", "eudict", "twitter", "wikipedia-hr"
++          "ddg", "google-b-d", "amazon-en-GB", "bing", "eudict", "twitter", "wikipedia-hr"
+         ]
+       }
+     },
+     "hsb": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazon-de", "ddg", "ebay-de", "leo_ende_de", "wikipedia-hsb"
++          "ddg", "google-b-d", "bing", "amazon-de", "ebay-de", "leo_ende_de", "wikipedia-hsb"
+         ]
+       }
+     },
+     "hu": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "ddg", "vatera", "wikipedia-hu"
++          "ddg", "google-b-d", "vatera", "wikipedia-hu"
+         ]
+       }
+     },
+     "hy-AM": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "amazondotcom", "ddg", "list-am", "wikipedia-hy"
++          "ddg", "google-b-d", "amazondotcom", "list-am", "wikipedia-hy"
+         ]
+       }
+     },
+     "ia": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-ia"
++          "ddg", "google-b-d", "bing", "amazondotcom", "twitter", "wikipedia-ia"
+         ]
+       }
+     },
+     "id": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "ddg", "wikipedia-id"
++          "ddg", "google-b-d", "wikipedia-id"
+         ]
+       }
+     },
+     "is": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazondotcom", "ddg", "wikipedia-is"
++          "ddg", "google-b-d", "bing", "amazondotcom", "wikipedia-is"
+         ]
+       }
+     },
+     "it": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazon-it", "ddg", "ebay-it", "wikipedia-it"
++          "ddg", "google-b-d", "bing", "amazon-it", "ebay-it", "wikipedia-it"
+         ]
+       }
+     },
+@@ -567,7 +567,7 @@
+       "default": {
+         "searchOrder": ["Google", "Yahoo! JAPAN", "Bing", "Amazon.co.jp", "楽天市場", "ヤフオク!", "教えて!goo", "Twitter", "Wikipedia (ja)"],
+         "visibleDefaultEngines": [
+-          "google-b-d", "yahoo-jp", "bing", "amazon-jp", "rakuten", "yahoo-jp-auctions", "oshiete-goo", "twitter-ja", "wikipedia-ja", "ddg"
++          "ddg", "google-b-d", "yahoo-jp", "bing", "amazon-jp", "rakuten", "yahoo-jp-auctions", "oshiete-goo", "twitter-ja", "wikipedia-ja"
+         ]
+       }
+     },
+@@ -575,159 +575,159 @@
+       "default": {
+         "searchOrder": ["Google", "Yahoo! JAPAN", "Bing", "Amazon.co.jp", "楽天市場", "ヤフオク!", "教えて!goo", "Twitter", "Wikipedia (ja)"],
+         "visibleDefaultEngines": [
+-          "google-b-d", "yahoo-jp", "bing", "amazon-jp", "rakuten", "yahoo-jp-auctions", "oshiete-goo", "twitter-ja", "wikipedia-ja", "ddg"
++            "ddg", "google-b-d", "yahoo-jp", "bing", "amazon-jp", "rakuten", "yahoo-jp-auctions", "oshiete-goo", "twitter-ja", "wikipedia-ja"
+         ]
+       }
+     },
+     "ka": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-ka"
++          "ddg", "google-b-d", "bing", "amazondotcom", "twitter", "wikipedia-ka"
+         ]
+       }
+     },
+     "kab": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "ddg", "wikipedia-kab"
++          "ddg", "google-b-d", "bing", "wikipedia-kab"
+         ]
+       }
+     },
+     "kk": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "yandex-kk", "google-b-d", "ddg", "flip", "twitter", "wikipedia-kk"
++          "ddg", "yandex-kk", "google-b-d", "flip", "twitter", "wikipedia-kk"
+         ]
+       },
+       "KZ": {
+-        "searchDefault": "Яндекс"
++        "searchDefault": "DuckDuckGo"
+       },
+       "BY": {
+-        "searchDefault": "Яндекс"
++        "searchDefault": "DuckDuckGo"
+       },
+       "RU": {
+-        "searchDefault": "Яндекс"
++        "searchDefault": "DuckDuckGo"
+       },
+       "TR": {
+-        "searchDefault": "Яндекс"
++        "searchDefault": "DuckDuckGo"
+       }
+     },
+     "km": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-km"
++          "ddg", "google-b-d", "bing", "amazondotcom", "twitter", "wikipedia-km"
+         ]
+       }
+     },
+     "kn": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazon-in", "ddg", "kannadastore", "wikipedia-kn"
++          "ddg", "google-b-d", "bing", "amazon-in", "kannadastore", "wikipedia-kn"
+         ]
+       }
+     },
+     "ko": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "ddg", "naver-kr", "daum-kr", "wikipedia-kr"
++          "ddg", "google-b-d", "naver-kr", "daum-kr", "wikipedia-kr"
+         ]
+       }
+     },
+     "lij": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazon-it", "ddg", "ebay-it", "wikipedia-lij"
++          "ddg", "google-b-d", "bing", "amazon-it", "ebay-it", "wikipedia-lij"
+         ]
+       }
+     },
+     "lo": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "ddg", "wikipedia-lo", "twitter"
++          "ddg", "google-b-d", "bing", "wikipedia-lo", "twitter"
+         ]
+       }
+     },
+     "lt": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "wikipedia-lt", "bing", "amazondotcom", "ddg", "twitter"
++          "ddg", "google-b-d", "wikipedia-lt", "bing", "amazondotcom", "twitter"
+         ]
+       }
+     },
+     "ltg": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "ddg", "salidzinilv", "sslv", "wikipedia-ltg"
++          "ddg", "google-b-d", "salidzinilv", "sslv", "wikipedia-ltg"
+         ]
+       }
+     },
+     "lv": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "ddg", "salidzinilv", "sslv", "wikipedia-lv"
++          "ddg", "google-b-d", "salidzinilv", "sslv", "wikipedia-lv"
+         ]
+       }
+     },
+     "mai": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazon-in", "ddg", "twitter", "wikipedia-hi"
++          "ddg", "google-b-d", "bing", "amazon-in", "twitter", "wikipedia-hi"
+         ]
+       }
+     },
+     "mk": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazondotcom", "ddg", "wikipedia-mk"
++          "ddg", "google-b-d", "bing", "amazondotcom", "wikipedia-mk"
+         ]
+       }
+     },
+     "ml": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazon-in", "ddg", "wikipedia", "wikipedia-ml"
++          "ddg", "google-b-d", "bing", "amazon-in", "wikipedia", "wikipedia-ml"
+         ]
+       }
+     },
+     "mr": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "amazon-in", "ddg", "wikipedia-mr"
++          "ddg", "google-b-d", "amazon-in", "wikipedia-mr"
+         ]
+       }
+     },
+     "ms": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-ms"
++          "ddg", "google-b-d", "bing", "amazondotcom", "twitter", "wikipedia-ms"
+         ]
+       }
+     },
+     "my": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-my"
++          "ddg", "google-b-d", "bing", "amazondotcom", "twitter", "wikipedia-my"
+         ]
+       }
+     },
+     "nb-NO": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "amazon-en-GB", "bing", "ddg", "gulesider-NO", "bok-NO", "qxl-NO", "wikipedia-NO"
++          "ddg", "google-b-d", "amazon-en-GB", "bing", "gulesider-NO", "bok-NO", "qxl-NO", "wikipedia-NO"
+         ]
+       }
+     },
+     "ne-NP": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "ddg", "twitter", "wikipedia-ne"
++          "ddg", "google-b-d", "bing", "twitter", "wikipedia-ne"
+         ]
+       }
+     },
+     "nl": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "bolcom-nl", "ddg", "ebay-nl", "marktplaats-nl", "wikipedia-nl"
++          "ddg", "google-b-d", "bing", "bolcom-nl", "ebay-nl", "marktplaats-nl", "wikipedia-nl"
+         ]
+       },
+       "experimental-hidden": {
+@@ -739,244 +739,244 @@
+     "nn-NO": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazon-en-GB", "ddg", "gulesider-NO", "bok-NO", "qxl-NO", "wikipedia-NN"
++          "ddg", "google-b-d", "bing", "amazon-en-GB", "gulesider-NO", "bok-NO", "qxl-NO", "wikipedia-NN"
+         ]
+       }
+     },
+     "oc": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "ddg", "twitter", "wikipedia-oc", "wiktionary-oc"
++          "ddg", "google-b-d", "bing", "twitter", "wikipedia-oc", "wiktionary-oc"
+         ]
+       }
+     },
+     "or": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazon-in", "ddg", "wikipedia-or"
++          "ddg", "google-b-d", "bing", "amazon-in", "wikipedia-or"
+         ]
+       }
+     },
+     "pa-IN": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazon-in", "ddg", "wikipedia-pa"
++          "ddg", "google-b-d", "bing", "amazon-in", "wikipedia-pa"
+         ]
+       }
+     },
+     "pl": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "allegro-pl", "ddg", "pwn-pl", "wikipedia-pl", "wolnelektury-pl"
++          "ddg", "google-b-d", "allegro-pl", "pwn-pl", "wikipedia-pl", "wolnelektury-pl"
+         ]
+       }
+     },
+     "pt-BR": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "ddg", "mercadolivre", "twitter", "wikipedia-pt"
++          "ddg", "google-b-d", "bing", "mercadolivre", "twitter", "wikipedia-pt"
+         ]
+       }
+     },
+     "pt-PT": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "amazon-en-GB", "ddg", "priberam", "wikipedia-pt"
++          "ddg", "google-b-d", "amazon-en-GB", "priberam", "wikipedia-pt"
+         ]
+       }
+     },
+     "rm": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "ddg", "ebay-ch", "leo_ende_de", "wikipedia-rm"
++          "ddg", "google-b-d", "bing", "ebay-ch", "leo_ende_de", "wikipedia-rm"
+         ]
+       }
+     },
+     "ro": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazondotcom", "ddg", "wikipedia-ro"
++          "ddg", "google-b-d", "bing", "amazondotcom", "wikipedia-ro"
+         ]
+       }
+     },
+     "ru": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "yandex-ru", "google-b-d", "ddg", "ozonru", "priceru", "wikipedia-ru", "mailru"
++          "ddg", "yandex-ru", "google-b-d", "ozonru", "priceru", "wikipedia-ru", "mailru"
+         ]
+       },
+       "RU": {
+-        "searchDefault": "Яндекс"
++        "searchDefault": "DuckDuckGo"
+       },
+       "BY": {
+-        "searchDefault": "Яндекс"
++        "searchDefault": "DuckDuckGo"
+       },
+       "KZ": {
+-        "searchDefault": "Яндекс"
++        "searchDefault": "DuckDuckGo"
+       },
+       "TR": {
+-        "searchDefault": "Яндекс"
++        "searchDefault": "DuckDuckGo"
+       }
+     },
+     "si": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "amazondotcom", "ddg", "wikipedia-si"
++          "ddg", "google-b-d", "amazondotcom", "wikipedia-si"
+         ]
+       }
+     },
+     "sk": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "azet-sk", "atlas-sk", "ddg", "wikipedia-sk", "zoznam-sk"
++          "ddg", "google-b-d", "azet-sk", "atlas-sk", "wikipedia-sk", "zoznam-sk"
+         ]
+       }
+     },
+     "sl": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "ceneji", "ddg", "najdi-si", "odpiralni", "twitter", "wikipedia-sl"
++          "ddg", "google-b-d", "ceneji", "najdi-si", "odpiralni", "twitter", "wikipedia-sl"
+         ]
+       }
+     },
+     "son": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazon-france", "ddg", "wikipedia-fr"
++          "ddg", "google-b-d", "bing", "amazon-france", "wikipedia-fr"
+         ]
+       }
+     },
+     "sq": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazon-en-GB", "ddg", "wikipedia-sq"
++          "ddg", "google-b-d", "bing", "amazon-en-GB", "wikipedia-sq"
+         ]
+       }
+     },
+     "sr": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "amazon-en-GB", "bing", "ddg", "wikipedia-sr", "pogodak"
++          "ddg", "google-b-d", "amazon-en-GB", "bing", "wikipedia-sr", "pogodak"
+         ]
+       }
+     },
+     "sv-SE": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "allaannonser-sv-SE", "ddg", "prisjakt-sv-SE", "tyda-sv-SE", "wikipedia-sv-SE"
++          "ddg", "google-b-d", "bing", "allaannonser-sv-SE", "prisjakt-sv-SE", "tyda-sv-SE", "wikipedia-sv-SE"
+         ]
+       }
+     },
+     "ta": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "amazon-in", "ddg", "wikipedia-ta"
++          "ddg", "google-b-d", "amazon-in", "wikipedia-ta"
+         ]
+       }
+     },
+     "te": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "amazon-in", "ddg", "wikipedia-te", "wiktionary-te"
++          "ddg", "google-b-d", "amazon-in", "wikipedia-te", "wiktionary-te"
+         ]
+       }
+     },
+     "th": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "amazondotcom", "bing", "ddg", "longdo", "wikipedia-th"
++          "ddg", "google-b-d", "amazondotcom", "bing", "longdo", "wikipedia-th"
+         ]
+       }
+     },
+     "tl": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-tl"
++          "ddg", "google-b-d", "bing", "amazondotcom", "twitter", "wikipedia-tl"
+         ]
+       }
+     },
+     "tr": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "yandex-tr", "google-b-d", "ddg", "twitter", "wikipedia-tr"
++          "ddg", "yandex-tr", "google-b-d", "twitter", "wikipedia-tr"
+         ]
+       },
+       "TR": {
+-        "searchDefault": "Yandex"
++        "searchDefault": "DuckDuckGo"
+       },
+       "BY": {
+-        "searchDefault": "Yandex"
++        "searchDefault": "DuckDuckGo"
+       },
+       "KZ": {
+-        "searchDefault": "Yandex"
++        "searchDefault": "DuckDuckGo"
+       },
+       "RU": {
+-        "searchDefault": "Yandex"
++        "searchDefault": "DuckDuckGo"
+       }
+     },
+     "trs": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazondotcom", "ddg", "wikipedia-es"
++          "ddg", "google-b-d", "bing", "amazondotcom", "wikipedia-es"
+         ]
+       }
+     },
+     "uk": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "ddg", "wikipedia-uk", "hotline-ua"
++          "ddg", "google-b-d", "bing", "wikipedia-uk", "hotline-ua"
+         ]
+       }
+     },
+     "ur": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazon-in", "ddg", "twitter", "wikipedia-ur"
++          "ddg", "google-b-d", "bing", "amazon-in", "twitter", "wikipedia-ur"
+         ]
+       }
+     },
+     "uz": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-uz"
++          "ddg", "google-b-d", "bing", "amazondotcom", "twitter", "wikipedia-uz"
+         ]
+       }
+     },
+     "vi": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "coccoc", "ddg", "wikipedia-vi"
++          "ddg", "google-b-d", "coccoc", "wikipedia-vi"
+         ]
+       }
+     },
+     "wo": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "amazon-france", "ddg", "ebay-fr", "twitter", "wikipedia-wo"
++          "ddg", "google-b-d", "bing", "amazon-france", "ebay-fr", "twitter", "wikipedia-wo"
+         ]
+       }
+     },
+     "xh": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "bing", "ddg", "wikipedia"
++          "ddg", "google-b-d", "bing", "wikipedia"
+         ]
+       }
+     },
+     "zh-CN": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "baidu", "google-b-d", "bing", "ddg", "wikipedia-zh-CN", "amazondotcn"
++          "ddg", "baidu", "google-b-d", "bing", "wikipedia-zh-CN", "amazondotcn"
+         ]
+       },
+       "CN": {
+-        "searchDefault": "百度"
++        "searchDefault": "DuckDuckGo"
+       }
+     },
+     "zh-TW": {
+       "default": {
+         "visibleDefaultEngines": [
+-          "google-b-d", "ddg", "readmoo", "wikipedia-zh-TW"
++          "ddg", "google-b-d", "readmoo", "wikipedia-zh-TW"
+         ]
+       }
+     }
diff --git a/gnu/packages/patches/icecat-disable-sync.patch b/gnu/packages/patches/icecat-disable-sync.patch
new file mode 100644
index 0000000000..6d4459ee31
--- /dev/null
+++ b/gnu/packages/patches/icecat-disable-sync.patch
@@ -0,0 +1,9 @@
+--- a/browser/app/profile/icecat.js.orig	1980-01-01 18:59:51.000000000 -0500
++++ b/browser/app/profile/icecat.js	2019-10-25 06:24:03.065989309 -0400
+@@ -2275,3 +2275,6 @@
+ pref("general.buildID.override", "Gecko/20100101");
+ pref("general.oscpu.override", "Windows NT 6.1");
+ pref("general.platform.override", "Win32");
++
++// Disable Firefox Accounts and Sign in to Sync.
++pref("identity.fxaccounts.enabled", false);
diff --git a/gnu/packages/patches/icecat-makeicecat.patch b/gnu/packages/patches/icecat-makeicecat.patch
index 7d4f774c83..f0b36d7d52 100644
--- a/gnu/packages/patches/icecat-makeicecat.patch
+++ b/gnu/packages/patches/icecat-makeicecat.patch
@@ -3,16 +3,16 @@ in a snippet without network access.  After this patch is applied, some
 additional changes will be made using 'substitute*'.
 
 diff --git a/makeicecat b/makeicecat
-index 5a4390b..fcfa143 100644
+index b04c731..06d1f3f 100644
 --- a/makeicecat
 +++ b/makeicecat
-@@ -29,55 +29,55 @@ SOURCEDIR=icecat-$FFVERSION
+@@ -30,55 +30,55 @@ SOURCEDIR=icecat-$FFVERSION
  
  DATA="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"/data
  
--mkdir output
+-mkdir -p output
 -cd output
-+# mkdir output
++# mkdir -p output
 +# cd output
  
  ###############################################################################
@@ -23,9 +23,9 @@ index 5a4390b..fcfa143 100644
 -
 -wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz
 -wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc
--gpg --recv-keys --keyserver keyserver.ubuntu.com 24C6F355
+-gpg --recv-keys --keyserver keyserver.ubuntu.com 14F26682D0916CDD81E37B6D61B7B526D98F0353
 -gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc
--echo -n 0a5f0c1d8d1e9443d85083d37fec32e5cc15c1001ea992d49745490065b4a023 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
+-echo -n f56f5fa5a4744be0b9acf259cb991254d708a50b9a0a12d1d846ffa5a6c409ac firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
 -
 -echo Extracting Firefox tarball
 -tar -xf firefox-${FFVERSION}esr.source.tar.xz
@@ -35,9 +35,9 @@ index 5a4390b..fcfa143 100644
 +# 
 +# wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz
 +# wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc
-+# gpg --recv-keys --keyserver keyserver.ubuntu.com 24C6F355
++# gpg --recv-keys --keyserver keyserver.ubuntu.com 14F26682D0916CDD81E37B6D61B7B526D98F0353
 +# gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc
-+# echo -n 0a5f0c1d8d1e9443d85083d37fec32e5cc15c1001ea992d49745490065b4a023 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
++# echo -n f56f5fa5a4744be0b9acf259cb991254d708a50b9a0a12d1d846ffa5a6c409ac firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
 +# 
 +# echo Extracting Firefox tarball
 +# tar -xf firefox-${FFVERSION}esr.source.tar.xz
@@ -98,7 +98,22 @@ index 5a4390b..fcfa143 100644
  
  #for patch in $DATA/patches/*; do
  #    echo Patching with file: $patch
-@@ -590,6 +590,6 @@ sed 's/777/755/;' -i toolkit/crashreporter/google-breakpad/Makefile.in
+@@ -226,10 +226,10 @@ cp $DATA/bookmarks.html.in browser/locales/generic/profile/bookmarks.html.in
+ 
+ find -wholename '*/brand.dtd' |xargs /bin/sed 's/trademarkInfo.part1.*/trademarkInfo.part1 "">/' -i
+ 
+-for STRING in rights.intro-point3-unbranded rights.intro-point4a-unbranded rights.intro-point4b-unbranded rights.intro-point4c-unbranded
+-do
+- find -name aboutRights.dtd | xargs sed -i "s/ENTITY $STRING.*/ENTITY $STRING \"\">/"
+-done
++# for STRING in rights.intro-point3-unbranded rights.intro-point4a-unbranded rights.intro-point4b-unbranded rights.intro-point4c-unbranded
++# do
++#  find -name aboutRights.dtd | xargs sed -i "s/ENTITY $STRING.*/ENTITY $STRING \"\">/"
++# done
+ 
+ for STRING in rights-intro-point-2 rights-intro-point-3 rights-intro-point-4 rights-intro-point-5 rights-intro-point-6 rights-webservices rights-safebrowsing
+ do
+@@ -595,6 +595,6 @@ sed 's/777/755/;' -i toolkit/crashreporter/google-breakpad/Makefile.in
  # Fix CVE-2012-3386
  /bin/sed 's/chmod a+w/chmod u+w/' -i ./js/src/ctypes/libffi/Makefile.in ./toolkit/crashreporter/google-breakpad/Makefile.in ./toolkit/crashreporter/google-breakpad/src/third_party/glog/Makefile.in || true
  
diff --git a/gnu/packages/perl-check.scm b/gnu/packages/perl-check.scm
index 2d2a24b6b0..0e1a0d653b 100644
--- a/gnu/packages/perl-check.scm
+++ b/gnu/packages/perl-check.scm
@@ -805,14 +805,14 @@ memory_cycle_ok( $object );
 (define-public perl-test-mockmodule
   (package
     (name "perl-test-mockmodule")
-    (version "0.170.0")
+    (version "0.171.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/G/GF/GFRANKS/"
                            "Test-MockModule-v" version ".tar.gz"))
        (sha256
-        (base32 "0pggwrlqj6k44qayhbpjqkzry1r626iy2vf30zlf2jdhbjbvlycz"))))
+        (base32 "1arqgb1773zym5dqlwm6kz48bfrccjhb5bjfsif0vkalwq2gvm7b"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-build" ,perl-module-build)
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 33d0f107d6..97d754d405 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -6549,7 +6549,7 @@ name, but they won't show up as methods on your class or instances.")
 (define-public perl-net-dns-native
   (package
     (name "perl-net-dns-native")
-    (version "0.20")
+    (version "0.21")
     (source
      (origin
        (method url-fetch)
@@ -6557,7 +6557,7 @@ name, but they won't show up as methods on your class or instances.")
              "mirror://cpan/authors/id/O/OL/OLEG/Net-DNS-Native-"
              version ".tar.gz"))
        (sha256
-        (base32 "0whm9l30frgzcfmlzqrsx3q5rdi8y6dhz33r4msgxrch8h97i8cb"))))
+        (base32 "0jjcgzmgas7k5rwalirrmbnlj4ihdxyydajc18qviwg863qjannl"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Net-DNS-Native")
     (synopsis "Non-blocking system DNS resolver")
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
index ca7f0ee892..b144a6b26a 100644
--- a/gnu/packages/php.scm
+++ b/gnu/packages/php.scm
@@ -58,7 +58,7 @@
 (define-public php
   (package
     (name "php")
-    (version "7.3.8")
+    (version "7.3.11")
     (home-page "https://secure.php.net/")
     (source (origin
               (method url-fetch)
@@ -66,7 +66,7 @@
                                   "php-" version ".tar.xz"))
               (sha256
                (base32
-                "19fm990yl97fq538lkp0m1imbp30qrx7785x211w1n15wqm6n17n"))
+                "088hl1gyjr7a8ipdzylwy00c4xmvywn7mh2r1i4yja5c9d3gcz35"))
               (modules '((guix build utils)))
               (snippet
                '(with-directory-excursion "ext"
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 7a2e1a7d81..019cc7664c 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -5438,13 +5438,13 @@ installing @code{kernelspec}s for use with Jupyter frontends.")
 (define-public python-ipykernel
   (package
     (name "python-ipykernel")
-    (version "5.1.1")
+    (version "5.1.3")
     (source
      (origin
       (method url-fetch)
       (uri (pypi-uri "ipykernel" version))
       (sha256
-       (base32 "173nm29g85w8cac3fg40b27qaq26g41wgg6qn79ql1hq4w2n5sgh"))))
+       (base32 "1a08y677lpn80qzvv7z0smgggmr5m5ayf0bs6vds47xpxl9sss5k"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -5469,8 +5469,9 @@ installing @code{kernelspec}s for use with Jupyter frontends.")
        ;; imported at runtime during connect
        ("python-jupyter-client" ,python-jupyter-client)))
     (native-inputs
-     `(("python-pytest" ,python-pytest)
-       ("python-nose" ,python-nose)))
+     `(("python-flaky" ,python-flaky)
+       ("python-nose" ,python-nose)
+       ("python-pytest" ,python-pytest)))
     (home-page "https://ipython.org")
     (synopsis "IPython Kernel for Jupyter")
     (description
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 71d02eac52..b4fd02cd9a 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -18,6 +18,7 @@
 ;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org>
 ;;; Copyright © 2019 Brian Leung <bkleung89@gmail.com>
 ;;; Copyright © 2019 Collin J. Doering <collin@rekahsoft.ca>
+;;; Copyright © 2019 Diego N. Barbato <dnbarbato@posteo.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -8966,3 +8967,29 @@ programming: intellisense, diagnostics, inline documentation, and type
 checking.")
     (home-page "https://solargraph.org/")
     (license license:expat)))
+
+(define-public ruby-wayback-machine-downloader
+  (package
+    (name "ruby-wayback-machine-downloader")
+    (version "2.2.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri
+             "wayback_machine_downloader"
+             version))
+       (sha256
+        (base32
+         "12kb1qmvmmsaihqab1prn6cmynkn6cgb4vf41mgv22wkcgv5wgk2"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:tests? #f)) ; no tests
+    (synopsis "Download archived websites from the Wayback Machine")
+    (description
+     "Wayback Machine Downloader is a command line tool for downloading
+websites from the Internet Archive's Wayback Machine (archive.org).
+It allows fine grained control over what to download by specifying
+which snapshots to consider and what files to include.")
+    (home-page
+     "https://github.com/hartator/wayback-machine-downloader")
+    (license license:expat)))
diff --git a/gnu/packages/security-token.scm b/gnu/packages/security-token.scm
index 90892a57e8..fb84a764ab 100644
--- a/gnu/packages/security-token.scm
+++ b/gnu/packages/security-token.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018, 2019 Chris Marusich <cmmarusich@gmail.com>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;;
@@ -35,6 +35,7 @@
   #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system python)
   #:use-module (gnu packages autotools)
+  #:use-module (gnu packages base)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages check)
   #:use-module (gnu packages docbook)
@@ -455,6 +456,49 @@ operations.")
     ;; Most files are LGPLv2.1+, but some files are GPLv3+.
     (license (list license:lgpl2.1+ license:gpl3+))))
 
+(define-public libu2f-server
+  (package
+    (name "libu2f-server")
+    (version "1.1.0")
+    (source (origin
+              (method git-fetch)
+              (uri
+               (git-reference
+                (url "https://github.com/Yubico/libu2f-server.git")
+                (commit (string-append "libu2f-server-" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1nmsfq372zza5y6j13ydincjf324bwfcjg950vykh166xkp6wiic"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       (list "--enable-gtk-doc"
+             "--enable-tests")))
+    (inputs
+     `(("json-c" ,json-c)
+       ("libressl" ,libressl)))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("check" ,check)
+       ("gengetopt" ,gengetopt)
+       ("help2man" ,help2man)
+       ("pkg-config" ,pkg-config)
+       ("gtk-doc" ,gtk-doc)
+       ("which" ,which)))
+    (home-page "https://developers.yubico.com/libu2f-server/")
+    ;; TRANSLATORS: The U2F protocol has a "server side" and a "host side".
+    (synopsis "U2F server-side C library")
+    (description
+     "This is a C library that implements the server-side of the
+@dfn{Universal 2nd Factor} (U2F) protocol.  More precisely, it provides an API
+for generating the JSON blobs required by U2F devices to perform the U2F
+Registration and U2F Authentication operations, and functionality for
+verifying the cryptographic operations.")
+    (license license:bsd-2)))
+
 (define-public python-fido2
   (package
     (name "python-fido2")
diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm
index 00e768d727..f626e0e5f6 100644
--- a/gnu/packages/ssh.scm
+++ b/gnu/packages/ssh.scm
@@ -70,7 +70,7 @@
 (define-public libssh
   (package
     (name "libssh")
-    (version "0.9.0")
+    (version "0.9.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -78,7 +78,7 @@
                      (commit (string-append "libssh-" version))))
               (sha256
                (base32
-                "0hxws8vl56cbjwchmj0x78ywv2b8spv6h90sgma1vj1y9dybgs7s"))
+                "1gn8ssb1j8p41w6zy6iagbafgvcgn36ci9yyhhq83sragfjsvxaz"))
               (file-name (git-file-name name version))))
     (build-system cmake-build-system)
     (outputs '("out" "debug"))
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 66bb2755d2..4618c29c7c 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -612,14 +612,14 @@ nonlinear mixed-effects models.")
 (define-public r-mgcv
   (package
    (name "r-mgcv")
-   (version "1.8-29")
+   (version "1.8-30")
    (source
     (origin
      (method url-fetch)
      (uri (cran-uri "mgcv" version))
      (sha256
       (base32
-       "1236gz25nap1aprbvcrqvmmnl6f8cvbjy8dcl4j968cpalqax5ww"))))
+       "0x9jr0a4r8v6jb0r4m3m1sk606s2x3lmg5ndz5bz0xxvqpzf593q"))))
    (build-system r-build-system)
    (propagated-inputs
     `(("r-matrix" ,r-matrix)
@@ -805,13 +805,13 @@ effects of different types of color-blindness.")
 (define-public r-digest
   (package
     (name "r-digest")
-    (version "0.6.21")
+    (version "0.6.22")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "digest" version))
        (sha256
-        (base32 "0qycqchmv59fb6jp369d82mcx9xgbv70m18qzam0vrs8zkmajb17"))))
+        (base32 "1qav52y1qmkg9j2g48mrl6bbjwhs0fs9dl55xb62lfkrihkappqh"))))
     (build-system r-build-system)
     ;; Vignettes require r-knitr, which requires r-digest, so we have to
     ;; disable them and the tests.
@@ -1656,13 +1656,13 @@ defined in different packages.")
 (define-public r-rlang
   (package
     (name "r-rlang")
-    (version "0.4.0")
+    (version "0.4.1")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "rlang" version))
               (sha256
                (base32
-                "038mmbmklw17ncgz53vrdx2506c1jj6di3y165bbx2sl2yia8j4p"))))
+                "122hhc7pdri8wkjmk37y71m4h1gmdzaqcfdizfdjg1bhy935i10k"))))
     (build-system r-build-system)
     (home-page "http://rlang.tidyverse.org")
     (synopsis "Functions for base types, core R and Tidyverse features")
@@ -5288,14 +5288,14 @@ Companion to Applied Regression, Third Edition, Sage.")
 (define-public r-car
   (package
     (name "r-car")
-    (version "3.0-3")
+    (version "3.0-4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "car" version))
        (sha256
         (base32
-         "0vy3g3bjljd2al8xb9qr45f98is7yppc9jilqn7b6zvf5yqpr07s"))))
+         "1mhfxrb62yanaz36f4n38p9hhnqbs5b19k0864w4ja1ccgh3nl3f"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-abind" ,r-abind)
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 76370b7925..bfc5e710c4 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -482,7 +482,7 @@ required structures.")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://openbsd/LibreSSL/"
-                                  name "-" version ".tar.gz"))
+                                  "libressl-" version ".tar.gz"))
               (sha256
                (base32
                 "19kxa5i97q7p6rrps9qm0nd8zqhdjvzx02j72400c73cl2nryfhy"))))
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 5b7b529fd6..50945c038e 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -1494,7 +1494,7 @@ projects while introducing many more.")
 (define-public youtube-dl
   (package
     (name "youtube-dl")
-    (version "2019.09.28")
+    (version "2019.10.22")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/ytdl-org/youtube-dl/"
@@ -1502,7 +1502,7 @@ projects while introducing many more.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0nrk0bk6lksnmng8lwhcpkc57iibzjjamlqz8rxjpsw6dnzxz82h"))))
+                "06wg6wpyq0fawjxjrhd7zasfjr9b6w9wsk2amiqdl712zqlq2rwb"))))
     (build-system python-build-system)
     (arguments
      ;; The problem here is that the directory for the man page and completion
@@ -3545,16 +3545,15 @@ transitions, and effects and then export your film to many common formats.")
 (define-public dav1d
   (package
     (name "dav1d")
-    (version "0.5.0")
+    (version "0.5.1")
     (source
       (origin
         (method url-fetch)
         (uri (string-append "https://downloads.videolan.org/pub/videolan"
                             "/dav1d/" version "/dav1d-" version ".tar.xz"))
-        (patches (search-patches "dav1d-aarch64-symbol-alignment.patch"))
         (sha256
          (base32
-          "1586k439fm8db9lsxxywm34iqibj5mw4xrppr4g2wqr0hjlhcbxn"))))
+          "03cf6f9if45prq97qp7llzi1p71dyw9ymc87hc225iy89kmzjsdd"))))
     (build-system meson-build-system)
     (native-inputs `(("nasm" ,nasm)))
     (home-page "https://code.videolan.org/videolan/dav1d")
diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm
index 67980f76c3..9d7c63d046 100644
--- a/gnu/packages/vpn.scm
+++ b/gnu/packages/vpn.scm
@@ -452,14 +452,14 @@ The peer-to-peer VPN implements a Layer 2 (Ethernet) network between the peers
 (define-public wireguard
   (package
     (name "wireguard")
-    (version "0.0.20190913")
+    (version "0.0.20191012")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://git.zx2c4.com/WireGuard/snapshot/"
                                   "WireGuard-" version ".tar.xz"))
               (sha256
                (base32
-                "06452jfibwar4sh7wf2k2k1a5qk5q703gxqqq5ymj6rdblc2fwwr"))))
+                "13psxk61d60sas0ksfk0gakrv8wc8anjj5zb67g2zhn1r69k2mwk"))))
     (build-system gnu-build-system)
     (outputs '("out" ; The WireGuard userspace tools
                "kernel-patch")) ; A patch to build Linux with WireGuard support
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index 6a1eb9324e..1b41aec874 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -265,6 +265,8 @@ nntp, finger, or cso/ph/qi servers.  Lynx can be used to access information on
 the WWW, or to build information systems intended primarily for local
 access.")
     (home-page "https://lynx.invisible-island.net/")
+    ;; This was fixed in 2.8.9dev.10.
+    (properties `((lint-hidden-cve . ("CVE-2016-9179"))))
     (license license:gpl2)))
 
 (define-public qutebrowser
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 6aa4ebf0bb..7d64c4db46 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -212,14 +212,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.17.4")
+    (version "1.17.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://nginx.org/download/nginx-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0mg521bxh8pysmy20x599m252ici9w97kk7qy7s0wrv6bqv4p1b2"))))
+                "1hqhziic4csci8xs4q8vbzpmj2qjkhmmx68zza7h5bvmbbhkbvk3"))))
     (build-system gnu-build-system)
     (inputs `(("openssl" ,openssl)
               ("pcre" ,pcre)
@@ -5076,13 +5076,13 @@ deployments.")
   (package
     (name "varnish")
     (home-page "https://varnish-cache.org/")
-    (version "6.3.0")
+    (version "6.3.1")
     (source (origin
               (method url-fetch)
               (uri (string-append home-page "_downloads/varnish-" version ".tgz"))
               (sha256
                (base32
-                "0zwlffdd1m0ih33nq40xf2wwdyvr4czmns2fs90qpfnwy72xxk4m"))))
+                "0xa14pd68zpi5hxcax3arl14rcmh5d1cdwa8gv4l5f23mmynr8ni"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib")
@@ -5568,7 +5568,7 @@ snippets on @url{https://commandlinefu.com}.")
 (define-public rss-bridge
   (package
     (name "rss-bridge")
-    (version "2019-07-06")
+    (version "2019-09-12")
     (source
      (origin
        (method git-fetch)
@@ -5577,8 +5577,7 @@ snippets on @url{https://commandlinefu.com}.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0zd0c9xzvpx55mvj8xrafakfkvafnwkkvhw9b1j0bf897xdkfsyb"))))
+        (base32 "1mx7f3l45nqhcrng531l4cq8kpzm164hhbwn26g5akb2pamdlnra"))))
     (build-system trivial-build-system)
     (arguments
      '(#:modules ((guix build utils))
@@ -5597,7 +5596,7 @@ snippets on @url{https://commandlinefu.com}.")
 websites lacking feeds.  Supported websites include Facebook, Twitter,
 Instagram and YouTube.")
     (license (list license:public-domain
-                   license:expat)))) ;; vendor/simplehtmldom/simple_html_dom.php
+                   license:expat))))    ; vendor/simplehtmldom/simple_html_dom.php
 
 (define-public linkchecker
   (package
diff --git a/gnu/services/cuirass.scm b/gnu/services/cuirass.scm
index 914a0d337f..d92421762a 100644
--- a/gnu/services/cuirass.scm
+++ b/gnu/services/cuirass.scm
@@ -164,6 +164,7 @@
   (let ((cache (cuirass-configuration-cache-directory config))
         (db    (dirname (cuirass-configuration-database config)))
         (user  (cuirass-configuration-user config))
+        (log   "/var/log/cuirass")
         (group (cuirass-configuration-group config)))
     (with-imported-modules '((guix build utils))
       #~(begin
@@ -171,11 +172,13 @@
 
           (mkdir-p #$cache)
           (mkdir-p #$db)
+          (mkdir-p #$log)
 
           (let ((uid (passwd:uid (getpw #$user)))
                 (gid (group:gid (getgr #$group))))
             (chown #$cache uid gid)
-            (chown #$db uid gid))))))
+            (chown #$db uid gid)
+            (chown #$log uid gid))))))
 
 (define (cuirass-log-rotations config)
   "Return the list of log rotations that corresponds to CONFIG."
diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index 1d55e388a1..9c84f7413f 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -835,6 +835,7 @@ the GNOME desktop environment.")
   (allow-empty-passwords? gdm-configuration-allow-empty-passwords? (default #t))
   (auto-login? gdm-configuration-auto-login? (default #f))
   (dbus-daemon gdm-configuration-dbus-daemon (default dbus-daemon-wrapper))
+  (debug? gdm-configuration-debug? (default #f))
   (default-user gdm-configuration-default-user (default #f))
   (gnome-shell-assets gdm-configuration-gnome-shell-assets
                       (default (list adwaita-icon-theme font-cantarell)))
@@ -866,7 +867,9 @@ the GNOME desktop environment.")
                    "WaylandEnable=false\n"
                    "\n"
                    "[debug]\n"
-                   "#Enable=true\n"
+                   "Enable=" (if (gdm-configuration-debug? config)
+                                 "true"
+                                 "false") "\n"
                    "\n"
                    "[security]\n"
                    "#DisallowTCP=true\n"
diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm
index 3ee0b737fe..9ad7379bbe 100644
--- a/guix/scripts/build.scm
+++ b/guix/scripts/build.scm
@@ -522,7 +522,20 @@ options handled by 'set-build-options-from-command-line', and listed in
 (define (set-build-options-from-command-line store opts)
   "Given OPTS, an alist as returned by 'args-fold' given
 '%standard-build-options', set the corresponding build options on STORE."
-  ;; TODO: Add more options.
+
+  ;; '--keep-failed' has no effect when talking to a remote daemon.  Catch the
+  ;; case where GUIX_DAEMON_SOCKET=guix://….
+  (when (and (assoc-ref opts 'keep-failed?)
+             (let* ((socket (store-connection-socket store))
+                    (peer   (catch 'system-error
+                              (lambda ()
+                                (and (file-port? socket)
+                                     (getpeername socket)))
+                              (const #f))))
+               (and peer (not (= AF_UNIX (sockaddr:fam peer))))))
+    (warning (G_ "'--keep-failed' ignored since you are \
+talking to a remote daemon\n")))
+
   (set-build-options store
                      #:keep-failed? (assoc-ref opts 'keep-failed?)
                      #:keep-going? (assoc-ref opts 'keep-going?)