summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--maintainers/maintainer-list.nix6
-rw-r--r--nixos/doc/manual/development/settings-options.xml2
-rw-r--r--nixos/doc/manual/release-notes/rl-2105.xml7
-rw-r--r--nixos/modules/config/pulseaudio.nix1
-rw-r--r--nixos/modules/config/users-groups.nix34
-rw-r--r--nixos/modules/services/backup/borgbackup.nix1
-rw-r--r--nixos/modules/services/databases/pgmanage.nix1
-rw-r--r--nixos/modules/services/misc/bazarr.nix1
-rw-r--r--nixos/modules/services/misc/nix-daemon.nix1
-rw-r--r--nixos/modules/services/monitoring/tuptime.nix5
-rw-r--r--nixos/modules/services/networking/bird.nix1
-rw-r--r--nixos/modules/services/networking/ncdns.nix6
-rw-r--r--nixos/modules/services/networking/pixiecore.nix1
-rw-r--r--nixos/modules/services/networking/pleroma.nix1
-rw-r--r--nixos/modules/services/security/privacyidea.nix2
-rw-r--r--nixos/modules/services/web-apps/nextcloud.nix1
-rw-r--r--nixos/tests/mysql/mariadb-galera-mariabackup.nix6
-rw-r--r--nixos/tests/mysql/mariadb-galera-rsync.nix6
-rw-r--r--nixos/tests/mysql/mysql.nix12
-rw-r--r--nixos/tests/redis.nix3
-rw-r--r--nixos/tests/rspamd.nix5
-rw-r--r--nixos/tests/shadow.nix3
-rw-r--r--nixos/tests/systemd-confinement.nix1
-rw-r--r--nixos/tests/unbound.nix11
-rw-r--r--pkgs/applications/audio/midi-visualizer/default.nix4
-rw-r--r--pkgs/applications/editors/vscode/vscode.nix10
-rw-r--r--pkgs/applications/misc/googleearth-pro/default.nix111
-rw-r--r--pkgs/applications/misc/simplenote/default.nix4
-rw-r--r--pkgs/applications/networking/browsers/chromium/upstream-info.json12
-rw-r--r--pkgs/applications/networking/cluster/terraform-providers/default.nix2
-rw-r--r--pkgs/applications/networking/cluster/terraform-providers/keycloak/default.nix30
-rw-r--r--pkgs/applications/networking/cluster/terraform-providers/providers.json8
-rw-r--r--pkgs/applications/office/todofi.sh/default.nix42
-rw-r--r--pkgs/applications/science/biology/MACS2/default.nix25
-rw-r--r--pkgs/data/icons/numix-icon-theme-circle/default.nix6
-rw-r--r--pkgs/data/icons/numix-icon-theme-square/default.nix6
-rw-r--r--pkgs/data/icons/numix-icon-theme/default.nix10
-rw-r--r--pkgs/development/compilers/jetbrains-jdk/default.nix4
-rw-r--r--pkgs/development/compilers/llvm/11/llvm/default.nix2
-rw-r--r--pkgs/development/libraries/fcft/default.nix9
-rw-r--r--pkgs/development/node-packages/default.nix13
-rw-r--r--pkgs/development/node-packages/node-packages.json1
-rw-r--r--pkgs/development/node-packages/node-packages.nix559
-rw-r--r--pkgs/development/ocaml-modules/postgresql/default.nix10
-rw-r--r--pkgs/development/python-modules/clickhouse-cli/default.nix36
-rw-r--r--pkgs/development/python-modules/mcstatus/default.nix8
-rw-r--r--pkgs/development/python-modules/oci/default.nix45
-rw-r--r--pkgs/development/python-modules/pikepdf/default.nix7
-rw-r--r--pkgs/development/python-modules/pulsectl/default.nix2
-rw-r--r--pkgs/development/python-modules/spotipy/default.nix4
-rw-r--r--pkgs/development/python-modules/systembridge/default.nix32
-rw-r--r--pkgs/development/python-modules/twitterapi/default.nix4
-rw-r--r--pkgs/development/tools/buildah/default.nix4
-rw-r--r--pkgs/development/tools/godot/default.nix6
-rw-r--r--pkgs/games/scummvm/default.nix13
-rw-r--r--pkgs/misc/vscode-extensions/default.nix15
-rw-r--r--pkgs/os-specific/bsd/netbsd/default.nix4
-rw-r--r--pkgs/servers/monitoring/alertmanager-irc-relay/default.nix6
-rw-r--r--pkgs/tools/admin/oci-cli/default.nix58
-rw-r--r--pkgs/tools/text/ocrmypdf/default.nix5
-rw-r--r--pkgs/top-level/all-packages.nix25
-rw-r--r--pkgs/top-level/python-packages.nix6
62 files changed, 987 insertions, 279 deletions
diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix
index d01e1281b02..487b394baa1 100644
--- a/maintainers/maintainer-list.nix
+++ b/maintainers/maintainer-list.nix
@@ -3431,6 +3431,12 @@
     githubId = 2129135;
     name = "Frederik Rietdijk";
   };
+  friedelino = {
+    email = "friede.mann@posteo.de";
+    github = "friedelino";
+    githubId = 46672819;
+    name = "Frido Friedemann";
+  };
   frlan = {
     email = "frank@frank.uvena.de";
     github = "frlan";
diff --git a/nixos/doc/manual/development/settings-options.xml b/nixos/doc/manual/development/settings-options.xml
index c99c3af92f8..7795d7c8044 100644
--- a/nixos/doc/manual/development/settings-options.xml
+++ b/nixos/doc/manual/development/settings-options.xml
@@ -167,7 +167,7 @@ in {
 
     # We know that the `user` attribute exists because we set a default value
     # for it above, allowing us to use it without worries here
-    users.users.${cfg.settings.user} = {};
+    users.users.${cfg.settings.user} = { isSystemUser = true; };
 
     # ...
   };
diff --git a/nixos/doc/manual/release-notes/rl-2105.xml b/nixos/doc/manual/release-notes/rl-2105.xml
index ace1bdccdc6..ce3cfc573dc 100644
--- a/nixos/doc/manual/release-notes/rl-2105.xml
+++ b/nixos/doc/manual/release-notes/rl-2105.xml
@@ -846,6 +846,13 @@ environment.systemPackages = [
     </para>
    </listitem>
    <listitem>
+    <para>
+      When defining a new user, one of <xref linkend="opt-users.users._name_.isNormalUser" /> and <xref linkend="opt-users.users._name_.isSystemUser" /> is now required.
+      This is to prevent accidentally giving a UID above 1000 to system users, which could have unexpected consequences, like running user activation scripts for system users.
+      Note that users defined with an explicit UID below 500 are exempted from this check, as <xref linkend="opt-users.users._name_.isSystemUser" /> has no effect for those.
+    </para>
+   </listitem>
+   <listitem>
      <para>
        The GNOME desktop manager once again installs <package>gnome3.epiphany</package> by default.
      </para>
diff --git a/nixos/modules/config/pulseaudio.nix b/nixos/modules/config/pulseaudio.nix
index c0e90a8c26e..0266bbfb121 100644
--- a/nixos/modules/config/pulseaudio.nix
+++ b/nixos/modules/config/pulseaudio.nix
@@ -306,6 +306,7 @@ in {
         description = "PulseAudio system service user";
         home = stateDir;
         createHome = true;
+        isSystemUser = true;
       };
 
       users.groups.pulse.gid = gid;
diff --git a/nixos/modules/config/users-groups.nix b/nixos/modules/config/users-groups.nix
index 4a2647339c5..2b6a61e9a80 100644
--- a/nixos/modules/config/users-groups.nix
+++ b/nixos/modules/config/users-groups.nix
@@ -92,6 +92,8 @@ let
           the user's UID is allocated in the range for system users
           (below 500) or in the range for normal users (starting at
           1000).
+          Exactly one of <literal>isNormalUser</literal> and
+          <literal>isSystemUser</literal> must be true.
         '';
       };
 
@@ -107,6 +109,8 @@ let
           <option>useDefaultShell</option> to <literal>true</literal>,
           and <option>isSystemUser</option> to
           <literal>false</literal>.
+          Exactly one of <literal>isNormalUser</literal> and
+          <literal>isSystemUser</literal> must be true.
         '';
       };
 
@@ -521,6 +525,7 @@ in {
       };
       nobody = {
         uid = ids.uids.nobody;
+        isSystemUser = true;
         description = "Unprivileged account (don't use!)";
         group = "nogroup";
       };
@@ -608,17 +613,28 @@ in {
           Neither the root account nor any wheel user has a password or SSH authorized key.
           You must set one to prevent being locked out of your system.'';
       }
-    ] ++ flip mapAttrsToList cfg.users (name: user:
-      {
+    ] ++ flatten (flip mapAttrsToList cfg.users (name: user:
+      [
+        {
         assertion = (user.hashedPassword != null)
-                    -> (builtins.match ".*:.*" user.hashedPassword == null);
+        -> (builtins.match ".*:.*" user.hashedPassword == null);
         message = ''
-          The password hash of user "${user.name}" contains a ":" character.
-          This is invalid and would break the login system because the fields
-          of /etc/shadow (file where hashes are stored) are colon-separated.
-          Please check the value of option `users.users."${user.name}".hashedPassword`.'';
-      }
-    );
+            The password hash of user "${user.name}" contains a ":" character.
+            This is invalid and would break the login system because the fields
+            of /etc/shadow (file where hashes are stored) are colon-separated.
+            Please check the value of option `users.users."${user.name}".hashedPassword`.'';
+          }
+          {
+            assertion = let
+              xor = a: b: a && !b || b && !a;
+              isEffectivelySystemUser = user.isSystemUser || (user.uid != null && user.uid < 500);
+            in xor isEffectivelySystemUser user.isNormalUser;
+            message = ''
+              Exactly one of users.users.${user.name}.isSystemUser and users.users.${user.name}.isNormalUser must be set.
+            '';
+          }
+        ]
+    ));
 
     warnings =
       builtins.filter (x: x != null) (
diff --git a/nixos/modules/services/backup/borgbackup.nix b/nixos/modules/services/backup/borgbackup.nix
index be661b201f0..18fb29fd72a 100644
--- a/nixos/modules/services/backup/borgbackup.nix
+++ b/nixos/modules/services/backup/borgbackup.nix
@@ -169,6 +169,7 @@ let
         (map (mkAuthorizedKey cfg false) cfg.authorizedKeys
         ++ map (mkAuthorizedKey cfg true) cfg.authorizedKeysAppendOnly);
       useDefaultShell = true;
+      isSystemUser = true;
     };
     groups.${cfg.group} = { };
   };
