summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--lib/licenses.nix5
-rw-r--r--maintainers/maintainer-list.nix6
-rw-r--r--nixos/modules/services/networking/syncthing.nix18
-rw-r--r--nixos/modules/system/boot/networkd.nix40
-rw-r--r--nixos/tests/corerad.nix3
-rw-r--r--pkgs/applications/audio/bitwig-studio/bitwig-studio3.nix8
-rw-r--r--pkgs/applications/audio/rosegarden/default.nix4
-rw-r--r--pkgs/applications/audio/string-machine/default.nix36
-rw-r--r--pkgs/applications/editors/android-studio/default.nix6
-rw-r--r--pkgs/applications/editors/bviplus/default.nix4
-rw-r--r--pkgs/applications/graphics/imgp/default.nix38
-rw-r--r--pkgs/applications/graphics/runwayml/default.nix4
-rw-r--r--pkgs/applications/networking/cluster/kubernetes/default.nix4
-rw-r--r--pkgs/applications/networking/instant-messengers/spectral/default.nix18
-rw-r--r--pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix37
-rw-r--r--pkgs/applications/office/kmymoney/default.nix4
-rw-r--r--pkgs/applications/radio/flrig/default.nix4
-rw-r--r--pkgs/applications/version-management/git-and-tools/default.nix2
-rw-r--r--pkgs/applications/version-management/git-and-tools/hub/default.nix4
-rw-r--r--pkgs/applications/version-management/git-and-tools/thicket/default.nix26
-rw-r--r--pkgs/applications/version-management/git-and-tools/thicket/shards.nix8
-rw-r--r--pkgs/applications/video/obs-studio/default.nix2
-rw-r--r--pkgs/applications/video/shotcut/0001-encodedock.cpp-connect-to-VAAPI-via-DRM-not-X11.patch33
-rw-r--r--pkgs/applications/video/shotcut/default.nix2
-rw-r--r--pkgs/applications/virtualization/podman/default.nix12
-rw-r--r--pkgs/applications/window-managers/notion/default.nix50
-rw-r--r--pkgs/applications/window-managers/notion/notion-xft_nixos.diff662
-rw-r--r--pkgs/data/fonts/jetbrains-mono/default.nix10
-rw-r--r--pkgs/data/icons/iconpack-obsidian/default.nix12
-rw-r--r--pkgs/desktops/cinnamon/cinnamon-settings-daemon/csd-backlight-helper-fix.patch48
-rw-r--r--pkgs/desktops/cinnamon/cinnamon-settings-daemon/default.nix111
-rw-r--r--pkgs/desktops/cinnamon/default.nix1
-rw-r--r--pkgs/desktops/gnome-3/apps/gnome-boxes/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/games/four-in-a-row/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/games/iagno/default.nix4
-rw-r--r--pkgs/desktops/pantheon/apps/elementary-screenshot-tool/default.nix4
-rw-r--r--pkgs/desktops/pantheon/apps/switchboard-plugs/mouse-touchpad/default.nix4
-rw-r--r--pkgs/desktops/pantheon/artwork/elementary-gtk-theme/default.nix4
-rw-r--r--pkgs/development/interpreters/perl/wrapper.nix2
-rw-r--r--pkgs/development/libraries/cppzmq/default.nix4
-rw-r--r--pkgs/development/libraries/gcab/default.nix4
-rw-r--r--pkgs/development/libraries/olm/default.nix14
-rw-r--r--pkgs/development/libraries/science/math/m4rie/default.nix4
-rw-r--r--pkgs/development/python-modules/ansible/default.nix4
-rw-r--r--pkgs/development/python-modules/avro-python3/default.nix4
-rw-r--r--pkgs/development/python-modules/dash-core-components/default.nix24
-rw-r--r--pkgs/development/python-modules/dash-html-components/default.nix24
-rw-r--r--pkgs/development/python-modules/dash-renderer/default.nix24
-rw-r--r--pkgs/development/python-modules/dash-table/default.nix24
-rw-r--r--pkgs/development/python-modules/dash/default.nix63
-rw-r--r--pkgs/development/python-modules/dask-ml/default.nix4
-rw-r--r--pkgs/development/python-modules/denonavr/default.nix29
-rw-r--r--pkgs/development/python-modules/django-auth-ldap/default.nix4
-rw-r--r--pkgs/development/python-modules/flask-sockets/default.nix37
-rw-r--r--pkgs/development/python-modules/fluidasserts/default.nix40
-rw-r--r--pkgs/development/python-modules/nest-asyncio/default.nix5
-rw-r--r--pkgs/development/python-modules/plexapi/default.nix26
-rw-r--r--pkgs/development/python-modules/plexauth/default.nix31
-rw-r--r--pkgs/development/python-modules/plexwebsocket/default.nix31
-rw-r--r--pkgs/development/python-modules/runway-python/default.nix15
-rw-r--r--pkgs/development/python-modules/vega/default.nix4
-rw-r--r--pkgs/development/tools/build-managers/icmake/default.nix4
-rw-r--r--pkgs/development/web/postman/default.nix4
-rw-r--r--pkgs/games/crispy-doom/default.nix4
-rw-r--r--pkgs/games/nudoku/default.nix31
-rw-r--r--pkgs/misc/drivers/hplip/default.nix4
-rw-r--r--pkgs/misc/uboot/default.nix32
-rw-r--r--pkgs/os-specific/linux/health-check/default.nix4
-rw-r--r--pkgs/os-specific/linux/powerstat/default.nix4
-rw-r--r--pkgs/servers/http/jetty/default.nix4
-rw-r--r--pkgs/servers/metabase/default.nix4
-rw-r--r--pkgs/servers/mqtt/mosquitto/default.nix4
-rw-r--r--pkgs/servers/nextcloud/default.nix4
-rw-r--r--pkgs/servers/search/groonga/default.nix4
-rw-r--r--pkgs/tools/admin/ansible/default.nix20
-rw-r--r--pkgs/tools/backup/luckybackup/default.nix45
-rw-r--r--pkgs/tools/filesystems/glusterfs/default.nix4
-rw-r--r--pkgs/tools/graphics/argyllcms/default.nix4
-rw-r--r--pkgs/tools/misc/diffoscope/default.nix4
-rw-r--r--pkgs/tools/misc/h/default.nix28
-rw-r--r--pkgs/tools/misc/mcfly/default.nix13
-rw-r--r--pkgs/tools/misc/mutagen/default.nix24
-rw-r--r--pkgs/tools/misc/pspg/default.nix10
-rw-r--r--pkgs/tools/networking/corerad/default.nix6
-rw-r--r--pkgs/tools/networking/v2ray/default.nix12
-rw-r--r--pkgs/tools/security/munge/default.nix4
-rw-r--r--pkgs/tools/text/mawk/default.nix4
-rw-r--r--pkgs/tools/text/ocrmypdf/default.nix16
-rw-r--r--pkgs/tools/text/ocrmypdf/liblept.patch13
-rw-r--r--pkgs/tools/typesetting/asciidoctorj/default.nix4
-rw-r--r--pkgs/top-level/aliases.nix1
-rw-r--r--pkgs/top-level/all-packages.nix28
-rw-r--r--pkgs/top-level/python-packages.nix20
93 files changed, 1107 insertions, 927 deletions
diff --git a/lib/licenses.nix b/lib/licenses.nix
index 986b7fa1fdd..e2f94e565ce 100644
--- a/lib/licenses.nix
+++ b/lib/licenses.nix
@@ -536,11 +536,6 @@ lib.mapAttrs (n: v: v // { shortName = n; }) {
     fullName  = "University of Illinois/NCSA Open Source License";
   };
 
-  notion_lgpl = {
-    url = "https://raw.githubusercontent.com/raboof/notion/master/LICENSE";
-    fullName = "Notion modified LGPL";
-  };
-
   nposl3 = spdx {
     spdxId = "NPOSL-3.0";
     fullName = "Non-Profit Open Software License 3.0";
diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix
index a63968e172e..2730218f48f 100644
--- a/maintainers/maintainer-list.nix
+++ b/maintainers/maintainer-list.nix
@@ -517,6 +517,12 @@
     githubId = 5327697;
     name = "Anatolii Prylutskyi";
   };
+  antoinerg = {
+    email = "roygobeil.antoine@gmail.com";
+    github = "antoinerg";
+    githubId = 301546;
+    name = "Antoine Roy-Gobeil";
+  };
   anton-dessiatov = {
     email = "anton.dessiatov@gmail.com";
     github = "anton-dessiatov";
diff --git a/nixos/modules/services/networking/syncthing.nix b/nixos/modules/services/networking/syncthing.nix
index 47b10e408c0..5b3eb6f04b4 100644
--- a/nixos/modules/services/networking/syncthing.nix
+++ b/nixos/modules/services/networking/syncthing.nix
@@ -484,6 +484,24 @@ in {
               -gui-address=${cfg.guiAddress} \
               -home=${cfg.configDir}
           '';
+          MemoryDenyWriteExecute = true;
+          NoNewPrivileges = true;
+          PrivateDevices = true;
+          PrivateMounts = true;
+          PrivateTmp = true;
+          PrivateUsers = true;
+          ProtectControlGroups = true;
+          ProtectHostname = true;
+          ProtectKernelModules = true;
+          ProtectKernelTunables = true;
+          RestrictNamespaces = true;
+          RestrictRealtime = true;
+          RestrictSUIDSGID = true;
+          CapabilityBoundingSet = [
+            "~CAP_SYS_PTRACE" "~CAP_SYS_ADMIN"
+            "~CAP_SETGID" "~CAP_SETUID" "~CAP_SETPCAP"
+            "~CAP_SYS_TIME" "~CAP_KILL"
+          ];
         };
       };
       syncthing-init = mkIf (
diff --git a/nixos/modules/system/boot/networkd.nix b/nixos/modules/system/boot/networkd.nix
index 3e289a63139..56a9d6b1138 100644
--- a/nixos/modules/system/boot/networkd.nix
+++ b/nixos/modules/system/boot/networkd.nix
@@ -49,7 +49,7 @@ let
     (assertValueOneOf "Kind" [
       "bond" "bridge" "dummy" "gre" "gretap" "ip6gre" "ip6tnl" "ip6gretap" "ipip"
       "ipvlan" "macvlan" "macvtap" "sit" "tap" "tun" "veth" "vlan" "vti" "vti6"
-      "vxlan" "geneve" "vrf" "vcan" "vxcan" "wireguard" "netdevsim"
+      "vxlan" "geneve" "vrf" "vcan" "vxcan" "wireguard" "netdevsim" "xfrm"
     ])
     (assertByteFormat "MTUBytes")
     (assertMacAddress "MACAddress")
@@ -172,6 +172,14 @@ let
     (assertValueOneOf "AllSlavesActive" boolValues)
   ];
 
+  checkXfrm = checkUnitConfig "Xfrm" [
+    (assertOnlyFields [
+      "InterfaceId" "Independent"
+    ])
+    (assertRange "InterfaceId" 1 4294967295)
+    (assertValueOneOf "Independent" boolValues)
+  ];
+
   checkNetwork = checkUnitConfig "Network" [
     (assertOnlyFields [
       "Description" "DHCP" "DHCPServer" "LinkLocalAddressing" "IPv4LLRoute"
@@ -182,7 +190,7 @@ let
       "IPv6HopLimit" "IPv4ProxyARP" "IPv6ProxyNDP" "IPv6ProxyNDPAddress"
       "IPv6PrefixDelegation" "IPv6MTUBytes" "Bridge" "Bond" "VRF" "VLAN"
       "IPVLAN" "MACVLAN" "VXLAN" "Tunnel" "ActiveSlave" "PrimarySlave"
-      "ConfigureWithoutCarrier"
+      "ConfigureWithoutCarrier" "Xfrm"
     ])
     # Note: For DHCP the values both, none, v4, v6 are deprecated
     (assertValueOneOf "DHCP" ["yes" "no" "ipv4" "ipv6" "both" "none" "v4" "v6"])
@@ -477,6 +485,18 @@ let
       '';
     };
 
+    xfrmConfig = mkOption {
+      default = {};
+      example = { InterfaceId = 1; };
+      type = types.addCheck (types.attrsOf unitOption) checkXfrm;
+      description = ''
+        Each attribute in this set specifies an option in the
+        <literal>[Xfrm]</literal> section of the unit.  See
+        <citerefentry><refentrytitle>systemd.netdev</refentrytitle>
+        <manvolnum>5</manvolnum></citerefentry> for details.
+      '';
+    };
+
   };
 
   addressOptions = {
@@ -712,6 +732,16 @@ let
       '';
     };
 
+    xfrm = mkOption {
+      default = [ ];
+      type = types.listOf types.str;
+      description = ''
+        A list of xfrm interfaces to be added to the network section of the
+        unit.  See <citerefentry><refentrytitle>systemd.network</refentrytitle>
+        <manvolnum>5</manvolnum></citerefentry> for details.
+      '';
+    };
+
     addresses = mkOption {
       default = [ ];
       type = with types; listOf (submodule addressOptions);
@@ -810,6 +840,11 @@ let
             ${attrsToSection def.bondConfig}
 
           ''}
