about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--.github/CODEOWNERS1
-rw-r--r--.github/workflows/backport.yml4
-rw-r--r--.github/workflows/manual-nixos.yml2
-rw-r--r--.github/workflows/manual-nixpkgs.yml2
-rw-r--r--lib/systems/doubles.nix5
-rw-r--r--lib/systems/examples.nix4
-rw-r--r--lib/systems/inspect.nix1
-rw-r--r--lib/systems/parse.nix2
-rw-r--r--lib/tests/systems.nix2
-rw-r--r--maintainers/maintainer-list.nix6
-rw-r--r--nixos/doc/manual/from_md/release-notes/rl-2111.section.xml9
-rw-r--r--nixos/doc/manual/release-notes/rl-2111.section.md2
-rw-r--r--nixos/modules/services/networking/iwd.nix32
-rw-r--r--nixos/modules/tasks/filesystems.nix25
-rw-r--r--nixos/tests/chromium.nix16
-rw-r--r--pkgs/applications/audio/carla/default.nix4
-rw-r--r--pkgs/applications/audio/soundtracker/default.nix36
-rw-r--r--pkgs/applications/editors/android-studio/default.nix8
-rw-r--r--pkgs/applications/graphics/ImageMagick/6.x.nix4
-rw-r--r--pkgs/applications/misc/clight/default.nix4
-rw-r--r--pkgs/applications/misc/corehunt/default.nix31
-rw-r--r--pkgs/applications/misc/fuzzel/default.nix4
-rw-r--r--pkgs/applications/misc/hubstaff/default.nix6
-rw-r--r--pkgs/applications/misc/markets/default.nix42
-rw-r--r--pkgs/applications/misc/prusa-slicer/default.nix4
-rw-r--r--pkgs/applications/networking/apache-directory-studio/default.nix6
-rw-r--r--pkgs/applications/networking/browsers/chromium/browser.nix7
-rw-r--r--pkgs/applications/networking/browsers/google-chrome/default.nix4
-rw-r--r--pkgs/applications/networking/flexget/default.nix4
-rw-r--r--pkgs/applications/networking/hydroxide/default.nix4
-rw-r--r--pkgs/applications/networking/instant-messengers/element/element-desktop-package.json36
-rw-r--r--pkgs/applications/networking/instant-messengers/element/element-desktop-yarndeps.nix544
-rw-r--r--pkgs/applications/networking/instant-messengers/element/element-desktop.nix16
-rw-r--r--pkgs/applications/networking/instant-messengers/element/element-web.nix4
-rw-r--r--pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix22
-rw-r--r--pkgs/applications/networking/instant-messengers/telegram/tdesktop/tg_owt.nix4
-rw-r--r--pkgs/applications/networking/instant-messengers/zoom-us/default.nix4
-rw-r--r--pkgs/applications/networking/juju/default.nix6
-rw-r--r--pkgs/applications/radio/fldigi/default.nix44
-rw-r--r--pkgs/applications/radio/multimon-ng/default.nix4
-rw-r--r--pkgs/applications/science/logic/logisim/default.nix30
-rw-r--r--pkgs/applications/science/misc/openmodelica/combined/default.nix30
-rw-r--r--pkgs/applications/science/misc/openmodelica/default.nix70
-rw-r--r--pkgs/applications/science/misc/openmodelica/fakegit.nix81
-rw-r--r--pkgs/applications/science/misc/openmodelica/mkderivation/default.nix101
-rw-r--r--pkgs/applications/science/misc/openmodelica/mkderivation/src-main.nix7
-rw-r--r--pkgs/applications/science/misc/openmodelica/omcompiler/default.nix63
-rw-r--r--pkgs/applications/science/misc/openmodelica/omedit/default.nix38
-rw-r--r--pkgs/applications/science/misc/openmodelica/omlibrary/default.nix37
-rw-r--r--pkgs/applications/science/misc/openmodelica/omlibrary/fakegit.nix49
-rw-r--r--pkgs/applications/science/misc/openmodelica/omlibrary/src-libs.nix83
-rwxr-xr-xpkgs/applications/science/misc/openmodelica/omlibrary/update-src-libs.sh39
-rw-r--r--pkgs/applications/science/misc/openmodelica/omparser/Makefile.in.patch22
-rw-r--r--pkgs/applications/science/misc/openmodelica/omparser/default.nix28
-rw-r--r--pkgs/applications/science/misc/openmodelica/omplot/default.nix34
-rw-r--r--pkgs/applications/science/misc/openmodelica/omshell/default.nix40
-rw-r--r--pkgs/applications/science/misc/openmodelica/omsimulator/default.nix26
-rw-r--r--pkgs/applications/science/misc/openmodelica/src-libs-git.nix71
-rw-r--r--pkgs/applications/science/misc/openmodelica/src-libs-svn.nix5
-rw-r--r--pkgs/applications/science/misc/openmodelica/src-main.nix6
-rwxr-xr-xpkgs/applications/science/misc/openmodelica/update-src-libs-git.sh64
-rwxr-xr-xpkgs/applications/science/misc/openmodelica/update-src-libs-svn.sh50
-rw-r--r--pkgs/applications/system/glances/default.nix4
-rw-r--r--pkgs/applications/terminal-emulators/iterm2/default.nix4
-rw-r--r--pkgs/applications/virtualization/firecracker/default.nix24
-rw-r--r--pkgs/build-support/bintools-wrapper/default.nix1
-rw-r--r--pkgs/desktops/gnome/core/evolution-data-server/default.nix4
-rw-r--r--pkgs/desktops/gnome/games/gnome-sudoku/default.nix4
-rw-r--r--pkgs/development/interpreters/erlang/R23.nix4
-rw-r--r--pkgs/development/interpreters/octave/default.nix8
-rw-r--r--pkgs/development/interpreters/rakudo/default.nix4
-rw-r--r--pkgs/development/interpreters/rakudo/moarvm.nix4
-rw-r--r--pkgs/development/interpreters/rakudo/nqp.nix4
-rw-r--r--pkgs/development/interpreters/rakudo/zef.nix4
-rw-r--r--pkgs/development/libraries/arb/default.nix4
-rw-r--r--pkgs/development/libraries/bzrtp/default.nix4
-rw-r--r--pkgs/development/libraries/cimg/default.nix4
-rw-r--r--pkgs/development/libraries/csfml/default.nix4
-rw-r--r--pkgs/development/libraries/flint/default.nix24
-rw-r--r--pkgs/development/libraries/libcouchbase/default.nix4
-rw-r--r--pkgs/development/libraries/portaudio/default.nix2
-rw-r--r--pkgs/development/ocaml-modules/ca-certs-nss/default.nix6
-rw-r--r--pkgs/development/ocaml-modules/carton/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/decompress/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/tcpip/default.nix16
-rw-r--r--pkgs/development/ocaml-modules/tcpip/makefile-no-opam.patch12
-rw-r--r--pkgs/development/ocaml-modules/x509/default.nix4
-rw-r--r--pkgs/development/php-packages/composer/default.nix4
-rw-r--r--pkgs/development/python-modules/asysocks/default.nix4
-rw-r--r--pkgs/development/python-modules/graphviz/default.nix7
-rw-r--r--pkgs/development/python-modules/graphviz/hardcode-graphviz-path.patch26
-rw-r--r--pkgs/development/python-modules/ignite/default.nix20
-rw-r--r--pkgs/development/python-modules/imap-tools/default.nix4
-rw-r--r--pkgs/development/python-modules/jc/default.nix15
-rw-r--r--pkgs/development/python-modules/pyvicare/default.nix4
-rw-r--r--pkgs/development/tools/analysis/tfsec/default.nix4
-rw-r--r--pkgs/development/tools/database/dbmate/default.nix4
-rw-r--r--pkgs/development/tools/earthly/default.nix8
-rw-r--r--pkgs/development/tools/evans/default.nix6
-rw-r--r--pkgs/development/tools/misc/apio/default.nix69
-rw-r--r--pkgs/development/tools/parsing/lemon/default.nix2
-rw-r--r--pkgs/development/tools/postiats-utilities/default.nix2
-rw-r--r--pkgs/development/tools/ronn/default.nix2
-rw-r--r--pkgs/development/tools/thrust/default.nix2
-rw-r--r--pkgs/games/blackshades/default.nix13
-rw-r--r--pkgs/games/eduke32/default.nix10
-rw-r--r--pkgs/games/warzone2100/default.nix4
-rw-r--r--pkgs/servers/dendrite/default.nix6
-rw-r--r--pkgs/servers/ldap/389/default.nix4
-rw-r--r--pkgs/servers/monitoring/mackerel-agent/default.nix6
-rw-r--r--pkgs/shells/zsh/spaceship-prompt/default.nix4
-rw-r--r--pkgs/tools/filesystems/squashfs/0001-Mksquashfs-add-no-hardlinks-option.patch76
-rw-r--r--pkgs/tools/filesystems/squashfs/4k-align.patch62
-rw-r--r--pkgs/tools/filesystems/squashfs/default.nix8
-rw-r--r--pkgs/tools/misc/lrzsz/default.nix12
-rw-r--r--pkgs/tools/misc/twurl/Gemfile3
-rw-r--r--pkgs/tools/misc/twurl/Gemfile.lock15
-rw-r--r--pkgs/tools/misc/twurl/default.nix17
-rw-r--r--pkgs/tools/misc/twurl/gemset.nix23
-rw-r--r--pkgs/tools/security/doppler/default.nix4
-rw-r--r--pkgs/tools/security/fail2ban/default.nix31
-rw-r--r--pkgs/tools/security/ic-keysmith/default.nix22
-rw-r--r--pkgs/tools/security/quill-qr/default.nix45
-rw-r--r--pkgs/tools/virtualization/cloud-init/default.nix2
-rw-r--r--pkgs/top-level/all-packages.nix20
125 files changed, 1925 insertions, 745 deletions
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 64719a7bc3a8..eba0bf651335 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -46,7 +46,6 @@
 /nixos/default.nix          @nbp @infinisil
 /nixos/lib/from-env.nix     @nbp @infinisil
 /nixos/lib/eval-config.nix  @nbp @infinisil
-/nixos/doc @ryantm
 /nixos/doc/manual/configuration/abstractions.xml      @nbp
 /nixos/doc/manual/configuration/config-file.xml       @nbp
 /nixos/doc/manual/configuration/config-syntax.xml     @nbp
diff --git a/.github/workflows/backport.yml b/.github/workflows/backport.yml
index bea970f02d40..0e3f315bb0de 100644
--- a/.github/workflows/backport.yml
+++ b/.github/workflows/backport.yml
@@ -15,13 +15,13 @@ jobs:
           ref: ${{ github.event.pull_request.head.sha }}
       - name: Create backport PRs
         # should be kept in sync with `version`
-        uses: zeebe-io/backport-action@2b994724142df0774855690db56bc6308fb99ffa
+        uses: zeebe-io/backport-action@v0.0.5
         with:
           # Config README: https://github.com/zeebe-io/backport-action#backport-action
           github_token: ${{ secrets.GITHUB_TOKEN }}
           github_workspace: ${{ github.workspace }}
           # should be kept in sync with `uses`
-          version: 2b994724142df0774855690db56bc6308fb99ffa
+          version: v0.0.5
           pull_description: |-
             Bot-based backport to `${target_branch}`, triggered by a label in #${pull_number}.
 
diff --git a/.github/workflows/manual-nixos.yml b/.github/workflows/manual-nixos.yml
index 032a456569d3..edd2755302a1 100644
--- a/.github/workflows/manual-nixos.yml
+++ b/.github/workflows/manual-nixos.yml
@@ -22,7 +22,7 @@ jobs:
         with:
           # explicitly enable sandbox
           extra_nix_config: sandbox = true
-      - uses: cachix/cachix-action@v9
+      - uses: cachix/cachix-action@v10
         with:
           # This cache is for the nixos/nixpkgs manual builds and should not be trusted or used elsewhere.
           name: nixpkgs-ci
diff --git a/.github/workflows/manual-nixpkgs.yml b/.github/workflows/manual-nixpkgs.yml
index 77655c494e06..e27a281a9332 100644
--- a/.github/workflows/manual-nixpkgs.yml
+++ b/.github/workflows/manual-nixpkgs.yml
@@ -22,7 +22,7 @@ jobs:
         with:
           # explicitly enable sandbox
           extra_nix_config: sandbox = true
-      - uses: cachix/cachix-action@v9
+      - uses: cachix/cachix-action@v10
         with:
           # This cache is for the nixos/nixpkgs manual builds and should not be trusted or used elsewhere.
           name: nixpkgs-ci
diff --git a/lib/systems/doubles.nix b/lib/systems/doubles.nix
index b8d154ad635e..aa630b51ed8c 100644
--- a/lib/systems/doubles.nix
+++ b/lib/systems/doubles.nix
@@ -28,7 +28,7 @@ let
     "aarch64-linux" "armv5tel-linux" "armv6l-linux" "armv7a-linux"
     "armv7l-linux" "i686-linux" "mipsel-linux" "powerpc64-linux"
     "powerpc64le-linux" "riscv32-linux" "riscv64-linux" "x86_64-linux"
-    "m68k-linux"
+    "m68k-linux" "s390-linux"
 
     # MMIXware
     "mmix-mmixware"
@@ -41,7 +41,7 @@ let
     # none
     "aarch64-none" "arm-none" "armv6l-none" "avr-none" "i686-none" "msp430-none"
     "or1k-none" "powerpc-none" "riscv32-none" "riscv64-none" "vc4-none" "m68k-none"
-    "x86_64-none"
+    "s390-none" "x86_64-none"
 
     # OpenBSD
     "i686-openbsd" "x86_64-openbsd"