diff --git a/nixos/modules/services/databases/pgmanage.nix b/nixos/modules/services/databases/pgmanage.nix
index 0f8634dab31..8508e76b5cd 100644
--- a/nixos/modules/services/databases/pgmanage.nix
+++ b/nixos/modules/services/databases/pgmanage.nix
@@ -197,6 +197,7 @@ in {
         group = pgmanage;
         home  = cfg.sqlRoot;
         createHome = true;
+        isSystemUser = true;
       };
       groups.${pgmanage} = {
         name = pgmanage;
diff --git a/nixos/modules/services/misc/bazarr.nix b/nixos/modules/services/misc/bazarr.nix
index d3fd5b08cc8..99343a146a7 100644
--- a/nixos/modules/services/misc/bazarr.nix
+++ b/nixos/modules/services/misc/bazarr.nix
@@ -64,6 +64,7 @@ in
 
     users.users = mkIf (cfg.user == "bazarr") {
       bazarr = {
+        isSystemUser = true;
         group = cfg.group;
         home = "/var/lib/${config.systemd.services.bazarr.serviceConfig.StateDirectory}";
       };
diff --git a/nixos/modules/services/misc/nix-daemon.nix b/nixos/modules/services/misc/nix-daemon.nix
index 64bdbf159d5..133e96da0ec 100644
--- a/nixos/modules/services/misc/nix-daemon.nix
+++ b/nixos/modules/services/misc/nix-daemon.nix
@@ -21,6 +21,7 @@ let
          calls in `libstore/build.cc', don't add any supplementary group
          here except "nixbld".  */
       uid = builtins.add config.ids.uids.nixbld nr;
+      isSystemUser = true;
       group = "nixbld";
       extraGroups = [ "nixbld" ];
     };
diff --git a/nixos/modules/services/monitoring/tuptime.nix b/nixos/modules/services/monitoring/tuptime.nix
index 8f79d916599..17c5c1f56ea 100644
--- a/nixos/modules/services/monitoring/tuptime.nix
+++ b/nixos/modules/services/monitoring/tuptime.nix
@@ -34,7 +34,10 @@ in {
 
     users = {
       groups._tuptime.members = [ "_tuptime" ];
-      users._tuptime.description = "tuptime database owner";
+      users._tuptime = {
+        isSystemUser = true;
+        description = "tuptime database owner";
+      };
     };
 
     systemd = {
diff --git a/nixos/modules/services/networking/bird.nix b/nixos/modules/services/networking/bird.nix
index 6d7e7760d94..1923afdf83f 100644
--- a/nixos/modules/services/networking/bird.nix
+++ b/nixos/modules/services/networking/bird.nix
@@ -73,6 +73,7 @@ let
           users.${variant} = {
             description = "BIRD Internet Routing Daemon user";
             group = variant;
+            isSystemUser = true;
           };
           groups.${variant} = {};
         };
diff --git a/nixos/modules/services/networking/ncdns.nix b/nixos/modules/services/networking/ncdns.nix
index c1832ad1752..d30fe0f6f6d 100644
--- a/nixos/modules/services/networking/ncdns.nix
+++ b/nixos/modules/services/networking/ncdns.nix
@@ -243,8 +243,10 @@ in
         xlog.journal = true;
     };
 
-    users.users.ncdns =
-      { description = "ncdns daemon user"; };
+    users.users.ncdns = {
+      isSystemUser = true;
+      description = "ncdns daemon user";
+    };
 
     systemd.services.ncdns = {
       description = "ncdns daemon";
diff --git a/nixos/modules/services/networking/pixiecore.nix b/nixos/modules/services/networking/pixiecore.nix
index 85aa40784af..d2642c82c2d 100644
--- a/nixos/modules/services/networking/pixiecore.nix
+++ b/nixos/modules/services/networking/pixiecore.nix
@@ -93,6 +93,7 @@ in
     users.users.pixiecore = {
       description = "Pixiecore daemon user";
       group = "pixiecore";
+      isSystemUser = true;
     };
 
     networking.firewall = mkIf cfg.openFirewall {
diff --git a/nixos/modules/services/networking/pleroma.nix b/nixos/modules/services/networking/pleroma.nix
index 9b2bf9f6124..2687230a158 100644
--- a/nixos/modules/services/networking/pleroma.nix
+++ b/nixos/modules/services/networking/pleroma.nix
@@ -75,6 +75,7 @@ in {
         description = "Pleroma user";
         home = cfg.stateDir;
         extraGroups = [ cfg.group ];
+        isSystemUser = true;
       };
       groups."${cfg.group}" = {};
     };
diff --git a/nixos/modules/services/security/privacyidea.nix b/nixos/modules/services/security/privacyidea.nix
index f7b40089a93..2696dca4c76 100644
--- a/nixos/modules/services/security/privacyidea.nix
+++ b/nixos/modules/services/security/privacyidea.nix
@@ -264,6 +264,7 @@ in
 
       users.users.privacyidea = mkIf (cfg.user == "privacyidea") {
         group = cfg.group;
+        isSystemUser = true;
       };
 
       users.groups.privacyidea = mkIf (cfg.group == "privacyidea") {};
@@ -294,6 +295,7 @@ in
 
       users.users.pi-ldap-proxy = mkIf (cfg.ldap-proxy.user == "pi-ldap-proxy") {
         group = cfg.ldap-proxy.group;
+        isSystemUser = true;
       };
 
       users.groups.pi-ldap-proxy = mkIf (cfg.ldap-proxy.group == "pi-ldap-proxy") {};
diff --git a/nixos/modules/services/web-apps/nextcloud.nix b/nixos/modules/services/web-apps/nextcloud.nix
index 9a541aba6e4..58e8e5a0a8b 100644
--- a/nixos/modules/services/web-apps/nextcloud.nix
+++ b/nixos/modules/services/web-apps/nextcloud.nix
@@ -607,6 +607,7 @@ in {
         home = "${cfg.home}";
         group = "nextcloud";
         createHome = true;
+        isSystemUser = true;
       };
       users.groups.nextcloud.members = [ "nextcloud" config.services.nginx.user ];
 
diff --git a/nixos/tests/mysql/mariadb-galera-mariabackup.nix b/nixos/tests/mysql/mariadb-galera-mariabackup.nix
index 0a40c010a47..1c73bc854a5 100644
--- a/nixos/tests/mysql/mariadb-galera-mariabackup.nix
+++ b/nixos/tests/mysql/mariadb-galera-mariabackup.nix
@@ -31,7 +31,7 @@ in {
         firewall.allowedTCPPorts = [ 3306 4444 4567 4568 ];
         firewall.allowedUDPPorts = [ 4567 ];
       };
-      users.users.testuser = { };
+      users.users.testuser = { isSystemUser = true; };
       systemd.services.mysql = with pkgs; {
         path = [ mysqlenv-common mysqlenv-mariabackup ];
       };
@@ -89,7 +89,7 @@ in {
         firewall.allowedTCPPorts = [ 3306 4444 4567 4568 ];
         firewall.allowedUDPPorts = [ 4567 ];
       };
-      users.users.testuser = { };
+      users.users.testuser = { isSystemUser = true; };
       systemd.services.mysql = with pkgs; {
         path = [ mysqlenv-common mysqlenv-mariabackup ];
       };
@@ -136,7 +136,7 @@ in {
         firewall.allowedTCPPorts = [ 3306 4444 4567 4568 ];
         firewall.allowedUDPPorts = [ 4567 ];
       };
-      users.users.testuser = { };
+      users.users.testuser = { isSystemUser = true; };
       systemd.services.mysql = with pkgs; {
         path = [ mysqlenv-common mysqlenv-mariabackup ];
       };
diff --git a/nixos/tests/mysql/mariadb-galera-rsync.nix b/nixos/tests/mysql/mariadb-galera-rsync.nix
index 6fb3cfef8d7..709a8b5085c 100644
--- a/nixos/tests/mysql/mariadb-galera-rsync.nix
+++ b/nixos/tests/mysql/mariadb-galera-rsync.nix
@@ -31,7 +31,7 @@ in {
         firewall.allowedTCPPorts = [ 3306 4444 4567 4568 ];
         firewall.allowedUDPPorts = [ 4567 ];
       };
-      users.users.testuser = { };
+      users.users.testuser = { isSystemUser = true; };
       systemd.services.mysql = with pkgs; {
         path = [ mysqlenv-common mysqlenv-rsync ];
       };
@@ -84,7 +84,7 @@ in {
         firewall.allowedTCPPorts = [ 3306 4444 4567 4568 ];
         firewall.allowedUDPPorts = [ 4567 ];
       };
-      users.users.testuser = { };
+      users.users.testuser = { isSystemUser = true; };
       systemd.services.mysql = with pkgs; {
         path = [ mysqlenv-common mysqlenv-rsync ];
       };
@@ -130,7 +130,7 @@ in {
         firewall.allowedTCPPorts = [ 3306 4444 4567 4568 ];
         firewall.allowedUDPPorts = [ 4567 ];
       };
-      users.users.testuser = { };
+      users.users.testuser = { isSystemUser = true; };
       systemd.services.mysql = with pkgs; {
         path = [ mysqlenv-common mysqlenv-rsync ];
       };
diff --git a/nixos/tests/mysql/mysql.nix b/nixos/tests/mysql/mysql.nix
index 50ad5c68aef..c21136416d4 100644
--- a/nixos/tests/mysql/mysql.nix
+++ b/nixos/tests/mysql/mysql.nix
@@ -9,8 +9,8 @@ import ./../make-test-python.nix ({ pkgs, ...} : {
       { pkgs, ... }:
 
       {
-        users.users.testuser = { };
-        users.users.testuser2 = { };
+        users.users.testuser = { isSystemUser = true; };
+        users.users.testuser2 = { isSystemUser = true; };
         services.mysql.enable = true;
         services.mysql.initialDatabases = [
           { name = "testdb3"; schema = ./testdb.sql; }
@@ -44,8 +44,8 @@ import ./../make-test-python.nix ({ pkgs, ...} : {
         # Kernel panic - not syncing: Out of memory: compulsory panic_on_oom is enabled
         virtualisation.memorySize = 1024;
 
-        users.users.testuser = { };
-        users.users.testuser2 = { };
+        users.users.testuser = { isSystemUser = true; };
+        users.users.testuser2 = { isSystemUser = true; };
         services.mysql.enable = true;
         services.mysql.initialDatabases = [
           { name = "testdb3"; schema = ./testdb.sql; }
@@ -75,8 +75,8 @@ import ./../make-test-python.nix ({ pkgs, ...} : {
       { pkgs, ... }:
 
       {
-        users.users.testuser = { };
-        users.users.testuser2 = { };
+        users.users.testuser = { isSystemUser = true; };
+        users.users.testuser2 = { isSystemUser = true; };
         services.mysql.enable = true;
         services.mysql.initialScript = pkgs.writeText "mariadb-init.sql" ''
           ALTER USER root@localhost IDENTIFIED WITH unix_socket;
diff --git a/nixos/tests/redis.nix b/nixos/tests/redis.nix
index 79a7847414a..28b6058c2c0 100644
--- a/nixos/tests/redis.nix
+++ b/nixos/tests/redis.nix
@@ -22,11 +22,10 @@ in
         users.users."member" = {
           createHome = false;
           description = "A member of the redis group";
+          isNormalUser = true;
           extraGroups = [
             "redis"
           ];
-          group = "users";
-          shell = "/bin/sh";
         };
       };
   };
diff --git a/nixos/tests/rspamd.nix b/nixos/tests/rspamd.nix
index 7f41e1a7956..f0ccfe7ea0e 100644
--- a/nixos/tests/rspamd.nix
+++ b/nixos/tests/rspamd.nix
@@ -274,7 +274,10 @@ in
 
         I find cows to be evil don't you?
       '';
-      users.users.tester.password = "test";
+      users.users.tester = {
+        isNormalUser = true;
+        password = "test";
+      };
       services.postfix = {
         enable = true;
         destination = ["example.com"];
diff --git a/nixos/tests/shadow.nix b/nixos/tests/shadow.nix
index e5755e8e087..c51961e1fc6 100644
--- a/nixos/tests/shadow.nix
+++ b/nixos/tests/shadow.nix
@@ -13,14 +13,17 @@ in import ./make-test-python.nix ({ pkgs, ... }: {
     users = {
       mutableUsers = true;
       users.emma = {
+        isNormalUser = true;
         password = password1;
         shell = pkgs.bash;
       };
       users.layla = {
+        isNormalUser = true;
         password = password2;
         shell = pkgs.shadow;
       };
       users.ash = {
+        isNormalUser = true;
         password = password4;
         shell = pkgs.bash;
       };
diff --git a/nixos/tests/systemd-confinement.nix b/nixos/tests/systemd-confinement.nix
index ebf6d218fd6..d04e4a3f867 100644
--- a/nixos/tests/systemd-confinement.nix
+++ b/nixos/tests/systemd-confinement.nix
@@ -150,6 +150,7 @@ import ./make-test-python.nix {
 
     config.users.groups.chroot-testgroup = {};
     config.users.users.chroot-testuser = {
+      isSystemUser = true;
       description = "Chroot Test User";
       group = "chroot-testgroup";
     };
diff --git a/nixos/tests/unbound.nix b/nixos/tests/unbound.nix
index d4b8bb15ced..ca9718ac633 100644
--- a/nixos/tests/unbound.nix
+++ b/nixos/tests/unbound.nix
@@ -132,12 +132,15 @@ import ./make-test-python.nix ({ pkgs, lib, ... }:
 
         users.users = {
           # user that is permitted to access the unix socket
-          someuser.extraGroups = [
-            config.users.users.unbound.group
-          ];
+          someuser = {
+            isSystemUser = true;
+            extraGroups = [
+              config.users.users.unbound.group
+            ];
+          };
 
           # user that is not permitted to access the unix socket
-          unauthorizeduser = {};
+          unauthorizeduser = { isSystemUser = true; };
         };
 
         environment.etc = {
diff --git a/pkgs/applications/audio/midi-visualizer/default.nix b/pkgs/applications/audio/midi-visualizer/default.nix
index 37cfd0fac40..0213dc4af6d 100644
--- a/pkgs/applications/audio/midi-visualizer/default.nix
+++ b/pkgs/applications/audio/midi-visualizer/default.nix
@@ -3,13 +3,13 @@
 
 stdenv.mkDerivation rec {
   pname = "MIDIVisualizer";
-  version = "6.3";
+  version = "6.4";
 
   src = fetchFromGitHub {
     owner = "kosua20";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-U/YmxHD6e13I++aW+z1Y5xtZ+MN0KUJLSskrF4+UgTE=";
+    sha256 = "sha256-XR5xmQYVbBR6QWt/+PLeGqg0t4xl35MPrQNaPsmgAYA=";
   };
 
   nativeBuildInputs = [ cmake pkg-config makeWrapper];
diff --git a/pkgs/applications/editors/vscode/vscode.nix b/pkgs/applications/editors/vscode/vscode.nix
index 09a58e7dfd1..35637c8fc86 100644
--- a/pkgs/applications/editors/vscode/vscode.nix
+++ b/pkgs/applications/editors/vscode/vscode.nix
@@ -13,10 +13,10 @@ let
   archive_fmt = if system == "x86_64-darwin" then "zip" else "tar.gz";
 
   sha256 = {
-    x86_64-linux = "0z1diiiykv4ilsiljffz9sl2mlvrxq0xwm8ga2ralfvjwbhzr6dn";
-    x86_64-darwin = "02gzw46w3kzw1ya9nx8fkhvzi0mbpz2fyp47n58jki2zkdsfiwzh";
-    aarch64-linux = "0bkvgdxch95dqcb41ncsjkaaswmwv6zad4hzdsr3famjm2vym1ky";
-    armv7l-linux = "0wdp97ihdnx9bcyn2dh6wzhb7qvdj6x730r7ng1q3i9jhd19wfi3";
+    x86_64-linux = "08151qdhf4chg9gfbs0dl0v0k5vla2gz5dfy439jzdg1d022d5rw";
+    x86_64-darwin = "1vlxxkv3wvds3xl3ir93l5q5yq2d7mcragsicfayj9x9r49ilqn3";
+    aarch64-linux = "0rxw1wsi555z41ak817sxqyyan0rm7hma640zsh8dz0yvhzdv1h8";
+    armv7l-linux = "1ijvd7r2fxxlw4zv3zx5h70b3d0b4gcq3aljsi02v1lr2zm8f8gb";
   }.${system};
 in
   callPackage ./generic.nix rec {
@@ -25,7 +25,7 @@ in
 
     # Please backport all compatible updates to the stable release.
     # This is important for the extension ecosystem.
-    version = "1.55.0";
+    version = "1.55.2";
     pname = "vscode";
 
     executableName = "code" + lib.optionalString isInsiders "-insiders";
diff --git a/pkgs/applications/misc/googleearth-pro/default.nix b/pkgs/applications/misc/googleearth-pro/default.nix
new file mode 100644
index 00000000000..e5192c9a73e
--- /dev/null
+++ b/pkgs/applications/misc/googleearth-pro/default.nix
@@ -0,0 +1,111 @@
+{ lib, stdenv, fetchurl, glibc, libGLU, libGL, freetype, glib, libSM, libICE, libXi, libXv
+, libXrender, libXrandr, libXfixes, libXcursor, libXinerama, libXext, libX11, libXcomposite
+, libxcb, sqlite, zlib, fontconfig, dpkg, libproxy, libxml2, gst_all_1, dbus, makeWrapper }:
+
+let
+  arch =
+    if stdenv.hostPlatform.system == "x86_64-linux" then "amd64"
+    else throw "Unsupported system ${stdenv.hostPlatform.system} ";
+  fullPath = lib.makeLibraryPath [
+    glibc
+    glib
+    stdenv.cc.cc
+    libSM
+    libICE
+    libXi
+    libXv
+    libGLU libGL
+    libXrender
+    libXrandr
+    libXfixes
+    libXcursor
+    libXinerama
+    libXcomposite
+    freetype
+    libXext
+    libX11
+    libxcb
+    sqlite
+    zlib
+    fontconfig
+    libproxy
+    libxml2
+    dbus
+    gst_all_1.gstreamer
+    gst_all_1.gst-plugins-base
+  ];
+in
+stdenv.mkDerivation rec {
+  pname = "googleearth-pro";
+  version = "7.3.3.7786";
+
+  src = fetchurl {
+    url = "https://dl.google.com/linux/earth/deb/pool/main/g/google-earth-pro-stable/google-earth-pro-stable_${version}-r0_${arch}.deb";
+    sha256 = "1s3cakwrgf702g33rh8qs657d8bl68wgg8k89rksgvswwpd2zbb3";
+  };
+
+  nativeBuildInputs = [ dpkg makeWrapper ];
+
+  doInstallCheck = true;
+
+  dontBuild = true;
+
+  dontPatchELF = true;
+
+  unpackPhase = ''
+    # deb file contains a setuid binary, so 'dpkg -x' doesn't work here
+    dpkg --fsys-tarfile ${src} | tar --extract
+  '';
+
+  installPhase =''
+    mkdir $out
+    mv usr/* $out/
+    rmdir usr
+    mv * $out/
+    rm $out/bin/google-earth-pro $out/opt/google/earth/pro/googleearth
+
+    # patch and link googleearth binary
+    ln -s $out/opt/google/earth/pro/googleearth-bin $out/bin/googleearth-pro
+    patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath "${fullPath}:\$ORIGIN" \
+      $out/opt/google/earth/pro/googleearth-bin
+
+    # patch and link gpsbabel binary
+    ln -s $out/opt/google/earth/pro/gpsbabel $out/bin/gpsbabel
+    patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath "${fullPath}:\$ORIGIN" \
+      $out/opt/google/earth/pro/gpsbabel
+
+    # patch libraries
+    for a in $out/opt/google/earth/pro/*.so* ; do
+      patchelf --set-rpath "${fullPath}:\$ORIGIN" $a
+    done
+
+    # Add desktop config file and icons
+    mkdir -p $out/share/{applications,icons/hicolor/{16x16,22x22,24x24,32x32,48x48,64x64,128x128,256x256}/apps,pixmaps}
+    ln -s $out/opt/google/earth/pro/google-earth-pro.desktop $out/share/applications/google-earth-pro.desktop
+    sed -i -e "s|Exec=.*|Exec=$out/bin/googleearth-pro|g" $out/opt/google/earth/pro/google-earth-pro.desktop
+    for size in 16 22 24 32 48 64 128 256; do
+      ln -s $out/opt/google/earth/pro/product_logo_"$size".png $out/share/icons/hicolor/"$size"x"$size"/apps/google-earth-pro.png
+    done
+    ln -s $out/opt/google/earth/pro/product_logo_256.png $out/share/pixmaps/google-earth-pro.png
+  '';
+
+  installCheckPhase = ''
+    $out/bin/gpsbabel -V > /dev/null
+  '';
+
+  # wayland is not supported by Qt included in binary package, so make sure it uses xcb
+  fixupPhase = ''
+    wrapProgram $out/bin/googleearth-pro --set QT_QPA_PLATFORM xcb
+  '';
+
+
+  meta = with lib; {
+    description = "A world sphere viewer";
+    homepage = "https://earth.google.com";
+    license = licenses.unfree;
+    maintainers = with maintainers; [ friedelino ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/misc/simplenote/default.nix b/pkgs/applications/misc/simplenote/default.nix
index 5032836ab9f..675fe9cf1a5 100644
--- a/pkgs/applications/misc/simplenote/default.nix
+++ b/pkgs/applications/misc/simplenote/default.nix
@@ -17,10 +17,10 @@ let
 
   pname = "simplenote";
 
-  version = "2.8.0";
+  version = "2.9.0";
 
   sha256 = {
-    x86_64-linux = "sha256-W8+LzWMPDCrFZCm9p/Gcj7OXqJw/gs7lMxTKjOQChQY=";
+    x86_64-linux = "sha256-uwd9fYqZepJ/BBttprqkJhswqMepGsHDTd5Md9gjI68=";
   }.${system} or throwSystem;
 
   meta = with lib; {
diff --git a/pkgs/applications/networking/browsers/chromium/upstream-info.json b/pkgs/applications/networking/browsers/chromium/upstream-info.json
index f79f0afaf51..61cd10df3d5 100644
--- a/pkgs/applications/networking/browsers/chromium/upstream-info.json
+++ b/pkgs/applications/networking/browsers/chromium/upstream-info.json
@@ -1,8 +1,8 @@
 {
   "stable": {
-    "version": "89.0.4389.114",
-    "sha256": "007df9p78bbmk3iyfi8qn57mmn68qqrdhx6z8n2hl8ksd7lspw7j",
-    "sha256bin64": "06wblyvyr93032fbzwm6qpzz4jjm6adziq4i4n6kmfdix2ajif8a",
+    "version": "89.0.4389.128",
+    "sha256": "0nysvsck91yxcb3wf6v3nzar77k7j9bby7xfzsvd7wlqxdmflx8s",
+    "sha256bin64": "07m43yqq6j7mfhdnm127p29b2611l8lmbq87iszlgg6dgkqxa0qr",
     "deps": {
       "gn": {
         "version": "2021-01-07",
@@ -18,9 +18,9 @@
     }
   },
   "beta": {
-    "version": "90.0.4430.70",
-    "sha256": "0jnyqnqwdccv3i55grd12wr2w5ffxyzmj2l3c1i24xawf2zdzyym",
-    "sha256bin64": "1lv9gz6llphyvlvn92yw1cyhj4i6jzhy1l7hk01418prmhb4nfws",
+    "version": "90.0.4430.72",
+    "sha256": "0hw916j55lm3qnidfp92i8w6zywdd47rhihn9pn23b7ziz58ik55",
+    "sha256bin64": "1ddj2pk4m26dpl1ja0r56fvm67c1z1hq5rq5an8px6ixy78s2760",
     "deps": {
       "gn": {
         "version": "2021-02-09",
diff --git a/pkgs/applications/networking/cluster/terraform-providers/default.nix b/pkgs/applications/networking/cluster/terraform-providers/default.nix
index a08a3d336bf..d88602d75ba 100644
--- a/pkgs/applications/networking/cluster/terraform-providers/default.nix
+++ b/pkgs/applications/networking/cluster/terraform-providers/default.nix
@@ -3,7 +3,6 @@
 , buildGoPackage
 , fetchFromGitHub
 , callPackage
-, runtimeShell
 }:
 let
   list = lib.importJSON ./providers.json;
@@ -58,7 +57,6 @@ let
     cloudfoundry = callPackage ./cloudfoundry {};
     gandi = callPackage ./gandi {};
     hcloud = callPackage ./hcloud {};
-    keycloak = callPackage ./keycloak {};
     libvirt = callPackage ./libvirt {};
     linuxbox = callPackage ./linuxbox {};
     lxd = callPackage ./lxd {};
diff --git a/pkgs/applications/networking/cluster/terraform-providers/keycloak/default.nix b/pkgs/applications/networking/cluster/terraform-providers/keycloak/default.nix
deleted file mode 100644
index 043e081d94e..00000000000
--- a/pkgs/applications/networking/cluster/terraform-providers/keycloak/default.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{ lib
-, fetchFromGitHub
-, buildGoModule
-}:
-
-buildGoModule rec {
-  pname = "terraform-provider-keycloak";
-  version = "1.20.0";
-
-  src = fetchFromGitHub {
-    owner = "mrparkers";
-    repo = "terraform-provider-keycloak";
-    rev = version;
-    sha256 = "1h8780k8345pf0s14k1pmwdjbv2j08h4rq3jwds81mmv6qgj1r2n";
-  };
-
-  vendorSha256 = "12iary7p5qsbl4xdhfd1wh92mvf2fiylnb3m1d3m7cdcn32rfimq";
-
-  doCheck = false;
-
-  postInstall = "mv $out/bin/terraform-provider-keycloak{,_v${version}}";
-
-  meta = with lib; {
-    description = "Terraform provider for keycloak";
-    homepage = "https://github.com/mrparkers/terraform-provider-keycloak";
-    license = licenses.mpl20;
-    maintainers = with maintainers; [ eonpatapon ];
-  };
-
-}
diff --git a/pkgs/applications/networking/cluster/terraform-providers/providers.json b/pkgs/applications/networking/cluster/terraform-providers/providers.json
index 329b1be682c..290460e1e5f 100644
--- a/pkgs/applications/networking/cluster/terraform-providers/providers.json
+++ b/pkgs/applications/networking/cluster/terraform-providers/providers.json
@@ -493,6 +493,14 @@
     "vendorSha256": "08wg16g4mvn6kl8xwn89195a826cb132ijvrgf32c6p7zp4lgmjd",
     "version": "0.2.12"
   },
+  "keycloak": {
+    "owner": "mrparkers",
+    "repo": "terraform-provider-keycloak",
+    "rev": "v3.0.0",
+    "sha256": "1q9vzmj9c7mznv6al58d3rs5kk1fh28k1qccx46hcbk82z52da3a",
+    "vendorSha256": "0kh6lljvqd577s19gx0fmfsmx9wm3ikla3jz16lbwwb8ahbqcw1f",
+    "version": "3.0.0"
+  },
   "ksyun": {
     "owner": "terraform-providers",
     "repo": "terraform-provider-ksyun",
diff --git a/pkgs/applications/office/todofi.sh/default.nix b/pkgs/applications/office/todofi.sh/default.nix
new file mode 100644
index 00000000000..afdbceb3417
--- /dev/null
+++ b/pkgs/applications/office/todofi.sh/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, makeWrapper
+, coreutils
+, gawk
+, gnugrep
+, gnused
+, rofi
+, todo-txt-cli
+}:
+
+stdenv.mkDerivation rec {
+  pname = "todofi.sh";
+  version = "1.0.0";
+
+  src = fetchFromGitHub {
+    owner = "hugokernel";
+    repo = "todofi.sh";
+    rev = "v${version}";
+    sha256 = "1gmy5inlghycsxiwnyyjyv81jn2fmfk3s9x78kcgyf7khzb5kwvj";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    install -Dm 755 todofi.sh -t $out/bin
+  '';
+
+  postFixup = ''
+    patchShebangs $out/bin
+    wrapProgram $out/bin/todofi.sh --prefix PATH : "${lib.makeBinPath [ coreutils gawk gnugrep gnused rofi todo-txt-cli ]}"
+  '';
+
+  meta = with lib; {
+    description = "Todo-txt + Rofi = Todofi.sh";
+    homepage = "https://github.com/hugokernel/todofi.sh";
+    license = licenses.mit;
+    maintainers = with maintainers; [ ewok ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/science/biology/MACS2/default.nix b/pkgs/applications/science/biology/MACS2/default.nix
new file mode 100644
index 00000000000..cc398608ce5
--- /dev/null
+++ b/pkgs/applications/science/biology/MACS2/default.nix
@@ -0,0 +1,25 @@
+{ lib, python3, fetchurl }:
+
+python3.pkgs.buildPythonPackage rec {
+  pname = "MACS2";
+  version = "2.2.7.1";
+
+  src = python3.pkgs.fetchPypi {
+    inherit pname version;
+    sha256 = "1rcxj943kgzs746f5jrb72x1cp4v50rk3qmad0m99a02vndscb5d";
+  };
+
+  propagatedBuildInputs = with python3.pkgs; [ numpy ];
+
+  # To prevent ERROR: diffpeak_cmd (unittest.loader._FailedTest) for obsolete
+  # function (ImportError: Failed to import test module: diffpeak_cmd)
+  doCheck = false;
+  pythonImportsCheck = [ "MACS2" ];
+
+  meta = with lib; {
+    description = "Model-based Analysis for ChIP-Seq";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ gschwartz ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/data/icons/numix-icon-theme-circle/default.nix b/pkgs/data/icons/numix-icon-theme-circle/default.nix
index e46c7a4289b..7fe16f016cc 100644
--- a/pkgs/data/icons/numix-icon-theme-circle/default.nix
+++ b/pkgs/data/icons/numix-icon-theme-circle/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "numix-icon-theme-circle";
-  version = "20.09.19";
+  version = "21.04.14";
 
   src = fetchFromGitHub {
     owner = "numixproject";
     repo = pname;
     rev = version;
-    sha256 = "1rqlq5ssxqj0nc0i8av7zprj94km5645xzqi5j5i0sxd3jbmyfjx";
+    sha256 = "1z8c0179r8g0y9zh4383brsfhkcyfy79dc8hw94p9zjn5a66547w";
   };
 
   nativeBuildInputs = [ gtk3 ];
@@ -37,7 +37,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     description = "Numix icon theme (circle version)";
     homepage = "https://numixproject.github.io";
-    license = licenses.gpl3;
+    license = licenses.gpl3Only;
     # darwin cannot deal with file names differing only in case
     platforms = platforms.linux;
     maintainers = with maintainers; [ romildo ];
diff --git a/pkgs/data/icons/numix-icon-theme-square/default.nix b/pkgs/data/icons/numix-icon-theme-square/default.nix
index bc243b95afc..9c7b1786a6e 100644
--- a/pkgs/data/icons/numix-icon-theme-square/default.nix
+++ b/pkgs/data/icons/numix-icon-theme-square/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "numix-icon-theme-square";
-  version = "20.09.19";
+  version = "21.04.14";
 
   src = fetchFromGitHub {
     owner = "numixproject";
     repo = pname;
     rev = version;
-    sha256 = "0afraarfcd66mpidmn0l90wif8kmwzdj3s09g704kwszyijxs80z";
+    sha256 = "0ndxjp173dwz78m41mn818mh4bdsxa2ypv4wrwicx0v4d8z90ddj";
   };
 
   nativeBuildInputs = [ gtk3 ];
@@ -37,7 +37,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     description = "Numix icon theme (square version)";
     homepage = "https://numixproject.github.io";
-    license = licenses.gpl3;
+    license = licenses.gpl3Only;
     # darwin cannot deal with file names differing only in case
     platforms = platforms.linux;
     maintainers = with maintainers; [ romildo ];
diff --git a/pkgs/data/icons/numix-icon-theme/default.nix b/pkgs/data/icons/numix-icon-theme/default.nix
index d8e583b4bbb..194a36021a9 100644
--- a/pkgs/data/icons/numix-icon-theme/default.nix
+++ b/pkgs/data/icons/numix-icon-theme/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "numix-icon-theme";
-  version = "20.06.07";
+  version = "21.04.14";
 
   src = fetchFromGitHub {
     owner = "numixproject";
     repo = pname;
     rev = version;
-    sha256 = "1yp9parc8ihmai8pswf4qzrqd88qpls87ipq8ylx38yqns7wsn4h";
+    sha256 = "1ilzqh9f7skdfg5sl97zfgwrzvwa1zna22dpq0954gyyzvy7k7lg";
   };
 
   nativeBuildInputs = [ gtk3 ];
@@ -18,18 +18,22 @@ stdenv.mkDerivation rec {
   dontDropIconThemeCache = true;
 
   installPhase = ''
+    runHook preInstall
+
     mkdir -p $out/share/icons
     cp -a Numix{,-Light} $out/share/icons/
 
     for theme in $out/share/icons/*; do
       gtk-update-icon-cache $theme
     done
+
+    runHook postInstall
   '';
 
   meta = with lib; {
     description = "Numix icon theme";
     homepage = "https://numixproject.github.io";
-    license = licenses.gpl3;
+    license = licenses.gpl3Only;
     # darwin cannot deal with file names differing only in case
     platforms = platforms.linux;
     maintainers = with maintainers; [ romildo ];
diff --git a/pkgs/development/compilers/jetbrains-jdk/default.nix b/pkgs/development/compilers/jetbrains-jdk/default.nix
index c94df830095..4012aa260f8 100644
--- a/pkgs/development/compilers/jetbrains-jdk/default.nix
+++ b/pkgs/development/compilers/jetbrains-jdk/default.nix
@@ -2,12 +2,12 @@
 
 openjdk11.overrideAttrs (oldAttrs: rec {
   pname = "jetbrains-jdk";
-  version = "11.0.10-b37";
+  version = "11.0.10-b1427";
   src = fetchFromGitHub {
     owner = "JetBrains";
     repo = "JetBrainsRuntime";
     rev = "jb${lib.replaceStrings ["."] ["_"] version}";
-    sha256 = "0bcvwnwi29z000b1bk5dhfkd33xfp9899zc3idzifdwl7q42zi02";
+    sha256 = "sha256-2cn+FiFfGpp7CBeQMAASVZwTm6DOFaXaWxAL/nVC2Nk=";
   };
   patches = [];
   meta = with lib; {
diff --git a/pkgs/development/compilers/llvm/11/llvm/default.nix b/pkgs/development/compilers/llvm/11/llvm/default.nix
index fc64451e013..ee2fe9c90b2 100644
--- a/pkgs/development/compilers/llvm/11/llvm/default.nix
+++ b/pkgs/development/compilers/llvm/11/llvm/default.nix
@@ -70,7 +70,7 @@ in stdenv.mkDerivation (rec {
       --replace "Path.cpp" ""
     rm unittests/Support/Path.cpp
   '' + optionalString stdenv.hostPlatform.isMusl ''
-    patch -p1 -i ${../TLI-musl.patch}
+    patch -p1 -i ${../../TLI-musl.patch}
     substituteInPlace unittests/Support/CMakeLists.txt \
       --replace "add_subdirectory(DynamicLibrary)" ""
     rm unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp
diff --git a/pkgs/development/libraries/fcft/default.nix b/pkgs/development/libraries/fcft/default.nix
index fd6f26c9789..e9cd3571c76 100644
--- a/pkgs/development/libraries/fcft/default.nix
+++ b/pkgs/development/libraries/fcft/default.nix
@@ -6,12 +6,12 @@
 
 stdenv.mkDerivation rec {
   pname = "fcft";
-  version = "2.3.2";
+  version = "2.3.3";
 
   src = fetchgit {
     url = "https://codeberg.org/dnkl/fcft.git";
     rev = version;
-    sha256 = "0k2i57rakm4g86f7hbhkby8af0vv7v63a70lk3m58mkycpy5q2rm";
+    sha256 = "0314r038jl17hrhc9nrbx30jk0pz8ckbdnizws4r46b1rf4h0b1f";
   };
 
   nativeBuildInputs = [ pkg-config meson ninja scdoc ];
@@ -29,7 +29,10 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://codeberg.org/dnkl/fcft";
     description = "Simple library for font loading and glyph rasterization";
-    maintainers = with maintainers; [ fionera ];
+    maintainers = with maintainers; [
+      fionera
+      sternenseemann
+    ];
     license = licenses.mit;
     platforms = with platforms; linux;
   };
diff --git a/pkgs/development/node-packages/default.nix b/pkgs/development/node-packages/default.nix
index 2023cbfbfa0..b0bd2afd148 100644
--- a/pkgs/development/node-packages/default.nix
+++ b/pkgs/development/node-packages/default.nix
@@ -13,6 +13,19 @@ let
         export NG_CLI_ANALYTICS=false
       '';
     };
+
+    aws-azure-login = super.aws-azure-login.override {
+      meta.platforms = pkgs.lib.platforms.linux;
+      nativeBuildInputs = [ pkgs.makeWrapper ];
+      prePatch = ''
+        export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1
+      '';
+      postInstall = ''
+        wrapProgram $out/bin/aws-azure-login \
+            --set PUPPETEER_EXECUTABLE_PATH ${pkgs.chromium}/bin/chromium
+      '';
+    };
+
     bower2nix = super.bower2nix.override {
       buildInputs = [ pkgs.makeWrapper ];
       postInstall = ''
diff --git a/pkgs/development/node-packages/node-packages.json b/pkgs/development/node-packages/node-packages.json
index 56acc29b944..9ee15fcc4d6 100644
--- a/pkgs/development/node-packages/node-packages.json
+++ b/pkgs/development/node-packages/node-packages.json
@@ -12,6 +12,7 @@
 , "@webassemblyjs/wast-refmt"
 , "alloy"
 , "asar"
+, "aws-azure-login"
 , "balanceofsatoshis"
 , "bash-language-server"
 , "bower"
diff --git a/pkgs/development/node-packages/node-packages.nix b/pkgs/development/node-packages/node-packages.nix
index 044ece3dd5d..7b5c0a15071 100644
--- a/pkgs/development/node-packages/node-packages.nix
+++ b/pkgs/development/node-packages/node-packages.nix
@@ -1525,13 +1525,13 @@ let
         sha512 = "htzFO1Zc57S8kgdRK9mLcPVTW1BY2ijfH7Dk2CeZmspTWKdKqSo1iwmqrq2WtRjFlo8aRZYgLX0wFrDXF/9DLA==";
       };
     };
-    "@cdktf/hcl2json-0.2.1" = {
+    "@cdktf/hcl2json-0.2.2" = {
       name = "_at_cdktf_slash_hcl2json";
       packageName = "@cdktf/hcl2json";
-      version = "0.2.1";
+      version = "0.2.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@cdktf/hcl2json/-/hcl2json-0.2.1.tgz";
-        sha512 = "fn2ZA+Fxdk+QfDleT7GOiZozHdic5kVR0MhFHPzTEipXw7tJlrrbqd1fH+GJFu090uzIagdUM3Y+j4w1GTOz7g==";
+        url = "https://registry.npmjs.org/@cdktf/hcl2json/-/hcl2json-0.2.2.tgz";
+        sha512 = "C/IOl8ARTRiafC9mdZiIuJbqys6LRmaVM/grux7OASkVbkyYy2RHKPVXRBsD5mtfLBXQaL/NGjLLJ4aSC7jFZQ==";
       };
     };
     "@chemzqm/neovim-5.2.13" = {
@@ -3055,13 +3055,13 @@ let
         sha512 = "4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==";
       };
     };
-    "@jsii/spec-1.27.1" = {
+    "@jsii/spec-1.28.0" = {
       name = "_at_jsii_slash_spec";
       packageName = "@jsii/spec";
-      version = "1.27.1";
+      version = "1.28.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@jsii/spec/-/spec-1.27.1.tgz";
-        sha512 = "L5Hqv5g9TSnHsNsOhaIS/gpd1N+1dLao5e6EISF6oyh0JzZFffi2IjQbvE3Xb7GPaCfb5R9+ENO/iX/e5SvK+w==";
+        url = "https://registry.npmjs.org/@jsii/spec/-/spec-1.28.0.tgz";
+        sha512 = "5mcupuCCXyhZwNmX/RDBn3WUYtd0oPXEDa3E+qOSjT30vaO8u9ZQ+mxwl4qsecx3m51LhXKnR1C9U9t4VlAmqA==";
       };
     };
     "@kwsites/file-exists-1.1.1" = {
@@ -3973,13 +3973,13 @@ let
         sha512 = "oN3y7FAROHhrAt7Rr7PnTSwrHrZVRTS2ZbyxeQwSSYD0ifwM3YNgQqbaRmjcWoPyq77MjchusjJDspbzMmip1Q==";
       };
     };
-    "@npmcli/git-2.0.6" = {
+    "@npmcli/git-2.0.7" = {
       name = "_at_npmcli_slash_git";
       packageName = "@npmcli/git";
-      version = "2.0.6";
+      version = "2.0.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@npmcli/git/-/git-2.0.6.tgz";
-        sha512 = "a1MnTfeRPBaKbFY07fd+6HugY1WAkKJzdiJvlRub/9o5xz2F/JtPacZZapx5zRJUQFIzSL677vmTSxEcDMrDbg==";
+        url = "https://registry.npmjs.org/@npmcli/git/-/git-2.0.7.tgz";
+        sha512 = "HUSqNDWYsTpboc7yV1C4yPd/jbaGXfWVmGoTyB+h3QQSKMpYPzTXLrqUMpz+LEA6Dt9usUeRtjytwcrfoBMJpg==";
       };
     };
     "@npmcli/installed-package-contents-1.0.7" = {
@@ -5332,6 +5332,15 @@ let
         sha512 = "T3xfDqrEFKclHGdJx4/5+D5F7e76/99f33guE4RTlVITBhy7VVnjz4t/NDr3UYqcC0MgAmiC4bSVYHnlshuwJw==";
       };
     };
+    "@snyk/cloud-config-parser-1.9.2" = {
+      name = "_at_snyk_slash_cloud-config-parser";
+      packageName = "@snyk/cloud-config-parser";
+      version = "1.9.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@snyk/cloud-config-parser/-/cloud-config-parser-1.9.2.tgz";
+        sha512 = "m8Y2+3l4fxj96QMrTfiCEaXgCpDkCkJIX/5wv0V0RHuxpUiyh+KxC2yJ8Su4wybBj6v6hB9hB7h5/L+Gy4V4PA==";
+      };
+    };
     "@snyk/cocoapods-lockfile-parser-3.6.2" = {
       name = "_at_snyk_slash_cocoapods-lockfile-parser";
       packageName = "@snyk/cocoapods-lockfile-parser";
@@ -10750,13 +10759,13 @@ let
         sha512 = "+KBkqH7t/XE91Fqn8eyJeNIWsnhSWL8bSUqFD7TfE3FN07MTlC0nprGYp+2WfcYNz5i8Bus1vY2DHNVhtTImnw==";
       };
     };
-    "aws-sdk-2.885.0" = {
+    "aws-sdk-2.886.0" = {
       name = "aws-sdk";
       packageName = "aws-sdk";
-      version = "2.885.0";
+      version = "2.886.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.885.0.tgz";
-        sha512 = "V7fS53HkLYap+mt00frWB516HZV34C5pHNhBs/Het3Vgl7A0GbCpJs07G4FOIT9ioJ38+k9McscOzXG++1rWMQ==";
+        url = "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.886.0.tgz";
+        sha512 = "GK2TiijM/sX3PMOvPbZFPBeL7hW5S0RstwgplEABVxCMPXLkk8ws5ENOwS/c74nrTQKSxZMn/3sThNEtb3J7Ew==";
       };
     };
     "aws-sign2-0.6.0" = {
@@ -14242,13 +14251,13 @@ let
         sha512 = "G6SIJSg6mxeEzWEWNY8NAn/jqysTPegV79mOQ6eYj1uyKYggyzP5MzuWt8fKmYShM5BTDadnCRajwDnku9LZeQ==";
       };
     };
-    "cdktf-0.2.1" = {
+    "cdktf-0.2.2" = {
       name = "cdktf";
       packageName = "cdktf";
-      version = "0.2.1";
+      version = "0.2.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/cdktf/-/cdktf-0.2.1.tgz";
-        sha512 = "yz2eoeiSWDjf98ackXw6D0bWvdsmJ7EIxuTHbkn7hzaIJ9sDrXhVLpcTP0rolBVZ/FR8/mtFLoEdHnthIg5IcA==";
+        url = "https://registry.npmjs.org/cdktf/-/cdktf-0.2.2.tgz";
+        sha512 = "SMiDV99ruSGhjBm+dj30XmtV20BKesjY75SGGB3sTcFeaqn5d1Gf8gAaG69QTm3zqI8SbYO12MDslkoX1BY5Zw==";
       };
     };
     "center-align-0.1.3" = {
@@ -15709,13 +15718,13 @@ let
         sha512 = "3WQV/Fpa77nvzjUlc+0u53uIroJyyMB2Qwl++aXpAiDIsrsiAQq4uCURwdRBRX+eLkOTIAmT0L4qna3T7+2pUg==";
       };
     };
-    "codemaker-1.27.1" = {
+    "codemaker-1.28.0" = {
       name = "codemaker";
       packageName = "codemaker";
-      version = "1.27.1";
+      version = "1.28.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/codemaker/-/codemaker-1.27.1.tgz";
-        sha512 = "0Ypru4bovWAqZY+giAMIFQh1aJlTJLU7rbNPzkAW7U9mPoja2IE4KLWNlSEYvP7hpamY51Nrz/VfcazsB6a/rg==";
+        url = "https://registry.npmjs.org/codemaker/-/codemaker-1.28.0.tgz";
+        sha512 = "TlpvV3q/68cZk7aljYW6b/5EvyB4uw523xJISTATrCrQu/UTA79/mxpA2ug8uhPcJoGYcfWXH4BHVVLNIuEtrg==";
       };
     };
     "codepage-1.4.0" = {
@@ -17501,13 +17510,13 @@ let
         sha1 = "06be7abef947a3f14a30fd610671d401bca8b7b6";
       };
     };
-    "create-gatsby-1.2.0" = {
+    "create-gatsby-1.3.0" = {
       name = "create-gatsby";
       packageName = "create-gatsby";
-      version = "1.2.0";
+      version = "1.3.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/create-gatsby/-/create-gatsby-1.2.0.tgz";
-        sha512 = "CXvs1wxGqU1m8PMGmcuJfi9x8koFZZu0JwQr+e7MNnUL33wQEnaLSdwFDBUT4cEqFVWXWAcGErBOZT7/XEgh7Q==";
+        url = "https://registry.npmjs.org/create-gatsby/-/create-gatsby-1.3.0.tgz";
+        sha512 = "c78VG3AIqUg/sJCvxzFL5tGwO8MsDICRvyQ/FXS81Kf/QTr0ON9VvDjodEiM9AmtcyU5vRnM/GspEt1YfHo38A==";
       };
     };
     "create-graphback-1.0.1" = {
@@ -24136,6 +24145,15 @@ let
         sha1 = "25c7c89cb1f9077f8891bbe61d8f390eae256f1e";
       };
     };
+    "fecha-2.3.3" = {
+      name = "fecha";
+      packageName = "fecha";
+      version = "2.3.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz";
+        sha512 = "lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg==";
+      };
+    };
     "fecha-4.2.1" = {
       name = "fecha";
       packageName = "fecha";
@@ -25279,13 +25297,13 @@ let
         sha512 = "ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==";
       };
     };
-    "form-urlencoded-4.5.0" = {
+    "form-urlencoded-4.5.1" = {
       name = "form-urlencoded";
       packageName = "form-urlencoded";
-      version = "4.5.0";
+      version = "4.5.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/form-urlencoded/-/form-urlencoded-4.5.0.tgz";
-        sha512 = "iv4Vc+xD37MULhC7DBgSq/GBp2mZMh7Q19ErhAqCX9trPc7Ix8P7x+KZojTmEpxtajzpCm153sxrXKDbNxkBNQ==";
+        url = "https://registry.npmjs.org/form-urlencoded/-/form-urlencoded-4.5.1.tgz";
+        sha512 = "Rkd/RdMaprsMJEGzEbxolwacp78WupH7u369KEyIY3pEZ1fhL6HtyQ1FX+4HSfA1VVhET18UwCUcr5DVaDIaqg==";
       };
     };
     "format-0.2.2" = {
@@ -25864,31 +25882,31 @@ let
         sha1 = "cbed2d20a40c1f5679a35908e2b9415733e78db9";
       };
     };
-    "gatsby-core-utils-2.2.0" = {
+    "gatsby-core-utils-2.3.0" = {
       name = "gatsby-core-utils";
       packageName = "gatsby-core-utils";
-      version = "2.2.0";
+      version = "2.3.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/gatsby-core-utils/-/gatsby-core-utils-2.2.0.tgz";
-        sha512 = "7T6aVJAj0u/VUg+zKOLuxyZLS/8KDQcDeEFCkKY0d7Pd4wV/QqKRLljr0TRVkivRZHXyWQI9fM3ox5DzfkHdCQ==";
+        url = "https://registry.npmjs.org/gatsby-core-utils/-/gatsby-core-utils-2.3.0.tgz";
+        sha512 = "M7RlR6jL2dtkUu4AoKBoQaPTsbpByzWHc7HBgeYdwzuqbk4VuMe6K76pFDvFSNj0+LvVhWoRGHO7OEtpfb2bEA==";
       };
     };
-    "gatsby-recipes-0.13.0" = {
+    "gatsby-recipes-0.14.0" = {
       name = "gatsby-recipes";
       packageName = "gatsby-recipes";
-      version = "0.13.0";
+      version = "0.14.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/gatsby-recipes/-/gatsby-recipes-0.13.0.tgz";
-        sha512 = "ni3J7wu45XfktDyxjL42zgjRzDqGQZX4/l541P5UbcAjdPAQJBP3qUgyPt2qhtenPYP/iZdbutXKxKjfkckcsQ==";
+        url = "https://registry.npmjs.org/gatsby-recipes/-/gatsby-recipes-0.14.0.tgz";
+        sha512 = "f8vZtHA7mCWqLE/xxEs4gpKxfM53L4dPic6hkALMlNfg8040eu05D6YbNT3i3QLsyqpvX1vKH88SBHk7swwW8w==";
       };
     };
-    "gatsby-telemetry-2.2.0" = {
+    "gatsby-telemetry-2.3.0" = {
       name = "gatsby-telemetry";
       packageName = "gatsby-telemetry";
-      version = "2.2.0";
+      version = "2.3.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/gatsby-telemetry/-/gatsby-telemetry-2.2.0.tgz";
-        sha512 = "Zx/MP+By8QHgm2fikfq6egmcrwREsWAg2wfqTo0CRax5WUQQWl57zX3b0bIJ+k0sFCvU4XuxP0XrytvzxkVViQ==";
+        url = "https://registry.npmjs.org/gatsby-telemetry/-/gatsby-telemetry-2.3.0.tgz";
+        sha512 = "dr7pILAnEtoG9ZUyPRljSwB/fGBDM4OCoM0mGw3DYr6HFlvrsbIl7AVL4LVJIr4TrtVUrhTjC/crSw+bTzO42A==";
       };
     };
     "gauge-1.2.7" = {
@@ -32157,13 +32175,13 @@ let
         sha512 = "pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==";
       };
     };
-    "js-beautify-1.13.5" = {
+    "js-beautify-1.13.8" = {
       name = "js-beautify";
       packageName = "js-beautify";
-      version = "1.13.5";
+      version = "1.13.8";
       src = fetchurl {
-        url = "https://registry.npmjs.org/js-beautify/-/js-beautify-1.13.5.tgz";
-        sha512 = "MsXlH6Z/BiRYSkSRW3clNDqDjSpiSNOiG8xYVUBXt4k0LnGvDhlTGOlHX1VFtAdoLmtwjxMG5qiWKy/g+Ipv5w==";
+        url = "https://registry.npmjs.org/js-beautify/-/js-beautify-1.13.8.tgz";
+        sha512 = "nTlinr+SgOkFXT984l+Lyj/vrqU5D8W6Szdipq4+H1dWvNOp35CUnrBRCLNZpxseIyJnB1VTgI+on4j9tmU5OQ==";
       };
     };
     "js-git-0.7.8" = {
@@ -32427,40 +32445,40 @@ let
         sha512 = "xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==";
       };
     };
-    "jsii-1.27.1" = {
+    "jsii-1.28.0" = {
       name = "jsii";
       packageName = "jsii";
-      version = "1.27.1";
+      version = "1.28.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/jsii/-/jsii-1.27.1.tgz";
-        sha512 = "2VIZwLytVRsOnqhdZNqZPPKrAPYIAmqxest7YcrwgFbTK+Zyxsa2FQyWyD2nNVzdxWqVUqALvuV3RMKMEHWv7g==";
+        url = "https://registry.npmjs.org/jsii/-/jsii-1.28.0.tgz";
+        sha512 = "B6CbHi60fabeQZJYNea8wSUsrILJzN7ng+yx69GmMJ4C6NtCVt7Oc/CITfhY/cYTwdhN3FAJf01e5/v8qj6bUA==";
       };
     };
-    "jsii-pacmak-1.27.1" = {
+    "jsii-pacmak-1.28.0" = {
       name = "jsii-pacmak";
       packageName = "jsii-pacmak";
-      version = "1.27.1";
+      version = "1.28.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/jsii-pacmak/-/jsii-pacmak-1.27.1.tgz";
-        sha512 = "OA9lPxOFHyGmLsGWe8VjbTnIsAjZo8vHHB7RVHZeZ5pwKZJxV3ND2SBgb8cvzbu9rwLi/eFD0aAadq9fRFrDLA==";
+        url = "https://registry.npmjs.org/jsii-pacmak/-/jsii-pacmak-1.28.0.tgz";
+        sha512 = "QAW8rq7M9rA/QSXwaJKMVpttkNW/BJgE9GT6i9UahobQMkmp+zsXCJUENeRg2mndLqX0DDyxO1in/fuIeCeR3A==";
       };
     };
-    "jsii-reflect-1.27.1" = {
+    "jsii-reflect-1.28.0" = {
       name = "jsii-reflect";
       packageName = "jsii-reflect";
-      version = "1.27.1";
+      version = "1.28.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/jsii-reflect/-/jsii-reflect-1.27.1.tgz";
-        sha512 = "I2jc7Gv26N9MUyVhewjLS9vZJL4aPOcKCjgsmpDCX4Pz7ny9Op7iHNST9LpicY0Vqv81gi8OnsM0mWBPUM2nOA==";
+        url = "https://registry.npmjs.org/jsii-reflect/-/jsii-reflect-1.28.0.tgz";
+        sha512 = "jFu9dUy5D0PrxVnaDilb50agbSr0wZRya6StwHyw8Wly3ruzS8uuSB1aWmEwN371m5ewDD4m9nPEQ9zMmKFvMQ==";
       };
     };
-    "jsii-rosetta-1.27.1" = {
+    "jsii-rosetta-1.28.0" = {
       name = "jsii-rosetta";
       packageName = "jsii-rosetta";
-      version = "1.27.1";
+      version = "1.28.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/jsii-rosetta/-/jsii-rosetta-1.27.1.tgz";
-        sha512 = "GLoKI5iRvqhcDYxtgXReVEbBChyGbUvTy8n344UkVNvIPHnq0bhLPGArttnrbbHmIZcxrAoYd+6o5sqZ2fUZNQ==";
+        url = "https://registry.npmjs.org/jsii-rosetta/-/jsii-rosetta-1.28.0.tgz";
+        sha512 = "lttDhXiBuWaN0DwsWakD5o7GxyVP8yMCRvpmpXOqz1eK+MMlZp654R6o39M7RksXhhxipCNwfbIY3T7Y7N85qQ==";
       };
     };
     "jsii-srcmak-0.1.255" = {
@@ -35947,6 +35965,15 @@ let
         sha512 = "Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==";
       };
     };
+    "logform-1.10.0" = {
+      name = "logform";
+      packageName = "logform";
+      version = "1.10.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/logform/-/logform-1.10.0.tgz";
+        sha512 = "em5ojIhU18fIMOw/333mD+ZLE2fis0EzXl1ZwHx4iQzmpQi6odNiY/t+ITNr33JZhT9/KEaH+UPIipr6a9EjWg==";
+      };
+    };
     "logform-2.2.0" = {
       name = "logform";
       packageName = "logform";
@@ -41818,13 +41845,13 @@ let
         sha512 = "kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==";
       };
     };
-    "oo-ascii-tree-1.27.1" = {
+    "oo-ascii-tree-1.28.0" = {
       name = "oo-ascii-tree";
       packageName = "oo-ascii-tree";
-      version = "1.27.1";
+      version = "1.28.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/oo-ascii-tree/-/oo-ascii-tree-1.27.1.tgz";
-        sha512 = "bCX2YoRGOhWh/CUi2e38gw5D+ixcpuMjMEJ1VJ9oAE40burZO8CVLq2noqvU3/EmaO2R9ifaM+0xnxJzBkII/A==";
+        url = "https://registry.npmjs.org/oo-ascii-tree/-/oo-ascii-tree-1.28.0.tgz";
+        sha512 = "lCeBgtQutG2+K7BOJDurYNfCepvckj7jWtq2VVP1kseLry/VbLzE/oLiXEeK6iWUXJbBE2IzmxwGuUwee293yw==";
       };
     };
     "opal-runtime-1.0.11" = {
@@ -44122,13 +44149,13 @@ let
         sha512 = "wmUyoQM/Xzmo62wgOdQAn5tl7u+IA1ZYK7qbuppi+3E+Gj4hlUxVHjInulieWrd0SfHi/ADriTb5ILJ/lsJrSg==";
       };
     };
-    "pg-connection-string-2.4.0" = {
+    "pg-connection-string-2.5.0" = {
       name = "pg-connection-string";
       packageName = "pg-connection-string";
-      version = "2.4.0";
+      version = "2.5.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.4.0.tgz";
-        sha512 = "3iBXuv7XKvxeMrIgym7njT+HlZkwZqqGX4Bu9cci8xHZNT+Um1gWKqCsAzcC0d95rcKMU5WBg6YRUcHyV0HZKQ==";
+        url = "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz";
+        sha512 = "r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==";
       };
     };
     "pg-int8-1.0.1" = {
@@ -44140,22 +44167,22 @@ let
         sha512 = "WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==";
       };
     };
-    "pg-pool-3.2.2" = {
+    "pg-pool-3.3.0" = {
       name = "pg-pool";
       packageName = "pg-pool";
-      version = "3.2.2";
+      version = "3.3.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/pg-pool/-/pg-pool-3.2.2.tgz";
-        sha512 = "ORJoFxAlmmros8igi608iVEbQNNZlp89diFVx6yV5v+ehmpMY9sK6QgpmgoXbmkNaBAx8cOOZh9g80kJv1ooyA==";
+        url = "https://registry.npmjs.org/pg-pool/-/pg-pool-3.3.0.tgz";
+        sha512 = "0O5huCql8/D6PIRFAlmccjphLYWC+JIzvUhSzXSpGaf+tjTZc4nn+Lr7mLXBbFJfvwbP0ywDv73EiaBsxn7zdg==";
       };
     };
-    "pg-protocol-1.4.0" = {
+    "pg-protocol-1.5.0" = {
       name = "pg-protocol";
       packageName = "pg-protocol";
-      version = "1.4.0";
+      version = "1.5.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.4.0.tgz";
-        sha512 = "El+aXWcwG/8wuFICMQjM5ZSAm6OWiJicFdNYo+VY3QP+8vI4SvLIWVe51PppTzMhikUJR+PsyIFKqfdXPz/yxA==";
+        url = "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.5.0.tgz";
+        sha512 = "muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ==";
       };
     };
     "pg-types-2.2.0" = {
@@ -48596,13 +48623,13 @@ let
         sha1 = "8984b5815d99cb220469c99eeeffe38913e6cc0b";
       };
     };
-    "redis-3.1.0" = {
+    "redis-3.1.1" = {
       name = "redis";
       packageName = "redis";
-      version = "3.1.0";
+      version = "3.1.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/redis/-/redis-3.1.0.tgz";
-        sha512 = "//lAOcEtNIKk2ekZibes5oyWKYUVWMvMB71lyD/hS9KRePNkB7AU3nXGkArX6uDKEb2N23EyJBthAv6pagD0uw==";
+        url = "https://registry.npmjs.org/redis/-/redis-3.1.1.tgz";
+        sha512 = "QhkKhOuzhogR1NDJfBD34TQJz2ZJwDhhIC6ZmvpftlmfYShHHQXjjNspAJ+Z2HH5NwSBVYBVganbiZ8bgFMHjg==";
       };
     };
     "redis-commands-1.7.0" = {
@@ -61873,6 +61900,15 @@ let
         sha512 = "TWoamHt5yYvsMarGlGEQE59SbJHqGsZV8/lwC+iCcGeAe0vUaOh+Lv6SYM17ouzC/a/LB1/hz/7sxFBtlu1l4A==";
       };
     };
+    "winston-3.1.0" = {
+      name = "winston";
+      packageName = "winston";
+      version = "3.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/winston/-/winston-3.1.0.tgz";
+        sha512 = "FsQfEE+8YIEeuZEYhHDk5cILo1HOcWkGwvoidLrDgPog0r4bser1lEIOco2dN9zpDJ1M88hfDgZvxe5z4xNcwg==";
+      };
+    };
     "winston-3.2.1" = {
       name = "winston";
       packageName = "winston";
@@ -62990,6 +63026,15 @@ let
         sha1 = "87cfa5a9613f48e26005420d6a8ee0da6fe8daec";
       };
     };
+    "yaml-js-0.3.0" = {
+      name = "yaml-js";
+      packageName = "yaml-js";
+      version = "0.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yaml-js/-/yaml-js-0.3.0.tgz";
+        sha512 = "JbTUdsPiCkOyz+JOSqAVc19omTnUBnBQglhuclYov5HpWbEOz8y+ftqWjiMa9Pe/eF/dmCUeNgVs/VWg53GlgQ==";
+      };
+    };
     "yaml-language-server-0.13.1-d0f9b44.0" = {
       name = "yaml-language-server";
       packageName = "yaml-language-server";
@@ -63555,9 +63600,13 @@ in
       sources."@angular-devkit/core-11.2.8"
       sources."@angular-devkit/schematics-11.2.8"
       sources."@npmcli/ci-detect-1.3.0"
-      (sources."@npmcli/git-2.0.6" // {
+      (sources."@npmcli/git-2.0.7" // {
         dependencies = [
+          sources."hosted-git-info-4.0.2"
+          sources."npm-package-arg-8.1.2"
+          sources."npm-pick-manifest-6.1.1"
           sources."promise-retry-2.0.1"
+          sources."semver-7.3.5"
         ];
       })
       sources."@npmcli/installed-package-contents-1.0.7"
@@ -66277,6 +66326,213 @@ in
     bypassCache = true;
     reconstructLock = true;
   };
+  aws-azure-login = nodeEnv.buildNodePackage {
+    name = "aws-azure-login";
+    packageName = "aws-azure-login";
+    version = "3.3.0";
+    src = fetchurl {
+      url = "https://registry.npmjs.org/aws-azure-login/-/aws-azure-login-3.3.0.tgz";
+      sha512 = "gwcHKwovQOpVY4F87M46ppqop2/KXgvJGFqZDZvtGALvFihP1olhna5lnJk/Gbl5topHZj8oXefNoWhj/L19aA==";
+    };
+    dependencies = [
+      sources."@tootallnate/once-1.1.2"
+      sources."@types/node-14.14.37"
+      sources."@types/yauzl-2.9.1"
+      sources."agent-base-6.0.2"
+      sources."ansi-escapes-4.3.2"
+      sources."ansi-regex-5.0.0"
+      sources."ansi-styles-4.3.0"
+      (sources."ast-types-0.13.4" // {
+        dependencies = [
+          sources."tslib-2.2.0"
+        ];
+      })
+      (sources."aws-sdk-2.886.0" // {
+        dependencies = [
+          sources."uuid-3.3.2"
+        ];
+      })
+      sources."balanced-match-1.0.2"
+      sources."base64-js-1.5.1"
+      (sources."bl-4.1.0" // {
+        dependencies = [
+          sources."buffer-5.7.1"
+          sources."readable-stream-3.6.0"
+          sources."string_decoder-1.3.0"
+        ];
+      })
+      sources."bluebird-3.7.2"
+      sources."boolbase-1.0.0"
+      sources."brace-expansion-1.1.11"
+      sources."buffer-4.9.2"
+      sources."buffer-crc32-0.2.13"
+      sources."bytes-3.1.0"
+      sources."chalk-4.1.0"
+      sources."chardet-0.7.0"
+      sources."cheerio-1.0.0-rc.5"
+      sources."cheerio-select-tmp-0.1.1"
+      sources."chownr-1.1.4"
+      sources."cli-cursor-3.1.0"
+      sources."cli-width-3.0.0"
+      sources."color-convert-2.0.1"
+      sources."color-name-1.1.4"
+      sources."commander-6.2.1"
+      sources."concat-map-0.0.1"
+      sources."core-util-is-1.0.2"
+      sources."css-select-3.1.2"
+      sources."css-what-4.0.0"
+      sources."data-uri-to-buffer-3.0.1"
+      sources."debug-4.3.2"
+      sources."deep-is-0.1.3"
+      sources."degenerator-2.2.0"
+      sources."depd-1.1.2"
+      sources."devtools-protocol-0.0.854822"
+      sources."dom-serializer-1.2.0"
+      sources."domelementtype-2.2.0"
+      sources."domhandler-4.1.0"
+      sources."domutils-2.5.2"
+      sources."emoji-regex-8.0.0"
+      sources."end-of-stream-1.4.4"
+      sources."entities-2.1.0"
+      sources."escape-string-regexp-1.0.5"
+      sources."escodegen-1.14.3"
+      sources."esprima-4.0.1"
+      sources."estraverse-4.3.0"
+      sources."esutils-2.0.3"
+      sources."events-1.1.1"
+      sources."external-editor-3.1.0"
+      sources."extract-zip-2.0.1"
+      sources."fast-levenshtein-2.0.6"
+      sources."fd-slicer-1.1.0"
+      sources."figures-3.2.0"
+      sources."file-uri-to-path-2.0.0"
+      sources."find-up-4.1.0"
+      sources."fs-constants-1.0.0"
+      sources."fs-extra-8.1.0"
+      sources."fs.realpath-1.0.0"
+      sources."ftp-0.3.10"
+      sources."get-stream-5.2.0"
+      sources."get-uri-3.0.2"
+      sources."glob-7.1.6"
+      sources."graceful-fs-4.2.6"
+      sources."has-flag-4.0.0"
+      sources."htmlparser2-6.1.0"
+      sources."http-errors-1.7.3"
+      sources."http-proxy-agent-4.0.1"
+      sources."https-proxy-agent-5.0.0"
+      sources."iconv-lite-0.4.24"
+      sources."ieee754-1.1.13"
+      sources."inflight-1.0.6"
+      sources."inherits-2.0.4"
+      sources."ini-2.0.0"
+      sources."inquirer-7.3.3"
+      sources."ip-1.1.5"
+      sources."is-fullwidth-code-point-3.0.0"
+      sources."isarray-1.0.0"
+      sources."jmespath-0.15.0"
+      sources."jsonfile-4.0.0"
+      sources."levn-0.3.0"
+      sources."locate-path-5.0.0"
+      sources."lodash-4.17.21"
+      sources."lru-cache-5.1.1"
+      sources."mimic-fn-2.1.0"
+      sources."minimatch-3.0.4"
+      sources."mkdirp-1.0.4"
+      sources."mkdirp-classic-0.5.3"
+      sources."ms-2.1.2"
+      sources."mute-stream-0.0.8"
+      sources."netmask-2.0.2"
+      sources."node-fetch-2.6.1"
+      sources."nth-check-2.0.0"
+      sources."once-1.4.0"
+      sources."onetime-5.1.2"
+      sources."optionator-0.8.3"
+      sources."os-tmpdir-1.0.2"
+      sources."p-limit-2.3.0"
+      sources."p-locate-4.1.0"
+      sources."p-try-2.2.0"
+      sources."pac-proxy-agent-4.1.0"
+      sources."pac-resolver-4.2.0"
+      sources."parse5-6.0.1"
+      sources."parse5-htmlparser2-tree-adapter-6.0.1"
+      sources."path-exists-4.0.0"
+      sources."path-is-absolute-1.0.1"
+      sources."pend-1.2.0"
+      sources."pkg-dir-4.2.0"
+      sources."prelude-ls-1.1.2"
+      sources."progress-2.0.3"
+      sources."proxy-agent-4.0.1"
+      sources."proxy-from-env-1.1.0"
+      sources."pump-3.0.0"
+      sources."punycode-1.3.2"
+      sources."puppeteer-8.0.0"
+      sources."querystring-0.2.0"
+      sources."raw-body-2.4.1"
+      (sources."readable-stream-1.1.14" // {
+        dependencies = [
+          sources."isarray-0.0.1"
+        ];
+      })
+      sources."restore-cursor-3.1.0"
+      sources."rimraf-3.0.2"
+      sources."run-async-2.4.1"
+      sources."rxjs-6.6.7"
+      sources."safe-buffer-5.2.1"
+      sources."safer-buffer-2.1.2"
+      sources."sax-1.2.1"
+      sources."setprototypeof-1.1.1"
+      sources."signal-exit-3.0.3"
+      sources."smart-buffer-4.1.0"
+      sources."socks-2.6.0"
+      sources."socks-proxy-agent-5.0.0"
+      sources."source-map-0.6.1"
+      sources."statuses-1.5.0"
+      sources."string-width-4.2.2"
+      sources."string_decoder-0.10.31"
+      sources."strip-ansi-6.0.0"
+      sources."supports-color-7.2.0"
+      sources."tar-fs-2.1.1"
+      (sources."tar-stream-2.2.0" // {
+        dependencies = [
+          sources."readable-stream-3.6.0"
+          sources."string_decoder-1.3.0"
+        ];
+      })
+      sources."through-2.3.8"
+      sources."tmp-0.0.33"
+      sources."toidentifier-1.0.0"
+      sources."tslib-1.14.1"
+      sources."type-check-0.3.2"
+      sources."type-fest-0.21.3"
+      (sources."unbzip2-stream-1.4.3" // {
+        dependencies = [
+          sources."buffer-5.7.1"
+        ];
+      })
+      sources."universalify-0.1.2"
+      sources."unpipe-1.0.0"
+      sources."url-0.10.3"
+      sources."util-deprecate-1.0.2"
+      sources."uuid-8.3.2"
+      sources."word-wrap-1.2.3"
+      sources."wrappy-1.0.2"
+      sources."ws-7.4.4"
+      sources."xml2js-0.4.19"
+      sources."xmlbuilder-9.0.7"
+      sources."xregexp-2.0.0"
+      sources."yallist-3.1.1"
+      sources."yauzl-2.10.0"
+    ];
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "Use Azure AD SSO to log into the AWS CLI.";
+      homepage = "https://github.com/sportradar/aws-azure-login#readme";
+      license = "MIT";
+    };
+    production = true;
+    bypassCache = true;
+    reconstructLock = true;
+  };
   balanceofsatoshis = nodeEnv.buildNodePackage {
     name = "balanceofsatoshis";
     packageName = "balanceofsatoshis";
@@ -67826,7 +68082,7 @@ in
       })
       sources."readable-stream-3.6.0"
       sources."redent-3.0.0"
-      sources."redis-3.1.0"
+      sources."redis-3.1.1"
       sources."redis-commands-1.7.0"
       sources."redis-errors-1.2.0"
       sources."redis-parser-3.0.0"
@@ -68367,7 +68623,7 @@ in
       sha512 = "Oo/tO5aqmjsBORN93dSnidF7+2u77Q9zwUn9VbCQkZqCNfeZZcwIV9AG108hMYwtcXqtKQC7wevX6rmi9l8lng==";
     };
     dependencies = [
-      sources."@jsii/spec-1.27.1"
+      sources."@jsii/spec-1.28.0"
       sources."@types/node-10.17.56"
       sources."ansi-regex-5.0.0"
       sources."ansi-styles-4.3.0"
@@ -68380,7 +68636,7 @@ in
       sources."cdk8s-1.0.0-beta.11"
       sources."cliui-7.0.4"
       sources."clone-2.1.2"
-      (sources."codemaker-1.27.1" // {
+      (sources."codemaker-1.28.0" // {
         dependencies = [
           sources."fs-extra-9.1.0"
         ];
@@ -68438,25 +68694,25 @@ in
       sources."is-weakmap-2.0.1"
       sources."is-weakset-2.0.1"
       sources."isarray-2.0.5"
-      (sources."jsii-1.27.1" // {
+      (sources."jsii-1.28.0" // {
         dependencies = [
           sources."fs-extra-9.1.0"
           sources."yargs-16.2.0"
         ];
       })
-      (sources."jsii-pacmak-1.27.1" // {
+      (sources."jsii-pacmak-1.28.0" // {
         dependencies = [
           sources."fs-extra-9.1.0"
           sources."yargs-16.2.0"
         ];
       })
-      (sources."jsii-reflect-1.27.1" // {
+      (sources."jsii-reflect-1.28.0" // {
         dependencies = [
           sources."fs-extra-9.1.0"
           sources."yargs-16.2.0"
         ];
       })
-      (sources."jsii-rosetta-1.27.1" // {
+      (sources."jsii-rosetta-1.28.0" // {
         dependencies = [
           sources."fs-extra-9.1.0"
           sources."yargs-16.2.0"
@@ -68484,7 +68740,7 @@ in
       sources."object-is-1.1.5"
       sources."object-keys-1.1.1"
       sources."object.assign-4.1.2"
-      sources."oo-ascii-tree-1.27.1"
+      sources."oo-ascii-tree-1.28.0"
       sources."p-limit-2.3.0"
       sources."p-locate-4.1.0"
       sources."p-try-2.2.0"
@@ -68554,14 +68810,14 @@ in
   cdktf-cli = nodeEnv.buildNodePackage {
     name = "cdktf-cli";
     packageName = "cdktf-cli";
-    version = "0.2.1";
+    version = "0.2.2";
     src = fetchurl {
-      url = "https://registry.npmjs.org/cdktf-cli/-/cdktf-cli-0.2.1.tgz";
-      sha512 = "DcAkiIy8oA3GIUG8/zqO7oBYyER7WxC4ylVNkQFqq/k7m+x+YCk18JvHkZHX4uK2xxQyttQ0lxHMNyZyA5y1oA==";
+      url = "https://registry.npmjs.org/cdktf-cli/-/cdktf-cli-0.2.2.tgz";
+      sha512 = "tkUGs4+739C+3lklwQQM/wLgp41maVlJUK/2cCzuNxVBgobLXBxn55lHxbmEuh2Ddc8PtNV31uzHzn1f2ZzdfQ==";
     };
     dependencies = [
-      sources."@cdktf/hcl2json-0.2.1"
-      sources."@jsii/spec-1.27.1"
+      sources."@cdktf/hcl2json-0.2.2"
+      sources."@jsii/spec-1.28.0"
       sources."@skorfmann/ink-confirm-input-3.0.0"
       sources."@skorfmann/terraform-cloud-1.9.1"
       sources."@types/node-14.14.37"
@@ -68598,7 +68854,7 @@ in
       sources."camelcase-5.3.1"
       sources."camelcase-keys-6.2.2"
       sources."case-1.6.3"
-      sources."cdktf-0.2.1"
+      sources."cdktf-0.2.2"
       sources."chalk-4.1.0"
       sources."ci-info-2.0.0"
       sources."cli-boxes-2.2.1"
@@ -68700,7 +68956,7 @@ in
       sources."is-wsl-2.2.0"
       sources."isarray-1.0.0"
       sources."js-tokens-4.0.0"
-      (sources."jsii-1.27.1" // {
+      (sources."jsii-1.28.0" // {
         dependencies = [
           sources."fs-extra-9.1.0"
           sources."jsonfile-6.1.0"
@@ -68708,10 +68964,10 @@ in
           sources."yargs-16.2.0"
         ];
       })
-      (sources."jsii-pacmak-1.27.1" // {
+      (sources."jsii-pacmak-1.28.0" // {
         dependencies = [
           sources."camelcase-6.2.0"
-          sources."codemaker-1.27.1"
+          sources."codemaker-1.28.0"
           sources."decamelize-5.0.0"
           sources."escape-string-regexp-4.0.0"
           sources."fs-extra-9.1.0"
@@ -68720,7 +68976,7 @@ in
           sources."yargs-16.2.0"
         ];
       })
-      (sources."jsii-reflect-1.27.1" // {
+      (sources."jsii-reflect-1.28.0" // {
         dependencies = [
           sources."fs-extra-9.1.0"
           sources."jsonfile-6.1.0"
@@ -68728,7 +68984,7 @@ in
           sources."yargs-16.2.0"
         ];
       })
-      (sources."jsii-rosetta-1.27.1" // {
+      (sources."jsii-rosetta-1.28.0" // {
         dependencies = [
           sources."fs-extra-9.1.0"
           sources."jsonfile-6.1.0"
@@ -68778,7 +69034,7 @@ in
       sources."object.assign-4.1.2"
       sources."once-1.4.0"
       sources."onetime-5.1.2"
-      sources."oo-ascii-tree-1.27.1"
+      sources."oo-ascii-tree-1.28.0"
       sources."open-7.4.2"
       sources."p-limit-2.3.0"
       sources."p-locate-4.1.0"
@@ -71700,7 +71956,7 @@ in
       sources."@nodelib/fs.stat-2.0.4"
       sources."@nodelib/fs.walk-1.2.6"
       sources."@npmcli/ci-detect-1.3.0"
-      sources."@npmcli/git-2.0.6"
+      sources."@npmcli/git-2.0.7"
       sources."@npmcli/installed-package-contents-1.0.7"
       sources."@npmcli/move-file-1.1.2"
       sources."@npmcli/node-gyp-1.0.2"
@@ -76090,10 +76346,10 @@ in
           sources."semver-4.3.2"
         ];
       })
-      sources."pg-connection-string-2.4.0"
+      sources."pg-connection-string-2.5.0"
       sources."pg-int8-1.0.1"
-      sources."pg-pool-3.2.2"
-      sources."pg-protocol-1.4.0"
+      sources."pg-pool-3.3.0"
+      sources."pg-protocol-1.5.0"
       sources."pg-types-2.2.0"
       sources."pgpass-1.0.4"
       sources."picomatch-2.2.3"
@@ -77250,9 +77506,10 @@ in
       sources."@nodelib/fs.stat-2.0.4"
       sources."@nodelib/fs.walk-1.2.6"
       sources."@npmcli/ci-detect-1.3.0"
-      (sources."@npmcli/git-2.0.6" // {
+      (sources."@npmcli/git-2.0.7" // {
         dependencies = [
           sources."mkdirp-1.0.4"
+          sources."semver-7.3.5"
           sources."which-2.0.2"
         ];
       })
@@ -81991,10 +82248,10 @@ in
   gatsby-cli = nodeEnv.buildNodePackage {
     name = "gatsby-cli";
     packageName = "gatsby-cli";
-    version = "3.2.0";
+    version = "3.3.0";
     src = fetchurl {
-      url = "https://registry.npmjs.org/gatsby-cli/-/gatsby-cli-3.2.0.tgz";
-      sha512 = "MOj7LgwNX/O30LNdZ1WDUQ4Wiyn3uXFGND7QQepfWpaHvrgtposhy/vseAAR54N5pyehcdLhQkNQkbd4Zw9olA==";
+      url = "https://registry.npmjs.org/gatsby-cli/-/gatsby-cli-3.3.0.tgz";
+      sha512 = "zqVRm6QzMNGFPv3iSjSiysNuSBYJmvPoWWR/BdXyFU8mWP3Fou3d7HdxxIQak25GVRYlMGU5ryuM9mfN/k/Jdg==";
     };
     dependencies = [
       (sources."@ardatan/aggregate-error-0.0.6" // {
@@ -82221,7 +82478,7 @@ in
       sources."cookie-0.4.0"
       sources."cookie-signature-1.0.6"
       sources."cors-2.8.5"
-      sources."create-gatsby-1.2.0"
+      sources."create-gatsby-1.3.0"
       (sources."cross-spawn-6.0.5" // {
         dependencies = [
           sources."semver-5.7.1"
@@ -82332,8 +82589,8 @@ in
       sources."fs.realpath-1.0.0"
       sources."fsevents-2.3.2"
       sources."function-bind-1.1.1"
-      sources."gatsby-core-utils-2.2.0"
-      (sources."gatsby-recipes-0.13.0" // {
+      sources."gatsby-core-utils-2.3.0"
+      (sources."gatsby-recipes-0.14.0" // {
         dependencies = [
           sources."cross-spawn-7.0.3"
           sources."execa-4.1.0"
@@ -82347,7 +82604,7 @@ in
           sources."which-2.0.2"
         ];
       })
-      sources."gatsby-telemetry-2.2.0"
+      sources."gatsby-telemetry-2.3.0"
       sources."gensync-1.0.0-beta.2"
       sources."get-caller-file-2.0.5"
       sources."get-intrinsic-1.1.1"
@@ -83574,7 +83831,7 @@ in
       sources."foreach-2.0.5"
       sources."forever-agent-0.6.1"
       sources."form-data-2.3.3"
-      sources."form-urlencoded-4.5.0"
+      sources."form-urlencoded-4.5.1"
       sources."fs-capacitor-6.2.0"
       sources."fs-extra-9.0.1"
       sources."fs-minipass-2.1.0"
@@ -86645,7 +86902,7 @@ in
       sources."async-mutex-0.1.4"
       sources."asynckit-0.4.0"
       sources."atob-2.1.2"
-      (sources."aws-sdk-2.885.0" // {
+      (sources."aws-sdk-2.886.0" // {
         dependencies = [
           sources."sax-1.2.1"
           sources."uuid-3.3.2"
@@ -87319,10 +87576,10 @@ in
   js-beautify = nodeEnv.buildNodePackage {
     name = "js-beautify";
     packageName = "js-beautify";
-    version = "1.13.5";
+    version = "1.13.6";
     src = fetchurl {
-      url = "https://registry.npmjs.org/js-beautify/-/js-beautify-1.13.5.tgz";
-      sha512 = "MsXlH6Z/BiRYSkSRW3clNDqDjSpiSNOiG8xYVUBXt4k0LnGvDhlTGOlHX1VFtAdoLmtwjxMG5qiWKy/g+Ipv5w==";
+      url = "https://registry.npmjs.org/js-beautify/-/js-beautify-1.13.6.tgz";
+      sha512 = "xS23BW6AVCIpxtUPJRXjTG/KhFGJyDR1TAT2l/sC+m7oFiLMLkU/QShmd3Z0p4WcZXj+MnjhBkA9ljtq8/OkhQ==";
     };
     dependencies = [
       sources."abbrev-1.1.1"
@@ -88963,7 +89220,7 @@ in
       sources."@nodelib/fs.stat-2.0.4"
       sources."@nodelib/fs.walk-1.2.6"
       sources."@npmcli/ci-detect-1.3.0"
-      sources."@npmcli/git-2.0.6"
+      sources."@npmcli/git-2.0.7"
       sources."@npmcli/installed-package-contents-1.0.7"
       sources."@npmcli/move-file-1.1.2"
       sources."@npmcli/node-gyp-1.0.2"
@@ -92765,10 +93022,10 @@ in
   neovim = nodeEnv.buildNodePackage {
     name = "neovim";
     packageName = "neovim";
-    version = "4.9.0";
+    version = "4.10.0";
     src = fetchurl {
-      url = "https://registry.npmjs.org/neovim/-/neovim-4.9.0.tgz";
-      sha512 = "48hDy0Dheo5qFF+cwhj7qaWoXfbiKOQ0CLNE0/aiA41rhn/Z1m0OKQqlp9SqbSMr/PnY5QdiLdbs0xh2UudEfA==";
+      url = "https://registry.npmjs.org/neovim/-/neovim-4.10.0.tgz";
+      sha512 = "MMtsyjCPYXy45I8TZTz0iYJUIJhaDSO0zfHOJeidGuLUCeY6WLQiwZteJ9tmCveNWMjT1r2QO9nq135mUDgbtw==";
     };
     dependencies = [
       sources."@msgpack/msgpack-1.12.2"
@@ -92785,7 +93042,7 @@ in
       sources."enabled-1.0.2"
       sources."env-variable-0.0.6"
       sources."fast-safe-stringify-2.0.7"
-      sources."fecha-4.2.1"
+      sources."fecha-2.3.3"
       sources."inherits-2.0.4"
       sources."is-arrayish-0.3.2"
       sources."is-stream-1.1.0"
@@ -92794,28 +93051,22 @@ in
       sources."lodash-4.17.21"
       sources."lodash.defaults-4.2.0"
       sources."lodash.omit-4.5.0"
-      sources."logform-2.2.0"
+      sources."logform-1.10.0"
       sources."lru-cache-6.0.0"
       sources."ms-2.1.3"
       sources."one-time-0.0.4"
       sources."process-nextick-args-2.0.1"
-      sources."readable-stream-3.6.0"
-      sources."safe-buffer-5.2.1"
+      sources."readable-stream-2.3.7"
+      sources."safe-buffer-5.1.2"
       sources."semver-7.3.5"
       sources."simple-swizzle-0.2.2"
       sources."stack-trace-0.0.10"
-      sources."string_decoder-1.3.0"
+      sources."string_decoder-1.1.1"
       sources."text-hex-1.0.0"
       sources."triple-beam-1.3.0"
       sources."util-deprecate-1.0.2"
-      sources."winston-3.2.1"
-      (sources."winston-transport-4.4.0" // {
-        dependencies = [
-          sources."readable-stream-2.3.7"
-          sources."safe-buffer-5.1.2"
-          sources."string_decoder-1.1.1"
-        ];
-      })
+      sources."winston-3.1.0"
+      sources."winston-transport-4.4.0"
       sources."yallist-4.0.0"
     ];
     buildInputs = globalBuildInputs;
@@ -92831,10 +93082,10 @@ in
   netlify-cli = nodeEnv.buildNodePackage {
     name = "netlify-cli";
     packageName = "netlify-cli";
-    version = "3.17.1";
+    version = "3.17.2";
     src = fetchurl {
-      url = "https://registry.npmjs.org/netlify-cli/-/netlify-cli-3.17.1.tgz";
-      sha512 = "C9mWo2ijxnh09mscYb0F96V76g71MrVJNPgbjMobYnHPbJP3zqNG/3CBmLHyX9RLQI6RRcqND05ATdj2itL1rg==";
+      url = "https://registry.npmjs.org/netlify-cli/-/netlify-cli-3.17.2.tgz";
+      sha512 = "PhSxSj/VvDEBSWwWSGY9xpDtxJjTUej8Ak1MZJFpRevtH/v4/RbuhUeapTTidDWO5bbzG+hyes0sa7R6oQySEg==";
     };
     dependencies = [
       sources."@babel/code-frame-7.12.13"
@@ -93294,7 +93545,7 @@ in
       sources."at-least-node-1.0.0"
       sources."atob-2.1.2"
       sources."atob-lite-2.0.0"
-      (sources."aws-sdk-2.885.0" // {
+      (sources."aws-sdk-2.886.0" // {
         dependencies = [
           sources."buffer-4.9.2"
           sources."ieee754-1.1.13"
@@ -96715,7 +96966,7 @@ in
       sources."@nodelib/fs.stat-2.0.4"
       sources."@nodelib/fs.walk-1.2.6"
       sources."@npmcli/ci-detect-1.3.0"
-      sources."@npmcli/git-2.0.6"
+      sources."@npmcli/git-2.0.7"
       sources."@npmcli/installed-package-contents-1.0.7"
       sources."@npmcli/move-file-1.1.2"
       sources."@npmcli/node-gyp-1.0.2"
@@ -100659,10 +100910,10 @@ in
   redoc-cli = nodeEnv.buildNodePackage {
     name = "redoc-cli";
     packageName = "redoc-cli";
-    version = "0.11.3";
+    version = "0.11.4";
     src = fetchurl {
-      url = "https://registry.npmjs.org/redoc-cli/-/redoc-cli-0.11.3.tgz";
-      sha512 = "PqC0gPEh8iYxIrpZN1bSBma+pTjCOOChyxCH9/Zwm4YewIk4wASG2mjZgsvN4kUqTNHzS38twl3fG1P+13ZwYQ==";
+      url = "https://registry.npmjs.org/redoc-cli/-/redoc-cli-0.11.4.tgz";
+      sha512 = "Ke/Lvy9fwLuZGpeILZfJOyBtwGhgOFLQdptAf0LdGt9l44DfwGVw7ppaqXoJEr1rXyu2eO0UtH2UnG5/CCigVw==";
     };
     dependencies = [
       sources."@babel/code-frame-7.12.13"
@@ -101947,7 +102198,7 @@ in
       sources."async-2.6.3"
       sources."asynckit-0.4.0"
       sources."at-least-node-1.0.0"
-      (sources."aws-sdk-2.885.0" // {
+      (sources."aws-sdk-2.886.0" // {
         dependencies = [
           sources."buffer-4.9.2"
           sources."ieee754-1.1.13"
@@ -103316,10 +103567,10 @@ in
   snyk = nodeEnv.buildNodePackage {
     name = "snyk";
     packageName = "snyk";
-    version = "1.535.0";
+    version = "1.538.0";
     src = fetchurl {
-      url = "https://registry.npmjs.org/snyk/-/snyk-1.535.0.tgz";
-      sha512 = "NQpGzXb66WvMGkZ2vye58LST1lJFN+diEQ76dlTdh/e2KgFb/qmevo/VgDqAsMsFW6h0rE8V6tFqVBDb8mfEBw==";
+      url = "https://registry.npmjs.org/snyk/-/snyk-1.538.0.tgz";
+      sha512 = "lq2/Ykzec9XacniZpkZaJPQDyBDWqgUsdugn6Kcm+ba2RJU72Dr6VSnIQPQ9ebe9nbNriABmURnLmH9aApiWew==";
     };
     dependencies = [
       sources."@arcanis/slice-ansi-1.0.2"
@@ -103331,6 +103582,7 @@ in
       sources."@open-policy-agent/opa-wasm-1.2.0"
       sources."@sindresorhus/is-2.1.1"
       sources."@snyk/cli-interface-2.11.0"
+      sources."@snyk/cloud-config-parser-1.9.2"
       sources."@snyk/cocoapods-lockfile-parser-3.6.2"
       (sources."@snyk/code-client-3.4.0" // {
         dependencies = [
@@ -104028,6 +104280,7 @@ in
       sources."xtend-4.0.2"
       sources."yallist-4.0.0"
       sources."yaml-1.10.2"
+      sources."yaml-js-0.3.0"
     ];
     buildInputs = globalBuildInputs;
     meta = {
@@ -105314,7 +105567,7 @@ in
       sources."async-1.5.2"
       sources."async-limiter-1.0.1"
       sources."asynckit-0.4.0"
-      (sources."aws-sdk-2.885.0" // {
+      (sources."aws-sdk-2.886.0" // {
         dependencies = [
           sources."uuid-3.3.2"
         ];
@@ -111584,7 +111837,7 @@ in
       sources."isarray-1.0.0"
       sources."isexe-2.0.0"
       sources."isobject-3.0.1"
-      (sources."js-beautify-1.13.5" // {
+      (sources."js-beautify-1.13.8" // {
         dependencies = [
           sources."mkdirp-1.0.4"
         ];
diff --git a/pkgs/development/ocaml-modules/postgresql/default.nix b/pkgs/development/ocaml-modules/postgresql/default.nix
index 82875dbd8b3..a63876ec5bb 100644
--- a/pkgs/development/ocaml-modules/postgresql/default.nix
+++ b/pkgs/development/ocaml-modules/postgresql/default.nix
@@ -1,8 +1,10 @@
-{ lib, fetchFromGitHub, buildDunePackage, postgresql }:
+{ lib, fetchFromGitHub, buildDunePackage, dune-configurator, postgresql }:
 
 buildDunePackage rec {
   pname = "postgresql";
-  version = "4.6.3";
+  version = "5.0.0";
+
+  useDune2 = true;
 
   minimumOCamlVersion = "4.08";
 
@@ -10,10 +12,10 @@ buildDunePackage rec {
     owner = "mmottl";
     repo = "postgresql-ocaml";
     rev = version;
-    sha256 = "0fd96qqwkwjhv6pawk4wivwncszkif0sq05f0g5gd28jzwrsvpqr";
+    sha256 = "1i4pnh2v00i0s7s9pcwz1x6s4xcd77d08gjjkvy0fmda6mqq6ghn";
   };
 
-  buildInputs = [ postgresql ];
+  buildInputs = [ dune-configurator postgresql ];
 
   meta = {
     description = "Bindings to the PostgreSQL library";
diff --git a/pkgs/development/python-modules/clickhouse-cli/default.nix b/pkgs/development/python-modules/clickhouse-cli/default.nix
new file mode 100644
index 00000000000..07ddca0680a
--- /dev/null
+++ b/pkgs/development/python-modules/clickhouse-cli/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, click
+, prompt_toolkit
+, pygments
+, requests
+, sqlparse
+}:
+
+buildPythonPackage rec {
+  pname = "clickhouse-cli";
+  version = "0.3.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-fDvUdL6LzgCv6LDmB0R0M7v6BbnbL68p9pHMebP58h8=";
+  };
+
+  propagatedBuildInputs = [
+    click
+    prompt_toolkit
+    pygments
+    requests
+    sqlparse
+  ];
+
+  pythonImportsCheck = [ "clickhouse_cli" ];
+
+  meta = with lib; {
+    description = "A third-party client for the Clickhouse DBMS server";
+    homepage = "https://github.com/hatarist/clickhouse-cli";
+    license = licenses.mit;
+    maintainers = with maintainers; [ ivan-babrou ];
+  };
+}
diff --git a/pkgs/development/python-modules/mcstatus/default.nix b/pkgs/development/python-modules/mcstatus/default.nix
index 7ed7a0ff328..1ea14c35510 100644
--- a/pkgs/development/python-modules/mcstatus/default.nix
+++ b/pkgs/development/python-modules/mcstatus/default.nix
@@ -5,6 +5,7 @@
 , dnspython
 , fetchFromGitHub
 , mock
+, pytest-asyncio
 , pytestCheckHook
 , pythonOlder
 , six
@@ -12,14 +13,14 @@
 
 buildPythonPackage rec {
   pname = "mcstatus";
-  version = "5.1.2";
+  version = "5.1.4";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "Dinnerbone";
     repo = pname;
-    rev = "release-${version}";
-    sha256 = "16k5vcqpd9r7mm1cg9khzba42rcxs491h8gk2klymav249yzrwk7";
+    rev = "v${version}";
+    sha256 = "1k8hjv965svbm95m7jaawlhdbxqpkjchlwvjwn1n7z90dfgn5kih";
   };
 
   propagatedBuildInputs = [
@@ -31,6 +32,7 @@ buildPythonPackage rec {
 
   checkInputs = [
     mock
+    pytest-asyncio
     pytestCheckHook
   ];
 
diff --git a/pkgs/development/python-modules/oci/default.nix b/pkgs/development/python-modules/oci/default.nix
new file mode 100644
index 00000000000..41c6ffb7228
--- /dev/null
+++ b/pkgs/development/python-modules/oci/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, fetchFromGitHub
+, buildPythonPackage
+, certifi
+, configparser
+, cryptography
+, pyopenssl
+, dateutil
+, pytz
+}:
+
+buildPythonPackage rec {
+  pname = "oci";
+  version = "2.36.0";
+
+  src = fetchFromGitHub {
+    owner = "oracle";
+    repo = "oci-python-sdk";
+    rev = "v${version}";
+    hash = "sha256-scG/ZhWeiCgXp7iD6arWIN8KZecSjKLsCW4oXeJvx6M=";
+  };
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "configparser==4.0.2" "configparser" \
+      --replace "cryptography==3.2.1" "cryptography" \
+      --replace "pyOpenSSL>=17.5.0,<=19.1.0" "pyOpenSSL"
+  '';
+
+  propagatedBuildInputs = [
+    certifi configparser cryptography pyopenssl dateutil pytz
+  ];
+
+  # Tests fail: https://github.com/oracle/oci-python-sdk/issues/164
+  doCheck = false;
+
+  pythonImportsCheck = [ "oci" ];
+
+  meta = with lib; {
+    description = "Oracle Cloud Infrastructure Python SDK";
+    homepage = "https://oracle-cloud-infrastructure-python-sdk.readthedocs.io/en/latest/index.html";
+    maintainers = with maintainers; [ ilian ];
+    license = with licenses; [ asl20 upl ];
+  };
+}
diff --git a/pkgs/development/python-modules/pikepdf/default.nix b/pkgs/development/python-modules/pikepdf/default.nix
index adf30d57322..c536f4c69f0 100644
--- a/pkgs/development/python-modules/pikepdf/default.nix
+++ b/pkgs/development/python-modules/pikepdf/default.nix
@@ -17,18 +17,19 @@
 , python-dateutil
 , python-xmp-toolkit
 , qpdf
+, setuptools
 , setuptools-scm
 , setuptools-scm-git-archive
 }:
 
 buildPythonPackage rec {
   pname = "pikepdf";
-  version = "2.9.1";
+  version = "2.11.1";
   disabled = ! isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "99c19cf0dd0fc89fc9e6a0de61e974e34d4111dd69802aeaee3e61fb1a74a3d8";
+    sha256 = "0vs7qa3s4scfhyldfw99hhxpna6rj49rsbr2k0j6b4qx1bw8h141";
   };
 
   buildInputs = [
@@ -58,6 +59,7 @@ buildPythonPackage rec {
     defusedxml
     lxml
     pillow
+    setuptools
   ];
 
   preBuild = ''
@@ -71,5 +73,6 @@ buildPythonPackage rec {
     description = "Read and write PDFs with Python, powered by qpdf";
     license = licenses.mpl20;
     maintainers = [ maintainers.kiwi ];
+    changelog = "https://github.com/pikepdf/pikepdf/blob/${version}/docs/release_notes.rst";
   };
 }
diff --git a/pkgs/development/python-modules/pulsectl/default.nix b/pkgs/development/python-modules/pulsectl/default.nix
index aa853dcd365..6b05f383ec6 100644
--- a/pkgs/development/python-modules/pulsectl/default.nix
+++ b/pkgs/development/python-modules/pulsectl/default.nix
@@ -6,7 +6,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "faa8b9336237565990298f20870e13dd1678a4586847ca5a7ff2abf10752f356";
+    sha256 = "sha256-+qi5M2I3VlmQKY8ghw4T3RZ4pFhoR8paf/Kr8QdS81Y=";
   };
 
   patches = [
diff --git a/pkgs/development/python-modules/spotipy/default.nix b/pkgs/development/python-modules/spotipy/default.nix
index 6f29db2581b..4493eb3d975 100644
--- a/pkgs/development/python-modules/spotipy/default.nix
+++ b/pkgs/development/python-modules/spotipy/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "spotipy";
-  version = "2.17.1";
+  version = "2.18.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-KcYMi5naHEufDXIhabwx5iS4wH1xhrjq3ZwC6NLULL8=";
+    sha256 = "sha256-9yk7gIaWgH6azsa9z/Y/fcw8wbFIwMS0KZ70PJZvcXc=";
   };
 
   propagatedBuildInputs = [ requests six ];
diff --git a/pkgs/development/python-modules/systembridge/default.nix b/pkgs/development/python-modules/systembridge/default.nix
new file mode 100644
index 00000000000..94d41b7b673
--- /dev/null
+++ b/pkgs/development/python-modules/systembridge/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchFromGitHub
+}:
+
+buildPythonPackage rec {
+  pname = "systembridge";
+  version = "1.1.1";
+
+  src = fetchFromGitHub {
+    owner = "timmo001";
+    repo = "system-bridge-connector-py";
+    rev = "v${version}";
+    sha256 = "0vyfi7nyzkzsgg84n5wh4hzwvx6fybgqdzbabnsmvszb9sm1vlb2";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+  ];
+
+  # Project has no tests
+  doCheck = false;
+  pythonImportsCheck = [ "systembridge" ];
+
+  meta = with lib; {
+    description = "Python module for connecting to System Bridge";
+    homepage = "https://github.com/timmo001/system-bridge-connector-py";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/twitterapi/default.nix b/pkgs/development/python-modules/twitterapi/default.nix
index a53a3fda616..11f596e01d0 100644
--- a/pkgs/development/python-modules/twitterapi/default.nix
+++ b/pkgs/development/python-modules/twitterapi/default.nix
@@ -7,13 +7,13 @@
 
 buildPythonPackage rec {
   pname = "twitterapi";
-  version = "2.6.10";
+  version = "2.7.1";
 
   src = fetchFromGitHub {
     owner = "geduldig";
     repo = "TwitterAPI";
     rev = "v${version}";
-    sha256 = "sha256-ylxjeIK9cjT4r71j+sULYs6yyYWfKDkpm0bESMo7s3o=";
+    sha256 = "sha256-fLexFlnoh58b9q4mo9atGQmMttKytTfAYmaPj6xmPj8=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/tools/buildah/default.nix b/pkgs/development/tools/buildah/default.nix
index cebd80ff83e..b1491bfa481 100644
--- a/pkgs/development/tools/buildah/default.nix
+++ b/pkgs/development/tools/buildah/default.nix
@@ -14,13 +14,13 @@
 
 buildGoModule rec {
   pname = "buildah";
-  version = "1.20.0";
+  version = "1.20.1";
 
   src = fetchFromGitHub {
     owner = "containers";
     repo = "buildah";
     rev = "v${version}";
-    sha256 = "12gmn61mfrr58071x3cdsksad6swn1b23ghih128hjdpdzk1zxs3";
+    sha256 = "sha256-nlZblUPS0678dR0hyp+V9uH/nHL9YH81+O1Zzq8T8Pw=";
   };
 
   outputs = [ "out" "man" ];
diff --git a/pkgs/development/tools/godot/default.nix b/pkgs/development/tools/godot/default.nix
index 217717d3e7d..d5eb7a9b0e0 100644
--- a/pkgs/development/tools/godot/default.nix
+++ b/pkgs/development/tools/godot/default.nix
@@ -58,11 +58,11 @@ in stdenv.mkDerivation rec {
       --replace "Exec=godot" "Exec=$out/bin/godot"
   '';
 
-  meta = {
+  meta = with lib; {
     homepage    = "https://godotengine.org";
     description = "Free and Open Source 2D and 3D game engine";
-    license     = lib.licenses.mit;
+    license     = licenses.mit;
     platforms   = [ "i686-linux" "x86_64-linux" ];
-    maintainers = [ lib.maintainers.twey ];
+    maintainers = with maintainers; [ twey ];
   };
 }
diff --git a/pkgs/games/scummvm/default.nix b/pkgs/games/scummvm/default.nix
index 20d781db23d..68ccb894d99 100644
--- a/pkgs/games/scummvm/default.nix
+++ b/pkgs/games/scummvm/default.nix
@@ -1,5 +1,6 @@
 { lib, stdenv, fetchurl, nasm
 , alsaLib, curl, flac, fluidsynth, freetype, libjpeg, libmad, libmpeg2, libogg, libvorbis, libGLU, libGL, SDL2, zlib
+, Cocoa, AudioToolbox, Carbon, CoreMIDI, AudioUnit, cctools
 }:
 
 stdenv.mkDerivation rec {
@@ -13,8 +14,12 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ nasm ];
 
-  buildInputs = [
-    alsaLib curl freetype flac fluidsynth libjpeg libmad libmpeg2 libogg libvorbis libGLU libGL SDL2 zlib
+  buildInputs = lib.optionals stdenv.isLinux [
+    alsaLib
+  ] ++ lib.optionals stdenv.isDarwin [
+    Cocoa AudioToolbox Carbon CoreMIDI AudioUnit
+  ] ++ [
+    curl freetype flac fluidsynth libjpeg libmad libmpeg2 libogg libvorbis libGLU libGL SDL2 zlib
   ];
 
   dontDisableStatic = true;
@@ -30,6 +35,8 @@ stdenv.mkDerivation rec {
   # They use 'install -s', that calls the native strip instead of the cross
   postConfigure = ''
     sed -i "s/-c -s/-c -s --strip-program=''${STRIP@Q}/" ports.mk
+  '' + lib.optionalString stdenv.isDarwin ''
+    substituteInPlace config.mk --replace x86_64-apple-darwin-ranlib ${cctools}/bin/ranlib
   '';
 
   meta = with lib; {
@@ -37,6 +44,6 @@ stdenv.mkDerivation rec {
     homepage = "https://www.scummvm.org/";
     license = licenses.gpl2;
     maintainers = [ maintainers.peterhoeg ];
-    platforms = platforms.linux;
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/misc/vscode-extensions/default.nix b/pkgs/misc/vscode-extensions/default.nix
index 0b68563a282..3a7c6f06a38 100644
--- a/pkgs/misc/vscode-extensions/default.nix
+++ b/pkgs/misc/vscode-extensions/default.nix
@@ -390,6 +390,21 @@ let
         };
       };
 
+      foxundermoon.shell-format = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "shell-format";
+          publisher = "foxundermoon";
+          version = "7.1.0";
+          sha256 = "09z72mdr5bfdcb67xyzlv7lb9vyjlc3k9ackj4jgixfk40c68cnj";
+        };
+        meta = with lib; {
+          downloadPage = "https://marketplace.visualstudio.com/items?itemName=foxundermoon.shell-format";
+          homepage = "https://github.com/foxundermoon/vs-shell-format";
+          license = licenses.mit;
+          maintainers = with maintainers; [ dbirks ];
+        };
+      };
+
       freebroccolo.reasonml = buildVscodeMarketplaceExtension {
         meta = with lib; {
           changelog = "https://marketplace.visualstudio.com/items/freebroccolo.reasonml/changelog";
diff --git a/pkgs/os-specific/bsd/netbsd/default.nix b/pkgs/os-specific/bsd/netbsd/default.nix
index ab202c275ac..b86891352f0 100644
--- a/pkgs/os-specific/bsd/netbsd/default.nix
+++ b/pkgs/os-specific/bsd/netbsd/default.nix
@@ -1,8 +1,8 @@
-{ stdenv, stdenvNoCC, lib, groff, mandoc, zlib, bison, flex
+{ stdenv, stdenvNoCC, fetchcvs, lib, groff, mandoc, zlib, bison, flex
 , writeText, buildPackages, splicePackages, symlinkJoin }:
 
 let
-  fetchNetBSD = path: version: sha256: buildPackages.fetchcvs {
+  fetchNetBSD = path: version: sha256: fetchcvs {
     cvsRoot = ":pserver:anoncvs@anoncvs.NetBSD.org:/cvsroot";
     module = "src/${path}";
     inherit sha256;
diff --git a/pkgs/servers/monitoring/alertmanager-irc-relay/default.nix b/pkgs/servers/monitoring/alertmanager-irc-relay/default.nix
index 07e58e471d8..c3c60e1d4a2 100644
--- a/pkgs/servers/monitoring/alertmanager-irc-relay/default.nix
+++ b/pkgs/servers/monitoring/alertmanager-irc-relay/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "alertmanager-irc-relay";
-  version = "0.3.0";
+  version = "0.3.1";
 
   src = fetchFromGitHub {
     owner = "google";
     repo = "alertmanager-irc-relay";
     rev = "v${version}";
-    sha256 = "sha256-SmyKk0vSXfHzRxOdbULD2Emju/VjDcXZZ7cgVbZxGIA=";
+    sha256 = "sha256-IlWXsQZtDXG8sJBV+82BzEFj+JtUbfTOZyqYOrZFTXA=";
   };
 
-  vendorSha256 = "sha256-aJVA9MJ9DK/dCo7aSB9OLfgKGN5L6Sw2k2aOR4J2LE4=";
+  vendorSha256 = "sha256-VLG15IXS/fXFMTCJKEqGW6qZ9aOLPhazidVsOywG+w4=";
 
   buildFlagsArray = [ "-ldflags=-s -w" ];
 
diff --git a/pkgs/tools/admin/oci-cli/default.nix b/pkgs/tools/admin/oci-cli/default.nix
new file mode 100644
index 00000000000..16ecff07b73
--- /dev/null
+++ b/pkgs/tools/admin/oci-cli/default.nix
@@ -0,0 +1,58 @@
+{ lib, fetchFromGitHub, python3Packages, locale }:
+
+let
+  # https://github.com/oracle/oci-cli/issues/189
+  pinned_click = python3Packages.click.overridePythonAttrs (old: rec {
+    pname = "click";
+    version = "6.7";
+    src = python3Packages.fetchPypi {
+      inherit pname version;
+      hash = "sha256-8VUW30eNWlYYD7+A5o8gYBDm0WD8OfpQi2XgNf11Ews=";
+    };
+
+    postPatch = ''
+      substituteInPlace click/_unicodefun.py \
+      --replace "'locale'" "'${locale}/bin/locale'"
+    '';
+
+    # Issue that wasn't resolved when this version was released:
+    # https://github.com/pallets/click/issues/823
+    doCheck = false;
+  });
+in
+
+python3Packages.buildPythonApplication rec {
+  pname = "oci-cli";
+  version = "2.23.0";
+
+  src = fetchFromGitHub {
+    owner = "oracle";
+    repo = "oci-cli";
+    rev = "v${version}";
+    hash = "sha256-XRkycJrUSOZQAGiSyQZGA/SnlxnFumYL82kOkYd7s2o=";
+  };
+
+  propagatedBuildInputs = with python3Packages; [
+    oci arrow certifi pinned_click configparser cryptography jmespath dateutil
+    pytz retrying six terminaltables pyopenssl pyyaml
+  ];
+
+  # https://github.com/oracle/oci-cli/issues/187
+  doCheck = false;
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "configparser==4.0.2" "configparser" \
+      --replace "cryptography==3.2.1" "cryptography" \
+      --replace "pyOpenSSL==19.1.0" "pyOpenSSL" \
+      --replace "PyYAML==5.3.1" "PyYAML" \
+      --replace "six==1.14.0" "six"
+  '';
+
+  meta = with lib; {
+    description = "Command Line Interface for Oracle Cloud Infrastructure";
+    homepage = "https://docs.cloud.oracle.com/iaas/Content/API/Concepts/cliconcepts.htm";
+    maintainers = with maintainers; [ ilian ];
+    license = with licenses; [ asl20 upl ];
+  };
+}
diff --git a/pkgs/tools/text/ocrmypdf/default.nix b/pkgs/tools/text/ocrmypdf/default.nix
index 6843e945fd9..99e2bf06508 100644
--- a/pkgs/tools/text/ocrmypdf/default.nix
+++ b/pkgs/tools/text/ocrmypdf/default.nix
@@ -30,14 +30,14 @@ let
 in
 buildPythonApplication rec {
   pname = "ocrmypdf";
-  version = "11.6.0";
+  version = "11.7.3";
   disabled = ! python3Packages.isPy3k;
 
   src = fetchFromGitHub {
     owner = "jbarlow83";
     repo = "OCRmyPDF";
     rev = "v${version}";
-    sha256 = "0inmmpam0vcm5n4sm6lh9p5swk44clknvm1cdwk9cax01mdqljza";
+    sha256 = "0gs2w9kl5wwrs0hx2sivq3pdvpf3lkaifblwfbz5g31yl770blji";
   };
 
   nativeBuildInputs = with python3Packages; [
@@ -85,5 +85,6 @@ buildPythonApplication rec {
     license = with licenses; [ mpl20 mit ];
     platforms = platforms.linux;
     maintainers = [ maintainers.kiwi ];
+    changelog  = "https://github.com/jbarlow83/OCRmyPDF/blob/v${version}/docs/release_notes.rst";
   };
 }
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index aa67263ce6f..2a8c0368d7b 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -375,7 +375,10 @@ in
 
   fetchbzr = callPackage ../build-support/fetchbzr { };
 
-  fetchcvs = callPackage ../build-support/fetchcvs { };
+  fetchcvs = if stdenv.buildPlatform != stdenv.hostPlatform
+    # hack around splicing being crummy with things that (correctly) don't eval.
+    then buildPackages.fetchcvs
+    else callPackage ../build-support/fetchcvs { };
 
   fetchdarcs = callPackage ../build-support/fetchdarcs { };
 
@@ -427,7 +430,10 @@ in
 
   fetchs3 = callPackage ../build-support/fetchs3 { };
 
-  fetchsvn = callPackage ../build-support/fetchsvn { };
+  fetchsvn = if stdenv.buildPlatform != stdenv.hostPlatform
+    # hack around splicing being crummy with things that (correctly) don't eval.
+    then buildPackages.fetchsvn
+    else callPackage ../build-support/fetchsvn { };
 
   fetchsvnrevision = import ../build-support/fetchsvnrevision runCommand subversion;
 
@@ -2841,6 +2847,8 @@ in
 
   nyx = callPackage ../tools/networking/nyx { };
 
+  oci-cli = callPackage ../tools/admin/oci-cli { };
+
   ocrmypdf = callPackage ../tools/text/ocrmypdf { };
 
   ocrfeeder = callPackage ../applications/graphics/ocrfeeder { };
@@ -18332,6 +18340,8 @@ in
     inherit (llvmPackages_10) clang-unwrapped lld lldClang llvm;
   };
 
+  clickhouse-cli = with python3Packages; toPythonApplication clickhouse-cli;
+
   couchdb = callPackage ../servers/http/couchdb {
     sphinx = python27Packages.sphinx;
     erlang = erlangR19;
@@ -23336,6 +23346,8 @@ in
 
   googleearth = callPackage ../applications/misc/googleearth { };
 
+  googleearth-pro = callPackage ../applications/misc/googleearth-pro { };
+
   google-chrome = callPackage ../applications/networking/browsers/google-chrome { gconf = gnome2.GConf; };
 
   google-chrome-beta = google-chrome.override { chromium = chromiumBeta; channel = "beta"; };
@@ -26130,6 +26142,8 @@ in
 
   todo-txt-cli = callPackage ../applications/office/todo.txt-cli { };
 
+  todofi-sh = callPackage ../applications/office/todofi.sh { };
+
   todoman = callPackage ../applications/office/todoman { };
 
   toggldesktop = libsForQt514.callPackage ../applications/misc/toggldesktop { };
@@ -27949,7 +27963,10 @@ in
     tk = tk-8_6;
   };
 
-  scummvm = callPackage ../games/scummvm { };
+  scummvm = callPackage ../games/scummvm {
+    inherit (darwin) cctools;
+    inherit (darwin.apple_sdk.frameworks) Cocoa AudioToolbox Carbon CoreMIDI AudioUnit;
+  };
 
   inherit (callPackage ../games/scummvm/games.nix { })
     beneath-a-steel-sky
@@ -28553,6 +28570,8 @@ in
 
   macse = callPackage ../applications/science/biology/macse { };
 
+  MACS2 = callPackage ../applications/science/biology/MACS2 { };
+
   migrate = callPackage ../applications/science/biology/migrate { };
 
   minia = callPackage ../applications/science/biology/minia {
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 1765384e4f3..6870de6daf2 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -1367,6 +1367,8 @@ in {
 
   clickhouse-cityhash = callPackage ../development/python-modules/clickhouse-cityhash {};
 
+  clickhouse-cli = callPackage ../development/python-modules/clickhouse-cli { };
+
   clickhouse-driver = callPackage ../development/python-modules/clickhouse-driver {};
 
   cliff = callPackage ../development/python-modules/cliff { };
@@ -4478,6 +4480,8 @@ in {
     graphvizPkgs = pkgs.graphviz;
   };
 
+  oci = callPackage ../development/python-modules/oci { };
+
   od = callPackage ../development/python-modules/od { };
 
   odfpy = callPackage ../development/python-modules/odfpy { };
@@ -7651,6 +7655,8 @@ in {
 
   sympy = callPackage ../development/python-modules/sympy { };
 
+  systembridge = callPackage ../development/python-modules/systembridge { };
+
   systemd = callPackage ../development/python-modules/systemd {
     inherit (pkgs) systemd;
   };