+          ${optionalString (def.xfrmConfig != { }) ''
+            [Xfrm]
+            ${attrsToSection def.xfrmConfig}
+
+          ''}
           ${optionalString (def.wireguardConfig != { }) ''
             [WireGuard]
             ${attrsToSection def.wireguardConfig}
@@ -847,6 +882,7 @@ let
           ${concatStringsSep "\n" (map (s: "MACVLAN=${s}") def.macvlan)}
           ${concatStringsSep "\n" (map (s: "VXLAN=${s}") def.vxlan)}
           ${concatStringsSep "\n" (map (s: "Tunnel=${s}") def.tunnel)}
+          ${concatStringsSep "\n" (map (s: "Xfrm=${s}") def.xfrm)}
 
           ${optionalString (def.dhcpConfig != { }) ''
             [DHCP]
diff --git a/nixos/tests/corerad.nix b/nixos/tests/corerad.nix
index 68b698857b4..950c9abc899 100644
--- a/nixos/tests/corerad.nix
+++ b/nixos/tests/corerad.nix
@@ -18,8 +18,7 @@ import ./make-test-python.nix (
               [[interfaces]]
               name = "eth1"
               send_advertisements = true
-                [[interfaces.plugins]]
-                name = "prefix"
+                [[interfaces.prefix]]
                 prefix = "::/64"
             '';
           };
diff --git a/pkgs/applications/audio/bitwig-studio/bitwig-studio3.nix b/pkgs/applications/audio/bitwig-studio/bitwig-studio3.nix
index 0cff19819c0..64ee40e038c 100644
--- a/pkgs/applications/audio/bitwig-studio/bitwig-studio3.nix
+++ b/pkgs/applications/audio/bitwig-studio/bitwig-studio3.nix
@@ -2,18 +2,16 @@
 
 bitwig-studio1.overrideAttrs (oldAttrs: rec {
   name = "bitwig-studio-${version}";
-  version = "3.1.1";
+  version = "3.1.2";
 
   src = fetchurl {
     url = "https://downloads.bitwig.com/stable/${version}/bitwig-studio-${version}.deb";
-    sha256 = "1mgyyl1mr8hmzn3qdmg77km6sk58hyd0gsqr9jksh0a8p6hj24pk";
+    sha256 = "07djn52lz43ls6fa4k1ncz3m1nc5zv2j93hwyavnr66r0hlqy7l9";
   };
 
   buildInputs = oldAttrs.buildInputs ++ [ xorg.libXtst ];
 
-  runtimeDependencies = [
-    pulseaudio
-  ];
+  runtimeDependencies = [ pulseaudio ];
 
   installPhase = ''
     ${oldAttrs.installPhase}
diff --git a/pkgs/applications/audio/rosegarden/default.nix b/pkgs/applications/audio/rosegarden/default.nix
index aaceab6dc08..8d8e3e1b6c0 100644
--- a/pkgs/applications/audio/rosegarden/default.nix
+++ b/pkgs/applications/audio/rosegarden/default.nix
@@ -3,12 +3,12 @@
 , liblo, liblrdf, libsamplerate, libsndfile, lirc ? null, qtbase }:
 
 stdenv.mkDerivation (rec {
-  version = "19.06";
+  version = "19.12";
   pname = "rosegarden";
 
   src = fetchurl {
     url = "mirror://sourceforge/rosegarden/${pname}-${version}.tar.bz2";
-    sha256 = "169qb58v2s8va59hzkih8nqb2aipsqlrbfs8q39ywqa8w5d60gcc";
+    sha256 = "1qcaxc6hdzva7kwxxhgl95437fagjbxzv4mihsgpr7y9qk08ppw1";
   };
 
   patchPhase = ''
diff --git a/pkgs/applications/audio/string-machine/default.nix b/pkgs/applications/audio/string-machine/default.nix
new file mode 100644
index 00000000000..67053baa35f
--- /dev/null
+++ b/pkgs/applications/audio/string-machine/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, boost, cairo, lv2, pkg-config }:
+
+stdenv.mkDerivation rec {
+  pname = "string-machine";
+  version = "unstable-2020-01-20";
+
+  src = fetchFromGitHub {
+    owner = "jpcima";
+    repo = pname;
+    rev = "188082dd0beb9a3c341035604841c53675fe66c4";
+    sha256 = "0l9xrzp3f0hk6h320qh250a0n1nbd6qhjmab21sjmrlb4ngy672v";
+    fetchSubmodules = true;
+  };
+
+  postPatch = ''
+    patchShebangs ./dpf/utils/generate-ttl.sh
+  '';
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs = [
+    boost cairo lv2
+  ];
+
+  makeFlags = [
+    "PREFIX=$(out)"
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/jpcima/string-machine";
+    description = "Digital model of electronic string ensemble instrument";
+    maintainers = [ maintainers.magnetophon ];
+    platforms = intersectLists platforms.linux platforms.x86;
+    license = licenses.boost;
+  };
+}
diff --git a/pkgs/applications/editors/android-studio/default.nix b/pkgs/applications/editors/android-studio/default.nix
index 219c13f241c..4bea9188579 100644
--- a/pkgs/applications/editors/android-studio/default.nix
+++ b/pkgs/applications/editors/android-studio/default.nix
@@ -18,9 +18,9 @@ let
     sha256Hash = "0xpcihr5xxr9l1kv6aflywshs8fww3s7di0g98mz475whhxwzf3q";
   };
   latestVersion = { # canary & dev
-    version = "4.0.0.8"; # "Android Studio 4.0 Canary 8"
-    build = "193.6107147";
-    sha256Hash = "0bdibjp52jjlyh0966p9657xxmz1z7vi262v6ss4ywpb7gpaj9qq";
+    version = "4.0.0.9"; # "Android Studio 4.0 Canary 9"
+    build = "193.6137316";
+    sha256Hash = "1cgxyqp85z5x2jnjh1qabn2cfiziiwvfr6iggzb531dlhllyfyqw";
   };
 in {
   # Attributes are named by their corresponding release channels
diff --git a/pkgs/applications/editors/bviplus/default.nix b/pkgs/applications/editors/bviplus/default.nix
index 7d70ad14b5d..5fab7fe9da6 100644
--- a/pkgs/applications/editors/bviplus/default.nix
+++ b/pkgs/applications/editors/bviplus/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "bviplus";
-  version = "0.9.4";
+  version = "1.0";
 
   src = fetchurl {
     url = "mirror://sourceforge/project/bviplus/bviplus/${version}/bviplus-${version}.tgz";
-    sha256 = "10x6fbn8v6i0y0m40ja30pwpyqksnn8k2vqd290vxxlvlhzah4zb";
+    sha256 = "08q2fdyiirabbsp5qpn3v8jxp4gd85l776w6gqvrbjwqa29a8arg";
   };
 
   buildInputs = [
diff --git a/pkgs/applications/graphics/imgp/default.nix b/pkgs/applications/graphics/imgp/default.nix
new file mode 100644
index 00000000000..80420202c05
--- /dev/null
+++ b/pkgs/applications/graphics/imgp/default.nix
@@ -0,0 +1,38 @@
+{ lib, fetchFromGitHub, buildPythonApplication, pillow, imgp }:
+
+buildPythonApplication rec {
+  pname = "imgp";
+  version = "2.7";
+
+  src = fetchFromGitHub {
+    owner = "jarun";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "13r4fn3dd0nyidfhrr7zzpls5ifbyqdwxhyvpkqr8ahchws7wfc6";
+  };
+
+  propagatedBuildInputs = [ pillow ];
+
+  installFlags = [
+    "DESTDIR=$(out)"
+    "PREFIX="
+  ];
+
+  postInstall = ''
+    install -Dm555 auto-completion/bash/imgp-completion.bash $out/share/bash-completion/completions/imgp.bash
+    install -Dm555 auto-completion/fish/imgp.fish -t $out/share/fish/vendor_completions.d
+    install -Dm555 auto-completion/zsh/_imgp -t $out/share/zsh/site-functions
+  '';
+
+  checkPhase = ''
+    $out/bin/imgp --help
+  '';
+
+  meta = with lib; {
+    description = "High-performance CLI batch image resizer & rotator";
+    homepage = "https://github.com/jarun/imgp";
+    license = licenses.gpl3;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ sikmir ];
+  };
+}
diff --git a/pkgs/applications/graphics/runwayml/default.nix b/pkgs/applications/graphics/runwayml/default.nix
index 839a87214e6..c3f747837e0 100644
--- a/pkgs/applications/graphics/runwayml/default.nix
+++ b/pkgs/applications/graphics/runwayml/default.nix
@@ -6,12 +6,12 @@
 
 let
   pname = "runwayml";
-  version = "0.10.11";
+  version = "0.10.20";
   name = "${pname}-${version}";
 
   src = fetchurl {
     url = "https://runway-releases.s3.amazonaws.com/Runway%20${version}.AppImage";
-    sha256 = "0f3icgpwj1sk9bkycqw65c8bhrzzpw5yzacw52siv4j1gl4casnl";
+    sha256 = "1wi94xi8nrwfc4v2j1crlmwr0nxg95ffp5h4hxd84crvya8ibxgz";
     name="${pname}-${version}.AppImage";
   };
 
diff --git a/pkgs/applications/networking/cluster/kubernetes/default.nix b/pkgs/applications/networking/cluster/kubernetes/default.nix
index f852c3ac0a3..a5e2b374326 100644
--- a/pkgs/applications/networking/cluster/kubernetes/default.nix
+++ b/pkgs/applications/networking/cluster/kubernetes/default.nix
@@ -15,13 +15,13 @@ with lib;
 
 stdenv.mkDerivation rec {
   pname = "kubernetes";
-  version = "1.16.4";
+  version = "1.16.5";
 
   src = fetchFromGitHub {
     owner = "kubernetes";
     repo = "kubernetes";
     rev = "v${version}";
-    sha256 = "05rpwmzkxhbvckcs7hspy6krdfskd8jnsn9g43fhidjvqhxyh6n3";
+    sha256 = "12ks79sjgbd0c97pipid4j3l5fwiimaxa25rvmf2vccdrw4ngx4m";
   };
 
   buildInputs = [ removeReferencesTo makeWrapper which go rsync go-bindata ];
diff --git a/pkgs/applications/networking/instant-messengers/spectral/default.nix b/pkgs/applications/networking/instant-messengers/spectral/default.nix
index 314a3bb6457..23659e8a6c9 100644
--- a/pkgs/applications/networking/instant-messengers/spectral/default.nix
+++ b/pkgs/applications/networking/instant-messengers/spectral/default.nix
@@ -7,34 +7,32 @@
 , qtgraphicaleffects
 , qtdeclarative
 , qtmacextras
-, olm, cmark
+, olm, libsecret, cmark
 }:
 
 let qtkeychain-qt5 = qtkeychain.override {
   inherit qtbase qttools;
   withQt5 = true;
 };
-in stdenv.mkDerivation {
+in stdenv.mkDerivation rec {
   pname = "spectral";
-  version = "unstable-2019-08-30";
+  version = "817";
 
   src = fetchgit {
-    url = "https://gitlab.com/b0/spectral.git";
-    rev = "ee86c948aec5fe72979fc6df97f4a6ef711bdf94";
-    sha256 = "1mqabdkvzq48wki92wm2r79kj8g8m7ganpl47sh60qfsk4bxa8b2";
+    url = "https://gitlab.com/spectral-im/spectral.git";
+    rev = version;
+    sha256 = "0lg0bkz621cmqb67kz1zmn4xwbspcqalz68byll5iszqz9y4gnp1";
     fetchSubmodules = true;
   };
 
-  #qmakeFlags = [ "CONFIG+=qtquickcompiler" "BUNDLE_FONT=true" ];
-
   nativeBuildInputs = [ pkgconfig cmake wrapQtAppsHook ];
-  buildInputs = [ qtbase qtkeychain-qt5 qtquickcontrols2 qtmultimedia qtgraphicaleffects qtdeclarative olm cmark ]
+  buildInputs = [ qtbase qtkeychain-qt5 qtquickcontrols2 qtmultimedia qtgraphicaleffects qtdeclarative olm libsecret cmark ]
     ++ stdenv.lib.optional stdenv.hostPlatform.isLinux libpulseaudio
     ++ stdenv.lib.optional stdenv.hostPlatform.isDarwin qtmacextras;
 
   meta = with stdenv.lib; {
     description = "A glossy cross-platform Matrix client.";
-    homepage = "https://gitlab.com/b0/spectral";
+    homepage = "https://spectral.im";
     license = licenses.gpl3;
     platforms = with platforms; linux ++ darwin;
     maintainers = with maintainers; [ dtzWill ];
diff --git a/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix b/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix
index bec2f750526..25ee992cb6c 100644
--- a/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix
+++ b/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix
@@ -18,30 +18,27 @@ with lib;
 
 mkDerivation rec {
   pname = "telegram-desktop";
-  version = "1.9.3";
+  version = "1.9.4";
   # Note: Due to our strong dependency on the Arch patches it's probably best
   # to also wait for the Arch update (especially if the patches don't apply).
 
   # Telegram-Desktop with submodules
   src = fetchurl {
     url = "https://github.com/telegramdesktop/tdesktop/releases/download/v${version}/tdesktop-${version}-full.tar.gz";
-    sha256 = "1fx7v7j7iw4iywdbl89c5f1y74via61a0k20zrgjv5a0j4v6g76a";
+    sha256 = "1ldsgbix0ca4pl2z55wiz90ll3542zsm9slayrzyr7b2jw7arxwy";
   };
 
   # Arch patches (svn export telegram-desktop/trunk)
   archPatches = fetchsvn {
     url = "svn://svn.archlinux.org/community/telegram-desktop/trunk";
     # svn log svn://svn.archlinux.org/community/telegram-desktop/trunk
-    rev = "549803";
-    sha256 = "1py2a25wgpvx0n4kz383fj0jav1qdm8wqx5bdaygg6296r294czj";
+    rev = "553350";
+    sha256 = "05fyij490flrbn4jfwhm8gx9imh0wfby4j9fj69f45qgkpsd7ajb";
   };
 
   # Note: It would be best if someone could get as many patches upstream as
   # possible (we currently depend a lot on custom patches...).
   patches = [
-    "${archPatches}/0001-Dynamic-linking-system-libs.patch"
-    "${archPatches}/0002-Dynamic-linking-system-qt.patch"
-    "${archPatches}/0004-gtk3.patch"
     "${archPatches}/0005-Use-system-wide-fonts.patch"
     "${archPatches}/0006-Revert-Disable-DemiBold-fallback-for-Semibold.patch"
   ];
@@ -49,8 +46,6 @@ mkDerivation rec {
   postPatch = ''
     substituteInPlace Telegram/SourceFiles/platform/linux/linux_libs.cpp \
       --replace '"appindicator3"' '"${libappindicator-gtk3}/lib/libappindicator3.so"'
-    substituteInPlace cmake/external/ranges/CMakeLists.txt \
-      --replace "/usr/include" "${range-v3}/include"
   '';
 
   # We want to run wrapProgram manually (with additional parameters)
@@ -83,18 +78,35 @@ mkDerivation rec {
   CPPFLAGS = NIX_CFLAGS_COMPILE;
 
   cmakeFlags = [
+    "-Ddisable_autoupdate=ON"
     #"-DTDESKTOP_API_TEST=ON" # TODO: Officiall API credentials for Nixpkgs
     "-DTDESKTOP_API_ID=17349" # See: https://github.com/NixOS/nixpkgs/issues/55271
     "-DTDESKTOP_API_HASH=344583e45741c457fe1862106095a5eb"
     "-DDESKTOP_APP_USE_GLIBC_WRAPS=OFF"
-    "-DDESKTOP_APP_USE_SYSTEM_LIBS=ON"
+    "-DDESKTOP_APP_USE_PACKAGED=ON"
+    "-DDESKTOP_APP_USE_PACKAGED_RLOTTIE=OFF"
     "-DDESKTOP_APP_DISABLE_CRASH_REPORTS=ON"
-    "-Ddisable_autoupdate=ON"
     "-DTDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME=ON"
     "-DTDESKTOP_DISABLE_DESKTOP_FILE_GENERATION=ON"
+    "-DTDESKTOP_USE_PACKAGED_TGVOIP=OFF"
     #"-DDESKTOP_APP_SPECIAL_TARGET=\"\"" # TODO: Error when set to "": Bad special target '""'
   ];
 
+  # Note: The following packages could be packaged system-wide, but it's
+  # probably best to use the bundled ones from tdesktop (Arch does this too):
+  # rlottie:
+  # - CMake flag: "-DTDESKTOP_USE_PACKAGED_TGVOIP=ON"
+  # - Sources (problem: there are no stable releases!):
+  #   - desktop-app (tdesktop): https://github.com/desktop-app/rlottie
+  #   - upstream: https://github.com/Samsung/rlottie
+  # libtgvoip:
+  # - CMake flag: "-DDESKTOP_APP_USE_PACKAGED_RLOTTIE=ON"
+  # - Sources  (problem: the stable releases might be too old!):
+  #   - tdesktop: https://github.com/telegramdesktop/libtgvoip
+  #   - upstream: https://github.com/grishka/libtgvoip
+  # Both of these packages are included in this PR (kotatogram-desktop):
+  # https://github.com/NixOS/nixpkgs/pull/75210
+
   installPhase = ''
     install -Dm755 bin/Telegram $out/bin/telegram-desktop
 
@@ -115,7 +127,8 @@ mkDerivation rec {
       "''${gappsWrapperArgs[@]}" \
       "''${qtWrapperArgs[@]}" \
       --prefix PATH : ${xdg_utils}/bin \
-      --set XDG_RUNTIME_DIR "XDG-RUNTIME-DIR"
+      --set XDG_RUNTIME_DIR "XDG-RUNTIME-DIR" \
+      --unset QT_QPA_PLATFORMTHEME # From the Arch wrapper
     sed -i $out/bin/telegram-desktop \
       -e "s,'XDG-RUNTIME-DIR',\"\''${XDG_RUNTIME_DIR:-/run/user/\$(id --user)}\","
   '';
diff --git a/pkgs/applications/office/kmymoney/default.nix b/pkgs/applications/office/kmymoney/default.nix
index c7b4377c3dc..275cd826a69 100644
--- a/pkgs/applications/office/kmymoney/default.nix
+++ b/pkgs/applications/office/kmymoney/default.nix
@@ -15,11 +15,11 @@
 
 stdenv.mkDerivation rec {
   pname = "kmymoney";
-  version = "5.0.7";
+  version = "5.0.8";
 
   src = fetchurl {
     url = "mirror://kde/stable/kmymoney/${version}/src/${pname}-${version}.tar.xz";
-    sha256 = "1h5mzvgpfyl2j66b3nsw17yxvg0ja1qhjlcmfkz62221vcqsrp6m";
+    sha256 = "1h6l01a08f1xgk4dfpndl7rmgbp9npm58qi760jwl2gggprwwsxc";
   };
 
   # Hidden dependency that wasn't included in CMakeLists.txt:
diff --git a/pkgs/applications/radio/flrig/default.nix b/pkgs/applications/radio/flrig/default.nix
index 242536a8965..17d579cb45e 100644
--- a/pkgs/applications/radio/flrig/default.nix
+++ b/pkgs/applications/radio/flrig/default.nix
@@ -6,12 +6,12 @@
 }:
 
 stdenv.mkDerivation rec {
-  version = "1.3.48";
+  version = "1.3.49";
   pname = "flrig";
 
   src = fetchurl {
     url = "mirror://sourceforge/fldigi/${pname}-${version}.tar.gz";
-    sha256 = "0f46rmrr8aphj8fsbfa1bywihigzfzyxq9zg66d1laa7d3jsfs9q";
+    sha256 = "0icfniiw2l7d7gyxrzy87n3ragzvf0ykvq7c10ppf111wl5in295";
   };
 
   buildInputs = [
diff --git a/pkgs/applications/version-management/git-and-tools/default.nix b/pkgs/applications/version-management/git-and-tools/default.nix
index 2e99ca666dc..acfb30cd7c5 100644
--- a/pkgs/applications/version-management/git-and-tools/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/default.nix
@@ -174,6 +174,8 @@ let
 
   svn-all-fast-export = libsForQt5.callPackage ./svn-all-fast-export { };
 
+  thicket = callPackage ./thicket { };
+
   tig = callPackage ./tig { };
 
   topGit = callPackage ./topgit { };
diff --git a/pkgs/applications/version-management/git-and-tools/hub/default.nix b/pkgs/applications/version-management/git-and-tools/hub/default.nix
index ee21a2158ac..1b67b933cb1 100644
--- a/pkgs/applications/version-management/git-and-tools/hub/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/hub/default.nix
@@ -2,7 +2,7 @@
 
 buildGoPackage rec {
   pname = "hub";
-  version = "2.13.0";
+  version = "2.14.1";
 
   goPackagePath = "github.com/github/hub";
 
@@ -13,7 +13,7 @@ buildGoPackage rec {
     owner = "github";
     repo = pname;
     rev = "v${version}";
-    sha256 = "18b0r16fk5wahvysqvg6vzjr7smyc2sdxp9sf55viby3kkwjfbkh";
+    sha256 = "0b179sp8z2blzh4a0c2pjbbiya68x2i4cnmcci58r8k0mwrx6mw1";
   };
 
   nativeBuildInputs = [ groff utillinux ];
diff --git a/pkgs/applications/version-management/git-and-tools/thicket/default.nix b/pkgs/applications/version-management/git-and-tools/thicket/default.nix
new file mode 100644
index 00000000000..42819043d58
--- /dev/null
+++ b/pkgs/applications/version-management/git-and-tools/thicket/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, fetchFromGitHub
+, crystal
+}:
+
+crystal.buildCrystalPackage rec {
+  pname = "thicket";
+  version = "0.1.3";
+
+  src = fetchFromGitHub {
+    owner = "taylorthurlow";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0hkmmssiwipx373d0zw9a2yn72gqzqzcvwkqbs522m5adz6qmkzw";
+  };
+
+  shardsFile = ./shards.nix;
+  crystalBinaries.thicket.src = "src/thicket.cr";
+
+  meta = with lib; {
+    description = "A better one-line git log";
+    homepage = "https://github.com/taylorthurlow/thicket";
+    license = licenses.mit;
+    maintainers = with maintainers; [ filalex77 ];
+  };
+}
\ No newline at end of file
diff --git a/pkgs/applications/version-management/git-and-tools/thicket/shards.nix b/pkgs/applications/version-management/git-and-tools/thicket/shards.nix
new file mode 100644
index 00000000000..c8839651a26
--- /dev/null
+++ b/pkgs/applications/version-management/git-and-tools/thicket/shards.nix
@@ -0,0 +1,8 @@
+{
+  ameba = {
+    owner = "veelenga";
+    repo = "ameba";
+    rev = "v0.10.0";
+    sha256 = "1yjxzwdhigsyjn0qp362jkj85qvg4dsyzal00pgr1srnh2xry912";
+  };
+}
diff --git a/pkgs/applications/video/obs-studio/default.nix b/pkgs/applications/video/obs-studio/default.nix
index 0c103f997b2..380b3d49ca7 100644
--- a/pkgs/applications/video/obs-studio/default.nix
+++ b/pkgs/applications/video/obs-studio/default.nix
@@ -40,7 +40,7 @@ in mkDerivation rec {
   version = "24.0.6";
 
   src = fetchFromGitHub {
-    owner = "jp9000";
+    owner = "obsproject";
     repo = "obs-studio";
     rev = version;
     sha256 = "07grnab5v4fd4lw25adhnlifs5c5phc3rsz7h80m663nbszy7abh";
diff --git a/pkgs/applications/video/shotcut/0001-encodedock.cpp-connect-to-VAAPI-via-DRM-not-X11.patch b/pkgs/applications/video/shotcut/0001-encodedock.cpp-connect-to-VAAPI-via-DRM-not-X11.patch
new file mode 100644
index 00000000000..475788ba3a4
--- /dev/null
+++ b/pkgs/applications/video/shotcut/0001-encodedock.cpp-connect-to-VAAPI-via-DRM-not-X11.patch
@@ -0,0 +1,33 @@
+From 247baa7e9210bbe5462b6155014c3dcd4a60e56a Mon Sep 17 00:00:00 2001
+From: Peter Simons <simons@cryp.to>
+Date: Tue, 24 Sep 2019 10:27:17 +0200
+Subject: [PATCH] encodedock.cpp: connect to VAAPI via DRM, not X11
+
+---
+ src/docks/encodedock.cpp | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/src/docks/encodedock.cpp b/src/docks/encodedock.cpp
+index f2d64fc8..63d20787 100644
+--- a/src/docks/encodedock.cpp
++++ b/src/docks/encodedock.cpp
+@@ -766,7 +766,6 @@ Mlt::Properties* EncodeDock::collectProperties(int realtime)
+                     setIfNotSet(p, "pix_fmt", "nv12");
+                 } else if (vcodec.endsWith("_vaapi")) {
+                     setIfNotSet(p, "vprofile", "main");
+-                    setIfNotSet(p, "connection_type", "x11");
+                 }
+             }
+             setIfNotSet(p, "width", ui->widthSpinner->value());
+@@ -1890,7 +1889,7 @@ void EncodeDock::on_hwencodeCheckBox_clicked(bool checked)
+             QStringList args;
+             args << "-hide_banner" << "-f" << "lavfi" << "-i" << "color=s=640x360" << "-frames" << "1" << "-an";
+             if (codec.endsWith("_vaapi"))
+-                args << "-init_hw_device" << "vaapi=vaapi0:,connection_type=x11" << "-filter_hw_device" << "vaapi0" << "-vf" << "format=nv12,hwupload";
++                args << "-init_hw_device" << "vaapi=vaapi0" << "-filter_hw_device" << "vaapi0" << "-vf" << "format=nv12,hwupload";
+             else if (codec == "hevc_qsv")
+                 args << "-load_plugin" << "hevc_hw";
+             args << "-c:v" << codec << "-f" << "rawvideo" << "pipe:";
+-- 
+2.24.1
+
diff --git a/pkgs/applications/video/shotcut/default.nix b/pkgs/applications/video/shotcut/default.nix
index 33ce5c18028..6926f7e8eae 100644
--- a/pkgs/applications/video/shotcut/default.nix
+++ b/pkgs/applications/video/shotcut/default.nix
@@ -17,6 +17,8 @@ mkDerivation rec {
     sha256 = "1vwgah8pp2kbd0iaz952d3bwxphk06yxqc0pi4hk1mklkh87qzm9";
   };
 
+  patches = [ ./0001-encodedock.cpp-connect-to-VAAPI-via-DRM-not-X11.patch ];
+
   enableParallelBuilding = true;
   nativeBuildInputs = [ pkgconfig qmake ];
   buildInputs = [
diff --git a/pkgs/applications/virtualization/podman/default.nix b/pkgs/applications/virtualization/podman/default.nix
index 607d790247f..dbd05e38d3f 100644
--- a/pkgs/applications/virtualization/podman/default.nix
+++ b/pkgs/applications/virtualization/podman/default.nix
@@ -20,12 +20,14 @@ buildGoPackage rec {
 
   nativeBuildInputs = [ pkgconfig go-md2man installShellFiles ];
 
-  buildInputs = [ btrfs-progs libseccomp gpgme lvm2 systemd ];
+  buildInputs = stdenv.lib.optionals stdenv.isLinux [ btrfs-progs libseccomp gpgme lvm2 systemd ];
 
   buildPhase = ''
-    pushd $NIX_BUILD_TOP/go/src/${goPackagePath}
+    pushd go/src/${goPackagePath}
     patchShebangs .
-    make binaries docs
+    ${if stdenv.isDarwin
+      then "make CGO_ENABLED=0 BUILDTAGS='remoteclient containers_image_openpgp exclude_graphdriver_devicemapper' varlink_generate all"
+      else "make binaries docs"}
   '';
 
   installPhase = ''
@@ -39,7 +41,7 @@ buildGoPackage rec {
     homepage = https://podman.io/;
     description = "A program for managing pods, containers and container images";
     license = licenses.asl20;
-    maintainers = with maintainers; [ vdemeester saschagrunert ];
-    platforms = platforms.linux;
+    maintainers = with maintainers; [ vdemeester saschagrunert marsam ];
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/applications/window-managers/notion/default.nix b/pkgs/applications/window-managers/notion/default.nix
index 60900bd2a3c..2b9e8237a04 100644
--- a/pkgs/applications/window-managers/notion/default.nix
+++ b/pkgs/applications/window-managers/notion/default.nix
@@ -1,45 +1,39 @@
-{
-  enableXft ? true, libXft ? null, patches ? [], stdenv, lua, gettext, pkgconfig, xlibsWrapper, libXinerama, libXrandr, libX11,
-  xterm, xmessage, makeWrapper, fetchFromGitHub, mandoc, which
+{ stdenv, fetchFromGitHub, pkgconfig
+, lua, gettext, which, groff, xmessage, xterm
+, readline, fontconfig, libX11, libXext, libSM
+, libXinerama, libXrandr, libXft
+, xlibsWrapper, makeWrapper
 }:
 
-assert enableXft -> libXft != null;
-
-let
+stdenv.mkDerivation rec{
   pname = "notion";
-  version = "3-2017050501";
-  inherit patches;
-in
-stdenv.mkDerivation {
-  name = "${pname}-${version}";
-  meta = with stdenv.lib; {
-    description = "Tiling tabbed window manager, follow-on to the ion window manager";
-    homepage = http://notion.sourceforge.net;
-    platforms = platforms.linux;
-    license   = licenses.notion_lgpl;
-    maintainers = with maintainers; [jfb];
-  };
+  version = "3-2019050101";
+
   src = fetchFromGitHub {
     owner = "raboof";
     repo = pname;
     rev = version;
-    sha256 = "1wq5ylpsw5lkbm3c2bzmx2ajlngwib30adxlqbvq4bgkaf9zjh65";
+    sha256 = "09kvgqyw0gnj3jhz9gmwq81ak8qy32vyanx1hw79r6m181aysspz";
   };
 
-  patches = patches;
-  postPatch = ''
-    substituteInPlace system-autodetect.mk --replace '#PRELOAD_MODULES=1' 'PRELOAD_MODULES=1'
-    substituteInPlace man/Makefile --replace "nroff -man -Tlatin1" "${mandoc}/bin/mandoc -T man"
-  '';
+  nativeBuildInputs = [ pkgconfig makeWrapper groff ];
+  buildInputs = [ lua gettext which readline fontconfig libX11 libXext libSM
+                  libXinerama libXrandr libXft xlibsWrapper ];
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [makeWrapper xlibsWrapper lua gettext mandoc which libXinerama libXrandr libX11 ] ++ stdenv.lib.optional enableXft libXft;
+  buildFlags = [ "CC=cc" "LUA_DIR=${lua}" "X11_PREFIX=/no-such-path" ];
 
-  buildFlags = [ "LUA_DIR=${lua}" "X11_PREFIX=/no-such-path" "PREFIX=\${out}" ];
-  installFlags = [ "PREFIX=\${out}" ];
+  makeFlags = [ "PREFIX=\${out}" ];
 
   postInstall = ''
     wrapProgram $out/bin/notion \
       --prefix PATH ":" "${xmessage}/bin:${xterm}/bin" \
   '';
+
+  meta = with stdenv.lib; {
+    description = "Tiling tabbed window manager, follow-on to the Ion";
+    homepage = "https://notionwm.net/";
+    license   = licenses.lgpl21;
+    maintainers = with maintainers; [ jfb AndersonTorres ];
+    platforms = platforms.linux;
+  };
 }
diff --git a/pkgs/applications/window-managers/notion/notion-xft_nixos.diff b/pkgs/applications/window-managers/notion/notion-xft_nixos.diff
deleted file mode 100644
index 542aa446c3f..00000000000
--- a/pkgs/applications/window-managers/notion/notion-xft_nixos.diff
+++ /dev/null
@@ -1,662 +0,0 @@
-diff -ur notion-3-2015061300/de/brush.c notion-3-2015061300-PATCHED/de/brush.c
---- notion-3-2015061300/de/brush.c	2015-06-13 10:37:26.000000000 -0400
-+++ notion-3-2015061300-PATCHED/de/brush.c	2015-07-13 10:37:23.093298917 -0400
-@@ -48,6 +48,9 @@
-     
-     gr_stylespec_init(&brush->current_attr);
-     
-+#ifdef XFT
-+    brush->draw=NULL;
-+#endif /* XFT */
-     style->usecount++;
- 
-     if(!grbrush_init(&(brush->grbrush))){
-@@ -128,6 +131,10 @@
- {
-     destyle_unref(brush->d);
-     brush->d=NULL;
-+#ifdef XFT
-+    if(brush->draw!=NULL)
-+        XftDrawDestroy(brush->draw);
-+#endif /* XFT */
-     gr_stylespec_unalloc(&brush->current_attr);
-     grbrush_deinit(&(brush->grbrush));
- }
-@@ -139,6 +146,21 @@
- }
- 
- 
-+#ifdef XFT
-+XftDraw *debrush_get_draw(DEBrush *brush, Drawable d)
-+{
-+    if(brush->draw==NULL)
-+        brush->draw=XftDrawCreate(ioncore_g.dpy, d,
-+                                  XftDEDefaultVisual(),
-+                                  DefaultColormap(ioncore_g.dpy,
-+                                  0));
-+    else
-+        XftDrawChange(brush->draw, d);
-+
-+    return brush->draw;
-+}
-+#endif
-+
- /*}}}*/
- 
- 
-diff -ur notion-3-2015061300/de/brush.h notion-3-2015061300-PATCHED/de/brush.h
---- notion-3-2015061300/de/brush.h	2015-06-13 10:37:26.000000000 -0400
-+++ notion-3-2015061300-PATCHED/de/brush.h	2015-07-13 10:37:23.096298747 -0400
-@@ -15,6 +15,10 @@
- #include <ioncore/gr.h>
- #include <ioncore/rectangle.h>
- 
-+#ifdef XFT
-+#include <X11/Xft/Xft.h>
-+#endif /* XFT */
-+
- INTRCLASS(DEBrush);
- 
- #include "style.h"
-@@ -33,6 +37,9 @@
- DECLCLASS(DEBrush){
-     GrBrush grbrush;
-     DEStyle *d;
-+#ifdef XFT
-+    XftDraw *draw;
-+#endif
-     DEBrushExtrasFn *extras_fn;
-     int indicator_w;
-     Window win;
-@@ -108,5 +115,8 @@
- extern void debrush_fill_area(DEBrush *brush, const WRectangle *geom);
- extern void debrush_clear_area(DEBrush *brush, const WRectangle *geom);
- 
-+#ifdef XFT
-+XftDraw *debrush_get_draw(DEBrush *brush, Drawable d);
-+#endif
- 
- #endif /* ION_DE_BRUSH_H */
-diff -ur notion-3-2015061300/de/colour.c notion-3-2015061300-PATCHED/de/colour.c
---- notion-3-2015061300/de/colour.c	2015-06-13 10:37:26.000000000 -0400
-+++ notion-3-2015061300-PATCHED/de/colour.c	2015-07-13 10:37:23.098298633 -0400
-@@ -12,9 +12,21 @@
- 
- bool de_alloc_colour(WRootWin *rootwin, DEColour *ret, const char *name)
- {
-+#ifndef XFT
-     XColor c;
-     bool ok=FALSE;
-+#else /* XFT */
-+    if(name==NULL)
-+        return FALSE;
-+    return XftColorAllocName(
-+        ioncore_g.dpy,
-+        XftDEDefaultVisual(),
-+        rootwin->default_cmap,
-+        name,
-+        ret);
-+#endif /* XFT */
- 
-+#ifndef XFT
-     if(name==NULL)
-         return FALSE;
- 
-@@ -25,11 +37,13 @@
-     }
-     
-     return ok;
-+#endif /* ! XFT */
- }
- 
- 
- bool de_duplicate_colour(WRootWin *rootwin, DEColour in, DEColour *out)
- {
-+#ifndef XFT
-     XColor c;
-     c.pixel=in;
-     XQueryColor(ioncore_g.dpy, rootwin->default_cmap, &c);
-@@ -38,11 +52,20 @@
-         return TRUE;
-     }
-     return FALSE;
-+#else /* XFT */
-+    return XftColorAllocName(
-+        ioncore_g.dpy,
-+        XftDEDefaultVisual(),
-+        rootwin->default_cmap,
-+        &(in.color),
-+        out);
-+#endif /* XFT */
- }
- 
- 
- void de_free_colour_group(WRootWin *rootwin, DEColourGroup *cg)
- {
-+#ifndef XFT
-     DEColour pixels[5];
-     
-     pixels[0]=cg->bg;
-@@ -54,15 +77,26 @@
-     XFreeColors(ioncore_g.dpy, rootwin->default_cmap, pixels, 5, 0);
-     
-     gr_stylespec_unalloc(&cg->spec);
-+#else /* XFT */
-+    de_free_colour(rootwin, cg->bg);
-+    de_free_colour(rootwin, cg->fg);
-+    de_free_colour(rootwin, cg->hl);
-+    de_free_colour(rootwin, cg->sh);
-+    de_free_colour(rootwin, cg->pad);
-+#endif /* XFT */
- }
- 
- 
- void de_free_colour(WRootWin *rootwin, DEColour col)
- {
-+#ifndef XFT
-     DEColour pixels[1];
-     
-     pixels[0]=col;
-     
-     XFreeColors(ioncore_g.dpy, rootwin->default_cmap, pixels, 1, 0);
-+#else /* XFT */
-+    XftColorFree(ioncore_g.dpy, XftDEDefaultVisual(), rootwin->default_cmap, &col);
-+#endif /* XFT */
- }
- 
-diff -ur notion-3-2015061300/de/colour.h notion-3-2015061300-PATCHED/de/colour.h
---- notion-3-2015061300/de/colour.h	2015-06-13 10:37:26.000000000 -0400
-+++ notion-3-2015061300-PATCHED/de/colour.h	2015-07-13 10:37:23.099298576 -0400
-@@ -12,12 +12,19 @@
- #include <ioncore/common.h>
- #include <ioncore/global.h>
- #include <ioncore/rootwin.h>
-+#ifdef XFT
-+#include <X11/Xft/Xft.h>
-+#endif /* XFT */
- 
- 
- INTRSTRUCT(DEColourGroup);
- 
- 
-+#ifndef XFT
- typedef unsigned long DEColour;
-+#else /* XFT */
-+typedef XftColor DEColour;
-+#endif /* XFT */
- 
- 
- DECLSTRUCT(DEColourGroup){
-@@ -34,5 +41,6 @@
- bool de_duplicate_colour(WRootWin *rootwin, DEColour in, DEColour *out);
- void de_free_colour_group(WRootWin *rootwin, DEColourGroup *cg);
- void de_free_colour(WRootWin *rootwin, DEColour col);
-+#define XftDEDefaultVisual()    DefaultVisual(ioncore_g.dpy, 0)
- 
- #endif /* ION_DE_COLOUR_H */
-diff -ur notion-3-2015061300/de/draw.c notion-3-2015061300-PATCHED/de/draw.c
---- notion-3-2015061300/de/draw.c	2015-06-13 10:37:26.000000000 -0400
-+++ notion-3-2015061300-PATCHED/de/draw.c	2015-07-13 10:37:23.109298008 -0400
-@@ -20,6 +20,14 @@
- #include <X11/extensions/shape.h>
- 
- 
-+#ifndef XFT
-+#define PIXEL(x) x
-+#else /* XFT */
-+#define PIXEL(x) x.pixel
-+#endif /* XFT */
-+
-+
-+
- /*{{{ Colour group lookup */
- 
- 
-@@ -84,8 +92,7 @@
-     w--;
-     h--;
- 
--    XSetForeground(ioncore_g.dpy, gc, tlc);
--
-+    XSetForeground(ioncore_g.dpy, gc, PIXEL(tlc));
-     
-     a=(br!=0);
-     b=0;
-@@ -104,7 +111,7 @@
-     }
- 
-     
--    XSetForeground(ioncore_g.dpy, gc, brc);
-+    XSetForeground(ioncore_g.dpy, gc, PIXEL(brc));
- 
-     a=(tl!=0);
-     b=0;
-@@ -141,23 +148,23 @@
-                             GrBorderLine line)
- {
-     if(line==GR_BORDERLINE_LEFT && geom->h>0 && tl>0){
--        XSetForeground(ioncore_g.dpy, gc, tlc);
--        XSetBackground(ioncore_g.dpy, gc, tlc);
-+        XSetForeground(ioncore_g.dpy, gc, PIXEL(tlc));
-+        XSetBackground(ioncore_g.dpy, gc, PIXEL(tlc));
-         XFillRectangle(ioncore_g.dpy, win, gc, geom->x, geom->y, tl, geom->h);
-         geom->x+=tl;
-     }else if(line==GR_BORDERLINE_TOP && geom->w>0 && tl>0){
--        XSetForeground(ioncore_g.dpy, gc, tlc);
--        XSetBackground(ioncore_g.dpy, gc, tlc);
-+        XSetForeground(ioncore_g.dpy, gc, PIXEL(tlc));
-+        XSetBackground(ioncore_g.dpy, gc, PIXEL(tlc));
-         XFillRectangle(ioncore_g.dpy, win, gc, geom->x, geom->y, geom->w, tl);
-         geom->y+=tl;
-     }else if(line==GR_BORDERLINE_RIGHT && geom->h>0 && br>0){
--        XSetForeground(ioncore_g.dpy, gc, brc);
--        XSetBackground(ioncore_g.dpy, gc, brc);
-+        XSetForeground(ioncore_g.dpy, gc, PIXEL(brc));
-+        XSetBackground(ioncore_g.dpy, gc, PIXEL(brc));
-         XFillRectangle(ioncore_g.dpy, win, gc, geom->x+geom->w-br, geom->y, br, geom->h);
-         geom->w-=br;
-     }else if(line==GR_BORDERLINE_BOTTOM && geom->w>0 && br>0){
--        XSetForeground(ioncore_g.dpy, gc, brc);
--        XSetBackground(ioncore_g.dpy, gc, brc);
-+        XSetForeground(ioncore_g.dpy, gc, PIXEL(brc));
-+        XSetBackground(ioncore_g.dpy, gc, PIXEL(brc));
-         XFillRectangle(ioncore_g.dpy, win, gc, geom->x, geom->y+geom->h-br, geom->w, br);
-         geom->h-=br;
-     }
-@@ -388,7 +395,7 @@
-     }
-     
-     if(ISSET(a2, GR_ATTR(tagged)) || ISSET(a1, GR_ATTR(tagged))){
--        XSetForeground(ioncore_g.dpy, d->copy_gc, cg->fg);
-+        XSetForeground(ioncore_g.dpy, d->copy_gc, PIXEL(cg->fg));
-             
-         copy_masked(brush, d->tag_pixmap, brush->win, 0, 0,
-                     d->tag_pixmap_w, d->tag_pixmap_h,
-@@ -437,7 +444,7 @@
-     GC gc=brush->d->normal_gc;
-     
-     if(TRUE/*needfill*/){
--        XSetForeground(ioncore_g.dpy, gc, cg->bg);
-+        XSetForeground(ioncore_g.dpy, gc, PIXEL(cg->bg));
-         XFillRectangle(ioncore_g.dpy, brush->win, gc, geom->x, geom->y, 
-                        geom->w, geom->h);
-     }
-@@ -605,7 +612,7 @@
-         attr.background_pixmap=ParentRelative;
-     }else{
-         attrflags=CWBackPixel;
--        attr.background_pixel=brush->d->cgrp.bg;
-+        attr.background_pixel=brush->d->PIXEL(cgrp.bg);
-     }
-     
-     XChangeWindowAttributes(ioncore_g.dpy, brush->win, attrflags, &attr);
-@@ -621,7 +628,7 @@
-     if(cg==NULL)
-         return;
-     
--    XSetForeground(ioncore_g.dpy, gc, cg->bg);
-+    XSetForeground(ioncore_g.dpy, gc, PIXEL(cg->bg));
-     XFillRectangle(ioncore_g.dpy, brush->win, gc, 
-                    geom->x, geom->y, geom->w, geom->h);
- }
-diff -ur notion-3-2015061300/de/font.c notion-3-2015061300-PATCHED/de/font.c
---- notion-3-2015061300/de/font.c	2015-06-13 10:37:26.000000000 -0400
-+++ notion-3-2015061300-PATCHED/de/font.c	2015-07-13 10:37:23.118297497 -0400
-@@ -13,7 +13,9 @@
- #include <ioncore/common.h>
- #include <ioncore/log.h>
- #include "font.h"
-+#ifndef XFT
- #include "fontset.h"
-+#endif /* ! XFT */
- #include "brush.h"
- #include "precompose.h"
- 
-@@ -106,6 +108,9 @@
- 
- DEFont *de_load_font(const char *fontname)
- {
-+#ifdef XFT
-+    XftFont *font;
-+#endif
-     DEFont *fnt;
-     XFontSet fontset=NULL;
-     XFontStruct *fontstruct=NULL;
-@@ -120,7 +125,8 @@
-             return fnt;
-         }
-     }
--    
-+
-+#ifndef XFT
-     if(ioncore_g.use_mb && !(ioncore_g.enc_utf8 && iso10646_font(fontname))){
-         LOG(DEBUG, FONT, "Loading fontset %s", fontname); 
-         fontset=de_create_font_set(fontname);
-@@ -149,13 +155,34 @@
-         return NULL;
-     }
-     
-+#else /* XFT */
-+    if(strncmp(fontname, "xft:", 4)==0){
-+        font=XftFontOpenName(ioncore_g.dpy, DefaultScreen(ioncore_g.dpy),
-+                 fontname+4);
-+    }else{
-+        font=XftFontOpenXlfd(ioncore_g.dpy, DefaultScreen(ioncore_g.dpy), fontname);
-+    }
-+    
-+    if(font==NULL){
-+        if(strcmp(fontname, CF_FALLBACK_FONT_NAME)!=0){
-+            warn(TR("Could not load font \"%s\", trying \"%s\""),
-+             fontname, CF_FALLBACK_FONT_NAME);
-+            return de_load_font(CF_FALLBACK_FONT_NAME);
-+        }
-+        return NULL;
-+    }
-+#endif /* XFT */
-     fnt=ALLOC(DEFont);
-     
-     if(fnt==NULL)
-         return NULL;
-     
-+#ifndef XFT
-     fnt->fontset=fontset;
-     fnt->fontstruct=fontstruct;
-+#else
-+    fnt->font=font;
-+#endif
-     fnt->pattern=scopy(fontname);
-     fnt->next=NULL;
-     fnt->prev=NULL;
-@@ -175,11 +202,13 @@
-     style->font=font;
-     font->refcount++;
-     
-+#ifndef XFT
-     if(style->font->fontstruct!=NULL){
-         XSetFont(ioncore_g.dpy, style->normal_gc, 
-                  style->font->fontstruct->fid);
-     }
- 
-+#endif /* ! XFT */
-     return TRUE;
- }
- 
-@@ -194,11 +223,13 @@
-     if(style->font==NULL)
-         return FALSE;
-     
-+#ifndef XFT
-     if(style->font->fontstruct!=NULL){
-         XSetFont(ioncore_g.dpy, style->normal_gc, 
-                  style->font->fontstruct->fid);
-     }
-     
-+#endif /* ! XFT */
-     return TRUE;
- }
- 
-@@ -208,10 +239,15 @@
-     if(--font->refcount!=0)
-         return;
-     
-+#ifndef XFT
-     if(font->fontset!=NULL)
-         XFreeFontSet(ioncore_g.dpy, font->fontset);
-     if(font->fontstruct!=NULL)
-         XFreeFont(ioncore_g.dpy, font->fontstruct);
-+#else /* XFT */
-+    if(font->font!=NULL)
-+        XftFontClose(ioncore_g.dpy, font->font);
-+#endif /* XFT */
-     if(font->pattern!=NULL)
-         free(font->pattern);
-     
-@@ -239,6 +275,7 @@
- 
- void defont_get_font_extents(DEFont *font, GrFontExtents *fnte)
- {
-+#ifndef XFT
-     if(font->fontset!=NULL){
-         XFontSetExtents *ext=XExtentsOfFontSet(font->fontset);
-         if(ext==NULL)
-@@ -254,7 +291,14 @@
-         fnte->baseline=fnt->ascent;
-         return;
-     }
--    
-+#else /* XFT */
-+    if(font->font!=NULL){
-+        fnte->max_height=font->font->ascent+font->font->descent;
-+        fnte->max_width=font->font->max_advance_width;
-+        fnte->baseline=font->font->ascent;
-+        return;
-+    }
-+#endif /* XFT */
- fail:
-     DE_RESET_FONT_EXTENTS(fnte);
- }
-@@ -271,6 +315,7 @@
- 
- uint defont_get_text_width(DEFont *font, const char *text, uint len)
- {
-+#ifndef XFT
-     if(font->fontset!=NULL){
-         XRectangle lext;
- #ifdef CF_DE_USE_XUTF8
-@@ -298,6 +343,18 @@
-     }else{
-         return 0;
-     }
-+#else /* XFT */
-+    if(font->font!=NULL){
-+        XGlyphInfo extents;
-+        if(ioncore_g.enc_utf8)
-+            XftTextExtentsUtf8(ioncore_g.dpy, font->font, (XftChar8 *)text, len, &extents);
-+        else
-+            XftTextExtents8(ioncore_g.dpy, font->font, (XftChar8 *)text, len, &extents);
-+        return extents.xOff;
-+    }else{
-+        return 0;
-+    }
-+#endif /* XFT */
- }
- 
- 
-@@ -307,6 +364,7 @@
- /*{{{ String drawing */
- 
- 
-+#ifndef XFT
- void debrush_do_draw_string_default(DEBrush *brush, int x, int y,
-                                     const char *str, int len, bool needfill, 
-                                     DEColourGroup *colours)
-@@ -366,6 +424,43 @@
-     }
- }
- 
-+#else /* XFT */
-+void debrush_do_draw_string_default(DEBrush *brush, 
-+                                    int x, int y, const char *str,
-+                                    int len, bool needfill, 
-+                                    DEColourGroup *colours)
-+{
-+    Window win = brush->win;
-+    GC gc=brush->d->normal_gc;
-+    XftDraw *draw;
-+    XftFont *font;
-+    
-+    if(brush->d->font==NULL)
-+        return;
-+
-+    font=brush->d->font->font;
-+    draw=debrush_get_draw(brush, win);
-+
-+    if(needfill){
-+        XGlyphInfo extents;
-+        if(ioncore_g.enc_utf8){
-+            XftTextExtentsUtf8(ioncore_g.dpy, font, (XftChar8 *)str, len,
-+                               &extents);
-+        }else{
-+            XftTextExtents8(ioncore_g.dpy, font, (XftChar8 *)str, len, &extents);
-+            XftDrawRect(draw, &(colours->bg), x-extents.x, y-extents.y,
-+                        extents.width+10, extents.height);
-+        }
-+    }
-+
-+    if(ioncore_g.enc_utf8){
-+        XftDrawStringUtf8(draw, &(colours->fg), font, x, y, (XftChar8 *)str,
-+                          len);
-+    }else{
-+        XftDrawString8(draw, &(colours->fg), font, x, y, (XftChar8 *)str, len);
-+    }
-+}
-+#endif /* XFT */
- 
- void debrush_do_draw_string(DEBrush *brush, int x, int y,
-                             const char *str, int len, bool needfill, 
-diff -ur notion-3-2015061300/de/font.h notion-3-2015061300-PATCHED/de/font.h
---- notion-3-2015061300/de/font.h	2015-06-13 10:37:26.000000000 -0400
-+++ notion-3-2015061300-PATCHED/de/font.h	2015-07-13 10:37:23.119297440 -0400
-@@ -12,6 +12,9 @@
- 
- #include <ioncore/common.h>
- #include <ioncore/gr.h>
-+#ifdef XFT
-+#include <X11/Xft/Xft.h>
-+#endif /* XFT */
- 
- INTRSTRUCT(DEFont);
- 
-@@ -27,6 +30,9 @@
-     int refcount;
-     XFontSet fontset;
-     XFontStruct *fontstruct;
-+#ifdef XFT /* XFT */
-+    XftFont *font;
-+#endif /* XFT */
-     DEFont *next, *prev;
- };
- 
-diff -ur notion-3-2015061300/de/init.c notion-3-2015061300-PATCHED/de/init.c
---- notion-3-2015061300/de/init.c	2015-06-13 10:37:26.000000000 -0400
-+++ notion-3-2015061300-PATCHED/de/init.c	2015-07-13 10:37:23.122297270 -0400
-@@ -165,17 +165,26 @@
- {
-     bool bgset;
-     DEColour padinh;
--    
-+    DEColour black, white;
-+
-+#ifdef XFT
-+    de_alloc_colour(rootwin, &black, "black");
-+    de_alloc_colour(rootwin, &white, "white");
-+#else
-+    black=DE_BLACK(rootwin);
-+    white=DE_WHITE(rootwin);
-+#endif
-+
-     de_get_colour(rootwin, &(cg->hl), tab, "highlight_colour",
--                  (based_on ? based_on->cgrp.hl : DE_WHITE(rootwin)));
-+                  (based_on ? based_on->cgrp.hl : white));
-     de_get_colour(rootwin, &(cg->sh), tab, "shadow_colour",
--                  (based_on ? based_on->cgrp.sh : DE_WHITE(rootwin)));
-+                  (based_on ? based_on->cgrp.sh : white));
-     de_get_colour(rootwin, &(cg->fg), tab, "foreground_colour",
--                  (based_on ? based_on->cgrp.fg : DE_WHITE(rootwin)));
-+                  (based_on ? based_on->cgrp.fg : white));
-     bgset=de_get_colour(rootwin, &(cg->bg), tab, "background_colour",
--                        (based_on ? based_on->cgrp.bg : DE_BLACK(rootwin)));
-+                        (based_on ? based_on->cgrp.bg : black));
-                         
--    padinh=(based_on ? based_on->cgrp.pad : DE_WHITE(rootwin));
-+    padinh=(based_on ? based_on->cgrp.pad : white);
-     
-     de_get_colour_(rootwin, &(cg->pad), tab, "padding_colour", 
-                    (bgset ? cg->bg : padinh), padinh);
-diff -ur notion-3-2015061300/de/style.c notion-3-2015061300-PATCHED/de/style.c
---- notion-3-2015061300/de/style.c	2015-06-13 10:37:26.000000000 -0400
-+++ notion-3-2015061300-PATCHED/de/style.c	2015-07-13 10:37:23.128296929 -0400
-@@ -70,10 +70,17 @@
-     /*gcv.function=GXclear;*/
-     gcv.stipple=stipple_pixmap;
-     gcvmask=GCFillStyle|GCStipple/*|GCFunction*/;
-+#ifndef XFT
-     if(style->font!=NULL && style->font->fontstruct!=NULL){
-         gcv.font=style->font->fontstruct->fid;
-         gcvmask|=GCFont;
-     }
-+#else /* XFT */
-+//    if(style->font!=NULL){
-+//        gcv.font=style->font;
-+//        gcvmask|=GCFont;
-+//    }
-+#endif /* XFT */
- 
-     style->stipple_gc=XCreateGC(dpy, root, gcvmask, &gcv);
-     XCopyGC(dpy, style->normal_gc, 
-@@ -201,6 +208,14 @@
- 
- bool destyle_init(DEStyle *style, WRootWin *rootwin, const char *name)
- {
-+    DEColour black, white;
-+#ifdef XFT
-+    de_alloc_colour(rootwin, &black, "black");
-+    de_alloc_colour(rootwin, &white, "white");
-+#else
-+    black=DE_BLACK(rootwin);
-+    white=DE_WHITE(rootwin);
-+#endif /* XFT */
-     if(!gr_stylespec_load(&style->spec, name))
-         return FALSE;
-     
-@@ -223,11 +238,11 @@
-     style->textalign=DEALIGN_CENTER;
- 
-     style->cgrp_alloced=FALSE;
--    style->cgrp.bg=DE_BLACK(rootwin);
--    style->cgrp.pad=DE_BLACK(rootwin);
--    style->cgrp.fg=DE_WHITE(rootwin);
--    style->cgrp.hl=DE_WHITE(rootwin);
--    style->cgrp.sh=DE_WHITE(rootwin);
-+    style->cgrp.bg=black;
-+    style->cgrp.pad=black;
-+    style->cgrp.fg=white;
-+    style->cgrp.hl=white;
-+    style->cgrp.sh=white;
-     gr_stylespec_init(&style->cgrp.spec);
-     
-     style->font=NULL;
-diff -ur notion-3-2015061300/de/style.h notion-3-2015061300-PATCHED/de/style.h
---- notion-3-2015061300/de/style.h	2015-06-13 10:37:26.000000000 -0400
-+++ notion-3-2015061300-PATCHED/de/style.h	2015-07-13 10:37:23.130296815 -0400
-@@ -80,6 +80,7 @@
-     Pixmap tag_pixmap;
-     int tag_pixmap_w;
-     int tag_pixmap_h;
-+    int xft_style;
-     
-     DEStyle *next, *prev;
- };
-diff -ur notion-3-2015061300/system-autodetect.mk notion-3-2015061300-PATCHED/system-autodetect.mk
---- notion-3-2015061300/system-autodetect.mk	2015-06-13 10:37:26.000000000 -0400
-+++ notion-3-2015061300-PATCHED/system-autodetect.mk	2015-07-13 10:38:14.921332013 -0400
-@@ -103,6 +103,19 @@
- 
- 
- ##
-+## Xft support
-+##
-+
-+USE_XFT=1
-+
-+ifeq ($(USE_XFT),1)
-+EXTRA_INCLUDES += `pkg-config xft --cflags`
-+EXTRA_LIBS += `pkg-config xft --libs`
-+DEFINES += -DXFT -DCF_FALLBACK_FONT_NAME=\"Sans\"
-+endif
-+
-+
-+##
- ## Localisation
- ##
- 
diff --git a/pkgs/data/fonts/jetbrains-mono/default.nix b/pkgs/data/fonts/jetbrains-mono/default.nix
index 05eb554c6f4..ada7f23f421 100644
--- a/pkgs/data/fonts/jetbrains-mono/default.nix
+++ b/pkgs/data/fonts/jetbrains-mono/default.nix
@@ -1,18 +1,20 @@
 { lib, fetchzip }:
 
 let
-  version = "1.0.0";
+  version = "1.0.1";
 in
 fetchzip rec {
   name = "JetBrainsMono-${version}";
 
-  url = "https://download.jetbrains.com/fonts/JetBrainsMono-${version}.zip";
+  url = "https://github.com/JetBrains/JetBrainsMono/releases/download/${version}/JetBrainsMono-${version}.zip";
 
-  sha256 = "0mwqi66d56v4ml1w7wjsiidrh153jvh0czafyic47rkvmxhnrrhv";
+  sha256 = "15a8fwyg8ns6krq6nsvgn41iaqbd3lgm3cmv7w370gr6brbn6lxq";
 
   postFetch = ''
     unzip $downloadedFile
-    install -m444 -Dt $out/share/fonts/truetype *.ttf
+    install -m444 -Dt $out/share/fonts/truetype ttf/*.ttf
+    install -m444 -Dt $out/share/fonts/woff/ web/woff/*.woff
+    install -m444 -Dt $out/share/fonts/woff2/ web/woff2/*.woff2
   '';
 
   meta = with lib; {
diff --git a/pkgs/data/icons/iconpack-obsidian/default.nix b/pkgs/data/icons/iconpack-obsidian/default.nix
index 64a982f6037..96514b6a4cd 100644
--- a/pkgs/data/icons/iconpack-obsidian/default.nix
+++ b/pkgs/data/icons/iconpack-obsidian/default.nix
@@ -2,20 +2,18 @@
 
 stdenv.mkDerivation rec {
   pname = "iconpack-obsidian";
-  version = "4.9";
+  version = "4.10";
 
   src = fetchFromGitHub {
     owner = "madmaxms";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1w0lnr08gd0cnzv3n5094jqb7dpbpwwizfhvifdir0xsls1sf129";
+    sha256 = "1imnbfrmizs0yx2165qj423y3m5vw9z33pqxmvhvs0rcwwddgqix";
   };
 
   nativeBuildInputs = [ gtk3 ];
 
-  propagatedBuildInputs = [
-    hicolor-icon-theme
-  ];
+  propagatedBuildInputs = [ hicolor-icon-theme ];
 
   dontDropIconThemeCache = true;
 
@@ -31,8 +29,8 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with stdenv.lib; {
-    description = "Gnome Icon Pack based upon Faenza";
-    homepage = https://github.com/madmaxms/iconpack-obsidian;
+    description = "Gnome icon pack based upon Faenza";
+    homepage = "https://github.com/madmaxms/iconpack-obsidian";
     license = licenses.lgpl3;
     # darwin cannot deal with file names differing only in case
     platforms = platforms.linux;
diff --git a/pkgs/desktops/cinnamon/cinnamon-settings-daemon/csd-backlight-helper-fix.patch b/pkgs/desktops/cinnamon/cinnamon-settings-daemon/csd-backlight-helper-fix.patch
new file mode 100644
index 00000000000..967ba98eb48
--- /dev/null
+++ b/pkgs/desktops/cinnamon/cinnamon-settings-daemon/csd-backlight-helper-fix.patch
@@ -0,0 +1,48 @@
+From 6d71bf9764fb81d437678a603826167850bbf453 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Maciej=20Kr=C3=BCger?= <mkg20001@gmail.com>
+Date: Tue, 21 Jan 2020 03:19:28 +0100
+Subject: [PATCH] fix: use an impure path to csd-backlight-helper to fix
+ policy-reload bug
+
+---
+ plugins/power/csd-power-manager.c                             | 4 ++--
+ .../org.cinnamon.settings-daemon.plugins.power.policy.in.in   | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/plugins/power/csd-power-manager.c b/plugins/power/csd-power-manager.c
+index b24c456..212c47e 100755
+--- a/plugins/power/csd-power-manager.c
++++ b/plugins/power/csd-power-manager.c
+@@ -2519,7 +2519,7 @@ backlight_helper_get_value (const gchar *argument, CsdPowerManager* manager,
+ #endif
+
+         /* get the data */
+-        command = g_strdup_printf (LIBEXECDIR "/csd-backlight-helper --%s %s",
++        command = g_strdup_printf ("/run/current-system/sw/bin/cinnamon-settings-daemon/csd-backlight-helper --%s %s",
+                                    argument,
+                                    manager->priv->backlight_helper_preference_args);
+         ret = g_spawn_command_line_sync (command,
+@@ -2609,7 +2609,7 @@ backlight_helper_set_value (const gchar *argument,
+ #endif
+
+         /* get the data */
+-        command = g_strdup_printf ("pkexec " LIBEXECDIR "/csd-backlight-helper --%s %i %s",
++        command = g_strdup_printf ("pkexec " "/run/current-system/sw/bin/cinnamon-settings-daemon/csd-backlight-helper --%s %i %s",
+                                    argument, value,
+                                    manager->priv->backlight_helper_preference_args);
+         ret = g_spawn_command_line_sync (command,
+diff --git a/plugins/power/org.cinnamon.settings-daemon.plugins.power.policy.in.in b/plugins/power/org.cinnamon.settings-daemon.plugins.power.policy.in.in
+index 2c44e62..c0a2348 100755
+--- a/plugins/power/org.cinnamon.settings-daemon.plugins.power.policy.in.in
++++ b/plugins/power/org.cinnamon.settings-daemon.plugins.power.policy.in.in
+@@ -25,7 +25,7 @@
+       <allow_inactive>no</allow_inactive>
+       <allow_active>yes</allow_active>
+     </defaults>
+-    <annotate key="org.freedesktop.policykit.exec.path">@libexecdir@/csd-backlight-helper</annotate>
++    <annotate key="org.freedesktop.policykit.exec.path">/run/current-system/sw/bin/cinnamon-settings-daemon/csd-backlight-helper</annotate>
+   </action>
+
+ </policyconfig>
+--
+2.24.1
diff --git a/pkgs/desktops/cinnamon/cinnamon-settings-daemon/default.nix b/pkgs/desktops/cinnamon/cinnamon-settings-daemon/default.nix
new file mode 100644
index 00000000000..1dc58e3c3b5
--- /dev/null
+++ b/pkgs/desktops/cinnamon/cinnamon-settings-daemon/default.nix
@@ -0,0 +1,111 @@
+{ fetchFromGitHub
+, autoconf-archive
+, autoreconfHook
+, cinnamon-desktop
+, colord
+, glib
+, gsettings-desktop-schemas
+, gtk3
+, intltool
+, lcms2
+, libcanberra-gtk3
+, libgnomekbd
+, libnotify
+, libxklavier
+, wrapGAppsHook
+, pkgconfig
+, pulseaudio
+, stdenv
+, systemd
+, upower
+, dconf
+, cups
+, polkit
+, librsvg
+, libwacom
+, xf86_input_wacom
+, xorg
+, fontconfig
+, tzdata
+}:
+
+stdenv.mkDerivation rec {
+  pname = "cinnamon-settings-daemon";
+  version = "4.4.0";
+
+  /* csd-power-manager.c:50:10: fatal error: csd-power-proxy.h: No such file or directory
+   #include "csd-power-proxy.h"
+            ^~~~~~~~~~~~~~~~~~~
+  compilation terminated. */
+
+  # but this occurs only sometimes, so disabling parallel building
+  # also see https://github.com/linuxmint/cinnamon-settings-daemon/issues/248
+  enableParallelBuilding = false;
+
+  src = fetchFromGitHub {
+    owner = "linuxmint";
+    repo = pname;
+    rev = version;
+    sha256 = "1h74d68a7hx85vv6ak26b85jq0wr56ps9rzfvqsnxwk81zxw2n7q";
+  };
+
+  patches = [
+    ./csd-backlight-helper-fix.patch
+  ];
+
+  NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0"; # TODO: https://github.com/NixOS/nixpkgs/issues/36468
+
+  buildInputs = [
+    cinnamon-desktop
+    colord
+    gtk3
+    glib
+    gsettings-desktop-schemas
+    lcms2
+    libcanberra-gtk3
+    libgnomekbd
+    libnotify
+    libxklavier
+    pulseaudio
+    systemd
+    upower
+    dconf
+    cups
+    polkit
+    librsvg
+    libwacom
+    xf86_input_wacom
+    xorg.libXext
+    xorg.libX11
+    xorg.libXi
+    xorg.libXtst
+    xorg.libXfixes
+    fontconfig
+  ];
+
+  nativeBuildInputs = [
+    autoconf-archive
+    autoreconfHook
+    wrapGAppsHook
+    intltool
+    pkgconfig
+  ];
+
+  postPatch = ''
+    sed "s|/usr/share/zoneinfo|${tzdata}/share/zoneinfo|g" -i plugins/datetime/system-timezone.h
+  '';
+
+  # So the polkit policy can reference /run/current-system/sw/bin/cinnamon-settings-daemon/csd-backlight-helper
+  postFixup = ''
+    mkdir -p $out/bin/cinnamon-settings-daemon
+    ln -s $out/libexec/csd-backlight-helper $out/bin/cinnamon-settings-daemon/csd-backlight-helper
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/linuxmint/cinnamon-settings-daemon";
+    description = "The settings daemon for the Cinnamon desktop";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.mkg20001 ];
+  };
+}
diff --git a/pkgs/desktops/cinnamon/default.nix b/pkgs/desktops/cinnamon/default.nix
index 456fb960c62..d58a6e4a0df 100644
--- a/pkgs/desktops/cinnamon/default.nix
+++ b/pkgs/desktops/cinnamon/default.nix
@@ -4,6 +4,7 @@ lib.makeScope pkgs.newScope (self: with self; {
   cinnamon-desktop = callPackage ./cinnamon-desktop { };
   cinnamon-menus = callPackage ./cinnamon-menus { };
   cinnamon-translations = callPackage ./cinnamon-translations { };
+  cinnamon-settings-daemon = callPackage ./cinnamon-settings-daemon { };
   cjs = callPackage ./cjs { };
   xapps = callPackage ./xapps { };
 })
diff --git a/pkgs/desktops/gnome-3/apps/gnome-boxes/default.nix b/pkgs/desktops/gnome-3/apps/gnome-boxes/default.nix
index d59746adc3d..1fecf80e9ae 100644
--- a/pkgs/desktops/gnome-3/apps/gnome-boxes/default.nix
+++ b/pkgs/desktops/gnome-3/apps/gnome-boxes/default.nix
@@ -51,11 +51,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-boxes";
-  version = "3.34.2";
+  version = "3.34.3";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-boxes/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "1rqdjf61cbi3zcpzr6cfkj3lcfrdlhs20bl65lxw2xrwk4jn0ph5";
+    sha256 = "1izhqgsb658lzrzj12dw06w47bjhqdpfl0j74aq7bzql7nqsb3wa";
   };
 
   doCheck = true;
diff --git a/pkgs/desktops/gnome-3/games/four-in-a-row/default.nix b/pkgs/desktops/gnome-3/games/four-in-a-row/default.nix
index 5f6cb92cde2..078b5051c84 100644
--- a/pkgs/desktops/gnome-3/games/four-in-a-row/default.nix
+++ b/pkgs/desktops/gnome-3/games/four-in-a-row/default.nix
@@ -4,11 +4,11 @@
 
 stdenv.mkDerivation rec {
   pname = "four-in-a-row";
-  version = "3.34.1";
+  version = "3.34.3";
 
   src = fetchurl {
     url = "mirror://gnome/sources/four-in-a-row/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "112pyrh2yvwy5b2a0b5crjpwp2vqqg4zgx6csll1bic6ccayv713";
+    sha256 = "1agdjg9kcfcfaq3d2w4s4ksci6is1jzfnxanp3f84zqdq55s0k1y";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/desktops/gnome-3/games/iagno/default.nix b/pkgs/desktops/gnome-3/games/iagno/default.nix
index 33cd60f5272..9f1b52990ca 100644
--- a/pkgs/desktops/gnome-3/games/iagno/default.nix
+++ b/pkgs/desktops/gnome-3/games/iagno/default.nix
@@ -5,11 +5,11 @@
 
 stdenv.mkDerivation rec {
   pname = "iagno";
-  version = "3.34.3";
+  version = "3.34.4";
 
   src = fetchurl {
     url = "mirror://gnome/sources/iagno/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "1m9654dbi4vrl59wvbyxz7jf81v4mn4n5lcq7abb42lba965d2z2";
+    sha256 = "0v0x2dmgcgfcjmbx21arnrwdx9xwa5q05wrm8a9sgrjjzqx6ynwb";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/desktops/pantheon/apps/elementary-screenshot-tool/default.nix b/pkgs/desktops/pantheon/apps/elementary-screenshot-tool/default.nix
index 8485a1df9f3..befa2bbbb02 100644
--- a/pkgs/desktops/pantheon/apps/elementary-screenshot-tool/default.nix
+++ b/pkgs/desktops/pantheon/apps/elementary-screenshot-tool/default.nix
@@ -17,7 +17,7 @@
 
 stdenv.mkDerivation rec {
   pname = "elementary-screenshot-tool"; # This will be renamed to "screenshot" soon. See -> https://github.com/elementary/screenshot/pull/93
-  version = "1.7.0";
+  version = "1.7.1";
 
   repoName = "screenshot";
 
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
     owner = "elementary";
     repo = repoName;
     rev = version;
-    sha256 = "09jcyy4drzpfxb1blln7hyjg5b7r8w5j5v7va2qhq31y7vzczh62";
+    sha256 = "179ib2ldvhdx3hks5lqyx2cvlkk3j1qccvlfwh2yd2bl79zpk3ma";
   };
 
   passthru = {
diff --git a/pkgs/desktops/pantheon/apps/switchboard-plugs/mouse-touchpad/default.nix b/pkgs/desktops/pantheon/apps/switchboard-plugs/mouse-touchpad/default.nix
index 260b340c223..5a4eaf79b38 100644
--- a/pkgs/desktops/pantheon/apps/switchboard-plugs/mouse-touchpad/default.nix
+++ b/pkgs/desktops/pantheon/apps/switchboard-plugs/mouse-touchpad/default.nix
@@ -15,13 +15,13 @@
 
 stdenv.mkDerivation rec {
   pname = "switchboard-plug-mouse-touchpad";
-  version = "2.3.1";
+  version = "2.4.0";
 
   src = fetchFromGitHub {
     owner = "elementary";
     repo = pname;
     rev = version;
-    sha256 = "1974zdr5w3xd882gi95fp7axgilfni1sclsr750qm32yhl7d9bfn";
+    sha256 = "1ls5jxzmd7cmbv8h67q6mcmfrfksgwjndqd6r9gxivsz2lcji3x7";
   };
 
   passthru = {
diff --git a/pkgs/desktops/pantheon/artwork/elementary-gtk-theme/default.nix b/pkgs/desktops/pantheon/artwork/elementary-gtk-theme/default.nix
index 4a42bc3d565..25c3f2201ef 100644
--- a/pkgs/desktops/pantheon/artwork/elementary-gtk-theme/default.nix
+++ b/pkgs/desktops/pantheon/artwork/elementary-gtk-theme/default.nix
@@ -8,7 +8,7 @@
 
 stdenv.mkDerivation rec {
   pname = "elementary-gtk-theme";
-  version = "5.4.0";
+  version = "5.4.1";
 
   repoName = "stylesheet";
 
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
     owner = "elementary";
     repo = repoName;
     rev = version;
-    sha256 = "0dh7lqc9b4ciyzbphqw071xcg742fvlc7gz9l1q3nqjsa2k6xg80";
+    sha256 = "0fnh08wqlhvigkxp69xkdha19ny9j0hg4ycwhhwvyr0d0z47kilw";
   };
 
   passthru = {
diff --git a/pkgs/development/interpreters/perl/wrapper.nix b/pkgs/development/interpreters/perl/wrapper.nix
index 95122aebf03..2e3d394f851 100644
--- a/pkgs/development/interpreters/perl/wrapper.nix
+++ b/pkgs/development/interpreters/perl/wrapper.nix
@@ -35,7 +35,7 @@ let
             if [ -f "$prg" ]; then
               rm -f "$out/bin/$prg"
               if [ -x "$prg" ]; then
-                makeWrapper "$path/bin/$prg" "$out/bin/$prg" --set PERL5LIB "$out/${perl.libPrefix}"
+                makeWrapper "$path/bin/$prg" "$out/bin/$prg" --suffix PERL5LIB ':' "$out/${perl.libPrefix}"
               fi
             fi
           done
diff --git a/pkgs/development/libraries/cppzmq/default.nix b/pkgs/development/libraries/cppzmq/default.nix
index ccf38fa09fb..78cefe89e3b 100644
--- a/pkgs/development/libraries/cppzmq/default.nix
+++ b/pkgs/development/libraries/cppzmq/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "cppzmq";
-  version = "4.5.0";
+  version = "4.6.0";
 
   src = fetchFromGitHub {
     owner = "zeromq";
     repo = "cppzmq";
     rev = "v${version}";
-    sha256 = "1n34sj322ay8839q6cxivckkrhz9avy31615i5jdxfal06mgya43";
+    sha256 = "19acx2bzi4n6fdnfgkja1nds7m1bwg8lw5vfcijrx9fv75pa7m8h";
   };
 
   nativeBuildInputs = [ cmake ];
diff --git a/pkgs/development/libraries/gcab/default.nix b/pkgs/development/libraries/gcab/default.nix
index c05bb95913e..9946ebc05a5 100644
--- a/pkgs/development/libraries/gcab/default.nix
+++ b/pkgs/development/libraries/gcab/default.nix
@@ -18,13 +18,13 @@
 
 stdenv.mkDerivation rec {
   pname = "gcab";
-  version = "1.3";
+  version = "1.4";
 
   outputs = [ "bin" "out" "dev" "devdoc" "installedTests" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "1rv81b37d5ya7xpfdxrfk173jjcwabxyng7vafgwyl5myv44qc0h";
+    sha256 = "13q43iqld4l50yra45lhvkd376pn6qpk7rkx374zn8y9wsdzm9b7";
   };
 
   patches = [
diff --git a/pkgs/development/libraries/olm/default.nix b/pkgs/development/libraries/olm/default.nix
index 8fbdf28965b..f63d1d30f55 100644
--- a/pkgs/development/libraries/olm/default.nix
+++ b/pkgs/development/libraries/olm/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ stdenv, fetchurl, cmake }:
 
 stdenv.mkDerivation rec {
   pname = "olm";
@@ -9,17 +9,9 @@ stdenv.mkDerivation rec {
     sha256 = "0f7azjxc77n4ib9nj3cwyk3vhk8r2dsyf7id6nvqyxqxwxn95a8w";
   };
 
-  doCheck = true;
-  checkTarget = "test";
-
-  # requires optimisation but memory operations are compiled with -O0
-  hardeningDisable = ["fortify"];
+  nativeBuildInputs = [ cmake ];
 
-  makeFlags = stdenv.lib.optional stdenv.cc.isClang "CC=cc";
-
-  installFlags = [
-    "PREFIX=${placeholder ''out''}"
-  ];
+  doCheck = true;
 
   meta = {
     description = "Implements double cryptographic ratchet and Megolm ratchet";
diff --git a/pkgs/development/libraries/science/math/m4rie/default.nix b/pkgs/development/libraries/science/math/m4rie/default.nix
index 6a91230002a..6a7ecdf46fd 100644
--- a/pkgs/development/libraries/science/math/m4rie/default.nix
+++ b/pkgs/development/libraries/science/math/m4rie/default.nix
@@ -5,14 +5,14 @@
 }:
 
 stdenv.mkDerivation rec {
-  version = "20150908";
+  version = "20200115";
   pname = "m4rie";
 
   src = fetchFromBitbucket {
     owner = "malb";
     repo = "m4rie";
     rev = "release-${version}";
-    sha256 = "0r8lv46qx5mkz5kp3ay2jnsp0mbhlqr5z2z220wdk73wdshcznss";
+    sha256 = "0s8if80x5d6mikbcfsbbxg347136spahp9f3x8i1hflbwl8xj9k8";
   };
 
   doCheck = true;
diff --git a/pkgs/development/python-modules/ansible/default.nix b/pkgs/development/python-modules/ansible/default.nix
index 96be51e82f0..df9c5e82cd1 100644
--- a/pkgs/development/python-modules/ansible/default.nix
+++ b/pkgs/development/python-modules/ansible/default.nix
@@ -18,13 +18,13 @@
 
 buildPythonPackage rec {
   pname = "ansible";
-  version = "2.8.7";
+  version = "2.9.2";
 
   src = fetchFromGitHub {
     owner = "ansible";
     repo = "ansible";
     rev = "v${version}";
-    sha256 = "08vqjk85j0g1x0iad03d7ysws433dikii8j2lr3a1mlx6d186vv8";
+    sha256 = "06vxvn5q13rxzndwzq3g6yxiqm361ma9zcvwbrfn630xkmsg4pd8";
   };
 
   prePatch = ''
diff --git a/pkgs/development/python-modules/avro-python3/default.nix b/pkgs/development/python-modules/avro-python3/default.nix
index c9db39a325f..46272a5418d 100644
--- a/pkgs/development/python-modules/avro-python3/default.nix
+++ b/pkgs/development/python-modules/avro-python3/default.nix
@@ -2,12 +2,12 @@
 
 buildPythonPackage rec {
   pname = "avro-python3";
-  version = "1.8.2";
+  version = "1.9.1";
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f82cf0d66189600b1e6b442f650ad5aca6c189576723dcbf6f9ce096eab81bd6";
+    sha256 = "daab2cea71b942a1eb57d700d4a729e9d6cd93284d4dd4d65a378b9f958aa0d2";
   };
 
   doCheck = false;        # No such file or directory: './run_tests.py
diff --git a/pkgs/development/python-modules/dash-core-components/default.nix b/pkgs/development/python-modules/dash-core-components/default.nix
new file mode 100644
index 00000000000..dfcbb9b6404
--- /dev/null
+++ b/pkgs/development/python-modules/dash-core-components/default.nix
@@ -0,0 +1,24 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "dash_core_components";
+  version = "1.7.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "16jjanq4glj6c2cwyw94954hrqqv49fknisbxj03lfmflg61j32k";
+  };
+
+  # No tests in archive
+  doCheck = false;
+
+  meta = with lib; {
+    description = "A dash component starter pack";
+    homepage = https://dash.plot.ly/dash-core-components;
+    license = licenses.mit;
+    maintainers = [ maintainers.antoinerg ];
+  };
+}
diff --git a/pkgs/development/python-modules/dash-html-components/default.nix b/pkgs/development/python-modules/dash-html-components/default.nix
new file mode 100644
index 00000000000..4e9ef39b411
--- /dev/null
+++ b/pkgs/development/python-modules/dash-html-components/default.nix
@@ -0,0 +1,24 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "dash_html_components";
+  version = "1.0.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "166agkrl52j5qin2npsdl2a96jccxz5f1jvcz0hxsnjg0ix0k4l9";
+  };
+
+  # No tests in archive
+  doCheck = false;
+
+  meta = with lib; {
+    description = "HTML components for Dash";
+    homepage = https://dash.plot.ly/dash-html-components;
+    license = licenses.mit;
+    maintainers = [ maintainers.antoinerg ];
+  };
+}
diff --git a/pkgs/development/python-modules/dash-renderer/default.nix b/pkgs/development/python-modules/dash-renderer/default.nix
new file mode 100644
index 00000000000..97942a13043
--- /dev/null
+++ b/pkgs/development/python-modules/dash-renderer/default.nix
@@ -0,0 +1,24 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "dash_renderer";
+  version = "1.2.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1ccsykv24dz9xj24106aaj7f0w7x7sv7mamjbx0m6k0wyhh58vw1";
+  };
+
+  # No tests in archive
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Renderer for the Dash framework";
+    homepage = https://dash.plot.ly/;
+    license = licenses.mit;
+    maintainers = [ maintainers.antoinerg ];
+  };
+}
diff --git a/pkgs/development/python-modules/dash-table/default.nix b/pkgs/development/python-modules/dash-table/default.nix
new file mode 100644
index 00000000000..4a9a6c42ff4
--- /dev/null
+++ b/pkgs/development/python-modules/dash-table/default.nix
@@ -0,0 +1,24 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "dash_table";
+  version = "4.6.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "01wzac09ac6nr27if1liaxafzdf67x00vw1iq5vaad1147rdh36k";
+  };
+
+  # No tests in archive
+  doCheck = false;
+
+  meta = with lib; {
+    description = "A First-Class Interactive DataTable for Dash";
+    homepage = https://dash.plot.ly/datatable;
+    license = licenses.mit;
+    maintainers = [ maintainers.antoinerg ];
+  };
+}
diff --git a/pkgs/development/python-modules/dash/default.nix b/pkgs/development/python-modules/dash/default.nix
new file mode 100644
index 00000000000..2106235230f
--- /dev/null
+++ b/pkgs/development/python-modules/dash/default.nix
@@ -0,0 +1,63 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, plotly
+, flask
+, flask-compress
+, future
+, dash-core-components
+, dash-renderer
+, dash-html-components
+, dash-table
+, pytest
+, pytest-mock
+, mock
+}:
+
+buildPythonPackage rec {
+  pname = "dash";
+  version = "1.8.0";
+
+  src = fetchFromGitHub {
+    owner = "plotly";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "11skbvjlj93aw1pqx6j56h73sy9r06jwq7z5h64fd1a3d4z2gsvy";
+  };
+
+  propagatedBuildInputs = [
+    plotly
+    flask
+    flask-compress
+    future
+    dash-core-components
+    dash-renderer
+    dash-html-components
+    dash-table
+  ];
+
+  checkInputs = [
+    pytest
+    pytest-mock
+    mock
+  ];
+
+  checkPhase = ''
+    pytest tests/unit/test_configs.py
+    pytest tests/unit/test_fingerprint.py
+    pytest tests/unit/test_import.py
+    pytest tests/unit/test_resources.py
+    pytest tests/unit/dash/
+  '';
+
+  pythonImportsCheck = [
+    "dash"
+  ];
+
+  meta = with lib; {
+    description = "Python framework for building analytical web applications";
+    homepage = https://dash.plot.ly/;
+    license = licenses.mit;
+    maintainers = [ maintainers.antoinerg ];
+  };
+}
diff --git a/pkgs/development/python-modules/dask-ml/default.nix b/pkgs/development/python-modules/dask-ml/default.nix
index 06c5f1753d4..c5fafa495aa 100644
--- a/pkgs/development/python-modules/dask-ml/default.nix
+++ b/pkgs/development/python-modules/dask-ml/default.nix
@@ -20,13 +20,13 @@
 }:
 
 buildPythonPackage rec {
-  version = "1.1.1";
+  version = "1.2.0";
   pname = "dask-ml";
   disabled = pythonOlder "3.6"; # >= 3.6
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1yad9b9hd02rbdf6m1gfj74cjgcbyp7lxdj22d5h5rhv7xa3127x";
+    sha256 = "0ppg8licvkxz1af2q87cxms2p6ss2r5d4fdkbcivph56r0v0ci2k";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/denonavr/default.nix b/pkgs/development/python-modules/denonavr/default.nix
new file mode 100644
index 00000000000..33c1570060e
--- /dev/null
+++ b/pkgs/development/python-modules/denonavr/default.nix
@@ -0,0 +1,29 @@
+{ lib, buildPythonPackage, fetchFromGitHub, isPy27, requests
+, pytest, testtools, requests-mock }:
+
+buildPythonPackage rec {
+  pname = "denonavr";
+  version = "0.7.10";
+
+  src = fetchFromGitHub {
+    owner = "scarface-4711";
+    repo = "denonavr";
+    rev = version;
+    sha256 = "078nhr69f68nfazhmkf2sl7wiadqx96a5ry3ziggiy1xs04vflj7";
+  };
+
+  propagatedBuildInputs = [ requests ];
+
+  doCheck = !isPy27;
+  checkInputs = [ pytest testtools requests-mock ];
+  checkPhase = ''
+    pytest tests
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/scarface-4711/denonavr";
+    description = "Automation Library for Denon AVR receivers.";
+    license = licenses.mit;
+    maintainers = with maintainers; [ colemickens ];
+  };
+}
diff --git a/pkgs/development/python-modules/django-auth-ldap/default.nix b/pkgs/development/python-modules/django-auth-ldap/default.nix
index 3e95e7ff16b..f0de263f130 100644
--- a/pkgs/development/python-modules/django-auth-ldap/default.nix
+++ b/pkgs/development/python-modules/django-auth-ldap/default.nix
@@ -1,7 +1,7 @@
 { stdenv
 , buildPythonPackage
 , fetchPypi, isPy27
-, ldap , django_2_2 
+, ldap , django 
 , mock
 }:
 
@@ -14,7 +14,7 @@ buildPythonPackage rec {
     sha256 = "5f48232c85ddfa33e3573153e6080526ac2eef5e7ec9cf42b5c4ba3c62afb96d";
   };
 
-  propagatedBuildInputs = [ ldap django_2_2 ]; 
+  propagatedBuildInputs = [ ldap django ]; 
   checkInputs = [ mock ]; 
 
   # django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings
diff --git a/pkgs/development/python-modules/flask-sockets/default.nix b/pkgs/development/python-modules/flask-sockets/default.nix
new file mode 100644
index 00000000000..aa29fd4fbc9
--- /dev/null
+++ b/pkgs/development/python-modules/flask-sockets/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, flask
+, gevent
+, gevent-websocket
+}:
+
+buildPythonPackage rec {
+  pname = "Flask-Sockets";
+  version = "0.2.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "072927da8edca0e81e024f5787e643c87d80b351b714de95d723becb30e0643b";
+  };
+
+  propagatedBuildInputs = [
+    flask
+    gevent
+    gevent-websocket
+  ];
+
+  # upstream doesn't have any tests, single file
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "flask_sockets"
+  ];
+
+  meta = with lib; {
+    description = "Elegant WebSockets for your Flask apps";
+    homepage = "https://github.com/heroku-python/flask-sockets";
+    license = licenses.mit;
+    maintainers = [ maintainers.prusnak ];
+  };
+}
diff --git a/pkgs/development/python-modules/fluidasserts/default.nix b/pkgs/development/python-modules/fluidasserts/default.nix
index da0d2d41407..f76692c50d9 100644
--- a/pkgs/development/python-modules/fluidasserts/default.nix
+++ b/pkgs/development/python-modules/fluidasserts/default.nix
@@ -57,13 +57,13 @@
 
 buildPythonPackage rec {
   pname = "fluidasserts";
-  version = "20.1.22554";
+  version = "20.1.28253";
   disabled = !isPy37;
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "0j7zppwingi9m58z51phy40d69jlskx1vgyz1gj9miqhbjfdymhi";
+    sha256 = "1d2smx9ywd1azsiwgavp69vlixmvwaabshprm192wnmprbghsp6c";
   };
 
   patchPhase = ''
@@ -82,6 +82,7 @@ buildPythonPackage rec {
       --replace "'pymssql==2.1.4'," "" \
       --replace "'pytesseract==0.3.0'," "" \
       --replace "'pywinrm==0.4.1'," "" \
+      --replace "'mitmproxy==5.0.1'," "" \
 
   '';
 
@@ -145,34 +146,13 @@ buildPythonPackage rec {
     rm test/conftest.py
 
     pytest \
-      test/test_cloud_aws_cloudformation_cloudfront.py \
-      test/test_cloud_aws_cloudformation_dynamodb.py \
-      test/test_cloud_aws_cloudformation_ec2.py \
-      test/test_cloud_aws_cloudformation_elb.py \
-      test/test_cloud_aws_cloudformation_elb2.py \
-      test/test_cloud_aws_cloudformation_fsx.py \
-      test/test_cloud_aws_cloudformation_iam.py \
-      test/test_cloud_aws_cloudformation_kms.py \
-      test/test_cloud_aws_cloudformation_rds.py \
-      test/test_cloud_aws_cloudformation_s3.py \
-      test/test_cloud_aws_cloudformation_secretsmanager.py \
-      test/test_format_apk.py \
-      test/test_format_file.py \
-      test/test_format_jks.py \
-      test/test_format_jwt.py \
-      test/test_format_pdf.py \
-      test/test_format_pkcs12.py \
-      test/test_format_string.py \
-      test/test_helper_asynchronous.py \
-      test/test_helper_crypto.py \
-      test/test_lang_core.py \
-      test/test_lang_csharp.py \
-      test/test_lang_docker.py \
-      test/test_lang_dotnetconfig.py \
-      test/test_lang_html.py \
-      test/test_lang_php.py \
-      test/test_lang_python.py \
-      test/test_lang_rpgle.py \
+      test/test_cloud_aws_cloudformation_{cloudfront,dynamodb,ec2,elb,elb2}.py \
+      test/test_cloud_aws_cloudformation_{fsx,iam,kms,rds,s3,secretsmanager}.py \
+      test/test_format_{apk,file,jks,jwt,pdf,pkcs12,string}.py \
+      test/test_helper_{asynchronous,crypto}.py \
+      test/test_lang_{javascript,java}.py \
+      test/test_lang_{core,csharp,docker,dotnetconfig,html,php,python,rpgle}.py \
+      test/test_utils_generic.py
 
   '';
 
diff --git a/pkgs/development/python-modules/nest-asyncio/default.nix b/pkgs/development/python-modules/nest-asyncio/default.nix
index a88c07c9968..0016da922ff 100644
--- a/pkgs/development/python-modules/nest-asyncio/default.nix
+++ b/pkgs/development/python-modules/nest-asyncio/default.nix
@@ -14,6 +14,11 @@ buildPythonPackage rec {
     sha256 = "7d4d7c1ca2aad0e5c2706d0222c8ff006805abfd05caa97e6127c8811d0f6adc";
   };
 
+  # tests not packaged with source dist as of 1.2.1/1.2.2, and
+  # can't check tests out of GitHub easily without specific commit IDs (no tagged releases)
+  doCheck = false;
+  pythonImportsCheck = [ "nest_asyncio" ];
+
   meta = with stdenv.lib; {
     homepage = https://github.com/erdewit/nest_asyncio;
     description = "Patch asyncio to allow nested event loops";
diff --git a/pkgs/development/python-modules/plexapi/default.nix b/pkgs/development/python-modules/plexapi/default.nix
new file mode 100644
index 00000000000..ed95de9ffde
--- /dev/null
+++ b/pkgs/development/python-modules/plexapi/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildPythonPackage, fetchFromGitHub, requests
+, tqdm, websocket_client, pytest, pillow, mock, isPy27 }:
+
+buildPythonPackage rec {
+  pname = "PlexAPI";
+  version = "3.2.0";
+
+  src = fetchFromGitHub {
+    owner = "pkkid";
+    repo = "python-plexapi";
+    rev = version;
+    sha256 = "1rzy018zcsws56mcghnphhzwj650pwj7qg6nh9z1kjvgwwjfmghf";
+  };
+
+  propagatedBuildInputs = [ requests tqdm websocket_client ];
+
+  checkInputs = [ pytest pillow ]
+    ++ lib.optionals isPy27 [ mock ];
+
+  meta = with lib; {
+    homepage = "https://github.com/pkkid/python-plexapi";
+    description = "Python bindings for the Plex API";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ colemickens ];
+  };
+}
diff --git a/pkgs/development/python-modules/plexauth/default.nix b/pkgs/development/python-modules/plexauth/default.nix
new file mode 100644
index 00000000000..91407a907a4
--- /dev/null
+++ b/pkgs/development/python-modules/plexauth/default.nix
@@ -0,0 +1,31 @@
+{ lib, buildPythonPackage, fetchFromGitHub, aiohttp, isPy27 }:
+
+buildPythonPackage rec {
+  pname = "plexauth";
+  version = "0.0.5";
+  disabled = isPy27;
+
+  src = fetchFromGitHub {
+    owner = "jjlawren";
+    repo = "python-plexauth";
+    rev = "v${version}";
+    sha256 = "1wbrn22iywl4ccz64r3w3f17k0r7vi2cqkqd2mrdkx5xqhscn9hz";
+  };
+
+  propagatedBuildInputs = [ aiohttp ];
+
+  # package does not include tests
+  doCheck = false;
+
+  # at least guarantee the module can be imported
+  pythonImportsCheck = [
+    "plexauth"
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/jjlawren/python-plexauth/";
+    description = "Handles the authorization flow to obtain tokens from Plex.tv via external redirection";
+    license = licenses.mit;
+    maintainers = with maintainers; [ colemickens ];
+  };
+}
diff --git a/pkgs/development/python-modules/plexwebsocket/default.nix b/pkgs/development/python-modules/plexwebsocket/default.nix
new file mode 100644
index 00000000000..383a37cee3f
--- /dev/null
+++ b/pkgs/development/python-modules/plexwebsocket/default.nix
@@ -0,0 +1,31 @@
+{ lib, buildPythonPackage, fetchFromGitHub, aiohttp, isPy27 }:
+
+buildPythonPackage rec {
+  pname = "plexwebsocket";
+  version = "0.0.6";
+  disabled = isPy27;
+
+  src = fetchFromGitHub {
+    owner = "jjlawren";
+    repo = "python-plexwebsocket";
+    rev = "v${version}";
+    sha256 = "1sy9khxksimcmdvghg1ksk65mkiihjvhi7m7ms2kzmy7mrg3s3i7";
+  };
+
+  propagatedBuildInputs = [ aiohttp ];
+
+  # package does not include tests
+  doCheck = false;
+
+  # at least guarantee the module can be imported
+  pythonImportsCheck = [
+    "plexwebsocket"
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/jjlawren/python-plexwebsocket/";
+    description = "Async library to react to events issued over Plex websockets";
+    license = licenses.mit;
+    maintainers = with maintainers; [ colemickens ];
+  };
+}
diff --git a/pkgs/development/python-modules/runway-python/default.nix b/pkgs/development/python-modules/runway-python/default.nix
index 5c60b6379e9..fca11c100cf 100644
--- a/pkgs/development/python-modules/runway-python/default.nix
+++ b/pkgs/development/python-modules/runway-python/default.nix
@@ -2,29 +2,38 @@
 , buildPythonPackage
 , fetchPypi
 , flask
+, flask-compress
 , flask-cors
+, flask-sockets
 , numpy
+, scipy
 , pillow
 , gevent
 , wget
 , six
 , colorcet
+, unidecode
+, urllib3
 }:
 
 buildPythonPackage rec {
   pname = "runway-python";
-  version = "0.5.7";
+  version = "0.5.9";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "06e0138cc4cf2ddb7304502f5c7b53269ce73679c5784c8d6b423db04d179c18";
+    sha256 = "1d75c44008275213034977c75bc2dc6f419e7f11d087984e3faea1e0cf6da69d";
   };
 
-  propagatedBuildInputs = [ flask flask-cors numpy pillow gevent wget six colorcet ];
+  propagatedBuildInputs = [ flask flask-compress flask-cors flask-sockets numpy scipy pillow gevent wget six colorcet unidecode urllib3 ];
 
   # tests are not packaged in the released tarball
   doCheck = false;
 
+  pythonImportsCheck = [
+    "runway"
+  ];
+
   meta = {
     description = "Helper library for creating Runway models";
     homepage = https://github.com/runwayml/model-sdk;
diff --git a/pkgs/development/python-modules/vega/default.nix b/pkgs/development/python-modules/vega/default.nix
index 2bfeccccc59..73485329ef7 100644
--- a/pkgs/development/python-modules/vega/default.nix
+++ b/pkgs/development/python-modules/vega/default.nix
@@ -1,5 +1,5 @@
 { stdenv, buildPythonPackage , fetchPypi
-, pytest, jupyter_core, pandas }:
+, pytest, jupyter_core, pandas, ipywidgets }:
 
 buildPythonPackage rec {
   pname = "vega";
@@ -11,7 +11,7 @@ buildPythonPackage rec {
   };
 
   buildInputs = [ pytest ];
-  propagatedBuildInputs = [ jupyter_core pandas ];
+  propagatedBuildInputs = [ jupyter_core pandas ipywidgets ];
 
   meta = with stdenv.lib; {
     description = "An IPython/Jupyter widget for Vega and Vega-Lite";
diff --git a/pkgs/development/tools/build-managers/icmake/default.nix b/pkgs/development/tools/build-managers/icmake/default.nix
index 48a719c7c26..7135790c1bd 100644
--- a/pkgs/development/tools/build-managers/icmake/default.nix
+++ b/pkgs/development/tools/build-managers/icmake/default.nix
@@ -2,10 +2,10 @@
 
 stdenv.mkDerivation rec {
   pname = "icmake";
-  version = "9.02.09";
+  version = "9.03.01";
 
   src = fetchFromGitLab {
-    sha256 = "0f4vyqgjribwa60j3a1c2xv69zllc7rfhaafq0jj1mdy8hdzvxpd";
+    sha256 = "05r0a69w0hv2qhjpb2bxd0lmp2vv5r2d4iggg6ly4miam0i318jy";
     rev = version;
     repo = "icmake";
     owner = "fbb-git";
diff --git a/pkgs/development/web/postman/default.nix b/pkgs/development/web/postman/default.nix
index 3a0a8f34356..5407f8408ea 100644
--- a/pkgs/development/web/postman/default.nix
+++ b/pkgs/development/web/postman/default.nix
@@ -7,11 +7,11 @@
 
 stdenv.mkDerivation rec {
   pname = "postman";
-  version = "7.14.0";
+  version = "7.16.0";
 
   src = fetchurl {
     url = "https://dl.pstmn.io/download/version/${version}/linux64";
-    sha256 = "0565qvn5bnx1mc1ibxrqszzvls0gkg10js55439lwygfhkal0lvy";
+    sha256 = "1f68z4n0n2jj5ymssii82cswz4kw3dd3zkz26ahsbpsc2hr7ijxp";
     name = "${pname}.tar.gz";
   };
 
diff --git a/pkgs/games/crispy-doom/default.nix b/pkgs/games/crispy-doom/default.nix
index 4fb4f301cfb..e85cebde040 100644
--- a/pkgs/games/crispy-doom/default.nix
+++ b/pkgs/games/crispy-doom/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "crispy-doom";
-  version = "5.6.3";
+  version = "5.6.4";
 
   src = fetchFromGitHub {
     owner = "fabiangreffrath";
     repo = pname;
     rev = "${pname}-${version}";
-    sha256 = "0f319979wqfgm4pvsa6y5clg30p55l441kmrr8db0p5smyv3x2s4";
+    sha256 = "1ls4v2kpb7vi7xji5yqbmyc5lfkz497h1vvj9w86wkrw8k59hlg2";
   };
 
   postPatch = ''
diff --git a/pkgs/games/nudoku/default.nix b/pkgs/games/nudoku/default.nix
new file mode 100644
index 00000000000..b9e521bce36
--- /dev/null
+++ b/pkgs/games/nudoku/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, gettext, ncurses }:
+
+stdenv.mkDerivation rec {
+  pname = "nudoku";
+  version = "2.0.0";
+
+  src = fetchFromGitHub {
+    owner = "jubalh";
+    repo = pname;
+    rev = version;
+    sha256 = "0rj8ajni7gssj0qbf1jn51699sadxwsr6ca2718w74psv7acda8h";
+  };
+
+  # Allow gettext 0.20
+  postPatch = ''
+    substituteInPlace configure.ac --replace 0.19 0.20
+  '';
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig gettext ];
+  buildInputs = [ ncurses ];
+
+  configureFlags = stdenv.lib.optional stdenv.hostPlatform.isMusl "--disable-nls";
+
+  meta = with stdenv.lib; {
+    description = "An ncurses based sudoku game";
+    homepage = "http://jubalh.github.io/nudoku/";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ dtzWill ];
+  };
+}
+
diff --git a/pkgs/misc/drivers/hplip/default.nix b/pkgs/misc/drivers/hplip/default.nix
index a7e080ebce2..1514e8def97 100644
--- a/pkgs/misc/drivers/hplip/default.nix
+++ b/pkgs/misc/drivers/hplip/default.nix
@@ -20,8 +20,8 @@ let
   };
 
   plugin = fetchurl {
-    url = "https://www.openprinting.org/download/printdriver/auxfiles/HP/plugins/${name}-plugin.run";
-    sha256 = "1b5gys04kh41gg7r7rzlpdbc2f4jirl2ik22cd935mm85k7abfwq";
+    url = "https://developers.hp.com/sites/default/files/${name}-plugin.run";
+    sha256 = "1fn8h1a5znjqjh071ifjdywr0xswc14286gwy6h9vvlh8hzrz347";
   };
 
   hplipState = substituteAll {
diff --git a/pkgs/misc/uboot/default.nix b/pkgs/misc/uboot/default.nix
index 5bd20c0765b..29dfb6558a9 100644
--- a/pkgs/misc/uboot/default.nix
+++ b/pkgs/misc/uboot/default.nix
@@ -6,10 +6,10 @@
 }:
 
 let
-  defaultVersion = "2019.10";
+  defaultVersion = "2020.01";
   defaultSrc = fetchurl {
     url = "ftp://ftp.denx.de/pub/u-boot/u-boot-${defaultVersion}.tar.bz2";
-    sha256 = "053hcrwwlacqh2niisn0zas95zkbffw5aw5sdhixs8lmfdq60vcd";
+    sha256 = "1w9ml4jl15q6ixpdqzspxjnl7d3rgxd7f99ms1xv5c8869h3qida";
   };
   buildUBoot = {
     version ? null
@@ -28,19 +28,7 @@ let
 
     src = if src == null then defaultSrc else src;
 
-    patches = [
-      # Submitted upstream: https://patchwork.ozlabs.org/patch/1203693/
-      (fetchpatch {
-        url = https://github.com/dezgeg/u-boot/commit/extlinux-path-length-2018-03.patch;
-        sha256 = "07jafdnxvqv8lz256qy29agjc2k1zj5ad4k28r1w5qkhwj4ixmf8";
-      })
-      # Submitted upstream: https://patchwork.ozlabs.org/patch/1203678/
-      (fetchpatch {
-        name = "rockchip-allow-loading-larger-kernels.patch";
-        url = "https://marc.info/?l=u-boot&m=157537843004298&q=raw";
-        sha256 = "0l3l88cc9xkxkraql82pfgpx6nqn4dj7cvfaagh5pzfwkxyw0n3p";
-      })
-    ] ++ extraPatches;
+    patches = extraPatches;
 
     postPatch = ''
       patchShebangs tools
@@ -53,7 +41,7 @@ let
       dtc
       flex
       openssl
-      (buildPackages.python2.withPackages (p: [ p.libfdt ]))
+      (buildPackages.python3.withPackages (p: [ p.libfdt ]))
       swig
     ];
     depsBuildBuild = [ buildPackages.stdenv.cc ];
@@ -124,6 +112,12 @@ in {
     filesToInstall = ["u-boot-sunxi-with-spl.bin"];
   };
 
+  ubootAmx335xEVM = buildUBoot {
+    defconfig = "am335x_evm_defconfig";
+    extraMeta.platforms = ["armv7l-linux"];
+    filesToInstall = ["MLO" "u-boot.img"];
+  };
+
   ubootBananaPi = buildUBoot {
     defconfig = "Bananapi_defconfig";
     extraMeta.platforms = ["armv7l-linux"];
@@ -143,12 +137,6 @@ in {
     filesToInstall = ["u-boot-sunxi-with-spl.bin"];
   };
 
-  ubootBeagleboneBlack = buildUBoot {
-    defconfig = "am335x_boneblack_defconfig";
-    extraMeta.platforms = ["armv7l-linux"];
-    filesToInstall = ["MLO" "u-boot.img"];
-  };
-
   # http://git.denx.de/?p=u-boot.git;a=blob;f=board/solidrun/clearfog/README;hb=refs/heads/master
   ubootClearfog = buildUBoot {
     defconfig = "clearfog_defconfig";
diff --git a/pkgs/os-specific/linux/health-check/default.nix b/pkgs/os-specific/linux/health-check/default.nix
index d45f6c5f896..694d4565d96 100644
--- a/pkgs/os-specific/linux/health-check/default.nix
+++ b/pkgs/os-specific/linux/health-check/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "health-check";
-  version = "0.03.04";
+  version = "0.03.05";
 
   src = fetchurl {
     url = "https://kernel.ubuntu.com/~cking/tarballs/${pname}/${pname}-${version}.tar.gz";
-    sha256 = "0p85ai31n9hh6d4b79zzlczf9arsy7vmkjak1x3g9f5qj8fy4avp";
+    sha256 = "1qxmkdl4pa043yg4kq5ffapm0c2cmm64h3v2c3xhnx0ad5pbhy5z";
   };
 
   buildInputs = [ json_c libbsd ];
diff --git a/pkgs/os-specific/linux/powerstat/default.nix b/pkgs/os-specific/linux/powerstat/default.nix
index 7f5b14ca72f..91e1bc0f53a 100644
--- a/pkgs/os-specific/linux/powerstat/default.nix
+++ b/pkgs/os-specific/linux/powerstat/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "powerstat";
-  version = "0.02.20";
+  version = "0.02.21";
   
   src = fetchurl {
     url = "https://kernel.ubuntu.com/~cking/tarballs/${pname}/${pname}-${version}.tar.gz";
-    sha256 = "1qsxk055pfjqnd9w4nx6js7a8bzvq6nfjiwjs4h9ik6jlsrhb4v7";
+    sha256 = "00396dyn3mw3virx9h2g9kzw9ai10x7wpn8zclnvvidn9g0jhf31";
   };
   
   installFlags = [ "DESTDIR=${placeholder "out"}" ];
diff --git a/pkgs/servers/http/jetty/default.nix b/pkgs/servers/http/jetty/default.nix
index 8d2340647cb..4a3a3f2da01 100644
--- a/pkgs/servers/http/jetty/default.nix
+++ b/pkgs/servers/http/jetty/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "jetty";
-  version = "9.4.24.v20191120";
+  version = "9.4.25.v20191220";
   src = fetchurl {
     url = "https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/${version}/jetty-distribution-${version}.tar.gz";
     name = "jetty-distribution-${version}.tar.gz";
-    sha256 = "072vr8gfly2xdwxx1c771yymf145l8nv0j31liwqrih8zqvvhsd4";
+    sha256 = "1jnx4hnvd2krsdisqwpws1qd1r0f8gm9a4sx4a8c7zqrmfd2zx1a";
   };
 
   phases = [ "unpackPhase" "installPhase" ];
diff --git a/pkgs/servers/metabase/default.nix b/pkgs/servers/metabase/default.nix
index e266ea71ee0..69a92942f5c 100644
--- a/pkgs/servers/metabase/default.nix
+++ b/pkgs/servers/metabase/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "metabase";
-  version = "0.33.7.1";
+  version = "0.34.1";
 
   src = fetchurl {
     url = "http://downloads.metabase.com/v${version}/metabase.jar";
-    sha256 = "1rx9v0vcrpsjsclap4x9ic9jwhyd24v1n1v8si18blzn3iyr8c36";
+    sha256 = "0fcggpv9ikx481ci7jw6phhmk3mqxbsn9pfs1kqmhwy1ka4ck6dg";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/servers/mqtt/mosquitto/default.nix b/pkgs/servers/mqtt/mosquitto/default.nix
index 5b0f4eceaed..b52cfb09d4f 100644
--- a/pkgs/servers/mqtt/mosquitto/default.nix
+++ b/pkgs/servers/mqtt/mosquitto/default.nix
@@ -4,13 +4,13 @@
 
 stdenv.mkDerivation rec {
   pname = "mosquitto";
-  version = "1.6.7";
+  version = "1.6.8";
 
   src = fetchFromGitHub {
     owner  = "eclipse";
     repo   = "mosquitto";
     rev    = "v${version}";
-    sha256 = "1g9g9c95ypfa9dv53ga3hjqxrrlqmcf1lmpxgrifl2l34q4zzfln";
+    sha256 = "1py13vg3vwwwg6jdnmq46z6rlzb84r4ggqsmsrn4yar5hrw9pa90";
   };
 
   postPatch = ''
diff --git a/pkgs/servers/nextcloud/default.nix b/pkgs/servers/nextcloud/default.nix
index 0d0aec4fb2c..9fb7a2e3e0e 100644
--- a/pkgs/servers/nextcloud/default.nix
+++ b/pkgs/servers/nextcloud/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "nextcloud";
-  version = "17.0.2";
+  version = "18.0.0";
 
   src = fetchurl {
     url = "https://download.nextcloud.com/server/releases/${pname}-${version}.tar.bz2";
-    sha256 = "1qrxalyyfjlv3myzkn5z33smfpv8r1ph2w9ax6jqivspq3zrc9gk";
+    sha256 = "0yr6sh9nf15dpnpcj4ypdmm9l3y8ls57pxsmqh5h913db2jrah0r";
   };
 
   installPhase = ''
diff --git a/pkgs/servers/search/groonga/default.nix b/pkgs/servers/search/groonga/default.nix
index cfadeac5f07..d610a02ee91 100644
--- a/pkgs/servers/search/groonga/default.nix
+++ b/pkgs/servers/search/groonga/default.nix
@@ -7,11 +7,11 @@
 stdenv.mkDerivation rec {
 
   pname = "groonga";
-  version = "9.1.0";
+  version = "9.1.1";
 
   src = fetchurl {
     url    = "https://packages.groonga.org/source/groonga/${pname}-${version}.tar.gz";
-    sha256 = "11mlpnaldb6z438qdb7qjq9dxbh71l6v6lrv69fxka34izpgyhkk";
+    sha256 = "16i5bmypawxjac6g808qgr0z3rvla6g6dr586rmwl7sbq0z2nr82";
   };
 
   buildInputs = with stdenv.lib;
diff --git a/pkgs/tools/admin/ansible/default.nix b/pkgs/tools/admin/ansible/default.nix
index 5b724fb0bf9..7dde0e4764c 100644
--- a/pkgs/tools/admin/ansible/default.nix
+++ b/pkgs/tools/admin/ansible/default.nix
@@ -1,11 +1,21 @@
 { python3Packages, fetchurl }:
 
-{
-  ansible = with python3Packages; toPythonApplication ansible;
+rec {
+  ansible = ansible_2_8;
 
-  ansible_2_8 = with python3Packages; toPythonApplication ansible;
+  ansible_2_9 = python3Packages.toPythonApplication python3Packages.ansible;
 
-  ansible_2_7 = with python3Packages; toPythonApplication (ansible.overridePythonAttrs(old: rec {
+  ansible_2_8 = with python3Packages; toPythonApplication (python3Packages.ansible.overrideAttrs(old: rec {
+    pname = "ansible";
+    version = "2.8.7";
+
+    src = fetchurl {
+      url = "https://releases.ansible.com/ansible/${pname}-${version}.tar.gz";
+      sha256 = "0iy90kqxs52nspfkhj1y7z4zf017jfm5qhdb01d8d4jd5g53k0l2";
+    };
+  }));
+
+  ansible_2_7 = with python3Packages; toPythonApplication (ansible.overrideAttrs(old: rec {
     pname = "ansible";
     version = "2.7.15";
 
@@ -15,7 +25,7 @@
     };
   }));
 
-  ansible_2_6 = with python3Packages; toPythonApplication (ansible.overridePythonAttrs(old: rec {
+  ansible_2_6 = with python3Packages; toPythonApplication (ansible.overrideAttrs(old: rec {
     pname = "ansible";
     version = "2.6.20";
 
diff --git a/pkgs/tools/backup/luckybackup/default.nix b/pkgs/tools/backup/luckybackup/default.nix
new file mode 100644
index 00000000000..3e89be15391
--- /dev/null
+++ b/pkgs/tools/backup/luckybackup/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchurl
+, pkgconfig, libtool, qmake
+, rsync, ssh
+}:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  pname = "luckybackup";
+  version = "0.5.0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/project/luckybackup/${version}/source/${pname}-${version}.tar.gz";
+    sha256 = "0nwjsk1j33pm8882jbj8h6nxn6n5ab9dxqpqkay65pfbhcjay0g8";
+  };
+
+  buildInputs = [ rsync ssh ];
+
+  nativeBuildInputs = [ pkgconfig libtool qmake ];
+  
+  prePatch = ''
+    for File in luckybackup.pro menu/luckybackup-pkexec \
+        menu/luckybackup-su.desktop menu/luckybackup.desktop \
+        menu/net.luckybackup.su.policy src/functions.cpp \
+        src/global.cpp src/scheduleDialog.cpp; do
+      substituteInPlace $File --replace "/usr" "$out"
+    done
+  '';
+
+  meta = {
+    description = "A powerful, fast and reliable backup & sync tool";
+    longDescription = ''
+      luckyBackup is an application for data back-up and synchronization 
+      powered by the rsync tool.
+      
+      It is simple to use, fast (transfers over only changes made and not
+      all data), safe (keeps your data safe by checking all declared directories
+      before proceeding in any data manipulation), reliable and fully 
+      customizable.
+    '';
+    homepage = "http://luckybackup.sourceforge.net/";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ AndersonTorres ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/tools/filesystems/glusterfs/default.nix b/pkgs/tools/filesystems/glusterfs/default.nix
index b5fc12024b1..db5c469e63b 100644
--- a/pkgs/tools/filesystems/glusterfs/default.nix
+++ b/pkgs/tools/filesystems/glusterfs/default.nix
@@ -15,10 +15,10 @@ let
     #       The command
     #         find /nix/store/...-glusterfs-.../ -name '*.py' -executable
     #       can help with finding new Python scripts.
-    version = "7.1";
+    version = "7.2";
     name="${baseName}-${version}";
     url="https://github.com/gluster/glusterfs/archive/v${version}.tar.gz";
-    sha256 = "11v5hwijbb08xq3dd4m6bkspa3v4vjzcnw6j1qyh0gjmc7yy4ml3";
+    sha256 = "0v333q217rvgh6bnmq4bcafkjz2gq0p4xqmxd3carkyl1zyyp8q5";
   };
 
   buildInputs = [
diff --git a/pkgs/tools/graphics/argyllcms/default.nix b/pkgs/tools/graphics/argyllcms/default.nix
index 1326d045459..3f8bdf3ac6b 100644
--- a/pkgs/tools/graphics/argyllcms/default.nix
+++ b/pkgs/tools/graphics/argyllcms/default.nix
@@ -2,7 +2,7 @@
 , libXrender, libXext, libtiff, libjpeg, libpng, libXScrnSaver, writeText
 , libXdmcp, libXau, lib, openssl }:
 let
-  version = "2.1.1";
+  version = "2.1.2";
  in
 stdenv.mkDerivation rec {
   pname = "argyllcms";
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
     # Kind of flacky URL, it was reaturning 406 and inconsistent binaries for a
     # while on me. It might be good to find a mirror
     url = "https://www.argyllcms.com/Argyll_V${version}_src.zip";
-    sha256 = "0zq3fipky44xg536kdhg9bchi6s9ka7n1q73fwf9ja766s8rj99m";
+    sha256 = "1bsi795kphr1a8l2kvvm9qfkvgfpimds4ijalnmg23wnr8691md1";
 
     # The argyllcms web server doesn't like curl ...
     curlOpts = "--user-agent 'Mozilla/5.0'";
diff --git a/pkgs/tools/misc/diffoscope/default.nix b/pkgs/tools/misc/diffoscope/default.nix
index c9f61ee3459..97b4aa1db28 100644
--- a/pkgs/tools/misc/diffoscope/default.nix
+++ b/pkgs/tools/misc/diffoscope/default.nix
@@ -9,11 +9,11 @@
 # Note: when upgrading this package, please run the list-missing-tools.sh script as described below!
 python3Packages.buildPythonApplication rec {
   pname = "diffoscope";
-  version = "133";
+  version = "135";
 
   src = fetchurl {
     url    = "https://diffoscope.org/archive/diffoscope-${version}.tar.bz2";
-    sha256 = "15hi2fwcx3sf189rmxpyah0amq1a49wgp1ynhvwij5qj13wib2q8";
+    sha256 = "1grf28mb6lyxdqbmvws4h7inalda9z7qnjx7dc859mzkf54cn3yd";
   };
 
   patches = [
diff --git a/pkgs/tools/misc/h/default.nix b/pkgs/tools/misc/h/default.nix
new file mode 100644
index 00000000000..f4897a54cb1
--- /dev/null
+++ b/pkgs/tools/misc/h/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchFromGitHub, makeWrapper, ruby }:
+
+stdenv.mkDerivation rec {
+  pname = "h";
+  version = "1.0.0";
+
+  src = fetchFromGitHub {
+    owner = "zimbatm";
+    repo = "h";
+    rev = "v${version}";
+    hash = "sha256-chGrMtvLyyNtlM7PO1olVdkzkvMOk6OibHw+mqwVxIM=";
+  };
+
+  buildInputs = [ ruby ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp h $out/bin/h
+    cp up $out/bin/up
+  '';
+
+  meta = with stdenv.lib; {
+    description = "faster shell navigation of projects";
+    homepage = "https://github.com/zimbatm/h";
+    license = licenses.mit;
+    maintainers = [ maintainers.zimbatm ];
+  };
+}
diff --git a/pkgs/tools/misc/mcfly/default.nix b/pkgs/tools/misc/mcfly/default.nix
index 4ea27ce092f..7d85e709f73 100644
--- a/pkgs/tools/misc/mcfly/default.nix
+++ b/pkgs/tools/misc/mcfly/default.nix
@@ -1,20 +1,20 @@
-{ stdenv, rustPlatform, fetchFromGitHub }:
+{ stdenv, rustPlatform, fetchFromGitHub, Security }:
 
 rustPlatform.buildRustPackage rec {
   pname = "mcfly";
-  version = "0.3.1";
+  version = "0.3.6";
 
   src = fetchFromGitHub {
     owner = "cantino";
     repo = "mcfly";
     rev = "v${version}";
-    sha256 = "0pmyw21zns4zn7pffji4yvbj63fx3g15cx81pk4bs6lzyz5zbdc2";
+    sha256 = "1g3n7ll0yg7w7hb3jgp25mlnqwsdzv0608f41z7q5gmsskdm3v1j";
   };
 
+  buildInputs = stdenv.lib.optionals stdenv.isDarwin [ Security ];
+
   preInstall = ''
-    mkdir -p $out/share/mcfly
-    cp mcfly.bash $out/share/mcfly/
-    chmod +x $out/share/mcfly/mcfly.bash
+    install -Dm644 -t $out/share/mcfly mcfly.bash
   '';
 
   cargoSha256 = "1bf65kagvhsi6lg8187ihi5j45hkq9d8v6j7rzmmfhngdzvcfr69";
@@ -23,7 +23,6 @@ rustPlatform.buildRustPackage rec {
     homepage = https://github.com/cantino/mcfly;
     description = "An upgraded ctrl-r for Bash whose history results make sense for what you're working on right now.";
     license = licenses.mit;
-    platforms = platforms.linux;
     maintainers = [ maintainers.melkor333 ];
   };
 }
diff --git a/pkgs/tools/misc/mutagen/default.nix b/pkgs/tools/misc/mutagen/default.nix
new file mode 100644
index 00000000000..7045a5b5140
--- /dev/null
+++ b/pkgs/tools/misc/mutagen/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "mutagen";
+  version = "0.10.2";
+
+  src = fetchFromGitHub {
+    owner = "mutagen-io";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0andmgzg2dbnahfh6ncnk9b7d5jlwss7rddsf9z3nmw2q3lj90iz";
+  };
+
+  modSha256 = "0zb6wqfgp5v0hpm8ad6s9lc1n3wayyqindv4vfkmp3980ikb8qwx";
+
+  subPackages = [ "cmd/mutagen" "cmd/mutagen-agent" ];
+
+  meta = with lib; {
+    description = "Make remote development work with your local tools";
+    homepage = "https://mutagen.io/";
+    maintainers = [ maintainers.marsam ];
+    license = licenses.mit;
+  };
+}
diff --git a/pkgs/tools/misc/pspg/default.nix b/pkgs/tools/misc/pspg/default.nix
index c42ea76ca85..4cf98ef8b48 100644
--- a/pkgs/tools/misc/pspg/default.nix
+++ b/pkgs/tools/misc/pspg/default.nix
@@ -1,18 +1,18 @@
-{ stdenv, fetchFromGitHub, gnugrep, ncurses, pkgconfig, readline }:
+{ stdenv, fetchFromGitHub, gnugrep, ncurses, pkgconfig, readline, postgresql }:
 
 stdenv.mkDerivation rec {
   pname = "pspg";
-  version = "2.6.0";
+  version = "2.6.6";
 
   src = fetchFromGitHub {
     owner = "okbob";
     repo = pname;
     rev = version;
-    sha256 = "0cs0hsrrknl2cv39zzq4wydx5p7095hz18yly572fnniyi4ljbdg";
+    sha256 = "0l20ysr61y99zxvm8cqsgj7arv4m7h7gqq8lrq65bmh9fxncfpsd";
   };
 
   nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ gnugrep ncurses readline ];
+  buildInputs = [ gnugrep ncurses readline postgresql ];
 
   makeFlags = [ "PREFIX=${placeholder "out"}" ];
 
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/okbob/pspg";
     description = "Postgres Pager";
     license = licenses.bsd2;
-    platforms = platforms.linux;
+    platforms = platforms.unix;
     maintainers = [ maintainers.jlesquembre ];
   };
 }
diff --git a/pkgs/tools/networking/corerad/default.nix b/pkgs/tools/networking/corerad/default.nix
index c5cbd8c21f5..e8f17450688 100644
--- a/pkgs/tools/networking/corerad/default.nix
+++ b/pkgs/tools/networking/corerad/default.nix
@@ -2,7 +2,7 @@
 
 buildGoModule rec {
   pname = "corerad";
-  version = "0.1.8";
+  version = "0.1.9";
 
   goPackagePath = "github.com/mdlayher/corerad";
 
@@ -10,10 +10,10 @@ buildGoModule rec {
     owner = "mdlayher";
     repo = "corerad";
     rev = "v${version}";
-    sha256 = "13js6p3svx2xp20yjpb5w71rnyrhiiqbbvsck45i756j1lndaqxr";
+    sha256 = "1m23f318qr6b8c7hxrhihrm09pmdwab988k3bn4ygfm49z5phy4s";
   };
 
-  modSha256 = "03x7r392bwchmd3jzwwykdfkr9lfdn77phfwh8xfk2avhzq7qs89";
+  modSha256 = "0idlpkn6krs77akn3p6gxsbc8zpj1rnjkhhwmb8ns98x82g6bln0";
 
   meta = with stdenv.lib; {
     homepage = "https://github.com/mdlayher/corerad";
diff --git a/pkgs/tools/networking/v2ray/default.nix b/pkgs/tools/networking/v2ray/default.nix
index ee3ca416aa4..5d1cd4540d7 100644
--- a/pkgs/tools/networking/v2ray/default.nix
+++ b/pkgs/tools/networking/v2ray/default.nix
@@ -3,20 +3,20 @@
 , ... } @ args:
 
 callPackage ./generic.nix (rec {
-  version = "4.22.0";
+  version = "4.22.1";
 
   src = fetchFromGitHub {
     owner = "v2ray";
     repo = "v2ray-core";
     rev = "v${version}";
-    sha256 = "1gr4s96ii4dx5bcwpb82rn250pcnncxwzx147p9dbwbyiy0i9nz7";
+    sha256 = "0l4rg9galjcm6dzv7sapnim9a02z7pv354mk5mwqndznii6nkr73";
   };
 
   assets = {
     # MIT licensed
     "geoip.dat" = let
-      geoipRev = "202001010102";
-      geoipSha256 = "16i73c3852f7zmya0q3856cc4gvhqhpln9s98qvr2dr1mpp72c1w";
+      geoipRev = "202001210102";
+      geoipSha256 = "1wxhrhrigjqzpy5w8yj7yd9ib245xwhqys2pf9prdknq71piyziz";
     in fetchurl {
       url = "https://github.com/v2ray/geoip/releases/download/${geoipRev}/geoip.dat";
       sha256 = geoipSha256;
@@ -24,8 +24,8 @@ callPackage ./generic.nix (rec {
 
     # MIT licensed
     "geosite.dat" = let
-      geositeRev = "20191226.1";
-      geositeSha256 = "0b4ji5kj5jpkwri3libxm9yl49dcy91vkl7h1rkhrrhbl17s3qiy";
+      geositeRev = "202001211332";
+      geositeSha256 = "06qlbjxk21lhyh5l3pd8l4m9rdl7sjh2jriz51zihaqx4417f0m7";
     in fetchurl {
       url = "https://github.com/v2ray/domain-list-community/releases/download/${geositeRev}/dlc.dat";
       sha256 = geositeSha256;
diff --git a/pkgs/tools/security/munge/default.nix b/pkgs/tools/security/munge/default.nix
index 2d758aa2aec..ee1858ad284 100644
--- a/pkgs/tools/security/munge/default.nix
+++ b/pkgs/tools/security/munge/default.nix
@@ -1,13 +1,13 @@
 { stdenv, fetchFromGitHub, autoreconfHook, gawk, gnused, libgcrypt, zlib, bzip2 }:
 
 stdenv.mkDerivation rec {
-  name = "munge-0.5.13";
+  name = "munge-0.5.14";
 
   src = fetchFromGitHub {
     owner = "dun";
     repo = "munge";
     rev = name;
-    sha256 = "1c4ff3d8ad3inbliszr4slym3b4cn19bn6mxm13mzy20jyi2rm70";
+    sha256 = "15h805rwcb9f89dyrkxfclzs41n3ff8x7cc1dbvs8mb0ds682c4j";
   };
 
   nativeBuildInputs = [ autoreconfHook gawk gnused ];
diff --git a/pkgs/tools/text/mawk/default.nix b/pkgs/tools/text/mawk/default.nix
index fbfc032445b..81d11e2aae7 100644
--- a/pkgs/tools/text/mawk/default.nix
+++ b/pkgs/tools/text/mawk/default.nix
@@ -1,14 +1,14 @@
 { stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
-  name = "mawk-1.3.4-20190203";
+  name = "mawk-1.3.4-20200106";
 
   src = fetchurl {
     urls = [
       "ftp://ftp.invisible-island.net/mawk/${name}.tgz"
       "https://invisible-mirror.net/archives/mawk/${name}.tgz"
     ];
-    sha256 = "0h5qlslaj5czz4v25hqg8a6kg4c5mlkmdpxhhvpvp1ci08ab7b6s";
+    sha256 = "1dhmn0l1c122a4bb07a1lwzrzpjdhsbdbllb1a9gwvv2lw5j9qgi";
   };
 
   meta = with stdenv.lib; {
diff --git a/pkgs/tools/text/ocrmypdf/default.nix b/pkgs/tools/text/ocrmypdf/default.nix
index 13353daa171..cdc6878bb5a 100644
--- a/pkgs/tools/text/ocrmypdf/default.nix
+++ b/pkgs/tools/text/ocrmypdf/default.nix
@@ -10,6 +10,7 @@
 , stdenv
 , tesseract4
 , unpaper
+, substituteAll
 }:
 
 let
@@ -28,14 +29,14 @@ let
 
 in buildPythonApplication rec {
   pname = "ocrmypdf";
-  version = "9.2.0";
+  version = "9.5.0";
   disabled = ! python3Packages.isPy3k;
 
   src = fetchFromGitHub {
     owner = "jbarlow83";
     repo = "OCRmyPDF";
     rev = "v${version}";
-    sha256 = "1mvc6x5nn242z65pxv39ch71vaikgi89bb0sjbfy2jbw91vk41xa";
+    sha256 = "0rvwxykyscpcvfgm8zzyvjgzl9x9ddi9cxmqyxrc031mxpc0lzyy";
   };
 
   nativeBuildInputs = with python3Packages; [
@@ -68,11 +69,12 @@ in buildPythonApplication rec {
     setuptools
   ] ++ runtimeDeps;
 
-  postPatch = ''
-    substituteInPlace src/ocrmypdf/leptonica.py \
-      --replace "lept = ffi.dlopen(_libpath)" \
-      'lept = ffi.dlopen("${stdenv.lib.makeLibraryPath [leptonica]}/liblept${stdenv.hostPlatform.extensions.sharedLibrary}")'
-  '';
+  patches = [
+    (substituteAll {
+      src = ./liblept.patch;
+      liblept = "${stdenv.lib.getLib leptonica}/lib/liblept${stdenv.hostPlatform.extensions.sharedLibrary}";
+    })
+  ];
 
   # The tests take potentially 20+ minutes, depending on machine
   doCheck = false;
diff --git a/pkgs/tools/text/ocrmypdf/liblept.patch b/pkgs/tools/text/ocrmypdf/liblept.patch
new file mode 100644
index 00000000000..ed413a8b37b
--- /dev/null
+++ b/pkgs/tools/text/ocrmypdf/liblept.patch
@@ -0,0 +1,13 @@
+diff --git a/src/ocrmypdf/leptonica.py b/src/ocrmypdf/leptonica.py
+index 328b063..b993cc9 100644
+--- a/src/ocrmypdf/leptonica.py
++++ b/src/ocrmypdf/leptonica.py
+@@ -46,7 +46,7 @@ if os.name == 'nt':
+     os.environ['PATH'] = shim_paths_with_program_files()
+ else:
+     libname = 'lept'
+-_libpath = find_library(libname)
++_libpath = '@liblept@'
+ if not _libpath:
+     raise MissingDependencyError(
+         """
diff --git a/pkgs/tools/typesetting/asciidoctorj/default.nix b/pkgs/tools/typesetting/asciidoctorj/default.nix
index 8eaee977d28..39e7eab34ab 100644
--- a/pkgs/tools/typesetting/asciidoctorj/default.nix
+++ b/pkgs/tools/typesetting/asciidoctorj/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "asciidoctorj";
-  version = "2.1.0";
+  version = "2.2.0";
 
   src = fetchzip {
     url = "http://dl.bintray.com/asciidoctor/maven/org/asciidoctor/${pname}/${version}/${pname}-${version}-bin.zip";
-    sha256 = "19fl4y3xlkmmgf5vyyb3k9p6nyglck9l53r6x12zil01q49g0zba";
+    sha256 = "0akxzfibfa8msnardvyy9hkj2z6sqn7pnwphz6avixdcclg6yxa5";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix
index c64b56dd5ce..3831db8d401 100644
--- a/pkgs/top-level/aliases.nix
+++ b/pkgs/top-level/aliases.nix
@@ -442,6 +442,7 @@ mapAliases ({
   transmission_remote_gtk = transmission-remote-gtk; # added 2018-01-06
   truecrypt = veracrypt; # added 2018-10-24
   tshark = wireshark-cli; # added 2018-04-25
+  ubootBeagleboneBlack = ubootAmx335xEVM; # added 2020-01-21
   ucsFonts = ucs-fonts; # added 2016-07-15
   ultrastardx-beta = ultrastardx; # added 2017-08-12
   usb_modeswitch = usb-modeswitch; # added 2016-05-10
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 36bfc03a878..33390a61581 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -1593,6 +1593,8 @@ in
 
   direnv = callPackage ../tools/misc/direnv { };
 
+  h = callPackage ../tools/misc/h { };
+
   discount = callPackage ../tools/text/discount { };
 
   diskscan = callPackage ../tools/misc/diskscan { };
@@ -2062,6 +2064,8 @@ in
 
   step-cli = callPackage ../tools/security/step-cli { };
 
+  string-machine = callPackage ../applications/audio/string-machine { };
+
   bash-supergenpass = callPackage ../tools/security/bash-supergenpass { };
 
   sweep-visualizer = callPackage ../tools/misc/sweep-visualizer { };
@@ -2952,6 +2956,10 @@ in
 
   epubcheck = callPackage ../tools/text/epubcheck { };
 
+  luckybackup = libsForQt5.callPackage ../tools/backup/luckybackup {
+    ssh = openssh;
+  };
+
   mcrcon = callPackage ../tools/networking/mcrcon {};
 
   rage = callPackage ../tools/security/rage {
@@ -4540,7 +4548,9 @@ in
 
   mautrix-whatsapp = callPackage ../servers/mautrix-whatsapp { };
 
-  mcfly = callPackage ../tools/misc/mcfly { };
+  mcfly = callPackage ../tools/misc/mcfly {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
 
   mdbook = callPackage ../tools/text/mdbook {
     inherit (darwin.apple_sdk.frameworks) CoreServices;
@@ -5129,6 +5139,8 @@ in
 
   munt = libsForQt5.callPackage ../applications/audio/munt { };
 
+  mutagen = callPackage ../tools/misc/mutagen { };
+
   mycli = callPackage ../tools/admin/mycli { };
 
   mydumper = callPackage ../tools/backup/mydumper { };
@@ -9649,7 +9661,9 @@ in
   inherit (callPackage ../tools/admin/ansible { })
     ansible
     ansible_2_6
-    ansible_2_7;
+    ansible_2_7
+    ansible_2_8
+    ansible_2_9;
 
   ansible-lint = with python3.pkgs; toPythonApplication ansible-lint;
 
@@ -17143,7 +17157,7 @@ in
     ubootBananaPi
     ubootBananaPim3
     ubootBananaPim64
-    ubootBeagleboneBlack
+    ubootAmx335xEVM
     ubootClearfog
     ubootGuruplug
     ubootJetsonTK1
@@ -19701,6 +19715,8 @@ in
 
   imgcat = callPackage ../applications/graphics/imgcat { };
 
+  imgp = python3Packages.callPackage ../applications/graphics/imgp { };
+
   # Impressive, formerly known as "KeyJNote".
   impressive = callPackage ../applications/office/impressive { };
 
@@ -19892,7 +19908,7 @@ in
   kubeval = callPackage ../applications/networking/cluster/kubeval { };
 
   kubernetes = callPackage ../applications/networking/cluster/kubernetes {
-    go = buildPackages.go_1_12;
+    go = buildPackages.go_1_13;
   };
 
   kubeseal = callPackage ../applications/networking/cluster/kubeseal { };
@@ -20652,7 +20668,7 @@ in
 
   obs-linuxbrowser = callPackage ../applications/video/obs-studio/linuxbrowser.nix { };
 
-  obs-studio = libsForQt5.callPackage ../applications/video/obs-studio { };
+  obs-studio = libsForQt5.callPackage ../applications/video/obs-studio { ffmpeg = ffmpeg_4; };
 
   obs-wlrobs = callPackage ../applications/video/obs-studio/wlrobs.nix { };
 
@@ -23141,6 +23157,8 @@ in
 
   newtonwars = callPackage ../games/newtonwars { };
 
+  nudoku = callPackage ../games/nudoku { };
+
   nxengine-evo = callPackage ../games/nxengine-evo { };
 
   odamex = callPackage ../games/odamex { };
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 8a5c4a18f36..2f854138ba1 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -562,6 +562,8 @@ in {
 
   dendropy = callPackage ../development/python-modules/dendropy { };
 
+  denonavr = callPackage ../development/python-modules/denonavr { };
+
   dependency-injector = callPackage ../development/python-modules/dependency-injector { };
 
   btchip = callPackage ../development/python-modules/btchip { };
@@ -2446,6 +2448,16 @@ in {
 
   daphne = callPackage ../development/python-modules/daphne { };
 
+  dash = callPackage ../development/python-modules/dash { };
+
+  dash-core-components = callPackage ../development/python-modules/dash-core-components { };
+
+  dash-html-components = callPackage ../development/python-modules/dash-html-components { };
+
+  dash-renderer = callPackage ../development/python-modules/dash-renderer { };
+
+  dash-table = callPackage ../development/python-modules/dash-table { };
+
   dateparser = callPackage ../development/python-modules/dateparser { };
 
   # Actual name of package
@@ -2948,6 +2960,12 @@ in {
 
   plaster-pastedeploy = callPackage ../development/python-modules/plaster-pastedeploy {};
 
+  plexapi = callPackage ../development/python-modules/plexapi { };
+
+  plexauth = callPackage ../development/python-modules/plexauth { };
+
+  plexwebsocket = callPackage ../development/python-modules/plexwebsocket { };
+
   plotly = callPackage ../development/python-modules/plotly { };
 
   plyfile = callPackage ../development/python-modules/plyfile { };
@@ -3472,6 +3490,8 @@ in {
 
   flask-socketio = callPackage ../development/python-modules/flask-socketio { };
 
+  flask-sockets = callPackage ../development/python-modules/flask-sockets { };
+
   flask_sqlalchemy = callPackage ../development/python-modules/flask-sqlalchemy { };
 
   flask-swagger = callPackage ../development/python-modules/flask-swagger { };