@@ -76,6 +76,7 @@ in {
   vc4           = filterDoubles predicates.isVc4;
   or1k          = filterDoubles predicates.isOr1k;
   m68k          = filterDoubles predicates.isM68k;
+  s390          = filterDoubles predicates.isS390;
   js            = filterDoubles predicates.isJavaScript;
 
   bigEndian     = filterDoubles predicates.isBigEndian;
diff --git a/lib/systems/examples.nix b/lib/systems/examples.nix
index ce7515bc9ccd..32b236d6960c 100644
--- a/lib/systems/examples.nix
+++ b/lib/systems/examples.nix
@@ -148,6 +148,10 @@ rec {
     config = "m68k-unknown-linux-gnu";
   };
 
+  s390 = {
+    config = "s390-unknown-linux-gnu";
+  };
+
   arm-embedded = {
     config = "arm-none-eabi";
     libc = "newlib";
diff --git a/lib/systems/inspect.nix b/lib/systems/inspect.nix
index a74847d43407..2fba95aa1a67 100644
--- a/lib/systems/inspect.nix
+++ b/lib/systems/inspect.nix
@@ -27,6 +27,7 @@ rec {
     isAlpha        = { cpu = { family = "alpha"; }; };
     isOr1k         = { cpu = { family = "or1k"; }; };
     isM68k         = { cpu = { family = "m68k"; }; };
+    isS390         = { cpu = { family = "s390"; }; };
     isJavaScript   = { cpu = cpuTypes.js; };
 
     is32bit        = { cpu = { bits = 32; }; };
diff --git a/lib/systems/parse.nix b/lib/systems/parse.nix
index 8a8b08881496..386f252f2ba4 100644
--- a/lib/systems/parse.nix
+++ b/lib/systems/parse.nix
@@ -105,6 +105,8 @@ rec {
     riscv32  = { bits = 32; significantByte = littleEndian; family = "riscv"; };
     riscv64  = { bits = 64; significantByte = littleEndian; family = "riscv"; };
 
+    s390     = { bits = 32; significantByte = bigEndian; family = "s390"; };
+
     sparc    = { bits = 32; significantByte = bigEndian;    family = "sparc"; };
     sparc64  = { bits = 64; significantByte = bigEndian;    family = "sparc"; };
 
diff --git a/lib/tests/systems.nix b/lib/tests/systems.nix
index 378dc5375988..6bd43f0d0d00 100644
--- a/lib/tests/systems.nix
+++ b/lib/tests/systems.nix
@@ -28,7 +28,7 @@ with lib.systems.doubles; lib.runTests {
   testredox = mseteq redox [ "x86_64-redox" ];
   testgnu = mseteq gnu (linux /* ++ kfreebsd ++ ... */);
   testillumos = mseteq illumos [ "x86_64-solaris" ];
-  testlinux = mseteq linux [ "aarch64-linux" "armv5tel-linux" "armv6l-linux" "armv7a-linux" "armv7l-linux" "i686-linux" "mipsel-linux" "riscv32-linux" "riscv64-linux" "x86_64-linux" "powerpc64-linux" "powerpc64le-linux" "m68k-linux" ];
+  testlinux = mseteq linux [ "aarch64-linux" "armv5tel-linux" "armv6l-linux" "armv7a-linux" "armv7l-linux" "i686-linux" "mipsel-linux" "riscv32-linux" "riscv64-linux" "x86_64-linux" "powerpc64-linux" "powerpc64le-linux" "m68k-linux" "s390-linux" ];
   testnetbsd = mseteq netbsd [ "aarch64-netbsd" "armv6l-netbsd" "armv7a-netbsd" "armv7l-netbsd" "i686-netbsd" "mipsel-netbsd" "powerpc-netbsd" "riscv32-netbsd" "riscv64-netbsd" "x86_64-netbsd" ];
   testopenbsd = mseteq openbsd [ "i686-openbsd" "x86_64-openbsd" ];
   testwindows = mseteq windows [ "i686-cygwin" "x86_64-cygwin" "i686-windows" "x86_64-windows" ];
diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix
index 94007a0274c4..bb494a917683 100644
--- a/maintainers/maintainer-list.nix
+++ b/maintainers/maintainer-list.nix
@@ -1530,6 +1530,12 @@
     githubId = 1111035;
     name = "Break Yang";
   };
+  brecht = {
+    email = "brecht.savelkoul@alumni.lse.ac.uk";
+    github = "brechtcs";
+    githubId = 6107054;
+    name = "Brecht Savelkoul";
+  };
   brettlyons = {
     email = "blyons@fastmail.com";
     github = "brettlyons";
diff --git a/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml b/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml
index cc3b5cbd29eb..f573f7313652 100644
--- a/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml
+++ b/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml
@@ -693,6 +693,15 @@
           </listitem>
         </itemizedlist>
       </listitem>
+      <listitem>
+        <para>
+          The
+          <link xlink:href="options.html#opt-networking.wireless.iwd.enable">networking.wireless.iwd</link>
+          module has a new
+          <link xlink:href="options.html#opt-networking.wireless.iwd.settings">networking.wireless.iwd.settings</link>
+          option.
+        </para>
+      </listitem>
     </itemizedlist>
   </section>
 </section>
diff --git a/nixos/doc/manual/release-notes/rl-2111.section.md b/nixos/doc/manual/release-notes/rl-2111.section.md
index 5c27dba5fe07..5e379ad6fd1f 100644
--- a/nixos/doc/manual/release-notes/rl-2111.section.md
+++ b/nixos/doc/manual/release-notes/rl-2111.section.md
@@ -181,3 +181,5 @@ pt-services.clipcat.enable).
   - NSS modules which should be queried after `resolved`, `files` and
     `myhostname`, but before `dns` should use the default priority
   - NSS modules which should come after `dns` should use mkAfter.
+
+- The [networking.wireless.iwd](options.html#opt-networking.wireless.iwd.enable) module has a new [networking.wireless.iwd.settings](options.html#opt-networking.wireless.iwd.settings) option.
diff --git a/nixos/modules/services/networking/iwd.nix b/nixos/modules/services/networking/iwd.nix
index 99e5e78badd2..8835f7f9372d 100644
--- a/nixos/modules/services/networking/iwd.nix
+++ b/nixos/modules/services/networking/iwd.nix
@@ -4,8 +4,31 @@ with lib;
 
 let
   cfg = config.networking.wireless.iwd;
+  ini = pkgs.formats.ini { };
+  configFile = ini.generate "main.conf" cfg.settings;
 in {
-  options.networking.wireless.iwd.enable = mkEnableOption "iwd";
+  options.networking.wireless.iwd = {
+    enable = mkEnableOption "iwd";
+
+    settings = mkOption {
+      type = ini.type;
+      default = { };
+
+      example = {
+        Settings.AutoConnect = true;
+
+        Network = {
+          EnableIPv6 = true;
+          RoutePriorityOffset = 300;
+        };
+      };
+
+      description = ''
+        Options passed to iwd.
+        See <link xlink:href="https://iwd.wiki.kernel.org/networkconfigurationsettings">here</link> for supported options.
+      '';
+    };
+  };
 
   config = mkIf cfg.enable {
     assertions = [{
@@ -15,6 +38,8 @@ in {
       '';
     }];
 
+    environment.etc."iwd/main.conf".source = configFile;
+
     # for iwctl
     environment.systemPackages =  [ pkgs.iwd ];
 
@@ -27,7 +52,10 @@ in {
       linkConfig.NamePolicy = "keep kernel";
     };
 
-    systemd.services.iwd.wantedBy = [ "multi-user.target" ];
+    systemd.services.iwd = {
+      wantedBy = [ "multi-user.target" ];
+      restartTriggers = [ configFile ];
+    };
   };
 
   meta.maintainers = with lib.maintainers; [ mic92 dtzWill ];
diff --git a/nixos/modules/tasks/filesystems.nix b/nixos/modules/tasks/filesystems.nix
index 2f17608560f7..d9f7ce5d2c32 100644
--- a/nixos/modules/tasks/filesystems.nix
+++ b/nixos/modules/tasks/filesystems.nix
@@ -324,28 +324,33 @@ in
       in listToAttrs (map formatDevice (filter (fs: fs.autoFormat) fileSystems)) // {
     # Mount /sys/fs/pstore for evacuating panic logs and crashdumps from persistent storage onto the disk using systemd-pstore.
     # This cannot be done with the other special filesystems because the pstore module (which creates the mount point) is not loaded then.
-    # Since the pstore filesystem is usually empty right after mounting because the backend isn't registered yet, and a path unit cannot detect files inside of it, the same service waits for that to happen. systemd's restart mechanism can't be used here because the first failure also fails all dependent units.
         "mount-pstore" = {
           serviceConfig = {
             Type = "oneshot";
-            ExecStart = "${pkgs.util-linux}/bin/mount -t pstore -o nosuid,noexec,nodev pstore /sys/fs/pstore";
-            ExecStartPost = pkgs.writeShellScript "wait-for-pstore.sh" ''
+            # skip on kernels without the pstore module
+            ExecCondition = "${pkgs.kmod}/bin/modprobe -b pstore";
+            ExecStart = pkgs.writeShellScript "mount-pstore.sh" ''
               set -eu
-              TRIES=0
-              while [ $TRIES -lt 20 ] && [ "$(cat /sys/module/pstore/parameters/backend)" = "(null)" ]; do
-                sleep 0.1
-                TRIES=$((TRIES+1))
+              # if the pstore module is builtin it will have mounted the persistent store automatically. it may also be already mounted for other reasons.
+              ${pkgs.util-linux}/bin/mountpoint -q /sys/fs/pstore || ${pkgs.util-linux}/bin/mount -t pstore -o nosuid,noexec,nodev pstore /sys/fs/pstore
+              # wait up to five seconds (arbitrary, happened within one in testing) for the backend to be registered and the files to appear. a systemd path unit cannot detect this happening; and succeeding after a restart would not start dependent units.
+              TRIES=50
+              while [ "$(cat /sys/module/pstore/parameters/backend)" = "(null)" ]; do
+                if (( $TRIES )); then
+                  sleep 0.1
+                  TRIES=$((TRIES-1))
+                else
+                  echo "Persistent Storage backend was not registered in time." >&2
+                  exit 1
+                fi
               done
             '';
             RemainAfterExit = true;
           };
           unitConfig = {
-            ConditionPathIsMountPoint = "!/sys/fs/pstore";
             ConditionVirtualization = "!container";
             DefaultDependencies = false; # needed to prevent a cycle
           };
-          after = [ "modprobe@pstore.service" ];
-          requires = [ "modprobe@pstore.service" ];
           before = [ "systemd-pstore.service" ];
           wantedBy = [ "systemd-pstore.service" ];
         };
diff --git a/nixos/tests/chromium.nix b/nixos/tests/chromium.nix
index 0c85b2d21998..ea9e19cefbc9 100644
--- a/nixos/tests/chromium.nix
+++ b/nixos/tests/chromium.nix
@@ -80,12 +80,8 @@ mapAttrs (channel: chromiumPkg: makeTest rec {
             binary = pname
         # Add optional CLI options:
         options = []
-        major_version = "${versions.major (getVersion chromiumPkg.name)}"
-        if major_version > "91" and pname.startswith("google-chrome"):
-            # To avoid a GPU crash:
-            options += ["--use-gl=angle", "--use-angle=swiftshader"]
-        options.append("file://${startupHTML}")
         # Launch the process:
+        options.append("file://${startupHTML}")
         machine.succeed(ru(f'ulimit -c unlimited; {binary} {shlex.join(options)} & disown'))
         if binary.startswith("google-chrome"):
             # Need to click away the first window:
@@ -243,6 +239,16 @@ mapAttrs (channel: chromiumPkg: makeTest rec {
         machine.wait_for_text("Graphics Feature Status")
 
 
+    with test_new_win("version_info", "chrome://version", "About Version") as clipboard:
+        filters = [
+            r"${chromiumPkg.version} \(Official Build",
+        ]
+        if not all(
+            re.search(filter, clipboard) for filter in filters
+        ):
+            assert False, "Version info not correct."
+
+
     machine.shutdown()
   '';
 }) channelMap
diff --git a/pkgs/applications/audio/carla/default.nix b/pkgs/applications/audio/carla/default.nix
index 38514e40d000..bdafb93955c6 100644
--- a/pkgs/applications/audio/carla/default.nix
+++ b/pkgs/applications/audio/carla/default.nix
@@ -15,13 +15,13 @@ assert withGtk3 -> gtk3 != null;
 
 stdenv.mkDerivation rec {
   pname = "carla";
-  version = "2.3.0";
+  version = "2.3.1";
 
   src = fetchFromGitHub {
     owner = "falkTX";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-724EFBpbmPMuU1m3T0XMaeohURJA5JcxHfUPYbZ/2LE=";
+    sha256 = "sha256-LM7wRvUg2Q3f4qBZN1MPvsLkdl1ziArCfhdalyD1G3w=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/audio/soundtracker/default.nix b/pkgs/applications/audio/soundtracker/default.nix
index 3dc9089b241f..251725ea6b29 100644
--- a/pkgs/applications/audio/soundtracker/default.nix
+++ b/pkgs/applications/audio/soundtracker/default.nix
@@ -1,7 +1,7 @@
 { lib, stdenv
 , fetchurl
 , pkg-config
-, autoconf
+, autoreconfHook
 , gtk2
 , alsa-lib
 , SDL
@@ -12,21 +12,43 @@
 
 stdenv.mkDerivation rec {
   pname = "soundtracker";
-  version = "1.0.1";
+  version = "1.0.2.1";
 
   src = fetchurl {
     # Past releases get moved to the "old releases" directory.
     # Only the latest release is at the top level.
     # Nonetheless, only the name of the file seems to affect which file is
     # downloaded, so this path should be fine both for old and current releases.
-    url = "mirror://sourceforge/soundtracker/soundtracker-${version}.tar.bz2";
-    sha256 = "0m5iiqccch6w53khpvdldz59zymw13vmwqc5ggx3sn41riwbd6ks";
+    url = "mirror://sourceforge/soundtracker/soundtracker-${version}.tar.xz";
+    sha256 = "0nh0dwz8nldc040q6n06vlazhss8ms42r2dffhjcrqj3hbrvfx82";
   };
 
+  postPatch = lib.optionalString stdenv.hostPlatform.isDarwin ''
+    # Darwin binutils don't support D option for ar
+    # ALSA macros are missing on Darwin, causing error
+    substituteInPlace configure.ac \
+      --replace ARFLAGS=crD ARFLAGS=cru \
+      --replace AM_PATH_ALSA '#AM_PATH_ALSA'
+    # Avoid X11-specific workaround code on more than just Windows
+    substituteInPlace app/keys.c \
+      --replace '!defined(_WIN32)' '!defined(_WIN32) && !defined(__APPLE__)'
+    # "The application with bundle ID (null) is running setugid(), which is not allowed."
+    sed -i -e '/seteuid/d' -e '/setegid/d' app/main.c
+  '';
+
+  configureFlags = [
+    "--with-graphics-backend=gdk"
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
+    "--disable-alsa"
+  ];
+
+  enableParallelBuilding = true;
+
   nativeBuildInputs = [
     pkg-config
-    autoconf
+    autoreconfHook
   ];
+
   buildInputs = [
     gtk2
     SDL
@@ -35,8 +57,6 @@ stdenv.mkDerivation rec {
     goocanvas
   ] ++ lib.optional stdenv.isLinux alsa-lib;
 
-  hardeningDisable = [ "format" ];
-
   meta = with lib; {
     description = "A music tracking tool similar in design to the DOS program FastTracker and the Amiga legend ProTracker";
     longDescription = ''
@@ -51,7 +71,5 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ fgaz ];
     platforms = platforms.all;
-    # gdk/gdkx.h not found
-    broken = stdenv.isDarwin;
   };
 }
diff --git a/pkgs/applications/editors/android-studio/default.nix b/pkgs/applications/editors/android-studio/default.nix
index 0ead5ff670c2..356eb4923b77 100644
--- a/pkgs/applications/editors/android-studio/default.nix
+++ b/pkgs/applications/editors/android-studio/default.nix
@@ -14,12 +14,12 @@ let
     sha256Hash = "18zc9xr2xmphj6m6a1ilwripmvqzplp2583afq1pzzz3cv5h8fvk";
   };
   betaVersion = {
-    version = "2020.3.1.20"; # "Android Studio Arctic Fox (2020.3.1) Beta 5"
-    sha256Hash = "0swcsjx29ar4b0c8yhbynshqdn2sv94ga58h2nrc99927vp17g85";
+    version = "2020.3.1.21"; # "Android Studio Arctic Fox (2020.3.1) RC 1"
+    sha256Hash = "04k7c328bl8ixi8bvp2mm33q2hmv40yc9p5dff5cghyycarwpd3f";
   };
   latestVersion = { # canary & dev
-    version = "2021.1.1.3"; # "Android Studio Bumblebee (2021.1.1) Canary 3"
-    sha256Hash = "1n8iahaqhmzvpps9vhv93n3yabb26vl78yndd6gid028r8r90y4x";
+    version = "2021.1.1.4"; # "Android Studio Bumblebee (2021.1.1) Canary 4"
+    sha256Hash = "0s2py7xikzryqrfd9v3in9ia9qv71dd9aad1nzbda6ff61inzizb";
   };
 in {
   # Attributes are named by their corresponding release channels
diff --git a/pkgs/applications/graphics/ImageMagick/6.x.nix b/pkgs/applications/graphics/ImageMagick/6.x.nix
index 4ac4af48aab8..7cb4018f38f4 100644
--- a/pkgs/applications/graphics/ImageMagick/6.x.nix
+++ b/pkgs/applications/graphics/ImageMagick/6.x.nix
@@ -16,13 +16,13 @@ in
 
 stdenv.mkDerivation rec {
   pname = "imagemagick";
-  version = "6.9.12-17";
+  version = "6.9.12-19";
 
   src = fetchFromGitHub {
     owner = "ImageMagick";
     repo = "ImageMagick6";
     rev = version;
-    sha256 = "sha256-yZXvxl9Tbl3JRBmRcfsjbkaxywtD08SuUnJayKfwk9M=";
+    sha256 = "sha256-8KofT9aNd8SXL0YBQ0RUOTccVxQNacvJL1uYPZiSPkY=";
   };
 
   outputs = [ "out" "dev" "doc" ]; # bin/ isn't really big
diff --git a/pkgs/applications/misc/clight/default.nix b/pkgs/applications/misc/clight/default.nix
index 10ddb2902043..0bed99ab725f 100644
--- a/pkgs/applications/misc/clight/default.nix
+++ b/pkgs/applications/misc/clight/default.nix
@@ -6,13 +6,13 @@
 
 stdenv.mkDerivation rec {
   pname = "clight";
-  version = "4.5";
+  version = "4.6";
 
   src = fetchFromGitHub {
     owner = "FedeDP";
     repo = "Clight";
     rev = version;
-    sha256 = "sha256-fvi0JGNNDoxE0iH//HneYwQBBP4mY75AeViLHKQUI30=";
+    sha256 = "sha256-5kFzVHxoiZi8tz42eUprm49JHCeuA4GPwtHvdiS2RJY=";
   };
 
   # dbus-1.pc has datadir=/etc
diff --git a/pkgs/applications/misc/corehunt/default.nix b/pkgs/applications/misc/corehunt/default.nix
new file mode 100644
index 000000000000..ad1fabb25043
--- /dev/null
+++ b/pkgs/applications/misc/corehunt/default.nix
@@ -0,0 +1,31 @@
+{ mkDerivation, lib, fetchFromGitLab, qtbase, libcprime, cmake, ninja }:
+
+mkDerivation rec {
+  pname = "corehunt";
+  version = "4.2.0";
+
+  src = fetchFromGitLab {
+    owner = "cubocore/coreapps";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-KnIqLI8MtLirFycW2YNHAjS7EDfU3dpqb6vVq9Tl6Ow=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    ninja
+  ];
+
+  buildInputs = [
+    qtbase
+    libcprime
+  ];
+
+  meta = with lib; {
+    description = "A file finder utility from the C Suite";
+    homepage = "https://gitlab.com/cubocore/coreapps/corehunt";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ dan4ik605743 ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/misc/fuzzel/default.nix b/pkgs/applications/misc/fuzzel/default.nix
index 1e51f69f1c1f..daf5beb2fa7e 100644
--- a/pkgs/applications/misc/fuzzel/default.nix
+++ b/pkgs/applications/misc/fuzzel/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "fuzzel";
-  version = "1.6.0";
+  version = "1.6.1";
 
   src = fetchzip {
     url = "https://codeberg.org/dnkl/fuzzel/archive/${version}.tar.gz";
-    sha256 = "sha256-iTpUWvQszDtNc1gDqkPbhvgUVNWydpivhnOCHMJVtSw=";
+    sha256 = "sha256-JW5sAlTprSRIdFbmSaUreGtNccERgQMGEW+WCSscYQk=";
   };
 
   nativeBuildInputs = [ pkg-config meson ninja scdoc git ];
diff --git a/pkgs/applications/misc/hubstaff/default.nix b/pkgs/applications/misc/hubstaff/default.nix
index 1bc22b6613d4..b49993ddb9c3 100644
--- a/pkgs/applications/misc/hubstaff/default.nix
+++ b/pkgs/applications/misc/hubstaff/default.nix
@@ -4,9 +4,9 @@
 , curl, writeShellScript, common-updater-scripts }:
 
 let
-  url = "https://hubstaff-production.s3.amazonaws.com/downloads/HubstaffClient/Builds/Release/1.5.19-9e79d1da/Hubstaff-1.5.19-9e79d1da.sh";
-  version = "1.5.19-9e79d1da";
-  sha256 = "1l4sq8cblpl1kclkx5pgy0ldfmqa3n8bvdl5qml0n78r0lpk382j";
+  url = "https://hubstaff-production.s3.amazonaws.com/downloads/HubstaffClient/Builds/Release/1.6.0-02e625d8/Hubstaff-1.6.0-02e625d8.sh";
+  version = "1.6.0-02e625d8";
+  sha256 = "1rd4icgy25j9l1xs6djmpv2nc2ilvjpblddv95xvvz39z82sfr29";
 
   rpath = lib.makeLibraryPath
     [ libX11 zlib libSM libICE libXext freetype libXrender fontconfig libXft
diff --git a/pkgs/applications/misc/markets/default.nix b/pkgs/applications/misc/markets/default.nix
new file mode 100644
index 000000000000..bd9dd7ac9509
--- /dev/null
+++ b/pkgs/applications/misc/markets/default.nix
@@ -0,0 +1,42 @@
+{ lib, stdenv, fetchFromGitHub
+, desktop-file-utils, glib, gtk3, meson, ninja, pkg-config, python3, vala
+, wrapGAppsHook
+, glib-networking, gobject-introspection, json-glib, libgee, libhandy, libsoup
+}:
+
+stdenv.mkDerivation rec {
+  pname = "markets";
+  version = "0.5.2";
+
+  src = fetchFromGitHub {
+    owner = "bitstower";
+    repo = "markets";
+    rev = version;
+    sha256 = "0nk1bs7i6b7r90g5qwd3s2m462vk3kvza0drq7rzb5sdaiz9ccnz";
+  };
+
+  nativeBuildInputs = [
+    desktop-file-utils glib gtk3 meson ninja pkg-config python3 vala
+    wrapGAppsHook
+  ];
+  buildInputs = [
+    glib glib-networking gobject-introspection gtk3 json-glib libgee libhandy
+    libsoup
+  ];
+
+  postPatch = ''
+    patchShebangs build-aux/meson/postinstall.py
+  '';
+
+  postInstall = ''
+    ln -s bitstower-markets $out/bin/markets
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/bitstower/markets";
+    description = "Stock, currency and cryptocurrency tracker";
+    maintainers = with maintainers; [ qyliss ];
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/misc/prusa-slicer/default.nix b/pkgs/applications/misc/prusa-slicer/default.nix
index a6e81375de55..88086ef13631 100644
--- a/pkgs/applications/misc/prusa-slicer/default.nix
+++ b/pkgs/applications/misc/prusa-slicer/default.nix
@@ -4,7 +4,7 @@
 }:
 stdenv.mkDerivation rec {
   pname = "prusa-slicer";
-  version = "2.3.1";
+  version = "2.3.3";
 
   nativeBuildInputs = [
     cmake
@@ -69,7 +69,7 @@ stdenv.mkDerivation rec {
   src = fetchFromGitHub {
     owner = "prusa3d";
     repo = "PrusaSlicer";
-    sha256 = "1lyaxc9nha1cd8p35iam1k1pikp9kfx0fj1l6vb1xb8pgqp02jnn";
+    sha256 = "0w0synqi3iz9aigsgv6x1c6sg123fasbx19h4w3ic1l48r8qmpwm";
     rev = "version_${version}";
   };
 
diff --git a/pkgs/applications/networking/apache-directory-studio/default.nix b/pkgs/applications/networking/apache-directory-studio/default.nix
index 18f9a7990c3e..b37039c94d29 100644
--- a/pkgs/applications/networking/apache-directory-studio/default.nix
+++ b/pkgs/applications/networking/apache-directory-studio/default.nix
@@ -10,8 +10,8 @@ let
     genericName = "Apache Directory Studio";
     categories = "Java;Network";
   };
-  version = "2.0.0-M15";
-  versionWithDate = "2.0.0.v20200411-M15";
+  version = "2.0.0-M17";
+  versionWithDate = "2.0.0.v20210717-M17";
 in
 stdenv.mkDerivation rec {
   pname = "apache-directory-studio";
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
     if stdenv.hostPlatform.system == "x86_64-linux" then
       fetchurl {
         url = "mirror://apache/directory/studio/${versionWithDate}/ApacheDirectoryStudio-${versionWithDate}-linux.gtk.x86_64.tar.gz";
-        sha256 = "1rkyb0qcsl9hk2qcwp5mwaab69q3sn77v5xyn9mbvi5wg9icbc37";
+        sha256 = "19zdspzv4n3mfgb1g45s3wh0vbvn6a9zjd4xi5x2afmdjkzlwxi4";
       }
     else throw "Unsupported system: ${stdenv.hostPlatform.system}";
 
diff --git a/pkgs/applications/networking/browsers/chromium/browser.nix b/pkgs/applications/networking/browsers/chromium/browser.nix
index 705255942c4f..a86a82fcb5f9 100644
--- a/pkgs/applications/networking/browsers/chromium/browser.nix
+++ b/pkgs/applications/networking/browsers/chromium/browser.nix
@@ -16,6 +16,7 @@ mkChromiumDerivation (base: rec {
     cp -v "$buildPath/"*.so "$buildPath/"*.pak "$buildPath/"*.bin "$libExecPath/"
     cp -v "$buildPath/icudtl.dat" "$libExecPath/"
     cp -vLR "$buildPath/locales" "$buildPath/resources" "$libExecPath/"
+    cp -v "$buildPath/crashpad_handler" "$libExecPath/"
     cp -v "$buildPath/chrome" "$libExecPath/$packageName"
 
     # Swiftshader
@@ -62,9 +63,7 @@ mkChromiumDerivation (base: rec {
       -e '/\[Desktop Entry\]/a\' \
       -e 'StartupWMClass=chromium-browser' \
       $out/share/applications/chromium-browser.desktop
-  '' + ''
-    cp -v "$buildPath/crashpad_handler" "$libExecPath/"
-  ''; # TODO: Merge
+  '';
 
   passthru = { inherit sandboxExecutableName; };
 
@@ -88,7 +87,7 @@ mkChromiumDerivation (base: rec {
     license = if enableWideVine then licenses.unfree else licenses.bsd3;
     platforms = platforms.linux;
     mainProgram = "chromium";
-    hydraPlatforms = if (channel == "stable" || channel == "ungoogled-chromium" || channel == "beta")
+    hydraPlatforms = if (channel == "stable" || channel == "ungoogled-chromium")
       then ["aarch64-linux" "x86_64-linux"]
       else [];
     timeout = 172800; # 48 hours (increased from the Hydra default of 10h)
diff --git a/pkgs/applications/networking/browsers/google-chrome/default.nix b/pkgs/applications/networking/browsers/google-chrome/default.nix
index ec03a77d2680..61d304becfd8 100644
--- a/pkgs/applications/networking/browsers/google-chrome/default.nix
+++ b/pkgs/applications/networking/browsers/google-chrome/default.nix
@@ -18,7 +18,7 @@
 , systemd
 
 # Loaded at runtime.
-, libexif
+, libexif, pciutils
 
 # Additional dependencies according to other distros.
 ## Ubuntu
@@ -62,7 +62,7 @@ let
     alsa-lib libXdamage libXtst libXrandr libxshmfence expat cups
     dbus gdk-pixbuf gcc-unwrapped.lib
     systemd
-    libexif
+    libexif pciutils
     liberation_ttf curl util-linux xdg-utils wget
     flac harfbuzz icu libpng opusWithCustomModes snappy speechd
     bzip2 libcap at-spi2-atk at-spi2-core
diff --git a/pkgs/applications/networking/flexget/default.nix b/pkgs/applications/networking/flexget/default.nix
index b898ce337421..3d726eba9808 100644
--- a/pkgs/applications/networking/flexget/default.nix
+++ b/pkgs/applications/networking/flexget/default.nix
@@ -2,12 +2,12 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "flexget";
-  version = "3.1.131";
+  version = "3.1.133";
 
   src = python3Packages.fetchPypi {
     pname = "FlexGet";
     inherit version;
-    sha256 = "sha256-wjMtCrffRhk7NL+Z0PeljuDc3WjVWSMsjWLbqo8qUjU=";
+    sha256 = "1mfmy2nbxx9k6hnhwxpf2062rwspigfhbvkpr161grd5amcs2cr6";
   };
 
   postPatch = ''
diff --git a/pkgs/applications/networking/hydroxide/default.nix b/pkgs/applications/networking/hydroxide/default.nix
index d47560c4e874..a8c6e87ab20b 100644
--- a/pkgs/applications/networking/hydroxide/default.nix
+++ b/pkgs/applications/networking/hydroxide/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "hydroxide";
-  version = "0.2.18";
+  version = "0.2.19";
 
   src = fetchFromGitHub {
     owner = "emersion";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-s8EmoVZUUeaKTaINXvKO5tSdPUS3MlhEucwnmTTC3Wk=";
+    sha256 = "sha256-FKZdsFEUlXk0w11v7Y6sKiu4bOjmau2yAifcTpN0J+U=";
   };
 
   vendorSha256 = "sha256-jkiTpDsJN628YKkFZcng9P05hmNUc3UeFsanLf+QtJY=";
diff --git a/pkgs/applications/networking/instant-messengers/element/element-desktop-package.json b/pkgs/applications/networking/instant-messengers/element/element-desktop-package.json
index 063c64fa377e..e9f1c0d4eb5c 100644
--- a/pkgs/applications/networking/instant-messengers/element/element-desktop-package.json
+++ b/pkgs/applications/networking/instant-messengers/element/element-desktop-package.json
@@ -1,8 +1,8 @@
 {
   "name": "element-desktop",
   "productName": "Element",
-  "main": "src/electron-main.js",
-  "version": "1.7.31",
+  "main": "lib/electron-main.js",
+  "version": "1.7.33",
   "description": "A feature-rich client for Matrix.org",
   "author": "Element",
   "repository": {
@@ -18,18 +18,24 @@
     "mkdirs": "mkdirp packages deploys",
     "fetch": "yarn run mkdirs && node scripts/fetch-package.js",
     "asar-webapp": "asar p webapp webapp.asar",
-    "start": "electron .",
-    "lint": "eslint src/ scripts/ hak/",
+    "start": "yarn run build:ts && yarn run build:res && electron .",
+    "lint": "yarn lint:types && yarn lint:js",
+    "lint:js": "eslint src/ scripts/ hak/",
+    "lint:types": "tsc --noEmit",
     "build:native": "yarn run hak",
-    "build32": "electron-builder --ia32",
-    "build64": "electron-builder --x64",
-    "build": "electron-builder",
+    "build:native:universal": "yarn run hak --target x86_64-apple-darwin fetchandbuild && yarn run hak --target aarch64-apple-darwin fetchandbuild && yarn run hak --target x86_64-apple-darwin --target aarch64-apple-darwin copyandlink",
+    "build:32": "yarn run build:ts && yarn run build:res && electron-builder --ia32",
+    "build:64": "yarn run build:ts && yarn run build:res && electron-builder --x64",
+    "build:universal": "yarn run build:ts && yarn run build:res && electron-builder --universal",
+    "build": "yarn run build:ts && yarn run build:res && electron-builder",
+    "build:ts": "tsc",
+    "build:res": "node scripts/copy-res.js",
     "docker:setup": "docker build -t element-desktop-dockerbuild dockerbuild",
     "docker:build:native": "scripts/in-docker.sh yarn run hak",
     "docker:build": "scripts/in-docker.sh yarn run build",
     "docker:install": "scripts/in-docker.sh yarn install",
     "debrepo": "scripts/mkrepo.sh",
-    "clean": "rimraf webapp.asar dist packages deploys",
+    "clean": "rimraf webapp.asar dist packages deploys lib",
     "hak": "node scripts/hak/index.js"
   },
   "dependencies": {
@@ -42,7 +48,14 @@
     "request": "^2.88.2"
   },
   "devDependencies": {
+    "@types/auto-launch": "^5.0.1",
+    "@types/counterpart": "^0.18.1",
+    "@types/minimist": "^1.2.1",
+    "@typescript-eslint/eslint-plugin": "^4.17.0",
+    "@typescript-eslint/parser": "^4.17.0",
     "asar": "^2.0.1",
+    "chokidar": "^3.5.2",
+    "electron": "12.0.11",
     "electron-builder": "22.11.4",
     "electron-builder-squirrel-windows": "22.11.4",
     "electron-devtools-installer": "^3.1.1",
@@ -60,7 +73,8 @@
     "npm": "^6.14.11",
     "rimraf": "^3.0.2",
     "semver": "^7.3.4",
-    "tar": "^6.1.0"
+    "tar": "^6.1.0",
+    "typescript": "^4.1.3"
   },
   "hakDependencies": {
     "matrix-seshat": "^2.2.3",
@@ -68,14 +82,14 @@
   },
   "build": {
     "appId": "im.riot.app",
-    "electronVersion": "12.0.11",
+    "electronVersion": "12.0.14",
     "files": [
       "package.json",
       {
         "from": ".hak/hakModules",
         "to": "node_modules"
       },
-      "src/**"
+      "lib/**"
     ],
     "extraResources": [
       {
diff --git a/pkgs/applications/networking/instant-messengers/element/element-desktop-yarndeps.nix b/pkgs/applications/networking/instant-messengers/element/element-desktop-yarndeps.nix
index 733cfa3a11a4..59669ebc48bd 100644
--- a/pkgs/applications/networking/instant-messengers/element/element-desktop-yarndeps.nix
+++ b/pkgs/applications/networking/instant-messengers/element/element-desktop-yarndeps.nix
@@ -130,6 +130,14 @@
       };
     }
     {
+      name = "_electron_get___get_1.12.4.tgz";
+      path = fetchurl {
+        name = "_electron_get___get_1.12.4.tgz";
+        url  = "https://registry.yarnpkg.com/@electron/get/-/get-1.12.4.tgz";
+        sha1 = "a5971113fc1bf8fa12a8789dc20152a7359f06ab";
+      };
+    }
+    {
       name = "_electron_universal___universal_1.0.5.tgz";
       path = fetchurl {
         name = "_electron_universal___universal_1.0.5.tgz";
@@ -418,6 +426,30 @@
       };
     }
     {
+      name = "_nodelib_fs.scandir___fs.scandir_2.1.5.tgz";
+      path = fetchurl {
+        name = "_nodelib_fs.scandir___fs.scandir_2.1.5.tgz";
+        url  = "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz";
+        sha1 = "7619c2eb21b25483f6d167548b4cfd5a7488c3d5";
+      };
+    }
+    {
+      name = "_nodelib_fs.stat___fs.stat_2.0.5.tgz";
+      path = fetchurl {
+        name = "_nodelib_fs.stat___fs.stat_2.0.5.tgz";
+        url  = "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz";
+        sha1 = "5bd262af94e9d25bd1e71b05deed44876a222e8b";
+      };
+    }
+    {
+      name = "_nodelib_fs.walk___fs.walk_1.2.7.tgz";
+      path = fetchurl {
+        name = "_nodelib_fs.walk___fs.walk_1.2.7.tgz";
+        url  = "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.7.tgz";
+        sha1 = "94c23db18ee4653e129abd26fb06f870ac9e1ee2";
+      };
+    }
+    {
       name = "_sindresorhus_is___is_0.14.0.tgz";
       path = fetchurl {
         name = "_sindresorhus_is___is_0.14.0.tgz";
@@ -434,6 +466,14 @@
       };
     }
     {
+      name = "_types_auto_launch___auto_launch_5.0.1.tgz";
+      path = fetchurl {
+        name = "_types_auto_launch___auto_launch_5.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/@types/auto-launch/-/auto-launch-5.0.1.tgz";
+        sha1 = "388a047edc0e754d8e8978cbd9ed4672b36be2c4";
+      };
+    }
+    {
       name = "_types_color_name___color_name_1.1.1.tgz";
       path = fetchurl {
         name = "_types_color_name___color_name_1.1.1.tgz";
@@ -442,6 +482,14 @@
       };
     }
     {
+      name = "_types_counterpart___counterpart_0.18.1.tgz";
+      path = fetchurl {
+        name = "_types_counterpart___counterpart_0.18.1.tgz";
+        url  = "https://registry.yarnpkg.com/@types/counterpart/-/counterpart-0.18.1.tgz";
+        sha1 = "b1b784d9e54d9879f0a8cb12f2caedab65430fe8";
+      };
+    }
+    {
       name = "_types_debug___debug_4.1.5.tgz";
       path = fetchurl {
         name = "_types_debug___debug_4.1.5.tgz";
@@ -466,6 +514,14 @@
       };
     }
     {
+      name = "_types_json_schema___json_schema_7.0.7.tgz";
+      path = fetchurl {
+        name = "_types_json_schema___json_schema_7.0.7.tgz";
+        url  = "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz";
+        sha1 = "98a993516c859eb0d5c4c8f098317a9ea68db9ad";
+      };
+    }
+    {
       name = "_types_minimatch___minimatch_3.0.4.tgz";
       path = fetchurl {
         name = "_types_minimatch___minimatch_3.0.4.tgz";
@@ -474,6 +530,14 @@
       };
     }
     {
+      name = "_types_minimist___minimist_1.2.1.tgz";
+      path = fetchurl {
+        name = "_types_minimist___minimist_1.2.1.tgz";
+        url  = "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.1.tgz";
+        sha1 = "283f669ff76d7b8260df8ab7a4262cc83d988256";
+      };
+    }
+    {
       name = "_types_node___node_13.7.1.tgz";
       path = fetchurl {
         name = "_types_node___node_13.7.1.tgz";
@@ -490,6 +554,14 @@
       };
     }
     {
+      name = "_types_node___node_14.17.4.tgz";
+      path = fetchurl {
+        name = "_types_node___node_14.17.4.tgz";
+        url  = "https://registry.yarnpkg.com/@types/node/-/node-14.17.4.tgz";
+        sha1 = "218712242446fc868d0e007af29a4408c7765bc0";
+      };
+    }
+    {
       name = "_types_plist___plist_3.0.2.tgz";
       path = fetchurl {
         name = "_types_plist___plist_3.0.2.tgz";
@@ -522,6 +594,62 @@
       };
     }
     {
+      name = "_typescript_eslint_eslint_plugin___eslint_plugin_4.28.1.tgz";
+      path = fetchurl {
+        name = "_typescript_eslint_eslint_plugin___eslint_plugin_4.28.1.tgz";
+        url  = "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.28.1.tgz";
+        sha1 = "c045e440196ae45464e08e20c38aff5c3a825947";
+      };
+    }
+    {
+      name = "_typescript_eslint_experimental_utils___experimental_utils_4.28.1.tgz";
+      path = fetchurl {
+        name = "_typescript_eslint_experimental_utils___experimental_utils_4.28.1.tgz";
+        url  = "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.28.1.tgz";
+        sha1 = "3869489dcca3c18523c46018b8996e15948dbadc";
+      };
+    }
+    {
+      name = "_typescript_eslint_parser___parser_4.28.1.tgz";
+      path = fetchurl {
+        name = "_typescript_eslint_parser___parser_4.28.1.tgz";
+        url  = "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.28.1.tgz";
+        sha1 = "5181b81658414f47291452c15bf6cd44a32f85bd";
+      };
+    }
+    {
+      name = "_typescript_eslint_scope_manager___scope_manager_4.28.1.tgz";
+      path = fetchurl {
+        name = "_typescript_eslint_scope_manager___scope_manager_4.28.1.tgz";
+        url  = "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.28.1.tgz";
+        sha1 = "fd3c20627cdc12933f6d98b386940d8d0ce8a991";
+      };
+    }
+    {
+      name = "_typescript_eslint_types___types_4.28.1.tgz";
+      path = fetchurl {
+        name = "_typescript_eslint_types___types_4.28.1.tgz";
+        url  = "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.28.1.tgz";
+        sha1 = "d0f2ecbef3684634db357b9bbfc97b94b828f83f";
+      };
+    }
+    {
+      name = "_typescript_eslint_typescript_estree___typescript_estree_4.28.1.tgz";
+      path = fetchurl {
+        name = "_typescript_eslint_typescript_estree___typescript_estree_4.28.1.tgz";
+        url  = "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.1.tgz";
+        sha1 = "af882ae41740d1f268e38b4d0fad21e7e8d86a81";
+      };
+    }
+    {
+      name = "_typescript_eslint_visitor_keys___visitor_keys_4.28.1.tgz";
+      path = fetchurl {
+        name = "_typescript_eslint_visitor_keys___visitor_keys_4.28.1.tgz";
+        url  = "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.1.tgz";
+        sha1 = "162a515ee255f18a6068edc26df793cdc1ec9157";
+      };
+    }
+    {
       name = "JSONStream___JSONStream_1.3.5.tgz";
       path = fetchurl {
         name = "JSONStream___JSONStream_1.3.5.tgz";
@@ -730,6 +858,14 @@
       };
     }
     {
+      name = "anymatch___anymatch_3.1.2.tgz";
+      path = fetchurl {
+        name = "anymatch___anymatch_3.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz";
+        sha1 = "c0557c096af32f106198f4f4e2a383537e378716";
+      };
+    }
+    {
       name = "app_builder_bin___app_builder_bin_3.5.13.tgz";
       path = fetchurl {
         name = "app_builder_bin___app_builder_bin_3.5.13.tgz";
@@ -818,6 +954,14 @@
       };
     }
     {
+      name = "array_union___array_union_2.1.0.tgz";
+      path = fetchurl {
+        name = "array_union___array_union_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz";
+        sha1 = "b798420adbeb1de828d84acd8a2e23d3efe85e8d";
+      };
+    }
+    {
       name = "asap___asap_2.0.6.tgz";
       path = fetchurl {
         name = "asap___asap_2.0.6.tgz";
@@ -986,6 +1130,14 @@
       };
     }
     {
+      name = "binary_extensions___binary_extensions_2.2.0.tgz";
+      path = fetchurl {
+        name = "binary_extensions___binary_extensions_2.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz";
+        sha1 = "75f502eeaf9ffde42fc98829645be4ea76bd9e2d";
+      };
+    }
+    {
       name = "bl___bl_4.0.3.tgz";
       path = fetchurl {
         name = "bl___bl_4.0.3.tgz";
@@ -1018,6 +1170,14 @@
       };
     }
     {
+      name = "boolean___boolean_3.1.2.tgz";
+      path = fetchurl {
+        name = "boolean___boolean_3.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/boolean/-/boolean-3.1.2.tgz";
+        sha1 = "e30f210a26b02458482a8cc353ab06f262a780c2";
+      };
+    }
+    {
       name = "boxen___boxen_1.3.0.tgz";
       path = fetchurl {
         name = "boxen___boxen_1.3.0.tgz";
@@ -1042,6 +1202,14 @@
       };
     }
     {
+      name = "braces___braces_3.0.2.tgz";
+      path = fetchurl {
+        name = "braces___braces_3.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz";
+        sha1 = "3454e1a462ee8d599e236df336cd9ea4f8afe107";
+      };
+    }
+    {
       name = "buffer_crc32___buffer_crc32_0.2.13.tgz";
       path = fetchurl {
         name = "buffer_crc32___buffer_crc32_0.2.13.tgz";
@@ -1234,6 +1402,14 @@
       };
     }
     {
+      name = "chokidar___chokidar_3.5.2.tgz";
+      path = fetchurl {
+        name = "chokidar___chokidar_3.5.2.tgz";
+        url  = "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz";
+        sha1 = "dba3976fcadb016f66fd365021d91600d01c1e75";
+      };
+    }
+    {
       name = "chownr___chownr_1.1.4.tgz";
       path = fetchurl {
         name = "chownr___chownr_1.1.4.tgz";
@@ -1506,6 +1682,14 @@
       };
     }
     {
+      name = "config_chain___config_chain_1.1.13.tgz";
+      path = fetchurl {
+        name = "config_chain___config_chain_1.1.13.tgz";
+        url  = "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz";
+        sha1 = "fad0795aa6a6cdaff9ed1b68e9dff94372c232f4";
+      };
+    }
+    {
       name = "config_chain___config_chain_1.1.12.tgz";
       path = fetchurl {
         name = "config_chain___config_chain_1.1.12.tgz";
@@ -1546,6 +1730,14 @@
       };
     }
     {
+      name = "core_js___core_js_3.15.1.tgz";
+      path = fetchurl {
+        name = "core_js___core_js_3.15.1.tgz";
+        url  = "https://registry.yarnpkg.com/core-js/-/core-js-3.15.1.tgz";
+        sha1 = "6c08ab88abdf56545045ccf5fd81f47f407e7f1a";
+      };
+    }
+    {
       name = "core_util_is___core_util_is_1.0.2.tgz";
       path = fetchurl {
         name = "core_util_is___core_util_is_1.0.2.tgz";
@@ -1674,6 +1866,14 @@
       };
     }
     {
+      name = "debug___debug_2.6.9.tgz";
+      path = fetchurl {
+        name = "debug___debug_2.6.9.tgz";
+        url  = "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz";
+        sha1 = "5d128515df134ff327e90a4c93f4e077a536341f";
+      };
+    }
+    {
       name = "debug___debug_3.2.7.tgz";
       path = fetchurl {
         name = "debug___debug_3.2.7.tgz";
@@ -1826,6 +2026,14 @@
       };
     }
     {
+      name = "detect_node___detect_node_2.1.0.tgz";
+      path = fetchurl {
+        name = "detect_node___detect_node_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz";
+        sha1 = "c9c70775a49c3d03bc2c06d9a73be550f978f8b1";
+      };
+    }
+    {
       name = "dezalgo___dezalgo_1.0.3.tgz";
       path = fetchurl {
         name = "dezalgo___dezalgo_1.0.3.tgz";
@@ -1842,6 +2050,14 @@
       };
     }
     {
+      name = "dir_glob___dir_glob_3.0.1.tgz";
+      path = fetchurl {
+        name = "dir_glob___dir_glob_3.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz";
+        sha1 = "56dbf73d992a4a93ba1584f4534063fd2e41717f";
+      };
+    }
+    {
       name = "dmg_builder___dmg_builder_22.11.4.tgz";
       path = fetchurl {
         name = "dmg_builder___dmg_builder_22.11.4.tgz";
@@ -2010,6 +2226,14 @@
       };
     }
     {
+      name = "electron___electron_12.0.11.tgz";
+      path = fetchurl {
+        name = "electron___electron_12.0.11.tgz";
+        url  = "https://registry.yarnpkg.com/electron/-/electron-12.0.11.tgz";
+        sha1 = "555dc1cf663e320f2f2cbdf89319352b08fc59f2";
+      };
+    }
+    {
       name = "emoji_regex___emoji_regex_7.0.3.tgz";
       path = fetchurl {
         name = "emoji_regex___emoji_regex_7.0.3.tgz";
@@ -2026,6 +2250,14 @@
       };
     }
     {
+      name = "encodeurl___encodeurl_1.0.2.tgz";
+      path = fetchurl {
+        name = "encodeurl___encodeurl_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz";
+        sha1 = "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59";
+      };
+    }
+    {
       name = "encoding___encoding_0.1.13.tgz";
       path = fetchurl {
         name = "encoding___encoding_0.1.13.tgz";
@@ -2098,6 +2330,14 @@
       };
     }
     {
+      name = "es6_error___es6_error_4.1.1.tgz";
+      path = fetchurl {
+        name = "es6_error___es6_error_4.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz";
+        sha1 = "9e3af407459deed47e9a91f9b885a84eb05c561d";
+      };
+    }
+    {
       name = "es6_promise___es6_promise_4.2.8.tgz";
       path = fetchurl {
         name = "es6_promise___es6_promise_4.2.8.tgz";
@@ -2138,6 +2378,14 @@
       };
     }
     {
+      name = "escape_string_regexp___escape_string_regexp_4.0.0.tgz";
+      path = fetchurl {
+        name = "escape_string_regexp___escape_string_regexp_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz";
+        sha1 = "14ba83a5d373e3d311e5afca29cf5bfad965bf34";
+      };
+    }
+    {
       name = "eslint_config_google___eslint_config_google_0.14.0.tgz";
       path = fetchurl {
         name = "eslint_config_google___eslint_config_google_0.14.0.tgz";
@@ -2170,6 +2418,14 @@
       };
     }
     {
+      name = "eslint_utils___eslint_utils_3.0.0.tgz";
+      path = fetchurl {
+        name = "eslint_utils___eslint_utils_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz";
+        sha1 = "8aebaface7345bb33559db0a1f13a1d2d48c3672";
+      };
+    }
+    {
       name = "eslint_visitor_keys___eslint_visitor_keys_1.1.0.tgz";
       path = fetchurl {
         name = "eslint_visitor_keys___eslint_visitor_keys_1.1.0.tgz";
@@ -2306,6 +2562,14 @@
       };
     }
     {
+      name = "extract_zip___extract_zip_1.7.0.tgz";
+      path = fetchurl {
+        name = "extract_zip___extract_zip_1.7.0.tgz";
+        url  = "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.7.0.tgz";
+        sha1 = "556cc3ae9df7f452c493a0cfb51cc30277940927";
+      };
+    }
+    {
       name = "extsprintf___extsprintf_1.3.0.tgz";
       path = fetchurl {
         name = "extsprintf___extsprintf_1.3.0.tgz";
@@ -2338,6 +2602,14 @@
       };
     }
     {
+      name = "fast_glob___fast_glob_3.2.6.tgz";
+      path = fetchurl {
+        name = "fast_glob___fast_glob_3.2.6.tgz";
+        url  = "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.6.tgz";
+        sha1 = "434dd9529845176ea049acc9343e8282765c6e1a";
+      };
+    }
+    {
       name = "fast_json_stable_stringify___fast_json_stable_stringify_2.0.0.tgz";
       path = fetchurl {
         name = "fast_json_stable_stringify___fast_json_stable_stringify_2.0.0.tgz";
@@ -2354,6 +2626,22 @@
       };
     }
     {
+      name = "fastq___fastq_1.11.0.tgz";
+      path = fetchurl {
+        name = "fastq___fastq_1.11.0.tgz";
+        url  = "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz";
+        sha1 = "bb9fb955a07130a918eb63c1f5161cc32a5d0858";
+      };
+    }
+    {
+      name = "fd_slicer___fd_slicer_1.1.0.tgz";
+      path = fetchurl {
+        name = "fd_slicer___fd_slicer_1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz";
+        sha1 = "25c7c89cb1f9077f8891bbe61d8f390eae256f1e";
+      };
+    }
+    {
       name = "figgy_pudding___figgy_pudding_3.5.2.tgz";
       path = fetchurl {
         name = "figgy_pudding___figgy_pudding_3.5.2.tgz";
@@ -2386,6 +2674,14 @@
       };
     }
     {
+      name = "fill_range___fill_range_7.0.1.tgz";
+      path = fetchurl {
+        name = "fill_range___fill_range_7.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz";
+        sha1 = "1919a6a7c75fe38b2c7c77e5198535da9acdda40";
+      };
+    }
+    {
       name = "find_npm_prefix___find_npm_prefix_1.0.2.tgz";
       path = fetchurl {
         name = "find_npm_prefix___find_npm_prefix_1.0.2.tgz";
@@ -2554,6 +2850,14 @@
       };
     }
     {
+      name = "fsevents___fsevents_2.3.2.tgz";
+      path = fetchurl {
+        name = "fsevents___fsevents_2.3.2.tgz";
+        url  = "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz";
+        sha1 = "8a526f78b8fdf4623b709e0b975c52c24c02fd1a";
+      };
+    }
+    {
       name = "function_bind___function_bind_1.1.1.tgz";
       path = fetchurl {
         name = "function_bind___function_bind_1.1.1.tgz";
@@ -2682,6 +2986,14 @@
       };
     }
     {
+      name = "global_agent___global_agent_2.2.0.tgz";
+      path = fetchurl {
+        name = "global_agent___global_agent_2.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/global-agent/-/global-agent-2.2.0.tgz";
+        sha1 = "566331b0646e6bf79429a16877685c4a1fbf76dc";
+      };
+    }
+    {
       name = "global_dirs___global_dirs_0.1.1.tgz";
       path = fetchurl {
         name = "global_dirs___global_dirs_0.1.1.tgz";
@@ -2698,6 +3010,14 @@
       };
     }
     {
+      name = "global_tunnel_ng___global_tunnel_ng_2.7.1.tgz";
+      path = fetchurl {
+        name = "global_tunnel_ng___global_tunnel_ng_2.7.1.tgz";
+        url  = "https://registry.yarnpkg.com/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz";
+        sha1 = "d03b5102dfde3a69914f5ee7d86761ca35d57d8f";
+      };
+    }
+    {
       name = "global___global_4.3.2.tgz";
       path = fetchurl {
         name = "global___global_4.3.2.tgz";
@@ -2722,6 +3042,22 @@
       };
     }
     {
+      name = "globalthis___globalthis_1.0.2.tgz";
+      path = fetchurl {
+        name = "globalthis___globalthis_1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.2.tgz";
+        sha1 = "2a235d34f4d8036219f7e34929b5de9e18166b8b";
+      };
+    }
+    {
+      name = "globby___globby_11.0.4.tgz";
+      path = fetchurl {
+        name = "globby___globby_11.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz";
+        sha1 = "2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5";
+      };
+    }
+    {
       name = "got___got_6.7.1.tgz";
       path = fetchurl {
         name = "got___got_6.7.1.tgz";
@@ -2978,6 +3314,14 @@
       };
     }
     {
+      name = "ignore___ignore_5.1.8.tgz";
+      path = fetchurl {
+        name = "ignore___ignore_5.1.8.tgz";
+        url  = "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz";
+        sha1 = "f150a8b50a34289b33e22f5889abd4d8016f0e57";
+      };
+    }
+    {
       name = "image_q___image_q_1.1.1.tgz";
       path = fetchurl {
         name = "image_q___image_q_1.1.1.tgz";
@@ -3114,6 +3458,14 @@
       };
     }
     {
+      name = "is_binary_path___is_binary_path_2.1.0.tgz";
+      path = fetchurl {
+        name = "is_binary_path___is_binary_path_2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz";
+        sha1 = "ea1f7f3b80f064236e83470f86c09c254fb45b09";
+      };
+    }
+    {
       name = "is_callable___is_callable_1.1.4.tgz";
       path = fetchurl {
         name = "is_callable___is_callable_1.1.4.tgz";
@@ -3242,6 +3594,14 @@
       };
     }
     {
+      name = "is_number___is_number_7.0.0.tgz";
+      path = fetchurl {
+        name = "is_number___is_number_7.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz";
+        sha1 = "7535345b896734d5f80c4d06c50955527a14f12b";
+      };
+    }
+    {
       name = "is_obj___is_obj_1.0.1.tgz";
       path = fetchurl {
         name = "is_obj___is_obj_1.0.1.tgz";
@@ -3930,6 +4290,14 @@
       };
     }
     {
+      name = "matcher___matcher_3.0.0.tgz";
+      path = fetchurl {
+        name = "matcher___matcher_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/matcher/-/matcher-3.0.0.tgz";
+        sha1 = "bd9060f4c5b70aa8041ccc6f80368760994f30ca";
+      };
+    }
+    {
       name = "63f9119bc0bc304e83d4e8e22364caa7850e7671";
       path = fetchurl {
         name = "63f9119bc0bc304e83d4e8e22364caa7850e7671";
@@ -3954,6 +4322,22 @@
       };
     }
     {
+      name = "merge2___merge2_1.4.1.tgz";
+      path = fetchurl {
+        name = "merge2___merge2_1.4.1.tgz";
+        url  = "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz";
+        sha1 = "4368892f885e907455a6fd7dc55c0c9d404990ae";
+      };
+    }
+    {
+      name = "micromatch___micromatch_4.0.4.tgz";
+      path = fetchurl {
+        name = "micromatch___micromatch_4.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz";
+        sha1 = "896d519dfe9db25fce94ceb7a500919bf881ebf9";
+      };
+    }
+    {
       name = "mime_db___mime_db_1.42.0.tgz";
       path = fetchurl {
         name = "mime_db___mime_db_1.42.0.tgz";
@@ -4282,6 +4666,14 @@
       };
     }
     {
+      name = "npm_conf___npm_conf_1.1.3.tgz";
+      path = fetchurl {
+        name = "npm_conf___npm_conf_1.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz";
+        sha1 = "256cc47bd0e218c259c4e9550bf413bc2192aff9";
+      };
+    }
+    {
       name = "npm_install_checks___npm_install_checks_3.0.2.tgz";
       path = fetchurl {
         name = "npm_install_checks___npm_install_checks_3.0.2.tgz";
@@ -4730,6 +5122,22 @@
       };
     }
     {
+      name = "path_type___path_type_4.0.0.tgz";
+      path = fetchurl {
+        name = "path_type___path_type_4.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz";
+        sha1 = "84ed01c0a7ba380afe09d90a8c180dcd9d03043b";
+      };
+    }
+    {
+      name = "pend___pend_1.2.0.tgz";
+      path = fetchurl {
+        name = "pend___pend_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz";
+        sha1 = "7a57eb550a6783f9115331fcf4663d5c8e007a50";
+      };
+    }
+    {
       name = "performance_now___performance_now_2.1.0.tgz";
       path = fetchurl {
         name = "performance_now___performance_now_2.1.0.tgz";
@@ -4746,6 +5154,14 @@
       };
     }
     {
+      name = "picomatch___picomatch_2.3.0.tgz";
+      path = fetchurl {
+        name = "picomatch___picomatch_2.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz";
+        sha1 = "f1f061de8f6a4bf022892e2d128234fb98302972";
+      };
+    }
+    {
       name = "pify___pify_2.3.0.tgz";
       path = fetchurl {
         name = "pify___pify_2.3.0.tgz";
@@ -5010,6 +5426,14 @@
       };
     }
     {
+      name = "queue_microtask___queue_microtask_1.2.3.tgz";
+      path = fetchurl {
+        name = "queue_microtask___queue_microtask_1.2.3.tgz";
+        url  = "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz";
+        sha1 = "4929228bbc724dfac43e0efb058caf7b6cfb6243";
+      };
+    }
+    {
       name = "qw___qw_1.0.1.tgz";
       path = fetchurl {
         name = "qw___qw_1.0.1.tgz";
@@ -5130,6 +5554,14 @@
       };
     }
     {
+      name = "readdirp___readdirp_3.6.0.tgz";
+      path = fetchurl {
+        name = "readdirp___readdirp_3.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz";
+        sha1 = "74a370bd857116e245b29cc97340cd431a02a6c7";
+      };
+    }
+    {
       name = "regenerator_runtime___regenerator_runtime_0.13.7.tgz";
       path = fetchurl {
         name = "regenerator_runtime___regenerator_runtime_0.13.7.tgz";
@@ -5266,6 +5698,14 @@
       };
     }
     {
+      name = "reusify___reusify_1.0.4.tgz";
+      path = fetchurl {
+        name = "reusify___reusify_1.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz";
+        sha1 = "90da382b1e126efc02146e90845a88db12925d76";
+      };
+    }
+    {
       name = "rimraf___rimraf_2.7.1.tgz";
       path = fetchurl {
         name = "rimraf___rimraf_2.7.1.tgz";
@@ -5282,6 +5722,22 @@
       };
     }
     {
+      name = "roarr___roarr_2.15.4.tgz";
+      path = fetchurl {
+        name = "roarr___roarr_2.15.4.tgz";
+        url  = "https://registry.yarnpkg.com/roarr/-/roarr-2.15.4.tgz";
+        sha1 = "f5fe795b7b838ccfe35dc608e0282b9eba2e7afd";
+      };
+    }
+    {
+      name = "run_parallel___run_parallel_1.2.0.tgz";
+      path = fetchurl {
+        name = "run_parallel___run_parallel_1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz";
+        sha1 = "66d1368da7bdf921eb9d95bd1a9229e7f21a43ee";
+      };
+    }
+    {
       name = "run_queue___run_queue_1.0.3.tgz";
       path = fetchurl {
         name = "run_queue___run_queue_1.0.3.tgz";
@@ -5330,6 +5786,14 @@
       };
     }
     {
+      name = "semver_compare___semver_compare_1.0.0.tgz";
+      path = fetchurl {
+        name = "semver_compare___semver_compare_1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz";
+        sha1 = "0dee216a1c941ab37e9efb1788f6afc5ff5537fc";
+      };
+    }
+    {
       name = "semver_diff___semver_diff_2.1.0.tgz";
       path = fetchurl {
         name = "semver_diff___semver_diff_2.1.0.tgz";
@@ -5386,6 +5850,14 @@
       };
     }
     {
+      name = "serialize_error___serialize_error_7.0.1.tgz";
+      path = fetchurl {
+        name = "serialize_error___serialize_error_7.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/serialize-error/-/serialize-error-7.0.1.tgz";
+        sha1 = "f1360b0447f61ffb483ec4157c737fab7d778e18";
+      };
+    }
+    {
       name = "set_blocking___set_blocking_2.0.0.tgz";
       path = fetchurl {
         name = "set_blocking___set_blocking_2.0.0.tgz";
@@ -5450,6 +5922,14 @@
       };
     }
     {
+      name = "slash___slash_3.0.0.tgz";
+      path = fetchurl {
+        name = "slash___slash_3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz";
+        sha1 = "6539be870c165adbd5240220dbe361f1bc4d4634";
+      };
+    }
+    {
       name = "slice_ansi___slice_ansi_1.0.0.tgz";
       path = fetchurl {
         name = "slice_ansi___slice_ansi_1.0.0.tgz";
@@ -5794,6 +6274,14 @@
       };
     }
     {
+      name = "sumchecker___sumchecker_3.0.1.tgz";
+      path = fetchurl {
+        name = "sumchecker___sumchecker_3.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/sumchecker/-/sumchecker-3.0.1.tgz";
+        sha1 = "6377e996795abb0b6d348e9b3e1dfb24345a8e42";
+      };
+    }
+    {
       name = "supports_color___supports_color_5.5.0.tgz";
       path = fetchurl {
         name = "supports_color___supports_color_5.5.0.tgz";
@@ -5962,6 +6450,14 @@
       };
     }
     {
+      name = "to_regex_range___to_regex_range_5.0.1.tgz";
+      path = fetchurl {
+        name = "to_regex_range___to_regex_range_5.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz";
+        sha1 = "1648c44aae7c8d988a326018ed72f5b4dd0392e4";
+      };
+    }
+    {
       name = "tough_cookie___tough_cookie_2.4.3.tgz";
       path = fetchurl {
         name = "tough_cookie___tough_cookie_2.4.3.tgz";
@@ -5986,6 +6482,22 @@
       };
     }
     {
+      name = "tslib___tslib_1.14.1.tgz";
+      path = fetchurl {
+        name = "tslib___tslib_1.14.1.tgz";
+        url  = "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz";
+        sha1 = "cf2d38bdc34a134bcaf1091c41f6619e2f672d00";
+      };
+    }
+    {
+      name = "tsutils___tsutils_3.21.0.tgz";
+      path = fetchurl {
+        name = "tsutils___tsutils_3.21.0.tgz";
+        url  = "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz";
+        sha1 = "b48717d394cea6c1e096983eed58e9d61715b623";
+      };
+    }
+    {
       name = "tunnel_agent___tunnel_agent_0.6.0.tgz";
       path = fetchurl {
         name = "tunnel_agent___tunnel_agent_0.6.0.tgz";
@@ -5994,6 +6506,14 @@
       };
     }
     {
+      name = "tunnel___tunnel_0.0.6.tgz";
+      path = fetchurl {
+        name = "tunnel___tunnel_0.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz";
+        sha1 = "72f1314b34a5b192db012324df2cc587ca47f92c";
+      };
+    }
+    {
       name = "tweetnacl___tweetnacl_0.14.5.tgz";
       path = fetchurl {
         name = "tweetnacl___tweetnacl_0.14.5.tgz";
@@ -6010,6 +6530,14 @@
       };
     }
     {
+      name = "type_fest___type_fest_0.13.1.tgz";
+      path = fetchurl {
+        name = "type_fest___type_fest_0.13.1.tgz";
+        url  = "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz";
+        sha1 = "0172cb5bce80b0bd542ea348db50c7e21834d934";
+      };
+    }
+    {
       name = "type_fest___type_fest_0.16.0.tgz";
       path = fetchurl {
         name = "type_fest___type_fest_0.16.0.tgz";
@@ -6050,6 +6578,14 @@
       };
     }
     {
+      name = "typescript___typescript_4.3.4.tgz";
+      path = fetchurl {
+        name = "typescript___typescript_4.3.4.tgz";
+        url  = "https://registry.yarnpkg.com/typescript/-/typescript-4.3.4.tgz";
+        sha1 = "3f85b986945bcf31071decdd96cf8bfa65f9dcbc";
+      };
+    }
+    {
       name = "uid_number___uid_number_0.0.6.tgz";
       path = fetchurl {
         name = "uid_number___uid_number_0.0.6.tgz";
@@ -6610,6 +7146,14 @@
       };
     }
     {
+      name = "yauzl___yauzl_2.10.0.tgz";
+      path = fetchurl {
+        name = "yauzl___yauzl_2.10.0.tgz";
+        url  = "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz";
+        sha1 = "c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9";
+      };
+    }
+    {
       name = "zip_stream___zip_stream_4.1.0.tgz";
       path = fetchurl {
         name = "zip_stream___zip_stream_4.1.0.tgz";
diff --git a/pkgs/applications/networking/instant-messengers/element/element-desktop.nix b/pkgs/applications/networking/instant-messengers/element/element-desktop.nix
index f8f4d31d6ec1..a45ead37efb2 100644
--- a/pkgs/applications/networking/instant-messengers/element/element-desktop.nix
+++ b/pkgs/applications/networking/instant-messengers/element/element-desktop.nix
@@ -8,12 +8,12 @@
 
 let
   executableName = "element-desktop";
-  version = "1.7.31";
+  version = "1.7.33";
   src = fetchFromGitHub {
     owner = "vector-im";
     repo = "element-desktop";
     rev = "v${version}";
-    sha256 = "14vyqzf69g4n3i7qjm1pgq2kwym6cira0jwvirzdrwxkfsl0dsq6";
+    sha256 = "sha256-1JmuKyJt6Q80lLXXrFw+h6/0JzWcr0qMIU9mTO+K56I=";
   };
 in mkYarnPackage rec {
   name = "element-desktop-${version}";
@@ -24,6 +24,17 @@ in mkYarnPackage rec {
 
   nativeBuildInputs = [ makeWrapper ];
 
+  buildPhase = ''
+    runHook preBuild
+    export HOME=$(mktemp -d)
+    pushd deps/element-desktop/
+    npx tsc
+    yarn run i18n
+    node ./scripts/copy-res.js
+    popd
+    runHook postBuild
+  '';
+
   installPhase = ''
     # resources
     mkdir -p "$out/share/element"
@@ -32,6 +43,7 @@ in mkYarnPackage rec {
     cp -r './deps/element-desktop/res/img' "$out/share/element"
     rm "$out/share/element/electron/node_modules"
     cp -r './node_modules' "$out/share/element/electron"
+    cp $out/share/element/electron/lib/i18n/strings/en_EN.json $out/share/element/electron/lib/i18n/strings/en-us.json
 
     # icons
     for icon in $out/share/element/electron/build/icons/*.png; do
diff --git a/pkgs/applications/networking/instant-messengers/element/element-web.nix b/pkgs/applications/networking/instant-messengers/element/element-web.nix
index d9aec35b04b1..0a0363860d17 100644
--- a/pkgs/applications/networking/instant-messengers/element/element-web.nix
+++ b/pkgs/applications/networking/instant-messengers/element/element-web.nix
@@ -12,11 +12,11 @@ let
 
 in stdenv.mkDerivation rec {
   pname = "element-web";
-  version = "1.7.31";
+  version = "1.7.33";
 
   src = fetchurl {
     url = "https://github.com/vector-im/element-web/releases/download/v${version}/element-v${version}.tar.gz";
-    sha256 = "1p0vg5bkri7qiqv5yic56hjjbb5zvhvyzsm5zi7fx3yb7zdxmr3f";
+    sha256 = "sha256-MhbXvl+FUCL6D6y2Oa5Kf5ie9fU85wEO/tQe881CD8I=";
   };
 
   installPhase = ''
diff --git a/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix b/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix
index 31aec0a46786..1eb4b222f206 100644
--- a/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix
+++ b/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix
@@ -1,11 +1,13 @@
 { mkDerivation, lib, fetchFromGitHub, callPackage, fetchpatch
 , pkg-config, cmake, ninja, python3, wrapGAppsHook, wrapQtAppsHook
+, extra-cmake-modules
 , qtbase, qtimageformats, gtk3, libsForQt5, lz4, xxHash
 , ffmpeg, openalSoft, minizip, libopus, alsa-lib, libpulseaudio, range-v3
 , tl-expected, hunspell, glibmm, webkitgtk, jemalloc
-, rnnoise, extra-cmake-modules
+, rnnoise
 # Transitive dependencies:
-, pcre, xorg, util-linuxMinimal, libselinux, libsepol, epoxy
+, util-linuxMinimal
+, pcre, libpthreadstubs, libXdmcp, libselinux, libsepol, epoxy
 , at-spi2-core, libXtst, libthai, libdatrie
 , xdg-utils, libsysprof-capture, libpsl, brotli
 }:
@@ -72,7 +74,7 @@ in mkDerivation rec {
     tg_owt
     # Transitive dependencies:
     util-linuxMinimal # Required for libmount thus not nativeBuildInputs.
-    pcre xorg.libpthreadstubs xorg.libXdmcp libselinux libsepol epoxy
+    pcre libpthreadstubs libXdmcp libselinux libsepol epoxy
     at-spi2-core libXtst libthai libdatrie libsysprof-capture libpsl brotli
   ];
 
@@ -85,20 +87,6 @@ in mkDerivation rec {
     "-DDESKTOP_APP_USE_PACKAGED_FONTS=OFF"
   ];
 
-  # Note: The following packages could be packaged system-wide, but it's
-  # probably best to use the bundled ones from tdesktop (Arch does this too):
-  # rlottie:
-  # - Sources (problem: there are no stable releases!):
-  #   - desktop-app (tdesktop): https://github.com/desktop-app/rlottie
-  #   - upstream: https://github.com/Samsung/rlottie
-  # libtgvoip:
-  # - Sources  (problem: the stable releases might be too old!):
-  #   - tdesktop: https://github.com/telegramdesktop/libtgvoip
-  #   - upstream: https://github.com/grishka/libtgvoip
-  # Both of these packages are included in this PR (kotatogram-desktop):
-  # https://github.com/NixOS/nixpkgs/pull/75210
-  # TODO: Package mapbox-variant
-
   postFixup = ''
     # This is necessary to run Telegram in a pure environment.
     # We also use gappsWrapperArgs from wrapGAppsHook.
diff --git a/pkgs/applications/networking/instant-messengers/telegram/tdesktop/tg_owt.nix b/pkgs/applications/networking/instant-messengers/telegram/tdesktop/tg_owt.nix
index 363650dae5a7..e553c95990e5 100644
--- a/pkgs/applications/networking/instant-messengers/telegram/tdesktop/tg_owt.nix
+++ b/pkgs/applications/networking/instant-messengers/telegram/tdesktop/tg_owt.nix
@@ -1,9 +1,9 @@
-{ lib, stdenv, fetchFromGitHub, fetchpatch
+{ lib, stdenv, fetchFromGitHub
 , pkg-config, cmake, ninja, yasm
 , libjpeg, openssl, libopus, ffmpeg, alsa-lib, libpulseaudio, protobuf
 , openh264, usrsctp, libevent, libvpx
+, libX11, libXtst, libXcomposite, libXdamage, libXext, libXrender, libXrandr, libXi
 , glib, abseil-cpp, pcre, util-linuxMinimal, libselinux, libsepol, pipewire
-, xorg, libX11, libXtst, libXcomposite, libXdamage, libXext, libXrender, libXrandr, libXi
 }:
 
 stdenv.mkDerivation {
diff --git a/pkgs/applications/networking/instant-messengers/zoom-us/default.nix b/pkgs/applications/networking/instant-messengers/zoom-us/default.nix
index 78cfa89e6d45..087754775bd4 100644
--- a/pkgs/applications/networking/instant-messengers/zoom-us/default.nix
+++ b/pkgs/applications/networking/instant-messengers/zoom-us/default.nix
@@ -29,11 +29,11 @@
 assert pulseaudioSupport -> libpulseaudio != null;
 
 let
-  version = "5.7.26030.0627";
+  version = "5.7.28852.0718";
   srcs = {
     x86_64-linux = fetchurl {
       url = "https://zoom.us/client/${version}/zoom_x86_64.pkg.tar.xz";
-      sha256 = "1nooaafH+ajRtdrknXmFPclC4fJMpRTo+gBsaPHYfT0=";
+      sha256 = "NoB9qxsuGsiwsZ3Y+F3WZpszujPBX/nehtFFI+KPV5E=";
     };
   };
 
diff --git a/pkgs/applications/networking/juju/default.nix b/pkgs/applications/networking/juju/default.nix
index a91255f54e34..ced8b2fd415b 100644
--- a/pkgs/applications/networking/juju/default.nix
+++ b/pkgs/applications/networking/juju/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "juju";
-  version = "2.9.5";
+  version = "2.9.7";
 
   src = fetchFromGitHub {
     owner = "juju";
     repo = "juju";
     rev = "juju-${version}";
-    sha256 = "sha256-oBwusx63a8AWNHqlNtG0S/SiIRM55fbc/CGN2MFJDYA=";
+    sha256 = "sha256-jGrN0tsLO8gmkyZ1zNYzZd29mCQgLP7lSF0LkOygbyc=";
   };
 
-  vendorSha256 = "sha256-VHUDqDsfY0c6r5sJbMX7JcXTIBXze9cd5qHqZWZAC2g=";
+  vendorSha256 = "sha256-0JNoOSNxJrJkph8OGzgQ7sdslnGC36e3Ap0uMpqriX0=";
 
   # Disable tests because it attempts to use a mongodb instance
   doCheck = false;
diff --git a/pkgs/applications/radio/fldigi/default.nix b/pkgs/applications/radio/fldigi/default.nix
index 36f020ed2726..a71e4f4bbd41 100644
--- a/pkgs/applications/radio/fldigi/default.nix
+++ b/pkgs/applications/radio/fldigi/default.nix
@@ -1,23 +1,49 @@
-{ lib, stdenv, fetchurl, hamlib, fltk14, libjpeg, libpng, portaudio, libsndfile,
-  libsamplerate, libpulseaudio, libXinerama, gettext, pkg-config, alsa-lib }:
+{ lib
+, stdenv
+, fetchurl
+, hamlib
+, fltk14
+, libjpeg
+, libpng
+, portaudio
+, libsndfile
+, libsamplerate
+, libpulseaudio
+, libXinerama
+, gettext
+, pkg-config
+, alsa-lib
+}:
 
 stdenv.mkDerivation rec {
-  version = "4.1.18";
   pname = "fldigi";
+  version = "4.1.18";
 
   src = fetchurl {
     url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.gz";
     sha256 = "sha256-PH/YSrOoS6RSWyUenVYSDa7mJqODFoSpdP2tR2+QJw0=";
   };
 
-  buildInputs = [ libXinerama gettext hamlib fltk14 libjpeg libpng portaudio
-                  libsndfile libsamplerate libpulseaudio pkg-config alsa-lib ];
+  buildInputs = [
+    libXinerama
+    gettext
+    hamlib
+    fltk14
+    libjpeg
+    libpng
+    portaudio
+    libsndfile
+    libsamplerate
+    libpulseaudio
+    pkg-config
+    alsa-lib
+  ];
 
-  meta = {
+  meta = with lib; {
     description = "Digital modem program";
     homepage = "https://sourceforge.net/projects/fldigi/";
-    license = lib.licenses.gpl3Plus;
-    maintainers = with lib.maintainers; [ relrod ftrvxmtrx ];
-    platforms = lib.platforms.linux;
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ relrod ftrvxmtrx ];
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/applications/radio/multimon-ng/default.nix b/pkgs/applications/radio/multimon-ng/default.nix
index 67d7dbea1740..1bfbf00e46fe 100644
--- a/pkgs/applications/radio/multimon-ng/default.nix
+++ b/pkgs/applications/radio/multimon-ng/default.nix
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
     sha256 = "01716cfhxfzsab9zjply9giaa4nn4b7rm3p3vizrwi7n253yiwm2";
   };
 
-  buildInputs = [ libpulseaudio libX11 ];
+  buildInputs = lib.optionals stdenv.isLinux [ libpulseaudio libX11 ];
 
   nativeBuildInputs = [ cmake ];
 
@@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
     '';
     homepage = "https://github.com/EliasOenal/multimon-ng";
     license = licenses.gpl2Only;
-    platforms = platforms.linux;
+    platforms = platforms.unix;
     maintainers = with maintainers; [ markuskowa ];
   };
 }
diff --git a/pkgs/applications/science/logic/logisim/default.nix b/pkgs/applications/science/logic/logisim/default.nix
index 9b3f42dd4ba8..f94f08e43ab2 100644
--- a/pkgs/applications/science/logic/logisim/default.nix
+++ b/pkgs/applications/science/logic/logisim/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, jre, makeWrapper }:
+{ lib, stdenv, fetchurl, jre, makeWrapper, copyDesktopItems, makeDesktopItem, unzip }:
 
 stdenv.mkDerivation rec {
   pname = "logisim";
@@ -11,17 +11,39 @@ stdenv.mkDerivation rec {
 
   dontUnpack = true;
 
-  nativeBuildInputs = [ makeWrapper ];
+  nativeBuildInputs = [ makeWrapper copyDesktopItems unzip ];
+
+  desktopItems = [
+    (makeDesktopItem {
+      name = pname;
+      desktopName = "Logisim";
+      exec = "logisim";
+      icon = "logisim";
+      comment = meta.description;
+      categories = "Education;";
+    })
+  ];
 
   installPhase = ''
+    runHook preInstall
+
     mkdir -p $out/bin
     makeWrapper ${jre}/bin/java $out/bin/logisim --add-flags "-jar $src"
+
+    # Create icons
+    unzip $src "resources/logisim/img/*"
+    for size in 16 20 24 48 64 128
+    do
+      install -D "./resources/logisim/img/logisim-icon-$size.png" "$out/share/icons/hicolor/''${size}x''${size}/apps/logisim.png"
+    done
+
+    runHook postInstall
   '';
 
   meta = with lib; {
-    homepage = "http://ozark.hendrix.edu/~burch/logisim";
+    homepage = "http://www.cburch.com/logisim/";
     description = "Educational tool for designing and simulating digital logic circuits";
-    maintainers = with maintainers; [ ];
+    maintainers = with maintainers; [ angustrau ];
     license = licenses.gpl2Plus;
     platforms = platforms.unix;
   };
diff --git a/pkgs/applications/science/misc/openmodelica/combined/default.nix b/pkgs/applications/science/misc/openmodelica/combined/default.nix
new file mode 100644
index 000000000000..459a325111e2
--- /dev/null
+++ b/pkgs/applications/science/misc/openmodelica/combined/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, lib, openmodelica, symlinkJoin, gnumake, blas, lapack, makeWrapper }:
+symlinkJoin {
+  name = "openmodelica-combined";
+  paths = with openmodelica; [
+    omcompiler
+    omsimulator
+    omplot
+    omparser
+    omedit
+    omlibrary
+    omshell
+  ];
+
+  buildInputs = [ gnumake makeWrapper ];
+
+  postBuild = ''
+    wrapProgram $out/bin/OMEdit \
+      --prefix PATH : ${lib.makeBinPath [ gnumake stdenv.cc ]} \
+      --prefix LIBRARY_PATH : "${lib.makeLibraryPath [ blas lapack ]}" \
+      --set-default OPENMODELICALIBRARY "${openmodelica.omlibrary}/lib/omlibrary"
+  '';
+
+  meta = with lib; {
+    description = "An open-source Modelica-based modeling and simulation environment intended for industrial and academic usage";
+    homepage = "https://openmodelica.org";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ smironov ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/science/misc/openmodelica/default.nix b/pkgs/applications/science/misc/openmodelica/default.nix
index cab0fa5ff5c6..10fccfdf6da8 100644
--- a/pkgs/applications/science/misc/openmodelica/default.nix
+++ b/pkgs/applications/science/misc/openmodelica/default.nix
@@ -1,53 +1,17 @@
-{lib, stdenv, fetchgit, fetchsvn, autoconf, automake, libtool, gfortran, clang, cmake, gnumake,
-hwloc, jre, lapack, blas, hdf5, expat, ncurses, readline, qt4, webkitgtk, which,
-lp_solve, omniorb, sqlite, libatomic_ops, pkg-config, file, gettext, flex, bison,
-doxygen, boost, openscenegraph, gnome2, xorg, git, bash, gtk2, makeWrapper }:
-
-let
-
-  fakegit = import ./fakegit.nix { inherit lib stdenv fetchgit fetchsvn bash; };
-
-in
-
-stdenv.mkDerivation {
-  name = "openmodelica";
-
-  src = fetchgit (import ./src-main.nix);
-
-  buildInputs = [autoconf cmake automake libtool gfortran clang gnumake
-    hwloc jre lapack blas hdf5 expat ncurses readline qt4 webkitgtk which
-    lp_solve omniorb sqlite libatomic_ops pkg-config file gettext flex bison
-    doxygen boost openscenegraph gnome2.gtkglext xorg.libXmu
-    git gtk2 makeWrapper];
-
-  hardeningDisable = [ "format" ];
-
-  patchPhase = ''
-    cp -fv ${fakegit}/bin/checkout-git.sh libraries/checkout-git.sh
-    cp -fv ${fakegit}/bin/checkout-svn.sh libraries/checkout-svn.sh
-  '';
-
-  configurePhase = ''
-    export NIX_LDFLAGS="$NIX_LDFLAGS -L${gfortran.cc.lib}/lib"
-
-    autoconf
-    ./configure CC=${clang}/bin/clang CXX=${clang}/bin/clang++ --prefix=$out
-  '';
-
-  postFixup = ''
-    for e in $(cd $out/bin && ls); do
-      wrapProgram $out/bin/$e \
-        --prefix PATH : "${gnumake}/bin" \
-        --prefix LIBRARY_PATH : "${lib.makeLibraryPath [ lapack blas ]}"
-    done
-  '';
-
-  meta = with lib; {
-    description = "An open-source Modelica-based modeling and simulation environment";
-    homepage    = "https://openmodelica.org";
-    license     = licenses.gpl3;
-    maintainers = with maintainers; [ smironov ];
-    platforms   = platforms.linux;
-    broken      = true;
-  };
-}
+{ lib, newScope, libsForQt5, clangStdenv }:
+lib.makeScope newScope (self:
+  let
+    callPackage = self.newScope { stdenv = clangStdenv; };
+    callQtPackage = self.newScope (libsForQt5 // { stdenv = clangStdenv; });
+  in
+  {
+    mkOpenModelicaDerivation = callPackage ./mkderivation { };
+    omcompiler = callPackage ./omcompiler { };
+    omplot = callQtPackage ./omplot { };
+    omsimulator = callPackage ./omsimulator { };
+    omparser = callPackage ./omparser { };
+    omedit = callQtPackage ./omedit { };
+    omlibrary = callPackage ./omlibrary { };
+    omshell = callQtPackage ./omshell { };
+    combined = callPackage ./combined { };
+  })
diff --git a/pkgs/applications/science/misc/openmodelica/fakegit.nix b/pkgs/applications/science/misc/openmodelica/fakegit.nix
deleted file mode 100644
index 47cca7c74917..000000000000
--- a/pkgs/applications/science/misc/openmodelica/fakegit.nix
+++ /dev/null
@@ -1,81 +0,0 @@
-{ lib, stdenv, fetchgit, fetchsvn, bash }:
-
-let
-  mkscript = path : text : ''
-    mkdir -pv `dirname ${path}`
-    cat > ${path} <<"EOF"
-    #!${bash}/bin/bash
-    ME=`basename ${path}`
-    ${text}
-    EOF
-    sed -i "s@%out@$out@g" ${path}
-    chmod +x ${path}
-  '';
-
-  hashname = r: let
-    rpl = lib.replaceChars [":" "/"] ["_" "_"];
-  in
-    (rpl r.url) + "-" + (rpl r.rev);
-
-in
-
-stdenv.mkDerivation {
-  name = "fakegit";
-
-  buildCommand = ''
-    mkdir -pv $out/repos
-    ${lib.concatMapStrings
-       (r : ''
-        cp -r ${fetchgit r} $out/repos/${hashname r}
-       ''
-       ) (import ./src-libs-git.nix)
-    }
-
-    ${mkscript "$out/bin/checkout-git.sh" ''
-      if test "$#" -ne 4; then
-        echo "Usage: $0 DESTINATION URL GITBRANCH HASH"
-        exit 1
-      fi
-      DEST=$1
-      URL=`echo $2 | tr :/ __`
-      GITBRANCH=$3
-      REVISION=$4
-
-      L=`echo $REVISION | wc -c`
-      if expr $L '<' 10 >/dev/null; then
-        REVISION=refs/tags/$REVISION
-      fi
-
-      REVISION=`echo $REVISION | tr :/ __`
-
-      rm -rf $DEST
-      mkdir -pv $DEST
-      echo "FAKEGIT cp -r %out/repos/$URL-$REVISION $DEST" >&2
-      cp -r %out/repos/$URL-$REVISION/* $DEST
-      chmod u+w -R $DEST
-    ''}
-
-    ${lib.concatMapStrings
-       (r : ''
-        cp -r ${fetchsvn r} $out/repos/${hashname r}
-       ''
-       ) (import ./src-libs-svn.nix)
-    }
-
-    ${mkscript "$out/bin/checkout-svn.sh" ''
-      if test "$#" -ne 3; then
-        echo "Usage: $0 DESTINATION URL REVISION"
-        exit 1
-      fi
-      DEST=$1
-      URL=`echo $2 | tr :/ __`
-      REVISION=`echo $4 | tr :/ __`
-
-      rm -rf $DEST
-      mkdir -pv $DEST
-      echo "FAKE COPY %out/repos/$URL-$REVISION $DEST"
-      cp -r %out/repos/$URL-$REVISION/* $DEST
-      chmod u+w -R $DEST
-    ''}
-  '';
-}
diff --git a/pkgs/applications/science/misc/openmodelica/mkderivation/default.nix b/pkgs/applications/science/misc/openmodelica/mkderivation/default.nix
new file mode 100644
index 000000000000..94029fead48e
--- /dev/null
+++ b/pkgs/applications/science/misc/openmodelica/mkderivation/default.nix
@@ -0,0 +1,101 @@
+# mkOpenModelicaDerivation is an mkDerivation function for packages
+# from OpenModelica suite.
+
+{ stdenv, lib, fetchgit, autoconf, automake, libtool, cmake, autoreconfHook, symlinkJoin }:
+pkg:
+let
+  inherit (builtins) hasAttr getAttr length elemAt;
+  inherit (lib) attrByPath concatStringsSep;
+
+
+  # A few helpers functions:
+
+  # getAttrDef is just a getAttr with default fallback
+  getAttrDef = attr: default: x: attrByPath [ attr ] default x;
+
+  # getAttr-like helper for optional append to string:
+  # "Hello" + appendByAttr "a" " " {a = "world";} = "Hello world"
+  # "Hello" + appendByAttr "a" " " {} = "Hello"
+  appendByAttr = attr: sep: x: if hasAttr attr x then sep + (getAttr attr x) else "";
+
+  # Are there any OM dependencies at all?
+  ifDeps = length pkg.omdeps != 0;
+
+  # Dependencies of current OpenModelica-target joined in one file tree.
+  # Return the dep itself in case it is a single one.
+  joinedDeps =
+    if length pkg.omdeps == 1
+    then elemAt pkg.omdeps 0
+    else
+      symlinkJoin {
+        name = pkg.pname + "-omhome";
+        paths = pkg.omdeps;
+      };
+
+  # Should we run ./configure for the target pkg?
+  omautoconf = getAttrDef "omautoconf" false pkg;
+
+  # Name of the make target
+  omtarget = getAttrDef "omtarget" pkg.pname pkg;
+
+  # Directory of target sources
+  omdir = getAttrDef "omdir" pkg.pname pkg;
+
+  # Simple to to m4 configuration scripts
+  postPatch = lib.optionalString ifDeps ''
+    sed -i ''$(find -name omhome.m4) -e 's|if test ! -z "$USINGPRESETBUILDDIR"|if test ! -z "$USINGPRESETBUILDDIR" -a -z "$OMHOME"|'
+  '' +
+  appendByAttr "postPatch" "\n" pkg;
+
+  # Update shebangs in the scripts before running configuration.
+  preAutoreconf = "patchShebangs --build common" +
+    appendByAttr "preAutoreconf" "\n" pkg;
+
+  # Tell OpenModelica where built dependencies are located.
+  configureFlags = lib.optional ifDeps "--with-openmodelicahome=${joinedDeps}" ++
+    getAttrDef "configureFlags" [ ] pkg;
+
+  # Our own configurePhase that accounts for omautoconf
+  configurePhase = ''
+    runHook preConfigure
+    export configureFlags="''${configureFlags} --with-ombuilddir=$PWD/build --prefix=$prefix"
+    ./configure --no-recursion $configureFlags
+    ${lib.optionalString omautoconf "(cd ${omdir}; ./configure $configureFlags)"}
+    runHook postConfigure
+  '';
+
+  # Targets that we want to build ourselves:
+  deptargets = lib.forEach pkg.omdeps (dep: dep.omtarget);
+
+  # ... so we ask openmodelica makefile to skip those targets.
+  preBuild = ''
+    for target in ${concatStringsSep " " deptargets}; do
+      touch ''${target}.skip;
+    done
+  '' +
+  appendByAttr "preBuild" "\n" pkg;
+
+  makeFlags = "${omtarget}" +
+    appendByAttr "makeFlags" " " pkg;
+
+  installFlags = "-i " +
+    appendByAttr "installFlags" " " pkg;
+
+
+in
+stdenv.mkDerivation (pkg // {
+  inherit omtarget postPatch preAutoreconf configureFlags configurePhase preBuild makeFlags installFlags;
+
+  src = fetchgit (import ./src-main.nix);
+  version = "1.17.0";
+
+  nativeBuildInputs = getAttrDef "nativeBuildInputs" [ ] pkg
+    ++ [ autoconf automake libtool cmake autoreconfHook ];
+
+  buildInputs = getAttrDef "buildInputs" [ ] pkg
+    ++ lib.optional ifDeps joinedDeps;
+
+  dontUseCmakeConfigure = true;
+
+  hardeningDisable = [ "format" ];
+})
diff --git a/pkgs/applications/science/misc/openmodelica/mkderivation/src-main.nix b/pkgs/applications/science/misc/openmodelica/mkderivation/src-main.nix
new file mode 100644
index 000000000000..c31b23d2f948
--- /dev/null
+++ b/pkgs/applications/science/misc/openmodelica/mkderivation/src-main.nix
@@ -0,0 +1,7 @@
+{
+  url = "https://github.com/OpenModelica/OpenModelica/";
+  rev = "08fd3f9144235f209a4ed7602bfadb32b1823628";
+  sha256 = "0clgqk9ilnr43iyl5sdzwfzqpnw9amfy1npdgkpgm1wfnsvz6xrw";
+  fetchSubmodules = true;
+}
+# Update with: nix run -f ./nixpkgs/default.nix nix-prefetch-git -c nix-prefetch-git 'https://github.com/OpenModelica/OpenModelica/' 'v1.17.0' --fetch-submodules
diff --git a/pkgs/applications/science/misc/openmodelica/omcompiler/default.nix b/pkgs/applications/science/misc/openmodelica/omcompiler/default.nix
new file mode 100644
index 000000000000..b49c0f0f60ca
--- /dev/null
+++ b/pkgs/applications/science/misc/openmodelica/omcompiler/default.nix
@@ -0,0 +1,63 @@
+{ stdenv
+, lib
+, gfortran
+, flex
+, bison
+, jre8
+, blas
+, lapack
+, curl
+, readline
+, expat
+, pkg-config
+, buildPackages
+, targetPackages
+, libffi
+, binutils
+, mkOpenModelicaDerivation
+}:
+let
+  isCross = stdenv.buildPlatform != stdenv.hostPlatform;
+  nativeOMCompiler = buildPackages.openmodelica.omcompiler;
+in
+mkOpenModelicaDerivation ({
+  pname = "omcompiler";
+  omtarget = "omc";
+  omdir = "OMCompiler";
+  omdeps = [ ];
+  omautoconf = true;
+
+  nativeBuildInputs = [
+    jre8
+    gfortran
+    flex
+    bison
+    pkg-config
+  ] ++ lib.optional isCross nativeOMCompiler;
+
+  buildInputs = [ targetPackages.stdenv.cc.cc blas lapack curl readline expat libffi binutils ];
+
+  postPatch = ''
+    sed -i -e '/^\s*AR=ar$/ s/ar/${stdenv.cc.targetPrefix}ar/
+               /^\s*ar / s/ar /${stdenv.cc.targetPrefix}ar /
+               /^\s*ranlib/ s/ranlib /${stdenv.cc.targetPrefix}ranlib /' \
+        $(find ./OMCompiler -name 'Makefile*')
+  '';
+
+  preFixup = ''
+    for entry in $(find $out -name libipopt.so); do
+      patchelf --shrink-rpath --allowed-rpath-prefixes /nix/store $entry
+      patchelf --set-rpath '$ORIGIN':"$(patchelf --print-rpath $entry)" $entry
+    done
+  '';
+
+  meta = with lib; {
+    description = "Modelica compiler from OpenModelica suite";
+    homepage = "https://openmodelica.org";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ smironov ];
+    platforms = platforms.linux;
+  };
+} // lib.optionalAttrs isCross {
+  configureFlags = [ "--with-omc=${nativeOMCompiler}/bin/omc" ];
+})
diff --git a/pkgs/applications/science/misc/openmodelica/omedit/default.nix b/pkgs/applications/science/misc/openmodelica/omedit/default.nix
new file mode 100644
index 000000000000..b0cc530ba37b
--- /dev/null
+++ b/pkgs/applications/science/misc/openmodelica/omedit/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, jre8
+, qmake
+, qtbase
+, qttools
+, qtwebkit
+, qtxmlpatterns
+, binutils
+, wrapQtAppsHook
+, openmodelica
+, mkOpenModelicaDerivation
+}:
+with openmodelica;
+mkOpenModelicaDerivation rec {
+  pname = "omedit";
+  omdir = "OMEdit";
+  omdeps = [ omcompiler omplot omparser omsimulator ];
+  omautoconf = true;
+
+  nativeBuildInputs = [ jre8 qmake qtbase qttools wrapQtAppsHook ];
+
+  buildInputs = [ qtwebkit qtxmlpatterns binutils ];
+
+  postPatch = ''
+    sed -i ''$(find -name qmake.m4) -e '/^\s*LRELEASE=/ s|LRELEASE=.*$|LRELEASE=${lib.getDev qttools}/bin/lrelease|'
+  '';
+
+  dontUseQmakeConfigure = true;
+  QMAKESPEC = "linux-clang";
+
+  meta = with lib; {
+    description = "A Modelica connection editor for OpenModelica";
+    homepage = "https://openmodelica.org";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ smironov ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/science/misc/openmodelica/omlibrary/default.nix b/pkgs/applications/science/misc/openmodelica/omlibrary/default.nix
new file mode 100644
index 000000000000..006daf18812f
--- /dev/null
+++ b/pkgs/applications/science/misc/openmodelica/omlibrary/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, stdenv
+, fetchgit
+, bash
+, pkg-config
+, jre8
+, libuuid
+, openmodelica
+, mkOpenModelicaDerivation
+}:
+let
+  fakegit = import ./fakegit.nix { inherit lib stdenv fetchgit bash; };
+in
+mkOpenModelicaDerivation {
+  pname = "omlibrary";
+  omdir = "libraries";
+  omtarget = "omlibrary-all";
+  omdeps = [ openmodelica.omcompiler ];
+
+  postPatch = ''
+    patchShebangs --build libraries
+    cp -fv ${fakegit}/bin/checkout-git.sh libraries/checkout-git.sh
+
+    # The EMOTH library is broken in OpenModelica 1.17.0
+    # Let's remove it from targets.
+    sed -i -e '/^OTHER_LIBS=/ s/EMOTH //' libraries/Makefile.libs
+  '';
+
+  meta = with lib; {
+    description = "A collection of Modelica libraries to use with OpenModelica,
+including Modelica Standard Library";
+    homepage = "https://openmodelica.org";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ smironov ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/science/misc/openmodelica/omlibrary/fakegit.nix b/pkgs/applications/science/misc/openmodelica/omlibrary/fakegit.nix
new file mode 100644
index 000000000000..fdbc79aae599
--- /dev/null
+++ b/pkgs/applications/science/misc/openmodelica/omlibrary/fakegit.nix
@@ -0,0 +1,49 @@
+{ lib, stdenv, fetchgit, bash }:
+let
+  mkscript = path: text: ''
+    mkdir -pv `dirname ${path}`
+    cat > ${path} <<"EOF"
+    #!${bash}/bin/bash
+    ME=$(basename ${path})
+    ${text}
+    EOF
+    sed -i "s@%out@$out@g" ${path}
+    chmod +x ${path}
+  '';
+
+  hashname = r:
+    let
+      rpl = lib.replaceChars [ ":" "/" ] [ "_" "_" ];
+    in
+    (rpl r.url) + "-" + (rpl r.rev);
+
+in
+stdenv.mkDerivation {
+  name = "fakegit";
+
+  buildCommand = ''
+    mkdir -pv $out/repos
+    ${lib.concatMapStrings
+      (r: "cp -r ${fetchgit r} $out/repos/${hashname r}\n")
+      (import ./src-libs.nix)}
+
+    ${mkscript "$out/bin/checkout-git.sh" ''
+      if test "$#" -ne 4; then
+        echo "Usage: $0 DESTINATION URL GITBRANCH HASH"
+        exit 1
+      fi
+      DEST=$1
+      URL=`echo $2 | tr :/ __`
+      GITBRANCH=$3
+      REVISION=$4
+
+      REVISION=`echo $REVISION | tr :/ __`
+
+      rm -rf $DEST
+      mkdir -pv $DEST
+      echo "FAKEGIT cp -r %out/repos/$URL-$REVISION $DEST" >&2
+      cp -r %out/repos/$URL-$REVISION/* $DEST
+      chmod u+w -R $DEST
+    ''}
+  '';
+}
diff --git a/pkgs/applications/science/misc/openmodelica/omlibrary/src-libs.nix b/pkgs/applications/science/misc/openmodelica/omlibrary/src-libs.nix
new file mode 100644
index 000000000000..c91addf78040
--- /dev/null
+++ b/pkgs/applications/science/misc/openmodelica/omlibrary/src-libs.nix
@@ -0,0 +1,83 @@
+[
+  { url = "https://github.com/modelica-3rdparty/AdvancedNoise.git"; rev = "5ce57acd279dadd0d25b76a6b02d3f9e9d061246"; sha256 = "07jjbj0y6bak269md3xniqb5lgc33m92ar5qixqxj5yxdjaahfs2"; fetchSubmodules = true; }
+  { url = "https://github.com/RWTH-EBC/AixLib.git"; rev = "b00e01d911e2e54e148f24e36ee387a8b457d89c"; sha256 = "1sljddxkx208nill0975sz9b1xd701n97aia4wxihr140dgs4dgb"; fetchSubmodules = true; }
+  { url = "https://github.com/RWTH-EBC/AixLib.git"; rev = "v0.4.0"; sha256 = "0dw34mjq29n55xh51g1c9a9d0d8gbpn16gj309dfxn4v2hbnfvzx"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/AlgebraTestSuite.git"; rev = "b937e1a7f447138c59abec9b2092f84f16bf02e8"; sha256 = "0406inasx61dk7vcnziiyhxkna7g61a5hn0znnbxj817hz6q11zn"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/ApproxSpline.git"; rev = "28420f5c1a88c9cd069defbd8c05e4a78a090675"; sha256 = "07gpyi2brj5zpvrlsnflqjnhbrgxvpqbdshp8lp4lh9mnj5jv95d"; fetchSubmodules = true; }
+  { url = "https://github.com/OpenModelica/BioChem.git"; rev = "v1.0.2"; sha256 = "037bvj2lqrslg8k5r0rjgdzccslj9bj25b55k4g440vabm5p05qm"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/BondGraph.git"; rev = "20c23e60d12989bd4668ccac47659d82d39d29cc"; sha256 = "0yrkk708v4bvf423xb4zgpmnaj8qhq5primdg758ayddgli23wa9"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/BrineProp.git"; rev = "c2f564ae284726a2df6252a8561856691681572b"; sha256 = "01c2i2rlry7b4a6f2skkvzphcrfg5a2waxv4i7zgx5q275fg06i1"; fetchSubmodules = true; }
+  { url = "https://github.com/EDF-TREE/BuildSysPro.git"; rev = "v3.3.0"; sha256 = "1cvcany3q9p1xndarxa2d8mmqxdnqk22476q8l61nayz5qy25x61"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/BuildingControlLib.git"; rev = "v1.0.0"; sha256 = "0ckdxway0m755mbrl94k4458sijzgknlzsrf7xs5bjymxchm8r2m"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/BuildingSystems.git"; rev = "1e07bb475b921a4eedc6155c5310d1f9f3ef7550"; sha256 = "1xg831vqh6zw88cxxcb3sjgz44l7ygsgxddl05fp6xvz5sjpfcna"; fetchSubmodules = true; }
+  { url = "https://github.com/lbl-srg/modelica-buildings.git"; rev = "v6.0.0"; sha256 = "0rnnk1clji0myzr7adggki6knbl6v8381vwnqgiz8mkxbmzdwm4f"; fetchSubmodules = true; }
+  { url = "https://github.com/lbl-srg/modelica-buildings.git"; rev = "v7.0.0"; sha256 = "04n04pp4zvyg8n8h7h79c3wyk7lmn940mh7qzs0lv76g1ybypnlz"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/Chemical.git"; rev = "5645573fced862430b7b598b4d7ec1a39c7aa0fa"; sha256 = "1kh7kpmjfz55pb8553srlnrh8l00nw21xf5mjzh7nx9b1rndnmyg"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/DeployStructLib.git"; rev = "v1.0"; sha256 = "1k4zw9lnd0javw4zigxc15l58yf7xdz36b7808g65qxy89w6ksr2"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/DisHeatLib.git"; rev = "b11f53379c122870a52f2da9b1705d2c911cd21d"; sha256 = "1vm96a4z0b40r0nisxrrzyvan4yphjdkx4ad655phva2636xb5rr"; fetchSubmodules = true; }
+  { url = "https://github.com/AHaumer/DriveControl.git"; rev = "b7233fd97a92867bb4ec2c3647c7f7e888398644"; sha256 = "0nyp1n8wrkjzfypsmjjzac0g9p4wbc1cxxr040fj20bqdg9l3h1b"; fetchSubmodules = true; }
+  # A broken one. The revision is lost.
+  # { url = "https://github.com/AHaumer/EMOTH.git"; rev = "fa890c8c2781f0c0b2f8efe955ed8a27875dd9ac"; sha256 = ""; fetchSubmodules = true; }
+  { url = "https://github.com/christiankral/ElectroMechanicalDrives.git"; rev = "v2.2.0"; sha256 = "0012phmn1y9fgpph45lwbjk0yhm5czidf2z6khm8lddvk93wf31b"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/ExternData.git"; rev = "v2.5.0"; sha256 = "19dsyq1mk5vl54fqaffzqafm5w94l011cy7pg16c7i933dbqnkki"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica/ExternalMedia.git"; rev = "159518edd538b64e28cd70983a9cc47730323cc4"; sha256 = "0qjd5fk65bln3s1jhs0cqcv54c22m6x2akbmxj09y4x0lkd1kgqn"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/ExternalMemoryLib.git"; rev = "6488d5815bda23c665123baa916789e283e16d2c"; sha256 = "06y1i5w690b3b9x23nzls8y67fl7yd7bn4xl5j0dmyi4qx33aqda"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/FMITest.git"; rev = "a67a276083f4010b249802ad8fc70dc30c09adfd"; sha256 = "0mg8jlvlwql2nsjiy7c3rdibv73bkfk149ac0450d5pc0hfn9mln"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/FailureModes.git"; rev = "v1.2.1"; sha256 = "1z8bwrld1rkydgssab5gnrd76frrbky8qxi1lvlaf2jidj6bzn1l"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/FaultTriggering.git"; rev = "v0.6.6"; sha256 = "0a08yyrbg4a49s0bgqgyds6pidx9xr47yspvl9bdak1mq34qibip"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/FeedDriveLibrary.git"; rev = "1.0.1"; sha256 = "15fi9dj6zgl0fr90cwxqjbpphj0dwrrmk74hf25j6zd85w2ycqdz"; fetchSubmodules = true; }
+  { url = "https://github.com/DLR-SR/FractionalOrder.git"; rev = "99918820e346c362c3ad52d782c8215e5deeac4c"; sha256 = "1pycss6fqh86frfdbdfffjhaz09fz1558f9azgckhf8drx6ry1qs"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/Greenhouses-Library.git"; rev = "89ae0e8097eb0751abce2013d304fa5f9c09b885"; sha256 = "1q77xj6aysqsn3d7kjmcq7dihbw18iqm35ifzdi75xgf3cgwla4f"; fetchSubmodules = true; }
+  { url = "https://github.com/christiankral/HanserModelica.git"; rev = "v1.1.0"; sha256 = "0zwkrhg2y42m18p4z51izrickiv1vikgz0z7fpjia4dbppckav8i"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/HelmholtzMedia.git"; rev = "3b4a4bca94d388744b2d045344ea2f9b0b4d405b"; sha256 = "17fzpan89075vb5vbhw5ylgxcdsmj2vjnmmka7cgzh06izb69nvh"; fetchSubmodules = true; }
+  { url = "https://github.com/ibpsa/modelica-ibpsa.git"; rev = "v3.0.0"; sha256 = "0xwgfndlw76zfmiiqadl85l9na9igsqlmfcawx526sdw2lhhgics"; fetchSubmodules = true; }
+  { url = "https://github.com/open-ideas/IDEAS.git"; rev = "v2.1.0"; sha256 = "0xp0zg6ib5536d5vl361lsn5w5faqdf6djhcmfxns629wjima8rn"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/IndustrialControlSystems.git"; rev = "v1.1.0"; sha256 = "1nvgx94iy1pws0768anrl7ssjlzslb5mbp21j7xvf6wpqfmj0npc"; fetchSubmodules = true; }
+  { url = "https://github.com/christiankral/KeyWordIO.git"; rev = "v0.9.0"; sha256 = "10kvj6zn2r6m3403ja8nkkxbfcchkz0pfk3g70ibr76zivxb5nim"; fetchSubmodules = true; }
+  { url = "https://github.com/FishSim/LibRAS.git"; rev = "fca9de50a484a2213f3ca1b39e275c237c471688"; sha256 = "0w1c87sifq8klq0f2l70qxjrlvahyxy1cx9rln80rni4d427yc1k"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/LinearMPC.git"; rev = "v1.0"; sha256 = "1crj60i5f33l9pgip0xbv6ankcga7px0644cj7c2wnzn1fjmn2k8"; fetchSubmodules = true; }
+  { url = "https://github.com/looms-polimi/MEV.git"; rev = "v1.0.1"; sha256 = "1a7ih9lc01wzaq8a8aznggpi4aqnczyzq49q5hc4fqvmfwl7l0j3"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/ModPowerSystems.git"; rev = "df3afce27d5e935c4111f392275744a655abe216"; sha256 = "1b1fikm92lv6gj82imka3hxbjwv04i4h33y69yhcxdpqa6z6hm4z"; fetchSubmodules = true; }
+  { url = "https://github.com/OpenModelica/OpenModelica-ModelicaStandardLibrary.git"; rev = "614a148f61c1ab5d6788d8c11197803132ec7c2f"; sha256 = "0fg0pbahybx3srv5npk8pw49k23kaw2ns6c00f15iy93mvfrmfsk"; fetchSubmodules = true; }
+  { url = "https://github.com/OpenModelica/OpenModelica-ModelicaStandardLibrary.git"; rev = "34fe8cf3c7127ae09ca5f41e26b48fb6044e1e34"; sha256 = "0yz82k9dsp9d1jxqgxcm27fw1jz718km43qfginmgg0m9kfh2336"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/Modelica-Arduino.git"; rev = "v0.1.0"; sha256 = "1n34dksqhrn1synv2mp2ifk4dxyhp15f5v1jb1b3dbw9n19951qb"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/Modelica-GNU_ScientificLibrary.git"; rev = "9235ab28bdd7f0fe3e7abba48af53d73332858ec"; sha256 = "168g9gg12lfa863ifs41bnx6yd0yyjnal6986dgpm51dj5arw6id"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/Modelica-MVEM.git"; rev = "v1.0.1"; sha256 = "1p68691dnl06lgwm4bl9g036brn4vl7m5x3gq4rxc291339frixk"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/ModelicaADS.git"; rev = "v1.0.1"; sha256 = "0fhxrl07d7v3wa79d30psm1gxydc0p7s2akfirdx6dai0633skp9"; fetchSubmodules = true; }
+  { url = "https://github.com/xogeny/ModelicaBook.git"; rev = "v0.6.0"; sha256 = "0yqbll6p738yvpi1x11cjngpz2glda07mljrkjlm23p7l53x63dc"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-compliance/compliance.git"; rev = "8a91e75d8a26acc4de30fc0e5d5e9db83c970bd6"; sha256 = "1cym1wlgsvfrryq8zqzzrgs4wam1l7pc20q07hk3d615nhq21lg6"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/ModelicaDFR.git"; rev = "37a441934d05330cf3d13e9ec551954d27eca84c"; sha256 = "13rpcs8cl9x15vi655150zmhmg1iaxpzvxrl3rqif46zpl5dhlj2"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica/Modelica_DeviceDrivers.git"; rev = "v1.8.2"; sha256 = "16c0p9zn0qrraz59ivinibmikdd251plm1vqngznzhksjwvz6bja"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica/Modelica_LinearSystems2.git"; rev = "v2.3.5"; sha256 = "0rzicynqgayydxqynnairxk7ybg4alv1xnfz8cgkrpicl2g9bacg"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/Modelica_Requirements.git"; rev = "a427b5cb7997e9036c577d219e6b8a5d0c28389a"; sha256 = "1ihx46kifnfi9kw1g8nmd9sarl766whbzdk6a44alczsya4gg45k"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica/Modelica_Synchronous.git"; rev = "c8350276bfd945086962cf4150ba941b9c57ed13"; sha256 = "12ad7fpjy50ky3lvl65r9d5xvlzvw5yqdnbp4rsgl3qw7s3wrmja"; fetchSubmodules = true; }
+  { url = "https://github.com/jwindahlModelon/MultiPhaseMixtureMedia.git"; rev = "0bda0c58af6384f8e0edf7aa7520afb369af3e38"; sha256 = "11bqm69504bh4h05dxlwdmjfxwls06mr49cz47kl8jmrygkfi4i2"; fetchSubmodules = true; }
+  { url = "https://github.com/OpenIPSL/OpenIPSL.git"; rev = "v1.5.0"; sha256 = "09xrcz0rdxdy220ki5zyl7920y0a4lg24p0aibna4ad15vszhhwj"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/Optimisers.git"; rev = "e33c69edaad6dad8029167b0ca00533964a6fe37"; sha256 = "0hcxsrr2n4fzaxdjvgvqayz38kpfk86cclvg5pzcfmjc5bznb8bs"; fetchSubmodules = true; }
+  { url = "https://github.com/lochel/PNlib.git"; rev = "ab9b6b8527c0c78140365e7b105ae469d4954a64"; sha256 = "0y7bfbnvzv9bnz4v8wvmy42dji3cqpy5b2fmd2jj0rhlzs1infzh"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/PVSystems.git"; rev = "v0.6.2"; sha256 = "0vcgvdaqfbn46lpzk0kvsif3d55wf8yzhkbdpf5zv04kv7zw25w9"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/PhotoVoltaics.git"; rev = "v1.6.0"; sha256 = "0zqx77z217iln3vfxn2v3c2jl0jz5kgcd96ylvimjnwr30mxr09n"; fetchSubmodules = true; }
+  { url = "https://github.com/MarekMatejak/Physiolibrary.git"; rev = "v2.3.1"; sha256 = "0nxfw63m278gaff18zz29n2s1vk4kwdbv2qvbjmcq86fl1i5b3bg"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/Physiomodel.git"; rev = "v1.0.0"; sha256 = "1sdhv5qgjqv3zdq57pkkrh04ainwv9n5zqd8mb9a3ybjmwdjf6f9"; fetchSubmodules = true; }
+  { url = "https://github.com/dzimmer/PlanarMechanics.git"; rev = "55224a9e76de8aa7f708236bd4d7dee624ecba50"; sha256 = "0hf7vi44adss86x5ahk5if7bdjgw773d8mb3d8ianq12g8azycyd"; fetchSubmodules = true; }
+  { url = "https://github.com/PowerGrids/PowerGrids.git"; rev = "v1.0.0"; sha256 = "06bx8mqvmizhfwg99djdfgh2mblc4wzmg0zq4ilrp586jwfninmz"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica/PowerSystems.git"; rev = "v1.0.0"; sha256 = "1xwhwich7gi6vl33zl2r78xdjklchgkjcnvww6390j20l1wjznkn"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica/PowerSystems.git"; rev = "7369976265a9d7b62097340aba5e463c62cc5061"; sha256 = "1f0h148v2g057l6ixf646d8ymsx1jzqn14xlram8h62la2k6nmvw"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/RealTimeCoordinationLibrary.git"; rev = "v1.0.2"; sha256 = "0ch4la04hm059ii5wzph9gsbvqhnfqrvvpqi57qn27bm10c4la0m"; fetchSubmodules = true; }
+  { url = "https://github.com/casella/ScalableTestSuite.git"; rev = "v1.11.5"; sha256 = "0bhj1q9b8d29nrbr253zszy1w1yvyizvyr3law1pqjj6mhbqmg4i"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/Servomechanisms.git"; rev = "3bf82ba5d3f31b4a0ae05f99ae690037358e153e"; sha256 = "1swka7d58wkg5pqv59lqgfi7gv6rg5vra4j6r76pn9czx9ddal8w"; fetchSubmodules = true; }
+  { url = "https://github.com/SolarTherm/SolarTherm.git"; rev = "d80fc335d1fa5d1628c45c2e73204bcb8a614b21"; sha256 = "18d8cqlh0ic2yfcxzkz0ar9z19486z9x4sc7c9mpggxib28p39aa"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/Soltermica.git"; rev = "9f7224bd89335f95dffe1ccdaa094df5a3279fdf"; sha256 = "1bif3cnwjas6x7b8ahwkm7dbrqrfdqwwa26zmdc6zrpfncl3kqd0"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/SystemDynamics.git"; rev = "2f6bd9382c5aac2aff9148cd9113a418767734b6"; sha256 = "0ii2mj6ngwjir3gzyad8wsj86pvd6wzal91nz2y7gzwj1djchb3x"; fetchSubmodules = true; }
+  { url = "https://github.com/thom-marx/ThermalSeparation.git"; rev = "ffa0495ba829ecab105be4bfb3b7652625ec9c03"; sha256 = "1czm97bcrpp2jv0a0kd31a929wqlrlzdhdxvyy4w499dn20jzv1l"; fetchSubmodules = true; }
+  { url = "https://github.com/casella/ThermoPower.git"; rev = "82d21eba0d330005899dd50a6a0ceb7d09c4caeb"; sha256 = "0n83b40hjisy7lpnbz692947d2q3hw5hk4rak7fg0w5dbm4i719p"; fetchSubmodules = true; }
+  { url = "https://openmodelica.org/git/ThermoSysPro.git"; rev = "db81ae1b5a6a85f6c6c7693244cafa6087e18ff5"; sha256 = "12fsf0xxxc1ja6vmm9ff85f8j5sg1lb7w4g57s2w3fkf4d3a7d0c"; fetchSubmodules = true; }
+  { url = "https://openmodelica.org/git/ThermoSysPro.git"; rev = "5cef9acb4dedf8af6f4638a4448f08a544ebd30b"; sha256 = "0ihnz1s4rs42yis9zym9nw29ia2lqz2yx2wblc50p6f221w7q78s"; fetchSubmodules = true; }
+  { url = "https://github.com/lenaRB/VVDRlib.git"; rev = "eae4981674642eddffc7f2aa3690320fcaddee0e"; sha256 = "0qxxk2xlas5mqyc1h8ndic208qj1sm5mr5y8664kv3py7i8jdqi4"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica/VehicleInterfaces.git"; rev = "v1.2.5"; sha256 = "044k17cpc88wprrvw03p6crm6dy6x9a6xj5104d5nln71lqz5sdq"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/WasteWater.git"; rev = "v2.1.0"; sha256 = "1dxr4m9j7b5266daj4klbrhvnkqr73sximdw9bk9v5qf0s28li99"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/WindPowerPlants.git"; rev = "v1.2.0"; sha256 = "1lyrqwsb6sm1wc7vlj72zk5cpjhhzh27fviiqayddqy2b903xish"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/ipsl.git"; rev = "v1.1.1"; sha256 = "1w2iah8c5d8n01wmxydjk0rrcxh88g8yjy2zmv403azcccq7byzp"; fetchSubmodules = true; }
+  { url = "https://github.com/modelica-3rdparty/netCDF-DataReader.git"; rev = "v2.5.0"; sha256 = "1pd5xf5bgz010lryv8bj6lvlfqn9p184csiffwj8icx7rycnlcqb"; fetchSubmodules = true; }
+  { url = "https://github.com/joewa/open-bldc-modelica.git"; rev = "58a83b5b36f267613de4676c95163489b1ddc2e7"; sha256 = "0wf6dn64d2psv9b3xg5227vzpk109r3dqzi4m2wwhrilaxs3v004"; fetchSubmodules = true; }
+]
diff --git a/pkgs/applications/science/misc/openmodelica/omlibrary/update-src-libs.sh b/pkgs/applications/science/misc/openmodelica/omlibrary/update-src-libs.sh
new file mode 100755
index 000000000000..b8f2e95923b5
--- /dev/null
+++ b/pkgs/applications/science/misc/openmodelica/omlibrary/update-src-libs.sh
@@ -0,0 +1,39 @@
+#!/usr/bin/env nix-shell
+#! nix-shell -i bash -p bash
+
+CWD=$PWD
+
+chko() {
+  (
+    T=`mktemp -d`
+    trap "rm -rf $T" EXIT INT PIPE
+    cd $T
+    cat >check.nix <<EOF
+with import <nixpkgs> {};
+fetchgit `cat $CWD/../mkderivation/src-main.nix`
+EOF
+    nix-build check.nix
+    cat result/libraries/Makefile.libs
+  )
+}
+
+getsha256() {
+  URL=$(echo "$1" | sed 's/^"\(.*\)"$/\1/')
+  REV=$(echo "$2" | sed 's/^"\(.*\)"$/\1/')
+  SHA=$(nix run nixpkgs.nix-prefetch-git -c nix-prefetch-git --fetch-submodules "$URL" "$REV" 2>/dev/null | sed -n 's/.*"sha256": "\(.*\)",/\1/g p')
+  echo "{ url = $1; rev = $2; sha256 = \"$SHA\"; fetchSubmodules = true; }"
+}
+
+OUT=src-libs.nix
+
+echo '[' > $OUT
+
+chko |
+grep checkout-git.sh |
+tr \' \" |
+while read NM TGT URL BR REV ; do
+  echo Trying $TGT $URL $REV >&2
+  getsha256 $URL $REV >> $OUT || exit 1
+done
+
+echo ']' >> $OUT
diff --git a/pkgs/applications/science/misc/openmodelica/omparser/Makefile.in.patch b/pkgs/applications/science/misc/openmodelica/omparser/Makefile.in.patch
new file mode 100644
index 000000000000..a8f04203a8c9
--- /dev/null
+++ b/pkgs/applications/science/misc/openmodelica/omparser/Makefile.in.patch
@@ -0,0 +1,22 @@
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -23,7 +23,7 @@
+ omedit-testsuite: omedit-testsuite.skip
+ omedit-testsuite.skip: omedit.skip testsuite-depends
+ 	$(MAKE) -f $(defaultMakefileTarget) -C OMEdit/Testsuite
+-omparser: omparser.skip
++omparser: build-dirs omparser.skip
+ omparser.skip:
+ 	test -f $@ || $(MAKE) -C OMParser OMBUILDDIR=@OMBUILDDIR@ "host_short=@host_short@" CC="@CC@" CXX="@CXX@" CFLAGS="@CFLAGS@" CPPFLAGS="@CPPFLAGS@" CXXFLAGS="@CXXFLAGS@"
+ omsimulator: omsimulator.skip
+@@ -134,6 +134,10 @@
+ INSTALL_JAVADIR    = ${DESTDIR}${datadir}/omc/java
+ INSTALL_LOCALEDIR  = ${DESTDIR}${datadir}/locale
+ 
++build-dirs:
++	mkdir -p "@OMBUILDDIR@"/lib/@host_short@/omc
++	mkdir -p "@OMBUILDDIR@"/include/omc
++
+ install-dirs:
+ 	@test ! "${DESTDIR}/@prefix@" -ef "@OMBUILDDIR@" || (echo Error: Install and build dirs are the same && false)
+ 	if [ "@APP@" = ".app" ]; then mkdir -p ${INSTALL_APPDIR}; fi
diff --git a/pkgs/applications/science/misc/openmodelica/omparser/default.nix b/pkgs/applications/science/misc/openmodelica/omparser/default.nix
new file mode 100644
index 000000000000..fcf5acd29ee9
--- /dev/null
+++ b/pkgs/applications/science/misc/openmodelica/omparser/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, pkg-config
+, jre8
+, libuuid
+, openmodelica
+, mkOpenModelicaDerivation
+}:
+
+mkOpenModelicaDerivation rec {
+  pname = "omparser";
+  omdir = "OMParser";
+  omdeps = [ openmodelica.omcompiler ];
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs = [ jre8 libuuid ];
+
+  patches = [ ./Makefile.in.patch ];
+
+  meta = with lib; {
+    description = "An antlr4-based parser of Modelica files from OpenModelica
+suite";
+    homepage = "https://openmodelica.org";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ smironov ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/science/misc/openmodelica/omplot/default.nix b/pkgs/applications/science/misc/openmodelica/omplot/default.nix
new file mode 100644
index 000000000000..7edc4b6efb22
--- /dev/null
+++ b/pkgs/applications/science/misc/openmodelica/omplot/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, qtbase
+, qttools
+, qmake
+, wrapQtAppsHook
+, openmodelica
+, mkOpenModelicaDerivation
+}:
+
+mkOpenModelicaDerivation rec {
+  pname = "omplot";
+  omdir = "OMPlot";
+  omdeps = [ openmodelica.omcompiler ];
+  omautoconf = true;
+
+  nativeBuildInputs = [ qtbase qttools qmake wrapQtAppsHook ];
+
+  postPatch = ''
+    sed -i OMPlot/Makefile.in -e 's|bindir = @includedir@|includedir = @includedir@|'
+    sed -i OMPlot/OMPlot/OMPlotGUI/*.pro -e '/INCLUDEPATH +=/s|$| ../../qwt/src|'
+    sed -i ''$(find -name qmake.m4) -e '/^\s*LRELEASE=/ s|LRELEASE=.*$|LRELEASE=${lib.getDev qttools}/bin/lrelease|'
+  '';
+
+  dontUseQmakeConfigure = true;
+  QMAKESPEC = "linux-clang";
+
+  meta = with lib; {
+    description = "Plotting tool for OpenModelica-generated results files";
+    homepage = "https://openmodelica.org";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ smironov ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/science/misc/openmodelica/omshell/default.nix b/pkgs/applications/science/misc/openmodelica/omshell/default.nix
new file mode 100644
index 000000000000..2f8c5203c07a
--- /dev/null
+++ b/pkgs/applications/science/misc/openmodelica/omshell/default.nix
@@ -0,0 +1,40 @@
+{ lib, qttools, qmake, qtwebkit, wrapQtAppsHook, readline, openmodelica, mkOpenModelicaDerivation }:
+
+mkOpenModelicaDerivation rec {
+  pname = "omshell";
+  omdir = "OMShell";
+  omdeps = [ openmodelica.omcompiler ];
+  omautoconf = true;
+
+  nativeBuildInputs = [ qmake wrapQtAppsHook ];
+
+  buildInputs = [ readline qtwebkit ];
+
+  postPatch = with openmodelica; ''
+    sed -i ''$(find -name qmake.m4) -e '/^\s*LRELEASE=/ s|LRELEASE=.*$|LRELEASE=${lib.getDev qttools}/bin/lrelease|'
+    sed -i OMShell/OMShell/OMShellGUI/*.pro -e '
+      s|\$\$\[QT_INSTALL_BINS\]/lrelease|${lib.getDev qttools}/bin/lrelease|
+      /^\s*OMCLIBS =/ s|\$\$(OMBUILDDIR)|${omcompiler}|
+      /^\s*OMCINC =/ s|\$\$(OMBUILDDIR)|${omcompiler}|
+    '
+    sed -i OMShell/OMShell/OMShellGUI/OMShell.config.in -e '
+      s|@OMBUILDDIR@|${omcompiler}|
+      s|@OPENMODELICAHOME@|${omcompiler}|
+    '
+    sed -i OMShell/mosh/src/Makefile.in -e '
+      /^CFLAGS =/ s|-I../../../build|-I${omcompiler}|
+      /^LIBS =/ s|-L@OMBUILDDIR@|-L${omcompiler}|
+      '
+  '';
+
+  dontUseQmakeConfigure = true;
+  QMAKESPEC = "linux-clang";
+
+  meta = with lib; {
+    description = "Interactive OpenModelica session shell";
+    homepage = "https://openmodelica.org";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ smironov ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/science/misc/openmodelica/omsimulator/default.nix b/pkgs/applications/science/misc/openmodelica/omsimulator/default.nix
new file mode 100644
index 000000000000..448cdee6c263
--- /dev/null
+++ b/pkgs/applications/science/misc/openmodelica/omsimulator/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, pkg-config
+, boost
+, readline
+, libxml2
+, openmodelica
+, mkOpenModelicaDerivation
+}:
+
+mkOpenModelicaDerivation rec {
+  pname = "omsimulator";
+  omdir = "OMSimulator";
+  omdeps = [ openmodelica.omcompiler ];
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs = [ readline libxml2 boost ];
+
+  meta = with lib; {
+    description = "The OpenModelica FMI & SSP-based co-simulation environment";
+    homepage = "https://openmodelica.org";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ smironov ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/science/misc/openmodelica/src-libs-git.nix b/pkgs/applications/science/misc/openmodelica/src-libs-git.nix
deleted file mode 100644
index aae5ab321fbe..000000000000
--- a/pkgs/applications/science/misc/openmodelica/src-libs-git.nix
+++ /dev/null
@@ -1,71 +0,0 @@
-[
-{ url = "https://github.com/modelica-3rdparty/ADGenKinetics.git"; rev = "42428db6e84bcde28543a3bba9bccee581309bb1"; sha256="14l005jwj1wz35gq8xlbzfz0bpsx99rs4q3dxkfh76yhnv1jh9h3"; }
-{ url = "https://github.com/modelica-3rdparty/ADMSL.git"; rev = "ed0305603f86b46d9af03e7d37dcb8b6704915b4"; sha256="15b0nqxyh8444az56ydjn594jikdl1ina5wamabk3nzm1yx218cl"; }
-{ url = "https://github.com/iea-annex60/modelica-annex60.git"; rev = "8015a01591bb24d219f57e7b69cdfcde66e39b47"; sha256="05k4pa007a6p628fq1xac0cfv8g8dnpy2bgy8h99rqpmlaa072z7"; }
-{ url = "https://github.com/OpenModelica/BioChem.git"; rev = "b5f3cb999f3cfad2bbb6fb429b496f61ecf2f628"; sha256="1l52dg888vwx4668spn59hqvfkpl9g06g8n2cdxiap7lvsyh6w9x"; }
-{ url = "https://github.com/modelica-3rdparty/BondGraph.git"; rev = "20c23e60d12989bd4668ccac47659d82d39d29cc"; sha256="1i9cmiy1ya04h2ld0gy0x2gvdrfksl66fmcrgdm1vpsnbb6pviv9"; }
-{ url = "https://github.com/modelica-3rdparty/BondLib.git"; rev = "df7a40fe612617da22e27d39edfa4b27d65f23d0"; sha256="005djwxd568zyk3ndss9hv165dci9x0dgjmcdjhnqmsap3w83hlz"; }
-{ url = "https://github.com/modelica-3rdparty/BrineProp.git"; rev = "fed013cdeec0fb9552964376b575a8e3635539ab"; sha256="020hm2q65d5iv3h8b3lhgl6j930vi2pbh4lvxv3b3k7i9z02q43a"; }
-{ url = "https://github.com/lbl-srg/modelica-buildings.git"; rev = "ef89361cc8673b077b9221efbf78aa63b4d7babd"; sha256="04gclknhl2f5z7w9fsbhwawisd0ibmvwpplx0siqwzvjx7nsmdg4"; }
-{ url = "https://github.com/lbl-srg/modelica-buildings.git"; rev = "444aa231f423b8d04225bf8672e3212d089fbfe4"; sha256="0q754mlkwqj0jcqsmxksvcz4ak2i86f9s41fhffh5jvra27cvq01"; }
-{ url = "https://github.com/modelica-3rdparty/Chemical.git"; rev = "aa2642608e587ddb6897e8c3ffabb3aa099510bd"; sha256="0y46spcb6rw0jpj4v20nlw8xlvi5kypij46f1msvwgr7dfgy4gl4"; }
-{ url = "https://github.com/modelica-3rdparty/ComplexLib.git"; rev = "0b78942ee4fa95ae71347a0d552dd869fdf4c708"; sha256="18llf5ccrq3b0f4cjznfycskwf78pik8370xv45w9gb51gamszrn"; }
-{ url = "https://github.com/lochel/ConPNlib.git"; rev = "bbf6e9711665d55e5a8cf2f7235fa013c2315104"; sha256="0g3ll44sn2ff14qxwdyakw9h5b8b7vzabxp8cb8km16wcdqzgcxx"; }
-{ url = "https://github.com/modelica-3rdparty/DESLib.git"; rev = "7a473d8d16b118c3ea05761c6f43b17fd9838e4e"; sha256="19f2121n8rdc9svcjk8irivsd9wqcb9ai9jx72s2r85fkbvm8jc3"; }
-{ url = "https://github.com/modelica-3rdparty/ExtendedPetriNets.git"; rev = "2f4eac0651c1ab0ed56b75ec61424e0ef15181d3"; sha256="0wwj756pg33qwb90ycbfkrk5xsiwsbrqvq3i16i4pisi21vl6jk9"; }
-{ url = "https://github.com/modelica-3rdparty/ExternData.git"; rev = "396164fa708cc7c7e64da55ac0b3cba23939f790"; sha256="09052qmv91a9wawsl93b5b3q47awrxhnsbb9mrv39kpnwygfh7dq"; }
-{ url = "https://github.com/modelica/ExternalMedia.git"; rev = "1b77869b31dc3509defeccb1236db4b05d2f6f5b"; sha256="05sszn4bn8r78syydyjq8csn9xv4az56mm9lrarqykqdh78pvlqp"; }
-{ url = "https://github.com/kdavies4/FCSys.git"; rev = "cb4b17f34313b9d8f2d4223d5365684b4dc1ab65"; sha256="114p7ja6b3fwlkvkkjhbx78fxc7v4af2sbs783hkdga86m1v4ib6"; }
-{ url = "https://github.com/modelica-3rdparty/FastBuildings.git"; rev = "1f5cfebc2f42c13e272bff639ffa3449d5740bf7"; sha256="0sry1n2pliddz0pjv8dp899fx98f16n1arc8zvq36k5grvi52fby"; }
-{ url = "https://github.com/modelica-3rdparty/FaultTriggering.git"; rev = "10c226b7e5b2af901b356ac437c90d6616a6e9a4"; sha256="0a9j18qjwigq11nghl97syxa9bscs1aj6vwpkldh50csnj5h6g2s"; }
-{ url = "https://github.com/modelica-3rdparty/FuzzyControl.git"; rev = "19ff67ff129a440482cc85f216f287b05ea6ec0d"; sha256="0ijcqns7pijsavijn4wlrdsz64k5ks626sly7r28wvrk9af2m2cx"; }
-{ url = "https://github.com/modelica-3rdparty/HelmholtzMedia.git"; rev = "e54fcd0e436d65c85de6c6b935983e363cdc9f6c"; sha256="05afh0379fx4mjjn7jb8j5p4am6qi62hjxvasb38b6fcp9rnysn4"; }
-{ url = "https://github.com/modelica-3rdparty/IdealizedContact.git"; rev = "8ebac550d913f6d2b3af4d1aea5044e72c7eb6b0"; sha256="03gh2a7hf44clshwkiyz786w847hmyr3bicdqd9969fbirgcqn6m"; }
-{ url = "https://github.com/modelica-3rdparty/IndustrialControlSystems.git"; rev = "6a2414307d5998c6d081efe803c2b575a532b3ba"; sha256="09la9h07x8bkh7zhrwykgj1467qdryjvxhvnnm8qvsim0dl9inc4"; }
-{ url = "https://github.com/modelica-3rdparty/LinearMPC.git"; rev = "1e91a5dcaa662cd30c5b09a9d0267289703f933b"; sha256="12094fqmwi65h0mc65b96krbj6b8dgn6jiww3fnv6khglb21kwvd"; }
-{ url = "https://github.com/modelica/Modelica.git"; rev = "refs/tags/v1.6"; sha256="106w83ylgbxf63wr7p9z5q8vqz2qcsaw0zwaad7d3saq6rdbj30c"; }
-{ url = "https://github.com/modelica/Modelica.git"; rev = "d442bcd461b8db9873e33b6141bdbd37bcff9de8"; sha256="1icnd0fxix5khnsvdhy7kmzn6lnqkggbvfrbln98a2h5zqd6s32w"; }
-{ url = "https://github.com/modelica/Modelica.git"; rev = "af2a3e1597d648d6826665c89cf9eaf5c2a632bc"; sha256="0ryk0iwakdazhsjqvan41w6f9bvgl329zkqchcdg6nkidiigziwh"; }
-{ url = "https://github.com/modelica/Modelica.git"; rev = "48943d87db45a6c312b5a5789d384acde44a934b"; sha256="1hi2vkpmx734baa9m1lqzallcykhh3snd68r387gndiv96f6zx3n"; }
-{ url = "https://github.com/modelica/Modelica.git"; rev = "164af873cc5955c50f9592a7d2f3c155f703849c"; sha256="071svqwd72sy85sngbg5r22ab693c0gw2xx29gk1sqrk2nchmvia"; }
-{ url = "https://github.com/OpenModelica/modelica3d.git"; rev = "daf5669b03ad33fc6999671d1c0e7521134a282b"; sha256="1scs6v2cp2r4jz4diszwbqf9kvzf49pid50dmpsz0gfhx06j9y2v"; }
-{ url = "https://github.com/modelica-deprecated/ModelicaAdditions.git"; rev = "568db43766186826b880f9d4bfafeff25cc2c4ab"; sha256="1py5i3afxdvz1dmxxwb2mqj8kyzdhg4jnnqwl8h50akizg4i49pl"; }
-{ url = "https://github.com/xogeny/ModelicaBook.git"; rev = "0e670cfae4db653bd34ea777d6b56423e9be2c9f"; sha256="0lxh08w6nii4p5yk7c0xmfi5y4xkjkzz4hirr3kqdhdfybcwq824"; }
-{ url = "https://github.com/modelica-compliance/compliance.git"; rev = "ca5092c14bb7af4507a10700ee49181a3a3ee199"; sha256="12ja6dhwlbq412kxjdviypgchipxpsg8l0sf6r17g6lbsi19i2b6"; }
-{ url = "https://github.com/modelica-3rdparty/ModelicaDEVS.git"; rev = "a987aa9552fbbe71b2ee2e8c28958f9d213087ae"; sha256="0qcw7vw28xadim0h8kr2km09d8vdj05ibdpzcnpny9n43pm9s5hx"; }
-{ url = "https://github.com/modelica/Modelica_DeviceDrivers.git"; rev = "db912ba7e1317b8f6a776ccf9a19f69c77a9c477"; sha256="052h2lr7xgfag5fks19wbldqmb985kxlc5fzysl7c9w3fnijp0ml"; }
-{ url = "https://github.com/modelica/Modelica_EnergyStorages.git"; rev = "9f057365232364e31a31a8e525f96284b98c7de3"; sha256="195m5b3z8qgg9kih9zsdx1h8zgrm37q63890r59akka05a97j48h"; }
-{ url = "https://github.com/modelica/Modelica_LinearSystems2.git"; rev = "18916fdc485285baab12481701b53d4eb606a3f1"; sha256="0fhvdwcgk8q3z1a98l2bxv8a6dysrs4ll6xfyzpni7yq8gp4mg4q"; }
-{ url = "https://github.com/modelica/Modelica_Synchronous.git"; rev = "d0f5ee57bc7b639738e88026674a87343b33dbe1"; sha256="0l75v4d0fgf07ify0h3skh4y9pfw9gxh9hbj1lbsdgglmzlrcvbg"; }
-{ url = "https://github.com/modelica-3rdparty/MotorcycleDynamics.git"; rev = "2be2667f9936d88ffb9b8a8246c5af9ccb0b307f"; sha256="0jazwmpqpyhhgs9qdn9drmplgp2yjs0ky7wll5x9929dkgy80m6x"; }
-{ url = "https://github.com/modelica-3rdparty/NCLib.git"; rev = "ed3d72f176ac6b7031ce73be9d80101141e74a69"; sha256="1pbpv8w1lsa9vdwp7qbih8iim91ms22b01wz376b548d0x2r95la"; }
-{ url = "https://github.com/modelica-3rdparty/NeuralNetwork.git"; rev = "c44e4d1fe97fd4f86dafcd05ad3713692e3f1806"; sha256="0s1v8k71zq1s9gjlvi3zr23nwfknp4x17cxm64a0y3vsi3kahj2s"; }
-{ url = "https://github.com/DLR-SR/Noise.git"; rev = "9b57476845539e56769cf76ea0fe7bf3c7eb5d11"; sha256="0icrb63f6dm4gww2nyby9i7s7qxvhvialp36xzcgmi7nlq7crjr2"; }
-{ url = "https://github.com/modelica-3rdparty/ObjectStab.git"; rev = "2a723e0b223af50f4ffdd62f8ac901e0f87b9323"; sha256="1b6zi27slzzfbkmbcqxygsn5i5w0zkq0hfrfb72vf7mbgz07j19j"; }
-{ url = "https://github.com/cparedis/OpenHydraulics.git"; rev = "d3173d1f06f7d14c9d7c41769f143617ff03a3ad"; sha256="1hn5rcnmzcbiaqdnxfn02wddmrpj9bcdi9p680f31hbh3vb0i3r6"; }
-{ url = "https://github.com/lochel/PNlib.git"; rev = "44c7d277980b7a88b449b72edec0a56416b40fa9"; sha256="026wdhbxnzarmj8gw0as70vj8f1gwc51z38hjqpswxkl0xd6mfvp"; }
-{ url = "https://github.com/MarekMatejak/Physiolibrary.git"; rev = "49d59060f6e5b4cb68560c6d7467e84ea4318056"; sha256="0klqs2axjm3s780sq4plq4wmbf9mszz2jmq9fprgxy9pw7iszbhc"; }
-{ url = "https://github.com/dzimmer/PlanarMechanics.git"; rev = "d998a1b27355e83d2ff4849d71281a919a3234aa"; sha256="0vyq6mninn38wy2d60rk753xbkfqim2y6y31py7kq2mm170jfqf4"; }
-{ url = "https://github.com/modelica/PowerSystems.git"; rev = "7b551888089277a0dd979db636d47aba0279e8f0"; sha256="0y13f1nllc7riksnly25wmmp6mc30c1b48dbq2lr1nag6yg3blwm"; }
-{ url = "https://github.com/modelica/PowerSystems.git"; rev = "3abd48aa53bbcd3f3e2ddfa2371680febf8baf48"; sha256="1nr2nbpaxywk8cpwnk9rr2zr87mm2gb9b4plqipjdlrrkjlk9fka"; }
-{ url = "https://github.com/modelica-3rdparty/PraxisSimulationstechnik.git"; rev = "f7db177786f84033f3a50b7474988b190a1dfb46"; sha256="08bdm7k7w35kg9gkrvcn382zkwf5h3iwkkx60d5fj64j5d5klray"; }
-{ url = "https://github.com/modelica-3rdparty/QCalc.git"; rev = "af6c34dda691a9bdf7ca1de10650974b2d5cecf5"; sha256="0p0zhl27cnr492byrzib0dyn7zp5yb7wcr0spv10ngm6j90cij6y"; }
-{ url = "https://github.com/modelica-3rdparty/QSSFluidFlow.git"; rev = "d84a2c107132f2cd47ea3c3751238d69e4b1f64b"; sha256="02cdvv33pi0qlmg8n401s4cxf59l9b4ff4ixf7gwn4w4n1y9bw0g"; }
-{ url = "https://github.com/modelica-3rdparty/RealTimeCoordinationLibrary.git"; rev = "655ac1a22aa6deb04ea8e3869dd0aa9fb9540754"; sha256="19crf8pl9vpqq3pq1rhcbl49kkmnm4jrzpwrpqp8qc6dj8096za4"; }
-{ url = "https://github.com/modelica-3rdparty/ScalableTestSuite.git"; rev = "c6319908d45ac97ffb10e96cd42654bce36ffb97"; sha256="1g79d88bfmzcqvaghyyj86ajs38v0qnmjxbj8d53yp6nmgnaasx5"; }
-{ url = "https://github.com/modelica-3rdparty/Servomechanisms.git"; rev = "22e1874ef9ad46156617817c67a4fb1238621bf5"; sha256="0nwb7apayk7ba9iv27yv67wi4b934dy57kkvn0acxy393jhd8jqd"; }
-{ url = "https://openmodelica.org/git/SiemensPower.git"; rev = "73a3bfc6d2ddd72165bb0f3e7e9df48b643a5ed0"; sha256="0mvrkpkmr0bx2cvsb23syg7cs8k6a15vjf4n1hivdcigq4x8g2nc"; }
-{ url = "https://openmodelica.org/git/SiemensPower.git"; rev = "5ef2e38b64ff481801c0db19d52f0bef21f85f77"; sha256="1llnpl2x1g28gari1rk34hdnnwf7a4fwwxlf7i18d8bl1vsrfaja"; }
-{ url = "https://openmodelica.org/git/SiemensPower.git"; rev = "2bd9e367baaa8d44946897c3c3a32a4050ad2a2a"; sha256="1shm9blpn9m87ci6wwkinpmihr1fik9j0a0pj2nxy0cjrr2jzbn4"; }
-{ url = "https://github.com/modelica-3rdparty/Spot.git"; rev = "2f74417f1681570900a1ed373dcbe4b42634ec7b"; sha256="0k5h2k6x98zvvsafpw7y16xs9d6lxz0csa0mlm4wwggaywadn255"; }
-{ url = "https://github.com/modelica-3rdparty/SystemDynamics.git"; rev = "c58a26dc3e62a50e64fd336dc4aa499b2d5ad314"; sha256="0ra3a2vgqmry92kmm060gfa41mrpkgbs4swzl78ih3icawfzjz8q"; }
-{ url = "https://github.com/modelica-3rdparty/ThermoPower.git"; rev = "e012268625dd1645fe5570cf31d64129d83a8192"; sha256="1rlkli48kc9hnkplgb0bjkb6ajn7agiw4yh9l5sfvlv7k7k2gc8l"; }
-{ url = "https://openmodelica.org/git/ThermoSysPro.git"; rev = "d4f9c3ed35f7520f82439eb6e9f4057ae0f82b73"; sha256="0hxbn26g479qkr6rrglx9ljdxnpzd5ll1sf2v08skghrdjjb8jcx"; }
-{ url = "https://openmodelica.org/git/ThermoSysPro.git"; rev = "51e7ea2d2e121ee640e7897335c294923f8eaeb0"; sha256="0l11mzjkaxndsqrnnr0z7qvk08svv229119qkm81yb53ich9wnyw"; }
-{ url = "https://github.com/modelica/VehicleInterfaces.git"; rev = "ad956a35643d53e207ee126d67ea1f3f38337a39"; sha256="0g90cqwjpi06gn7vca5kqnz56im76s2hrdqjhsj2bl43rza8mhr0"; }
-{ url = "https://github.com/modelica-3rdparty/WasteWater.git"; rev = "90ff44ac791ba5ed98444c8597efbd2a2af01cad"; sha256="1icrn0y389rhxmf6i0mnsfgw9v9j5innpkz3q069rfm2ji268b12"; }
-{ url = "https://github.com/xogeny/XogenyTest.git"; rev = "9b98981e8ff0f440dd319d1a806e1fd2f0ab3436"; sha256="18glaxrlxfml26w7ljlf0yj3ah1fnhpbg01py28nplsgnrfwfwqj"; }
-{ url = "https://github.com/modelica-3rdparty/msgpack-modelica.git"; rev = "6ce2ca600c4902038c0f20b43ed442f1ee204310"; sha256="01x5a9y11yf62sc0j2y49yxwm24imj2lfl3z5mwvi9038gwn0lkx"; }
-{ url = "https://github.com/modelica-3rdparty/netCDF-DataReader.git"; rev = "3d2cc8272abfbc4b667d8868f851bf3e11c6f00e"; sha256="194810a4rn0flxgirrlnxsbxarnm97309dkp1w7nva9zv1q3wj7h"; }
-{ url = "https://github.com/joewa/open-bldc-modelica.git"; rev = "7817cd703b88fc1f433269d32c31e75eb50a21c6"; sha256="1plkxkx51f9yi99ysarmx2ymldizvyr0m66k996y5lj5h81jv8a8"; }
-]
diff --git a/pkgs/applications/science/misc/openmodelica/src-libs-svn.nix b/pkgs/applications/science/misc/openmodelica/src-libs-svn.nix
deleted file mode 100644
index 244da64fb4e6..000000000000
--- a/pkgs/applications/science/misc/openmodelica/src-libs-svn.nix
+++ /dev/null
@@ -1,5 +0,0 @@
-[
-{ url = "https://svn.modelica.org/projects/Modelica_ElectricalSystems/InstantaneousSymmetricalComponents"; rev = "7978"; sha256="0f100c7bz4ai3ryhpkbbszw8z6mykvg40p03ic92n2qq58wjk37z"; }
-{ url = "https://svn.modelica.org/projects/Modelica_EmbeddedSystems/trunk/Modelica_StateGraph2"; rev = "8121"; sha256="1cys57nc1yzkr5admc139qs5pa48rj3g69pb3j3s9xcmpd483hzp"; }
-{ url = "https://svn.modelica.org/projects/Modelica_ElectricalSystems/Modelica_PowerFlow/trunk"; rev = "3174"; sha256="0yviw1b8psn8vfyl4q1naylak3lcqi2q1bqplqg3gg9iw4aiymxl"; }
-]
diff --git a/pkgs/applications/science/misc/openmodelica/src-main.nix b/pkgs/applications/science/misc/openmodelica/src-main.nix
deleted file mode 100644
index 99e82259bfe6..000000000000
--- a/pkgs/applications/science/misc/openmodelica/src-main.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  url = "https://openmodelica.org/git-readonly/OpenModelica.git";
-  fetchSubmodules = true;
-  rev = "8c5d48eb31a638d5220621b20377bfe6f9e9535e";
-  sha256 = "0i5cznkh4wwayjqms14f3phizqm493nrr1yjgs9747nfw7vnwsff";
-}
diff --git a/pkgs/applications/science/misc/openmodelica/update-src-libs-git.sh b/pkgs/applications/science/misc/openmodelica/update-src-libs-git.sh
deleted file mode 100755
index 481a89796415..000000000000
--- a/pkgs/applications/science/misc/openmodelica/update-src-libs-git.sh
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/bin/sh
-
-CWD=`pwd`
-
-chko() { (
-T=`mktemp -d`
-trap "rm -rf $T" EXIT INT PIPE
-cd $T
-cat >check.nix <<EOF
-with import <nixpkgs> {};
-fetchgit `cat $CWD/src-main.nix`
-EOF
-nix-build check.nix
-cat result/libraries/Makefile.libs
-) }
-
-getsha256() { (
-T=`mktemp -d`
-trap "rm -rf $T" EXIT INT PIPE
-cd $T
-
-L=`echo $2 | wc -c`
-if expr $L '<' 10 >/dev/null; then
-T=`echo $2 | sed 's@"\(.*\)"@"refs/tags/\1"@'`
-cat >check.nix <<EOF
-with import <nixpkgs> {};
-fetchgit {
-  url = $1;
-  rev = $T;
-  sha256 = "0000000000000000000000000000000000000000000000000000";
-}
-EOF
-SHA=`nix-build check.nix 2>&1 | sed -n 's/.*instead has ‘\(.*\)’.*/\1/g p'`
-echo "{ url = $1; rev = $T; sha256=\"$SHA\"; }"
-else
-cat >check.nix <<EOF
-with import <nixpkgs> {};
-fetchgit {
-  url = $1;
-  rev = $2;
-  sha256 = "0000000000000000000000000000000000000000000000000000";
-}
-EOF
-SHA=`nix-build check.nix 2>&1 | sed -n 's/.*instead has ‘\(.*\)’.*/\1/g p'`
-echo "{ url = $1; rev = $2; sha256=\"$SHA\"; }"
-fi
-
-# nix-build check.nix
-) }
-
-OUT=src-libs-git.nix
-
-echo '[' > $OUT
-
-chko |
-grep checkout-git.sh |
-tr \' \" |
-while read NM TGT URL BR REV ; do
-  echo Trying $TGT $URL $REV >&2
-  getsha256 $URL $REV >> $OUT || exit 1
-done
-
-echo ']' >> $OUT
-
diff --git a/pkgs/applications/science/misc/openmodelica/update-src-libs-svn.sh b/pkgs/applications/science/misc/openmodelica/update-src-libs-svn.sh
deleted file mode 100755
index 972bc7d61f13..000000000000
--- a/pkgs/applications/science/misc/openmodelica/update-src-libs-svn.sh
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/bin/sh
-
-CWD=`pwd`
-
-chko() { (
-T=`mktemp -d`
-trap "rm -rf $T" EXIT INT PIPE
-cd $T
-cat >check.nix <<EOF
-with import <nixpkgs> {};
-fetchgit `cat $CWD/src-main.nix`
-EOF
-nix-build check.nix
-cat result/libraries/Makefile.libs
-) }
-
-getsha256() { (
-T=`mktemp -d`
-trap "rm -rf $T" EXIT INT PIPE
-cd $T
-
-L=`echo $2 | wc -c`
-cat >check.nix <<EOF
-with import <nixpkgs> {};
-fetchsvn {
-  url = $1;
-  rev = $2;
-  sha256 = "0000000000000000000000000000000000000000000000000000";
-}
-EOF
-SHA=`nix-build check.nix 2>&1 | sed -n 's/.*instead has ‘\(.*\)’.*/\1/g p'`
-echo "{ url = $1; rev = $2; sha256=\"$SHA\"; }"
-
-# nix-build check.nix
-) }
-
-OUT=src-libs-svn.nix
-
-echo '[' > $OUT
-
-chko |
-grep checkout-svn.sh |
-tr \' \" |
-while read NM TGT URL REV ; do
-  echo Trying $TGT $URL $REV >&2
-  getsha256 $URL $REV >> $OUT || exit 1
-done
-
-echo ']' >> $OUT
-
diff --git a/pkgs/applications/system/glances/default.nix b/pkgs/applications/system/glances/default.nix
index e950fcfb1cda..1d1182ba0d57 100644
--- a/pkgs/applications/system/glances/default.nix
+++ b/pkgs/applications/system/glances/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonApplication rec {
   pname = "glances";
-  version = "3.2.1";
+  version = "3.2.2";
   disabled = isPyPy;
 
   src = fetchFromGitHub {
     owner = "nicolargo";
     repo = "glances";
     rev = "v${version}";
-    sha256 = "0m2cxmlyay2rr9hnc08s5q9xwdqy0nhzsl10by4f9ji0kiahnpl6";
+    sha256 = "13w7bxfizsfi3xyhharnindyn3dv3p9p54a4xwyhnnhczs8kqa8s";
   };
 
   # Some tests fail in the sandbox (they e.g. require access to /sys/class/power_supply):
diff --git a/pkgs/applications/terminal-emulators/iterm2/default.nix b/pkgs/applications/terminal-emulators/iterm2/default.nix
index ff5c7f8dae46..9f157a75f93e 100644
--- a/pkgs/applications/terminal-emulators/iterm2/default.nix
+++ b/pkgs/applications/terminal-emulators/iterm2/default.nix
@@ -10,13 +10,13 @@
 
 stdenv.mkDerivation rec {
   pname = "iterm2";
-  version = "3.3.9";
+  version = "3.4.0";
 
   src = fetchFromGitHub {
     owner = "gnachman";
     repo = "iTerm2";
     rev = "v${version}";
-    sha256 = "06mq3gfjgy8jw2f3fzdsi3pbfkdijfzzlhlw6ixa5bfb4hbcgn5j";
+    sha256 = "09nhrmi25zxw3vp0wlib9kjr3p1j6am2zpwimdzqn0c80fq1lwvi";
   };
 
   patches = [ ./disable_updates.patch ];
diff --git a/pkgs/applications/virtualization/firecracker/default.nix b/pkgs/applications/virtualization/firecracker/default.nix
index 1d049621aa5f..3d2f4606e492 100644
--- a/pkgs/applications/virtualization/firecracker/default.nix
+++ b/pkgs/applications/virtualization/firecracker/default.nix
@@ -1,17 +1,17 @@
 { fetchurl, lib, stdenv }:
 
 let
-  version = "0.24.3";
+  version = "0.24.4";
 
   suffix = {
-    x86_64-linux  = "x86_64";
+    x86_64-linux = "x86_64";
     aarch64-linux = "aarch64";
   }."${stdenv.hostPlatform.system}" or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
 
   baseurl = "https://github.com/firecracker-microvm/firecracker/releases/download";
 
   dlbin = sha256: fetchurl {
-    url    = "${baseurl}/v${version}/firecracker-v${version}-${suffix}.tgz";
+    url = "${baseurl}/v${version}/firecracker-v${version}-${suffix}.tgz";
     sha256 = sha256."${stdenv.hostPlatform.system}";
   };
 
@@ -22,15 +22,15 @@ stdenv.mkDerivation {
 
   sourceRoot = ".";
   src = dlbin {
-    x86_64-linux  = "sha256-i6NMVFoLm4hQJH7RnhfC0t+0DJCINoP5b/iCv9JyRdk=";
-    aarch64-linux = "0m7xs12g97z1ipzaf7dgknf3azlah0p6bdr9i454azvzg955238b";
+    x86_64-linux = "sha256-EKndfLdkxn+S+2ElAyQ+mKEo5XN6kqZLuLCsQf+fKuk=";
+    aarch64-linux = "0zzr8x776aya6f6pw0dc0a6jxgbqv3f37p1vd8mmlsdv66c4kmfb";
   };
 
   dontConfigure = true;
 
-  buildPhase     = ''
-    mv firecracker-* firecracker
-    mv jailer-*      jailer
+  buildPhase = ''
+    mv release-v${version}/firecracker-v${version}-${suffix} firecracker
+    mv release-v${version}/jailer-v${version}-${suffix} jailer
     chmod +x firecracker jailer
   '';
 
@@ -48,9 +48,9 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "Secure, fast, minimal micro-container virtualization";
-    homepage    = "http://firecracker-microvm.io";
-    license     = licenses.asl20;
-    platforms   = [ "x86_64-linux" "aarch64-linux" ];
-    maintainers = with maintainers; [ thoughtpolice ];
+    homepage = "http://firecracker-microvm.io";
+    license = licenses.asl20;
+    platforms = [ "x86_64-linux" "aarch64-linux" ];
+    maintainers = with maintainers; [ thoughtpolice endocrimes ];
   };
 }
diff --git a/pkgs/build-support/bintools-wrapper/default.nix b/pkgs/build-support/bintools-wrapper/default.nix
index 0674c88924e4..82d173697438 100644
--- a/pkgs/build-support/bintools-wrapper/default.nix
+++ b/pkgs/build-support/bintools-wrapper/default.nix
@@ -209,6 +209,7 @@ stdenv.mkDerivation {
       else if targetPlatform.isVc4 then "vc4"
       else if targetPlatform.isOr1k then "or1k"
       else if targetPlatform.isM68k then "m68k"
+      else if targetPlatform.isS390 then "s390"
       else if targetPlatform.isRiscV then "lriscv"
       else throw "unknown emulation for platform: ${targetPlatform.config}";
     in if targetPlatform.useLLVM or false then ""
diff --git a/pkgs/desktops/gnome/core/evolution-data-server/default.nix b/pkgs/desktops/gnome/core/evolution-data-server/default.nix
index 8781a2aa7fde..480f95b970ba 100644
--- a/pkgs/desktops/gnome/core/evolution-data-server/default.nix
+++ b/pkgs/desktops/gnome/core/evolution-data-server/default.nix
@@ -6,13 +6,13 @@
 
 stdenv.mkDerivation rec {
   pname = "evolution-data-server";
-  version = "3.40.2";
+  version = "3.40.3";
 
   outputs = [ "out" "dev" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/evolution-data-server/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "7IKVFjnzKlzs6AqLC5qj9mt9MY4+4sHDUjTy4r3opBg=";
+    sha256 = "Trs5F9a+tUrVlt5dilxG8PtXJJ7Z24HwXHqUpzDB2SE=";
   };
 
   patches = [
diff --git a/pkgs/desktops/gnome/games/gnome-sudoku/default.nix b/pkgs/desktops/gnome/games/gnome-sudoku/default.nix
index 3bd0ec3b3cdf..1431a6179493 100644
--- a/pkgs/desktops/gnome/games/gnome-sudoku/default.nix
+++ b/pkgs/desktops/gnome/games/gnome-sudoku/default.nix
@@ -3,11 +3,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-sudoku";
-  version = "40.1";
+  version = "40.2";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-sudoku/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "1nr1g4q1gxqbzmaz15y3zgssnj7w01cq9l422ja4rglyg0fwjhbm";
+    sha256 = "NhIFMePHE5WB6jgA+/48KzFpTEQBRezIl6w05WLXVKM=";
   };
 
   nativeBuildInputs = [ meson ninja vala pkg-config gobject-introspection gettext itstool libxml2 python3 desktop-file-utils wrapGAppsHook ];
diff --git a/pkgs/development/interpreters/erlang/R23.nix b/pkgs/development/interpreters/erlang/R23.nix
index 9e344adc15a3..3d0a2b160065 100644
--- a/pkgs/development/interpreters/erlang/R23.nix
+++ b/pkgs/development/interpreters/erlang/R23.nix
@@ -3,6 +3,6 @@
 # How to obtain `sha256`:
 # nix-prefetch-url --unpack https://github.com/erlang/otp/archive/OTP-${version}.tar.gz
 mkDerivation {
-  version = "23.3.4.4";
-  sha256 = "dnoSGfBUZrgcnNQNAoqmVOxK/NQlt1DC187sxg7mPq8=";
+  version = "23.3.4.5";
+  sha256 = "2u/w8IPKHEZ+rZ3T7Wn9+Ggxe6JY8cHz8q/N0RjbrNU=";
 }
diff --git a/pkgs/development/interpreters/octave/default.nix b/pkgs/development/interpreters/octave/default.nix
index 0a87c1ddcf07..e8228d23b0c9 100644
--- a/pkgs/development/interpreters/octave/default.nix
+++ b/pkgs/development/interpreters/octave/default.nix
@@ -184,6 +184,14 @@ let
 
     enableParallelBuilding = true;
 
+    # Fix linker error on Darwin (see https://trac.macports.org/ticket/61865)
+    NIX_LDFLAGS = lib.optionalString stdenv.isDarwin "-lobjc";
+
+    # Avoid Qt 5.12 problem on Big Sur: https://bugreports.qt.io/browse/QTBUG-87014
+    qtWrapperArgs = lib.optionals stdenv.isDarwin [
+      "--set QT_MAC_WANTS_LAYER 1"
+    ];
+
     # See https://savannah.gnu.org/bugs/?50339
     F77_INTEGER_8_FLAG = if use64BitIdx then "-fdefault-integer-8" else "";
 
diff --git a/pkgs/development/interpreters/rakudo/default.nix b/pkgs/development/interpreters/rakudo/default.nix
index fdb3a78a1b7e..eabbdf0b757f 100644
--- a/pkgs/development/interpreters/rakudo/default.nix
+++ b/pkgs/development/interpreters/rakudo/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "rakudo";
-  version = "2021.06";
+  version = "2021.07";
 
   src = fetchurl {
     url    = "https://rakudo.org/dl/rakudo/rakudo-${version}.tar.gz";
-    sha256 = "11ixlqmvbb37abksdysg5r4lkbwzr486lkc0ssl3wca4iiy3mhgf";
+    sha256 = "0lmbgw24f8277b9kj725v3grwh1524p4iy5jbqajxwxjr16zx2hp";
   };
 
   nativeBuildInputs = [ removeReferencesTo ];
diff --git a/pkgs/development/interpreters/rakudo/moarvm.nix b/pkgs/development/interpreters/rakudo/moarvm.nix
index 60a5e071545e..73dac18a5974 100644
--- a/pkgs/development/interpreters/rakudo/moarvm.nix
+++ b/pkgs/development/interpreters/rakudo/moarvm.nix
@@ -3,11 +3,11 @@
 
 stdenv.mkDerivation rec {
   pname = "moarvm";
-  version = "2021.06";
+  version = "2021.07";
 
   src = fetchurl {
     url = "https://moarvm.org/releases/MoarVM-${version}.tar.gz";
-    sha256 = "19vjcyb9fg9msjw1ih00c2qby480gl4highw24zx7j84slhsj013";
+    sha256 = "1zk3dpvgrgg4kam3hx9pq1a2l2kgw822dci8hg7x0cn1lppwwdw4";
    };
 
   buildInputs = [ perl ] ++ lib.optionals stdenv.isDarwin [ CoreServices ApplicationServices ];
diff --git a/pkgs/development/interpreters/rakudo/nqp.nix b/pkgs/development/interpreters/rakudo/nqp.nix
index 4b456d819f6d..d34f5ac71a09 100644
--- a/pkgs/development/interpreters/rakudo/nqp.nix
+++ b/pkgs/development/interpreters/rakudo/nqp.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "nqp";
-  version = "2021.06";
+  version = "2021.07";
 
   src = fetchurl {
     url    = "https://github.com/raku/nqp/releases/download/${version}/nqp-${version}.tar.gz";
-    sha256 = "1d00lajjdd2k510fb0cb6c8bpklvlnncykf6jz8j8djfp0b2i696";
+    sha256 = "191y6r6qxpib52h3drc5pbjrgf65pn5ahis1dyz55dxk7ajg5anw";
   };
 
   buildInputs = [ perl ];
diff --git a/pkgs/development/interpreters/rakudo/zef.nix b/pkgs/development/interpreters/rakudo/zef.nix
index 61008f242b91..350eea43160e 100644
--- a/pkgs/development/interpreters/rakudo/zef.nix
+++ b/pkgs/development/interpreters/rakudo/zef.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "zef";
-  version = "0.11.5";
+  version = "0.11.9";
 
   src = fetchFromGitHub {
     owner = "ugexe";
     repo = "zef";
     rev = "v${version}";
-    sha256 = "sha256-LLUAwqky/q9KvFltrcff5U2BSLvOk/BbDSj07QlePSg=";
+    sha256 = "1x1jj9k80lza1b3aidw9ybi26kjf30mvqkmnnmxf27302ipq69jy";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/development/libraries/arb/default.nix b/pkgs/development/libraries/arb/default.nix
index 97af236af046..393639ea558b 100644
--- a/pkgs/development/libraries/arb/default.nix
+++ b/pkgs/development/libraries/arb/default.nix
@@ -9,13 +9,13 @@
 
 stdenv.mkDerivation rec {
   pname = "arb";
-  version = "2.19.0";
+  version = "2.20.0";
 
   src = fetchFromGitHub {
     owner = "fredrik-johansson";
     repo = pname;
     rev = version;
-    sha256 = "sha256-J/LQVZ8gmssazE7ru89EtvW6cVjaLEHgUHuwjW1nuOE=";
+    sha256 = "sha256-HOIbdkVV7NKowIGhDdn/S8unIRV469OnRHiuiCGaWgk=";
   };
 
   buildInputs = [ mpir gmp mpfr flint ];
diff --git a/pkgs/development/libraries/bzrtp/default.nix b/pkgs/development/libraries/bzrtp/default.nix
index 5236c92527e2..6ee48a0a042a 100644
--- a/pkgs/development/libraries/bzrtp/default.nix
+++ b/pkgs/development/libraries/bzrtp/default.nix
@@ -7,7 +7,7 @@
 
 stdenv.mkDerivation rec {
   pname = "bzrtp";
-  version = "4.5.10";
+  version = "5.0.0";
 
   src = fetchFromGitLab {
     domain = "gitlab.linphone.org";
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
     group = "BC";
     repo = pname;
     rev = version;
-    sha256 = "sha256-8qlCTkiRKMDODKMsa52pskBJ7pjqCDYkUJDb/5gFoKg=";
+    sha256 = "sha256-cagRN0DQw1/efCuMWngcF04SE9bViHANaNsQNKB5txA=";
   };
 
   buildInputs = [ bctoolbox sqlite ];
diff --git a/pkgs/development/libraries/cimg/default.nix b/pkgs/development/libraries/cimg/default.nix
index f70513e0cd00..69e16a8922a5 100644
--- a/pkgs/development/libraries/cimg/default.nix
+++ b/pkgs/development/libraries/cimg/default.nix
@@ -5,13 +5,13 @@
 
 stdenv.mkDerivation rec {
   pname = "cimg";
-  version = "2.9.7";
+  version = "2.9.8";
 
   src = fetchFromGitHub {
     owner = "dtschump";
     repo = "CImg";
     rev = "v.${version}";
-    sha256 = "sha256-cR2wvGtomT1cZh8wKMCfYDNuP3d1gKhHJavVnvuQ8Mc=";
+    sha256 = "sha256-nEICs1oAIXu6/5O4R3mbwig1OY+HDIWWeQjrcYnCwT0=";
   };
 
   installPhase = ''
diff --git a/pkgs/development/libraries/csfml/default.nix b/pkgs/development/libraries/csfml/default.nix
index cfc41b9271be..3aebe23ee38c 100644
--- a/pkgs/development/libraries/csfml/default.nix
+++ b/pkgs/development/libraries/csfml/default.nix
@@ -2,12 +2,12 @@
 
 stdenv.mkDerivation rec {
   pname = "csfml";
-  version = "2.5";
+  version = "2.5.1";
   src = fetchFromGitHub {
     owner = "SFML";
     repo  = "CSFML";
     rev   = version;
-    sha256 = "071magxif5nrdddzk2z34czqmz1dfws4d7dqynb2zpn7cwhwxcpm";
+    sha256 = "sha256-a46V5CakKVygNfr3/nZwlsCyqNsbti4a3cr7itK5QfI=";
   };
   nativeBuildInputs = [ cmake ];
   buildInputs = [ sfml ];
diff --git a/pkgs/development/libraries/flint/default.nix b/pkgs/development/libraries/flint/default.nix
index 7f814461f282..548f561f25a0 100644
--- a/pkgs/development/libraries/flint/default.nix
+++ b/pkgs/development/libraries/flint/default.nix
@@ -1,4 +1,5 @@
-{ lib, stdenv
+{ lib
+, stdenv
 , fetchurl
 , gmp
 , mpir
@@ -12,11 +13,11 @@ assert withBlas -> openblas != null && blas.implementation == "openblas" && lapa
 
 stdenv.mkDerivation rec {
   pname = "flint";
-  version = "2.7.1";
+  version = "2.8.0";
 
   src = fetchurl {
-    url = "http://www.flintlib.org/flint-${version}.tar.gz";
-    sha256 = "07j8r96kdzp19cy3a5yvpjxf90mkd6103yr2n42qmpv7mgcjyvhq";
+    url = "https://www.flintlib.org/flint-${version}.tar.gz";
+    sha256 = "sha256-WEI1zcOdd52ZIOrvFv4ITzwm/+7qADo//2SiCg8zRJ4=";
   };
 
   buildInputs = [
@@ -27,9 +28,11 @@ stdenv.mkDerivation rec {
   ] ++ lib.optionals withBlas [
     openblas
   ];
+
   propagatedBuildInputs = [
     mpfr # flint.h includes mpfr.h
   ];
+
   configureFlags = [
     "--with-gmp=${gmp}"
     "--with-mpir=${mpir}"
@@ -40,13 +43,14 @@ stdenv.mkDerivation rec {
   ];
 
   doCheck = true;
-  meta = {
+
+  meta = with lib; {
     description = "Fast Library for Number Theory";
-    license = lib.licenses.gpl2Plus;
-    maintainers = lib.teams.sage.members;
-    platforms = lib.platforms.unix;
-    homepage = "http://www.flintlib.org/";
-    downloadPage = "http://www.flintlib.org/downloads.html";
+    license = licenses.gpl2Plus;
+    maintainers = teams.sage.members;
+    platforms = platforms.unix;
+    homepage = "https://www.flintlib.org/";
+    downloadPage = "https://www.flintlib.org/downloads.html";
     updateWalker = true;
   };
 }
diff --git a/pkgs/development/libraries/libcouchbase/default.nix b/pkgs/development/libraries/libcouchbase/default.nix
index 9cb83c5bf654..9e271a781e11 100644
--- a/pkgs/development/libraries/libcouchbase/default.nix
+++ b/pkgs/development/libraries/libcouchbase/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "libcouchbase";
-  version = "3.1.3";
+  version = "3.1.4";
 
   src = fetchFromGitHub {
     owner = "couchbase";
     repo = "libcouchbase";
     rev = version;
-    sha256 = "16mafxkdbns33yjyc2p3j2iajjpyq0zp66wpjir2qj1w3kgggcw8";
+    sha256 = "sha256-6IBTUodKpE/RkqQb0IwSEgXfnIhfYyNNrZt5hxJ6DV8=";
   };
 
   cmakeFlags = [ "-DLCB_NO_MOCK=ON" ];
diff --git a/pkgs/development/libraries/portaudio/default.nix b/pkgs/development/libraries/portaudio/default.nix
index 840c9e773f49..4666850c5849 100644
--- a/pkgs/development/libraries/portaudio/default.nix
+++ b/pkgs/development/libraries/portaudio/default.nix
@@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
 
   configureFlags = [ "--disable-mac-universal" "--enable-cxx" ];
 
-  NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang "-Wno-error=deprecated-declarations -Wno-error=implicit-const-int-float-conversion -Wno-error=nullability-completeness-on-arrays";
+  NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang "-Wno-error=deprecated-declarations -Wno-error=nullability-completeness-on-arrays";
 
   propagatedBuildInputs = lib.optionals stdenv.isDarwin [ AudioUnit AudioToolbox CoreAudio CoreServices Carbon ];
 
diff --git a/pkgs/development/ocaml-modules/ca-certs-nss/default.nix b/pkgs/development/ocaml-modules/ca-certs-nss/default.nix
index 5e6691a9feba..31dea9201bbb 100644
--- a/pkgs/development/ocaml-modules/ca-certs-nss/default.nix
+++ b/pkgs/development/ocaml-modules/ca-certs-nss/default.nix
@@ -16,13 +16,13 @@
 
 buildDunePackage rec {
   pname = "ca-certs-nss";
-  version = "3.64.0.1";
+  version = "3.66";
 
-  minimumOCamlVersion = "4.07";
+  minimumOCamlVersion = "4.08";
 
   src = fetchurl {
     url = "https://github.com/mirage/ca-certs-nss/releases/download/v${version}/ca-certs-nss-v${version}.tbz";
-    sha256 = "909c64076491647471f785527bfdd9a886a34504edabf88542b43f27b86067f9";
+    sha256 = "f0f8035b470f2a48360b92d0e6287f41f98e4ba71576a1cd4c9246c468932f09";
   };
 
   useDune2 = true;
diff --git a/pkgs/development/ocaml-modules/carton/default.nix b/pkgs/development/ocaml-modules/carton/default.nix
index c10537d5d506..81893ae9ac36 100644
--- a/pkgs/development/ocaml-modules/carton/default.nix
+++ b/pkgs/development/ocaml-modules/carton/default.nix
@@ -7,14 +7,14 @@
 
 buildDunePackage rec {
   pname = "carton";
-  version = "0.4.1";
+  version = "0.4.2";
 
   useDune2 = true;
   minimumOCamlVersion = "4.08";
 
   src = fetchurl {
     url = "https://github.com/mirage/ocaml-git/releases/download/${pname}-v${version}/${pname}-${pname}-v${version}.tbz";
-    sha256 = "d16aad5560d9ab1e3b4d93d2e8fdea638c216ff47338fb630a8aefd22b452665";
+    sha256 = "a0a03b2f7bb7dafe070bc6a74583b6d6da714d2c636dd4d5a6443c9f299ceacc";
   };
 
   # remove changelogs for mimic and the git* packages
diff --git a/pkgs/development/ocaml-modules/decompress/default.nix b/pkgs/development/ocaml-modules/decompress/default.nix
index 505ffe3c4257..4681e5a1879b 100644
--- a/pkgs/development/ocaml-modules/decompress/default.nix
+++ b/pkgs/development/ocaml-modules/decompress/default.nix
@@ -4,7 +4,7 @@
 }:
 
 buildDunePackage rec {
-  version = "1.4.0";
+  version = "1.4.1";
   pname = "decompress";
 
   minimumOCamlVersion = "4.07";
@@ -13,7 +13,7 @@ buildDunePackage rec {
 
   src = fetchurl {
     url = "https://github.com/mirage/decompress/releases/download/v${version}/decompress-v${version}.tbz";
-    sha256 = "d1669e07446d73dd5e16f020d4a1682abcbb1b7a1e3bf19b805429636c26a19b";
+    sha256 = "0130ea6acb61b0a25393fa23148e116d7a17c77558196f7abddaee9e05a1d7a8";
   };
 
   buildInputs = [ cmdliner ];
diff --git a/pkgs/development/ocaml-modules/tcpip/default.nix b/pkgs/development/ocaml-modules/tcpip/default.nix
index 53656f00572a..635e9aea1171 100644
--- a/pkgs/development/ocaml-modules/tcpip/default.nix
+++ b/pkgs/development/ocaml-modules/tcpip/default.nix
@@ -13,27 +13,15 @@
 
 buildDunePackage rec {
   pname = "tcpip";
-  version = "6.1.0";
+  version = "6.2.0";
 
   useDune2 = true;
 
   src = fetchurl {
     url = "https://github.com/mirage/mirage-${pname}/releases/download/v${version}/${pname}-v${version}.tbz";
-    sha256 = "7b3ed2e1ca835c1cc65ac911bcb0de12ebc2b580dd195006bdea2cb387510474";
+    sha256 = "d0f6e643ce04da808d5f977c5ab2422cdb4f67e7abdc46dd6776ceada7151e1b";
   };
 
-  patches = [
-    ./makefile-no-opam.patch
-  ];
-
-  # Make tests compatible with alcotest 1.4.0
-  postPatch = ''
-    for p in common.ml test_tcp_options.ml
-    do
-      substituteInPlace test/$p --replace 'Fmt.kstrf Alcotest.fail' 'Fmt.kstrf (fun s -> Alcotest.fail s)'
-    done
-  '';
-
   nativeBuildInputs = [
     bisect_ppx
     ppx_cstruct
diff --git a/pkgs/development/ocaml-modules/tcpip/makefile-no-opam.patch b/pkgs/development/ocaml-modules/tcpip/makefile-no-opam.patch
deleted file mode 100644
index 1603a1278b0e..000000000000
--- a/pkgs/development/ocaml-modules/tcpip/makefile-no-opam.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/freestanding/Makefile b/freestanding/Makefile
-index f22d220d..3e97b4c5 100644
---- a/freestanding/Makefile
-+++ b/freestanding/Makefile
-@@ -1,4 +1,6 @@
--PKG_CONFIG_PATH := $(shell opam config var prefix)/lib/pkgconfig
-+ifneq (, $(shell command -v opam))
-+	PKG_CONFIG_PATH ?= $(shell opam config var prefix)/lib/pkgconfig
-+endif
- 
- EXISTS := $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) pkg-config --exists ocaml-freestanding; echo $$?)
- 
diff --git a/pkgs/development/ocaml-modules/x509/default.nix b/pkgs/development/ocaml-modules/x509/default.nix
index 0ce57b071689..85209098559a 100644
--- a/pkgs/development/ocaml-modules/x509/default.nix
+++ b/pkgs/development/ocaml-modules/x509/default.nix
@@ -8,11 +8,11 @@ buildDunePackage rec {
   minimumOCamlVersion = "4.07";
 
   pname = "x509";
-  version = "0.13.0";
+  version = "0.14.0";
 
   src = fetchurl {
     url = "https://github.com/mirleft/ocaml-x509/releases/download/v${version}/x509-v${version}.tbz";
-    sha256 = "4577c2a616bda45cc777869fc44e272397d63a029135a993df8937bcfd6f6c49";
+    sha256 = "9b42f34171261b2193ee662f096566c48c48e087949c186c288f90c9b3b9f498";
   };
 
   useDune2 = true;
diff --git a/pkgs/development/php-packages/composer/default.nix b/pkgs/development/php-packages/composer/default.nix
index aaa698e6d0c6..15dd3f5bc597 100644
--- a/pkgs/development/php-packages/composer/default.nix
+++ b/pkgs/development/php-packages/composer/default.nix
@@ -1,14 +1,14 @@
 { mkDerivation, fetchurl, makeWrapper, unzip, lib, php }:
 let
   pname = "composer";
-  version = "2.1.3";
+  version = "2.1.5";
 in
 mkDerivation {
   inherit pname version;
 
   src = fetchurl {
     url = "https://getcomposer.org/download/${version}/composer.phar";
-    sha256 = "04ad2zsnf8qi6hzs9sak6y8xxyx8l0f7crmcimnp7nn8vsc2x9zq";
+    sha256 = "1v4hjwbv1y5jvj91i2fj8bvmfsymp9ls8h231zd85svfqdy5b5dy";
   };
 
   dontUnpack = true;
diff --git a/pkgs/development/python-modules/asysocks/default.nix b/pkgs/development/python-modules/asysocks/default.nix
index 21a3ed2a8fe3..16e71a62ff4b 100644
--- a/pkgs/development/python-modules/asysocks/default.nix
+++ b/pkgs/development/python-modules/asysocks/default.nix
@@ -5,11 +5,11 @@
 
 buildPythonPackage rec {
   pname = "asysocks";
-  version = "0.1.1";
+  version = "0.1.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-7EzSALAJcx8BNHX44FeeiSPRcTe9UFHXQ4IoSKxMU8w=";
+    sha256 = "1hi9hzih265qlh7x32r5pbaqm9wkhm52yrdiksnd4gl5nrdgwcwv";
   };
 
   # Upstream hasn't release the tests yet
diff --git a/pkgs/development/python-modules/graphviz/default.nix b/pkgs/development/python-modules/graphviz/default.nix
index 0a2413e9d761..d0483864ff85 100644
--- a/pkgs/development/python-modules/graphviz/default.nix
+++ b/pkgs/development/python-modules/graphviz/default.nix
@@ -1,5 +1,6 @@
 { lib
 , buildPythonPackage
+, pythonOlder
 , fetchFromGitHub
 , substituteAll
 , graphviz
@@ -12,14 +13,16 @@
 
 buildPythonPackage rec {
   pname = "graphviz";
-  version = "0.16";
+  version = "0.17";
+
+  disabled = pythonOlder "3.6";
 
   # patch does not apply to PyPI tarball due to different line endings
   src = fetchFromGitHub {
     owner = "xflr6";
     repo = "graphviz";
     rev = version;
-    sha256 = "147vi60mi57z623lhllwwzczzicv2iwj1yrmllj5xx5788i73j6g";
+    sha256 = "sha256-K6z2C7hQH2A9bqgRR4MRqxVAH/k2NQBEelb2/6KDUr0=";
   };
 
   patches = [
diff --git a/pkgs/development/python-modules/graphviz/hardcode-graphviz-path.patch b/pkgs/development/python-modules/graphviz/hardcode-graphviz-path.patch
index fa2f634bbc29..ba25d54e3703 100644
--- a/pkgs/development/python-modules/graphviz/hardcode-graphviz-path.patch
+++ b/pkgs/development/python-modules/graphviz/hardcode-graphviz-path.patch
@@ -1,9 +1,9 @@
 diff --git a/graphviz/backend.py b/graphviz/backend.py
-index d2c4b97..f7175cd 100644
+index b66e616..3da4ef0 100644
 --- a/graphviz/backend.py
 +++ b/graphviz/backend.py
-@@ -122,7 +122,7 @@ def command(engine, format_, filepath=None, renderer=None, formatter=None):
-         raise ValueError('unknown formatter: %r' % formatter)
+@@ -124,7 +124,7 @@ def command(engine: str, format_: str, filepath=None,
+         raise ValueError(f'unknown formatter: {formatter!r}')
  
      output_format = [f for f in (format_, renderer, formatter) if f is not None]
 -    cmd = ['dot', '-K%s' % engine, '-T%s' % ':'.join(output_format)]
@@ -11,7 +11,7 @@ index d2c4b97..f7175cd 100644
  
      if filepath is None:
          rendered = None
-@@ -275,7 +275,7 @@ def unflatten(source,
+@@ -297,7 +297,7 @@ def unflatten(source: str,
      if fanout and stagger is None:
          raise RequiredArgumentError('fanout given without stagger')
  
@@ -20,8 +20,8 @@ index d2c4b97..f7175cd 100644
      if stagger is not None:
          cmd += ['-l', str(stagger)]
      if fanout:
-@@ -304,7 +304,7 @@ def version():
-         Graphviz Release version entry format
+@@ -332,7 +332,7 @@ def version() -> typing.Tuple[int, ...]:
+         Graphviz Release version entry format:
          https://gitlab.com/graphviz/graphviz/-/blob/f94e91ba819cef51a4b9dcb2d76153684d06a913/gen_version.py#L17-20
      """
 -    cmd = ['dot', '-V']
@@ -30,19 +30,19 @@ index d2c4b97..f7175cd 100644
                   stdout=subprocess.PIPE,
                   stderr=subprocess.STDOUT)
 diff --git a/tests/test_backend.py b/tests/test_backend.py
-index d10ef1a..e4aba58 100644
+index e0a0e1c..681f178 100644
 --- a/tests/test_backend.py
 +++ b/tests/test_backend.py
-@@ -52,7 +52,7 @@ def test_run_encoding_mocked(mocker, Popen, input=u'sp\xe4m', encoding='utf-8'):
+@@ -54,7 +54,7 @@ def test_run_encoding_mocked(mocker, Popen, input='sp\xe4m', encoding='utf-8'):
          m.decode.assert_called_once_with(encoding)
  
  
--@pytest.exe
+-@pytest.mark.exe
 +@pytest.mark.skip(reason='empty $PATH has no effect')
  @pytest.mark.usefixtures('empty_path')
  @pytest.mark.parametrize('func, args', [
      (render, ['dot', 'pdf', 'nonfilepath']),
-@@ -146,7 +146,7 @@ def test_render_mocked(capsys, mocker, Popen, quiet):  # noqa: N803
+@@ -148,7 +148,7 @@ def test_render_mocked(capsys, mocker, Popen, quiet):  # noqa: N803
  
      assert render('dot', 'pdf', 'nonfilepath', quiet=quiet) == 'nonfilepath.pdf'
  
@@ -51,8 +51,8 @@ index d10ef1a..e4aba58 100644
                                    stdout=subprocess.PIPE,
                                    stderr=subprocess.PIPE,
                                    cwd=None, startupinfo=mocker.ANY)
-@@ -208,7 +208,7 @@ def test_pipe_pipe_invalid_data_mocked(mocker, py2, Popen, quiet):  # noqa: N803
-     assert e.value.stdout is mocker.sentinel.out
+@@ -211,7 +211,7 @@ def test_pipe_pipe_invalid_data_mocked(mocker, Popen, quiet):  # noqa: N803
+     assert e.value.stdout is out
      e.value.stdout = mocker.sentinel.new_stdout
      assert e.value.stdout is mocker.sentinel.new_stdout
 -    Popen.assert_called_once_with(['dot', '-Kdot', '-Tpng'],
@@ -62,7 +62,7 @@ index d10ef1a..e4aba58 100644
                                    stderr=subprocess.PIPE,
 @@ -231,7 +231,7 @@ def test_pipe_mocked(capsys, mocker, Popen, quiet):  # noqa: N803
  
-     assert pipe('dot', 'png', b'nongraph', quiet=quiet) is mocker.sentinel.out
+     assert pipe('dot', 'png', b'nongraph', quiet=quiet) == b'stdout'
  
 -    Popen.assert_called_once_with(['dot', '-Kdot', '-Tpng'],
 +    Popen.assert_called_once_with(['@graphviz@/bin/dot', '-Kdot', '-Tpng'],
diff --git a/pkgs/development/python-modules/ignite/default.nix b/pkgs/development/python-modules/ignite/default.nix
index 432767b9f984..72a607505cdc 100644
--- a/pkgs/development/python-modules/ignite/default.nix
+++ b/pkgs/development/python-modules/ignite/default.nix
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "pytorch";
     repo = pname;
     rev = "v${version}";
-    sha256 = "057v8v5p2picmgiidr9lzjbh7nj54pv95m6lyya3y7dw4vzaamij";
+    sha256 = "sha256-FGFpaqq7InwRqFmQTmXGpJEjRUB69ZN/l20l42L2BAA=";
   };
 
   checkInputs = [ pytestCheckHook matplotlib mock pytest-xdist ];
@@ -33,8 +33,13 @@ buildPythonPackage rec {
   # models, which doesn't work in the sandbox.
   # avoid tests which need special packages
   pytestFlagsArray = [
+    "--ignore=tests/ignite/contrib/handlers/test_clearml_logger.py"
+    "--ignore=tests/ignite/contrib/handlers/test_lr_finder.py"
     "--ignore=tests/ignite/contrib/handlers/test_trains_logger.py"
+    "--ignore=tests/ignite/metrics/nlp/test_bleu.py"
+    "--ignore=tests/ignite/metrics/nlp/test_rouge.py"
     "--ignore=tests/ignite/metrics/test_dill.py"
+    "--ignore=tests/ignite/metrics/test_psnr.py"
     "--ignore=tests/ignite/metrics/test_ssim.py"
     "tests/"
   ];
@@ -42,16 +47,17 @@ buildPythonPackage rec {
   # disable tests which need specific packages
   disabledTests = [
     "idist"
-    "tensorboard"
     "mlflow"
-    "trains"
-    "visdom"
-    "test_setup_neptune"
-    "test_output_handler" # needs mlflow
+    "tensorboard"
     "test_integration"
+    "test_output_handler" # needs mlflow
     "test_pbar" # slight output differences
-    "test_write_results"
+    "test_setup_clearml_logging"
+    "test_setup_neptune"
     "test_setup_plx"
+    "test_write_results"
+    "trains"
+    "visdom"
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/imap-tools/default.nix b/pkgs/development/python-modules/imap-tools/default.nix
index 5d4e41c5e5f0..d1cecdda42d9 100644
--- a/pkgs/development/python-modules/imap-tools/default.nix
+++ b/pkgs/development/python-modules/imap-tools/default.nix
@@ -7,7 +7,7 @@
 
 buildPythonPackage rec {
   pname = "imap-tools";
-  version = "0.42.0";
+  version = "0.44.0";
 
   disabled = isPy27;
 
@@ -15,7 +15,7 @@ buildPythonPackage rec {
     owner = "ikvk";
     repo = "imap_tools";
     rev = "v${version}";
-    sha256 = "sha256-WNhhQ3iqqwyYyd+iOQVpsKAAfgJwJBaUR7rmYAEYUxw=";
+    sha256 = "sha256-C9396yRSowaLe3E1s+rw8bah77znjfoIhLwJpcqhN6Y=";
   };
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/jc/default.nix b/pkgs/development/python-modules/jc/default.nix
index 10f09d912e78..b09137d361b7 100644
--- a/pkgs/development/python-modules/jc/default.nix
+++ b/pkgs/development/python-modules/jc/default.nix
@@ -4,26 +4,31 @@
 , ruamel_yaml
 , xmltodict
 , pygments
-, isPy27
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "jc";
-  version = "1.15.4";
-  disabled = isPy27;
+  version = "1.16.0";
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "kellyjonbrazil";
-    repo = "jc";
+    repo = pname;
     rev = "v${version}";
-    sha256 = "1y3807i9rlif78qp1vq9n5hpzmc60i9h5ycw70gvf8mgzxxrl8jx";
+    sha256 = "sha256-6kh9FzMW5davxN8jNFFUh+PGSNAW7w8aeoJP25mGY10=";
   };
 
   propagatedBuildInputs = [ ruamel_yaml xmltodict pygments ];
 
   checkInputs = [ pytestCheckHook ];
 
+  pythonImportsCheck = [ "jc" ];
+
+  # tests require timezone to set America/Los_Angeles
+  doCheck = false;
+
   meta = with lib; {
     description = "This tool serializes the output of popular command line tools and filetypes to structured JSON output";
     homepage = "https://github.com/kellyjonbrazil/jc";
diff --git a/pkgs/development/python-modules/pyvicare/default.nix b/pkgs/development/python-modules/pyvicare/default.nix
index 274cb0379c29..4c06728a4198 100644
--- a/pkgs/development/python-modules/pyvicare/default.nix
+++ b/pkgs/development/python-modules/pyvicare/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "pyvicare";
-  version = "1.0.0";
+  version = "1.1";
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "somm15";
     repo = "PyViCare";
     rev = version;
-    sha256 = "05dlasx18fkmh4z1w8550yrb26fmsb5bc73wr9whmkasm32gpfl1";
+    sha256 = "1mkbz1gl8bv4j7q82cbc9d3dzx80brzdwrcp8z3kma1b91ig99bk";
   };
 
   SETUPTOOLS_SCM_PRETEND_VERSION = version;
diff --git a/pkgs/development/tools/analysis/tfsec/default.nix b/pkgs/development/tools/analysis/tfsec/default.nix
index 62c054396444..176dea9a7bd1 100644
--- a/pkgs/development/tools/analysis/tfsec/default.nix
+++ b/pkgs/development/tools/analysis/tfsec/default.nix
@@ -5,13 +5,13 @@
 
 buildGoPackage rec {
   pname = "tfsec";
-  version = "0.51.2";
+  version = "0.51.4";
 
   src = fetchFromGitHub {
     owner = "aquasecurity";
     repo = pname;
     rev = "v${version}";
-    sha256 = "18qblimn78w17gydy7h9sjl9ri1wkvzi5phsqz1dkk43i3ryjg3s";
+    sha256 = "0l9b6hdcfcyn03y5wsfganb3h2vsnlrs9y3vahnnlx4rvv51ldwf";
   };
 
   goPackagePath = "github.com/aquasecurity/tfsec";
diff --git a/pkgs/development/tools/database/dbmate/default.nix b/pkgs/development/tools/database/dbmate/default.nix
index 0e4609a1fa2c..5348d0be88c8 100644
--- a/pkgs/development/tools/database/dbmate/default.nix
+++ b/pkgs/development/tools/database/dbmate/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "dbmate";
-  version = "1.12.0";
+  version = "1.12.1";
 
   src = fetchFromGitHub {
     owner = "amacneil";
     repo = "dbmate";
     rev = "v${version}";
-    sha256 = "sha256-Kk8CtGw1lGNky2CUjaedh0IcDooaxWkeEnaYl/5jSTc=";
+    sha256 = "sha256-XNxy8CnhO3rQi3VHr7nikFNXvY2eM30jR0ngNc0FV3E=";
   };
 
   vendorSha256 = "sha256-Qe3fwyEf/NiGmUSha/zZHRBR1okw2vE97u7tybqiWNI=";
diff --git a/pkgs/development/tools/earthly/default.nix b/pkgs/development/tools/earthly/default.nix
index e806b502de86..ea8296b49f21 100644
--- a/pkgs/development/tools/earthly/default.nix
+++ b/pkgs/development/tools/earthly/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "earthly";
-  version = "0.5.18";
+  version = "0.5.20";
 
   src = fetchFromGitHub {
     owner = "earthly";
     repo = "earthly";
     rev = "v${version}";
-    sha256 = "sha256-YY4scGRMuvyEpeEgvoJJsTtROl11hMyGr7vYBYvJY/w=";
+    sha256 = "sha256-wPtL5fH6s4qlG82udeg9Gv4iNBjDEeKNTDFHPsW4V/A=";
   };
 
-  vendorSha256 = "sha256-aDkaOycQ/wPybSH5fnJIGtCOh+KV0wEF+qinRQQIdm4=";
+  vendorSha256 = "sha256-gydhh/EMSuE/beo+A2CRDdDnQGT6DMjMwthylT339I4=";
 
   buildFlagsArray = ''
     -ldflags=
@@ -35,7 +35,7 @@ buildGoModule rec {
     description = "Build automation for the container era";
     homepage = "https://earthly.dev/";
     changelog = "https://github.com/earthly/earthly/releases/tag/v${version}";
-    license = licenses.mpl20;
+    license = licenses.bsl11;
     maintainers = with maintainers; [ mdsp ];
   };
 }
diff --git a/pkgs/development/tools/evans/default.nix b/pkgs/development/tools/evans/default.nix
index dfc9d34b5ac5..bfe58a8dd041 100644
--- a/pkgs/development/tools/evans/default.nix
+++ b/pkgs/development/tools/evans/default.nix
@@ -2,18 +2,18 @@
 
 buildGoModule rec {
   pname = "evans";
-  version = "0.9.3";
+  version = "0.10.0";
 
   src = fetchFromGitHub {
     owner = "ktr0731";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-q8HWDZpUWaitdZcWkvKEWWbIWCj9VmWCxxhAdcYZx8s=";
+    sha256 = "sha256-Ftt3lnwLk2Zx1DxDmZx2hBqXcxzqUb6I/gEdQJuFsCc=";
   };
 
   subPackages = [ "." ];
 
-  vendorSha256 = "sha256-ntRlrbsQjZmVxEg9361Q+f6Wb/R393+sbOKOEh5VKPk=";
+  vendorSha256 = "sha256-WclmINHcgRtbRSZGv+lOgwuImHKVC9cfK8C+f9JBcts=";
 
   meta = with lib; {
     description = "More expressive universal gRPC client";
diff --git a/pkgs/development/tools/misc/apio/default.nix b/pkgs/development/tools/misc/apio/default.nix
new file mode 100644
index 000000000000..b810910f7fec
--- /dev/null
+++ b/pkgs/development/tools/misc/apio/default.nix
@@ -0,0 +1,69 @@
+{ lib
+, buildPythonApplication
+, fetchFromGitHub
+, click
+, semantic-version
+, requests
+, colorama
+, pyserial
+, wheel
+, setuptools
+, tinyprog
+, pytestCheckHook
+}:
+
+buildPythonApplication rec {
+  pname = "apio";
+  version = "0.7.5";
+  format = "flit";
+
+  src = fetchFromGitHub {
+    owner = "FPGAwars";
+    repo = "apio";
+    rev = "v${version}";
+    sha256 = "sha256-9f0q6tELUDo6FdjPG708d7BY3O5ZiZ0FwNFzBBiLQp4=";
+  };
+
+  postPatch = ''
+    substituteInPlace apio/managers/scons.py --replace \
+      'return "tinyprog --libusb --program"' \
+      'return "${tinyprog}/bin/tinyprog --libusb --program"'
+    substituteInPlace apio/util.py --replace \
+      '_command = join(get_bin_dir(), "tinyprog")' \
+      '_command = "${tinyprog}/bin/tinyprog"'
+
+    # semantic-version seems to not support version numbers like the one of tinyprog in Nixpkgs (1.0.24.dev114+gxxxxxxx).
+    # See https://github.com/rbarrois/python-semanticversion/issues/47.
+    # This leads to an error like "Error: Invalid version string: '1.0.24.dev114+g97f6353'"
+    # when executing "apio upload" for a TinyFPGA.
+    # Replace the dot with a dash to work around this problem.
+    substituteInPlace apio/managers/scons.py --replace \
+        'version = semantic_version.Version(pkg_version)' \
+        'version = semantic_version.Version(pkg_version.replace(".dev", "-dev"))'
+  '';
+
+  propagatedBuildInputs = [
+    click
+    semantic-version
+    requests
+    colorama
+    pyserial
+    wheel
+    setuptools # needs pkg_resources at runtime (technically not needed when tinyprog is also in this list because of the propagatedBuildInputs of tinyprog)
+
+    tinyprog # needed for upload to TinyFPGA
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pytestFlagsArray = [ "--offline" ];
+
+  meta = with lib; {
+    description = "Open source ecosystem for open FPGA boards";
+    homepage = "https://github.com/FPGAwars/apio";
+    license = licenses.gpl2Only;
+    maintainers = with maintainers; [ Luflosi ];
+  };
+}
diff --git a/pkgs/development/tools/parsing/lemon/default.nix b/pkgs/development/tools/parsing/lemon/default.nix
index 3db9e0f6d9ed..9c8786950d22 100644
--- a/pkgs/development/tools/parsing/lemon/default.nix
+++ b/pkgs/development/tools/parsing/lemon/default.nix
@@ -19,7 +19,7 @@ in stdenv.mkDerivation {
   pname = "lemon";
   version = "1.69";
 
-  phases = [ "buildPhase" "installPhase" ];
+  dontUnpack = true;
 
   buildPhase = ''
     sh -xc "$CC ${srcs.lemon} -o lemon"
diff --git a/pkgs/development/tools/postiats-utilities/default.nix b/pkgs/development/tools/postiats-utilities/default.nix
index 6d4db28f37e0..f65d96382ac0 100644
--- a/pkgs/development/tools/postiats-utilities/default.nix
+++ b/pkgs/development/tools/postiats-utilities/default.nix
@@ -19,8 +19,6 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ python3 python3Packages.wrapPython ];
 
-  phases = "unpackPhase patchPhase installPhase";
-
   postPatch = ''
     for f in pats-* postiats/*.py; do
       sed -i "$f" -e "1 s,python3,python,"
diff --git a/pkgs/development/tools/ronn/default.nix b/pkgs/development/tools/ronn/default.nix
index 8b5166272202..3569638b2183 100644
--- a/pkgs/development/tools/ronn/default.nix
+++ b/pkgs/development/tools/ronn/default.nix
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
     gemdir = ./.;
   };
 
-  phases = ["installPhase"];
+  dontUnpack = true;
 
   nativeBuildInputs = [ makeWrapper ];
 
diff --git a/pkgs/development/tools/thrust/default.nix b/pkgs/development/tools/thrust/default.nix
index cc46f3f5d340..9770a384e183 100644
--- a/pkgs/development/tools/thrust/default.nix
+++ b/pkgs/development/tools/thrust/default.nix
@@ -25,8 +25,6 @@ in stdenv.mkDerivation rec {
   nativeBuildInputs = [ makeWrapper unzip ];
   buildInputs = [ thrustEnv ];
 
-  phases = [ "installPhase" "fixupPhase" ];
-
   installPhase = ''
     mkdir -p $out/bin
     mkdir -p $out/libexec/thrust
diff --git a/pkgs/games/blackshades/default.nix b/pkgs/games/blackshades/default.nix
index 263d92dcea63..bd29c7b616c4 100644
--- a/pkgs/games/blackshades/default.nix
+++ b/pkgs/games/blackshades/default.nix
@@ -1,30 +1,29 @@
 { lib, stdenv, fetchFromSourcehut
-, SDL, SDL_image, libGLU, libGL, openal, libvorbis, freealut }:
+, SDL, stb, libGLU, libGL, openal, libvorbis, freealut }:
 
 stdenv.mkDerivation rec {
   pname = "blackshades";
-  version = "1.1.1";
+  version = "1.3.1";
 
   src = fetchFromSourcehut {
     owner = "~cnx";
     repo = pname;
     rev = version;
-    sha256 = "1gx43hcqahbd21ib8blhzmsrwqfzx4qy7f10ck0mh2zc4bfihz64";
+    sha256 = "0yzp74ynkcp6hh5m4zmvrgx5gwm186hq7p3m7qkww54qdyijb3rv";
   };
 
-  buildInputs = [ SDL SDL_image libGLU libGL openal libvorbis freealut ];
+  buildInputs = [ SDL stb libGLU libGL openal libvorbis freealut ];
 
-  patchPhase = ''
+  postPatch = ''
     sed -i -e s,Data/,$out/share/$pname/,g \
       -e s,Data:,$out/share/$pname/,g \
       src/*.cpp
   '';
 
   installPhase = ''
-    mkdir -p $out/bin $out/share/doc/$pname
+    mkdir -p $out/bin $out/share
     cp build/blackshades $out/bin
     cp -R Data $out/share/$pname
-    cp README.md $out/share/doc/$pname
   '';
 
   meta = {
diff --git a/pkgs/games/eduke32/default.nix b/pkgs/games/eduke32/default.nix
index e15cf241f759..8c7a79ff9822 100644
--- a/pkgs/games/eduke32/default.nix
+++ b/pkgs/games/eduke32/default.nix
@@ -16,13 +16,13 @@ let
 
 in stdenv.mkDerivation rec {
   pname = "eduke32";
-  version = "20200907";
-  rev = "9257";
-  revExtra = "93f62bbad";
+  version = "20210722";
+  rev = "9484";
+  revExtra = "f3fea8c15";
 
   src = fetchurl {
-    url = "http://dukeworld.duke4.net/eduke32/synthesis/latest/eduke32_src_${version}-${rev}-${revExtra}.tar.xz";
-    sha256 = "972630059be61ef9564a241b84ef2ee4f69fc85c19ee36ce46052ff2f1ce3bf9";
+    url = "http://dukeworld.duke4.net/eduke32/synthesis/${version}-${rev}-${revExtra}/eduke32_src_${version}-${rev}-${revExtra}.tar.xz";
+    sha256 = "0fdl2i465cl5x7129772ksx97lvim98m9009q5cfmf6scagj9pvz";
   };
 
   buildInputs = [ alsa-lib flac gtk2 libvorbis libvpx libGL libGLU SDL2 SDL2_mixer ];
diff --git a/pkgs/games/warzone2100/default.nix b/pkgs/games/warzone2100/default.nix
index feadcc7f8b21..6f31dcf9be9d 100644
--- a/pkgs/games/warzone2100/default.nix
+++ b/pkgs/games/warzone2100/default.nix
@@ -39,11 +39,11 @@ in
 
 stdenv.mkDerivation rec {
   inherit pname;
-  version  = "4.1.0";
+  version  = "4.1.1";
 
   src = fetchurl {
     url = "mirror://sourceforge/${pname}/releases/${version}/${pname}_src.tar.xz";
-    sha256 = "sha256-HQlphogK2jjTXV7cQ8lFNWjHMBnpStyvT3wKYjlDQW0=";
+    sha256 = "sha256-CnMt3FytpTDAtibU3V24i6EvWRc9UkAuvC9ingphCM8=";
   };
 
   buildInputs = [
diff --git a/pkgs/servers/dendrite/default.nix b/pkgs/servers/dendrite/default.nix
index 5f070aa398c1..5e6556029c02 100644
--- a/pkgs/servers/dendrite/default.nix
+++ b/pkgs/servers/dendrite/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "matrix-dendrite";
-  version = "0.3.11";
+  version = "0.4.0";
 
   src = fetchFromGitHub {
     owner = "matrix-org";
     repo = "dendrite";
     rev = "v${version}";
-    sha256 = "15xqd4yhsnnpz5n90fbny9i8lp7ki2z3fbpbd8cvsp49347rm483";
+    sha256 = "sha256-BzQp466Zlp7n56n4SUH4cDRTt8EUWGw3q1dxIBB3TBM=";
   };
 
-  vendorSha256 = "1l1wydvi0yalas79cvhrqg563cvs57hg9rv6qnkw879r6smb2x1n";
+  vendorSha256 = "sha256-ak7fWcAXbyVAiyaJZBGMoe2i2nDh4vc/gCC9nbjadJ0=";
 
   passthru.tests = {
     inherit (nixosTests) dendrite;
diff --git a/pkgs/servers/ldap/389/default.nix b/pkgs/servers/ldap/389/default.nix
index 34bb901f6713..aa46426142bd 100644
--- a/pkgs/servers/ldap/389/default.nix
+++ b/pkgs/servers/ldap/389/default.nix
@@ -43,13 +43,13 @@
 
 stdenv.mkDerivation rec {
   pname = "389-ds-base";
-  version = "2.0.6";
+  version = "2.0.7";
 
   src = fetchFromGitHub {
     owner = "389ds";
     repo = pname;
     rev = "${pname}-${version}";
-    sha256 = "sha256-MYLRrH3PrNdPVuRffiG39zzJK6eHJcvIDWn1q0IHrZ8=";
+    sha256 = "sha256-aM1qo+yHrCFespPWHv2f25ooqQVCIZGaZS43dY6kiC4=";
   };
 
   nativeBuildInputs = [ autoreconfHook pkg-config doxygen ];
diff --git a/pkgs/servers/monitoring/mackerel-agent/default.nix b/pkgs/servers/monitoring/mackerel-agent/default.nix
index 988d502e1432..d8987f9e5adc 100644
--- a/pkgs/servers/monitoring/mackerel-agent/default.nix
+++ b/pkgs/servers/monitoring/mackerel-agent/default.nix
@@ -2,20 +2,20 @@
 
 buildGoModule rec {
   pname = "mackerel-agent";
-  version = "0.71.2";
+  version = "0.72.1";
 
   src = fetchFromGitHub {
     owner = "mackerelio";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-O67xzL4avCOh2x6qJCScOWR2TS1hfP5S6jHHELNbZWQ=";
+    sha256 = "sha256-pUbZY+TjSZNOrmRarYVUDI0HoIUMY0LacdFSdqQ/7D4=";
   };
 
   nativeBuildInputs = [ makeWrapper ];
   checkInputs = lib.optionals (!stdenv.isDarwin) [ nettools ];
   buildInputs = lib.optionals (!stdenv.isDarwin) [ iproute2 ];
 
-  vendorSha256 = "sha256-iFWQoAnB0R6XwjdPvOWJdNTmEZ961zE51vDrmZ7r4Jk=";
+  vendorSha256 = "sha256-trVfF4voye6CQ5WK78yBT86fgSUFyxaCtsZx6kXgYGE=";
 
   subPackages = [ "." ];
 
diff --git a/pkgs/shells/zsh/spaceship-prompt/default.nix b/pkgs/shells/zsh/spaceship-prompt/default.nix
index e5725a78fc54..1e699997fd8e 100644
--- a/pkgs/shells/zsh/spaceship-prompt/default.nix
+++ b/pkgs/shells/zsh/spaceship-prompt/default.nix
@@ -2,13 +2,13 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "spaceship-prompt";
-  version = "3.12.6";
+  version = "3.12.25";
 
   src = fetchFromGitHub {
     owner = "denysdovhan";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-tKFah8b62wuw5vaNHddmj31UNd9kKCcQ99p8GlTnR6s=";
+    sha256 = "sha256-qDy0HkaX3N7VGptv88gB3284yDTbp2EpiZ1kvaLX8dc=";
   };
 
   dontBuild = true;
diff --git a/pkgs/tools/filesystems/squashfs/0001-Mksquashfs-add-no-hardlinks-option.patch b/pkgs/tools/filesystems/squashfs/0001-Mksquashfs-add-no-hardlinks-option.patch
deleted file mode 100644
index 0d6804a647b2..000000000000
--- a/pkgs/tools/filesystems/squashfs/0001-Mksquashfs-add-no-hardlinks-option.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From d925c9a11ee2e88ac8aac03f51892746f2bcf8cd Mon Sep 17 00:00:00 2001
-From: Phillip Lougher <phillip@squashfs.org.uk>
-Date: Thu, 25 Feb 2021 23:12:10 +0000
-Subject: [PATCH] Mksquashfs: add -no-hardlinks option
-
-Normally Mksquashfs will detect hardlinks (multiple files with the
-same inode) and hardlink them in the Squashfs image.
-
-But often hardlinks are used in the original filesystem
-to save space, when files are discovered to be duplicate.
-In this special case the only reason the files are
-hardlinked is to save space, and where the filesystem
-doesn't handle duplicate files (different inode, same
-data).
-
-Squashfs does handle duplicate files, and so add
-an option to ignore hardlinks and instead
-store them as duplicates.
-
-Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
----
- squashfs-tools/mksquashfs.c | 16 +++++++++++-----
- 1 file changed, 11 insertions(+), 5 deletions(-)
-
-diff --git a/squashfs-tools/mksquashfs.c b/squashfs-tools/mksquashfs.c
-index a45b77f..d4dc359 100644
---- a/squashfs-tools/mksquashfs.c
-+++ b/squashfs-tools/mksquashfs.c
-@@ -312,6 +312,9 @@ struct dir_info *root_dir;
- FILE *log_fd;
- int logging=FALSE;
- 
-+/* Should Mksquashfs detect hardlinked files? */
-+int no_hardlinks = FALSE;
-+
- static char *read_from_disk(long long start, unsigned int avail_bytes);
- void add_old_root_entry(char *name, squashfs_inode inode, int inode_number,
- 	int type);
-@@ -3093,11 +3096,11 @@ struct inode_info *lookup_inode3(struct stat *buf, int pseudo, int id,
- 
- 	/*
- 	 * Look-up inode in hash table, if it already exists we have a
--	 * hard-link, so increment the nlink count and return it.
--	 * Don't do the look-up for directories because we don't hard-link
--	 * directories.
-+	 * hardlink, so increment the nlink count and return it.
-+	 * Don't do the look-up for directories because Unix/Linux doesn't
-+	 * allow hard-links to directories.
- 	 */
--	if ((buf->st_mode & S_IFMT) != S_IFDIR) {
-+	if ((buf->st_mode & S_IFMT) != S_IFDIR && !no_hardlinks) {
- 		for(inode = inode_info[ino_hash]; inode; inode = inode->next) {
- 			if(memcmp(buf, &inode->buf, sizeof(struct stat)) == 0) {
- 				inode->nlink ++;
-@@ -5447,7 +5450,9 @@ int main(int argc, char *argv[])
- 		comp = lookup_compressor(COMP_DEFAULT);
- 
- 	for(i = source + 2; i < argc; i++) {
--		if(strcmp(argv[i], "-mkfs-time") == 0 ||
-+		if(strcmp(argv[i], "-no-hardlinks") == 0)
-+			no_hardlinks = TRUE;
-+		else if(strcmp(argv[i], "-mkfs-time") == 0 ||
- 				strcmp(argv[i], "-fstime") == 0) {
- 			if((++i == argc) || !parse_num_unsigned(argv[i], &mkfs_time)) {
- 				ERROR("%s: %s missing or invalid time value\n", argv[0], argv[i - 1]);
-@@ -5893,6 +5898,7 @@ printOptions:
- 				"files larger than block size\n");
- 			ERROR("-no-duplicates\t\tdo not perform duplicate "
- 				"checking\n");
-+			ERROR("-no-hardlinks\t\tdo not hardlink files, instead store duplicates\n");
- 			ERROR("-all-root\t\tmake all files owned by root\n");
- 			ERROR("-root-mode <mode>\tset root directory permissions to octal <mode>\n");
- 			ERROR("-force-uid <uid>\tset all file uids to <uid>\n");
--- 
-2.30.0
-
diff --git a/pkgs/tools/filesystems/squashfs/4k-align.patch b/pkgs/tools/filesystems/squashfs/4k-align.patch
index e73c06788756..db0af95601c5 100644
--- a/pkgs/tools/filesystems/squashfs/4k-align.patch
+++ b/pkgs/tools/filesystems/squashfs/4k-align.patch
@@ -1,6 +1,7 @@
-This patch has been edited to apply to squashfs 4.4, commit
-52eb4c279cd283ed9802dd1ceb686560b22ffb67. Below is the original
-message body of the patch.
+This patch is an old patch; see below for the original message body. The patch
+has been updated twice: Once to apply to squashfs 4.4, commit
+52eb4c279cd283ed9802dd1ceb686560b22ffb67, and later to apply to squashfs 4.5,
+commit 0496d7c3de3e09da37ba492081c86159806ebb07.
 
 From 7bda7c75748f36b0a50f93e46144d5a4de4974ad Mon Sep 17 00:00:00 2001
 From: Amin Hassani <ahassani@google.com>
@@ -20,24 +21,23 @@ increased_size = (number_of_unfragmented_files_in_image + number of fragments) *
 
 The 4k alignment can be enabled by flag '-4k-align'
 ---
- squashfs-tools/mksquashfs.c | 16 ++++++++++++++++
- 1 file changed, 16 insertions(+)
+ squashfs-tools/mksquashfs.c | 17 +++++++++++++++++
+ 1 file changed, 17 insertions(+)
 
 diff --git a/squashfs-tools/mksquashfs.c b/squashfs-tools/mksquashfs.c
-index a45b77f..07b1c06 100644
+index aaa4b00..eb2fb23 100644
 --- a/squashfs-tools/mksquashfs.c
 +++ b/squashfs-tools/mksquashfs.c
-@@ -102,7 +102,9 @@ int old_exclude = TRUE;
- int use_regex = FALSE;
- int nopad = FALSE;
+@@ -99,6 +99,8 @@ int nopad = FALSE;
  int exit_on_error = FALSE;
-+int do_4k_align = FALSE;
  long long start_offset = 0;
+ int sleep_time = 0;
++int do_4k_align = FALSE;
 +#define ALIGN_UP(bytes, size) (bytes = (bytes + size - 1) & ~(size - 1))
  
  long long global_uid = -1, global_gid = -1;
  
-@@ -1546,6 +1548,9 @@ void unlock_fragments()
+@@ -1553,6 +1555,9 @@ static void unlock_fragments()
  	 * queue at this time.
  	 */
  	while(!queue_empty(locked_fragment)) {
@@ -47,7 +47,7 @@ index a45b77f..07b1c06 100644
  		write_buffer = queue_get(locked_fragment);
  		frg = write_buffer->block;	
  		size = SQUASHFS_COMPRESSED_SIZE_BLOCK(fragment_table[frg].size);
-@@ -2478,6 +2483,9 @@ void *frag_deflator(void *arg)
+@@ -2460,6 +2465,9 @@ static void *frag_deflator(void *arg)
  		write_buffer->size = compressed_size;
  		pthread_mutex_lock(&fragment_mutex);
  		if(fragments_locked == FALSE) {
@@ -57,18 +57,26 @@ index a45b77f..07b1c06 100644
  			fragment_table[file_buffer->block].size = c_byte;
  			fragment_table[file_buffer->block].start_block = bytes;
  			write_buffer->block = bytes;
-@@ -2877,6 +2885,10 @@ int write_file_blocks(squashfs_inode *inode, struct dir_ent *dir_ent,
- 	long long sparse = 0;
- 	struct file_buffer *fragment_buffer = NULL;
+@@ -2850,6 +2858,10 @@ static struct file_info *write_file_blocks(int *status, struct dir_ent *dir_ent,
+ 	struct file_info *file;
+ 	int bl_hash = 0;
  
 +	// 4k align the start of each file.
 +	if(do_4k_align)
 +		ALIGN_UP(bytes, 4096);
 +
- 	if(pre_duplicate(read_size))
- 		return write_file_blocks_dup(inode, dir_ent, read_buffer, dup);
+ 	if(pre_duplicate(read_size, dir_ent->inode, read_buffer, &bl_hash))
+ 		return write_file_blocks_dup(status, dir_ent, read_buffer, dup, bl_hash);
  
-@@ -4972,6 +4984,7 @@ void write_filesystem_tables(struct squashfs_super_block *sBlk, int nopad)
+@@ -5975,6 +5987,7 @@ static void print_options(FILE *stream, char *name, int total_mem)
+ 	fprintf(stream, "actions from <f>\n");
+ 	fprintf(stream, "-false-action-file <f>\tas -false-action, but read ");
+ 	fprintf(stream, "actions from <f>\n");
++	fprintf(stream, "-4k-align\t\tenables 4k alignment of all files\n");
+ 	fprintf(stream, "\nFilesystem filter options:\n");
+ 	fprintf(stream, "-p <pseudo-definition>\tAdd pseudo file definition\n");
+ 	fprintf(stream, "-pf <pseudo-file>\tAdd list of pseudo file definitions\n");
+@@ -6198,6 +6211,7 @@ static void print_summary()
  		"compressed", no_fragments ? "no" : noF ? "uncompressed" :
  		"compressed", no_xattrs ? "no" : noX ? "uncompressed" :
  		"compressed", noI || noId ? "uncompressed" : "compressed");
@@ -76,23 +84,15 @@ index a45b77f..07b1c06 100644
  	printf("\tduplicates are %sremoved\n", duplicate_checking ? "" :
  		"not ");
  	printf("Filesystem size %.2f Kbytes (%.2f Mbytes)\n", bytes / 1024.0,
-@@ -5853,6 +5866,8 @@ print_compressor_options:
+@@ -7499,6 +7513,9 @@ print_compressor_options:
  			root_name = argv[i];
  		} else if(strcmp(argv[i], "-version") == 0) {
- 			VERSION();
+ 			print_version("mksquashfs");
++
 +		} else if(strcmp(argv[i], "-4k-align") == 0) {
 +			do_4k_align = TRUE;
  		} else {
  			ERROR("%s: invalid option\n\n", argv[0]);
- printOptions:
-@@ -5904,6 +5919,7 @@ printOptions:
- 			ERROR("\t\t\tdirectory containing that directory, "
- 				"rather than the\n");
- 			ERROR("\t\t\tcontents of the directory\n");
-+			ERROR("-4k-align\t\tenables 4k alignment of all files\n");
- 			ERROR("\nFilesystem filter options:\n");
- 			ERROR("-p <pseudo-definition>\tAdd pseudo file "
- 				"definition\n");
+ 			print_options(stderr, argv[0], total_mem);
 -- 
-2.23.0
-
+2.32.0
diff --git a/pkgs/tools/filesystems/squashfs/default.nix b/pkgs/tools/filesystems/squashfs/default.nix
index cddb1722584b..2c8cd317f661 100644
--- a/pkgs/tools/filesystems/squashfs/default.nix
+++ b/pkgs/tools/filesystems/squashfs/default.nix
@@ -10,23 +10,19 @@
 
 stdenv.mkDerivation rec {
   pname = "squashfs";
-  version = "4.4";
+  version = "4.5";
 
   src = fetchFromGitHub {
     owner = "plougher";
     repo = "squashfs-tools";
     rev = version;
-    sha256 = "0697fv8n6739mcyn57jclzwwbbqwpvjdfkv1qh9s56lvyqnplwaw";
+    sha256 = "1nanwz5qvsakxfm37md5i7xqagv69nfik9hpj8qlp6ymw266vgxr";
   };
 
   patches = [
     # This patch adds an option to pad filesystems (increasing size) in
     # exchange for better chunking / binary diff calculation.
     ./4k-align.patch
-    # Add -no-hardlinks option. This is a rebased version of
-    # c37bb4da4a5fa8c1cf114237ba364692dd522262, can be removed
-    # when upgrading to the next version after 4.4
-    ./0001-Mksquashfs-add-no-hardlinks-option.patch
   ] ++ lib.optional stdenv.isDarwin ./darwin.patch;
 
   buildInputs = [ zlib xz zstd lz4 lzo ];
diff --git a/pkgs/tools/misc/lrzsz/default.nix b/pkgs/tools/misc/lrzsz/default.nix
index 55c11b00c93c..09e90ca07940 100644
--- a/pkgs/tools/misc/lrzsz/default.nix
+++ b/pkgs/tools/misc/lrzsz/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl }:
+{ lib, stdenv, gettext, fetchurl, fetchpatch }:
 
 stdenv.mkDerivation rec {
   name = "lrzsz-0.12.20";
@@ -8,6 +8,16 @@ stdenv.mkDerivation rec {
     sha256 = "1wcgfa9fsigf1gri74gq0pa7pyajk12m4z69x7ci9c6x9fqkd2y2";
   };
 
+  patches = [
+    (fetchpatch {
+      name = "CVE-2018-10195.patch";
+      url = "https://bugzilla.redhat.com/attachment.cgi?id=79507";
+      sha256 = "0jlh8w0cjaz6k56f0h3a0h4wgc51axmrdn3mdspk7apjfzqcvx3c";
+    })
+  ];
+
+  nativeBuildInputs = [ gettext ];
+
   hardeningDisable = [ "format" ];
 
   configureFlags = [ "--program-transform-name=s/^l//" ];
diff --git a/pkgs/tools/misc/twurl/Gemfile b/pkgs/tools/misc/twurl/Gemfile
new file mode 100644
index 000000000000..55b6e9f5650b
--- /dev/null
+++ b/pkgs/tools/misc/twurl/Gemfile
@@ -0,0 +1,3 @@
+source "https://rubygems.org"
+
+gem 'twurl'
diff --git a/pkgs/tools/misc/twurl/Gemfile.lock b/pkgs/tools/misc/twurl/Gemfile.lock
new file mode 100644
index 000000000000..d29268e656dd
--- /dev/null
+++ b/pkgs/tools/misc/twurl/Gemfile.lock
@@ -0,0 +1,15 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    oauth (0.5.6)
+    twurl (0.9.6)
+      oauth (~> 0.4)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  twurl
+
+BUNDLED WITH
+   2.1.4
diff --git a/pkgs/tools/misc/twurl/default.nix b/pkgs/tools/misc/twurl/default.nix
new file mode 100644
index 000000000000..dccb67fbaf6c
--- /dev/null
+++ b/pkgs/tools/misc/twurl/default.nix
@@ -0,0 +1,17 @@
+{ lib, bundlerApp, bundlerUpdateScript }:
+
+bundlerApp {
+  pname = "twurl";
+  gemdir = ./.;
+  exes = [ "twurl" ];
+
+  passthru.updateScript = bundlerUpdateScript "twurl";
+
+  meta = with lib; {
+    description = "OAuth-enabled curl for the Twitter API";
+    homepage    = "https://github.com/twitter/twurl";
+    license     = "MIT";
+    maintainers = with maintainers; [ brecht ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/pkgs/tools/misc/twurl/gemset.nix b/pkgs/tools/misc/twurl/gemset.nix
new file mode 100644
index 000000000000..a1a2ed835d3e
--- /dev/null
+++ b/pkgs/tools/misc/twurl/gemset.nix
@@ -0,0 +1,23 @@
+{
+  oauth = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1zwd6v39yqfdrpg1p3d9jvzs9ljg55ana2p06m0l7qn5w0lgx1a0";
+      type = "gem";
+    };
+    version = "0.5.6";
+  };
+  twurl = {
+    dependencies = ["oauth"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1jgsxa0cnkajnsxxlsrgl2wq3m7khaxvr0rcir4vwbc1hx210700";
+      type = "gem";
+    };
+    version = "0.9.6";
+  };
+}
diff --git a/pkgs/tools/security/doppler/default.nix b/pkgs/tools/security/doppler/default.nix
index d71350e3d741..df466b0012d9 100644
--- a/pkgs/tools/security/doppler/default.nix
+++ b/pkgs/tools/security/doppler/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "doppler";
-  version = "3.25.0";
+  version = "3.26.0";
 
   src = fetchFromGitHub {
     owner = "dopplerhq";
     repo = "cli";
     rev = version;
-    sha256 = "sha256-9knCRS5pUFSmevpQbM0DQimGpAt2Fn1XpREg0ZWRIUQ=";
+    sha256 = "sha256-x6LQDQ+DRfP4d87OWEppqk4FV7SHuRMog4m0DOWkvF4=";
   };
 
   vendorSha256 = "sha256-UaR/xYGMI+C9aID85aPSfVzmTWXj4KcjfOJ6TTJ8KoY=";
diff --git a/pkgs/tools/security/fail2ban/default.nix b/pkgs/tools/security/fail2ban/default.nix
index 30e86f66a582..18128639ff4a 100644
--- a/pkgs/tools/security/fail2ban/default.nix
+++ b/pkgs/tools/security/fail2ban/default.nix
@@ -1,15 +1,14 @@
 { lib, stdenv, fetchFromGitHub, python3 }:
 
-let version = "0.11.2"; in
 
-python3.pkgs.buildPythonApplication {
+python3.pkgs.buildPythonApplication rec {
   pname = "fail2ban";
-  inherit version;
+  version = "0.11.2";
 
   src = fetchFromGitHub {
-    owner  = "fail2ban";
-    repo   = "fail2ban";
-    rev    = version;
+    owner = "fail2ban";
+    repo = "fail2ban";
+    rev = version;
     sha256 = "q4U9iWCa1zg8sA+6pPNejt6v/41WGIKN5wITJCrCqQE=";
   };
 
@@ -42,18 +41,20 @@ python3.pkgs.buildPythonApplication {
     ${stdenv.shell} ./fail2ban-2to3
   '';
 
-  postInstall = let
-    sitePackages = "$out/${python3.sitePackages}";
-  in ''
-    # see https://github.com/NixOS/nixpkgs/issues/4968
-    rm -rf ${sitePackages}/etc ${sitePackages}/usr ${sitePackages}/var;
-  '';
+  postInstall =
+    let
+      sitePackages = "$out/${python3.sitePackages}";
+    in
+    ''
+      # see https://github.com/NixOS/nixpkgs/issues/4968
+      rm -r ${sitePackages}/etc ${sitePackages}/usr
+    '';
 
   meta = with lib; {
-    homepage    = "https://www.fail2ban.org/";
+    homepage = "https://www.fail2ban.org/";
     description = "A program that scans log files for repeated failing login attempts and bans IP addresses";
-    license     = licenses.gpl2Plus;
+    license = licenses.gpl2Plus;
     maintainers = with maintainers; [ eelco lovek323 fpletz ];
-    platforms   = platforms.linux ++ platforms.darwin;
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/tools/security/ic-keysmith/default.nix b/pkgs/tools/security/ic-keysmith/default.nix
new file mode 100644
index 000000000000..9e480d64d18e
--- /dev/null
+++ b/pkgs/tools/security/ic-keysmith/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "keysmith";
+  version = "1.6.0";
+
+  src = fetchFromGitHub {
+    owner = "dfinity";
+    repo = "keysmith";
+    rev = "v${version}";
+    sha256 = "1z0sxirk71yabgilq8v5lz4nd2bbm1xyrd5zppif8k9jqhr6v3v3";
+  };
+
+  vendorSha256 = "1p0r15ihmnmrybf12cycbav80sdj2dv2kry66f4hjfjn6k8zb0dc";
+
+  meta = with lib; {
+    description = "Hierarchical Deterministic Key Derivation for the Internet Computer";
+    homepage = "https://github.com/dfinity/keysmith";
+    license = licenses.mit;
+    maintainers = with maintainers; [ imalison ];
+  };
+}
diff --git a/pkgs/tools/security/quill-qr/default.nix b/pkgs/tools/security/quill-qr/default.nix
new file mode 100644
index 000000000000..55c2f45cc683
--- /dev/null
+++ b/pkgs/tools/security/quill-qr/default.nix
@@ -0,0 +1,45 @@
+{ coreutils
+, fetchFromGitHub
+, gzip
+, jq
+, lib
+, makeWrapper
+, qrencode
+, stdenvNoCC
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "quill-qr";
+  version = "0.1.0";
+
+  src = fetchFromGitHub {
+    owner = "IvanMalison";
+    repo = "quill-qr";
+    rev = "v${version}";
+    sha256 = "1kdsq6csmxfvs2wy31bc9r92l5pkmzlzkyqrangvrf4pbk3sk0r6";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  dontBuild = true;
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -a quill-qr.sh $out/bin/quill-qr.sh
+    patchShebangs $out/bin
+
+    wrapProgram $out/bin/quill-qr.sh --prefix PATH : "${lib.makeBinPath [
+      qrencode
+      coreutils
+      jq
+      gzip
+    ]}"
+  '';
+
+  meta = with lib; {
+    description = "Print QR codes for use with https://p5deo-6aaaa-aaaab-aaaxq-cai.raw.ic0.app/";
+    homepage = "https://github.com/IvanMalison/quill-qr";
+    maintainers = with maintainers; [ imalison ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/pkgs/tools/virtualization/cloud-init/default.nix b/pkgs/tools/virtualization/cloud-init/default.nix
index 1a0188127aa9..439cf47e55c1 100644
--- a/pkgs/tools/virtualization/cloud-init/default.nix
+++ b/pkgs/tools/virtualization/cloud-init/default.nix
@@ -76,6 +76,8 @@ buildPythonApplication rec {
     "TestConsumeUserDataHttp"
     # Chef Omnibus
     "TestInstallChefOmnibus"
+    # https://github.com/canonical/cloud-init/pull/893
+    "TestGetPackageMirrorInfo"
   ];
 
   disabledTestPaths = [
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index f2a7e3c7af6d..8a0ac74a862c 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -1153,6 +1153,8 @@ in
 
   arduino-mk = callPackage ../development/arduino/arduino-mk {};
 
+  apio = python3Packages.callPackage ../development/tools/misc/apio { };
+
   apitrace = libsForQt514.callPackage ../applications/graphics/apitrace {};
 
   argtable = callPackage ../development/libraries/argtable { };
@@ -3902,6 +3904,8 @@ in
 
   c14 = callPackage ../applications/networking/c14 { };
 
+  corehunt = libsForQt5.callPackage ../applications/misc/corehunt { };
+
   certstrap = callPackage ../tools/security/certstrap { };
 
   cfssl = callPackage ../tools/security/cfssl { };
@@ -8276,9 +8280,7 @@ in
 
   ucx = callPackage ../development/libraries/ucx {};
 
-  openmodelica = callPackage ../applications/science/misc/openmodelica {
-    jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
-  };
+  openmodelica = recurseIntoAttrs (callPackage ../applications/science/misc/openmodelica {});
 
   qarte = libsForQt5.callPackage ../applications/video/qarte { };
 
@@ -9551,6 +9553,8 @@ in
 
   twtxt = python3Packages.callPackage ../applications/networking/twtxt { };
 
+  twurl = callPackage ../tools/misc/twurl { };
+
   txr = callPackage ../tools/misc/txr { stdenv = clangStdenv; };
 
   txt2man = callPackage ../tools/misc/txt2man { };
@@ -19595,6 +19599,8 @@ in
 
   hyprspace = callPackage ../applications/networking/hyprspace { inherit (darwin) iproute2mac; };
 
+  ic-keysmith = callPackage ../tools/security/ic-keysmith { };
+
   icecream = callPackage ../servers/icecream { };
 
   icingaweb2-ipl = callPackage ../servers/icingaweb2/ipl.nix { };
@@ -25556,6 +25562,8 @@ in
 
   mark = callPackage ../tools/text/mark { };
 
+  markets = callPackage ../applications/misc/markets { };
+
   marp = callPackage ../applications/office/marp { };
 
   magnetico = callPackage ../applications/networking/p2p/magnetico { };
@@ -26726,6 +26734,8 @@ in
     tag = "-daemon-qt5";
   };
 
+  quill-qr = callPackage ../tools/security/quill-qr { };
+
   quirc = callPackage ../tools/graphics/quirc {};
 
   quilter = callPackage ../applications/editors/quilter { };
@@ -27336,7 +27346,9 @@ in
 
   taskopen = callPackage ../applications/misc/taskopen { };
 
-  tdesktop = qt5.callPackage ../applications/networking/instant-messengers/telegram/tdesktop { };
+  tdesktop = qt5.callPackage ../applications/networking/instant-messengers/telegram/tdesktop {
+    inherit (xorg) libpthreadstubs libXdmcp;
+  };
 
   tektoncd-cli = callPackage ../applications/networking/cluster/tektoncd-cli { };