From fd06c8fc9f497975bac50a8f3188fcb9a3a40477 Mon Sep 17 00:00:00 2001
From: notgne2 <gen2@gen2.space>
Date: Fri, 13 Jan 2023 00:10:14 -0700
Subject: [PATCH 01/46] nixos/systemd-initrd: allow symlink into when checking
 for `/prepare-root`

---
 nixos/modules/system/boot/systemd/initrd.nix | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/nixos/modules/system/boot/systemd/initrd.nix b/nixos/modules/system/boot/systemd/initrd.nix
index d30f61146e18..6ecb46b52f1c 100644
--- a/nixos/modules/system/boot/systemd/initrd.nix
+++ b/nixos/modules/system/boot/systemd/initrd.nix
@@ -493,7 +493,7 @@ in {
 
           # If we are not booting a NixOS closure (e.g. init=/bin/sh),
           # we don't know what root to prepare so we don't do anything
-          if ! [ -x "/sysroot$closure/prepare-root" ]; then
+          if ! [ -x "/sysroot$(readlink "/sysroot$closure/prepare-root" || echo "$closure/prepare-root")" ]; then
             echo "NEW_INIT=''${initParam[1]}" > /etc/switch-root.conf
             echo "$closure does not look like a NixOS installation - not activating"
             exit 0

From 3e1fdaf2e5d9f13fa0d5b08e866201173ef70b98 Mon Sep 17 00:00:00 2001
From: yater <vater@bsd.services>
Date: Thu, 19 Jan 2023 10:40:25 +0100
Subject: [PATCH 02/46] nixos/nextcloud: fix typo in option description

an option services.nextcloud.nginx.enableImagemagick does not exist.
---
 nixos/modules/services/web-apps/nextcloud.nix | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/nixos/modules/services/web-apps/nextcloud.nix b/nixos/modules/services/web-apps/nextcloud.nix
index 90801e996817..f5fb5d7a3dd5 100644
--- a/nixos/modules/services/web-apps/nextcloud.nix
+++ b/nixos/modules/services/web-apps/nextcloud.nix
@@ -79,7 +79,7 @@ in {
       (which can be opened e.g. by running `nixos-help`).
     '')
     (mkRemovedOptionModule [ "services" "nextcloud" "disableImagemagick" ] ''
-      Use services.nextcloud.nginx.enableImagemagick instead.
+      Use services.nextcloud.enableImagemagick instead.
     '')
   ];
 

From 4ed059d041c25cc2d933620d3a27d74dfa7ccb97 Mon Sep 17 00:00:00 2001
From: Nikolay Korotkiy <sikmir@disroot.org>
Date: Fri, 10 Feb 2023 21:39:15 +0300
Subject: [PATCH 03/46] vmTools: update debian versions

---
 pkgs/build-support/vm/default.nix | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/pkgs/build-support/vm/default.nix b/pkgs/build-support/vm/default.nix
index 84754e580302..a6f03094df58 100644
--- a/pkgs/build-support/vm/default.nix
+++ b/pkgs/build-support/vm/default.nix
@@ -1032,22 +1032,22 @@ rec {
     };
 
     debian11i386 = {
-      name = "debian-11.5-bullseye-i386";
-      fullName = "Debian 11.5 Bullseye (i386)";
+      name = "debian-11.6-bullseye-i386";
+      fullName = "Debian 11.6 Bullseye (i386)";
       packagesList = fetchurl {
-        url = "https://snapshot.debian.org/archive/debian/20221126T084953Z/dists/bullseye/main/binary-i386/Packages.xz";
-        hash = "sha256-tHrWSd4K5TCwIaLTPqK/Rcon0O0r+Jsxb7OcchOo8Vo=";
+        url = "https://snapshot.debian.org/archive/debian/20230131T034648Z/dists/bullseye/main/binary-i386/Packages.xz";
+        hash = "sha256-z9eG7RlvelEnZAaeCfIO+XxTZVL3d+zTA7ShU43l/pw=";
       };
       urlPrefix = "mirror://debian";
       packages = commonDebianPackages;
     };
 
     debian11x86_64 = {
-      name = "debian-11.5-bullseye-amd64";
-      fullName = "Debian 11.5 Bullseye (amd64)";
+      name = "debian-11.6-bullseye-amd64";
+      fullName = "Debian 11.6 Bullseye (amd64)";
       packagesList = fetchurl {
-        url = "https://snapshot.debian.org/archive/debian/20221126T084953Z/dists/bullseye/main/binary-amd64/Packages.xz";
-        hash = "sha256-whpBERKOPyhrWguVQ2QchrwRHU4tCkGwu42x6khF/2g=";
+        url = "https://snapshot.debian.org/archive/debian/20230131T034648Z/dists/bullseye/main/binary-amd64/Packages.xz";
+        hash = "sha256-mz0eCWdn6uWt40OxsSPheHzEnMeLE52yR/vpb48/VF0=";
       };
       urlPrefix = "mirror://debian";
       packages = commonDebianPackages;

From 53cd64ce18c415dbf47e16c69f8e412e40f731f1 Mon Sep 17 00:00:00 2001
From: Tobias Markus <tobias@miglix.eu>
Date: Fri, 10 Feb 2023 13:49:23 +0100
Subject: [PATCH 04/46] pyside2: Add qt3d to buildInputs

PySide2 will not build its qt3d component unless qt3d is added to
buildInputs.
This is part of the effort to package Meshroom.
(Related Meshroom PRs: #215528 and #215728)
---
 pkgs/development/python-modules/pyside2/default.nix | 1 +
 1 file changed, 1 insertion(+)

diff --git a/pkgs/development/python-modules/pyside2/default.nix b/pkgs/development/python-modules/pyside2/default.nix
index 9d6a3c640798..1b1f54874376 100644
--- a/pkgs/development/python-modules/pyside2/default.nix
+++ b/pkgs/development/python-modules/pyside2/default.nix
@@ -49,6 +49,7 @@ stdenv.mkDerivation rec {
     qtcharts
     qtsensors
     qtsvg
+    qt3d
   ]) ++ (with python.pkgs; [
     setuptools
   ]) ++ (lib.optionals (python.pythonOlder "3.9") [

From b0f5cb08bf1f2f7d5a4c659bdd451b904cf7250e Mon Sep 17 00:00:00 2001
From: Tobias Markus <tobias@miglix.eu>
Date: Sat, 11 Feb 2023 01:42:45 +0100
Subject: [PATCH 05/46] pyside2: Disable on Python 3.11 or later

PySide2 does not support Python versions after 3.10.

See https://bugreports.qt.io/browse/PYSIDE-1864
"There are no plans to support Python versions > 3.10 in the 5.15 branch."
---
 pkgs/development/python-modules/pyside2/default.nix | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/pkgs/development/python-modules/pyside2/default.nix b/pkgs/development/python-modules/pyside2/default.nix
index 1b1f54874376..be281be33c4e 100644
--- a/pkgs/development/python-modules/pyside2/default.nix
+++ b/pkgs/development/python-modules/pyside2/default.nix
@@ -1,4 +1,6 @@
 { python
+, pythonAtLeast
+, disabledIf
 , fetchurl
 , lib
 , stdenv
@@ -9,6 +11,10 @@
 , shiboken2
 }:
 
+# Only build when Python<=3.10
+# See https://bugreports.qt.io/browse/PYSIDE-1864
+# "There are no plans to support Python versions > 3.10 in the 5.15 branch."
+disabledIf (pythonAtLeast "3.11") (
 stdenv.mkDerivation rec {
   pname = "pyside2";
   version = "5.15.5";
@@ -74,4 +80,4 @@ stdenv.mkDerivation rec {
     homepage = "https://wiki.qt.io/Qt_for_Python";
     maintainers = with maintainers; [ gebner ];
   };
-}
+})

From af9ab54357371cde8ce7afd458738dfb4e401731 Mon Sep 17 00:00:00 2001
From: Bobby Rong <rjl931189261@126.com>
Date: Sun, 12 Feb 2023 14:09:18 +0000
Subject: [PATCH 06/46] =?UTF-8?q?evolution:=203.46.3=20=E2=86=92=203.46.4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

https://gitlab.gnome.org/GNOME/evolution/-/compare/3.46.3...3.46.4
---
 .../networking/mailreaders/evolution/evolution/default.nix    | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/pkgs/applications/networking/mailreaders/evolution/evolution/default.nix b/pkgs/applications/networking/mailreaders/evolution/evolution/default.nix
index a5ed92f519e3..65bb334611a6 100644
--- a/pkgs/applications/networking/mailreaders/evolution/evolution/default.nix
+++ b/pkgs/applications/networking/mailreaders/evolution/evolution/default.nix
@@ -44,11 +44,11 @@
 
 stdenv.mkDerivation rec {
   pname = "evolution";
-  version = "3.46.3";
+  version = "3.46.4";
 
   src = fetchurl {
     url = "mirror://gnome/sources/evolution/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "riIQdCXTDRejo0w1bNpfQKrXhG12vbYINEUYtdQpwfM=";
+    sha256 = "eghCMc7SRaNLcT141Dp3Zgyso79S5qT1AwpqCAxpez0=";
   };
 
   nativeBuildInputs = [

From 549d7f905ecda05d3dbb6765e77f490c83be140a Mon Sep 17 00:00:00 2001
From: Bobby Rong <rjl931189261@126.com>
Date: Sun, 12 Feb 2023 14:10:54 +0000
Subject: [PATCH 07/46] =?UTF-8?q?evolution-data-server:=203.46.3=20?=
 =?UTF-8?q?=E2=86=92=203.46.4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

https://gitlab.gnome.org/GNOME/evolution-data-server/-/compare/3.46.3...3.46.4
---
 pkgs/desktops/gnome/core/evolution-data-server/default.nix    | 4 ++--
 .../gnome/core/evolution-data-server/hardcode-gsettings.patch | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/pkgs/desktops/gnome/core/evolution-data-server/default.nix b/pkgs/desktops/gnome/core/evolution-data-server/default.nix
index 082483b1c247..f5ea57f1f800 100644
--- a/pkgs/desktops/gnome/core/evolution-data-server/default.nix
+++ b/pkgs/desktops/gnome/core/evolution-data-server/default.nix
@@ -50,13 +50,13 @@
 
 stdenv.mkDerivation rec {
   pname = "evolution-data-server";
-  version = "3.46.3";
+  version = "3.46.4";
 
   outputs = [ "out" "dev" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/evolution-data-server/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "CTjiJ55c+8IgR2bKnT/qVwkRaZsHwQy+AaymKn6LK+4=";
+    sha256 = "pZslQUXFn6zXx7U4LbeNxfDtH2pum4/n1edZWfk8DMg=";
   };
 
   patches = [
diff --git a/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.patch b/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.patch
index dfe109f57bda..c0cfade44b4e 100644
--- a/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.patch
+++ b/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.patch
@@ -298,7 +298,7 @@ index e61160c..b6553a4 100644
  		G_CALLBACK (mi_user_headers_settings_changed_cb), NULL);
  	G_UNLOCK (mi_user_headers);
 diff --git a/src/camel/providers/imapx/camel-imapx-server.c b/src/camel/providers/imapx/camel-imapx-server.c
-index 611d5c8..4790fca 100644
+index 28755e2..da8c40c 100644
 --- a/src/camel/providers/imapx/camel-imapx-server.c
 +++ b/src/camel/providers/imapx/camel-imapx-server.c
 @@ -5593,7 +5593,18 @@ camel_imapx_server_skip_old_flags_update (CamelStore *store)

From 1543d46a89571e41d377f35c1bd74288a0581d81 Mon Sep 17 00:00:00 2001
From: Bobby Rong <rjl931189261@126.com>
Date: Sun, 12 Feb 2023 14:12:58 +0000
Subject: [PATCH 08/46] =?UTF-8?q?evolution-ews:=203.46.3=20=E2=86=92=203.4?=
 =?UTF-8?q?6.4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

https://gitlab.gnome.org/GNOME/evolution-ews/-/compare/3.46.3...3.46.4
---
 .../mailreaders/evolution/evolution-ews/default.nix           | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/pkgs/applications/networking/mailreaders/evolution/evolution-ews/default.nix b/pkgs/applications/networking/mailreaders/evolution/evolution-ews/default.nix
index 8033a734b981..49e8852fd0ce 100644
--- a/pkgs/applications/networking/mailreaders/evolution/evolution-ews/default.nix
+++ b/pkgs/applications/networking/mailreaders/evolution/evolution-ews/default.nix
@@ -22,11 +22,11 @@
 
 stdenv.mkDerivation rec {
   pname = "evolution-ews";
-  version = "3.46.3";
+  version = "3.46.4";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "BFnqQFY2OKWllPQt3BzHGRotOCLCEcz/+82LNtMmQCU=";
+    sha256 = "bLYE99MKkh7MgxA9ZPKOj1+1VcFT9mHSQvayB/9Hy58=";
   };
 
   patches = [

From b75c6c70bdca991cd0c4f4a700899bd9b2480bc7 Mon Sep 17 00:00:00 2001
From: Bobby Rong <rjl931189261@126.com>
Date: Sun, 12 Feb 2023 14:13:53 +0000
Subject: [PATCH 09/46] =?UTF-8?q?gnome.gnome-software:=2043.3=20=E2=86=92?=
 =?UTF-8?q?=2043.4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

https://gitlab.gnome.org/GNOME/gnome-software/-/compare/43.3...43.4
---
 pkgs/desktops/gnome/core/gnome-software/default.nix | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/pkgs/desktops/gnome/core/gnome-software/default.nix b/pkgs/desktops/gnome/core/gnome-software/default.nix
index 450da49cf980..591bd397c0ac 100644
--- a/pkgs/desktops/gnome/core/gnome-software/default.nix
+++ b/pkgs/desktops/gnome/core/gnome-software/default.nix
@@ -45,11 +45,11 @@ in
 
 stdenv.mkDerivation rec {
   pname = "gnome-software";
-  version = "43.3";
+  version = "43.4";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-software/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "k+6AdHl4rSzALlrnPQo9Psgu6hNPx3niqpFpAbu1gJA=";
+    sha256 = "6d8GDrq1n0lpfV7yYw7DbeYEVBadwZGvYNNINyCq2z4=";
   };
 
   patches = [

From a9237c3a605ff641fe7986d1c00b5faf87324f7d Mon Sep 17 00:00:00 2001
From: figsoda <figsoda@pm.me>
Date: Mon, 13 Feb 2023 09:16:50 -0500
Subject: [PATCH 10/46] Revert "irr1: add meta.changelog"

This reverts commit 9937c807887d7e784c86b346cfd135813284a771.
---
 pkgs/development/libraries/irr1/default.nix | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/pkgs/development/libraries/irr1/default.nix b/pkgs/development/libraries/irr1/default.nix
index ba4a99b2bb80..8740919ce3ae 100644
--- a/pkgs/development/libraries/irr1/default.nix
+++ b/pkgs/development/libraries/irr1/default.nix
@@ -4,25 +4,25 @@
 , cmake
 }:
 
-stdenv.mkDerivation (self: {
+stdenv.mkDerivation rec {
   pname = "irr1";
   version = "1.9.4";
 
   src = fetchFromGitHub {
     owner = "berndporr";
     repo = "iir1";
-    rev = self.version;
+    rev = version;
     hash = "sha256-T8gl51IkZIGq+6D5ge4Kb3wm5aw7Rhphmnf6TTGwHbs=";
   };
 
   nativeBuildInputs = [ cmake ];
 
   meta = {
-    homepage = "http://berndporr.github.io/iir1/";
     description = "A DSP IIR realtime filter library written in C++";
-    changelog = "https://github.com/berndporr/iir1/releases/tag/${self.version}";
+    downloadPage = "https://github.com/berndporr/iir1";
+    homepage = "http://berndporr.github.io/iir1/";
     license = lib.licenses.mit;
     maintainers = [ lib.maintainers.AndersonTorres ];
     platforms = lib.platforms.unix;
   };
-})
+}

From 78aa32e76e2e7e1c15a2353d9df0f62360a33781 Mon Sep 17 00:00:00 2001
From: figsoda <figsoda@pm.me>
Date: Mon, 13 Feb 2023 09:16:56 -0500
Subject: [PATCH 11/46] Revert "dosbox-staging: add meta.changelog"

This reverts commit cb534023c0ee0669bd3fd14dc38a7aa2ef7c2652.
---
 .../emulators/dosbox-staging/default.nix      | 52 +++++++++----------
 1 file changed, 24 insertions(+), 28 deletions(-)

diff --git a/pkgs/applications/emulators/dosbox-staging/default.nix b/pkgs/applications/emulators/dosbox-staging/default.nix
index d66f9136bcf1..f26fb7c9d76c 100644
--- a/pkgs/applications/emulators/dosbox-staging/default.nix
+++ b/pkgs/applications/emulators/dosbox-staging/default.nix
@@ -1,15 +1,10 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, SDL2
-, SDL2_image
-, SDL2_net
-, alsa-lib
+{ alsa-lib
 , copyDesktopItems
+, fetchFromGitHub
 , fluidsynth
 , glib
 , gtest
-, irr1
+, lib
 , libGL
 , libGLU
 , libjack2
@@ -25,17 +20,22 @@
 , ninja
 , opusfile
 , pkg-config
+, irr1
+, SDL2
+, SDL2_image
+, SDL2_net
 , speexdsp
+, stdenv
 }:
 
-stdenv.mkDerivation (self: {
+stdenv.mkDerivation rec {
   pname = "dosbox-staging";
   version = "0.80.1";
 
   src = fetchFromGitHub {
-    owner = "dosbox-staging";
-    repo = "dosbox-staging";
-    rev = "v${self.version}";
+    owner = pname;
+    repo = pname;
+    rev = "v${version}";
     hash = "sha256-I90poBeLSq1c8PXyjrx7/UcbfqFNnnNiXfJdWhLPGMc=";
   };
 
@@ -49,9 +49,6 @@ stdenv.mkDerivation (self: {
   ];
 
   buildInputs = [
-    SDL2
-    SDL2_image
-    SDL2_net
     alsa-lib
     fluidsynth
     glib
@@ -66,6 +63,9 @@ stdenv.mkDerivation (self: {
     libslirp
     libsndfile
     opusfile
+    SDL2
+    SDL2_image
+    SDL2_net
     speexdsp
   ];
 
@@ -91,17 +91,17 @@ stdenv.mkDerivation (self: {
     # original dosbox. Doing it this way allows us to work with frontends and
     # launchers that expect the binary to be named dosbox, but get out of the
     # way of vanilla dosbox if the user desires to install that as well.
-    mv $out/bin/dosbox $out/bin/${self.pname}
+    mv $out/bin/dosbox $out/bin/${pname}
     makeWrapper $out/bin/dosbox-staging $out/bin/dosbox
 
     # Create a symlink to dosbox manual instead of merely copying it
     pushd $out/share/man/man1/
-    mv dosbox.1.gz ${self.pname}.1.gz
-    ln -s ${self.pname}.1.gz dosbox.1.gz
+    mv dosbox.1.gz ${pname}.1.gz
+    ln -s ${pname}.1.gz dosbox.1.gz
     popd
   '';
 
-  meta = {
+  meta = with lib; {
     homepage = "https://dosbox-staging.github.io/";
     description = "A modernized DOS emulator";
     longDescription = ''
@@ -110,14 +110,10 @@ stdenv.mkDerivation (self: {
       existing DOSBox codebase while leveraging modern development tools and
       practices.
     '';
-    changelog = "https://github.com/dosbox-staging/dosbox-staging/releases/tag/v${self.version}";
-    license = lib.licenses.gpl2Plus;
-    maintainers = [
-      lib.maintainers.joshuafern
-      lib.maintainers.AndersonTorres
-    ];
-    platforms = lib.platforms.unix;
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ joshuafern AndersonTorres ];
+    platforms = platforms.unix;
     priority = 101;
   };
-})
-# TODO: report upstream about not finding extra SDL2 libraries
+}
+# TODO: report upstream about not finding SDL2_net

From cdb39a86e0dd7cda3a057f4f4795485a5c9b9be5 Mon Sep 17 00:00:00 2001
From: Felix Buehler <account@buehler.rocks>
Date: Mon, 6 Feb 2023 21:49:02 +0100
Subject: [PATCH 12/46] treewide: use optionalString

---
 nixos/tests/predictable-interface-names.nix   |  2 +-
 pkgs/applications/audio/espeak/default.nix    |  4 ++--
 pkgs/applications/audio/musly/default.nix     |  4 ++--
 .../lightdm-tiny-greeter/default.nix          |  4 ++--
 pkgs/applications/editors/texmacs/common.nix  | 16 +++++++-------
 .../editors/vim/plugins/vim-utils.nix         |  6 +++---
 .../file-managers/vifm/default.nix            |  4 ++--
 pkgs/applications/misc/blender/default.nix    |  4 ++--
 .../browsers/firefox-bin/update.nix           |  2 +-
 .../browsers/google-chrome/default.nix        |  2 +-
 .../science/biology/plink-ng/default.nix      |  2 +-
 .../science/electronics/kicad/base.nix        |  5 ++---
 .../science/electronics/kicad/default.nix     |  2 +-
 .../science/logic/coq/default.nix             | 12 +++++------
 .../science/math/sage/sage-tests.nix          |  2 +-
 .../openmodelica/mkderivation/default.nix     |  2 +-
 .../window-managers/dwl/default.nix           |  4 ++--
 .../alternatives/blas/default.nix             |  8 +++----
 .../alternatives/lapack/default.nix           |  8 +++----
 .../bintools-wrapper/default.nix              |  5 ++---
 .../build-bazel-package/default.nix           |  6 +++---
 .../build-fhs-userenv-bubblewrap/env.nix      |  2 +-
 pkgs/build-support/build-fhs-userenv/env.nix  |  4 ++--
 pkgs/build-support/cc-wrapper/default.nix     |  4 +---
 .../build-support/fetchdocker/credentials.nix |  2 +-
 pkgs/build-support/fetchfossil/default.nix    |  4 ++--
 pkgs/build-support/fetchgit/default.nix       |  4 +---
 pkgs/build-support/fetchhg/default.nix        |  4 ++--
 pkgs/build-support/fetchpatch/default.nix     |  2 +-
 .../build-support/nuke-references/default.nix |  2 +-
 pkgs/build-support/release/binary-tarball.nix |  4 ++--
 pkgs/build-support/release/debian-build.nix   |  2 +-
 pkgs/build-support/release/default.nix        |  4 ++--
 pkgs/build-support/release/maven-build.nix    |  6 +++---
 pkgs/build-support/release/nix-build.nix      |  4 ++--
 pkgs/build-support/release/rpm-build.nix      |  4 ++--
 .../rust/build-rust-crate/default.nix         |  2 +-
 pkgs/build-support/vm/default.nix             |  2 +-
 pkgs/development/compilers/gcc/10/default.nix |  8 +++----
 pkgs/development/compilers/gcc/11/default.nix |  8 +++----
 pkgs/development/compilers/gcc/12/default.nix |  6 +++---
 pkgs/development/compilers/gcc/6/default.nix  |  8 +++----
 pkgs/development/compilers/gcc/7/default.nix  |  8 +++----
 pkgs/development/compilers/gcc/8/default.nix  |  8 +++----
 pkgs/development/compilers/gcc/9/default.nix  |  8 +++----
 pkgs/development/compilers/go/1.18.nix        |  4 ++--
 pkgs/development/compilers/go/1.19.nix        |  4 ++--
 pkgs/development/compilers/go/1.20.nix        |  4 ++--
 .../compilers/jetbrains-jdk/default.nix       |  4 ++--
 .../compilers/llvm/10/bintools/default.nix    |  7 ++-----
 .../compilers/llvm/11/bintools/default.nix    |  7 ++-----
 .../compilers/llvm/12/bintools/default.nix    |  7 ++-----
 .../compilers/llvm/13/bintools/default.nix    |  7 ++-----
 .../compilers/llvm/14/bintools/default.nix    |  7 ++-----
 .../compilers/llvm/15/bintools/default.nix    |  7 ++-----
 .../compilers/llvm/7/bintools/default.nix     |  7 ++-----
 .../compilers/llvm/8/bintools/default.nix     |  7 ++-----
 .../compilers/llvm/9/bintools/default.nix     |  7 ++-----
 .../compilers/llvm/git/bintools/default.nix   |  5 +----
 pkgs/development/compilers/sbcl/2.x.nix       |  2 +-
 pkgs/development/compilers/solc/default.nix   |  2 +-
 .../compilers/swift/wrapper/default.nix       |  3 +--
 .../haskell-modules/make-package-set.nix      |  2 +-
 .../haskell-modules/package-list.nix          |  5 ++---
 .../generate-dhall-directory-package.nix      |  2 +-
 .../interpreters/octave/default.nix           |  2 +-
 .../interpreters/python/pypy/default.nix      |  2 +-
 .../interpreters/python/pypy/prebuilt.nix     |  2 +-
 .../interpreters/python/pypy/prebuilt_2_7.nix |  2 +-
 .../interpreters/ruby/ruby-version.nix        |  6 +++---
 pkgs/development/libraries/botan/generic.nix  |  2 +-
 .../development/libraries/galario/default.nix |  2 +-
 .../development/libraries/gettext/default.nix |  2 +-
 pkgs/development/libraries/glibc/common.nix   |  2 +-
 pkgs/development/libraries/lame/default.nix   |  2 +-
 .../development/libraries/libvirt/default.nix |  2 +-
 pkgs/development/libraries/libvpx/1_8.nix     |  2 +-
 pkgs/development/libraries/libvpx/default.nix |  2 +-
 .../libraries/physics/applgrid/default.nix    |  4 ++--
 .../science/math/amd-blis/default.nix         |  2 +-
 .../science/math/p4est-sc/default.nix         |  4 ++--
 .../libraries/science/math/p4est/default.nix  |  2 +-
 .../libraries/science/math/petsc/default.nix  |  4 ++--
 pkgs/development/libraries/udns/default.nix   | 12 ++++-------
 .../mobile/titaniumenv/build-app.nix          |  3 +--
 .../mobile/titaniumenv/titaniumsdk-7.5.nix    |  5 ++---
 .../mobile/titaniumenv/titaniumsdk-8.2.nix    |  5 ++---
 .../development/mobile/xcodeenv/build-app.nix |  2 +-
 pkgs/development/node-packages/overrides.nix  |  6 +-----
 .../python-modules/h5py/default.nix           |  2 +-
 .../python-modules/optuna/default.nix         |  4 ++--
 .../python-modules/tensorflow/default.nix     |  2 +-
 .../ruby-modules/bundled-common/default.nix   |  5 ++---
 .../development/tools/misc/distcc/default.nix |  8 +++----
 .../tools/poetry2nix/poetry2nix/lib.nix       |  2 +-
 .../poetry2nix/overrides/default.nix          |  6 +++---
 pkgs/games/factorio/default.nix               |  2 +-
 pkgs/games/oilrush/default.nix                |  3 +--
 pkgs/games/sgt-puzzles/default.nix            |  2 +-
 pkgs/misc/cups/drivers/samsung/4.01.17.nix    |  2 +-
 pkgs/misc/source-and-tags/default.nix         |  2 +-
 pkgs/os-specific/linux/musl/default.nix       |  3 +--
 .../os-specific/linux/pcmciautils/default.nix |  4 ++--
 .../os-specific/windows/wxMSW-2.8/default.nix |  2 +-
 pkgs/servers/computing/storm/default.nix      |  2 +-
 pkgs/servers/pulseaudio/default.nix           |  2 +-
 pkgs/servers/roapi/http.nix                   |  2 +-
 pkgs/stdenv/generic/check-meta.nix            |  2 +-
 pkgs/stdenv/linux/default.nix                 |  4 ++--
 .../admin/google-cloud-sdk/components.nix     | 10 ++++-----
 pkgs/tools/misc/grub/2.0x.nix                 |  4 +---
 pkgs/tools/misc/grub/trusted.nix              |  5 +----
 pkgs/tools/misc/hdf4/default.nix              | 21 +++++++++++--------
 .../networkmanager/fortisslvpn/default.nix    |  2 +-
 .../networkmanager/iodine/default.nix         |  2 +-
 .../networkmanager/l2tp/default.nix           |  2 +-
 .../networkmanager/sstp/default.nix           |  2 +-
 pkgs/tools/text/unoconv/default.nix           |  4 ++--
 118 files changed, 225 insertions(+), 281 deletions(-)

diff --git a/nixos/tests/predictable-interface-names.nix b/nixos/tests/predictable-interface-names.nix
index 08773120bc12..fa9bd67073bd 100644
--- a/nixos/tests/predictable-interface-names.nix
+++ b/nixos/tests/predictable-interface-names.nix
@@ -13,7 +13,7 @@ in pkgs.lib.listToAttrs (builtins.map ({ predictable, withNetworkd }: {
   name = pkgs.lib.optionalString (!predictable) "un" + "predictable"
        + pkgs.lib.optionalString withNetworkd "Networkd";
   value = makeTest {
-    name = "${if predictable then "" else "un"}predictableInterfaceNames${if withNetworkd then "-with-networkd" else ""}";
+    name = "${lib.optionalString (!predictable) "un"}predictableInterfaceNames${lib.optionalString withNetworkd "-with-networkd"}";
     meta = {};
 
     nodes.machine = { lib, ... }: {
diff --git a/pkgs/applications/audio/espeak/default.nix b/pkgs/applications/audio/espeak/default.nix
index 2c59068720d0..7164cb5fd3e0 100644
--- a/pkgs/applications/audio/espeak/default.nix
+++ b/pkgs/applications/audio/espeak/default.nix
@@ -19,9 +19,9 @@ stdenv.mkDerivation rec {
   prePatch = ''
     sed -e s,/bin/ln,ln,g -i src/Makefile
     sed -e 's,^CXXFLAGS=-O2,CXXFLAGS=-O2 -D PATH_ESPEAK_DATA=\\\"$(DATADIR)\\\",' -i src/Makefile
-  '' + (if portaudio.api_version == 19 then ''
+  '' + (lib.optionalString (portaudio.api_version == 19) ''
     cp src/portaudio19.h src/portaudio.h
-  '' else "");
+  '');
 
   configurePhase = ''
     cd src
diff --git a/pkgs/applications/audio/musly/default.nix b/pkgs/applications/audio/musly/default.nix
index 0d10b55d3296..470d5c105075 100644
--- a/pkgs/applications/audio/musly/default.nix
+++ b/pkgs/applications/audio/musly/default.nix
@@ -10,11 +10,11 @@ stdenv.mkDerivation {
   };
   nativeBuildInputs = [ cmake ];
   buildInputs = [ eigen ffmpeg ];
-  fixupPhase = if stdenv.isDarwin then ''
+  fixupPhase = lib.optionalString stdenv.isDarwin ''
     install_name_tool -change libmusly.dylib $out/lib/libmusly.dylib $out/bin/musly
     install_name_tool -change libmusly_resample.dylib $out/lib/libmusly_resample.dylib $out/bin/musly
     install_name_tool -change libmusly_resample.dylib $out/lib/libmusly_resample.dylib $out/lib/libmusly.dylib
-  '' else "";
+  '';
 
   meta = with lib; {
     homepage = "https://www.musly.org";
diff --git a/pkgs/applications/display-managers/lightdm-tiny-greeter/default.nix b/pkgs/applications/display-managers/lightdm-tiny-greeter/default.nix
index 5c2a6d7c59b0..53f004c2a367 100644
--- a/pkgs/applications/display-managers/lightdm-tiny-greeter/default.nix
+++ b/pkgs/applications/display-managers/lightdm-tiny-greeter/default.nix
@@ -15,9 +15,9 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ pkg-config wrapGAppsHook ];
   buildInputs = [ lightdm gtk3 glib ];
 
-  postUnpack = if conf != "" then ''
+  postUnpack = lib.optionalString (conf != "") ''
     cp ${builtins.toFile "config.h" conf} source/config.h
-  '' else "";
+  '';
 
   buildPhase = ''
     mkdir -p $out/bin $out/share/xgreeters
diff --git a/pkgs/applications/editors/texmacs/common.nix b/pkgs/applications/editors/texmacs/common.nix
index e52d95f837df..82dd13920b02 100644
--- a/pkgs/applications/editors/texmacs/common.nix
+++ b/pkgs/applications/editors/texmacs/common.nix
@@ -27,18 +27,18 @@ rec {
 
   postPatch = (if tex == null then ''
     gunzip < ${fullFontsSrc} | (cd TeXmacs && tar xvf -)
-   '' else if extraFonts then ''
+   '' else lib.optionalString extraFonts ''
     gunzip < ${extraFontsSrc} | (cd TeXmacs && tar xvf -)
-   '' else "") +
-   (if chineseFonts then ''
+   '') +
+   (lib.optionalString chineseFonts ''
     gunzip < ${chineseFontsSrc} | (cd TeXmacs && tar xvf -)
-   '' else "") +
-   (if japaneseFonts then ''
+   '') +
+   (lib.optionalString japaneseFonts ''
     gunzip < ${japaneseFontsSrc} | (cd TeXmacs && tar xvf -)
-   '' else "") +
-   (if koreanFonts then ''
+   '') +
+   (lib.optionalString koreanFonts ''
     gunzip < ${koreanFontsSrc} | (cd TeXmacs && tar xvf -)
-   '' else "");
+   '');
 
 
   meta = {
diff --git a/pkgs/applications/editors/vim/plugins/vim-utils.nix b/pkgs/applications/editors/vim/plugins/vim-utils.nix
index 4235aa5e929e..74c811c2eae8 100644
--- a/pkgs/applications/editors/vim/plugins/vim-utils.nix
+++ b/pkgs/applications/editors/vim/plugins/vim-utils.nix
@@ -317,8 +317,8 @@ rec {
       lib.warnIf (wrapManual != null) ''
         vim.customize: wrapManual is deprecated: the manual is now included by default if `name == "vim"`.
         ${if wrapManual == true && name != "vim" then "Set `standalone = false` to include the manual."
-        else if wrapManual == false && name == "vim" then "Set `standalone = true` to get the *vim wrappers only."
-        else ""}''
+        else lib.optionalString (wrapManual == false && name == "vim") "Set `standalone = true` to get the *vim wrappers only."
+        }''
       lib.warnIf (wrapGui != null)
         "vim.customize: wrapGui is deprecated: gvim is now automatically included if present"
       lib.throwIfNot (vimExecutableName == null && gvimExecutableName == null)
@@ -330,7 +330,7 @@ rec {
           else throw "at least one of vimrcConfig and vimrcFile must be specified";
         bin = runCommand "${name}-bin" { nativeBuildInputs = [ makeWrapper ]; } ''
           vimrc=${lib.escapeShellArg vimrc}
-          gvimrc=${if gvimrcFile != null then lib.escapeShellArg gvimrcFile else ""}
+          gvimrc=${lib.optionalString (gvimrcFile != null) (lib.escapeShellArg gvimrcFile)}
 
           mkdir -p "$out/bin"
           for exe in ${
diff --git a/pkgs/applications/file-managers/vifm/default.nix b/pkgs/applications/file-managers/vifm/default.nix
index 55a7ebd84afc..ab7da2deac89 100644
--- a/pkgs/applications/file-managers/vifm/default.nix
+++ b/pkgs/applications/file-managers/vifm/default.nix
@@ -34,11 +34,11 @@ in stdenv.mkDerivation rec {
 
     wrapVifmMedia = "wrapProgram $out/share/vifm/vifm-media --prefix PATH : ${path}";
   in ''
-    ${if mediaSupport then wrapVifmMedia else ""}
+    ${lib.optionalString mediaSupport wrapVifmMedia}
   '';
 
   meta = with lib; {
-    description = "A vi-like file manager${if isFullPackage then "; Includes support for optional features" else ""}";
+    description = "A vi-like file manager${lib.optionalString isFullPackage "; Includes support for optional features"}";
     maintainers = with maintainers; [ raskin ];
     platforms = if mediaSupport then platforms.linux else platforms.unix;
     license = licenses.gpl2;
diff --git a/pkgs/applications/misc/blender/default.nix b/pkgs/applications/misc/blender/default.nix
index 429097842630..9bb2a11b7cd7 100644
--- a/pkgs/applications/misc/blender/default.nix
+++ b/pkgs/applications/misc/blender/default.nix
@@ -87,10 +87,10 @@ stdenv.mkDerivation rec {
     '' else ''
       substituteInPlace extern/clew/src/clew.c --replace '"libOpenCL.so"' '"${ocl-icd}/lib/libOpenCL.so"'
     '') +
-    (if hipSupport then ''
+    (lib.optionalString hipSupport ''
       substituteInPlace extern/hipew/src/hipew.c --replace '"/opt/rocm/hip/lib/libamdhip64.so"' '"${hip}/lib/libamdhip64.so"'
       substituteInPlace extern/hipew/src/hipew.c --replace '"opt/rocm/hip/bin"' '"${hip}/bin"'
-    '' else "");
+    '');
 
   cmakeFlags =
     [
diff --git a/pkgs/applications/networking/browsers/firefox-bin/update.nix b/pkgs/applications/networking/browsers/firefox-bin/update.nix
index e5284c4097c9..f7fe34cb8d08 100644
--- a/pkgs/applications/networking/browsers/firefox-bin/update.nix
+++ b/pkgs/applications/networking/browsers/firefox-bin/update.nix
@@ -46,7 +46,7 @@ in writeScript "update-${pname}" ''
            grep "^[0-9]" | \
            sort --version-sort | \
            grep -v "funnelcake" | \
-           grep -e "${if isBeta then "b" else ""}\([[:digit:]]\|[[:digit:]][[:digit:]]\)$" | ${if isBeta then "" else "grep -v \"b\" |"} \
+           grep -e "${lib.optionalString isBeta "b"}\([[:digit:]]\|[[:digit:]][[:digit:]]\)$" | ${lib.optionalString (not isBeta) "grep -v \"b\" |"} \
            tail -1`
 
   curl --silent -o $HOME/shasums "$url$version/SHA256SUMS"
diff --git a/pkgs/applications/networking/browsers/google-chrome/default.nix b/pkgs/applications/networking/browsers/google-chrome/default.nix
index 01cd54cf8ee2..208bff18e1f2 100644
--- a/pkgs/applications/networking/browsers/google-chrome/default.nix
+++ b/pkgs/applications/networking/browsers/google-chrome/default.nix
@@ -70,7 +70,7 @@ let
     ++ lib.optional libvaSupport libva
     ++ [ gtk3 ];
 
-  suffix = if channel != "stable" then "-" + channel else "";
+  suffix = lib.optionalString (channel != "stable") "-${channel}";
 
   crashpadHandlerBinary = if lib.versionAtLeast version "94"
     then "chrome_crashpad_handler"
diff --git a/pkgs/applications/science/biology/plink-ng/default.nix b/pkgs/applications/science/biology/plink-ng/default.nix
index b21ef2d71d6c..00fd0ff0083e 100644
--- a/pkgs/applications/science/biology/plink-ng/default.nix
+++ b/pkgs/applications/science/biology/plink-ng/default.nix
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
 
   preBuild = ''
     sed -i 's|zlib-1.2.8/zlib.h|zlib.h|g' *.c *.h
-    ${if stdenv.cc.isClang then "sed -i 's|g++|clang++|g' Makefile.std" else ""}
+    ${lib.optionalString stdenv.cc.isClang "sed -i 's|g++|clang++|g' Makefile.std"}
 
     makeFlagsArray+=(
       ZLIB=-lz
diff --git a/pkgs/applications/science/electronics/kicad/base.nix b/pkgs/applications/science/electronics/kicad/base.nix
index d7250db07b49..83d696ec52b1 100644
--- a/pkgs/applications/science/electronics/kicad/base.nix
+++ b/pkgs/applications/science/electronics/kicad/base.nix
@@ -76,11 +76,10 @@ stdenv.mkDerivation rec {
   # tagged releases don't have "unknown"
   # kicad nightlies use git describe --dirty
   # nix removes .git, so its approximated here
-  postPatch = if (!stable) then ''
+  postPatch = lib.optionalString (!stable) ''
     substituteInPlace cmake/KiCadVersion.cmake \
       --replace "unknown" "${builtins.substring 0 10 src.rev}"
-  ''
-  else "";
+  '';
 
   makeFlags = optionals (debug) [ "CFLAGS+=-Og" "CFLAGS+=-ggdb" ];
 
diff --git a/pkgs/applications/science/electronics/kicad/default.nix b/pkgs/applications/science/electronics/kicad/default.nix
index 9765d2fcc1e4..047484fd9fff 100644
--- a/pkgs/applications/science/electronics/kicad/default.nix
+++ b/pkgs/applications/science/electronics/kicad/default.nix
@@ -214,7 +214,7 @@ stdenv.mkDerivation rec {
     description = (if (stable)
     then "Open Source Electronics Design Automation suite"
     else "Open Source EDA suite, development build")
-    + (if (!with3d) then ", without 3D models" else "");
+    + (lib.optionalString (!with3d) ", without 3D models");
     homepage = "https://www.kicad.org/";
     longDescription = ''
       KiCad is an open source software suite for Electronic Design Automation.
diff --git a/pkgs/applications/science/logic/coq/default.nix b/pkgs/applications/science/logic/coq/default.nix
index 10d77885b5cb..49c9fc47fef2 100644
--- a/pkgs/applications/science/logic/coq/default.nix
+++ b/pkgs/applications/science/logic/coq/default.nix
@@ -66,10 +66,10 @@ let
   buildIde = args.buildIde or (!coqAtLeast "8.14");
   ideFlags = optionalString (buildIde && !coqAtLeast "8.10")
     "-lablgtkdir ${ocamlPackages.lablgtk}/lib/ocaml/*/site-lib/lablgtk2 -coqide opt";
-  csdpPatch = if csdp != null then ''
+  csdpPatch = lib.optionalString (csdp != null) ''
     substituteInPlace plugins/micromega/sos.ml --replace "; csdp" "; ${csdp}/bin/csdp"
     substituteInPlace plugins/micromega/coq_micromega.ml --replace "System.is_in_system_path \"csdp\"" "true"
-  '' else "";
+  '';
   ocamlPackages = if !isNull customOCamlPackages then customOCamlPackages
     else with versions; switch coq-version [
       { case = range "8.16" "8.17"; out = ocamlPackages_4_14; }
@@ -158,7 +158,7 @@ self = stdenv.mkDerivation {
     UNAME=$(type -tp uname)
     RM=$(type -tp rm)
     substituteInPlace tools/beautify-archive --replace "/bin/rm" "$RM"
-    ${if !coqAtLeast "8.7" then "substituteInPlace configure.ml --replace \"md5 -q\" \"md5sum\"" else ""}
+    ${lib.optionalString (!coqAtLeast "8.7") "substituteInPlace configure.ml --replace \"md5 -q\" \"md5sum\""}
     ${csdpPatch}
   '';
 
@@ -196,7 +196,7 @@ self = stdenv.mkDerivation {
     categories = [ "Development" "Science" "Math" "IDE" "GTK" ];
   });
 
-  postInstall = let suffix = if coqAtLeast "8.14" then "-core" else ""; in optionalString (!coqAtLeast "8.17") ''
+  postInstall = let suffix = optionalString (coqAtLeast "8.14") "-core"; in optionalString (!coqAtLeast "8.17") ''
     cp bin/votour $out/bin/
   '' + ''
     ln -s $out/lib/coq${suffix} $OCAMLFIND_DESTDIR/coq${suffix}
@@ -227,12 +227,12 @@ if coqAtLeast "8.17" then self.overrideAttrs(_: {
   buildPhase = ''
     runHook preBuild
     make dunestrap
-    dune build -p coq-core,coq-stdlib,coq,coqide-server${if buildIde then ",coqide" else ""} -j $NIX_BUILD_CORES
+    dune build -p coq-core,coq-stdlib,coq,coqide-server${lib.optionalString buildIde ",coqide"} -j $NIX_BUILD_CORES
     runHook postBuild
   '';
   installPhase = ''
     runHook preInstall
-    dune install --prefix $out coq-core coq-stdlib coq coqide-server${if buildIde then " coqide" else ""}
+    dune install --prefix $out coq-core coq-stdlib coq coqide-server${lib.optionalString buildIde " coqide"}
     runHook postInstall
   '';
 }) else self
diff --git a/pkgs/applications/science/math/sage/sage-tests.nix b/pkgs/applications/science/math/sage/sage-tests.nix
index 79d4f78082e0..4910f5e8bf1d 100644
--- a/pkgs/applications/science/math/sage/sage-tests.nix
+++ b/pkgs/applications/science/math/sage/sage-tests.nix
@@ -18,7 +18,7 @@ let
   src = sage-with-env.env.lib.src;
   runAllTests = files == null;
   testArgs = if runAllTests then "--all" else testFileList;
-  patienceSpecifier = if longTests then "--long" else "";
+  patienceSpecifier = lib.optionalString longTests "--long";
   timeSpecifier = if timeLimit == null then "" else "--short ${toString timeLimit}";
   relpathToArg = relpath: lib.escapeShellArg "${src}/${relpath}"; # paths need to be absolute
   testFileList = lib.concatStringsSep " " (map relpathToArg files);
diff --git a/pkgs/applications/science/misc/openmodelica/mkderivation/default.nix b/pkgs/applications/science/misc/openmodelica/mkderivation/default.nix
index 088fa83b7d92..ffa0a158ac95 100644
--- a/pkgs/applications/science/misc/openmodelica/mkderivation/default.nix
+++ b/pkgs/applications/science/misc/openmodelica/mkderivation/default.nix
@@ -16,7 +16,7 @@ let
   # 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 "";
+  appendByAttr = attr: sep: x: lib.optionalString (hasAttr attr x) (sep + (getAttr attr x));
 
   # Are there any OM dependencies at all?
   ifDeps = length pkg.omdeps != 0;
diff --git a/pkgs/applications/window-managers/dwl/default.nix b/pkgs/applications/window-managers/dwl/default.nix
index 251092049c9a..6e2e45e8b9a6 100644
--- a/pkgs/applications/window-managers/dwl/default.nix
+++ b/pkgs/applications/window-managers/dwl/default.nix
@@ -63,8 +63,8 @@ stdenv.mkDerivation (self: {
 
   preBuild = ''
     makeFlagsArray+=(
-      XWAYLAND=${if enableXWayland then "-DXWAYLAND" else ""}
-      XLIBS=${if enableXWayland then "xcb\\ xcb-icccm" else ""}
+      XWAYLAND=${lib.optionalString enableXWayland "-DXWAYLAND"}
+      XLIBS=${lib.optionalString enableXWayland "xcb\\ xcb-icccm"}
     )
   '';
 
diff --git a/pkgs/build-support/alternatives/blas/default.nix b/pkgs/build-support/alternatives/blas/default.nix
index 7186675a5c62..fec2d0526bb3 100644
--- a/pkgs/build-support/alternatives/blas/default.nix
+++ b/pkgs/build-support/alternatives/blas/default.nix
@@ -83,12 +83,12 @@ stdenv.mkDerivation {
 '' + (if stdenv.hostPlatform.parsed.kernel.execFormat.name == "elf" then ''
   patchelf --set-soname libblas${canonicalExtension} $out/lib/libblas${canonicalExtension}
   patchelf --set-rpath "$(patchelf --print-rpath $out/lib/libblas${canonicalExtension}):${lib.getLib blasProvider'}/lib" $out/lib/libblas${canonicalExtension}
-'' else if stdenv.hostPlatform.isDarwin then ''
+'' else lib.optionalString (stdenv.hostPlatform.isDarwin) ''
   install_name_tool \
     -id $out/lib/libblas${canonicalExtension} \
     -add_rpath ${lib.getLib blasProvider'}/lib \
     $out/lib/libblas${canonicalExtension}
-'' else "") + ''
+'') + ''
 
   if [ "$out/lib/libblas${canonicalExtension}" != "$out/lib/libblas${stdenv.hostPlatform.extensions.sharedLibrary}" ]; then
     ln -s $out/lib/libblas${canonicalExtension} "$out/lib/libblas${stdenv.hostPlatform.extensions.sharedLibrary}"
@@ -115,12 +115,12 @@ EOF
 '' + (if stdenv.hostPlatform.parsed.kernel.execFormat.name == "elf" then ''
   patchelf --set-soname libcblas${canonicalExtension} $out/lib/libcblas${canonicalExtension}
   patchelf --set-rpath "$(patchelf --print-rpath $out/lib/libcblas${canonicalExtension}):${lib.getLib blasProvider'}/lib" $out/lib/libcblas${canonicalExtension}
-'' else if stdenv.hostPlatform.isDarwin then ''
+'' else lib.optionalString stdenv.hostPlatform.isDarwin ''
   install_name_tool \
     -id $out/lib/libcblas${canonicalExtension} \
     -add_rpath ${lib.getLib blasProvider'}/lib \
     $out/lib/libcblas${canonicalExtension}
-'' else "") + ''
+'') + ''
   if [ "$out/lib/libcblas${canonicalExtension}" != "$out/lib/libcblas${stdenv.hostPlatform.extensions.sharedLibrary}" ]; then
     ln -s $out/lib/libcblas${canonicalExtension} "$out/lib/libcblas${stdenv.hostPlatform.extensions.sharedLibrary}"
   fi
diff --git a/pkgs/build-support/alternatives/lapack/default.nix b/pkgs/build-support/alternatives/lapack/default.nix
index 80fb7be8c1e1..9886a035e4ec 100644
--- a/pkgs/build-support/alternatives/lapack/default.nix
+++ b/pkgs/build-support/alternatives/lapack/default.nix
@@ -54,10 +54,10 @@ stdenv.mkDerivation {
   cp -L "$liblapack" $out/lib/liblapack${canonicalExtension}
   chmod +w $out/lib/liblapack${canonicalExtension}
 
-'' + (if stdenv.hostPlatform.parsed.kernel.execFormat.name == "elf" then ''
+'' + (lib.optionalString (stdenv.hostPlatform.parsed.kernel.execFormat.name == "elf") ''
   patchelf --set-soname liblapack${canonicalExtension} $out/lib/liblapack${canonicalExtension}
   patchelf --set-rpath "$(patchelf --print-rpath $out/lib/liblapack${canonicalExtension}):${lapackProvider'}/lib" $out/lib/liblapack${canonicalExtension}
-'' else "") + ''
+'') + ''
 
   if [ "$out/lib/liblapack${canonicalExtension}" != "$out/lib/liblapack${stdenv.hostPlatform.extensions.sharedLibrary}" ]; then
     ln -s $out/lib/liblapack${canonicalExtension} "$out/lib/liblapack${stdenv.hostPlatform.extensions.sharedLibrary}"
@@ -83,10 +83,10 @@ EOF
   cp -L "$liblapacke" $out/lib/liblapacke${canonicalExtension}
   chmod +w $out/lib/liblapacke${canonicalExtension}
 
-'' + (if stdenv.hostPlatform.parsed.kernel.execFormat.name == "elf" then ''
+'' + (lib.optionalString (stdenv.hostPlatform.parsed.kernel.execFormat.name == "elf") ''
   patchelf --set-soname liblapacke${canonicalExtension} $out/lib/liblapacke${canonicalExtension}
   patchelf --set-rpath "$(patchelf --print-rpath $out/lib/liblapacke${canonicalExtension}):${lib.getLib lapackProvider'}/lib" $out/lib/liblapacke${canonicalExtension}
-'' else "") + ''
+'') + ''
 
   if [ -f "$out/lib/liblapacke.so.3" ]; then
     ln -s $out/lib/liblapacke.so.3 $out/lib/liblapacke.so
diff --git a/pkgs/build-support/bintools-wrapper/default.nix b/pkgs/build-support/bintools-wrapper/default.nix
index 45ae3eba9b44..6e33f6189a4a 100644
--- a/pkgs/build-support/bintools-wrapper/default.nix
+++ b/pkgs/build-support/bintools-wrapper/default.nix
@@ -92,9 +92,8 @@ let
     else "";
 
   expand-response-params =
-    if buildPackages ? stdenv && buildPackages.stdenv.hasCC && buildPackages.stdenv.cc != "/dev/null"
-    then import ../expand-response-params { inherit (buildPackages) stdenv; }
-    else "";
+    lib.optionalString (buildPackages ? stdenv && buildPackages.stdenv.hasCC && buildPackages.stdenv.cc != "/dev/null")
+    (import ../expand-response-params { inherit (buildPackages) stdenv; });
 
 in
 
diff --git a/pkgs/build-support/build-bazel-package/default.nix b/pkgs/build-support/build-bazel-package/default.nix
index d1cd502e7e4b..a3f331b23cb8 100644
--- a/pkgs/build-support/build-bazel-package/default.nix
+++ b/pkgs/build-support/build-bazel-package/default.nix
@@ -118,10 +118,10 @@ stdenv.mkDerivation (fBuildAttrs // {
 
       # Remove all built in external workspaces, Bazel will recreate them when building
       rm -rf $bazelOut/external/{bazel_tools,\@bazel_tools.marker}
-      ${if removeRulesCC then "rm -rf $bazelOut/external/{rules_cc,\\@rules_cc.marker}" else ""}
+      ${lib.optionalString removeRulesCC "rm -rf $bazelOut/external/{rules_cc,\\@rules_cc.marker}"}
       rm -rf $bazelOut/external/{embedded_jdk,\@embedded_jdk.marker}
-      ${if removeLocalConfigCc then "rm -rf $bazelOut/external/{local_config_cc,\\@local_config_cc.marker}" else ""}
-      ${if removeLocal then "rm -rf $bazelOut/external/{local_*,\\@local_*.marker}" else ""}
+      ${lib.optionalString removeLocalConfigCc "rm -rf $bazelOut/external/{local_config_cc,\\@local_config_cc.marker}"}
+      ${lib.optionalString removeLocal "rm -rf $bazelOut/external/{local_*,\\@local_*.marker}"}
 
       # Clear markers
       find $bazelOut/external -name '@*\.marker' -exec sh -c 'echo > {}' \;
diff --git a/pkgs/build-support/build-fhs-userenv-bubblewrap/env.nix b/pkgs/build-support/build-fhs-userenv-bubblewrap/env.nix
index 7ebcba73708c..c4d967a11c69 100644
--- a/pkgs/build-support/build-fhs-userenv-bubblewrap/env.nix
+++ b/pkgs/build-support/build-fhs-userenv-bubblewrap/env.nix
@@ -212,7 +212,7 @@ in stdenv.mkDerivation {
     cd $out
     ${extraBuildCommands}
     cd $out
-    ${if isMultiBuild then extraBuildCommandsMulti else ""}
+    ${lib.optionalString isMultiBuild extraBuildCommandsMulti}
   '';
   preferLocalBuild = true;
   allowSubstitutes = false;
diff --git a/pkgs/build-support/build-fhs-userenv/env.nix b/pkgs/build-support/build-fhs-userenv/env.nix
index 09457caecb86..fbc50c2dc253 100644
--- a/pkgs/build-support/build-fhs-userenv/env.nix
+++ b/pkgs/build-support/build-fhs-userenv/env.nix
@@ -1,4 +1,4 @@
-{ stdenv, buildEnv, writeText, pkgs, pkgsi686Linux }:
+{ stdenv, lib, buildEnv, writeText, pkgs, pkgsi686Linux }:
 
 { name
 , profile ? ""
@@ -237,7 +237,7 @@ in stdenv.mkDerivation {
     cd $out
     ${extraBuildCommands}
     cd $out
-    ${if isMultiBuild then extraBuildCommandsMulti else ""}
+    ${lib.optionalString isMultiBuild extraBuildCommandsMulti}
   '';
   preferLocalBuild = true;
   allowSubstitutes = false;
diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix
index 2f3b2d8e3788..6520c04f5e8a 100644
--- a/pkgs/build-support/cc-wrapper/default.nix
+++ b/pkgs/build-support/cc-wrapper/default.nix
@@ -59,9 +59,7 @@ let
   suffixSalt = replaceStrings ["-" "."] ["_" "_"] targetPlatform.config;
 
   expand-response-params =
-    if (buildPackages.stdenv.hasCC or false) && buildPackages.stdenv.cc != "/dev/null"
-    then import ../expand-response-params { inherit (buildPackages) stdenv; }
-    else "";
+    lib.optionalString ((buildPackages.stdenv.hasCC or false) && buildPackages.stdenv.cc != "/dev/null") (import ../expand-response-params { inherit (buildPackages) stdenv; });
 
   useGccForLibs = isClang
     && libcxx == null
diff --git a/pkgs/build-support/fetchdocker/credentials.nix b/pkgs/build-support/fetchdocker/credentials.nix
index 6d084d3c77ed..da1984832684 100644
--- a/pkgs/build-support/fetchdocker/credentials.nix
+++ b/pkgs/build-support/fetchdocker/credentials.nix
@@ -35,4 +35,4 @@ let
     ({prefix, path}: "DOCKER_CREDENTIALS" == prefix)
     builtins.nixPath);
 in
-  if (pathParts != []) then (builtins.head pathParts).path else ""
+  lib.optionalString (pathParts != []) ((builtins.head pathParts).path)
diff --git a/pkgs/build-support/fetchfossil/default.nix b/pkgs/build-support/fetchfossil/default.nix
index 3a4876bc5de3..7866c403ec42 100644
--- a/pkgs/build-support/fetchfossil/default.nix
+++ b/pkgs/build-support/fetchfossil/default.nix
@@ -1,9 +1,9 @@
-{stdenv, fossil, cacert}:
+{stdenv, lib, fossil, cacert}:
 
 {name ? null, url, rev, sha256}:
 
 stdenv.mkDerivation {
-  name = "fossil-archive" + (if name != null then "-${name}" else "");
+  name = "fossil-archive" + (lib.optionalString (name != null) "-${name}");
   builder = ./builder.sh;
   nativeBuildInputs = [fossil cacert];
 
diff --git a/pkgs/build-support/fetchgit/default.nix b/pkgs/build-support/fetchgit/default.nix
index 2d0b4b20ef8b..56973f5d3678 100644
--- a/pkgs/build-support/fetchgit/default.nix
+++ b/pkgs/build-support/fetchgit/default.nix
@@ -7,9 +7,7 @@
 
     short = builtins.substring 0 7 rev;
 
-    appendShort = if (builtins.match "[a-f0-9]*" rev) != null
-      then "-${short}"
-      else "";
+    appendShort = lib.optionalString ((builtins.match "[a-f0-9]*" rev) != null) "-${short}";
   in "${if matched == null then base else builtins.head matched}${appendShort}";
 in
 { url, rev ? "HEAD", md5 ? "", sha256 ? "", hash ? "", leaveDotGit ? deepClone
diff --git a/pkgs/build-support/fetchhg/default.nix b/pkgs/build-support/fetchhg/default.nix
index 15309d0a1950..b3c28fb0e264 100644
--- a/pkgs/build-support/fetchhg/default.nix
+++ b/pkgs/build-support/fetchhg/default.nix
@@ -12,13 +12,13 @@ if md5 != null then
 else
 # TODO: statically check if mercurial as the https support if the url starts woth https.
 stdenvNoCC.mkDerivation {
-  name = "hg-archive" + (if name != null then "-${name}" else "");
+  name = "hg-archive" + (lib.optionalString (name != null) "-${name}");
   builder = ./builder.sh;
   nativeBuildInputs = [mercurial];
 
   impureEnvVars = lib.fetchers.proxyImpureEnvVars;
 
-  subrepoClause = if fetchSubrepos then "S" else "";
+  subrepoClause = lib.optionalString fetchSubrepos "S";
 
   outputHashAlgo = "sha256";
   outputHashMode = "recursive";
diff --git a/pkgs/build-support/fetchpatch/default.nix b/pkgs/build-support/fetchpatch/default.nix
index 3ebe797f736d..d059715cedc1 100644
--- a/pkgs/build-support/fetchpatch/default.nix
+++ b/pkgs/build-support/fetchpatch/default.nix
@@ -18,7 +18,7 @@
 let
   args' = if relative != null then {
     stripLen = 1 + lib.length (lib.splitString "/" relative) + stripLen;
-    extraPrefix = if extraPrefix != null then extraPrefix else "";
+    extraPrefix = lib.optionalString (extraPrefix != null) extraPrefix;
   } else {
     inherit stripLen extraPrefix;
   };
diff --git a/pkgs/build-support/nuke-references/default.nix b/pkgs/build-support/nuke-references/default.nix
index c2dfe27b2c60..8f02c559238e 100644
--- a/pkgs/build-support/nuke-references/default.nix
+++ b/pkgs/build-support/nuke-references/default.nix
@@ -36,6 +36,6 @@ stdenvNoCC.mkDerivation {
     inherit perl;
     inherit (builtins) storeDir;
     shell = lib.getBin shell + (shell.shellPath or "");
-    signingUtils = if darwinCodeSign then signingUtils else "";
+    signingUtils = lib.optionalString darwinCodeSign signingUtils;
   };
 }
diff --git a/pkgs/build-support/release/binary-tarball.nix b/pkgs/build-support/release/binary-tarball.nix
index 168343c80821..24d5b2e1cafc 100644
--- a/pkgs/build-support/release/binary-tarball.nix
+++ b/pkgs/build-support/release/binary-tarball.nix
@@ -10,7 +10,7 @@
    directory, so the Makefile of the package should support DESTDIR.
 */
 
-{ src, stdenv
+{ src, lib, stdenv
 , name ? "binary-tarball"
 , ... } @ args:
 
@@ -30,7 +30,7 @@ stdenv.mkDerivation (
   // args //
 
   {
-    name = name + (if src ? version then "-" + src.version else "");
+    name = name + (lib.optionalString (src ? version) "-${src.version}");
 
     postHook = ''
       mkdir -p $out/nix-support
diff --git a/pkgs/build-support/release/debian-build.nix b/pkgs/build-support/release/debian-build.nix
index 679adad827da..6e08caf0a4e5 100644
--- a/pkgs/build-support/release/debian-build.nix
+++ b/pkgs/build-support/release/debian-build.nix
@@ -24,7 +24,7 @@ vmTools.runInLinuxImage (stdenv.mkDerivation (
   // removeAttrs args ["vmTools" "lib"] //
 
   {
-    name = name + "-" + diskImage.name + (if src ? version then "-" + src.version else "");
+    name = name + "-" + diskImage.name + (lib.optionalString (src ? version) "-${src.version}");
 
     # !!! cut&paste from rpm-build.nix
     postHook = ''
diff --git a/pkgs/build-support/release/default.nix b/pkgs/build-support/release/default.nix
index da1078369a58..ee414ea3280d 100644
--- a/pkgs/build-support/release/default.nix
+++ b/pkgs/build-support/release/default.nix
@@ -11,7 +11,7 @@ rec {
   makeSourceTarball = sourceTarball; # compatibility
 
   binaryTarball = args: import ./binary-tarball.nix (
-    { inherit stdenv;
+    { inherit lib stdenv;
     } // args);
 
   mvnBuild = args: import ./maven-build.nix (
@@ -38,7 +38,7 @@ rec {
     } // args);
 
   rpmBuild = args: import ./rpm-build.nix (
-    { inherit vmTools;
+    { inherit lib vmTools;
     } // args);
 
   debBuild = args: import ./debian-build.nix (
diff --git a/pkgs/build-support/release/maven-build.nix b/pkgs/build-support/release/maven-build.nix
index daee44b85acc..f618032724c9 100644
--- a/pkgs/build-support/release/maven-build.nix
+++ b/pkgs/build-support/release/maven-build.nix
@@ -22,7 +22,7 @@ in
 
 stdenv.mkDerivation ( {
   inherit name src;
-  phases = "setupPhase unpackPhase patchPhase mvnCompile ${if doTestCompile then "mvnTestCompile mvnTestJar" else ""} ${if doTest then "mvnTest" else ""} ${if doJavadoc then "mvnJavadoc" else ""} ${if doCheckstyle then "mvnCheckstyle" else ""} mvnJar mvnAssembly mvnRelease finalPhase";
+  phases = "setupPhase unpackPhase patchPhase mvnCompile ${lib.optionalString doTestCompile "mvnTestCompile mvnTestJar"} ${lib.optionalString doTest "mvnTest"} ${lib.optionalString doJavadoc "mvnJavadoc"} ${lib.optionalString doCheckstyle "mvnCheckstyle"} mvnJar mvnAssembly mvnRelease finalPhase";
 
   setupPhase = ''
     runHook preSetupPhase
@@ -88,9 +88,9 @@ stdenv.mkDerivation ( {
 
     echo "$releaseName" > $out/nix-support/hydra-release-name
 
-    ${if doRelease then  ''
+    ${lib.optionalString doRelease ''
     echo "file zip $out/release/$releaseName.zip" >> $out/nix-support/hydra-build-products
-    '' else ""}
+    ''}
   '';
 
   finalPhase = ''
diff --git a/pkgs/build-support/release/nix-build.nix b/pkgs/build-support/release/nix-build.nix
index 9578fbf482f2..0498232d4d62 100644
--- a/pkgs/build-support/release/nix-build.nix
+++ b/pkgs/build-support/release/nix-build.nix
@@ -85,7 +85,7 @@ stdenv.mkDerivation (
   // removeAttrs args [ "lib" ] # Propagating lib causes the evaluation to fail, because lib is a function that can't be converted to a string
 
   // {
-    name = name + (if src ? version then "-" + src.version else "");
+    name = name + (lib.optionalString (src ? version) "-${src.version}");
 
     postHook = ''
       . ${./functions.sh}
@@ -167,7 +167,7 @@ stdenv.mkDerivation (
 
           echo "building out of source tree, from \`$PWD'..."
 
-          ${if preConfigure != null then preConfigure else ""}
+          ${lib.optionalString (preConfigure != null) preConfigure}
        '';
    }
    else {})
diff --git a/pkgs/build-support/release/rpm-build.nix b/pkgs/build-support/release/rpm-build.nix
index 47c01f2e66b2..8f4711470509 100644
--- a/pkgs/build-support/release/rpm-build.nix
+++ b/pkgs/build-support/release/rpm-build.nix
@@ -3,7 +3,7 @@
 
 { name ? "rpm-build"
 , diskImage
-, src, vmTools
+, src, lib, vmTools
 , ... } @ args:
 
 vmTools.buildRPM (
@@ -11,7 +11,7 @@ vmTools.buildRPM (
   removeAttrs args ["vmTools"] //
 
   {
-    name = name + "-" + diskImage.name + (if src ? version then "-" + src.version else "");
+    name = name + "-" + diskImage.name + (lib.optionalString (src ? version) "-${src.version}");
 
     preBuild = ''
       . ${./functions.sh}
diff --git a/pkgs/build-support/rust/build-rust-crate/default.nix b/pkgs/build-support/rust/build-rust-crate/default.nix
index 98030225bcbb..435a942daa26 100644
--- a/pkgs/build-support/rust/build-rust-crate/default.nix
+++ b/pkgs/build-support/rust/build-rust-crate/default.nix
@@ -299,7 +299,7 @@ crate_: lib.makeOverridable
         );
 
       libName = if crate ? libName then crate.libName else crate.crateName;
-      libPath = if crate ? libPath then crate.libPath else "";
+      libPath = lib.optionalString (crate ? libPath) crate.libPath;
 
       # Seed the symbol hashes with something unique every time.
       # https://doc.rust-lang.org/1.0.0/rustc/metadata/loader/index.html#frobbing-symbols
diff --git a/pkgs/build-support/vm/default.nix b/pkgs/build-support/vm/default.nix
index 84754e580302..d63d17e23f8f 100644
--- a/pkgs/build-support/vm/default.nix
+++ b/pkgs/build-support/vm/default.nix
@@ -406,7 +406,7 @@ rec {
       eval "$origPostHook"
     '';
 
-    origPostHook = if attrs ? postHook then attrs.postHook else "";
+    origPostHook = lib.optionalString (attrs ? postHook) attrs.postHook;
 
     /* Don't run Nix-specific build steps like patchelf. */
     fixupPhase = "true";
diff --git a/pkgs/development/compilers/gcc/10/default.nix b/pkgs/development/compilers/gcc/10/default.nix
index abe6d92cd0a6..4df0872688be 100644
--- a/pkgs/development/compilers/gcc/10/default.nix
+++ b/pkgs/development/compilers/gcc/10/default.nix
@@ -186,10 +186,10 @@ stdenv.mkDerivation ({
       --replace "-install_name \\\$rpath/\\\$soname" "-install_name ''${!outputLib}/lib/\\\$soname"
   ''
   + (
-    if targetPlatform != hostPlatform || stdenv.cc.libc != null then
+    lib.optionalString (targetPlatform != hostPlatform || stdenv.cc.libc != null)
       # On NixOS, use the right path to the dynamic linker instead of
       # `/lib/ld*.so'.
-      let
+      (let
         libc = if libcCross != null then libcCross else stdenv.cc.libc;
       in
         (
@@ -207,8 +207,8 @@ stdenv.mkDerivation ({
         ''
             sed -i gcc/config/linux.h -e '1i#undef LOCAL_INCLUDE_DIR'
         ''
-        )
-    else "")
+        ))
+      )
       + lib.optionalString targetPlatform.isAvr ''
             makeFlagsArray+=(
                '-s' # workaround for hitting hydra log limit
diff --git a/pkgs/development/compilers/gcc/11/default.nix b/pkgs/development/compilers/gcc/11/default.nix
index 1c6b7326c074..4b91e0598304 100644
--- a/pkgs/development/compilers/gcc/11/default.nix
+++ b/pkgs/development/compilers/gcc/11/default.nix
@@ -195,10 +195,10 @@ stdenv.mkDerivation ({
       --replace "-install_name \\\$rpath/\\\$soname" "-install_name ''${!outputLib}/lib/\\\$soname"
   ''
   + (
-    if targetPlatform != hostPlatform || stdenv.cc.libc != null then
+    lib.optionalString (targetPlatform != hostPlatform || stdenv.cc.libc != null)
       # On NixOS, use the right path to the dynamic linker instead of
       # `/lib/ld*.so'.
-      let
+      (let
         libc = if libcCross != null then libcCross else stdenv.cc.libc;
       in
         (
@@ -216,8 +216,8 @@ stdenv.mkDerivation ({
         ''
             sed -i gcc/config/linux.h -e '1i#undef LOCAL_INCLUDE_DIR'
         ''
-        )
-    else "")
+        ))
+    )
       + lib.optionalString targetPlatform.isAvr ''
             makeFlagsArray+=(
                '-s' # workaround for hitting hydra log limit
diff --git a/pkgs/development/compilers/gcc/12/default.nix b/pkgs/development/compilers/gcc/12/default.nix
index f0bdafd8c208..63168968cd6b 100644
--- a/pkgs/development/compilers/gcc/12/default.nix
+++ b/pkgs/development/compilers/gcc/12/default.nix
@@ -226,10 +226,10 @@ stdenv.mkDerivation ({
       --replace "-install_name \\\$rpath/\\\$soname" "-install_name ''${!outputLib}/lib/\\\$soname"
   ''
   + (
-    if targetPlatform != hostPlatform || stdenv.cc.libc != null then
+    lib.optionalString (targetPlatform != hostPlatform || stdenv.cc.libc != null)
       # On NixOS, use the right path to the dynamic linker instead of
       # `/lib/ld*.so'.
-      let
+      (let
         libc = if libcCross != null then libcCross else stdenv.cc.libc;
       in
         (
@@ -248,7 +248,7 @@ stdenv.mkDerivation ({
             sed -i gcc/config/linux.h -e '1i#undef LOCAL_INCLUDE_DIR'
         ''
         )
-    else "")
+    ))
       + lib.optionalString targetPlatform.isAvr ''
             makeFlagsArray+=(
                '-s' # workaround for hitting hydra log limit
diff --git a/pkgs/development/compilers/gcc/6/default.nix b/pkgs/development/compilers/gcc/6/default.nix
index 039293dd86e4..7e5e2c6b10b5 100644
--- a/pkgs/development/compilers/gcc/6/default.nix
+++ b/pkgs/development/compilers/gcc/6/default.nix
@@ -246,10 +246,10 @@ stdenv.mkDerivation ({
         --replace "-install_name \\\$rpath/\\\$soname" "-install_name ''${!outputLib}/lib/\\\$soname"
     ''
   + (
-    if targetPlatform != hostPlatform || stdenv.cc.libc != null then
+    lib.optionalString (targetPlatform != hostPlatform || stdenv.cc.libc != null)
       # On NixOS, use the right path to the dynamic linker instead of
       # `/lib/ld*.so'.
-      let
+      (let
         libc = if libcCross != null then libcCross else stdenv.cc.libc;
       in
         (
@@ -267,8 +267,8 @@ stdenv.mkDerivation ({
         ''
             sed -i gcc/config/linux.h -e '1i#undef LOCAL_INCLUDE_DIR'
         ''
-        )
-    else "");
+        ))
+    );
 
   inherit noSysDirs staticCompiler langJava crossStageStatic
     libcCross crossMingw;
diff --git a/pkgs/development/compilers/gcc/7/default.nix b/pkgs/development/compilers/gcc/7/default.nix
index a02d1b6d2795..75366c5b04dd 100644
--- a/pkgs/development/compilers/gcc/7/default.nix
+++ b/pkgs/development/compilers/gcc/7/default.nix
@@ -190,10 +190,10 @@ stdenv.mkDerivation ({
       --replace "-install_name \\\$rpath/\\\$soname" "-install_name ''${!outputLib}/lib/\\\$soname"
   ''
   + (
-    if targetPlatform != hostPlatform || stdenv.cc.libc != null then
+    lib.optionalString (targetPlatform != hostPlatform || stdenv.cc.libc != null)
       # On NixOS, use the right path to the dynamic linker instead of
       # `/lib/ld*.so'.
-      let
+      (let
         libc = if libcCross != null then libcCross else stdenv.cc.libc;
       in
         (
@@ -211,8 +211,8 @@ stdenv.mkDerivation ({
         ''
             sed -i gcc/config/linux.h -e '1i#undef LOCAL_INCLUDE_DIR'
         ''
-        )
-    else "")
+        ))
+    )
       + lib.optionalString targetPlatform.isAvr ''
         makeFlagsArray+=(
            'LIMITS_H_TEST=false'
diff --git a/pkgs/development/compilers/gcc/8/default.nix b/pkgs/development/compilers/gcc/8/default.nix
index b7e70f39471e..e0b1a1e24ada 100644
--- a/pkgs/development/compilers/gcc/8/default.nix
+++ b/pkgs/development/compilers/gcc/8/default.nix
@@ -172,10 +172,10 @@ stdenv.mkDerivation ({
       --replace "-install_name \\\$rpath/\\\$soname" "-install_name ''${!outputLib}/lib/\\\$soname"
   ''
   + (
-    if targetPlatform != hostPlatform || stdenv.cc.libc != null then
+    lib.optionalString (targetPlatform != hostPlatform || stdenv.cc.libc != null)
       # On NixOS, use the right path to the dynamic linker instead of
       # `/lib/ld*.so'.
-      let
+      (let
         libc = if libcCross != null then libcCross else stdenv.cc.libc;
       in
         (
@@ -193,8 +193,8 @@ stdenv.mkDerivation ({
         ''
             sed -i gcc/config/linux.h -e '1i#undef LOCAL_INCLUDE_DIR'
         ''
-        )
-    else "")
+        ))
+    )
       + lib.optionalString targetPlatform.isAvr ''
             makeFlagsArray+=(
                'LIMITS_H_TEST=false'
diff --git a/pkgs/development/compilers/gcc/9/default.nix b/pkgs/development/compilers/gcc/9/default.nix
index 484c89c0e902..bcfd1c7dd38a 100644
--- a/pkgs/development/compilers/gcc/9/default.nix
+++ b/pkgs/development/compilers/gcc/9/default.nix
@@ -186,10 +186,10 @@ stdenv.mkDerivation ({
       --replace "-install_name \\\$rpath/\\\$soname" "-install_name ''${!outputLib}/lib/\\\$soname"
   ''
   + (
-    if targetPlatform != hostPlatform || stdenv.cc.libc != null then
+    lib.optionalString (targetPlatform != hostPlatform || stdenv.cc.libc != null)
       # On NixOS, use the right path to the dynamic linker instead of
       # `/lib/ld*.so'.
-      let
+      (let
         libc = if libcCross != null then libcCross else stdenv.cc.libc;
       in
         (
@@ -207,8 +207,8 @@ stdenv.mkDerivation ({
         ''
             sed -i gcc/config/linux.h -e '1i#undef LOCAL_INCLUDE_DIR'
         ''
-        )
-    else "")
+        ))
+    )
       + lib.optionalString targetPlatform.isAvr ''
           makeFlagsArray+=(
              'LIMITS_H_TEST=false'
diff --git a/pkgs/development/compilers/go/1.18.nix b/pkgs/development/compilers/go/1.18.nix
index b19fe44c1317..a09d9b1f9603 100644
--- a/pkgs/development/compilers/go/1.18.nix
+++ b/pkgs/development/compilers/go/1.18.nix
@@ -155,12 +155,12 @@ stdenv.mkDerivation rec {
     ${lib.optionalString (!(GOHOSTARCH == GOARCH && GOOS == GOHOSTOS)) ''
       rm -rf pkg/${GOHOSTOS}_${GOHOSTARCH} pkg/tool/${GOHOSTOS}_${GOHOSTARCH}
     ''}
-  '' else if (stdenv.hostPlatform != stdenv.targetPlatform) then ''
+  '' else lib.optionalString (stdenv.hostPlatform != stdenv.targetPlatform) ''
     rm -rf bin/*_*
     ${lib.optionalString (!(GOHOSTARCH == GOARCH && GOOS == GOHOSTOS)) ''
       rm -rf pkg/${GOOS}_${GOARCH} pkg/tool/${GOOS}_${GOARCH}
     ''}
-  '' else "");
+  '');
 
   installPhase = ''
     runHook preInstall
diff --git a/pkgs/development/compilers/go/1.19.nix b/pkgs/development/compilers/go/1.19.nix
index 13cf14c77fa5..c8c2e09d3350 100644
--- a/pkgs/development/compilers/go/1.19.nix
+++ b/pkgs/development/compilers/go/1.19.nix
@@ -155,12 +155,12 @@ stdenv.mkDerivation rec {
     ${lib.optionalString (!(GOHOSTARCH == GOARCH && GOOS == GOHOSTOS)) ''
       rm -rf pkg/${GOHOSTOS}_${GOHOSTARCH} pkg/tool/${GOHOSTOS}_${GOHOSTARCH}
     ''}
-  '' else if (stdenv.hostPlatform != stdenv.targetPlatform) then ''
+  '' else lib.optionalString (stdenv.hostPlatform != stdenv.targetPlatform) ''
     rm -rf bin/*_*
     ${lib.optionalString (!(GOHOSTARCH == GOARCH && GOOS == GOHOSTOS)) ''
       rm -rf pkg/${GOOS}_${GOARCH} pkg/tool/${GOOS}_${GOARCH}
     ''}
-  '' else "");
+  '');
 
   installPhase = ''
     runHook preInstall
diff --git a/pkgs/development/compilers/go/1.20.nix b/pkgs/development/compilers/go/1.20.nix
index a8c441813f17..203081fb379f 100644
--- a/pkgs/development/compilers/go/1.20.nix
+++ b/pkgs/development/compilers/go/1.20.nix
@@ -147,12 +147,12 @@ stdenv.mkDerivation rec {
     ${lib.optionalString (!(GOHOSTARCH == GOARCH && GOOS == GOHOSTOS)) ''
       rm -rf pkg/${GOHOSTOS}_${GOHOSTARCH} pkg/tool/${GOHOSTOS}_${GOHOSTARCH}
     ''}
-  '' else if (stdenv.hostPlatform != stdenv.targetPlatform) then ''
+  '' else lib.optionalString (stdenv.hostPlatform != stdenv.targetPlatform) ''
     rm -rf bin/*_*
     ${lib.optionalString (!(GOHOSTARCH == GOARCH && GOOS == GOHOSTOS)) ''
       rm -rf pkg/${GOOS}_${GOARCH} pkg/tool/${GOOS}_${GOARCH}
     ''}
-  '' else "");
+  '');
 
   installPhase = ''
     runHook preInstall
diff --git a/pkgs/development/compilers/jetbrains-jdk/default.nix b/pkgs/development/compilers/jetbrains-jdk/default.nix
index 5702ba2a2e6c..143feeb98e16 100644
--- a/pkgs/development/compilers/jetbrains-jdk/default.nix
+++ b/pkgs/development/compilers/jetbrains-jdk/default.nix
@@ -79,8 +79,8 @@ openjdk17.overrideAttrs (oldAttrs: rec {
 
   installPhase = let
     buildType = if debugBuild then "fastdebug" else "release";
-    debugSuffix = if debugBuild then "-fastdebug" else "";
-    jcefSuffix = if debugBuild then "" else "_jcef";
+    debugSuffix = lib.optionalString debugBuild "-fastdebug";
+    jcefSuffix = lib.optionalString (!debugBuild) "_jcef";
   in ''
     runHook preInstall
 
diff --git a/pkgs/development/compilers/llvm/10/bintools/default.nix b/pkgs/development/compilers/llvm/10/bintools/default.nix
index 1eb7215c0085..38002439c205 100644
--- a/pkgs/development/compilers/llvm/10/bintools/default.nix
+++ b/pkgs/development/compilers/llvm/10/bintools/default.nix
@@ -1,10 +1,7 @@
-{ runCommand, stdenv, llvm, lld, version }:
+{ lib, runCommand, stdenv, llvm, lld, version }:
 
 let
-  prefix =
-    if stdenv.hostPlatform != stdenv.targetPlatform
-    then "${stdenv.targetPlatform.config}-"
-    else "";
+  prefix = lib.optionalString (stdenv.hostPlatform != stdenv.targetPlatform) "${stdenv.targetPlatform.config}-";
 in runCommand "llvm-binutils-${version}" {
   preferLocalBuild = true;
   passthru = {
diff --git a/pkgs/development/compilers/llvm/11/bintools/default.nix b/pkgs/development/compilers/llvm/11/bintools/default.nix
index 1eb7215c0085..38002439c205 100644
--- a/pkgs/development/compilers/llvm/11/bintools/default.nix
+++ b/pkgs/development/compilers/llvm/11/bintools/default.nix
@@ -1,10 +1,7 @@
-{ runCommand, stdenv, llvm, lld, version }:
+{ lib, runCommand, stdenv, llvm, lld, version }:
 
 let
-  prefix =
-    if stdenv.hostPlatform != stdenv.targetPlatform
-    then "${stdenv.targetPlatform.config}-"
-    else "";
+  prefix = lib.optionalString (stdenv.hostPlatform != stdenv.targetPlatform) "${stdenv.targetPlatform.config}-";
 in runCommand "llvm-binutils-${version}" {
   preferLocalBuild = true;
   passthru = {
diff --git a/pkgs/development/compilers/llvm/12/bintools/default.nix b/pkgs/development/compilers/llvm/12/bintools/default.nix
index 1eb7215c0085..38002439c205 100644
--- a/pkgs/development/compilers/llvm/12/bintools/default.nix
+++ b/pkgs/development/compilers/llvm/12/bintools/default.nix
@@ -1,10 +1,7 @@
-{ runCommand, stdenv, llvm, lld, version }:
+{ lib, runCommand, stdenv, llvm, lld, version }:
 
 let
-  prefix =
-    if stdenv.hostPlatform != stdenv.targetPlatform
-    then "${stdenv.targetPlatform.config}-"
-    else "";
+  prefix = lib.optionalString (stdenv.hostPlatform != stdenv.targetPlatform) "${stdenv.targetPlatform.config}-";
 in runCommand "llvm-binutils-${version}" {
   preferLocalBuild = true;
   passthru = {
diff --git a/pkgs/development/compilers/llvm/13/bintools/default.nix b/pkgs/development/compilers/llvm/13/bintools/default.nix
index b6ee7b4dc25c..b69f4bd12917 100644
--- a/pkgs/development/compilers/llvm/13/bintools/default.nix
+++ b/pkgs/development/compilers/llvm/13/bintools/default.nix
@@ -1,10 +1,7 @@
-{ runCommand, stdenv, llvm, lld, version }:
+{ lib, runCommand, stdenv, llvm, lld, version }:
 
 let
-  prefix =
-    if stdenv.hostPlatform != stdenv.targetPlatform
-    then "${stdenv.targetPlatform.config}-"
-    else "";
+  prefix = lib.optionalString (stdenv.hostPlatform != stdenv.targetPlatform) "${stdenv.targetPlatform.config}-";
 in runCommand "llvm-binutils-${version}" {
   preferLocalBuild = true;
   passthru = {
diff --git a/pkgs/development/compilers/llvm/14/bintools/default.nix b/pkgs/development/compilers/llvm/14/bintools/default.nix
index b6ee7b4dc25c..b69f4bd12917 100644
--- a/pkgs/development/compilers/llvm/14/bintools/default.nix
+++ b/pkgs/development/compilers/llvm/14/bintools/default.nix
@@ -1,10 +1,7 @@
-{ runCommand, stdenv, llvm, lld, version }:
+{ lib, runCommand, stdenv, llvm, lld, version }:
 
 let
-  prefix =
-    if stdenv.hostPlatform != stdenv.targetPlatform
-    then "${stdenv.targetPlatform.config}-"
-    else "";
+  prefix = lib.optionalString (stdenv.hostPlatform != stdenv.targetPlatform) "${stdenv.targetPlatform.config}-";
 in runCommand "llvm-binutils-${version}" {
   preferLocalBuild = true;
   passthru = {
diff --git a/pkgs/development/compilers/llvm/15/bintools/default.nix b/pkgs/development/compilers/llvm/15/bintools/default.nix
index 303faf7bbb61..c7b20dd28e23 100644
--- a/pkgs/development/compilers/llvm/15/bintools/default.nix
+++ b/pkgs/development/compilers/llvm/15/bintools/default.nix
@@ -1,10 +1,7 @@
-{ runCommand, stdenv, llvm, lld, version }:
+{ lib, runCommand, stdenv, llvm, lld, version }:
 
 let
-  prefix =
-    if stdenv.hostPlatform != stdenv.targetPlatform
-    then "${stdenv.targetPlatform.config}-"
-    else "";
+  prefix = lib.optionalString (stdenv.hostPlatform != stdenv.targetPlatform) "${stdenv.targetPlatform.config}-";
 in runCommand "llvm-binutils-${version}" {
   preferLocalBuild = true;
   passthru = {
diff --git a/pkgs/development/compilers/llvm/7/bintools/default.nix b/pkgs/development/compilers/llvm/7/bintools/default.nix
index 1eb7215c0085..38002439c205 100644
--- a/pkgs/development/compilers/llvm/7/bintools/default.nix
+++ b/pkgs/development/compilers/llvm/7/bintools/default.nix
@@ -1,10 +1,7 @@
-{ runCommand, stdenv, llvm, lld, version }:
+{ lib, runCommand, stdenv, llvm, lld, version }:
 
 let
-  prefix =
-    if stdenv.hostPlatform != stdenv.targetPlatform
-    then "${stdenv.targetPlatform.config}-"
-    else "";
+  prefix = lib.optionalString (stdenv.hostPlatform != stdenv.targetPlatform) "${stdenv.targetPlatform.config}-";
 in runCommand "llvm-binutils-${version}" {
   preferLocalBuild = true;
   passthru = {
diff --git a/pkgs/development/compilers/llvm/8/bintools/default.nix b/pkgs/development/compilers/llvm/8/bintools/default.nix
index 1eb7215c0085..38002439c205 100644
--- a/pkgs/development/compilers/llvm/8/bintools/default.nix
+++ b/pkgs/development/compilers/llvm/8/bintools/default.nix
@@ -1,10 +1,7 @@
-{ runCommand, stdenv, llvm, lld, version }:
+{ lib, runCommand, stdenv, llvm, lld, version }:
 
 let
-  prefix =
-    if stdenv.hostPlatform != stdenv.targetPlatform
-    then "${stdenv.targetPlatform.config}-"
-    else "";
+  prefix = lib.optionalString (stdenv.hostPlatform != stdenv.targetPlatform) "${stdenv.targetPlatform.config}-";
 in runCommand "llvm-binutils-${version}" {
   preferLocalBuild = true;
   passthru = {
diff --git a/pkgs/development/compilers/llvm/9/bintools/default.nix b/pkgs/development/compilers/llvm/9/bintools/default.nix
index 1eb7215c0085..38002439c205 100644
--- a/pkgs/development/compilers/llvm/9/bintools/default.nix
+++ b/pkgs/development/compilers/llvm/9/bintools/default.nix
@@ -1,10 +1,7 @@
-{ runCommand, stdenv, llvm, lld, version }:
+{ lib, runCommand, stdenv, llvm, lld, version }:
 
 let
-  prefix =
-    if stdenv.hostPlatform != stdenv.targetPlatform
-    then "${stdenv.targetPlatform.config}-"
-    else "";
+  prefix = lib.optionalString (stdenv.hostPlatform != stdenv.targetPlatform) "${stdenv.targetPlatform.config}-";
 in runCommand "llvm-binutils-${version}" {
   preferLocalBuild = true;
   passthru = {
diff --git a/pkgs/development/compilers/llvm/git/bintools/default.nix b/pkgs/development/compilers/llvm/git/bintools/default.nix
index 303faf7bbb61..3162b0d41e02 100644
--- a/pkgs/development/compilers/llvm/git/bintools/default.nix
+++ b/pkgs/development/compilers/llvm/git/bintools/default.nix
@@ -1,10 +1,7 @@
 { runCommand, stdenv, llvm, lld, version }:
 
 let
-  prefix =
-    if stdenv.hostPlatform != stdenv.targetPlatform
-    then "${stdenv.targetPlatform.config}-"
-    else "";
+  prefix = lib.optionalString (stdenv.hostPlatform != stdenv.targetPlatform) "${stdenv.targetPlatform.config}-";
 in runCommand "llvm-binutils-${version}" {
   preferLocalBuild = true;
   passthru = {
diff --git a/pkgs/development/compilers/sbcl/2.x.nix b/pkgs/development/compilers/sbcl/2.x.nix
index c9aa4a962ffa..f7bcd8e5b494 100644
--- a/pkgs/development/compilers/sbcl/2.x.nix
+++ b/pkgs/development/compilers/sbcl/2.x.nix
@@ -188,7 +188,7 @@ stdenv.mkDerivation rec {
                   lib.concatStringsSep " "
                     (builtins.map (x: "--with-${x}") enableFeatures ++
                      builtins.map (x: "--without-${x}") disableFeatures)
-                } ${if stdenv.hostPlatform.system == "aarch64-darwin" then "--arch=arm64" else ""}
+                } ${lib.optionalString (stdenv.hostPlatform.system == "aarch64-darwin") "--arch=arm64"}
     (cd doc/manual ; make info)
 
     runHook postBuild
diff --git a/pkgs/development/compilers/solc/default.nix b/pkgs/development/compilers/solc/default.nix
index 55bf5237e618..9a3e68a1b73b 100644
--- a/pkgs/development/compilers/solc/default.nix
+++ b/pkgs/development/compilers/solc/default.nix
@@ -96,7 +96,7 @@ let
       for i in ./scripts/*.sh ./scripts/*.py ./test/*.sh ./test/*.py; do
         patchShebangs "$i"
       done
-      TERM=xterm ./scripts/tests.sh ${if z3Support then "--no-smt" else ""}
+      TERM=xterm ./scripts/tests.sh ${lib.optionalString z3Support "--no-smt"}
       popd
     '';
 
diff --git a/pkgs/development/compilers/swift/wrapper/default.nix b/pkgs/development/compilers/swift/wrapper/default.nix
index a7d16cc2471a..0c7e0f8cbcf8 100644
--- a/pkgs/development/compilers/swift/wrapper/default.nix
+++ b/pkgs/development/compilers/swift/wrapper/default.nix
@@ -16,8 +16,7 @@ stdenv.mkDerivation (swift._wrapperParams // {
     swiftOs swiftArch
     swiftModuleSubdir swiftLibSubdir
     swiftStaticModuleSubdir swiftStaticLibSubdir;
-  swiftDriver = if useSwiftDriver
-    then "${swift-driver}/bin/swift-driver" else "";
+  swiftDriver = lib.optionalString useSwiftDriver "${swift-driver}/bin/swift-driver";
 
   passAsFile = [ "buildCommand" ];
   buildCommand = ''
diff --git a/pkgs/development/haskell-modules/make-package-set.nix b/pkgs/development/haskell-modules/make-package-set.nix
index 5b9546e7505f..7104a2164af3 100644
--- a/pkgs/development/haskell-modules/make-package-set.nix
+++ b/pkgs/development/haskell-modules/make-package-set.nix
@@ -254,7 +254,7 @@ in package-set { inherit pkgs lib callPackage; } self // {
     # a cabal flag with '--flag=myflag'.
     developPackage =
       { root
-      , name ? if builtins.typeOf root == "path" then builtins.baseNameOf root else ""
+      , name ? lib.optionalString (builtins.typeOf root == "path") (builtins.baseNameOf root)
       , source-overrides ? {}
       , overrides ? self: super: {}
       , modifier ? drv: drv
diff --git a/pkgs/development/haskell-modules/package-list.nix b/pkgs/development/haskell-modules/package-list.nix
index 688844bcc46c..50daaf136231 100644
--- a/pkgs/development/haskell-modules/package-list.nix
+++ b/pkgs/development/haskell-modules/package-list.nix
@@ -10,9 +10,8 @@ let
     let
       version = pkg.version or "";
     in
-    if isPvpVersion version then
-      ''"${name}","${version}","http://hydra.nixos.org/job/nixpkgs/trunk/haskellPackages.${name}.x86_64-linux"''
-    else "";
+    lib.optionalString (isPvpVersion version)
+      ''"${name}","${version}","http://hydra.nixos.org/job/nixpkgs/trunk/haskellPackages.${name}.x86_64-linux"'';
   all-haskellPackages = builtins.toFile "all-haskellPackages" (lib.concatStringsSep "\n" (lib.filter (x: x != "") (lib.mapAttrsToList pkgLine haskellPackages)));
 in
 runCommand "hackage-package-list" { }
diff --git a/pkgs/development/interpreters/dhall/generate-dhall-directory-package.nix b/pkgs/development/interpreters/dhall/generate-dhall-directory-package.nix
index 03dfb72d7aba..8ece89ef4f48 100644
--- a/pkgs/development/interpreters/dhall/generate-dhall-directory-package.nix
+++ b/pkgs/development/interpreters/dhall/generate-dhall-directory-package.nix
@@ -19,7 +19,7 @@ lib.makePackageOverridable
       name = "dhall-directory-package.nix";
 
       buildCommand = ''
-        dhall-to-nixpkgs directory --fixed-output-derivations --file "${file}" "${src}" ${if document then "--document" else ""} > $out
+        dhall-to-nixpkgs directory --fixed-output-derivations --file "${file}" "${src}" ${lib.optionalString document "--document"} > $out
       '';
 
       nativeBuildInputs = [ dhall-nixpkgs ];
diff --git a/pkgs/development/interpreters/octave/default.nix b/pkgs/development/interpreters/octave/default.nix
index dff3e4101d55..e221956cf225 100644
--- a/pkgs/development/interpreters/octave/default.nix
+++ b/pkgs/development/interpreters/octave/default.nix
@@ -186,7 +186,7 @@ let
     NIX_LDFLAGS = lib.optionalString stdenv.isDarwin "-lobjc";
 
     # See https://savannah.gnu.org/bugs/?50339
-    F77_INTEGER_8_FLAG = if use64BitIdx then "-fdefault-integer-8" else "";
+    F77_INTEGER_8_FLAG = lib.optionalString use64BitIdx "-fdefault-integer-8";
 
     configureFlags = [
       "--with-blas=blas"
diff --git a/pkgs/development/interpreters/python/pypy/default.nix b/pkgs/development/interpreters/python/pypy/default.nix
index 6fad25ee8d63..b7597a9925b6 100644
--- a/pkgs/development/interpreters/python/pypy/default.nix
+++ b/pkgs/development/interpreters/python/pypy/default.nix
@@ -26,7 +26,7 @@ let
     inherit self sourceVersion pythonVersion packageOverrides;
     implementation = "pypy";
     libPrefix = "pypy${pythonVersion}";
-    executable = "pypy${if isPy39OrNewer then lib.versions.majorMinor pythonVersion else if isPy3k then "3" else ""}";
+    executable = "pypy${if isPy39OrNewer then lib.versions.majorMinor pythonVersion else lib.optionalString isPy3k "3"}";
     sitePackages = "site-packages";
     hasDistutilsCxxPatch = false;
     inherit pythonAttr;
diff --git a/pkgs/development/interpreters/python/pypy/prebuilt.nix b/pkgs/development/interpreters/python/pypy/prebuilt.nix
index a25ab8a78221..9b3baf84848b 100644
--- a/pkgs/development/interpreters/python/pypy/prebuilt.nix
+++ b/pkgs/development/interpreters/python/pypy/prebuilt.nix
@@ -32,7 +32,7 @@ let
     inherit self sourceVersion pythonVersion packageOverrides;
     implementation = "pypy";
     libPrefix = "pypy${pythonVersion}";
-    executable = "pypy${if isPy3k then "3" else ""}";
+    executable = "pypy${lib.optionalString isPy3k "3"}";
     sitePackages = "lib/${libPrefix}/site-packages";
     hasDistutilsCxxPatch = false;
 
diff --git a/pkgs/development/interpreters/python/pypy/prebuilt_2_7.nix b/pkgs/development/interpreters/python/pypy/prebuilt_2_7.nix
index a95e0c2f651e..ddf3963060d1 100644
--- a/pkgs/development/interpreters/python/pypy/prebuilt_2_7.nix
+++ b/pkgs/development/interpreters/python/pypy/prebuilt_2_7.nix
@@ -32,7 +32,7 @@ let
     inherit self sourceVersion pythonVersion packageOverrides;
     implementation = "pypy";
     libPrefix = "pypy${pythonVersion}";
-    executable = "pypy${if isPy3k then "3" else ""}";
+    executable = "pypy${lib.optionalString isPy3k "3"}";
     sitePackages = "site-packages";
     hasDistutilsCxxPatch = false;
 
diff --git a/pkgs/development/interpreters/ruby/ruby-version.nix b/pkgs/development/interpreters/ruby/ruby-version.nix
index 23f7f46a47af..57fa60aea28c 100644
--- a/pkgs/development/interpreters/ruby/ruby-version.nix
+++ b/pkgs/development/interpreters/ruby/ruby-version.nix
@@ -55,9 +55,9 @@ let
         self.majMinTiny + (
           if self.patchLevel != null then
             "-p${self.patchLevel}"
-          else if self.tail != "" then
-            "-${self.tail}"
-          else "");
+          else
+            lib.optionalString (self.tail != "") "-${self.tail}"
+        );
     };
 in
   rubyVersion
diff --git a/pkgs/development/libraries/botan/generic.nix b/pkgs/development/libraries/botan/generic.nix
index 71ac20c4f31b..1c5126584c2c 100644
--- a/pkgs/development/libraries/botan/generic.nix
+++ b/pkgs/development/libraries/botan/generic.nix
@@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
     ++ lib.optionals stdenv.isDarwin [ CoreServices Security ];
 
   configurePhase = ''
-    python configure.py --prefix=$out --with-bzip2 --with-zlib ${extraConfigureFlags}${if stdenv.cc.isClang then " --cc=clang" else "" }
+    python configure.py --prefix=$out --with-bzip2 --with-zlib ${extraConfigureFlags}${lib.optionalString stdenv.cc.isClang " --cc=clang"}
   '';
 
   enableParallelBuilding = true;
diff --git a/pkgs/development/libraries/galario/default.nix b/pkgs/development/libraries/galario/default.nix
index 4000129f557a..8b54cfb7b879 100644
--- a/pkgs/development/libraries/galario/default.nix
+++ b/pkgs/development/libraries/galario/default.nix
@@ -50,7 +50,7 @@ stdenv.mkDerivation rec {
 
   preCheck = ''
     ${if stdenv.isDarwin then "export DYLD_LIBRARY_PATH=$(pwd)/src/" else "export LD_LIBRARY_PATH=$(pwd)/src/"}
-    ${if enablePython then "sed -i -e 's|^#!.*|#!${stdenv.shell}|' python/py.test.sh" else ""}
+    ${lib.optionalString enablePython "sed -i -e 's|^#!.*|#!${stdenv.shell}|' python/py.test.sh"}
   '';
 
   cmakeFlags = lib.optionals enablePython [
diff --git a/pkgs/development/libraries/gettext/default.nix b/pkgs/development/libraries/gettext/default.nix
index ae5b9f48293a..81f7abc90a38 100644
--- a/pkgs/development/libraries/gettext/default.nix
+++ b/pkgs/development/libraries/gettext/default.nix
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
 
   hardeningDisable = [ "format" ];
 
-  LDFLAGS = if stdenv.isSunOS then "-lm -lmd -lmp -luutil -lnvpair -lnsl -lidmap -lavl -lsec" else "";
+  LDFLAGS = lib.optionalString stdenv.isSunOS "-lm -lmd -lmp -luutil -lnvpair -lnsl -lidmap -lavl -lsec";
 
   configureFlags = [
      "--disable-csharp" "--with-xz"
diff --git a/pkgs/development/libraries/glibc/common.nix b/pkgs/development/libraries/glibc/common.nix
index 780a3e091daf..a3c2e4618493 100644
--- a/pkgs/development/libraries/glibc/common.nix
+++ b/pkgs/development/libraries/glibc/common.nix
@@ -169,7 +169,7 @@ stdenv.mkDerivation ({
   buildInputs = [ linuxHeaders ] ++ lib.optionals withGd [ gd libpng ] ++ extraBuildInputs;
 
   env = {
-    linuxHeaders = if withLinuxHeaders then linuxHeaders else "";
+    linuxHeaders = lib.optionalString withLinuxHeaders linuxHeaders;
     inherit (stdenv) is64bit;
     # Needed to install share/zoneinfo/zone.tab.  Set to impure /bin/sh to
     # prevent a retained dependency on the bootstrap tools in the stdenv-linux
diff --git a/pkgs/development/libraries/lame/default.nix b/pkgs/development/libraries/lame/default.nix
index 506be9193228..bdc173507c05 100644
--- a/pkgs/development/libraries/lame/default.nix
+++ b/pkgs/development/libraries/lame/default.nix
@@ -42,7 +42,7 @@ stdenv.mkDerivation rec {
     (lib.enableFeature frontendSupport "dynamic-frontends")
     #(enableFeature mp3xSupport "mp3x")
     (lib.enableFeature mp3rtpSupport "mp3rtp")
-    (if debugSupport then "--enable-debug=alot" else "")
+    (lib.optionalString debugSupport "--enable-debug=alot")
   ];
 
   preConfigure = ''
diff --git a/pkgs/development/libraries/libvirt/default.nix b/pkgs/development/libraries/libvirt/default.nix
index 734f96850c5d..8db7964257e8 100644
--- a/pkgs/development/libraries/libvirt/default.nix
+++ b/pkgs/development/libraries/libvirt/default.nix
@@ -269,7 +269,7 @@ stdenv.mkDerivation rec {
       (cfg "runstatedir" "/run")
 
       (cfg "init_script" (if isDarwin then "none" else "systemd"))
-      (cfg "qemu_datadir" (if isDarwin then "${qemu}/share/qemu" else ""))
+      (cfg "qemu_datadir" (lib.optionalString isDarwin "${qemu}/share/qemu"))
 
       (feat "apparmor" isLinux)
       (feat "attr" isLinux)
diff --git a/pkgs/development/libraries/libvpx/1_8.nix b/pkgs/development/libraries/libvpx/1_8.nix
index befbafd5a4ec..643dcb4d8f40 100644
--- a/pkgs/development/libraries/libvpx/1_8.nix
+++ b/pkgs/development/libraries/libvpx/1_8.nix
@@ -156,7 +156,7 @@ stdenv.mkDerivation rec {
               else if stdenv.hostPlatform.osxMinVersion == "10.5"  then "9"
               else "8"
             else ""}-gcc"
-    (if stdenv.hostPlatform.isCygwin then "--enable-static-msvcrt" else "")
+    (lib.optionalString stdenv.hostPlatform.isCygwin "--enable-static-msvcrt")
   ] # Experimental features
     ++ optional experimentalSpatialSvcSupport "--enable-spatial-svc"
     ++ optional experimentalFpMbStatsSupport "--enable-fp-mb-stats"
diff --git a/pkgs/development/libraries/libvpx/default.nix b/pkgs/development/libraries/libvpx/default.nix
index d82bf42bef61..1d791aec6fa6 100644
--- a/pkgs/development/libraries/libvpx/default.nix
+++ b/pkgs/development/libraries/libvpx/default.nix
@@ -165,7 +165,7 @@ stdenv.mkDerivation rec {
                     experimentalEmulateHardwareSupport) "experimental")
   ] ++ optionals (stdenv.isBSD || stdenv.hostPlatform != stdenv.buildPlatform) [
     "--force-target=${stdenv.hostPlatform.parsed.cpu.name}-${kernel}-gcc"
-    (if stdenv.hostPlatform.isCygwin then "--enable-static-msvcrt" else "")
+    (lib.optionalString stdenv.hostPlatform.isCygwin "--enable-static-msvcrt")
   ] # Experimental features
     ++ optional experimentalSpatialSvcSupport "--enable-spatial-svc"
     ++ optional experimentalFpMbStatsSupport "--enable-fp-mb-stats"
diff --git a/pkgs/development/libraries/physics/applgrid/default.nix b/pkgs/development/libraries/physics/applgrid/default.nix
index 512398dde9a1..105a6b4953f7 100644
--- a/pkgs/development/libraries/physics/applgrid/default.nix
+++ b/pkgs/development/libraries/physics/applgrid/default.nix
@@ -21,10 +21,10 @@ stdenv.mkDerivation rec {
   preConfigure = ''
     substituteInPlace src/Makefile.in \
       --replace "-L\$(subst /libgfortran.a, ,\$(FRTLIB) )" "-L${gfortran.cc.lib}/lib"
-  '' + (if stdenv.isDarwin then ''
+  '' + (lib.optionalString stdenv.isDarwin ''
     substituteInPlace src/Makefile.in \
       --replace "gfortran -print-file-name=libgfortran.a" "gfortran -print-file-name=libgfortran.dylib"
-  '' else "");
+  '');
 
   enableParallelBuilding = false; # broken
 
diff --git a/pkgs/development/libraries/science/math/amd-blis/default.nix b/pkgs/development/libraries/science/math/amd-blis/default.nix
index f04087302825..962e8e8e6ace 100644
--- a/pkgs/development/libraries/science/math/amd-blis/default.nix
+++ b/pkgs/development/libraries/science/math/amd-blis/default.nix
@@ -16,7 +16,7 @@
 }:
 
 let
-  threadingSuffix = if withOpenMP then "-mt" else "";
+  threadingSuffix = lib.optionalString withOpenMP "-mt";
   blasIntSize = if blas64 then "64" else "32";
 in stdenv.mkDerivation rec {
   pname = "amd-blis";
diff --git a/pkgs/development/libraries/science/math/p4est-sc/default.nix b/pkgs/development/libraries/science/math/p4est-sc/default.nix
index eeb1d14b910a..fbd9db6a419f 100644
--- a/pkgs/development/libraries/science/math/p4est-sc/default.nix
+++ b/pkgs/development/libraries/science/math/p4est-sc/default.nix
@@ -5,7 +5,7 @@
 }:
 
 let
-  dbg = if debugEnable then "-dbg" else "";
+  dbg = lib.optionalString debugEnable "-dbg";
   debugEnable = p4est-sc-debugEnable;
   mpiSupport = p4est-sc-mpiSupport;
   isOpenmpi = mpiSupport && mpi.pname == "openmpi";
@@ -35,7 +35,7 @@ stdenv.mkDerivation {
   '';
   preConfigure = ''
     echo "2.8.0" > .tarball-version
-    ${if mpiSupport then "unset CC" else ""}
+    ${lib.optionalString mpiSupport "unset CC"}
   '';
 
   configureFlags = [ "--enable-pthread=-pthread" ]
diff --git a/pkgs/development/libraries/science/math/p4est/default.nix b/pkgs/development/libraries/science/math/p4est/default.nix
index 9396a9144423..a55c5fe573bf 100644
--- a/pkgs/development/libraries/science/math/p4est/default.nix
+++ b/pkgs/development/libraries/science/math/p4est/default.nix
@@ -9,7 +9,7 @@
 
 let
   inherit (p4est-sc) debugEnable mpiSupport;
-  dbg = if debugEnable then "-dbg" else "";
+  dbg = lib.optionalString debugEnable "-dbg";
   withMetis = p4est-withMetis;
 in
 stdenv.mkDerivation {
diff --git a/pkgs/development/libraries/science/math/petsc/default.nix b/pkgs/development/libraries/science/math/petsc/default.nix
index ae95fefe0e63..c2fabae1c20b 100644
--- a/pkgs/development/libraries/science/math/petsc/default.nix
+++ b/pkgs/development/libraries/science/math/petsc/default.nix
@@ -55,11 +55,11 @@ stdenv.mkDerivation rec {
         "--with-fc=mpif90"
         "--with-mpi=1"
       ''}
-      ${if withp4est then ''
+      ${lib.optionalString withp4est ''
         "--with-p4est=1"
         "--with-zlib-include=${zlib.dev}/include"
         "--with-zlib-lib=-L${zlib}/lib -lz"
-      '' else ""}
+      ''}
       "--with-blas=1"
       "--with-lapack=1"
     )
diff --git a/pkgs/development/libraries/udns/default.nix b/pkgs/development/libraries/udns/default.nix
index da0554d49e60..518ed432b723 100644
--- a/pkgs/development/libraries/udns/default.nix
+++ b/pkgs/development/libraries/udns/default.nix
@@ -19,14 +19,10 @@ stdenv.mkDerivation rec {
   # udns uses a very custom build and hardcodes a .so name in a few places.
   # Instead of fighting with it to apply the standard dylib script, change
   # the right place in the Makefile itself.
-  postPatch =
-    if stdenv.isDarwin
-    then
-      ''
-        substituteInPlace Makefile.in \
-          --replace --soname, -install_name,$out/lib/
-      ''
-    else "";
+  postPatch = lib.optionalString stdenv.isDarwin ''
+    substituteInPlace Makefile.in \
+      --replace --soname, -install_name,$out/lib/
+  '';
 
   installPhase = ''
     runHook preInstall
diff --git a/pkgs/development/mobile/titaniumenv/build-app.nix b/pkgs/development/mobile/titaniumenv/build-app.nix
index e4c3062cf531..fa2eeae00b55 100644
--- a/pkgs/development/mobile/titaniumenv/build-app.nix
+++ b/pkgs/development/mobile/titaniumenv/build-app.nix
@@ -167,7 +167,7 @@ stdenv.mkDerivation ({
       echo "file binary-dist \"$(ls $out/*.apk)\"" > $out/nix-support/hydra-build-products
     ''
     else if target == "iphone" then
-      if release then ''
+      lib.optionalString release ''
         mkdir -p $out/nix-support
         echo "file binary-dist \"$(echo $out/*.ipa)\"" > $out/nix-support/hydra-build-products
 
@@ -180,7 +180,6 @@ stdenv.mkDerivation ({
           echo "doc install \"$out/$appname.html\"" >> $out/nix-support/hydra-build-products
         ''}
       ''
-      else ""
     else throw "Target: ${target} is not supported!"}
   '';
 
diff --git a/pkgs/development/mobile/titaniumenv/titaniumsdk-7.5.nix b/pkgs/development/mobile/titaniumenv/titaniumsdk-7.5.nix
index 4c8a63a0a528..a42a9c20923d 100644
--- a/pkgs/development/mobile/titaniumenv/titaniumsdk-7.5.nix
+++ b/pkgs/development/mobile/titaniumenv/titaniumsdk-7.5.nix
@@ -103,10 +103,9 @@ stdenv.mkDerivation {
       ''
         patchelf --set-interpreter ${stdenv.cc.libc}/lib/ld-linux.so.2 android/titanium_prep.linux32
       ''
-      else if stdenv.system == "x86_64-linux" then
-      ''
+      else lib.optionalString (stdenv.system == "x86_64-linux") ''
         patchelf --set-interpreter ${stdenv.cc.libc}/lib/ld-linux-x86-64.so.2 android/titanium_prep.linux64
       ''
-      else ""}
+    }
   '';
 }
diff --git a/pkgs/development/mobile/titaniumenv/titaniumsdk-8.2.nix b/pkgs/development/mobile/titaniumenv/titaniumsdk-8.2.nix
index e51775b8c6df..a0907881d168 100644
--- a/pkgs/development/mobile/titaniumenv/titaniumsdk-8.2.nix
+++ b/pkgs/development/mobile/titaniumenv/titaniumsdk-8.2.nix
@@ -105,10 +105,9 @@ stdenv.mkDerivation {
       ''
         patchelf --set-interpreter ${stdenv.cc.libc}/lib/ld-linux.so.2 android/titanium_prep.linux32
       ''
-      else if stdenv.system == "x86_64-linux" then
-      ''
+      else lib.optionalString (stdenv.system == "x86_64-linux") ''
         patchelf --set-interpreter ${stdenv.cc.libc}/lib/ld-linux-x86-64.so.2 android/titanium_prep.linux64
       ''
-      else ""}
+    }
   '';
 }
diff --git a/pkgs/development/mobile/xcodeenv/build-app.nix b/pkgs/development/mobile/xcodeenv/build-app.nix
index 4bef0ba2db0e..6120025d5e3e 100644
--- a/pkgs/development/mobile/xcodeenv/build-app.nix
+++ b/pkgs/development/mobile/xcodeenv/build-app.nix
@@ -91,7 +91,7 @@ stdenv.mkDerivation ({
     # Do the building
     export LD=/usr/bin/clang # To avoid problem with -isysroot parameter that is unrecognized by the stock ld. Comparison with an impure build shows that it uses clang instead. Ugly, but it works
 
-    xcodebuild -target ${_target} -configuration ${_configuration} ${lib.optionalString (scheme != null) "-scheme ${scheme}"} -sdk ${_sdk} TARGETED_DEVICE_FAMILY="1, 2" ONLY_ACTIVE_ARCH=NO CONFIGURATION_TEMP_DIR=$TMPDIR CONFIGURATION_BUILD_DIR=$out ${if generateIPA || generateXCArchive then "-archivePath \"${name}.xcarchive\" archive" else ""} ${if release then '' PROVISIONING_PROFILE=$PROVISIONING_PROFILE OTHER_CODE_SIGN_FLAGS="--keychain $HOME/Library/Keychains/$keychainName-db"'' else ""} ${xcodeFlags}
+    xcodebuild -target ${_target} -configuration ${_configuration} ${lib.optionalString (scheme != null) "-scheme ${scheme}"} -sdk ${_sdk} TARGETED_DEVICE_FAMILY="1, 2" ONLY_ACTIVE_ARCH=NO CONFIGURATION_TEMP_DIR=$TMPDIR CONFIGURATION_BUILD_DIR=$out ${lib.optionalString (generateIPA || generateXCArchive) "-archivePath \"${name}.xcarchive\" archive"} ${lib.optionalString release '' PROVISIONING_PROFILE=$PROVISIONING_PROFILE OTHER_CODE_SIGN_FLAGS="--keychain $HOME/Library/Keychains/$keychainName-db"''} ${xcodeFlags}
 
     ${lib.optionalString release ''
       ${lib.optionalString generateIPA ''
diff --git a/pkgs/development/node-packages/overrides.nix b/pkgs/development/node-packages/overrides.nix
index 1ecf716329b9..1a1049044355 100644
--- a/pkgs/development/node-packages/overrides.nix
+++ b/pkgs/development/node-packages/overrides.nix
@@ -268,11 +268,7 @@ final: prev: {
     nativeBuildInputs = [ pkgs.buildPackages.makeWrapper ];
     postFixup = ''
       wrapProgram "$out/bin/makam" --prefix PATH : ${lib.makeBinPath [ nodejs ]}
-      ${
-        if stdenv.isLinux
-          then "patchelf --set-interpreter ${stdenv.cc.libc}/lib/ld-linux-x86-64.so.2 \"$out/lib/node_modules/makam/makam-bin-linux64\""
-          else ""
-      }
+      ${lib.optionalString stdenv.isLinux "patchelf --set-interpreter ${stdenv.cc.libc}/lib/ld-linux-x86-64.so.2 \"$out/lib/node_modules/makam/makam-bin-linux64\""}
     '';
   };
 
diff --git a/pkgs/development/python-modules/h5py/default.nix b/pkgs/development/python-modules/h5py/default.nix
index c956d139942b..9e38225571d9 100644
--- a/pkgs/development/python-modules/h5py/default.nix
+++ b/pkgs/development/python-modules/h5py/default.nix
@@ -46,7 +46,7 @@ in buildPythonPackage rec {
     ${lib.optionalString mpiSupport "export OMPI_MCA_rmaps_base_oversubscribe=yes"}
   '';
 
-  preBuild = if mpiSupport then "export CC=${mpi}/bin/mpicc" else "";
+  preBuild = lib.optionalString mpiSupport "export CC=${mpi}/bin/mpicc";
 
   nativeBuildInputs = [
     cython
diff --git a/pkgs/development/python-modules/optuna/default.nix b/pkgs/development/python-modules/optuna/default.nix
index c921feadd0e8..dc07fcffac26 100644
--- a/pkgs/development/python-modules/optuna/default.nix
+++ b/pkgs/development/python-modules/optuna/default.nix
@@ -70,10 +70,10 @@ buildPythonPackage rec {
     typing
   ];
 
-  configurePhase = if !(pythonOlder "3.5") then ''
+  configurePhase = lib.optionalString (! pythonOlder "3.5") ''
     substituteInPlace setup.py \
       --replace "'typing'," ""
-  '' else "";
+  '';
 
   checkPhase = ''
     pytest --ignore tests/test_cli.py \
diff --git a/pkgs/development/python-modules/tensorflow/default.nix b/pkgs/development/python-modules/tensorflow/default.nix
index 8082fd9267bc..bbc7087ba2c1 100644
--- a/pkgs/development/python-modules/tensorflow/default.nix
+++ b/pkgs/development/python-modules/tensorflow/default.nix
@@ -75,7 +75,7 @@ let
   tfFeature = x: if x then "1" else "0";
 
   version = "2.11.0";
-  variant = if cudaSupport then "-gpu" else "";
+  variant = lib.optionalString cudaSupport "-gpu";
   pname = "tensorflow${variant}";
 
   pythonEnv = python.withPackages (_:
diff --git a/pkgs/development/ruby-modules/bundled-common/default.nix b/pkgs/development/ruby-modules/bundled-common/default.nix
index 4672bad4ca4d..aa903a5637c0 100644
--- a/pkgs/development/ruby-modules/bundled-common/default.nix
+++ b/pkgs/development/ruby-modules/bundled-common/default.nix
@@ -66,9 +66,8 @@ let
     name;
 
   copyIfBundledByPath = { bundledByPath ? false, ...}:
-  (if bundledByPath then
-      assert gemFiles.gemdir != null; "cp -a ${gemFiles.gemdir}/* $out/" #*/
-    else ""
+  (lib.optionalString bundledByPath (
+      assert gemFiles.gemdir != null; "cp -a ${gemFiles.gemdir}/* $out/") #*/
   );
 
   maybeCopyAll = pkgname: if pkgname == null then "" else
diff --git a/pkgs/development/tools/misc/distcc/default.nix b/pkgs/development/tools/misc/distcc/default.nix
index 27ff1b5e69dd..b7270f79c431 100644
--- a/pkgs/development/tools/misc/distcc/default.nix
+++ b/pkgs/development/tools/misc/distcc/default.nix
@@ -27,10 +27,10 @@ let
                             CXXFLAGS="-O2 -fno-strict-aliasing"
           --mandir=$out/share/man
                             ${if sysconfDir == "" then "" else "--sysconfdir=${sysconfDir}"}
-                            ${if static then "LDFLAGS=-static" else ""}
-                            --with${if static == true || popt == null then "" else "out"}-included-popt
-                            --with${if avahi != null then "" else "out"}-avahi
-                            --with${if gtk3 != null then "" else "out"}-gtk
+                            ${lib.optionalString static "LDFLAGS=-static"}
+                            ${lib.withFeature (static == true || popt == null) "included-popt"}
+                            ${lib.withFeature (avahi != null) "avahi"}
+                            ${lib.withFeature (gtk3 != null) "gtk"}
                             --without-gnome
                             --enable-rfc2553
                             --disable-Werror   # a must on gcc 4.6
diff --git a/pkgs/development/tools/poetry2nix/poetry2nix/lib.nix b/pkgs/development/tools/poetry2nix/poetry2nix/lib.nix
index dd1e2640a528..424e93c9344a 100644
--- a/pkgs/development/tools/poetry2nix/poetry2nix/lib.nix
+++ b/pkgs/development/tools/poetry2nix/poetry2nix/lib.nix
@@ -151,7 +151,7 @@ let
         (builtins.filter
           ({ prefix, path }: "NETRC" == prefix)
           builtins.nixPath);
-      netrc_file = if (pathParts != [ ]) then (builtins.head pathParts).path else "";
+      netrc_file = lib.optionalString (pathParts != [ ]) (builtins.head pathParts).path;
     in
     pkgs.runCommand file
       {
diff --git a/pkgs/development/tools/poetry2nix/poetry2nix/overrides/default.nix b/pkgs/development/tools/poetry2nix/poetry2nix/overrides/default.nix
index 36a66d091aeb..60a45f606f6b 100644
--- a/pkgs/development/tools/poetry2nix/poetry2nix/overrides/default.nix
+++ b/pkgs/development/tools/poetry2nix/poetry2nix/overrides/default.nix
@@ -457,9 +457,9 @@ lib.composeManyExtensions [
 
         preConfigure = lib.concatStringsSep "\n" [
           (old.preConfigure or "")
-          (if (lib.versionAtLeast stdenv.hostPlatform.darwinMinVersion "11" && stdenv.isDarwin) then ''
+          (lib.optionalString (lib.versionAtLeast stdenv.hostPlatform.darwinMinVersion "11" && stdenv.isDarwin) ''
             MACOSX_DEPLOYMENT_TARGET=10.16
-          '' else "")
+          '')
         ];
 
         preBuild = old.preBuild or "" + ''
@@ -720,7 +720,7 @@ lib.composeManyExtensions [
                 (old.propagatedBuildInputs or [ ])
                 ++ lib.optionals mpiSupport [ self.mpi4py self.openssh ]
               ;
-              preBuild = if mpiSupport then "export CC=${mpi}/bin/mpicc" else "";
+              preBuild = lib.optionalString mpiSupport "export CC=${mpi}/bin/mpicc";
               HDF5_DIR = "${pkgs.hdf5}";
               HDF5_MPI = if mpiSupport then "ON" else "OFF";
               # avoid strict pinning of numpy
diff --git a/pkgs/games/factorio/default.nix b/pkgs/games/factorio/default.nix
index a65ce6bac0db..41dd9625adb8 100644
--- a/pkgs/games/factorio/default.nix
+++ b/pkgs/games/factorio/default.nix
@@ -202,7 +202,7 @@ let
           --run "$out/share/factorio/update-config.sh"               \
           --argv0 ""                                                 \
           --add-flags "-c \$HOME/.factorio/config.cfg"               \
-          ${if mods!=[] then "--add-flags --mod-directory=${modDir}" else ""}
+          ${lib.optionalString (mods!=[]) "--add-flags --mod-directory=${modDir}"}
 
           # TODO Currently, every time a mod is changed/added/removed using the
           # modlist, a new derivation will take up the entire footprint of the
diff --git a/pkgs/games/oilrush/default.nix b/pkgs/games/oilrush/default.nix
index b78baee725d4..947b7141b572 100644
--- a/pkgs/games/oilrush/default.nix
+++ b/pkgs/games/oilrush/default.nix
@@ -14,8 +14,7 @@ stdenv.mkDerivation {
     fetchurl { inherit url sha256; };
   shell = stdenv.shell;
   arch = if stdenv.hostPlatform.system == "x86_64-linux" then "x64"
-         else if stdenv.hostPlatform.system == "i686-linux" then "x86"
-         else "";
+         else lib.optionalString (stdenv.hostPlatform.system == "i686-linux") "x86";
   unpackPhase = ''
     mkdir oilrush
     cd oilrush
diff --git a/pkgs/games/sgt-puzzles/default.nix b/pkgs/games/sgt-puzzles/default.nix
index 752181581f38..1b022ff6e14f 100644
--- a/pkgs/games/sgt-puzzles/default.nix
+++ b/pkgs/games/sgt-puzzles/default.nix
@@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
     wrapGAppsHook
   ];
 
-  NIX_CFLAGS_COMPILE = if isMobile then "-DSTYLUS_BASED" else "";
+  NIX_CFLAGS_COMPILE = lib.optionalString isMobile "-DSTYLUS_BASED";
 
   buildInputs = [ gtk3 libX11 ];
 
diff --git a/pkgs/misc/cups/drivers/samsung/4.01.17.nix b/pkgs/misc/cups/drivers/samsung/4.01.17.nix
index 334703017478..eaba99839f61 100644
--- a/pkgs/misc/cups/drivers/samsung/4.01.17.nix
+++ b/pkgs/misc/cups/drivers/samsung/4.01.17.nix
@@ -23,7 +23,7 @@
 # to see what will break when upgrading. Consider a new versioned attribute.
 let
   installationPath = if stdenv.hostPlatform.system == "x86_64-linux" then "x86_64" else "i386";
-  appendPath = if stdenv.hostPlatform.system == "x86_64-linux" then "64" else "";
+  appendPath = lib.optionalString (stdenv.hostPlatform.system == "x86_64-linux") "64";
   libPath = lib.makeLibraryPath [ cups libusb-compat-0_1 ] + ":$out/lib:${stdenv.cc.cc.lib}/lib${appendPath}";
 in stdenv.mkDerivation rec {
   pname = "samsung-UnifiedLinuxDriver";
diff --git a/pkgs/misc/source-and-tags/default.nix b/pkgs/misc/source-and-tags/default.nix
index 966a451c060c..88ed7a477251 100644
--- a/pkgs/misc/source-and-tags/default.nix
+++ b/pkgs/misc/source-and-tags/default.nix
@@ -59,7 +59,7 @@
                     # without this creating tag files for lifted-base fails
                     export LC_ALL=en_US.UTF-8
                     export LANG=en_US.UTF-8
-                    ${if stdenv.isLinux then "export LOCALE_ARCHIVE=${glibcLocales}/lib/locale/locale-archive;" else ""}
+                    ${lib.optionalString stdenv.isLinux "export LOCALE_ARCHIVE=${glibcLocales}/lib/locale/locale-archive;"}
 
                     ${toString hasktags}/bin/hasktags --ignore-close-implementation --ctags .
                     mv tags \$TAG_FILE
diff --git a/pkgs/os-specific/linux/musl/default.nix b/pkgs/os-specific/linux/musl/default.nix
index c8ed8283ab35..7a0fabf9d468 100644
--- a/pkgs/os-specific/linux/musl/default.nix
+++ b/pkgs/os-specific/linux/musl/default.nix
@@ -94,12 +94,11 @@ stdenv.mkDerivation rec {
   NIX_DONT_SET_RPATH = true;
 
   preBuild = ''
-    ${if (stdenv.targetPlatform.libc == "musl" && stdenv.targetPlatform.isx86_32) then
+    ${lib.optionalString (stdenv.targetPlatform.libc == "musl" && stdenv.targetPlatform.isx86_32)
     "# the -x c flag is required since the file extension confuses gcc
     # that detect the file as a linker script.
     $CC -x c -c ${stack_chk_fail_local_c} -o __stack_chk_fail_local.o
     $AR r libssp_nonshared.a __stack_chk_fail_local.o"
-      else ""
     }
   '';
 
diff --git a/pkgs/os-specific/linux/pcmciautils/default.nix b/pkgs/os-specific/linux/pcmciautils/default.nix
index bca58bd808eb..b5f9d8a0a2c2 100644
--- a/pkgs/os-specific/linux/pcmciautils/default.nix
+++ b/pkgs/os-specific/linux/pcmciautils/default.nix
@@ -27,8 +27,8 @@ stdenv.mkDerivation rec {
       s,/etc/pcmcia,$out&,;
     " src/{startup.c,pcmcia-check-broken-cis.c} # fix-color */
   ''
-  + (if firmware == [] then ''sed -i "s,STARTUP = true,STARTUP = false," Makefile'' else "")
-  + (if configOpts == null then "" else "ln -sf ${configOpts} ./config/config.opts")
+  + (lib.optionalString (firmware == []) ''sed -i "s,STARTUP = true,STARTUP = false," Makefile'')
+  + (lib.optionalString (configOpts != null) "ln -sf ${configOpts} ./config/config.opts")
   ;
 
   makeFlags = [ "LEX=flex" ];
diff --git a/pkgs/os-specific/windows/wxMSW-2.8/default.nix b/pkgs/os-specific/windows/wxMSW-2.8/default.nix
index bf1e73f67b9a..091897b69343 100644
--- a/pkgs/os-specific/windows/wxMSW-2.8/default.nix
+++ b/pkgs/os-specific/windows/wxMSW-2.8/default.nix
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
     (if compat24 then "--enable-compat24" else "--disable-compat24")
     (if compat26 then "--enable-compat26" else "--disable-compat26")
     "--disable-precomp-headers"
-    (if unicode then "--enable-unicode" else "")
+    (lib.optionalString unicode "--enable-unicode")
     "--with-opengl"
   ];
 
diff --git a/pkgs/servers/computing/storm/default.nix b/pkgs/servers/computing/storm/default.nix
index fbbda3837b97..d4669488901a 100644
--- a/pkgs/servers/computing/storm/default.nix
+++ b/pkgs/servers/computing/storm/default.nix
@@ -49,7 +49,7 @@ stdenv.mkDerivation rec {
        -e 's|java.library.path: .*|java.library.path: "${lib.concatStringsSep ":" extraLibraryPaths}"|' \
        -e 's|storm.log4j2.conf.dir: .*|storm.log4j2.conf.dir: "conf/log4j2"|' \
       defaults.yaml
-    ${if confFile != "" then "cat ${confFile} >> defaults.yaml" else ""}
+    ${lib.optionalString (confFile != "") "cat ${confFile} >> defaults.yaml"}
     mv defaults.yaml $out/conf;
 
     # Link to extra jars
diff --git a/pkgs/servers/pulseaudio/default.nix b/pkgs/servers/pulseaudio/default.nix
index 57977ebf4096..0c15e21f5a36 100644
--- a/pkgs/servers/pulseaudio/default.nix
+++ b/pkgs/servers/pulseaudio/default.nix
@@ -36,7 +36,7 @@
 }:
 
 stdenv.mkDerivation rec {
-  pname = "${if libOnly then "lib" else ""}pulseaudio";
+  pname = "${lib.optionalString libOnly "lib"}pulseaudio";
   version = "16.1";
 
   src = fetchurl {
diff --git a/pkgs/servers/roapi/http.nix b/pkgs/servers/roapi/http.nix
index 775850ea32e0..7edc3dd89b2a 100644
--- a/pkgs/servers/roapi/http.nix
+++ b/pkgs/servers/roapi/http.nix
@@ -5,7 +5,7 @@
 let
   pname = "roapi-http";
   version = "0.6.0";
-  target = if stdenv.isDarwin then "apple-darwin" else "";
+  target = lib.optionalString stdenv.isDarwin "apple-darwin";
 in
 # TODO build from source, currently compilation fails on darwin on snmalloc with
 #  ./mem/../ds/../pal/pal_apple.h:277:64: error: use of undeclared identifier 'kCCSuccess'
diff --git a/pkgs/stdenv/generic/check-meta.nix b/pkgs/stdenv/generic/check-meta.nix
index 9d99be2a0203..dd7825a409e2 100644
--- a/pkgs/stdenv/generic/check-meta.nix
+++ b/pkgs/stdenv/generic/check-meta.nix
@@ -242,7 +242,7 @@ let
       remediationMsg = (builtins.getAttr reason remediation) attrs;
       msg = if inHydra then "Warning while evaluating ${getName attrs}: «${reason}»: ${errormsg}"
         else "Package ${getName attrs} in ${pos_str meta} ${errormsg}, continuing anyway."
-             + (if remediationMsg != "" then "\n${remediationMsg}" else "");
+             + (lib.optionalString (remediationMsg != "") "\n${remediationMsg}");
       isEnabled = lib.findFirst (x: x == reason) null showWarnings;
     in if isEnabled != null then builtins.trace msg true else true;
 
diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix
index 5c7dfcceec64..878190738286 100644
--- a/pkgs/stdenv/linux/default.nix
+++ b/pkgs/stdenv/linux/default.nix
@@ -104,8 +104,8 @@ let
     ''
       export NIX_ENFORCE_PURITY="''${NIX_ENFORCE_PURITY-1}"
       export NIX_ENFORCE_NO_NATIVE="''${NIX_ENFORCE_NO_NATIVE-1}"
-      ${if system == "x86_64-linux" then "NIX_LIB64_IN_SELF_RPATH=1" else ""}
-      ${if system == "mipsel-linux" then "NIX_LIB32_IN_SELF_RPATH=1" else ""}
+      ${lib.optionalString (system == "x86_64-linux") "NIX_LIB64_IN_SELF_RPATH=1"}
+      ${lib.optionalString (system == "mipsel-linux") "NIX_LIB32_IN_SELF_RPATH=1"}
     '';
 
 
diff --git a/pkgs/tools/admin/google-cloud-sdk/components.nix b/pkgs/tools/admin/google-cloud-sdk/components.nix
index 72d293de211a..e43e945455a4 100644
--- a/pkgs/tools/admin/google-cloud-sdk/components.nix
+++ b/pkgs/tools/admin/google-cloud-sdk/components.nix
@@ -100,9 +100,7 @@ let
         pname = component.id;
         version = component.version.version_string;
         src =
-          if lib.hasAttrByPath [ "data" "source" ] component
-          then "${baseUrl}/${component.data.source}"
-          else "";
+          lib.optionalString (lib.hasAttrByPath [ "data" "source" ] component) "${baseUrl}/${component.data.source}";
         sha256 = lib.attrByPath [ "data" "checksum" ] "" component;
         dependencies = builtins.map (dep: builtins.getAttr dep components) component.dependencies;
         platforms =
@@ -137,12 +135,12 @@ let
     }: stdenv.mkDerivation {
       inherit pname version snapshot;
       src =
-        if src != "" then
-          builtins.fetchurl
+        lib.optionalString (src != "")
+          (builtins.fetchurl
             {
               url = src;
               inherit sha256;
-            } else "";
+            }) ;
       dontUnpack = true;
       installPhase = ''
         mkdir -p $out/google-cloud-sdk/.install
diff --git a/pkgs/tools/misc/grub/2.0x.nix b/pkgs/tools/misc/grub/2.0x.nix
index ca12c1f25887..16db1cb2ef1a 100644
--- a/pkgs/tools/misc/grub/2.0x.nix
+++ b/pkgs/tools/misc/grub/2.0x.nix
@@ -386,9 +386,7 @@ stdenv.mkDerivation rec {
   # save target that grub is compiled for
   grubTarget = if efiSupport
                then "${efiSystemsInstall.${stdenv.hostPlatform.system}.target}-efi"
-               else if inPCSystems
-                    then "${pcSystems.${stdenv.hostPlatform.system}.target}-pc"
-                    else "";
+               else lib.optionalString inPCSystems "${pcSystems.${stdenv.hostPlatform.system}.target}-pc";
 
   doCheck = false;
   enableParallelBuilding = true;
diff --git a/pkgs/tools/misc/grub/trusted.nix b/pkgs/tools/misc/grub/trusted.nix
index 2d07932dab2e..e4efceea888d 100644
--- a/pkgs/tools/misc/grub/trusted.nix
+++ b/pkgs/tools/misc/grub/trusted.nix
@@ -103,10 +103,7 @@ stdenv.mkDerivation rec {
   ];
 
   # save target that grub is compiled for
-  grubTarget =
-    if inPCSystems
-    then "${pcSystems.${stdenv.hostPlatform.system}.target}-pc"
-    else "";
+  grubTarget = lib.optionalString inPCSystems "${pcSystems.${stdenv.hostPlatform.system}.target}-pc";
 
   doCheck = false;
   # On -j16 races with early header creation:
diff --git a/pkgs/tools/misc/hdf4/default.nix b/pkgs/tools/misc/hdf4/default.nix
index 051e98862bd2..3bde0466cdba 100644
--- a/pkgs/tools/misc/hdf4/default.nix
+++ b/pkgs/tools/misc/hdf4/default.nix
@@ -1,4 +1,5 @@
-{ lib, stdenv
+{ lib
+, stdenv
 , fetchpatch
 , fetchurl
 , fixDarwinDylibNames
@@ -95,13 +96,15 @@ stdenv.mkDerivation rec {
     "NC_TEST-nctest"
   ];
 
-  checkPhase = let excludedTestsRegex = if (excludedTests != [])
-    then "(" + (lib.concatStringsSep "|" excludedTests) + ")"
-    else ""; in ''
-    runHook preCheck
-    ctest -E "${excludedTestsRegex}" --output-on-failure
-    runHook postCheck
-  '';
+  checkPhase =
+    let
+      excludedTestsRegex = lib.optionalString (excludedTests != [ ]) "(${lib.concatStringsSep "|" excludedTests})";
+    in
+    ''
+      runHook preCheck
+      ctest -E "${excludedTestsRegex}" --output-on-failure
+      runHook postCheck
+    '';
 
   outputs = [ "bin" "dev" "out" ];
 
@@ -117,7 +120,7 @@ stdenv.mkDerivation rec {
       szip
       javaSupport
       jdk
-    ;
+      ;
   };
 
   meta = with lib; {
diff --git a/pkgs/tools/networking/networkmanager/fortisslvpn/default.nix b/pkgs/tools/networking/networkmanager/fortisslvpn/default.nix
index f7e98b2b92fd..1ade86eb5d08 100644
--- a/pkgs/tools/networking/networkmanager/fortisslvpn/default.nix
+++ b/pkgs/tools/networking/networkmanager/fortisslvpn/default.nix
@@ -21,7 +21,7 @@
 stdenv.mkDerivation rec {
   pname = "NetworkManager-fortisslvpn";
   version = "1.4.0";
-  name = "${pname}${if withGnome then "-gnome" else ""}-${version}";
+  name = "${pname}${lib.optionalString withGnome "-gnome"}-${version}";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
diff --git a/pkgs/tools/networking/networkmanager/iodine/default.nix b/pkgs/tools/networking/networkmanager/iodine/default.nix
index 8c8d0dd6a322..8d09977b4e57 100644
--- a/pkgs/tools/networking/networkmanager/iodine/default.nix
+++ b/pkgs/tools/networking/networkmanager/iodine/default.nix
@@ -5,7 +5,7 @@ let
   pname = "NetworkManager-iodine";
   version = "unstable-2019-11-05";
 in stdenv.mkDerivation {
-  name = "${pname}${if withGnome then "-gnome" else ""}-${version}";
+  name = "${pname}${lib.optionalString withGnome "-gnome"}-${version}";
 
   src = fetchFromGitLab {
     domain = "gitlab.gnome.org";
diff --git a/pkgs/tools/networking/networkmanager/l2tp/default.nix b/pkgs/tools/networking/networkmanager/l2tp/default.nix
index 11a414a8a6a0..cef05f116106 100644
--- a/pkgs/tools/networking/networkmanager/l2tp/default.nix
+++ b/pkgs/tools/networking/networkmanager/l2tp/default.nix
@@ -20,7 +20,7 @@
 }:
 
 stdenv.mkDerivation rec {
-  name = "${pname}${if withGnome then "-gnome" else ""}-${version}";
+  name = "${pname}${lib.optionalString withGnome "-gnome"}-${version}";
   pname = "NetworkManager-l2tp";
   version = "1.20.4";
 
diff --git a/pkgs/tools/networking/networkmanager/sstp/default.nix b/pkgs/tools/networking/networkmanager/sstp/default.nix
index 6b05dcdcd854..3e4fbb36513b 100644
--- a/pkgs/tools/networking/networkmanager/sstp/default.nix
+++ b/pkgs/tools/networking/networkmanager/sstp/default.nix
@@ -20,7 +20,7 @@
 stdenv.mkDerivation rec {
   pname = "NetworkManager-sstp";
   version = "1.3.1";
-  name = "${pname}${if withGnome then "-gnome" else ""}-${version}";
+  name = "${pname}${lib.optionalString withGnome "-gnome"}-${version}";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
diff --git a/pkgs/tools/text/unoconv/default.nix b/pkgs/tools/text/unoconv/default.nix
index 9f3375c7e41c..50cd3d9411ec 100644
--- a/pkgs/tools/text/unoconv/default.nix
+++ b/pkgs/tools/text/unoconv/default.nix
@@ -26,9 +26,9 @@ stdenv.mkDerivation rec {
   postInstall = ''
     sed -i "s|/usr/bin/env python.*|${python3}/bin/${python3.executable}|" "$out/bin/unoconv"
     wrapProgram "$out/bin/unoconv" --set UNO_PATH "${libreoffice-unwrapped}/lib/libreoffice/program/"
-  '' + (if installSymlinks then ''
+  '' + lib.optionalString installSymlinks ''
     make install-links prefix="$out"
-  '' else "");
+  '';
 
   meta = with lib; {
     description = "Convert between any document format supported by LibreOffice/OpenOffice";

From 6f966cdd2adc51761d686cd0d7a5393bca595acd Mon Sep 17 00:00:00 2001
From: superherointj <5861043+superherointj@users.noreply.github.com>
Date: Wed, 8 Feb 2023 22:21:44 -0300
Subject: [PATCH 13/46] python310Packages.astropy-healpix: skip
 test_interpolate_bilinear_skycoord

---
 pkgs/development/python-modules/astropy-healpix/default.nix | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/pkgs/development/python-modules/astropy-healpix/default.nix b/pkgs/development/python-modules/astropy-healpix/default.nix
index 2eb0e4986f00..02f1a951d17c 100644
--- a/pkgs/development/python-modules/astropy-healpix/default.nix
+++ b/pkgs/development/python-modules/astropy-healpix/default.nix
@@ -1,4 +1,5 @@
 { lib
+, stdenv
 , buildPythonPackage
 , fetchPypi
 , numpy
@@ -36,6 +37,8 @@ buildPythonPackage rec {
     hypothesis
   ];
 
+  disabledTests = lib.optional (!stdenv.hostPlatform.isDarwin) "test_interpolate_bilinear_skycoord";
+
   # tests must be run in the build directory
   preCheck = ''
     cd build/lib*

From 7284a97dff30497e9f2e071dc5b39d7df4560fad Mon Sep 17 00:00:00 2001
From: Fabian Affolter <mail@fabian-affolter.ch>
Date: Tue, 14 Feb 2023 07:48:18 +0100
Subject: [PATCH 14/46] python310Packages.dbus-fast: 1.84.0 -> 1.84.1

Diff: https://github.com/Bluetooth-Devices/dbus-fast/compare/refs/tags/v1.84.0...v1.84.1

Changelog: https://github.com/Bluetooth-Devices/dbus-fast/releases/tag/v1.84.1
---
 pkgs/development/python-modules/dbus-fast/default.nix | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/pkgs/development/python-modules/dbus-fast/default.nix b/pkgs/development/python-modules/dbus-fast/default.nix
index b8f2fffe0e1a..09eff1461d5a 100644
--- a/pkgs/development/python-modules/dbus-fast/default.nix
+++ b/pkgs/development/python-modules/dbus-fast/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "dbus-fast";
-  version = "1.84.0";
+  version = "1.84.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "Bluetooth-Devices";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-AdfrzN7ufvy77tKjnHPNo+jHoHRw9fXtdUdYvdnMAjs=";
+    hash = "sha256-L2+8mS7mTRWDQwXcYfJW3078N69AFY2vs4a4vi62XYE=";
   };
 
   nativeBuildInputs = [

From 2776e6295585a3927c8674669c0c73e43e998367 Mon Sep 17 00:00:00 2001
From: "R. Ryantm" <ryantm-bot@ryantm.com>
Date: Tue, 14 Feb 2023 10:20:39 +0000
Subject: [PATCH 15/46] oh-my-posh: 14.2.5 -> 14.2.7

---
 pkgs/development/tools/oh-my-posh/default.nix | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/pkgs/development/tools/oh-my-posh/default.nix b/pkgs/development/tools/oh-my-posh/default.nix
index 526f52c86786..10d99906b40c 100644
--- a/pkgs/development/tools/oh-my-posh/default.nix
+++ b/pkgs/development/tools/oh-my-posh/default.nix
@@ -6,16 +6,16 @@
 
 buildGoModule rec {
   pname = "oh-my-posh";
-  version = "14.2.5";
+  version = "14.2.7";
 
   src = fetchFromGitHub {
     owner = "jandedobbeleer";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-XhpahA2BPtZeymNwlZ40FzLC5biThBBLna28zRw81Bw=";
+    hash = "sha256-x+hSsN/STJYbyGRCQJ70T3FMKfe1aJaqiK+KT0eNpwE=";
   };
 
-  vendorHash = "sha256-ehG71B351u+LoXDuKQkuEdEpUdHslVU2HcPKUz6FAnQ=";
+  vendorHash = "sha256-rLPL2kGIPR/paY3mLXsqMgvTe7EgQPmg3EqXrLjlFPk=";
 
   sourceRoot = "source/src";
 

From a80aad7a10c352d77f571bbcc557d50f92fa33fe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Antti=20Ker=C3=A4nen?= <detegr@rbx.email>
Date: Mon, 13 Feb 2023 08:39:57 +0200
Subject: [PATCH 16/46] c64-debugger: init at 0.64.58.6

---
 .../emulators/c64-debugger/default.nix        | 101 ++++++++++++++++++
 pkgs/top-level/all-packages.nix               |   2 +
 2 files changed, 103 insertions(+)
 create mode 100644 pkgs/applications/emulators/c64-debugger/default.nix

diff --git a/pkgs/applications/emulators/c64-debugger/default.nix b/pkgs/applications/emulators/c64-debugger/default.nix
new file mode 100644
index 000000000000..b7c357ca2709
--- /dev/null
+++ b/pkgs/applications/emulators/c64-debugger/default.nix
@@ -0,0 +1,101 @@
+{ lib
+, stdenv
+, fetchgit
+, alsa-lib
+, gtk3
+, libGL
+, libGLU
+, libX11
+, pkg-config
+, upx
+, xcbutil
+}:
+
+stdenv.mkDerivation {
+  name = "c64-debugger";
+  version = "0.64.58.6";
+
+  src = fetchgit {
+    url = "https://git.code.sf.net/p/c64-debugger/code";
+    rev = "f97772e3f5c8b4fa99e8ed212ed1c4cb1e2389f1";
+    sha256 = "sha256-3SR73AHQlYSEYpJLtQ/aJ1UITZGq7aA9tQKxBsn/yuc=";
+  };
+
+  buildInputs = [
+    alsa-lib
+    gtk3
+    libGL
+    libGLU
+    pkg-config
+    libX11
+    xcbutil
+  ];
+
+  nativeBuildInputs = [
+    upx
+  ];
+
+  postPatch = ''
+    # Disable default definition of RUN_COMMODORE64
+    sed -i 's|^#define RUN_COMMODORE64|//#define RUN_COMMODORE64|' MTEngine/Games/c64/C64D_Version.h
+  '';
+
+  buildPhase = ''
+    runHook preBuild
+
+    # Build C64 debugger
+    make -C MTEngine \
+      CFLAGS="-w -O2 -fcommon" \
+      CXXFLAGS="-w -O2 --std=c++11" \
+      DEFINES="-DRUN_COMMODORE64" \
+      -j$NIX_BUILD_CORES
+    mv MTEngine/c64debugger c64debugger
+    make -C MTEngine clean
+
+    # Build 65XE debugger
+    make -C MTEngine \
+      CFLAGS="-w -O2 -fcommon" \
+      CXXFLAGS="-w -O2 --std=c++11" \
+      DEFINES="-DRUN_ATARI" \
+      -j$NIX_BUILD_CORES
+    mv MTEngine/c64debugger 65xedebugger
+    make -C MTEngine clean
+
+    # Build NES debugger
+    make -C MTEngine \
+      CFLAGS="-w -O2 -fcommon" \
+      CXXFLAGS="-w -O2 --std=c++11" \
+      DEFINES="-DRUN_NES" \
+      -j$NIX_BUILD_CORES
+    mv MTEngine/c64debugger nesdebugger
+
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    install -d "$out/bin"
+    install -d "$out/share/doc"
+    install -m 755 c64debugger 65xedebugger nesdebugger "$out/bin"
+    install -m 644 MTEngine/Assets/*.txt "$out/share/doc"
+    install -m 644 MTEngine/Assets/*.pdf "$out/share/doc"
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://sourceforge.net/projects/c64-debugger";
+    description = "Commodore 64, Atari XL/XE and NES code and memory debugger that works in real time";
+    license = with licenses; [
+      gpl3Only # c64-debugger
+      mit # MTEngine
+      # emulators included in c64-debugger
+      gpl2Plus # VICE, atari800
+      gpl2 # nestopiaue
+    ];
+    mainProgram = "c64debugger";
+    maintainers = [ maintainers.detegr ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 91450b149754..6985ff4ef24d 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -368,6 +368,8 @@ with pkgs;
 
   buildMaven = callPackage ../build-support/build-maven.nix {};
 
+  c64-debugger = callPackage ../applications/emulators/c64-debugger { };
+
   caroline = callPackage ../development/libraries/caroline { };
 
   castget = callPackage ../applications/networking/feedreaders/castget { };

From 9bd88aa6ec3fa00b8745b4e528ca09ea51aabd09 Mon Sep 17 00:00:00 2001
From: K900 <me@0upti.me>
Date: Fri, 20 Jan 2023 15:38:30 +0300
Subject: [PATCH 17/46] plasma5: 5.26.5 -> 5.27.0

Autogenerated, more changes coming.
---
 pkgs/desktops/plasma-5/fetch.sh |   2 +-
 pkgs/desktops/plasma-5/srcs.nix | 480 +++++++++++++++++---------------
 2 files changed, 249 insertions(+), 233 deletions(-)

diff --git a/pkgs/desktops/plasma-5/fetch.sh b/pkgs/desktops/plasma-5/fetch.sh
index 2da4dc40e6be..0c77e43817c6 100644
--- a/pkgs/desktops/plasma-5/fetch.sh
+++ b/pkgs/desktops/plasma-5/fetch.sh
@@ -1 +1 @@
-WGET_ARGS=( https://download.kde.org/stable/plasma/5.26.5/ -A '*.tar.xz' )
+WGET_ARGS=( https://download.kde.org/stable/plasma/5.27.0/ -A '*.tar.xz' )
diff --git a/pkgs/desktops/plasma-5/srcs.nix b/pkgs/desktops/plasma-5/srcs.nix
index cc0a02b6aabe..496223dc8423 100644
--- a/pkgs/desktops/plasma-5/srcs.nix
+++ b/pkgs/desktops/plasma-5/srcs.nix
@@ -4,467 +4,483 @@
 
 {
   aura-browser = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/aura-browser-5.26.5.tar.xz";
-      sha256 = "0dhj058vh577jyhcjdp6x9dmh6apxk6yinknfci8l6vss9gchini";
-      name = "aura-browser-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/aura-browser-5.27.0.tar.xz";
+      sha256 = "0lw7qvvgbyrqy7zb3m4bd0j4j36x26z0nzxm2g84kgddmczf95az";
+      name = "aura-browser-5.27.0.tar.xz";
     };
   };
   bluedevil = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/bluedevil-5.26.5.tar.xz";
-      sha256 = "069hsn40zbnpkd73zcnnkdjv7n30dqyls5yvg3m0ljphn1syi79y";
-      name = "bluedevil-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/bluedevil-5.27.0.tar.xz";
+      sha256 = "0wjll668bmdk8xm2vl7p31md8ljwzycnr99y3bli4whczihiclly";
+      name = "bluedevil-5.27.0.tar.xz";
     };
   };
   breeze = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/breeze-5.26.5.tar.xz";
-      sha256 = "00zzb03jan14byh19mga3jrzwi3rl084cgpnk0wj3gwgf903p78y";
-      name = "breeze-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/breeze-5.27.0.tar.xz";
+      sha256 = "0g68l0kfdsp9halrwpbn3azm3v97gdynpc4y1bwa6j2xxaj5fp4a";
+      name = "breeze-5.27.0.tar.xz";
     };
   };
   breeze-grub = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/breeze-grub-5.26.5.tar.xz";
-      sha256 = "0ibjqv6hyqi4ljf5jhx5sv55li9jcvk5lydl0xrb54v8czbarg4w";
-      name = "breeze-grub-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/breeze-grub-5.27.0.tar.xz";
+      sha256 = "0mnga6fhpy10shvbfys6lw0q3hk61vhfa95ykvgv6d5ssavzamyp";
+      name = "breeze-grub-5.27.0.tar.xz";
     };
   };
   breeze-gtk = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/breeze-gtk-5.26.5.tar.xz";
-      sha256 = "1k1kcrv6cbx9m0yxnqhdgwq0bd8qf8055acwjdphwjhl50icliqi";
-      name = "breeze-gtk-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/breeze-gtk-5.27.0.tar.xz";
+      sha256 = "1apd17b7p8i2i2ls6pdpabzijca4lwdzd4p1srx46wb0slm6fqma";
+      name = "breeze-gtk-5.27.0.tar.xz";
     };
   };
   breeze-plymouth = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/breeze-plymouth-5.26.5.tar.xz";
-      sha256 = "0skiii7ni6r6jp3a7nq10hd6qdria1481lml4l57ma9afgvpxi9v";
-      name = "breeze-plymouth-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/breeze-plymouth-5.27.0.tar.xz";
+      sha256 = "103f8v56a8qm1hlnakbzljsv5iyfc3ynry169f2vvsafm40bc6c0";
+      name = "breeze-plymouth-5.27.0.tar.xz";
     };
   };
   discover = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/discover-5.26.5.tar.xz";
-      sha256 = "19fd4f7nvqznfkrivxh77si627kqjnm1g17lidl9alz2iy2bxfm6";
-      name = "discover-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/discover-5.27.0.tar.xz";
+      sha256 = "0qa9hz7fxf1c9wi5c1x5z345mac3d5prgxxvadv4285c0sxvqidz";
+      name = "discover-5.27.0.tar.xz";
     };
   };
   drkonqi = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/drkonqi-5.26.5.tar.xz";
-      sha256 = "1syl78sl7wzjdb53glln6laa017cawgz0c39p33bdwq3kpzckw07";
-      name = "drkonqi-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/drkonqi-5.27.0.tar.xz";
+      sha256 = "015ivarw48ymsz06jbd2rdqvdmcww93r2msrmmfh7jrzszqh3dlg";
+      name = "drkonqi-5.27.0.tar.xz";
+    };
+  };
+  flatpak-kcm = {
+    version = "5.27.0";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.27.0/flatpak-kcm-5.27.0.tar.xz";
+      sha256 = "0318p0pm79kzk4l1rc239h7a7kvswz9vy3kylznn561fazkn3lss";
+      name = "flatpak-kcm-5.27.0.tar.xz";
     };
   };
   kactivitymanagerd = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/kactivitymanagerd-5.26.5.tar.xz";
-      sha256 = "0ypnnh3lpcfw8ggi6nc8sr4hcsamx6s3ax869b6rhh392avcw2ha";
-      name = "kactivitymanagerd-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/kactivitymanagerd-5.27.0.tar.xz";
+      sha256 = "02k8il4sgl63rdkn63hhpsc6pymc9a5p4jv452fiw0vpf2zbj3sn";
+      name = "kactivitymanagerd-5.27.0.tar.xz";
     };
   };
   kde-cli-tools = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/kde-cli-tools-5.26.5.tar.xz";
-      sha256 = "0djxqxdkih4svmggk6lk6p6n3sx3w4q9fsnx2dxfn5injwh0qrkr";
-      name = "kde-cli-tools-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/kde-cli-tools-5.27.0.tar.xz";
+      sha256 = "1w5cxbxwfnv5wl04jwchr14c6fx0yf3s3x98d18h87bd0vx3w48m";
+      name = "kde-cli-tools-5.27.0.tar.xz";
     };
   };
   kde-gtk-config = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/kde-gtk-config-5.26.5.tar.xz";
-      sha256 = "10r4kgpd04hh05yriga2r5awwdb8v93jsx0qksdgj3661xy00x7n";
-      name = "kde-gtk-config-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/kde-gtk-config-5.27.0.tar.xz";
+      sha256 = "1bhqxnpgpj69jrfkn0znbnwp7r73gl6qb9xzi1pjj8cqb5bn5skg";
+      name = "kde-gtk-config-5.27.0.tar.xz";
     };
   };
   kdecoration = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/kdecoration-5.26.5.tar.xz";
-      sha256 = "1dzpqzi25wxmilj92lqjmd6wid3nlkbvnnpcpp0ywd860q30zzd2";
-      name = "kdecoration-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/kdecoration-5.27.0.tar.xz";
+      sha256 = "04vw9kyvwq5jg8pw85b96c3ahm8213pf4a03dm49hv1fdzslvjaf";
+      name = "kdecoration-5.27.0.tar.xz";
     };
   };
   kdeplasma-addons = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/kdeplasma-addons-5.26.5.tar.xz";
-      sha256 = "17vrdnigif4v38gbh04p8qs7wqp3y3nqll1m7xc4qfqbq1dydyjq";
-      name = "kdeplasma-addons-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/kdeplasma-addons-5.27.0.tar.xz";
+      sha256 = "19nr13aipfds1y5zr0a05wb55s7pdzqmpidmm7w9aaxxa5rbg623";
+      name = "kdeplasma-addons-5.27.0.tar.xz";
     };
   };
   kgamma5 = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/kgamma5-5.26.5.tar.xz";
-      sha256 = "0v4rpm2asv31w1rqrhn25kbcdl1acahg10lmh6iwisxl1i3x8hd8";
-      name = "kgamma5-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/kgamma5-5.27.0.tar.xz";
+      sha256 = "1dyfpwfadp2n83lcr3mak3n8h2cxgxs2hv35madah6zf78m5ldw5";
+      name = "kgamma5-5.27.0.tar.xz";
     };
   };
   khotkeys = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/khotkeys-5.26.5.tar.xz";
-      sha256 = "0lkmh5n76kmrdxm4snkk1zz7d927qkl69ajd5qhz277whpz3slw8";
-      name = "khotkeys-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/khotkeys-5.27.0.tar.xz";
+      sha256 = "1xyy7511k6a1xlr63qq3qbk8wr1c12skmqzxliijv8q2b7b8dpiz";
+      name = "khotkeys-5.27.0.tar.xz";
     };
   };
   kinfocenter = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/kinfocenter-5.26.5.tar.xz";
-      sha256 = "0rka2fm7r2zikv3lcd1q39swgcp6fs5l4f5ldpgwpk9bps96cy4x";
-      name = "kinfocenter-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/kinfocenter-5.27.0.tar.xz";
+      sha256 = "0k9h4m0jzxdyqyfn9pam0ssmhj6lng0l8mn23r7yw6mqi1i01yvl";
+      name = "kinfocenter-5.27.0.tar.xz";
     };
   };
   kmenuedit = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/kmenuedit-5.26.5.tar.xz";
-      sha256 = "17iyk77mb1lp9xjl92ffvv111b4m2qq98xznd1qafnah7ix1cg7p";
-      name = "kmenuedit-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/kmenuedit-5.27.0.tar.xz";
+      sha256 = "1jb5pjy6flar0hxy9avnryxjmvh0ixyxr7xjbzbwjfx6zzf40i62";
+      name = "kmenuedit-5.27.0.tar.xz";
     };
   };
   kpipewire = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/kpipewire-5.26.5.tar.xz";
-      sha256 = "1yqymwq48mqv9zfw3idb0abizrfhr7f4d37ys9w7a9jixcm7rdrv";
-      name = "kpipewire-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/kpipewire-5.27.0.tar.xz";
+      sha256 = "0mhpi16025bznxgp9lkg44rjxbm541yl39nj1rffpqh3bvhgw600";
+      name = "kpipewire-5.27.0.tar.xz";
     };
   };
   kscreen = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/kscreen-5.26.5.tar.xz";
-      sha256 = "0w8yrzpgr23s7sr3296lrm2zbm2j2174zv5az41i44l907iq9y1x";
-      name = "kscreen-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/kscreen-5.27.0.tar.xz";
+      sha256 = "043g0h2lk6k4xqfbma45m91wf93fm0v1vgf49ax6bqx9y3hvb1gw";
+      name = "kscreen-5.27.0.tar.xz";
     };
   };
   kscreenlocker = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/kscreenlocker-5.26.5.tar.xz";
-      sha256 = "0lwn3xbbk1578974m3nkk2x5h9fadrcizvh4q4528s5wgxja6w2g";
-      name = "kscreenlocker-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/kscreenlocker-5.27.0.tar.xz";
+      sha256 = "0xvwlqh6knrj2l9asrkmv7fzwl5xbxm05pgimb9lk1bk67nr0xir";
+      name = "kscreenlocker-5.27.0.tar.xz";
     };
   };
   ksshaskpass = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/ksshaskpass-5.26.5.tar.xz";
-      sha256 = "0k0jxbkav115i5nhazxyz3s3wg6gyfcsa1jilf3j3fr8vnh8qhx0";
-      name = "ksshaskpass-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/ksshaskpass-5.27.0.tar.xz";
+      sha256 = "1p55lf47vznvvprs2wn5c7ccq4iy6cxkqqdl9di02rzj9rf81zbs";
+      name = "ksshaskpass-5.27.0.tar.xz";
     };
   };
   ksystemstats = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/ksystemstats-5.26.5.tar.xz";
-      sha256 = "18sa2w6vgbqmw8wrg5vqbraql04x9kb7mj9k35z4zs2n4abfrrbi";
-      name = "ksystemstats-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/ksystemstats-5.27.0.tar.xz";
+      sha256 = "1vax9cq33gxv2qaz908bsckrvdpffl975ayliz72f6d2mhsx9r5i";
+      name = "ksystemstats-5.27.0.tar.xz";
     };
   };
   kwallet-pam = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/kwallet-pam-5.26.5.tar.xz";
-      sha256 = "1c5pzih8id0gld7qdf8ffxsbfgq9bsvpx37qyzr941b3vif7f9yx";
-      name = "kwallet-pam-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/kwallet-pam-5.27.0.tar.xz";
+      sha256 = "0kwlinn6xcxqrib4xc200c9dmbq0gk0hmh6ahzd0nvgng6g6bvw7";
+      name = "kwallet-pam-5.27.0.tar.xz";
     };
   };
   kwayland-integration = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/kwayland-integration-5.26.5.tar.xz";
-      sha256 = "0czq16lq210hq7a3wqg7pvdr9a8vm16z6yb82p0w6yqv15kk7alx";
-      name = "kwayland-integration-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/kwayland-integration-5.27.0.tar.xz";
+      sha256 = "0aml251n9amrjiyp6933iz245z3qr5lvpdyxsgnpzlvn652zyfqv";
+      name = "kwayland-integration-5.27.0.tar.xz";
     };
   };
   kwin = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/kwin-5.26.5.tar.xz";
-      sha256 = "1n0v0553s9l8s6wgdz5bhrnvww20q49h92v3m4w216razj7q3q0k";
-      name = "kwin-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/kwin-5.27.0.tar.xz";
+      sha256 = "1g1rma3ks6i10dvqksa61fi0w0g87gbb73jjzkz0jicbs5823w9c";
+      name = "kwin-5.27.0.tar.xz";
     };
   };
   kwrited = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/kwrited-5.26.5.tar.xz";
-      sha256 = "14savlbywkx5107s0viprafs9pl389zhjk32iy4x5jmf9dk6vmm9";
-      name = "kwrited-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/kwrited-5.27.0.tar.xz";
+      sha256 = "15fxhk9dd0z9pfc99hsb9zqwish8wkbld8kgj8a1nzl5a2dnjnd3";
+      name = "kwrited-5.27.0.tar.xz";
     };
   };
   layer-shell-qt = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/layer-shell-qt-5.26.5.tar.xz";
-      sha256 = "1k79dcyic2hkm92sd7aix03ywagr4rgsdf86a9zy06kafg92jra9";
-      name = "layer-shell-qt-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/layer-shell-qt-5.27.0.tar.xz";
+      sha256 = "1zs3p7fbw3yf24d2zy51pyjlxy9gxs8k78c481yck04sj8vlf3cw";
+      name = "layer-shell-qt-5.27.0.tar.xz";
     };
   };
   libkscreen = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/libkscreen-5.26.5.tar.xz";
-      sha256 = "0vajgzjvpn909ds88jddsg7bman0rdphrm70b0k5ar7bcw0x54d5";
-      name = "libkscreen-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/libkscreen-5.27.0.tar.xz";
+      sha256 = "16b2j8gfgf12nxwm8pij41yl6ffcjh7h31rw54j6mlx2q7i5lq2h";
+      name = "libkscreen-5.27.0.tar.xz";
     };
   };
   libksysguard = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/libksysguard-5.26.5.tar.xz";
-      sha256 = "01a1wm6z191lzjqd5iws90jd3ld3r6r1qaw95bl65l9ar8p3gr8p";
-      name = "libksysguard-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/libksysguard-5.27.0.tar.xz";
+      sha256 = "01lsf52kfzp6h964s1aifg4wlf52hba56wf66cq3vi05ghckfbb5";
+      name = "libksysguard-5.27.0.tar.xz";
     };
   };
   milou = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/milou-5.26.5.tar.xz";
-      sha256 = "1pmz4n41ysb0mhgykvc65r5as8fkd7wr4k57sk0a12wzsndy7zv8";
-      name = "milou-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/milou-5.27.0.tar.xz";
+      sha256 = "1zs5n37crpqzbycjb5x239fs65wv2ghkx5m87sq65713rs7lmpbx";
+      name = "milou-5.27.0.tar.xz";
     };
   };
   oxygen = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/oxygen-5.26.5.tar.xz";
-      sha256 = "0wllhniaqpzvzji51a9871j1697kjwbz4xj8q9x1w89ip88pb6gq";
-      name = "oxygen-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/oxygen-5.27.0.tar.xz";
+      sha256 = "0vld1m3ac5z2z4k6vp8v5kzib094baj5ndwqvf6ryhyp9v7in3r0";
+      name = "oxygen-5.27.0.tar.xz";
     };
   };
   oxygen-sounds = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/oxygen-sounds-5.26.5.tar.xz";
-      sha256 = "1ws6bssn2r2m666kd6i0xnmzxb8x3z2pa6qk36xpbs1xjxdv5wny";
-      name = "oxygen-sounds-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/oxygen-sounds-5.27.0.tar.xz";
+      sha256 = "08brv177p3hlqvkf7chy1s5i45vnbjsjxiqxmac8grfh9dgsjyk6";
+      name = "oxygen-sounds-5.27.0.tar.xz";
     };
   };
   plank-player = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/plank-player-5.26.5.tar.xz";
-      sha256 = "18yw74mqcd0igps10m1sd41rlir2y8y78xkljxj5w2y4yvh97vbs";
-      name = "plank-player-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/plank-player-5.27.0.tar.xz";
+      sha256 = "0ng97dcpfvm5klwnqzc47rv8lwxj0cmidx3igzjgkrl23k4rcxy2";
+      name = "plank-player-5.27.0.tar.xz";
     };
   };
   plasma-bigscreen = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/plasma-bigscreen-5.26.5.tar.xz";
-      sha256 = "0893ngwdgq1l76gib4p9212lwp4i2gxvpnmxygndbmkz7nhjax75";
-      name = "plasma-bigscreen-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/plasma-bigscreen-5.27.0.tar.xz";
+      sha256 = "0c2zldcsfqklwv3lsw9fb7q39vsaq5lzxad3wqrhsphz8c8v6yxg";
+      name = "plasma-bigscreen-5.27.0.tar.xz";
     };
   };
   plasma-browser-integration = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/plasma-browser-integration-5.26.5.tar.xz";
-      sha256 = "1bfzha5vd8hjij758b0g6ibyi4f8gmijz92fgn5is0p1hydm8y4l";
-      name = "plasma-browser-integration-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/plasma-browser-integration-5.27.0.tar.xz";
+      sha256 = "014fn47khppa7ay5sxcz43g81igbx6lpv19whc7p4ik3cp3rzk7i";
+      name = "plasma-browser-integration-5.27.0.tar.xz";
     };
   };
   plasma-desktop = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/plasma-desktop-5.26.5.tar.xz";
-      sha256 = "15kc5sam3y2c1ccp14cs7v5zakgzz9gpxpyxapimlvkwscxmvzn6";
-      name = "plasma-desktop-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/plasma-desktop-5.27.0.tar.xz";
+      sha256 = "0d52a4adjkyah6ab93153mp5af8338mipm9712i9xzylwf73100q";
+      name = "plasma-desktop-5.27.0.tar.xz";
     };
   };
   plasma-disks = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/plasma-disks-5.26.5.tar.xz";
-      sha256 = "137k44lly2qv6vrmfi4g2xqc7y907ywwshp7mn07qmbps3a85h30";
-      name = "plasma-disks-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/plasma-disks-5.27.0.tar.xz";
+      sha256 = "1m7hh901p7h0ibj7pgsqhz6jkn07mnw7m1xgs6d43i1n7vnw9hlb";
+      name = "plasma-disks-5.27.0.tar.xz";
     };
   };
   plasma-firewall = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/plasma-firewall-5.26.5.tar.xz";
-      sha256 = "18fp7iqnyjx2p44n8hjs7fss212ja3k2i5cryrnmwpf7r0q73l36";
-      name = "plasma-firewall-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/plasma-firewall-5.27.0.tar.xz";
+      sha256 = "02haqjiim2qk77074likhvmj07120p7cr9lsxjsmhfc4f69wwkh2";
+      name = "plasma-firewall-5.27.0.tar.xz";
     };
   };
   plasma-integration = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/plasma-integration-5.26.5.tar.xz";
-      sha256 = "0ap7rzhqmm7ai9sc6w281f2kf81qgs2h2qpf5bvbc6wm3vn1lm1g";
-      name = "plasma-integration-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/plasma-integration-5.27.0.tar.xz";
+      sha256 = "0ma6ig7gldl26pav4j1svcwxbpmgfq72q6nxzyysrgxzfyk93c1w";
+      name = "plasma-integration-5.27.0.tar.xz";
     };
   };
   plasma-mobile = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/plasma-mobile-5.26.5.tar.xz";
-      sha256 = "06gha8mga9xqmmvzc9why9pfzzpy8czrqym3k3n23pa9hy2qqsvj";
-      name = "plasma-mobile-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/plasma-mobile-5.27.0.tar.xz";
+      sha256 = "14a68d6lxm3pfq8znzk0k0f4kq9wpgmmj0zqa5jfr1gapqyrdkmv";
+      name = "plasma-mobile-5.27.0.tar.xz";
     };
   };
   plasma-nano = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/plasma-nano-5.26.5.tar.xz";
-      sha256 = "161sabckgl8gjxxsm0aklp33bf05iq2p84vh2v5y6bfpimsnamnj";
-      name = "plasma-nano-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/plasma-nano-5.27.0.tar.xz";
+      sha256 = "0sc8fdbbwwn3a1gip31dvwb5pfdl1zk08i795yp5gfjc04kckxs1";
+      name = "plasma-nano-5.27.0.tar.xz";
     };
   };
   plasma-nm = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/plasma-nm-5.26.5.tar.xz";
-      sha256 = "1msi9lhkhpb29h6fwkxqmp9js70r8vrvzzf38hzkgxcbf3757k64";
-      name = "plasma-nm-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/plasma-nm-5.27.0.tar.xz";
+      sha256 = "0p7vqw7nkwpy84lg5w5alkrkaisg56fwsrgvwb43mb54h5pfcd4f";
+      name = "plasma-nm-5.27.0.tar.xz";
     };
   };
   plasma-pa = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/plasma-pa-5.26.5.tar.xz";
-      sha256 = "19i9ipajiz68silvprap9pykki6rhb7d2ways501bx8g4vfcb0h5";
-      name = "plasma-pa-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/plasma-pa-5.27.0.tar.xz";
+      sha256 = "0z3njcfr8y9y9025sdz28qvi9fc6vsndfb7zi1wacrrncjxg1wkl";
+      name = "plasma-pa-5.27.0.tar.xz";
     };
   };
   plasma-remotecontrollers = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/plasma-remotecontrollers-5.26.5.tar.xz";
-      sha256 = "1cam1jchp3nwqkqskln4qbpb4rixzwa0bwma89ysdgqy0pzpq2x0";
-      name = "plasma-remotecontrollers-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/plasma-remotecontrollers-5.27.0.tar.xz";
+      sha256 = "0q8wjr5qi97k4j5lm5wy35r78hf9cwa9sbj170xm5ni2rmdlsb14";
+      name = "plasma-remotecontrollers-5.27.0.tar.xz";
     };
   };
   plasma-sdk = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/plasma-sdk-5.26.5.tar.xz";
-      sha256 = "0p20s2cp5vd1chj28wq88ixb625hisl134hnlllz6h70s5vzy79n";
-      name = "plasma-sdk-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/plasma-sdk-5.27.0.tar.xz";
+      sha256 = "0fqbpcw705yy0szbvvnf266bclv9l65v563kmcsryq31y7ji15iz";
+      name = "plasma-sdk-5.27.0.tar.xz";
     };
   };
   plasma-systemmonitor = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/plasma-systemmonitor-5.26.5.tar.xz";
-      sha256 = "0xghszlm8h70p192qizv2kj7f02fnf3p3hg1p10ni7sqfaczrbq1";
-      name = "plasma-systemmonitor-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/plasma-systemmonitor-5.27.0.tar.xz";
+      sha256 = "139jyqvwykxc7pfrcrrsyks0jdg3ljw8hg7plqw5n2cd4slx6psx";
+      name = "plasma-systemmonitor-5.27.0.tar.xz";
     };
   };
   plasma-tests = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/plasma-tests-5.26.5.tar.xz";
-      sha256 = "1h0cinrgjdp7rhl3v55c40a5agd93rqwx1xjqyj06vkjkbigx0fr";
-      name = "plasma-tests-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/plasma-tests-5.27.0.tar.xz";
+      sha256 = "1ncsjiwlx73kc6xzlz1da8xdppw8q1al9k8lm6zj1qvf4mnb62kr";
+      name = "plasma-tests-5.27.0.tar.xz";
     };
   };
   plasma-thunderbolt = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/plasma-thunderbolt-5.26.5.tar.xz";
-      sha256 = "1lzj3m2k34m3fvcq3ykr5igaq0sbc4v87cncxvz6ln0p7cq0i6y5";
-      name = "plasma-thunderbolt-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/plasma-thunderbolt-5.27.0.tar.xz";
+      sha256 = "053xi6vjlavavxqcz5d0b78pnjmswqg0y5kq4r7pqkazj0829ca3";
+      name = "plasma-thunderbolt-5.27.0.tar.xz";
     };
   };
   plasma-vault = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/plasma-vault-5.26.5.tar.xz";
-      sha256 = "104cs6prb8v5mccshz5brknfllyfbfnjzzpdrgk1xpzh5apwmhja";
-      name = "plasma-vault-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/plasma-vault-5.27.0.tar.xz";
+      sha256 = "0i5m9jyvpv5rfwms75pw65c4x315lwby0cg7pab3dz2xsy82g2p8";
+      name = "plasma-vault-5.27.0.tar.xz";
+    };
+  };
+  plasma-welcome = {
+    version = "5.27.0";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.27.0/plasma-welcome-5.27.0.tar.xz";
+      sha256 = "00pr7bvx1accs1faw149r28qkkjdxmmib2a6m7asyn591pykzbyh";
+      name = "plasma-welcome-5.27.0.tar.xz";
     };
   };
   plasma-workspace = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/plasma-workspace-5.26.5.tar.xz";
-      sha256 = "082jnlqgbp48bmyp1nbzg2d0p0pxkvra6xjv40kvh6k6rmpr5cjc";
-      name = "plasma-workspace-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/plasma-workspace-5.27.0.tar.xz";
+      sha256 = "0fq71fhqn0lx88a7n8rw9jrwkcm720s2c2l1ry9035kmvz94w901";
+      name = "plasma-workspace-5.27.0.tar.xz";
     };
   };
   plasma-workspace-wallpapers = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/plasma-workspace-wallpapers-5.26.5.tar.xz";
-      sha256 = "07gln5jl947qfpvrgiqa1fnw8lnnf4jg734ayybi927j059s3g8i";
-      name = "plasma-workspace-wallpapers-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/plasma-workspace-wallpapers-5.27.0.tar.xz";
+      sha256 = "1pyz1gnbg2n907yi4wlj9gq495145ww50z66q8ykgmix1yxwmjnz";
+      name = "plasma-workspace-wallpapers-5.27.0.tar.xz";
     };
   };
   plymouth-kcm = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/plymouth-kcm-5.26.5.tar.xz";
-      sha256 = "1isxs6gxbab2ddl22c3992gmdgy3mi5yjb9inv32ajzs6r7snrj1";
-      name = "plymouth-kcm-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/plymouth-kcm-5.27.0.tar.xz";
+      sha256 = "1cbwpqfxlm0vc2hjllqbsy929my1pmmbmb15ggj9m7gmxc59fbaf";
+      name = "plymouth-kcm-5.27.0.tar.xz";
     };
   };
   polkit-kde-agent = {
-    version = "1-5.26.5";
+    version = "1-5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/polkit-kde-agent-1-5.26.5.tar.xz";
-      sha256 = "19jrjx40m8g6hwq5k7ibbm0fmb803hxync2022gqbwzfrdb4493i";
-      name = "polkit-kde-agent-1-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/polkit-kde-agent-1-5.27.0.tar.xz";
+      sha256 = "0mihvr8w9rlqvsh2g19r3zrxp3shaiwlmjcx2w3lx4swiysnyps1";
+      name = "polkit-kde-agent-1-5.27.0.tar.xz";
     };
   };
   powerdevil = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/powerdevil-5.26.5.tar.xz";
-      sha256 = "063bqwdnpskcwqzpgcmjwgs9vpkn1gnq2nnzj2sdzrlflfrdsfvp";
-      name = "powerdevil-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/powerdevil-5.27.0.tar.xz";
+      sha256 = "0gdp2zsx761zkl4r4pj799x6q5jw0yzsljgx5p9cmrl4pvxb89rg";
+      name = "powerdevil-5.27.0.tar.xz";
     };
   };
   qqc2-breeze-style = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/qqc2-breeze-style-5.26.5.tar.xz";
-      sha256 = "1lhv4jlg15w8a88czq0fazaizjwva3yv8wv3scdnhhyfnbkch9mr";
-      name = "qqc2-breeze-style-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/qqc2-breeze-style-5.27.0.tar.xz";
+      sha256 = "14aw06dvpqjglm4y0230b3yy2fg3z427ff87f9xn8f96603c8447";
+      name = "qqc2-breeze-style-5.27.0.tar.xz";
     };
   };
   sddm-kcm = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/sddm-kcm-5.26.5.tar.xz";
-      sha256 = "0cglb7dvwrkdpl5bgg91yfxrvqfpc2szj3qipcmd6ladsvbz8cxv";
-      name = "sddm-kcm-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/sddm-kcm-5.27.0.tar.xz";
+      sha256 = "1kdb5jyv4lrx02bjyzyaakq4ip4z095sfcipgipgc0w2ayicf1np";
+      name = "sddm-kcm-5.27.0.tar.xz";
     };
   };
   systemsettings = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/systemsettings-5.26.5.tar.xz";
-      sha256 = "1jb1d6933gq07vgg3kzqna91cpcv87p38wrk70g17iz7pszjb3ns";
-      name = "systemsettings-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/systemsettings-5.27.0.tar.xz";
+      sha256 = "0smsv1kr9c5d7ypi74hvp3hrckk41p62ddhvjvlxw44qvykby597";
+      name = "systemsettings-5.27.0.tar.xz";
     };
   };
   xdg-desktop-portal-kde = {
-    version = "5.26.5";
+    version = "5.27.0";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.26.5/xdg-desktop-portal-kde-5.26.5.tar.xz";
-      sha256 = "1hznyl90d3xswnjs4qc6r5azw1z3pzkr7z507v696xhv41j8bzsj";
-      name = "xdg-desktop-portal-kde-5.26.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.27.0/xdg-desktop-portal-kde-5.27.0.tar.xz";
+      sha256 = "069fsw47v7p63m05rf2pxllxw7f4agclndvxccyrjyvsv12hrmbh";
+      name = "xdg-desktop-portal-kde-5.27.0.tar.xz";
     };
   };
 }

From 984315e6e1a55015b79c412a52941e4219f2ff1f Mon Sep 17 00:00:00 2001
From: K900 <me@0upti.me>
Date: Fri, 20 Jan 2023 15:40:22 +0300
Subject: [PATCH 18/46] flatpak-kcm: init at 5.27.0

---
 pkgs/desktops/plasma-5/default.nix     |  1 +
 pkgs/desktops/plasma-5/flatpak-kcm.nix | 18 ++++++++++++++++++
 2 files changed, 19 insertions(+)
 create mode 100644 pkgs/desktops/plasma-5/flatpak-kcm.nix

diff --git a/pkgs/desktops/plasma-5/default.nix b/pkgs/desktops/plasma-5/default.nix
index dcc5c7f7cf3d..884f55e88998 100644
--- a/pkgs/desktops/plasma-5/default.nix
+++ b/pkgs/desktops/plasma-5/default.nix
@@ -123,6 +123,7 @@ let
       breeze-grub = callPackage ./breeze-grub.nix { };
       breeze-plymouth = callPackage ./breeze-plymouth { };
       discover = callPackage ./discover.nix { };
+      flatpak-kcm = callPackage ./flatpak-kcm.nix { };
       kactivitymanagerd = callPackage ./kactivitymanagerd.nix { };
       kde-cli-tools = callPackage ./kde-cli-tools.nix { };
       kde-gtk-config = callPackage ./kde-gtk-config { inherit gsettings-desktop-schemas; };
diff --git a/pkgs/desktops/plasma-5/flatpak-kcm.nix b/pkgs/desktops/plasma-5/flatpak-kcm.nix
new file mode 100644
index 000000000000..406a0c9c920c
--- /dev/null
+++ b/pkgs/desktops/plasma-5/flatpak-kcm.nix
@@ -0,0 +1,18 @@
+{ mkDerivation
+, extra-cmake-modules
+, flatpak
+, kcmutils
+, kconfig
+, kdeclarative
+}:
+
+mkDerivation {
+  pname = "flatpak-kcm";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    flatpak
+    kcmutils
+    kconfig
+    kdeclarative
+  ];
+}

From 131c8fa5327227bfeb77977fc05bf6d84dbbfe7d Mon Sep 17 00:00:00 2001
From: K900 <me@0upti.me>
Date: Fri, 20 Jan 2023 15:41:00 +0300
Subject: [PATCH 19/46] kuserfeedback: init at 1.2.0

Required for plasma-welcome, and maybe should be added to other things later.
---
 .../libraries/kuserfeedback/default.nix       | 23 +++++++++++++++++++
 pkgs/top-level/qt5-packages.nix               |  2 ++
 2 files changed, 25 insertions(+)
 create mode 100644 pkgs/development/libraries/kuserfeedback/default.nix

diff --git a/pkgs/development/libraries/kuserfeedback/default.nix b/pkgs/development/libraries/kuserfeedback/default.nix
new file mode 100644
index 000000000000..bea9f86fc90d
--- /dev/null
+++ b/pkgs/development/libraries/kuserfeedback/default.nix
@@ -0,0 +1,23 @@
+{ lib
+, mkDerivation
+, fetchurl
+, extra-cmake-modules
+, qttools
+}:
+mkDerivation rec {
+  pname = "kuserfeedback";
+  version = "1.2.0";
+
+  src = fetchurl {
+    url = "mirror://kde/stable/${pname}/${pname}-${version}.tar.xz";
+    hash = "sha256-dqrJIrFTJJsnRoCm9McsI47xTj3wS60Ay2QVixBj8mQ=";
+  };
+
+  nativeBuildInputs = [ extra-cmake-modules qttools ];
+
+  meta = with lib; {
+    license = [ licenses.mit ];
+    maintainers = [ maintainers.k900 ];
+    description = "Framework for collecting user feedback for apps via telemetry and surveys";
+  };
+}
diff --git a/pkgs/top-level/qt5-packages.nix b/pkgs/top-level/qt5-packages.nix
index f8139b7dab52..6366b2f2be32 100644
--- a/pkgs/top-level/qt5-packages.nix
+++ b/pkgs/top-level/qt5-packages.nix
@@ -116,6 +116,8 @@ in (kdeFrameworks // plasmaMobileGear // plasma5 // plasma5.thirdParty // kdeGea
 
   kquickimageedit = callPackage ../development/libraries/kquickimageedit { };
 
+  kuserfeedback = callPackage ../development/libraries/kuserfeedback { };
+
   kweathercore = libsForQt5.callPackage ../development/libraries/kweathercore { };
 
   ldutils = callPackage ../development/libraries/ldutils { };

From f0b101fd06a0b186226fb6a163c0ff0b7b48a18e Mon Sep 17 00:00:00 2001
From: K900 <me@0upti.me>
Date: Fri, 20 Jan 2023 15:41:28 +0300
Subject: [PATCH 20/46] plasma-welcome: init at 5.27.0

---
 pkgs/desktops/plasma-5/default.nix        |  1 +
 pkgs/desktops/plasma-5/plasma-welcome.nix | 44 +++++++++++++++++++++++
 2 files changed, 45 insertions(+)
 create mode 100644 pkgs/desktops/plasma-5/plasma-welcome.nix

diff --git a/pkgs/desktops/plasma-5/default.nix b/pkgs/desktops/plasma-5/default.nix
index 884f55e88998..a0be6b9ee8c1 100644
--- a/pkgs/desktops/plasma-5/default.nix
+++ b/pkgs/desktops/plasma-5/default.nix
@@ -163,6 +163,7 @@ let
       plasma-systemmonitor = callPackage ./plasma-systemmonitor.nix { };
       plasma-thunderbolt = callPackage ./plasma-thunderbolt.nix { };
       plasma-vault = callPackage ./plasma-vault { };
+      plasma-welcome = callPackage ./plasma-welcome.nix { };
       plasma-workspace = callPackage ./plasma-workspace { };
       plasma-workspace-wallpapers = callPackage ./plasma-workspace-wallpapers.nix { };
       polkit-kde-agent = callPackage ./polkit-kde-agent.nix { };
diff --git a/pkgs/desktops/plasma-5/plasma-welcome.nix b/pkgs/desktops/plasma-5/plasma-welcome.nix
new file mode 100644
index 000000000000..1ae778b3282a
--- /dev/null
+++ b/pkgs/desktops/plasma-5/plasma-welcome.nix
@@ -0,0 +1,44 @@
+{ mkDerivation
+, extra-cmake-modules
+, qtquickcontrols2
+, accounts-qt
+, kaccounts-integration
+, kcoreaddons
+, kconfigwidgets
+, kdbusaddons
+, kdeclarative
+, ki18n
+, kio
+, kirigami2
+, knewstuff
+, knotifications
+, kservice
+, kuserfeedback
+, kwindowsystem
+, plasma-framework
+, signond
+}:
+
+mkDerivation {
+  pname = "plasma-welcome";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    qtquickcontrols2
+    accounts-qt
+    kaccounts-integration
+    kcoreaddons
+    kconfigwidgets
+    kdbusaddons
+    kdeclarative
+    ki18n
+    kio
+    kirigami2
+    knewstuff
+    knotifications
+    kservice
+    kuserfeedback
+    kwindowsystem
+    plasma-framework
+    signond
+  ];
+}

From 8474716356e4f542faea463647b686fecb045d07 Mon Sep 17 00:00:00 2001
From: K900 <me@0upti.me>
Date: Fri, 20 Jan 2023 15:42:37 +0300
Subject: [PATCH 21/46] nixos/plasma5: install flatpak-kcm if needed

---
 nixos/modules/services/x11/desktop-managers/plasma5.nix | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/nixos/modules/services/x11/desktop-managers/plasma5.nix b/nixos/modules/services/x11/desktop-managers/plasma5.nix
index c150adcac26b..ab666ba39490 100644
--- a/nixos/modules/services/x11/desktop-managers/plasma5.nix
+++ b/nixos/modules/services/x11/desktop-managers/plasma5.nix
@@ -316,7 +316,8 @@ in
         ++ lib.optional config.services.colord.enable pkgs.colord-kde
         ++ lib.optional config.services.hardware.bolt.enable pkgs.plasma5Packages.plasma-thunderbolt
         ++ lib.optionals config.services.samba.enable [ kdenetwork-filesharing pkgs.samba ]
-        ++ lib.optional config.services.xserver.wacom.enable pkgs.wacomtablet;
+        ++ lib.optional config.services.xserver.wacom.enable pkgs.wacomtablet
+        ++ lib.optional config.services.flatpak.enable flatpak-kcm;
 
       # Extra services for D-Bus activation
       services.dbus.packages = [

From b7409ad3bff4f89f12676a30f54fcedd5e2934f4 Mon Sep 17 00:00:00 2001
From: K900 <me@0upti.me>
Date: Fri, 20 Jan 2023 15:58:35 +0300
Subject: [PATCH 22/46] libkscreen: refresh patch

---
 .../libkscreen/libkscreen-backends-path.patch | 20 +++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/pkgs/desktops/plasma-5/libkscreen/libkscreen-backends-path.patch b/pkgs/desktops/plasma-5/libkscreen/libkscreen-backends-path.patch
index 3d19f2d89fa1..948c045db4b1 100644
--- a/pkgs/desktops/plasma-5/libkscreen/libkscreen-backends-path.patch
+++ b/pkgs/desktops/plasma-5/libkscreen/libkscreen-backends-path.patch
@@ -1,16 +1,20 @@
-Index: libkscreen-5.9.4/src/backendmanager.cpp
-===================================================================
---- libkscreen-5.9.4.orig/src/backendmanager.cpp
-+++ libkscreen-5.9.4/src/backendmanager.cpp
-@@ -172,14 +172,11 @@ QFileInfo BackendManager::preferredBackend(const QString &backend)
+diff --git a/src/backendmanager.cpp b/src/backendmanager.cpp
+index e1013d5..4bded53 100644
+--- a/src/backendmanager.cpp
++++ b/src/backendmanager.cpp
+@@ -164,18 +164,11 @@ QFileInfo BackendManager::preferredBackend(const QString &backend)
+ 
  QFileInfoList BackendManager::listBackends()
  {
-     // Compile a list of installed backends first
+-    // Compile a list of installed backends first
 -    const QString backendFilter = QStringLiteral("KSC_*");
 -    const QStringList paths = QCoreApplication::libraryPaths();
 -    QFileInfoList finfos;
 -    for (const QString &path : paths) {
--        const QDir dir(path + QLatin1String("/kf5/kscreen/"), backendFilter, QDir::SortFlags(QDir::QDir::Name), QDir::NoDotAndDotDot | QDir::Files);
+-        const QDir dir(path + QStringLiteral("/kf" QT_STRINGIFY(QT_VERSION_MAJOR) "/kscreen/"),
+-                       backendFilter,
+-                       QDir::SortFlags(QDir::QDir::Name),
+-                       QDir::NoDotAndDotDot | QDir::Files);
 -        finfos.append(dir.entryInfoList());
 -    }
 -    return finfos;
@@ -21,4 +25,4 @@ Index: libkscreen-5.9.4/src/backendmanager.cpp
 +    return dir.entryInfoList();
  }
  
- KScreen::AbstractBackend *BackendManager::loadBackendPlugin(QPluginLoader *loader, const QString &name, const QVariantMap &arguments)
+ void BackendManager::setBackendArgs(const QVariantMap &arguments)

From 2469eab45efef92d0b2a084064cf5cbc444cc08b Mon Sep 17 00:00:00 2001
From: K900 <me@0upti.me>
Date: Fri, 20 Jan 2023 17:37:26 +0300
Subject: [PATCH 23/46] kscreenlocker: and libkscreen dependency

---
 pkgs/desktops/plasma-5/kscreenlocker.nix | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/pkgs/desktops/plasma-5/kscreenlocker.nix b/pkgs/desktops/plasma-5/kscreenlocker.nix
index d53d808e1084..f09104d534f9 100644
--- a/pkgs/desktops/plasma-5/kscreenlocker.nix
+++ b/pkgs/desktops/plasma-5/kscreenlocker.nix
@@ -7,6 +7,7 @@
 , kdeclarative
 , kglobalaccel
 , kidletime
+, libkscreen
 , kwayland
 , libXcursor
 , pam
@@ -27,6 +28,7 @@ mkDerivation {
     kdeclarative
     kglobalaccel
     kidletime
+    libkscreen
     kwayland
     libXcursor
     pam

From 4d28accf12230fea2b8fe220ce4a49de08bf3c25 Mon Sep 17 00:00:00 2001
From: K900 <me@0upti.me>
Date: Fri, 20 Jan 2023 17:44:17 +0300
Subject: [PATCH 24/46] kwin: fixup patch

---
 .../kwin/0003-plugins-qpa-allow-using-nixos-wrapper.patch       | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pkgs/desktops/plasma-5/kwin/0003-plugins-qpa-allow-using-nixos-wrapper.patch b/pkgs/desktops/plasma-5/kwin/0003-plugins-qpa-allow-using-nixos-wrapper.patch
index 50c7cef3f8cd..d0be721b044c 100644
--- a/pkgs/desktops/plasma-5/kwin/0003-plugins-qpa-allow-using-nixos-wrapper.patch
+++ b/pkgs/desktops/plasma-5/kwin/0003-plugins-qpa-allow-using-nixos-wrapper.patch
@@ -13,9 +13,9 @@ index efd236b..a69c046 100644
 --- a/src/plugins/qpa/main.cpp
 +++ b/src/plugins/qpa/main.cpp
 @@ -23,7 +23,7 @@ public:
+
  QPlatformIntegration *KWinIntegrationPlugin::create(const QString &system, const QStringList &paramList)
  {
-     Q_UNUSED(paramList)
 -    if (!QCoreApplication::applicationFilePath().endsWith(QLatin1String("kwin_wayland")) && !qEnvironmentVariableIsSet("KWIN_FORCE_OWN_QPA")) {
 +    if (!QCoreApplication::applicationFilePath().endsWith(QLatin1String("kwin_wayland")) && !QCoreApplication::applicationFilePath().endsWith(QLatin1String(".kwin_wayland-wrapped")) && !qEnvironmentVariableIsSet("KWIN_FORCE_OWN_QPA")) {
          // Not KWin

From 803c28d81e9d9b4a682b2f02e95d462e0d5f3984 Mon Sep 17 00:00:00 2001
From: K900 <me@0upti.me>
Date: Fri, 20 Jan 2023 19:35:38 +0300
Subject: [PATCH 25/46] plasma-remotecontrollers: add new dependency

---
 pkgs/desktops/plasma-5/plasma-remotecontrollers.nix | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/pkgs/desktops/plasma-5/plasma-remotecontrollers.nix b/pkgs/desktops/plasma-5/plasma-remotecontrollers.nix
index 3f169244fdaf..be1c6ff42eff 100644
--- a/pkgs/desktops/plasma-5/plasma-remotecontrollers.nix
+++ b/pkgs/desktops/plasma-5/plasma-remotecontrollers.nix
@@ -8,6 +8,7 @@
 , kdeclarative
 , kcmutils
 , kpackage
+, kscreenlocker
 , kwindowsystem
 , wayland
 , pkg-config
@@ -29,6 +30,7 @@ mkDerivation {
     kdeclarative
     kcmutils
     kpackage
+    kscreenlocker
     kwindowsystem
     wayland
     libcec

From 0091bd63464bf61a75ec98808cb3b9d7fa7fb02b Mon Sep 17 00:00:00 2001
From: K900 <me@0upti.me>
Date: Fri, 10 Feb 2023 11:36:06 +0300
Subject: [PATCH 26/46] kinfocenter: symlink correct executable

In 5.27 systemsettings is the main executable, and systemsettings5 is the symlink.
---
 pkgs/desktops/plasma-5/kinfocenter/default.nix | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pkgs/desktops/plasma-5/kinfocenter/default.nix b/pkgs/desktops/plasma-5/kinfocenter/default.nix
index 222e78558264..2f27dd201ce5 100644
--- a/pkgs/desktops/plasma-5/kinfocenter/default.nix
+++ b/pkgs/desktops/plasma-5/kinfocenter/default.nix
@@ -99,6 +99,6 @@ mkDerivation {
   # the same directory, while it is actually located in a completely different
   # store path
   preFixup = ''
-    ln -sf ${lib.getExe systemsettings} $out/bin/kinfocenter
+    ln -sf ${systemsettings}/bin/systemsettings $out/bin/kinfocenter
   '';
 }

From d5210b672557dce7fb4b05018ef6f00dd69f536d Mon Sep 17 00:00:00 2001
From: K900 <me@0upti.me>
Date: Tue, 14 Feb 2023 02:00:57 +0300
Subject: [PATCH 27/46] kwin: stop reverting c++20 things

---
 ...1-Revert-x11-Refactor-output-updates.patch | 153 ------------------
 pkgs/desktops/plasma-5/kwin/default.nix       |   3 +-
 2 files changed, 1 insertion(+), 155 deletions(-)
 delete mode 100644 pkgs/desktops/plasma-5/kwin/0001-Revert-x11-Refactor-output-updates.patch

diff --git a/pkgs/desktops/plasma-5/kwin/0001-Revert-x11-Refactor-output-updates.patch b/pkgs/desktops/plasma-5/kwin/0001-Revert-x11-Refactor-output-updates.patch
deleted file mode 100644
index ddaa7f76b13b..000000000000
--- a/pkgs/desktops/plasma-5/kwin/0001-Revert-x11-Refactor-output-updates.patch
+++ /dev/null
@@ -1,153 +0,0 @@
-From 84f020835e3624342a928aae68e62e636bf2cc8c Mon Sep 17 00:00:00 2001
-From: Yuriy Taraday <yorik.sar@gmail.com>
-Date: Wed, 12 Oct 2022 12:07:23 +0400
-Subject: [PATCH] Revert "[x11] Refactor output updates"
-
-This reverts commit 9a34ebbffc791cbeadc9abafda793ebee654b270.
-
-This should fix compilation with older GCC.
----
- CMakeLists.txt                                |  2 +-
- .../standalone/x11_standalone_platform.cpp    | 63 +++++++++++--------
- 2 files changed, 38 insertions(+), 27 deletions(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 3e7bf700e..6ff24aa5c 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -70,7 +70,7 @@ add_definitions(-DMESA_EGL_NO_X11_HEADERS)
- add_definitions(-DEGL_NO_X11)
- add_definitions(-DEGL_NO_PLATFORM_SPECIFIC_TYPES)
- 
--set(CMAKE_CXX_STANDARD 20)
-+set(CMAKE_CXX_STANDARD 17)
- set(CMAKE_CXX_STANDARD_REQUIRED ON)
- 
- # required frameworks by Core
-diff --git a/src/backends/x11/standalone/x11_standalone_platform.cpp b/src/backends/x11/standalone/x11_standalone_platform.cpp
-index 498d5cbe3..ac0f732b2 100644
---- a/src/backends/x11/standalone/x11_standalone_platform.cpp
-+++ b/src/backends/x11/standalone/x11_standalone_platform.cpp
-@@ -54,8 +54,6 @@
- #include <QX11Info>
- #endif
- 
--#include <span>
--
- namespace KWin
- {
- 
-@@ -407,7 +405,8 @@ void X11StandalonePlatform::invertScreen()
-         ScreenResources res((active_client && active_client->window() != XCB_WINDOW_NONE) ? active_client->window() : rootWindow());
- 
-         if (!res.isNull()) {
--            for (auto crtc : std::span(res.crtcs(), res->num_crtcs)) {
-+            for (int j = 0; j < res->num_crtcs; ++j) {
-+                auto crtc = res.crtcs()[j];
-                 CrtcGamma gamma(crtc);
-                 if (gamma.isNull()) {
-                     continue;
-@@ -480,39 +479,54 @@ void X11StandalonePlatform::doUpdateOutputs()
-     if (Xcb::Extensions::self()->isRandrAvailable()) {
-         T resources(rootWindow());
-         if (!resources.isNull()) {
-+            xcb_randr_crtc_t *crtcs = resources.crtcs();
-+            const xcb_randr_mode_info_t *modes = resources.modes();
-+
-+            QVector<Xcb::RandR::CrtcInfo> infos(resources->num_crtcs);
-+            for (int i = 0; i < resources->num_crtcs; ++i) {
-+                infos[i] = Xcb::RandR::CrtcInfo(crtcs[i], resources->config_timestamp);
-+            }
- 
--            std::span crtcs(resources.crtcs(), resources->num_crtcs);
--            for (auto crtc : crtcs) {
--                Xcb::RandR::CrtcInfo info(crtc, resources->config_timestamp);
-+            for (int i = 0; i < resources->num_crtcs; ++i) {
-+                Xcb::RandR::CrtcInfo info(infos.at(i));
- 
-                 const QRect geometry = info.rect();
-                 if (!geometry.isValid()) {
-                     continue;
-                 }
- 
--                float refreshRate = -1.0f;
-+                xcb_randr_output_t *outputs = info.outputs();
-+                QVector<Xcb::RandR::OutputInfo> outputInfos(outputs ? resources->num_outputs : 0);
-+                QVector<Xcb::RandR::OutputProperty> edids(outputs ? resources->num_outputs : 0);
-+                if (outputs) {
-+                    for (int i = 0; i < resources->num_outputs; ++i) {
-+                        outputInfos[i] = Xcb::RandR::OutputInfo(outputs[i], resources->config_timestamp);
-+                        edids[i] = Xcb::RandR::OutputProperty(outputs[i], atoms->edid, XCB_ATOM_INTEGER, 0, 100, false, false);
-+                    }
-+                }
- 
--                for (auto mode : std::span(resources.modes(), resources->num_modes)) {
--                    if (info->mode == mode.id) {
--                        if (mode.htotal != 0 && mode.vtotal != 0) { // BUG 313996
-+                float refreshRate = -1.0f;
-+                for (int j = 0; j < resources->num_modes; ++j) {
-+                    if (info->mode == modes[j].id) {
-+                        if (modes[j].htotal != 0 && modes[j].vtotal != 0) { // BUG 313996
-                             // refresh rate calculation - WTF was wikipedia 1998 when I needed it?
--                            int dotclock = mode.dot_clock,
--                                vtotal = mode.vtotal;
--                            if (mode.mode_flags & XCB_RANDR_MODE_FLAG_INTERLACE) {
-+                            int dotclock = modes[j].dot_clock,
-+                                vtotal = modes[j].vtotal;
-+                            if (modes[j].mode_flags & XCB_RANDR_MODE_FLAG_INTERLACE) {
-                                 dotclock *= 2;
-                             }
--                            if (mode.mode_flags & XCB_RANDR_MODE_FLAG_DOUBLE_SCAN) {
-+                            if (modes[j].mode_flags & XCB_RANDR_MODE_FLAG_DOUBLE_SCAN) {
-                                 vtotal *= 2;
-                             }
--                            refreshRate = dotclock / float(mode.htotal * vtotal);
-+                            refreshRate = dotclock / float(modes[j].htotal * vtotal);
-                         }
-                         break; // found mode
-                     }
-                 }
- 
--                for (auto xcbOutput : std::span(info.outputs(), info->num_outputs)) {
--                    Xcb::RandR::OutputInfo outputInfo(xcbOutput, resources->config_timestamp);
--                    if (outputInfo->crtc != crtc) {
-+                for (int j = 0; j < info->num_outputs; ++j) {
-+                    Xcb::RandR::OutputInfo outputInfo(outputInfos.at(j));
-+                    if (outputInfo->crtc != crtcs[i]) {
-                         continue;
-                     }
- 
-@@ -528,14 +542,12 @@ void X11StandalonePlatform::doUpdateOutputs()
-                     // TODO: Perhaps the output has to save the inherited gamma ramp and
-                     // restore it during tear down. Currently neither standalone x11 nor
-                     // drm platform do this.
--                    Xcb::RandR::CrtcGamma gamma(crtc);
-+                    Xcb::RandR::CrtcGamma gamma(crtcs[i]);
- 
-                     output->setRenderLoop(m_renderLoop.get());
--                    output->setCrtc(crtc);
-+                    output->setCrtc(crtcs[i]);
-                     output->setGammaRampSize(gamma.isNull() ? 0 : gamma->size);
--                    auto it = std::find(crtcs.begin(), crtcs.end(), crtc);
--                    int crtcIndex = std::distance(crtcs.begin(), it);
--                    output->setXineramaNumber(crtcIndex);
-+                    output->setXineramaNumber(i);
- 
-                     QSize physicalSize(outputInfo->mm_width, outputInfo->mm_height);
-                     switch (info->rotation) {
-@@ -556,10 +568,9 @@ void X11StandalonePlatform::doUpdateOutputs()
-                         .physicalSize = physicalSize,
-                     };
- 
--                    auto edidProperty = Xcb::RandR::OutputProperty(xcbOutput, atoms->edid, XCB_ATOM_INTEGER, 0, 100, false, false);
-                     bool ok;
--                    if (auto data = edidProperty.toByteArray(&ok); ok && !data.isEmpty()) {
--                        if (auto edid = Edid(data, edidProperty.data()->num_items); edid.isValid()) {
-+                    if (auto data = edids[j].toByteArray(&ok); ok && !data.isEmpty()) {
-+                        if (auto edid = Edid(data, edids[j].data()->num_items); edid.isValid()) {
-                             information.manufacturer = edid.manufacturerString();
-                             information.model = edid.monitorName();
-                             information.serialNumber = edid.serialNumber();
--- 
-2.37.2
-
diff --git a/pkgs/desktops/plasma-5/kwin/default.nix b/pkgs/desktops/plasma-5/kwin/default.nix
index 8f69c965ea07..811456c14f4e 100644
--- a/pkgs/desktops/plasma-5/kwin/default.nix
+++ b/pkgs/desktops/plasma-5/kwin/default.nix
@@ -142,9 +142,8 @@ mkDerivation {
       url = "https://invent.kde.org/plasma/kwin/-/commit/9a008b223ad696db3bf5692750f2b74e578e08b8.diff";
       sha256 = "sha256-f35G+g2MVABLDbAkCed3ZmtDWrzYn1rdD08mEx35j4k=";
     })
-  ] ++ lib.optionals stdenv.isAarch64 [
-    ./0001-Revert-x11-Refactor-output-updates.patch
   ];
+
   CXXFLAGS = [
     ''-DNIXPKGS_XWAYLAND=\"${lib.getBin xwayland}/bin/Xwayland\"''
   ];

From 0a1a4be75e81601b7941301673958e55c77125b2 Mon Sep 17 00:00:00 2001
From: K900 <me@0upti.me>
Date: Tue, 14 Feb 2023 11:05:44 +0300
Subject: [PATCH 28/46] plasma5: allow overriding stdenv in wrapper

Will be needed for the next commits
---
 pkgs/desktops/plasma-5/default.nix | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/pkgs/desktops/plasma-5/default.nix b/pkgs/desktops/plasma-5/default.nix
index a0be6b9ee8c1..f8fc60a5409d 100644
--- a/pkgs/desktops/plasma-5/default.nix
+++ b/pkgs/desktops/plasma-5/default.nix
@@ -51,9 +51,9 @@ let
     mirror = "mirror://kde";
   };
 
-  mkDerivation = libsForQt5.callPackage ({ mkDerivation }: mkDerivation) { };
+  qtStdenv = libsForQt5.callPackage ({ stdenv }: stdenv) {};
 
-  packages = self: with self;
+  packages = self:
     let
 
       propagate = out:
@@ -98,6 +98,7 @@ let
 
             defaultSetupHook = if hasBin && hasDev then propagateBin else null;
             setupHook = args.setupHook or defaultSetupHook;
+            nativeBuildInputs = (args.nativeBuildInputs or []) ++ [ libsForQt5.wrapQtAppsHook ];
 
             meta =
               let meta = args.meta or { }; in
@@ -109,8 +110,8 @@ let
                 broken = meta.broken or broken;
               };
           in
-          mkDerivation (args // {
-            inherit pname version meta outputs setupHook src;
+          (args.stdenv or qtStdenv).mkDerivation (args // {
+            inherit pname version meta outputs setupHook src nativeBuildInputs;
           });
       };
 

From 06ca9b6bd82924d28bbe2489d3d72f56a6d5a427 Mon Sep 17 00:00:00 2001
From: K900 <me@0upti.me>
Date: Tue, 14 Feb 2023 11:05:44 +0300
Subject: [PATCH 29/46] kwin: force gcc12Stdenv on aarch64

---
 pkgs/desktops/plasma-5/kwin/default.nix | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/pkgs/desktops/plasma-5/kwin/default.nix b/pkgs/desktops/plasma-5/kwin/default.nix
index 811456c14f4e..6269dd4d0c2a 100644
--- a/pkgs/desktops/plasma-5/kwin/default.nix
+++ b/pkgs/desktops/plasma-5/kwin/default.nix
@@ -57,6 +57,7 @@
 , plasma-framework
 , libqaccessibilityclient
 , python3
+, gcc12Stdenv
 }:
 
 # TODO (ttuegel): investigate qmlplugindump failure
@@ -144,9 +145,13 @@ mkDerivation {
     })
   ];
 
+  stdenv = if stdenv.isAarch64 then gcc12Stdenv else stdenv;
+
   CXXFLAGS = [
     ''-DNIXPKGS_XWAYLAND=\"${lib.getBin xwayland}/bin/Xwayland\"''
-  ];
+  ]
+  ++ lib.optional stdenv.isAarch64 "-mno-outline-atomics";
+
   postInstall = ''
     # Some package(s) refer to these service types by the wrong name.
     # I would prefer to patch those packages, but I cannot find them!

From ebd78ed69f7a526cfc9ddea22acff5d0d7326795 Mon Sep 17 00:00:00 2001
From: K900 <me@0upti.me>
Date: Tue, 14 Feb 2023 14:06:59 +0300
Subject: [PATCH 30/46] lxqt-config: backport build fixes for Plasma 5.27

---
 pkgs/desktops/lxqt/lxqt-config/default.nix | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/pkgs/desktops/lxqt/lxqt-config/default.nix b/pkgs/desktops/lxqt/lxqt-config/default.nix
index 55239caf2bd1..727ae6358599 100644
--- a/pkgs/desktops/lxqt/lxqt-config/default.nix
+++ b/pkgs/desktops/lxqt/lxqt-config/default.nix
@@ -1,6 +1,7 @@
 { lib
 , mkDerivation
 , fetchFromGitHub
+, fetchpatch
 , cmake
 , pkg-config
 , glib
@@ -29,6 +30,17 @@ mkDerivation rec {
     sha256 = "WgrcHM4iJLZsJO2obqSkjHHMB+/kcadQArkcXC5FB24=";
   };
 
+  patches = [
+    # FIXME: backport Plasma 5.27 build fix, remove for next release
+    (fetchpatch {
+      url = "https://github.com/lxqt/lxqt-config/commit/6add4e4f0040693e7c4242fbae48c9d32007686c.diff";
+      hash = "sha256-Tir4KeGhBnD9dYmB1FAjuf4R4V+rn12MOxsRwTdE0Sc=";
+    })
+  ];
+
+  # FIXME: required to build with Plasma 5.27, which uses std::optional
+  cmakeFlags = ["-DCMAKE_CXX_STANDARD=17"];
+
   nativeBuildInputs = [
     cmake
     pkg-config

From c3f2eb7dba0ba89c4cd33ae4d8b2d92ea5baa109 Mon Sep 17 00:00:00 2001
From: K900 <me@0upti.me>
Date: Tue, 14 Feb 2023 14:07:07 +0300
Subject: [PATCH 31/46] applet-window-buttons: backport build fixes for Plasma
 5.27

---
 .../libraries/applet-window-buttons/default.nix          | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/pkgs/development/libraries/applet-window-buttons/default.nix b/pkgs/development/libraries/applet-window-buttons/default.nix
index 61187581e9aa..4f605b8af98b 100644
--- a/pkgs/development/libraries/applet-window-buttons/default.nix
+++ b/pkgs/development/libraries/applet-window-buttons/default.nix
@@ -1,6 +1,7 @@
 { lib
 , mkDerivation
 , fetchFromGitHub
+, fetchpatch
 , cmake
 , extra-cmake-modules
 , kcoreaddons
@@ -20,6 +21,14 @@ mkDerivation rec {
     hash = "sha256-Qww/22bEmjuq+R3o0UDcS6U+34qjaeSEy+g681/hcfE=";
   };
 
+  patches = [
+    # FIXME: cherry-pick Plasma 5.27 build fix, remove for next release
+    (fetchpatch {
+      url = "https://github.com/psifidotos/applet-window-buttons/commit/924994e10402921bf22fefc099bca2914989081c.diff";
+      hash = "sha256-4ErqmkIbkvKwns50LhI8Et1EMyvrXYcNRL1rXCxau2w=";
+    })
+  ];
+
   nativeBuildInputs = [
     cmake
     extra-cmake-modules

From da6293b9b534518be800eede49cad6765ad6be8f Mon Sep 17 00:00:00 2001
From: K900 <me@0upti.me>
Date: Tue, 14 Feb 2023 14:09:36 +0300
Subject: [PATCH 32/46] nixos/doc: add release note for Plasma 5.27

---
 nixos/doc/manual/release-notes/rl-2305.section.md | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/nixos/doc/manual/release-notes/rl-2305.section.md b/nixos/doc/manual/release-notes/rl-2305.section.md
index 22b1fe885cc3..8af1753bb781 100644
--- a/nixos/doc/manual/release-notes/rl-2305.section.md
+++ b/nixos/doc/manual/release-notes/rl-2305.section.md
@@ -10,6 +10,8 @@ In addition to numerous new and upgraded packages, this release has the followin
 
 - Cinnamon has been updated to 5.6, see [the pull request](https://github.com/NixOS/nixpkgs/pull/201328#issue-1449910204) for what is changed.
 
+- KDE Plasma has been updated to v5.27, see [the release notes](https://kde.org/announcements/plasma/5/5.27.0/) for what is changed.
+
 - `nixos-rebuild` now supports an extra `--specialisation` option that can be used to change specialisation for `switch` and `test` commands.
 
 ## New Services {#sec-release-23.05-new-services}

From a217df51cf3d4a6dba245eba903f1b5604ca30a1 Mon Sep 17 00:00:00 2001
From: K900 <me@0upti.me>
Date: Tue, 14 Feb 2023 14:20:56 +0300
Subject: [PATCH 33/46] maliit-framework: backport GCC 12 build fix

---
 pkgs/applications/misc/maliit-framework/default.nix | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/pkgs/applications/misc/maliit-framework/default.nix b/pkgs/applications/misc/maliit-framework/default.nix
index 7c27b3b97146..ce8ebef16a89 100644
--- a/pkgs/applications/misc/maliit-framework/default.nix
+++ b/pkgs/applications/misc/maliit-framework/default.nix
@@ -33,6 +33,14 @@ mkDerivation rec {
     sha256 = "sha256-q+hiupwlA0PfG+xtomCUp2zv6HQrGgmOd9CU193ucrY=";
   };
 
+  patches = [
+    # FIXME: backport GCC 12 build fix, remove for next release
+    (fetchpatch {
+      url = "https://github.com/maliit/framework/commit/86e55980e3025678882cb9c4c78614f86cdc1f04.diff";
+      hash = "sha256-5R+sCI05vJX5epu6hcDSWWzlZ8ns1wKEJ+u8xC6d8Xo=";
+    })
+  ];
+
   buildInputs = [
     at-spi2-atk
     at-spi2-core

From b4c6ce423b98d65d4e1d4618cae2d010c5024af6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?PedroHLC=20=E2=98=AD?= <root@pedrohlc.com>
Date: Tue, 14 Feb 2023 11:32:33 -0300
Subject: [PATCH 34/46] libdisplay-info: init at 0.1.0

Release: https://gitlab.freedesktop.org/emersion/libdisplay-info/-/releases/0.1.0
---
 .../libraries/libdisplay-info/default.nix     | 41 +++++++++++++++++++
 pkgs/top-level/all-packages.nix               |  2 +
 2 files changed, 43 insertions(+)
 create mode 100644 pkgs/development/libraries/libdisplay-info/default.nix

diff --git a/pkgs/development/libraries/libdisplay-info/default.nix b/pkgs/development/libraries/libdisplay-info/default.nix
new file mode 100644
index 000000000000..a83aa299b0bc
--- /dev/null
+++ b/pkgs/development/libraries/libdisplay-info/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, stdenv
+, fetchFromGitLab
+, meson
+, pkg-config
+, ninja
+, python3
+, hwdata
+, edid-decode
+}:
+
+stdenv.mkDerivation rec {
+  pname = "libdisplay-info";
+  version = "0.1.0";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.freedesktop.org";
+    owner = "emersion";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-jfi7RpEtyQicW0WWhrQg28Fta60YWxTbpbmPHmXxDhw=";
+  };
+
+  nativeBuildInputs = [ meson pkg-config ninja edid-decode python3 ];
+
+  buildInputs = [ hwdata ];
+
+  prePatch = ''
+    substituteInPlace meson.build \
+        --replace "find_program('tool/gen-search-table.py')" "find_program('python3')" \
+        --replace "gen_search_table," "gen_search_table, '$src/tool/gen-search-table.py',"
+  '';
+
+  meta = with lib; {
+    description = "EDID and DisplayID library";
+    homepage = "https://gitlab.freedesktop.org/emersion/libdisplay-info";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ pedrohlc ];
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index fe01267eba92..44ebf6475e6b 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -20913,6 +20913,8 @@ with pkgs;
 
   libdiscid = callPackage ../development/libraries/libdiscid { };
 
+  libdisplay-info = callPackage ../development/libraries/libdisplay-info { };
+
   libdivecomputer = callPackage ../development/libraries/libdivecomputer { };
 
   libdivsufsort = callPackage ../development/libraries/libdivsufsort { };

From 8e2c342d1b1c61639a095ac7a752adc7acffd1ed Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Sandro=20J=C3=A4ckel?= <sandro.jaeckel@sap.com>
Date: Tue, 14 Feb 2023 18:55:32 +0100
Subject: [PATCH 35/46] goreleaser: 1.15.1 -> 1.15.2

Diff: https://github.com/goreleaser/goreleaser/compare/v1.15.1...v1.15.2
---
 pkgs/tools/misc/goreleaser/default.nix | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/pkgs/tools/misc/goreleaser/default.nix b/pkgs/tools/misc/goreleaser/default.nix
index eeca15dddd41..dd550df598c4 100644
--- a/pkgs/tools/misc/goreleaser/default.nix
+++ b/pkgs/tools/misc/goreleaser/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "goreleaser";
-  version = "1.15.1";
+  version = "1.15.2";
 
   src = fetchFromGitHub {
     owner = "goreleaser";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-cLbAxF1g+N6XcpZS5+jDTykkbXoK7seKEmhCkp6noo8=";
+    sha256 = "sha256-yoio22D8k4rO8lRLoGSJGl8raMVO9fOGHFobAZngcxw=";
   };
 
-  vendorSha256 = "sha256-VpmSTNO3XgZpOu2OToq5HUJTagX9Hg7a65Cqgr8IlkU=";
+  vendorSha256 = "sha256-RSAT9VtsdXvWDhIZlOjwCF9nhONPXCSEaxVlgW14IKA=";
 
   ldflags = [
     "-s"

From f6670807d84299244c2952910b72603b911d9eaa Mon Sep 17 00:00:00 2001
From: Martin Weinelt <hexa@darmstadt.ccc.de>
Date: Tue, 14 Feb 2023 19:07:46 +0100
Subject: [PATCH 36/46] firefox-unwrapped: 109.0.1 -> 110.0

https://www.mozilla.org/en-US/firefox/110.0/releasenotes/
https://www.mozilla.org/en-US/security/advisories/mfsa2023-05/

Fixes: CVE-2023-25728, CVE-2023-25730, CVE-2023-25743, CVE-2023-0767,
       CVE-2023-25735, CVE-2023-25737, CVE-2023-25739, CVE-2023-25729,
       CVE-2023-25732, CVE-2023-25740, CVE-2023-25731, CVE-2023-25733,
       CVE-2023-25736, CVE-2023,25741, CVE-2023-25742, CVE-2023-25744,
       CVE-2023-25745
---
 pkgs/applications/networking/browsers/firefox/packages.nix | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/pkgs/applications/networking/browsers/firefox/packages.nix b/pkgs/applications/networking/browsers/firefox/packages.nix
index 6340a0a14e0b..9b2ec1807e65 100644
--- a/pkgs/applications/networking/browsers/firefox/packages.nix
+++ b/pkgs/applications/networking/browsers/firefox/packages.nix
@@ -3,10 +3,10 @@
 rec {
   firefox = buildMozillaMach rec {
     pname = "firefox";
-    version = "109.0.1";
+    version = "110.0";
     src = fetchurl {
       url = "mirror://mozilla/firefox/releases/${version}/source/firefox-${version}.source.tar.xz";
-      sha512 = "58b21449a16a794152888f50e7fe9488c28739a7e067729acdc1de9f2e8384e6316cffdfe89f690f0d211189668d940825b4f8a26b8100468ae120772df99d72";
+      sha512 = "52a37a8f59a694c4790c0a14cd81fba9e2c982f64e00191afd0897c39ae1d5e25f24cff16f74d0a0b5cdf8e93a9a0974b6042b0de605cf1a533ef4e6a3c0dcf9";
     };
 
     meta = {

From 496b1fb4978550f8ef18840cd545d627e3e948d4 Mon Sep 17 00:00:00 2001
From: Martin Weinelt <hexa@darmstadt.ccc.de>
Date: Tue, 14 Feb 2023 19:10:44 +0100
Subject: [PATCH 37/46] firefox-bin-unwrapped: 109.0.1 -> 110.0

https://www.mozilla.org/en-US/firefox/110.0/releasenotes/
https://www.mozilla.org/en-US/security/advisories/mfsa2023-05/

Fixes: CVE-2023-25728, CVE-2023-25730, CVE-2023-25743, CVE-2023-0767,
       CVE-2023-25735, CVE-2023-25737, CVE-2023-25739, CVE-2023-25729,
       CVE-2023-25732, CVE-2023-25740, CVE-2023-25731, CVE-2023-25733,
       CVE-2023-25736, CVE-2023,25741, CVE-2023-25742, CVE-2023-25744,
       CVE-2023-25745
---
 .../browsers/firefox-bin/release_sources.nix  | 786 +++++++++---------
 1 file changed, 393 insertions(+), 393 deletions(-)

diff --git a/pkgs/applications/networking/browsers/firefox-bin/release_sources.nix b/pkgs/applications/networking/browsers/firefox-bin/release_sources.nix
index d0ea4a8b490c..74c92744434e 100644
--- a/pkgs/applications/networking/browsers/firefox-bin/release_sources.nix
+++ b/pkgs/applications/networking/browsers/firefox-bin/release_sources.nix
@@ -1,985 +1,985 @@
 {
-  version = "109.0.1";
+  version = "110.0";
   sources = [
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/ach/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/ach/firefox-110.0.tar.bz2";
       locale = "ach";
       arch = "linux-x86_64";
-      sha256 = "08fb9040a6681d54863c2ac8c8ad48abbcfd5b410c8e404dbc20f425a69ae8d6";
+      sha256 = "c72ce8417550e30d74ce76385e5261f55f3c1ae62c334e728d16ca75e8a8412f";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/af/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/af/firefox-110.0.tar.bz2";
       locale = "af";
       arch = "linux-x86_64";
-      sha256 = "20635ad665612d861c0db1f65a9b1136709e88ed689d2e2679b0560d66462df2";
+      sha256 = "3bffb9826cbc942c7ca42c09941dd38f5b52200a7f55203a333275e017debd44";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/an/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/an/firefox-110.0.tar.bz2";
       locale = "an";
       arch = "linux-x86_64";
-      sha256 = "8c9cfd7259112727f149ae26af915e6fae9e35f0946ad052c348bc491d712651";
+      sha256 = "7f25dcb3f0a4adbfabfd445ce08845925ff349c01f4afe3f79a259c6d9eae9cb";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/ar/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/ar/firefox-110.0.tar.bz2";
       locale = "ar";
       arch = "linux-x86_64";
-      sha256 = "0541aaa6c8c01ad265309d5cb2a8ff886456b9fdfe2d91c86ca7fca2eca4ad5e";
+      sha256 = "41314e2e91927f9489e51607266beac834c844e364ab959673dc4ab21f40c490";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/ast/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/ast/firefox-110.0.tar.bz2";
       locale = "ast";
       arch = "linux-x86_64";
-      sha256 = "0cf0e3dbd210aaf5c86620e71ae692ff2afe70fc4c23ff74bbad6f2543f1747f";
+      sha256 = "164934479c770e028dcddbe73396085d216b31d9b3001de76210e3c82f836921";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/az/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/az/firefox-110.0.tar.bz2";
       locale = "az";
       arch = "linux-x86_64";
-      sha256 = "d241210ca9644a4bb285019b1b0df189d741330b45796b33f0ec304f2a994781";
+      sha256 = "2cab918f71127f01a1256f0d5bcaefc14c468cdffa212a9af3f9341d77737ba9";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/be/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/be/firefox-110.0.tar.bz2";
       locale = "be";
       arch = "linux-x86_64";
-      sha256 = "1b6dee177af6899f90e37155a778db6a574aaed5bda9b17d447506d33ded9e68";
+      sha256 = "70b301bba2286c9cf9393b62f1e6fd7a9a5958c69ad0070c91928b1ad428f9a6";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/bg/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/bg/firefox-110.0.tar.bz2";
       locale = "bg";
       arch = "linux-x86_64";
-      sha256 = "312ef6862bed28d9e7f1672d9614542c977c03dee68823b879087281fa294e8b";
+      sha256 = "f1b4d07e3e983fa80216845a9c236a57c0b8cca2d3a343d16d5cd44c38059381";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/bn/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/bn/firefox-110.0.tar.bz2";
       locale = "bn";
       arch = "linux-x86_64";
-      sha256 = "a3678a881c81a74f443796662d98f516a9c38067864d14064cc8386055d88684";
+      sha256 = "c5363c0d810c34e4669742b114b1c95c62e5ee9f89158a0e37d2a30d8bfa02c7";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/br/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/br/firefox-110.0.tar.bz2";
       locale = "br";
       arch = "linux-x86_64";
-      sha256 = "3f022392be45e43edc220c4b27c027f80a157af237e94c5ca3bc201f1e43e581";
+      sha256 = "21fef420a858a6e2f3cbe145a274d2660dd59a486dda5fbfd8dc2da1bcd6b6bd";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/bs/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/bs/firefox-110.0.tar.bz2";
       locale = "bs";
       arch = "linux-x86_64";
-      sha256 = "1eddb9e5fc279d5a265829ede15e09a7f254cff0a669457486f8c350a3709753";
+      sha256 = "93ac6bd8c45004f0a6768df878b3274d42ac6124e4fa4abf3fd851a360d7c5b4";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/ca-valencia/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/ca-valencia/firefox-110.0.tar.bz2";
       locale = "ca-valencia";
       arch = "linux-x86_64";
-      sha256 = "7ec65537c9b3a2432a5ee6b4491c36bc4735d0953c47fae62306e4701353a698";
+      sha256 = "fdff415877cb7a38f293bed3a876cfeff083eccf50408afded0288276a097758";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/ca/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/ca/firefox-110.0.tar.bz2";
       locale = "ca";
       arch = "linux-x86_64";
-      sha256 = "e726e7df71d65170fa9fee98de05aa5b5b6d1a3192bf0aa49f76a5a8fa2fc0ed";
+      sha256 = "1504757a058e3a634fe633a5fc768bb4240ad15949d6769408fe0bff71a5c17f";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/cak/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/cak/firefox-110.0.tar.bz2";
       locale = "cak";
       arch = "linux-x86_64";
-      sha256 = "2722c5eed7b3e017cd8c0a626ee41190e0b9ec44692a1cd8fda1d27cf741acde";
+      sha256 = "8e791f14a2191c48a0ae92773f8653ab90f54faecbbf81dabc065e608f92a511";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/cs/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/cs/firefox-110.0.tar.bz2";
       locale = "cs";
       arch = "linux-x86_64";
-      sha256 = "fa2b9278c64974f8ed61b58ddec23c7893d6b473ebd29ae900f45076944cd484";
+      sha256 = "dd6aa73a0770070b26e9ff9a27f0aa2579b32cfd195f0d65b728c92f63a4c559";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/cy/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/cy/firefox-110.0.tar.bz2";
       locale = "cy";
       arch = "linux-x86_64";
-      sha256 = "ad6b74b20d7b4ccf7bc858133fe0f35fd7239d4eb09aee310c75828c20face8d";
+      sha256 = "896b82fe251ab1471f4bc9f5c37f1651a9bd38cfb994b03f34a984b46a2fc29c";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/da/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/da/firefox-110.0.tar.bz2";
       locale = "da";
       arch = "linux-x86_64";
-      sha256 = "e8a0fba66e139ef6632b845d6c7ede425a28ac18afd916e0ff4fd89aef313578";
+      sha256 = "1a402341c4d8247af3197cd566e07eb367cb7016c85f49e96be0228e22d1a65f";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/de/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/de/firefox-110.0.tar.bz2";
       locale = "de";
       arch = "linux-x86_64";
-      sha256 = "1688dcf426f9349a0a89e010dfe73ae6e42d590695b8955a257ff1acaf5ec95c";
+      sha256 = "94b9783c4b13ee4eab1e8abab2a534582b01463d6661df0d9a56d29448910a10";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/dsb/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/dsb/firefox-110.0.tar.bz2";
       locale = "dsb";
       arch = "linux-x86_64";
-      sha256 = "36c8e7c90e7e418ca96a2a09f85ab78e45ea733369c2f1125bd100179bada452";
+      sha256 = "a1444709346d8383c512ab3143d4e41fb73cda71cf37aa61ad996f6ba2d074b9";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/el/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/el/firefox-110.0.tar.bz2";
       locale = "el";
       arch = "linux-x86_64";
-      sha256 = "5753c87b6676e2a21169ebc4748765f6a26bef8bc739a33da6421be6e0f916a0";
+      sha256 = "d317b8a632f0d2c085d11458744301664d2b0e4d386df9194b7f6ab3b4c7ed24";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/en-CA/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/en-CA/firefox-110.0.tar.bz2";
       locale = "en-CA";
       arch = "linux-x86_64";
-      sha256 = "5438c21484a9de673508f8d63fd61bcc58a3703fc1b1cdecdcaf30f8eac8d844";
+      sha256 = "3d955a100439458b7a668062d75cb79bc0e9543cf51f21fa4c5690865e19ee85";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/en-GB/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/en-GB/firefox-110.0.tar.bz2";
       locale = "en-GB";
       arch = "linux-x86_64";
-      sha256 = "bd19d96501d872f004b8226acc929e41fb4ae4120b287dc3504e1f0c6f733e8c";
+      sha256 = "14debdcb282b095b127d1575c6b205a925ffd08ec0e1980146d51afb037391fb";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/en-US/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/en-US/firefox-110.0.tar.bz2";
       locale = "en-US";
       arch = "linux-x86_64";
-      sha256 = "487a18ecbb0b3b91e402b55424f429d2e4e6127696ee48bb0e60ce7f9879d581";
+      sha256 = "3b3b615829a5adfaa9c9d7cbad4f1460e317650c73d2efa54823bfe99fa0f7e9";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/eo/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/eo/firefox-110.0.tar.bz2";
       locale = "eo";
       arch = "linux-x86_64";
-      sha256 = "a1f6f5b424d026f4e59f51a0e5669bff1bba225100673e12595ac263509ffee1";
+      sha256 = "93dd3e6467dfa466138b92e2890bd95d253d780092e9cde155ce93fa4901f4b6";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/es-AR/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/es-AR/firefox-110.0.tar.bz2";
       locale = "es-AR";
       arch = "linux-x86_64";
-      sha256 = "5aded9fbe24aaf8944fc193e507cf267e964e935ead5a628d6d8638c18caa02c";
+      sha256 = "aa7c81d1420dae03592d75d68f7d3d761cd1d2e34e55ab20ad08f4a94229935f";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/es-CL/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/es-CL/firefox-110.0.tar.bz2";
       locale = "es-CL";
       arch = "linux-x86_64";
-      sha256 = "bda21832e8f1a05266000cd730a7698f99507e536a1690b3b69387640999e3b0";
+      sha256 = "dae84fc91b87bd08f19a33ba0c398c33e54b9c0d64cd77ee3c37500e5e5b9f8b";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/es-ES/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/es-ES/firefox-110.0.tar.bz2";
       locale = "es-ES";
       arch = "linux-x86_64";
-      sha256 = "23b8e0f6fadd1523123993469c4919188166b2ecf97cd63c36fae816ee50ebe0";
+      sha256 = "55deec771fbb3a6e8653250a2d578df7bee9cf20ad3dd326ddd7833627917f7a";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/es-MX/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/es-MX/firefox-110.0.tar.bz2";
       locale = "es-MX";
       arch = "linux-x86_64";
-      sha256 = "c8ec680aace4a11ef6eb921466ca449d6f9f6cdc5f90ab35bd4d65a650f0322d";
+      sha256 = "ba20aadf9c0137a3832466d3de9183685d37c25bc13de3fc64ee9407ddb92226";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/et/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/et/firefox-110.0.tar.bz2";
       locale = "et";
       arch = "linux-x86_64";
-      sha256 = "c80e1e1b9c608c9757b25ac2482ddef919fd0a6130fc11122cd9d8d975b015f9";
+      sha256 = "9c58581144a916ae7dcfac8f621a9e406d1a889d007e13ca7f32e969a8da6a4f";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/eu/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/eu/firefox-110.0.tar.bz2";
       locale = "eu";
       arch = "linux-x86_64";
-      sha256 = "e74d5916170b90af04e27cdc1a12ad0cb4037bbf56944d41089c58fc5d731a7c";
+      sha256 = "39b91be1655603dbf4034766319b0224b20f198f66a6fe43c3ff98c438336f12";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/fa/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/fa/firefox-110.0.tar.bz2";
       locale = "fa";
       arch = "linux-x86_64";
-      sha256 = "4d22b6c6e8e197a431b7250f864837aff3538f094fd8c58179e92d00e3f52575";
+      sha256 = "3819f09ab89abfc79a8ae4a9d676f778e19f3cfc120d839e8ccd1ef6ece49373";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/ff/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/ff/firefox-110.0.tar.bz2";
       locale = "ff";
       arch = "linux-x86_64";
-      sha256 = "9569f1ec1d42b743daf74d671e42cba98cdad204ab4ca1c2c69c5c20b73e3292";
+      sha256 = "653ecdea0b79d7d489328cea7412dd669d9b25b896746d4a60a9415364923d87";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/fi/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/fi/firefox-110.0.tar.bz2";
       locale = "fi";
       arch = "linux-x86_64";
-      sha256 = "3b4dee8164333a13591ef238d7e33dd111f5da53975ae3cf3f70d1ad852f9eb1";
+      sha256 = "10fd36e7667d50cc5ba894e1fdc3ac56162740b29a4534e548ef4a4e1f310ecc";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/fr/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/fr/firefox-110.0.tar.bz2";
       locale = "fr";
       arch = "linux-x86_64";
-      sha256 = "4731923d8ec31c32e9d563e991ff4cdef6b36925a482b2b0dac43aa3ca17e1ba";
+      sha256 = "ddfae62fa495609806dca19019fa238a0598509f9655bfc0a8c93d182f15da59";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/fy-NL/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/fy-NL/firefox-110.0.tar.bz2";
       locale = "fy-NL";
       arch = "linux-x86_64";
-      sha256 = "ed36d87989fdbab969463b439a6a82a15fbf5c986942d92bef634722127b77f2";
+      sha256 = "1f7caf327e63404450d46ab22500020038db953a0465b5b79773e43220329085";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/ga-IE/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/ga-IE/firefox-110.0.tar.bz2";
       locale = "ga-IE";
       arch = "linux-x86_64";
-      sha256 = "49b9d7741cda331568cf660151173b67b09e2bb559c4c8b5398100573629bfe6";
+      sha256 = "3384a63147182c194e695d806220aa32af8061425ecb37a02fbd7e492110a355";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/gd/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/gd/firefox-110.0.tar.bz2";
       locale = "gd";
       arch = "linux-x86_64";
-      sha256 = "c4523729d1a51b91322fef8b8d0d7709ffd3dbc74da6ecc019c3e19d1b5e5fa2";
+      sha256 = "33bb81bf197174ed0adb11de55b48ca9d14babdcebe95f18cc2b80a3946e1f8d";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/gl/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/gl/firefox-110.0.tar.bz2";
       locale = "gl";
       arch = "linux-x86_64";
-      sha256 = "2e989f3a162c52deaaf66e3631b33a275b906c402d2ab9025bba99ed1d76735e";
+      sha256 = "a4a0f1b2dec71806eb3e7ad6ba4512453e7c2525996ead9ca60e5394850933fd";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/gn/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/gn/firefox-110.0.tar.bz2";
       locale = "gn";
       arch = "linux-x86_64";
-      sha256 = "aeae4daa675292d4a578d56bfa0771b02f17166747f377e2205e07ad6e11cc87";
+      sha256 = "42da1455925d9f4159e418f3af8c4ec6ff339a9b0fdc25de2d88df4b54509efa";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/gu-IN/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/gu-IN/firefox-110.0.tar.bz2";
       locale = "gu-IN";
       arch = "linux-x86_64";
-      sha256 = "215e062675cc04c904f1f91b539c1653ba5585c030446429b63913d92b3c72b1";
+      sha256 = "3f18fecd672dd5c06b2a2513686e07bfc9e52f063b5a00a42dbe984bfdb88069";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/he/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/he/firefox-110.0.tar.bz2";
       locale = "he";
       arch = "linux-x86_64";
-      sha256 = "9c48fc2af47849bbaa958f839b25889159265b4575d286d28d2c67382fd7c2a6";
+      sha256 = "312892d542a391d9bd0b25895ee4db021f0178925972e9a5a5c453d42587dcd1";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/hi-IN/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/hi-IN/firefox-110.0.tar.bz2";
       locale = "hi-IN";
       arch = "linux-x86_64";
-      sha256 = "b57213ad87c537626022504065209f7ba561bdfd7eef621e49d47db28cbc35d3";
+      sha256 = "bc1a49fe3a05d92108757072532fb557bd0e9947ff7c01f57cad8f01a06503b3";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/hr/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/hr/firefox-110.0.tar.bz2";
       locale = "hr";
       arch = "linux-x86_64";
-      sha256 = "49682e92d31ecd5c3690c30f756f719acb959440853abb3d42d6e87a98e8d9f7";
+      sha256 = "3d8ce1cbb3ebf2ca895f970ee1be35b8c02b177cf9cb7f2493e40666080c6ea5";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/hsb/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/hsb/firefox-110.0.tar.bz2";
       locale = "hsb";
       arch = "linux-x86_64";
-      sha256 = "c1971514830d0c2ab026044cbbfcad679f82c612b2dc4d36604b9c6cdb8298bc";
+      sha256 = "4e99600d501be843252a7a1f494b7f1c70d4ce464ce04a0a4fe7ece35629bbd8";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/hu/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/hu/firefox-110.0.tar.bz2";
       locale = "hu";
       arch = "linux-x86_64";
-      sha256 = "a63eab963d13bde89cd6f52f5f7a35946d9a32572c6a7201ca7466a679ca1dcc";
+      sha256 = "bb6367b61be3cc6db54e004f01582a1ff20277dc34eb79a5a5cae38aa84b0ab6";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/hy-AM/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/hy-AM/firefox-110.0.tar.bz2";
       locale = "hy-AM";
       arch = "linux-x86_64";
-      sha256 = "c563456845b5413fcfe160f23ad0d6c6d92c540a7896c6d6e39ebb61af0d6295";
+      sha256 = "086e6a14870ac92b5b31b61afb8797d5ff3cfa42ed0d70efe7c8950a1a3ee4a5";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/ia/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/ia/firefox-110.0.tar.bz2";
       locale = "ia";
       arch = "linux-x86_64";
-      sha256 = "f9af71feb2085290fbe2f3de3dfc11bee0d0ac49348268675a5f7bbbbce00357";
+      sha256 = "46cfd327083006a11f2d483a6dc8bb1cd70cce447b4e0cbe400bd2c0bbe96590";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/id/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/id/firefox-110.0.tar.bz2";
       locale = "id";
       arch = "linux-x86_64";
-      sha256 = "9996428d29e3705cf35e060f860660778b69e726cdc57e2734a42d449c43ed4b";
+      sha256 = "32f23f73a9e531bc477f853c897641b3539dc39e53d5a718bc89a955ff7f9791";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/is/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/is/firefox-110.0.tar.bz2";
       locale = "is";
       arch = "linux-x86_64";
-      sha256 = "a57421ce14cb264da4d8bed35dc3d0f742a15870d65548c7617fcad67a3f50cd";
+      sha256 = "7b9f2dabf39e68da0e7027d177bd717f5d59f7567b5c3ad77803a32273bf1b7e";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/it/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/it/firefox-110.0.tar.bz2";
       locale = "it";
       arch = "linux-x86_64";
-      sha256 = "e2f537e79f258b6ecc03715bd18565c18c10332f836ae8582e6ddbdb567e96fa";
+      sha256 = "f1a54314f7ffc8ba0371fe2f1f4b178e748a32928f056a36b24757d4faaaf858";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/ja/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/ja/firefox-110.0.tar.bz2";
       locale = "ja";
       arch = "linux-x86_64";
-      sha256 = "757ae63ab1d7aef781b24fdcd779aa84722a4dc0b52c35e7938158dce2b56fa5";
+      sha256 = "2fa4839150382a59f80e72ae9939c41a5ec5be262be2816bf1986e644e326603";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/ka/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/ka/firefox-110.0.tar.bz2";
       locale = "ka";
       arch = "linux-x86_64";
-      sha256 = "ab985686cf54f50b6cb69e63d121a71c2aacfc4b1c4c22d197e0b6b4d24fd404";
+      sha256 = "453f380f21f68665138c2d45cf5aac474a20aad2739d81b58ebffa54069422f2";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/kab/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/kab/firefox-110.0.tar.bz2";
       locale = "kab";
       arch = "linux-x86_64";
-      sha256 = "e423f60a7c486422a4583dea6f454c8f43ed67cc3ebada7ee614465a5dde2871";
+      sha256 = "6521279e7a1a6c1b0dfa40cc16a32318fe1321593493b5c3360aeccc0d3d317b";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/kk/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/kk/firefox-110.0.tar.bz2";
       locale = "kk";
       arch = "linux-x86_64";
-      sha256 = "d79b6d73f0c01ba881ff6ab63a243955ffc60428ab6f3ebe1d8ac2890bfd81f0";
+      sha256 = "f2230f6e952f55ab1ee9883a9310ac64280b28d9602b09a5a09837c5b7507230";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/km/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/km/firefox-110.0.tar.bz2";
       locale = "km";
       arch = "linux-x86_64";
-      sha256 = "afa093cbcacccf5e93b4305cf4cd6ce80b2183e11501d7fded6ed71b8dd61779";
+      sha256 = "1c7d9fbd2bf87cf33655b6fb52615f4014e1737cd130fd71bd669357774693c7";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/kn/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/kn/firefox-110.0.tar.bz2";
       locale = "kn";
       arch = "linux-x86_64";
-      sha256 = "9bda025646837a816c5374e09ee0f6b8b3fa4401adfbb4c79bd37b9b004c1388";
+      sha256 = "e591b6c5bc5235551379bcc99b2ac24a85a9d4da5c10a6561fe3812ade7f6f77";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/ko/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/ko/firefox-110.0.tar.bz2";
       locale = "ko";
       arch = "linux-x86_64";
-      sha256 = "3f56db587b78bcf927df9f7308f4eaff8087bbb6008bb7dbc63e7cdcf4727c86";
+      sha256 = "8b72677509748f44c45b176005545d5f601c4bde2259134fd7049c864b772005";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/lij/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/lij/firefox-110.0.tar.bz2";
       locale = "lij";
       arch = "linux-x86_64";
-      sha256 = "75da1688b606f59513e21ab86775fc8cb35ce84e09bc042c6486848489e022ff";
+      sha256 = "796a16bd6443b729e0158d6b628e03a92b144f742d4d4fdb0bb1410a31a6fcb1";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/lt/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/lt/firefox-110.0.tar.bz2";
       locale = "lt";
       arch = "linux-x86_64";
-      sha256 = "232bfb865f1c25c8848bd8699b91e2bce6832ea82ae2e2ae647f43a83c828232";
+      sha256 = "83cb607213879da84e38930b4f1cb24f9cdc89819a4d88bd47521d8833afe9f2";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/lv/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/lv/firefox-110.0.tar.bz2";
       locale = "lv";
       arch = "linux-x86_64";
-      sha256 = "d4834008c21d312286d6b9757bc2b61497d987451245445919aefa4a1ab91be6";
+      sha256 = "0498de6084df452c66f05f3171d42628f41da08772646cc99c32e8672697f3b8";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/mk/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/mk/firefox-110.0.tar.bz2";
       locale = "mk";
       arch = "linux-x86_64";
-      sha256 = "102169bdffa3fbb210d372844caff0fd010511fcafbae16b89453751ad9f7228";
+      sha256 = "0d876b466dec448a88b5b500ce1ff8cbc644e914ea9fe90f1e3dc06a97a403f9";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/mr/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/mr/firefox-110.0.tar.bz2";
       locale = "mr";
       arch = "linux-x86_64";
-      sha256 = "af85561d4db729c04b973f8c74bac790275913586c0cf5284e243c0ddcf45ad1";
+      sha256 = "cbee1c85c3c01b9fc6a7a919ccc6c8dbd3dd0e895e4db6031df55d6ac32af9bf";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/ms/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/ms/firefox-110.0.tar.bz2";
       locale = "ms";
       arch = "linux-x86_64";
-      sha256 = "e98ff53a524ba73184bc395c25ce110ae915846a44e0ba8d8a6c594d5da33bd6";
+      sha256 = "3623b41cb35d37c1e197e67d86952b4a16a3d272559fe4e3ff369573fad8b44f";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/my/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/my/firefox-110.0.tar.bz2";
       locale = "my";
       arch = "linux-x86_64";
-      sha256 = "82ef41b18753d8c2203fbaf3cceb0d1bd179004113db40079a75488b3fb7217f";
+      sha256 = "26d6639caae14b3232a04984d43e5625e421c022c374380edff1048cd86d5af1";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/nb-NO/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/nb-NO/firefox-110.0.tar.bz2";
       locale = "nb-NO";
       arch = "linux-x86_64";
-      sha256 = "daddf9f5e0e9eb654af24dc2abb210cae97e37faac8af56746f1d28f5dddffd6";
+      sha256 = "26e90b20bc065c55a18575b48fa1259b6389070de5d0d858820d8db8b95f2afa";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/ne-NP/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/ne-NP/firefox-110.0.tar.bz2";
       locale = "ne-NP";
       arch = "linux-x86_64";
-      sha256 = "f1b97800986e546fac4c08576469651ef0c0f6e8729b34ec5b1876208c788876";
+      sha256 = "4723431192b87bd47b3a2af545b106fce88025a16e9035307fde91215d21d161";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/nl/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/nl/firefox-110.0.tar.bz2";
       locale = "nl";
       arch = "linux-x86_64";
-      sha256 = "30d2badf5c909890877c35dd1a397ee7947546bc97867a1369572070c3c421db";
+      sha256 = "f0b6bb64108c1166655cafbe152100305b24717d5c197cdef9b9dc18bac40fcc";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/nn-NO/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/nn-NO/firefox-110.0.tar.bz2";
       locale = "nn-NO";
       arch = "linux-x86_64";
-      sha256 = "378bd3b106f63e5ed28ed150f83befb1ed0624dc6d977a56ca70d7b53999489e";
+      sha256 = "bfdf81ec059be8e95434c4fa50882fa8be785bd6fcb7af5c33b864bfaf0adbb1";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/oc/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/oc/firefox-110.0.tar.bz2";
       locale = "oc";
       arch = "linux-x86_64";
-      sha256 = "bb6eda0d45cd29e1438034a1f62422da500ff8db12790eb140fad34fb504dc22";
+      sha256 = "7c1361df3ce4c84340d3561d931d1e567599a65f97022b33dc83af2c9db17c62";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/pa-IN/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/pa-IN/firefox-110.0.tar.bz2";
       locale = "pa-IN";
       arch = "linux-x86_64";
-      sha256 = "9537fc5b350222c8a44da6387902cd7c18ed1d9a0dd45f65ca996819cc88ef21";
+      sha256 = "0917326d1b70fd5cf3b759f1374eda0d69d538f92fd571df06df4075341dc633";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/pl/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/pl/firefox-110.0.tar.bz2";
       locale = "pl";
       arch = "linux-x86_64";
-      sha256 = "622adb3bafab1594166856363d317d9259050c935bc6b2aa6298b664b9a8e80f";
+      sha256 = "d754df80e43a6d00309c867e3b926e173ae895d652ee629d6646cb4481531190";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/pt-BR/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/pt-BR/firefox-110.0.tar.bz2";
       locale = "pt-BR";
       arch = "linux-x86_64";
-      sha256 = "cbcdaa340edcf86abc9997c7bbc8eac879e7ffc93d9351fb1ae2c133cbdeb56e";
+      sha256 = "d06263b565d014ee2d71c00fe4b4a4d020efc47a2a8d6dc9687b983e19b8752f";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/pt-PT/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/pt-PT/firefox-110.0.tar.bz2";
       locale = "pt-PT";
       arch = "linux-x86_64";
-      sha256 = "d5662ca239edbeb332308465d16cab2371da282dfbc750657ef3edf80030bc4f";
+      sha256 = "72c66f0db72dc4e631a9d9a56e5b4e2d03779326deb501ee42011199148a52e6";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/rm/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/rm/firefox-110.0.tar.bz2";
       locale = "rm";
       arch = "linux-x86_64";
-      sha256 = "50db6ee90b2197bdd6a24a18722ec645844898ed0fc1551a22a0837a2ae98402";
+      sha256 = "a1e5e8f6d47aa06e9c1d9f55a014a9a117658fed802302d3d9baada236f2807e";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/ro/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/ro/firefox-110.0.tar.bz2";
       locale = "ro";
       arch = "linux-x86_64";
-      sha256 = "6a8c6b76ab243da8317d1f1ce26c4d325b8a415098028f6162dc3523e78c0f32";
+      sha256 = "977766174f16b7f1173f671d9ac3b13c49cd4a3ac4446796322c94e533148c09";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/ru/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/ru/firefox-110.0.tar.bz2";
       locale = "ru";
       arch = "linux-x86_64";
-      sha256 = "7d026e34d5bf90bb68e6f14b6954f1b7f9ec132d6a11507236fe9951301d7ba2";
+      sha256 = "c592b9ebf9158496d7c53f010c30934b05f6c24c8ab975bde5cd982e40131666";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/sco/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/sco/firefox-110.0.tar.bz2";
       locale = "sco";
       arch = "linux-x86_64";
-      sha256 = "457fe129188f2abcbb6cd1fde7fed8947b5ce3367bcbde11a6308ba9f769bb81";
+      sha256 = "c44f03fb44368f2084ee4fa19b16fb2e2c886ed8289888fbc0a8ac81ae157e2c";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/si/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/si/firefox-110.0.tar.bz2";
       locale = "si";
       arch = "linux-x86_64";
-      sha256 = "bbd6af1251c794090d01a0a07fccb648b8b4e210f9991a3d2937d1e663e99df8";
+      sha256 = "fc7af71d586bcd77b9773d8d945deb0a8c461d0d244d3a9117c4d6a9eb16748f";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/sk/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/sk/firefox-110.0.tar.bz2";
       locale = "sk";
       arch = "linux-x86_64";
-      sha256 = "ff93a35e6be55c2a05e061d3b2c8e738a1f408d2876436c168421eabbbd9d40f";
+      sha256 = "f6ca007bf45d7dfd671fd5de3b161da2dd664552d78734024700fc54b396450d";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/sl/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/sl/firefox-110.0.tar.bz2";
       locale = "sl";
       arch = "linux-x86_64";
-      sha256 = "81dded9e76f3a95d5182dcd106671bf864c33221f83b90c338aa16c72b7edd7b";
+      sha256 = "f79577182cdb35fce6089a54c3773369400d611466dab19355ff52bf705f1053";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/son/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/son/firefox-110.0.tar.bz2";
       locale = "son";
       arch = "linux-x86_64";
-      sha256 = "d70271b8199efc1507c08eaaf96b06523dc9bd6689a3884ac556b0e3a252ca60";
+      sha256 = "221a3f12335129f3bbb8674b723041154b144b00f752680dd8f1ebc98c2a37f4";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/sq/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/sq/firefox-110.0.tar.bz2";
       locale = "sq";
       arch = "linux-x86_64";
-      sha256 = "4a264563aaa4cea44e54ab9ebc528dcbc241e41e0a12d3f256b2bc15a365965e";
+      sha256 = "86a093a33be1a5f626455012a43c4a50632bbc6ec990a114979da7f3baa38e10";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/sr/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/sr/firefox-110.0.tar.bz2";
       locale = "sr";
       arch = "linux-x86_64";
-      sha256 = "ad119b58327106fcd2154b56952d746add490f77a146c7b7beb44310eabdfa80";
+      sha256 = "38f947d02fc34c94dcd6cedd38cbfde231ec1131a5dd6faeb34abccd960f1570";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/sv-SE/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/sv-SE/firefox-110.0.tar.bz2";
       locale = "sv-SE";
       arch = "linux-x86_64";
-      sha256 = "34a6c91de77b89a781335c3e56326fe84fa214e7d847d6450eda76cba8479de8";
+      sha256 = "707c1ee6d11af079ba860ad86f1f2b54a78c70442e9588d3d2ad807271914bea";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/szl/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/szl/firefox-110.0.tar.bz2";
       locale = "szl";
       arch = "linux-x86_64";
-      sha256 = "ef83c2facb462e2d02f568bb4f01817715a5df53d8ce248a222d11744e863f65";
+      sha256 = "991af9e776cbffdcfd88b4e2ff30660af04a16a0bdedc747d2d95bdf81162267";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/ta/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/ta/firefox-110.0.tar.bz2";
       locale = "ta";
       arch = "linux-x86_64";
-      sha256 = "a01a5ac21e4089c0a7e2c4853166f6f48f7e14d4a6a28b13231bb9afda951809";
+      sha256 = "b59fb2732574a1c44047ae8258597585661229dd2222fb53a485d3a219170cf2";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/te/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/te/firefox-110.0.tar.bz2";
       locale = "te";
       arch = "linux-x86_64";
-      sha256 = "a565cec206c2f692e704b7c7264147ce45452c82d541132a422e4a3224cbdcfe";
+      sha256 = "9d9266c5a8c2988d7db74677e4d921d26c6b38445580be6caf6baad95ab1fe6e";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/th/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/th/firefox-110.0.tar.bz2";
       locale = "th";
       arch = "linux-x86_64";
-      sha256 = "3144b8ee44c820a09197c45c4e40918283c8a7ea98c4a77f46b827cd2ea15820";
+      sha256 = "6392a911799bed85022b659d14cfefc9a28d10fcad968316a888a11d78ef7e00";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/tl/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/tl/firefox-110.0.tar.bz2";
       locale = "tl";
       arch = "linux-x86_64";
-      sha256 = "dad4a9b1658f4eadf87ecf14156c19767294e7ce3fc9ec265d2d11cace33ab3c";
+      sha256 = "cac97ac6f2f6eec124219479fca50a0cd9730a3fd6d501285f4a03b1d4f2a9d7";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/tr/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/tr/firefox-110.0.tar.bz2";
       locale = "tr";
       arch = "linux-x86_64";
-      sha256 = "1659934b3db55eb38c5a40201b111ef4e86b7ef4d2dad3e9e4528ea28101ab4d";
+      sha256 = "19874a19ed49e6320ca5f65a9ac9f30352abb0c417b6d637548e48ba4e4c67f5";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/trs/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/trs/firefox-110.0.tar.bz2";
       locale = "trs";
       arch = "linux-x86_64";
-      sha256 = "9393d4ac66d6f4f23426f7432febee1498373dc6ef3b9395316a9c2fcb9b915e";
+      sha256 = "15a541c0b28a8af82ce1b736798850016ccf830fcdf3ccb80198e929613c39e2";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/uk/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/uk/firefox-110.0.tar.bz2";
       locale = "uk";
       arch = "linux-x86_64";
-      sha256 = "22f8886296e49d947f33f984688af663c9cf13a7afc473976e9975cdd70e67f3";
+      sha256 = "4afda83040c0353244f55d3e3a498680a1d2b96cc36b97d2b96097d29a87ce1c";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/ur/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/ur/firefox-110.0.tar.bz2";
       locale = "ur";
       arch = "linux-x86_64";
-      sha256 = "883271dde81dc06893d76d65b394e639ed74bada7233ddfec015c5a9c76bb9f5";
+      sha256 = "ea702e1ed8c412631b5c2e8996bead1a11eb54d865eb1891a7e5346d332c5af0";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/uz/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/uz/firefox-110.0.tar.bz2";
       locale = "uz";
       arch = "linux-x86_64";
-      sha256 = "bf71ae490fcd0c1e03044308e0322b993238e679d1b33f2214ccf40bf03d9075";
+      sha256 = "6173fe2d74b1b5f776a8d1fad92b8a629888a7e7a267d49a9296a4728f46c456";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/vi/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/vi/firefox-110.0.tar.bz2";
       locale = "vi";
       arch = "linux-x86_64";
-      sha256 = "07ab60fbc7a9422e37e2a606962b4f52d047a346d1560e7d88a28c58766a1cff";
+      sha256 = "88eaa69fea116db05aa2adf3e0b89b2f5707bd83373f7fcbc72f758ca293a0ab";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/xh/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/xh/firefox-110.0.tar.bz2";
       locale = "xh";
       arch = "linux-x86_64";
-      sha256 = "55a4700c96ff4b73643422a480546201580a0cbd8314434f3a0064f992ee29a7";
+      sha256 = "8869898fa3895eaf2749b414a518f2e281e813771505c1715b077c155ef7c6c0";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/zh-CN/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/zh-CN/firefox-110.0.tar.bz2";
       locale = "zh-CN";
       arch = "linux-x86_64";
-      sha256 = "645c75f0f4a39370966c959bb81bdc1f512b5c10be7d66081dfbafb978ad2851";
+      sha256 = "c400f7deba6435524ec1857da4c8824de621270060441721e4d63bb4152c414f";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-x86_64/zh-TW/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-x86_64/zh-TW/firefox-110.0.tar.bz2";
       locale = "zh-TW";
       arch = "linux-x86_64";
-      sha256 = "91f28d74e5c626b0e2f540aa2b0a0232a9f27786a296f4bd2b4d72d7faf09b22";
+      sha256 = "3d0153abdbe3ff6e6a63d748ebad7974c869b8b862719aa141b5ab3527e7dd85";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/ach/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/ach/firefox-110.0.tar.bz2";
       locale = "ach";
       arch = "linux-i686";
-      sha256 = "7c3b5a5fd67548a8d56faeaef023f34eb7a7853e2d9f18628c9588672b9d608f";
+      sha256 = "a497c0580b1b85875528ec193d2a784c264b27bb0f386b95b491d12ef6793dc3";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/af/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/af/firefox-110.0.tar.bz2";
       locale = "af";
       arch = "linux-i686";
-      sha256 = "2f3221f6718981b341655d62913f7413b75d41721ab002f3bb885dad4c40f1e3";
+      sha256 = "4c4ef321fb862c8ed35ae41e3d9997f304059bfda060b1d6cafb4a5cb9d3844f";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/an/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/an/firefox-110.0.tar.bz2";
       locale = "an";
       arch = "linux-i686";
-      sha256 = "7d573fa13a00c255c5c449521162ed85c733e9648c0bf929556bb97436cc12d3";
+      sha256 = "3af27b88ac940b664df13283d34a02d8f673a6474642a1c1665af249d6249c19";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/ar/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/ar/firefox-110.0.tar.bz2";
       locale = "ar";
       arch = "linux-i686";
-      sha256 = "a544d38f3c4693413ff3498dd6a89766154974087f966da061a9a42785e85682";
+      sha256 = "cd533794dd488430858c800f81adc2d0ca11b6c9c882d6b00eea77cf65d59818";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/ast/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/ast/firefox-110.0.tar.bz2";
       locale = "ast";
       arch = "linux-i686";
-      sha256 = "325b3237da08fc1a637c0409bdb43161781c1fb7ebc811fc3a477372b34eba63";
+      sha256 = "94859669edd14bf395d298872ab4aa6e75d763c893304c1e97908baa8f84cbc0";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/az/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/az/firefox-110.0.tar.bz2";
       locale = "az";
       arch = "linux-i686";
-      sha256 = "ec6800b785fa3b8f4b7c2ec0bd4fd7d06e265408a12ed791ef6198b0c1786255";
+      sha256 = "5f97dece71f45eea49b09f67d86e42f8a32e4c46f2e6028a3f9570fd976458e8";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/be/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/be/firefox-110.0.tar.bz2";
       locale = "be";
       arch = "linux-i686";
-      sha256 = "aff9ef285a2b08bb3e516c30b85c6479d935cf40c998ce88c5410de077e42723";
+      sha256 = "c0d5aee80966ba91f56c9d4c5378ff8dcb49ecf1f39734a892aff19d48d1f618";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/bg/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/bg/firefox-110.0.tar.bz2";
       locale = "bg";
       arch = "linux-i686";
-      sha256 = "a27357ac9c019efa327406f1919eaeb1fa5a8686094026935283df4dac50e96e";
+      sha256 = "427ed2a9c099cad19730f749fadd78a875f36e90e21967664db0d0d78791d821";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/bn/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/bn/firefox-110.0.tar.bz2";
       locale = "bn";
       arch = "linux-i686";
-      sha256 = "1642db7e385512fbd963b48bdb38a1780cb5d4be98e30727d6d2df751fe262ad";
+      sha256 = "b447ceb654fd80ac6f02ec6100d9b05a8e4db3b88ccce18dd73b568f4a8a79bc";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/br/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/br/firefox-110.0.tar.bz2";
       locale = "br";
       arch = "linux-i686";
-      sha256 = "9bd3bb35f392512f77013068b3bd61eafcc08fcc2716fcc13a996b54f8881469";
+      sha256 = "97c29e25546631441e8e91f5101ebe6b38580baba951ab0cadefef6da100121f";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/bs/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/bs/firefox-110.0.tar.bz2";
       locale = "bs";
       arch = "linux-i686";
-      sha256 = "8fce6f5edbe7996f8d31478b276d6e80b556a01913a158d403b8790262e26bbe";
+      sha256 = "80515bddf58da59418d3cb4c815deb27a32db94d29087ffa2abafcde0d8cb697";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/ca-valencia/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/ca-valencia/firefox-110.0.tar.bz2";
       locale = "ca-valencia";
       arch = "linux-i686";
-      sha256 = "fd8fa093fdae77f9ed588543d7bbf00b1369ba5e469199cdaac2bea990be8d5f";
+      sha256 = "c72c6c12bdbdbf438565e417dac62ce2fbbd10a69218d63f424a8241186e1277";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/ca/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/ca/firefox-110.0.tar.bz2";
       locale = "ca";
       arch = "linux-i686";
-      sha256 = "5e479179164485d1e4580dd9f25257067e4ee30ce00790f722f61024c5cc0e8e";
+      sha256 = "42829bdbf409d8e96c1feae1283fc81d892a8c8c6b7ec9a22eceeceed9c75f60";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/cak/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/cak/firefox-110.0.tar.bz2";
       locale = "cak";
       arch = "linux-i686";
-      sha256 = "00dcc222d9bb3a2e68ecb8b61e04471f03e03df7e171b03c390487a66745bea7";
+      sha256 = "e304b4f56407efedc4ba830f8a8baa4ecdf1ca597c85be6cf03ef7208a420c63";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/cs/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/cs/firefox-110.0.tar.bz2";
       locale = "cs";
       arch = "linux-i686";
-      sha256 = "62a42f71706a8f02b2165603ad9ad0f6191fa4e2278ac2a09d8337ae1ae809a3";
+      sha256 = "1d8c649087ddb30988b8efaf94d12f287ae6670ea67c3e5602414ed296d01b5c";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/cy/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/cy/firefox-110.0.tar.bz2";
       locale = "cy";
       arch = "linux-i686";
-      sha256 = "36afec95e09e29150ac3d6f2e75e451541ae5e223d438a3c3917473ad7d3c8a3";
+      sha256 = "3594d93aa8b4cea7ee5783a2ac7c8d2d19a2b7a75a8f10b5e647564583e4af85";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/da/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/da/firefox-110.0.tar.bz2";
       locale = "da";
       arch = "linux-i686";
-      sha256 = "03f36a41a0fb306c26da2b9da19ecfaef4b78b7891dcfa23f7d95a334cb7fc39";
+      sha256 = "e5358082beb94c367025047503ed28e6fc9daa51b581613e680af561fecb3e71";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/de/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/de/firefox-110.0.tar.bz2";
       locale = "de";
       arch = "linux-i686";
-      sha256 = "d9c4c368d31690be710648d41253481bb2f9e590d10bd8729a06a0c00b1427cf";
+      sha256 = "c57baa7af49f8b07b9fe3cb74d3e6110d217c1f0c3fc8c061a7ca6259bd0db85";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/dsb/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/dsb/firefox-110.0.tar.bz2";
       locale = "dsb";
       arch = "linux-i686";
-      sha256 = "3177bc793f513a2e6a52d8d8a5dd45f0cb41257e524da9e89e292664dbff8cc9";
+      sha256 = "4bd06a4df2243e392c0f9ed7976c38b85ee9cb413e50cafaebdcf48008a1b7c3";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/el/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/el/firefox-110.0.tar.bz2";
       locale = "el";
       arch = "linux-i686";
-      sha256 = "b25dbabf9ef58de514edc92130f6ff733aa6a0d3b4b2f70e3b72c54a74a37ab2";
+      sha256 = "0e322fcf17bc6abd90c135237c199ce9a6979954df947d07fdc926a90e0f751d";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/en-CA/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/en-CA/firefox-110.0.tar.bz2";
       locale = "en-CA";
       arch = "linux-i686";
-      sha256 = "0232243fd6bac40efd17f71295f79b172119ae58d277f3d8726df0fb7913afca";
+      sha256 = "8b4770349802e264d61b228f64db1d2c4200ddde513b6e88277e14c4dce3a5c8";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/en-GB/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/en-GB/firefox-110.0.tar.bz2";
       locale = "en-GB";
       arch = "linux-i686";
-      sha256 = "4ecd5a129e40b9938f4c245616558e61f49c602f9257dc32417af0685d097ed3";
+      sha256 = "f36879cb02a912b6b7023a55474a99edc1cbcaa3174c02a23f5c861d91945c25";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/en-US/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/en-US/firefox-110.0.tar.bz2";
       locale = "en-US";
       arch = "linux-i686";
-      sha256 = "4a960f440dd688eace3d4ea57d80b53ab9272e22688e08d773a3f5f7b9d53af7";
+      sha256 = "b9c800d918231e74e6ddcf6f5ebf54e94440f03ede36221b061de65e9a7ef1f0";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/eo/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/eo/firefox-110.0.tar.bz2";
       locale = "eo";
       arch = "linux-i686";
-      sha256 = "07f66bd4e09b5fa459a29bb5576818437bd5e7d059504e9b0ac8eade2045d263";
+      sha256 = "93a77d6696d8825e1a16eec1c757f7b35434976980dab488ddde7096e3b19efd";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/es-AR/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/es-AR/firefox-110.0.tar.bz2";
       locale = "es-AR";
       arch = "linux-i686";
-      sha256 = "4d4cda4d1e4d189704f3ff43ccb247dd5d6b05ac4d74cf7cd957d0f25b2c8c5c";
+      sha256 = "cb41a835bf688d08ca346e6bdc12549d63741acc87e2c3d7fc9f11fbaf8f9c32";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/es-CL/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/es-CL/firefox-110.0.tar.bz2";
       locale = "es-CL";
       arch = "linux-i686";
-      sha256 = "48a18cadb63917659697f99872c40dd77c09e62d4687e5e15cb8b791d4c0a2a3";
+      sha256 = "622933f73c63dd4da300677ca1aba7729b615ccaad3f820eb66ec5241ffbe4f2";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/es-ES/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/es-ES/firefox-110.0.tar.bz2";
       locale = "es-ES";
       arch = "linux-i686";
-      sha256 = "9e73d300963872b32ab69c42277ca0451c9e0df0ec3c7d7ad1ecc47232cd4388";
+      sha256 = "0659f2594b695a7be000d0b1901e50b58a9d561f57f0ae31ca4c4b3c374f8d3d";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/es-MX/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/es-MX/firefox-110.0.tar.bz2";
       locale = "es-MX";
       arch = "linux-i686";
-      sha256 = "2b1a4c7a40a62801e1c5b8592186abf407c4e9c7ce868263b478bc8fb352a001";
+      sha256 = "ce894eae045e3b09c9c6dfa2754c5a03a6e737bc4a3b54a78d48226cd5376048";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/et/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/et/firefox-110.0.tar.bz2";
       locale = "et";
       arch = "linux-i686";
-      sha256 = "5d0296cfd5a62003b90a8b20baa8bed8edac5a0bcc093b7b99f96db02541bc46";
+      sha256 = "dda98cfd2833dad0ce35be8bfdaa34facb3fe6a68117303f373b099fa65c2b95";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/eu/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/eu/firefox-110.0.tar.bz2";
       locale = "eu";
       arch = "linux-i686";
-      sha256 = "0b89fb09487f3ecfeddd6cee16ba4547f0a80e4afd25028b08298507977e76e0";
+      sha256 = "44c0a2d50e10d826617399abf3d036619576b2f5fa3e97b5443c38736cdaabe9";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/fa/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/fa/firefox-110.0.tar.bz2";
       locale = "fa";
       arch = "linux-i686";
-      sha256 = "09d98823bb9d81314668c05ef061bb2c4f576476ed74ce58f268f02f3375f58c";
+      sha256 = "f3e2b415e88ecc7f1b39652ea08d217a6450dbb8c7991ac2fc21012c6bf485fe";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/ff/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/ff/firefox-110.0.tar.bz2";
       locale = "ff";
       arch = "linux-i686";
-      sha256 = "ef929810e9b4294e8aa7f3768adecdb79634edca060e028536e61cd4f90b2445";
+      sha256 = "fa72b60e44b74aef447c491bc3d5691293765d6d29f0226b8cc703ad683924cf";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/fi/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/fi/firefox-110.0.tar.bz2";
       locale = "fi";
       arch = "linux-i686";
-      sha256 = "fd6564352704bdba7f329a70c940514f3b060d3bab75ca7e5a6198858db8c79a";
+      sha256 = "be6cd6db910aed81fd5ee10f96ec9726b64dcc90301e747f2881acdf04693c21";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/fr/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/fr/firefox-110.0.tar.bz2";
       locale = "fr";
       arch = "linux-i686";
-      sha256 = "e1b30692bb0dd98adb3e3f057e988d88ef671bfe84316b7003e465a7d5dcb007";
+      sha256 = "813fafbe4ff568297f58a2a6f98274681c643953ecc27266bb91cd83435eacfa";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/fy-NL/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/fy-NL/firefox-110.0.tar.bz2";
       locale = "fy-NL";
       arch = "linux-i686";
-      sha256 = "16bc416044cc23ec59a08216f1c18f9d027e141a96f05782eb46d96d799c2b19";
+      sha256 = "ceed0527d8176a1e04622e7a0d342890591619bb0907eff75f9eae6f8ca912d3";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/ga-IE/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/ga-IE/firefox-110.0.tar.bz2";
       locale = "ga-IE";
       arch = "linux-i686";
-      sha256 = "64a13f28131b37f84f37b82a0d07371228a20b0f9c8a1e228c47a8d5dbf0e730";
+      sha256 = "26be4251150549246fe36db06dda749aa7f653086c8a3d789f296b638013b49b";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/gd/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/gd/firefox-110.0.tar.bz2";
       locale = "gd";
       arch = "linux-i686";
-      sha256 = "6fb5531c93043ea2c11b029d13e88fb8eb4f1c95263c1fc324a3d8b7f545262e";
+      sha256 = "abf2fe88921b3b84390e1cb85e0e7dbd0bcfe4f9c3fa20ebf4dac0a3b673caba";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/gl/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/gl/firefox-110.0.tar.bz2";
       locale = "gl";
       arch = "linux-i686";
-      sha256 = "15bb2baabedb79fd3bab8dce240ce2d0c88f6eb986ae467d1ee8e43ffd077195";
+      sha256 = "630ade818c30b683eb68a9da6b56b38f5463aa44ccb2cca0c2fd095a18e5ef32";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/gn/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/gn/firefox-110.0.tar.bz2";
       locale = "gn";
       arch = "linux-i686";
-      sha256 = "48d50a8cc2bc3608c447b7744093166d4c2f740e8c519d9b6f3931e1021875d5";
+      sha256 = "8765e1a9cb4d63d9488567e9b899576127e58635a2129f31511d00c776ac159e";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/gu-IN/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/gu-IN/firefox-110.0.tar.bz2";
       locale = "gu-IN";
       arch = "linux-i686";
-      sha256 = "e6e4f86dc0b65e3238f613c68432ba9b4768224bf834c471fb064213cdcffd9c";
+      sha256 = "29661684a641a49ad8eca9a2966cd8164ed81a13c17f8308f629730216a1a067";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/he/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/he/firefox-110.0.tar.bz2";
       locale = "he";
       arch = "linux-i686";
-      sha256 = "e45ddc3357d75000afbf65b850531e23ad5563234e457007cfd1992fa4efc114";
+      sha256 = "213c1c59fe3d12769e6cc059aae34e00f6427538e0995bba8bfae888ee18c967";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/hi-IN/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/hi-IN/firefox-110.0.tar.bz2";
       locale = "hi-IN";
       arch = "linux-i686";
-      sha256 = "2b37c00298ce599143e2639dbc245b5f558349438d7e1f282dfc299720842588";
+      sha256 = "bab8dd86b381dcedfa0d2cf63415c978b89f2575fb2714de8b99057f4b74b9d9";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/hr/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/hr/firefox-110.0.tar.bz2";
       locale = "hr";
       arch = "linux-i686";
-      sha256 = "456d75b5ce6fd21c0d5177904d82d960a7258039184bf7ba8e0c71a783d4b601";
+      sha256 = "ae3cd7d66386008e46c23d407e3bb4139161afb4bf7e502f75a13cb04a351ccd";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/hsb/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/hsb/firefox-110.0.tar.bz2";
       locale = "hsb";
       arch = "linux-i686";
-      sha256 = "c9e835676d1eab60932b2dac810c25fddb61aca134eeb1fb842fb7f3e1ebcf25";
+      sha256 = "6e5dd5938957ee83fbd44a2b2ef611a5fa721f310ae2ccee51ec2d58dff3c34d";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/hu/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/hu/firefox-110.0.tar.bz2";
       locale = "hu";
       arch = "linux-i686";
-      sha256 = "4706f3eaf40cf7eb4ecc6f6efcd64cd76cb1228bedd9286b4cc9235ebcec7ec6";
+      sha256 = "6e3eda91a7fdecbcd7b0f3e26a08e76363c874349995c4d345fbcdb2ef1137a3";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/hy-AM/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/hy-AM/firefox-110.0.tar.bz2";
       locale = "hy-AM";
       arch = "linux-i686";
-      sha256 = "bec66380c9ed8d132d84cd68c01989fcbd48afb881d8616017c603dcb7e176fd";
+      sha256 = "85ef0cda129576fc12ff3a8ca33fc7ff2094d17ca61598d867118c95149d7b60";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/ia/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/ia/firefox-110.0.tar.bz2";
       locale = "ia";
       arch = "linux-i686";
-      sha256 = "dac076b82ed64857f048383c427776354c75bbe14a8f2ba4aa62978546cd6901";
+      sha256 = "1a20c3717c92654cbcd7991f4406c731ccfaac0e65abfbe57fa45e71b5de32b0";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/id/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/id/firefox-110.0.tar.bz2";
       locale = "id";
       arch = "linux-i686";
-      sha256 = "c41633c777da109384ab97049b0058fc5783359ac414674eb929fd19bf2d625c";
+      sha256 = "fc12f3ebed4f5d94cd5477aea7c55d163ea3dbbadfb32882c2ac16e3e756b2bf";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/is/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/is/firefox-110.0.tar.bz2";
       locale = "is";
       arch = "linux-i686";
-      sha256 = "1c86162d0ed17742cb3c51c39cc6526ca4bac5f9dae9b3091d8fb4b9f62450fc";
+      sha256 = "3cbd23cdf2489e0675df0c01a35e989157a4643469c9807000a7ae8119f41d84";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/it/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/it/firefox-110.0.tar.bz2";
       locale = "it";
       arch = "linux-i686";
-      sha256 = "88619c601a1e5cd2a63adb00f3f1383b7dfb59bbad526209fdf563c1a7c74fe1";
+      sha256 = "9944036094f2fcfc6b48dee59c002df040e9d2a0dfe34287863ffc1e7cfee2c0";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/ja/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/ja/firefox-110.0.tar.bz2";
       locale = "ja";
       arch = "linux-i686";
-      sha256 = "3dab393bc047ec868e18ef3088787ff3fad07979ff629b5b673f0ffad4e84bf0";
+      sha256 = "37b65e4303424552276b17f132fba8856cab8c45a523946417a07585398266c5";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/ka/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/ka/firefox-110.0.tar.bz2";
       locale = "ka";
       arch = "linux-i686";
-      sha256 = "1f646449054056c528aa04722c0945b008c72471b2b6a7000afdb54e9e14a51d";
+      sha256 = "4c2124df9437ba640a31aee0aa24a7ce4e4e65b612784dfc38143ac017e391de";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/kab/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/kab/firefox-110.0.tar.bz2";
       locale = "kab";
       arch = "linux-i686";
-      sha256 = "2ee51ba2291b12549cab7fde5007205927465ee592ecd15158b5cd0c5c071391";
+      sha256 = "b6359d6ec95b88a9dfac977bce81dbc1ff2dcdb843ba668dd370169f73897d3c";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/kk/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/kk/firefox-110.0.tar.bz2";
       locale = "kk";
       arch = "linux-i686";
-      sha256 = "bc761d52486af47d637f2a982de38481db245f98d48fbd0c3710f7282e5eb0cc";
+      sha256 = "258253a0de7ec38faf51bc89d941b96e4cf0cfb7d68a57b02e0da95032868fe0";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/km/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/km/firefox-110.0.tar.bz2";
       locale = "km";
       arch = "linux-i686";
-      sha256 = "ff584ebbf260a5907d47533d03a844b11852e2a66e1873cbb9f97488dcf26805";
+      sha256 = "3ab3aaf86d3d6dda5b8ac5e9752a34505eb9952695c1725ba95f6653da9d0563";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/kn/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/kn/firefox-110.0.tar.bz2";
       locale = "kn";
       arch = "linux-i686";
-      sha256 = "205c2a232c468cd00096f9b3e0e37ee6cd6cab2a89c64fc5e7090892129a2ce1";
+      sha256 = "d0f13f2b126600635f2a5302bd4578db4d85cbfac4ff3d9321b2501d78525501";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/ko/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/ko/firefox-110.0.tar.bz2";
       locale = "ko";
       arch = "linux-i686";
-      sha256 = "b8d262276c6f67bde4bda7dde9f44fc9d663408df85b3be836da03b9c923a551";
+      sha256 = "d7954ae5ea973112f82a59b3d0f6c35a1438b015eaecbd1a42c74c9728449dfb";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/lij/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/lij/firefox-110.0.tar.bz2";
       locale = "lij";
       arch = "linux-i686";
-      sha256 = "fc8c42a338cf8074d77acaa967e5c470b813da87c9790eafe7aa36bda676cba8";
+      sha256 = "0d0dbdc0ddbfcd2ca27d14926c43418b0f6e6b2b5ecfbdeadcab583188fb9626";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/lt/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/lt/firefox-110.0.tar.bz2";
       locale = "lt";
       arch = "linux-i686";
-      sha256 = "2eaedf0027937f9f3de113d0f9a819a09d001c24458a4006c7d78f5581e151ce";
+      sha256 = "a7e90f262b1b5a4e73fcdc72d773d35d364f440ade826f6dff54f96a6fa0e5b3";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/lv/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/lv/firefox-110.0.tar.bz2";
       locale = "lv";
       arch = "linux-i686";
-      sha256 = "c2bfe7e376deac1df14f29a6c06c6ad80249f3b1d1e08855299ef96f3f8d9790";
+      sha256 = "31208554497ba51184aff83c3b269418673199641fcaec355e11c6f39ac77355";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/mk/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/mk/firefox-110.0.tar.bz2";
       locale = "mk";
       arch = "linux-i686";
-      sha256 = "fc681082b2c0d73e2fe8c8aebe648dca6c172c31bf0319d7fcd26af6cbb67467";
+      sha256 = "2f7ea63676a91811e56c8da29ce0db293b3d79a2cbe1cb1900f485cc952f78d7";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/mr/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/mr/firefox-110.0.tar.bz2";
       locale = "mr";
       arch = "linux-i686";
-      sha256 = "03703982fd431a087d1b2a4584862f9c45784d1809ea21121f495afea2b9951f";
+      sha256 = "d4c5b8e644e0d01806c33bef3f56bac5c7d9d7ca10fc89cdb7532d63cf09fb1d";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/ms/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/ms/firefox-110.0.tar.bz2";
       locale = "ms";
       arch = "linux-i686";
-      sha256 = "fb41c14f3f8f6050a874475a4619834e91a93e18694117d97164cf8d65929f2a";
+      sha256 = "e586b747712997f37e1084b1ab552455a7b7d8a5e236986ce497f076111864b9";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/my/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/my/firefox-110.0.tar.bz2";
       locale = "my";
       arch = "linux-i686";
-      sha256 = "d28d4ab28a45abf6e430ec2ed014e73606dbe4ea54318995565efe0722725188";
+      sha256 = "4492749d9845e7d64257958b3f7be90e21bfaafdf47de0bde3026ee1c1a4397b";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/nb-NO/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/nb-NO/firefox-110.0.tar.bz2";
       locale = "nb-NO";
       arch = "linux-i686";
-      sha256 = "d7cda4dca1b8ed107174b1ec8486f04741161c5e95eac55f291a0d6376c83bc7";
+      sha256 = "512de585211758713b9017d999f1bd389c7e8f64791cbbbb8b77b0dec708cc2e";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/ne-NP/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/ne-NP/firefox-110.0.tar.bz2";
       locale = "ne-NP";
       arch = "linux-i686";
-      sha256 = "5562fee4fea2956a346bcb23c2c2340cd16a816ef3f8a874d259e1f6a6f70ff6";
+      sha256 = "b1bbd534b48fcf82c68db58ac4d631206f9628b4885313eb2e41304f61133521";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/nl/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/nl/firefox-110.0.tar.bz2";
       locale = "nl";
       arch = "linux-i686";
-      sha256 = "2c9feee4d1c3079232768c9c8ca2e841e7c26685ad4b9dd609d3eabe478d8154";
+      sha256 = "890f5d8c186d70b7a74c706a22db62752d698eca7f8bb493b464a21878059685";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/nn-NO/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/nn-NO/firefox-110.0.tar.bz2";
       locale = "nn-NO";
       arch = "linux-i686";
-      sha256 = "9d48f0a887015ffd0c75db18e0e2e79aaad177cc114797758cec33f33f08861c";
+      sha256 = "4789bbc6d1f9d34e9f77f6f467012543b641c6551e3b905b67674888eb73f258";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/oc/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/oc/firefox-110.0.tar.bz2";
       locale = "oc";
       arch = "linux-i686";
-      sha256 = "59cea9cc6edd8d6e92741bf8201cd135d3218ba1020579f6a6325e2e1697fd92";
+      sha256 = "7a89251628584edded3b81577bac9de3784000bb2378fa9f33c86a5217472381";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/pa-IN/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/pa-IN/firefox-110.0.tar.bz2";
       locale = "pa-IN";
       arch = "linux-i686";
-      sha256 = "bfe9329826c927d22e3fab539e2564c72958c91330dfb036bcaa6784e2882864";
+      sha256 = "5c45e48fef737bd3d440bbd9473f663e86bc48fdf7e8f9e20f7b957e0effc03c";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/pl/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/pl/firefox-110.0.tar.bz2";
       locale = "pl";
       arch = "linux-i686";
-      sha256 = "da8f8f87f49efcd6512b28a5dcefd0e7910e704ebb79b7c88810933e135239b1";
+      sha256 = "18328281d621f732e523e6b6b1c031c8f5cdcf2e5014410609a36a4ea2e816ea";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/pt-BR/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/pt-BR/firefox-110.0.tar.bz2";
       locale = "pt-BR";
       arch = "linux-i686";
-      sha256 = "221ba38616c0a5e10d91a39e58f194aef13b5bc3afdd07e3261dc3dae168b77c";
+      sha256 = "5c2b4415d07437df8c56bb21f745b07e9881bd735bf03eebf9f3d59b69451e41";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/pt-PT/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/pt-PT/firefox-110.0.tar.bz2";
       locale = "pt-PT";
       arch = "linux-i686";
-      sha256 = "0fa1e27f38f32d2ce835924b9b6e2987ea506bc440c7ed5268c5010b34882d99";
+      sha256 = "97c06bcc8d88e455a050944ee4da28e43c1462679819cfec8c6301e89b92d420";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/rm/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/rm/firefox-110.0.tar.bz2";
       locale = "rm";
       arch = "linux-i686";
-      sha256 = "83f4a241f541b08f1340cf474128546a4a0f3962c419f227f060b30e8ec70315";
+      sha256 = "986dabad36bc830580605acf550c5d80671307a55507edf570105d6a98a9b73b";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/ro/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/ro/firefox-110.0.tar.bz2";
       locale = "ro";
       arch = "linux-i686";
-      sha256 = "8922ab444d2f439dc96c1cff06142171922dec180ba81aa3d286afb53c635953";
+      sha256 = "e904d820874191c2f4bbcacdaba2db0265e56a7dc94c719956e916d6af109727";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/ru/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/ru/firefox-110.0.tar.bz2";
       locale = "ru";
       arch = "linux-i686";
-      sha256 = "22be977b6c5e9f0ca73292fd36183412b2a98bbe44f7e5edeb9be5bf85951631";
+      sha256 = "5a33442f83896abe9bfe09294fb4d649a50dd63f8504875ad1687efe2e45fa90";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/sco/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/sco/firefox-110.0.tar.bz2";
       locale = "sco";
       arch = "linux-i686";
-      sha256 = "91274de4fa273cc4ec05ae8b40be5367ed280d8e64b1cd68db604ec13360ad2a";
+      sha256 = "ac0c1b81bc2f9943b18acc858a7d9130fa85894c3f4501c49261896da172bbaa";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/si/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/si/firefox-110.0.tar.bz2";
       locale = "si";
       arch = "linux-i686";
-      sha256 = "489d874123773bf5f3e94746e4c7242d73742dafded32a07c20bb91c7e544328";
+      sha256 = "ffbb6c83e6c954a210326346b5149fd9ea119e61039c6ba723c1875e57126e21";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/sk/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/sk/firefox-110.0.tar.bz2";
       locale = "sk";
       arch = "linux-i686";
-      sha256 = "66f1e39014a6c246572daa6f0c6a3230862e7274b5a32213c7397643caec8130";
+      sha256 = "e4ce32c3d815a986c3e9f2c6884bc921939cd1aeacc618e4c2fb8a6d056b99fc";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/sl/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/sl/firefox-110.0.tar.bz2";
       locale = "sl";
       arch = "linux-i686";
-      sha256 = "ad7bdce055f140497dc79bc67107d5e6f99dd292f09446304dd49d0dbb039d03";
+      sha256 = "3c368ef7fe1098ab0b92061018bc126a0ca729efcf8036ddcdf9f4f8f2ef9107";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/son/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/son/firefox-110.0.tar.bz2";
       locale = "son";
       arch = "linux-i686";
-      sha256 = "db3da11990c0f401a72122c162cbe371c65d9b07a42e781251f082dc2b99b0d0";
+      sha256 = "155991f47cf0cfee2845450c39d2904ab457e57f764dc72af1f7d719d8ab7321";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/sq/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/sq/firefox-110.0.tar.bz2";
       locale = "sq";
       arch = "linux-i686";
-      sha256 = "55b73a202acbb180073e8cb583100391e63d4d41516f1f241547dd72c9d64ca4";
+      sha256 = "34695ecb1e007a3b35c147b2b69d804a2475f9a57ee897dc5707a17990113b81";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/sr/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/sr/firefox-110.0.tar.bz2";
       locale = "sr";
       arch = "linux-i686";
-      sha256 = "d79e42379228bd7d8c67bfbb475e0865aede6e8cd3a5c630f961507c3ec9162a";
+      sha256 = "a40a83bca5981c89bddc9e8643dd200578cd9369bc840fd043b63b59cb0b53d5";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/sv-SE/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/sv-SE/firefox-110.0.tar.bz2";
       locale = "sv-SE";
       arch = "linux-i686";
-      sha256 = "83af8bc35f47c7f51872d6a50f1df6cc329418ebf4c756cf894afbe544ce2018";
+      sha256 = "df03c928121add9d788b981b47a48a4dfe4c81ac24d5eb5d8b79d30fd6e588a1";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/szl/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/szl/firefox-110.0.tar.bz2";
       locale = "szl";
       arch = "linux-i686";
-      sha256 = "09bc6aa2ec127f5ac9c04cf83b2e760b17439c8ffd3d2b904149b759e8a1c5f0";
+      sha256 = "c26f1897068d86b3e43a74000830c23286a4242c33514aa76140e6da45a1eedb";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/ta/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/ta/firefox-110.0.tar.bz2";
       locale = "ta";
       arch = "linux-i686";
-      sha256 = "f1aec8972ce8baf6e0b6c88bac92651a266bcb2e2bb5b57dbf91ef88c0999681";
+      sha256 = "1cab202847e085f7b417e3a799fcfb1503d5bf58013c7ac775f919c4cfb65f4b";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/te/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/te/firefox-110.0.tar.bz2";
       locale = "te";
       arch = "linux-i686";
-      sha256 = "23cca1765464d740d409e8fbad0909b969db9028581ca8c079be7df671e25216";
+      sha256 = "e9bfefccb6684c96ec1e30eaf5975995cd41be87b90d36de1e8c03ccecd161d5";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/th/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/th/firefox-110.0.tar.bz2";
       locale = "th";
       arch = "linux-i686";
-      sha256 = "01826ca896e4e8ab9aae14c9b68532339a10c908d469e66be9dfb44f850c4ae9";
+      sha256 = "88bfa631eccc7ddcb5de325fe581c0d6757e7e11022d525c1c7641064113c0de";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/tl/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/tl/firefox-110.0.tar.bz2";
       locale = "tl";
       arch = "linux-i686";
-      sha256 = "aa52050e375977f6dc3c09fd91afc5f2383015990cc5c2d2891fd354b2e214c5";
+      sha256 = "18dc381b87a5a9bacbb81fe9ada9d9a73eaed5831b651dd55744ba8414f6fe8d";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/tr/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/tr/firefox-110.0.tar.bz2";
       locale = "tr";
       arch = "linux-i686";
-      sha256 = "96362f9c7f919676e715ba7d4a20266e4e534c75bf5b4dec87ef49585a3e5e46";
+      sha256 = "44945fc8f6991017765c5646f572fb7df9ec36b54eab6515e04b835b25ed81eb";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/trs/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/trs/firefox-110.0.tar.bz2";
       locale = "trs";
       arch = "linux-i686";
-      sha256 = "00ede759629983fc674a728a3f8c39b7b42bf132398b9077b623282809321f6c";
+      sha256 = "20ba4a1b995d16e14f86f8c8a6c35c50b1634167872e3f2d742c0f950943da72";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/uk/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/uk/firefox-110.0.tar.bz2";
       locale = "uk";
       arch = "linux-i686";
-      sha256 = "054de96778b01b75459f1e391326dadbab5eabbc1ee2f0a464bb27b34ce15619";
+      sha256 = "933bc001d37e9487a78e11d8eeaa778adc14848083759ce332a21928cf28e034";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/ur/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/ur/firefox-110.0.tar.bz2";
       locale = "ur";
       arch = "linux-i686";
-      sha256 = "eb9d0ace110b7b5f0ba6ecf0e3d2acf90ccc0c5c8af88625f9ecf0aa4e010ffd";
+      sha256 = "3ada62bc4d49378d5d987cfabfdb6c43ed7e7a1f507f2f99ada27a1585479486";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/uz/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/uz/firefox-110.0.tar.bz2";
       locale = "uz";
       arch = "linux-i686";
-      sha256 = "d8a3429895051133ed8b93e7af9294340ca23b3570729fda4dc8127715898407";
+      sha256 = "fcc2c6a1fccd58cf2a0e4492578f46fc98f57d187816e3c33c4575555b83923a";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/vi/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/vi/firefox-110.0.tar.bz2";
       locale = "vi";
       arch = "linux-i686";
-      sha256 = "a1180810cd4cbd14a2de895735505c8d7f98fb167bc874816eaf0817bbc98388";
+      sha256 = "38fd1714da803f7e771937381e0b91ca0bac263a22f9ec5d5680425833493f7d";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/xh/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/xh/firefox-110.0.tar.bz2";
       locale = "xh";
       arch = "linux-i686";
-      sha256 = "c9cc91a22984dab35e254e5b2d299df311be6a55cd4f27cd49e68f668bf673d9";
+      sha256 = "db3ab9606ae8d4bdd8ad741d42676f6aecc5d299c89ff4386543dcaa67e98822";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/zh-CN/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/zh-CN/firefox-110.0.tar.bz2";
       locale = "zh-CN";
       arch = "linux-i686";
-      sha256 = "ffdd75e46d51f3287aee918e06c5ea389ae9e5fa8b642abf66c5041f0d3b2c5f";
+      sha256 = "c443537f9d38ccdcc4d9b6ebfea0517aa7950b730a7ad069208baea5f6793e2d";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/109.0.1/linux-i686/zh-TW/firefox-109.0.1.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/110.0/linux-i686/zh-TW/firefox-110.0.tar.bz2";
       locale = "zh-TW";
       arch = "linux-i686";
-      sha256 = "fc8848b76084c6df1c4e4932ec8f4f0d14d2bb565bb87dc30b3b759fe90d0924";
+      sha256 = "d71958a211006cf884e69f012ad7628919b23a706f747caaaa86ae6eec13f9ba";
     }
     ];
 }

From 9016c8a006d6e339650739be659473103cba1d21 Mon Sep 17 00:00:00 2001
From: Martin Weinelt <hexa@darmstadt.ccc.de>
Date: Tue, 14 Feb 2023 19:11:13 +0100
Subject: [PATCH 38/46] firefox-esr-unwrapped: 102.7.0esr -> 102.8.0esr

https://www.mozilla.org/en-US/firefox/102.7.0/releasenotes/
https://www.mozilla.org/en-US/security/advisories/mfsa2023-02/

Fixes: CVE-2022-46871, CVE-2023-23598, CVE-2023-23601, CVE-2023-23602,
       CVE-2022-46877, CVE-2023-23603
---
 pkgs/applications/networking/browsers/firefox/packages.nix | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/pkgs/applications/networking/browsers/firefox/packages.nix b/pkgs/applications/networking/browsers/firefox/packages.nix
index 9b2ec1807e65..97087ef1da30 100644
--- a/pkgs/applications/networking/browsers/firefox/packages.nix
+++ b/pkgs/applications/networking/browsers/firefox/packages.nix
@@ -29,11 +29,11 @@ rec {
 
   firefox-esr-102 = buildMozillaMach rec {
     pname = "firefox-esr-102";
-    version = "102.7.0esr";
+    version = "102.8.0esr";
     applicationName = "Mozilla Firefox ESR";
     src = fetchurl {
       url = "mirror://mozilla/firefox/releases/${version}/source/firefox-${version}.source.tar.xz";
-      sha512 = "2a9d212b5d15e1bf7a6156495126cbc9161d2057aeedea8f7a5a0670a19a9b00cf35044075935c8f3c788118856ba2cc00f9b297c5ac713f094857683f7cd13b";
+      sha512 = "93ea87997b66088b94c6e943b6e99e9a71d1908444d096c0f65b6876d2c584e55ff6120266f3851f986b664bd1f12fa31206b03479c2b751e7c3ca097ac14275";
     };
 
     meta = {

From 47ccc24b0afa63f555279feb3e57d3e6538301c1 Mon Sep 17 00:00:00 2001
From: Wout Mertens <Wout.Mertens@gmail.com>
Date: Tue, 14 Feb 2023 14:53:04 +0100
Subject: [PATCH 39/46] netdata: 1.37.1 -> 1.38.1

---
 pkgs/tools/system/netdata/default.nix                |  5 +++--
 .../system/netdata/no-files-in-etc-and-var.patch     | 12 ++----------
 .../system/netdata/skip-CONFIGURE_COMMAND.patch      |  2 +-
 3 files changed, 6 insertions(+), 13 deletions(-)

diff --git a/pkgs/tools/system/netdata/default.nix b/pkgs/tools/system/netdata/default.nix
index a84113fe20ba..5f24ddf62609 100644
--- a/pkgs/tools/system/netdata/default.nix
+++ b/pkgs/tools/system/netdata/default.nix
@@ -17,14 +17,15 @@
 let
   go-d-plugin = callPackage ./go.d.plugin.nix {};
 in stdenv.mkDerivation rec {
-  version = "1.37.1";
+  # Don't forget to update go.d.plugin.nix as well
+  version = "1.38.1";
   pname = "netdata";
 
   src = fetchFromGitHub {
     owner = "netdata";
     repo = "netdata";
     rev = "v${version}";
-    sha256 = "sha256-SsrdjFENPkI7Ed1gKt28sygJ5NgZ5un+5baIQ3Kv7yE=";
+    sha256 = "sha256-y+rjqS95JS1PU+iR8c7spcg1UoYCjpzbpunTAgTJ35U=";
     fetchSubmodules = true;
   };
 
diff --git a/pkgs/tools/system/netdata/no-files-in-etc-and-var.patch b/pkgs/tools/system/netdata/no-files-in-etc-and-var.patch
index 0daaf6ee7ed3..44d0063414e2 100644
--- a/pkgs/tools/system/netdata/no-files-in-etc-and-var.patch
+++ b/pkgs/tools/system/netdata/no-files-in-etc-and-var.patch
@@ -2,7 +2,7 @@ diff --git a/collectors/Makefile.am b/collectors/Makefile.am
 index a0a972e8f..b4a2a5f53 100644
 --- a/collectors/Makefile.am
 +++ b/collectors/Makefile.am
-@@ -32,7 +32,7 @@ usercustompluginsconfigdir=$(configdir)/custom-plugins.d
+@@ -30,7 +30,7 @@ usercustompluginsconfigdir=$(configdir)/custom-plugins.d
  usergoconfigdir=$(configdir)/go.d
  
  # Explicitly install directories to avoid permission issues due to umask
@@ -78,15 +78,7 @@ diff --git a/system/Makefile.am b/system/Makefile.am
 index a88ccab65..bda6ee2b6 100644
 --- a/system/Makefile.am
 +++ b/system/Makefile.am
-@@ -3,7 +3,6 @@
- 
- MAINTAINERCLEANFILES = $(srcdir)/Makefile.in
- CLEANFILES = \
--    edit-config \
-     netdata-openrc \
-     netdata.logrotate \
-     netdata.service \
-@@ -20,15 +19,13 @@ include $(top_srcdir)/build/subst.inc
+@@ -19,15 +19,13 @@ include $(top_srcdir)/build/subst.inc
  SUFFIXES = .in
  
  dist_config_SCRIPTS = \
diff --git a/pkgs/tools/system/netdata/skip-CONFIGURE_COMMAND.patch b/pkgs/tools/system/netdata/skip-CONFIGURE_COMMAND.patch
index fa7a0e7ad9c2..a03593896d96 100644
--- a/pkgs/tools/system/netdata/skip-CONFIGURE_COMMAND.patch
+++ b/pkgs/tools/system/netdata/skip-CONFIGURE_COMMAND.patch
@@ -3,7 +3,7 @@ Shrink closure size by avoiding paths embedded from configure call.
 https://github.com/NixOS/nixpkgs/issues/175693
 --- a/daemon/buildinfo.c
 +++ b/daemon/buildinfo.c
-@@ -248,7 +248,9 @@ void print_build_info(void) {
+@@ -247,7 +247,9 @@ void print_build_info(void) {
      char *prebuilt_distro = NULL;
      get_install_type(&install_type, &prebuilt_arch, &prebuilt_distro);
  

From 10d31fb80611a59a342c6cf51ca81584338a6326 Mon Sep 17 00:00:00 2001
From: figsoda <figsoda@pm.me>
Date: Tue, 14 Feb 2023 12:51:12 -0500
Subject: [PATCH 40/46] cargo-dist: init at 0.0.2

---
 .../tools/rust/cargo-dist/default.nix         | 36 +++++++++++++++++++
 pkgs/top-level/all-packages.nix               |  1 +
 2 files changed, 37 insertions(+)
 create mode 100644 pkgs/development/tools/rust/cargo-dist/default.nix

diff --git a/pkgs/development/tools/rust/cargo-dist/default.nix b/pkgs/development/tools/rust/cargo-dist/default.nix
new file mode 100644
index 000000000000..30a73522c185
--- /dev/null
+++ b/pkgs/development/tools/rust/cargo-dist/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, rustPlatform
+, fetchFromGitHub
+, pkg-config
+, bzip2
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "cargo-dist";
+  version = "0.0.2";
+
+  src = fetchFromGitHub {
+    owner = "axodotdev";
+    repo = "cargo-dist";
+    rev = "v${version}";
+    hash = "sha256-7/TUk9LGwmHhKwFtwFQM7C/1ItRsoJ4IodeUPWfGjkc=";
+  };
+
+  cargoHash = "sha256-vmHPjecd1u0f8wSTu+LE2BNiZlskDADLXNjIj2v7D5E=";
+
+  nativeBuildInputs = [
+    pkg-config
+  ];
+
+  buildInputs = [
+    bzip2
+  ];
+
+  meta = with lib; {
+    description = "A tool for building final distributable artifacts and uploading them to an archive";
+    homepage = "https://github.com/axodotdev/cargo-dist";
+    changelog = "https://github.com/axodotdev/cargo-dist/blob/${src.rev}/RELEASES.md";
+    license = with licenses; [ asl20 mit ];
+    maintainers = with maintainers; [ figsoda ];
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 10ed994e14e2..b3da4f76bc0d 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -15788,6 +15788,7 @@ with pkgs;
     openssl = openssl_1_1;
   };
   cargo-diet = callPackage ../development/tools/rust/cargo-diet { };
+  cargo-dist = callPackage ../development/tools/rust/cargo-dist { };
   cargo-embed = callPackage ../development/tools/rust/cargo-embed {
     inherit (darwin.apple_sdk.frameworks) AppKit;
     inherit (darwin) DarwinTools;

From 7ccf83c6472bc0f1ac8c6d84acc1e7c928b3d6c6 Mon Sep 17 00:00:00 2001
From: Mikael Voss <mvs@nyantec.com>
Date: Sun, 12 Feb 2023 22:49:57 +0100
Subject: [PATCH 41/46] akkoma: 3.5.0 -> 3.6.0

---
 pkgs/servers/akkoma/default.nix |  51 ++------
 pkgs/servers/akkoma/mix.nix     | 214 ++++++++++++++++++++++----------
 2 files changed, 155 insertions(+), 110 deletions(-)

diff --git a/pkgs/servers/akkoma/default.nix b/pkgs/servers/akkoma/default.nix
index 5df95623dad4..2b2e73e31c26 100644
--- a/pkgs/servers/akkoma/default.nix
+++ b/pkgs/servers/akkoma/default.nix
@@ -9,14 +9,14 @@
 
 beamPackages.mixRelease rec {
   pname = "pleroma";
-  version = "3.5.0";
+  version = "3.6.0";
 
   src = fetchFromGitea {
     domain = "akkoma.dev";
     owner = "AkkomaGang";
     repo = "akkoma";
     rev = "v${version}";
-    hash = "sha256-Apt+6nI4zOCyRb5msPt5UF9vyaendyaOjrYBMl0DqRY=";
+    hash = "sha256-Ovi2AnfkeCDlv3INomPxu8R1ARexOzZHC8dOLucrDaQ=";
   };
 
   postPatch = ''
@@ -52,24 +52,16 @@ beamPackages.mixRelease rec {
           sha256 = "0qbf86l59kmpf1nd82v4141ba9ba75xwmnqzpgbm23fa1hh8pi9c";
         };
       };
-      crypt = beamPackages.buildRebar3 rec {
-        name = "crypt";
-        version = "0.4.3";
+      credo = beamPackages.buildMix rec {
+        name = "credo";
+        version = "1.7.0-dev";
 
         src = fetchFromGitHub {
-          owner = "msantos";
-          repo = "crypt";
-          rev = "f75cd55325e33cbea198fb41fe41871392f8fb76";
-          sha256 = "sha256-ZYhZTe7cTITkl8DZ4z2IOlxTX5gnbJImu/lVJ2ZjR1o=";
+          owner = "rrrene";
+          repo = "credo";
+          rev = "1c1b99ea41a457761383d81aaf6a606913996fe7";
+          hash = "sha256-NdOg6p2J1D8VGGWabAMLs/qRVbi4BzN2DTHci++dJnA=";
         };
-
-        buildInputs = [ libxcrypt ];
-
-        postInstall = ''
-          mv $out/lib/erlang/lib/crypt-${version}/priv/{source,crypt}.so
-        '';
-
-        beamDeps = with final; [ elixir_make ];
       };
       elasticsearch = beamPackages.buildMix rec {
         name = "elasticsearch";
@@ -83,17 +75,6 @@ beamPackages.mixRelease rec {
           hash = "sha256-CtmQHVl+VTpemne+nxbkYGcErrgCo+t3ZBPbkFSpyF0=";
         };
       };
-      gettext = beamPackages.buildMix {
-        name = "gettext";
-        version = "0.19.1";
-
-        src = fetchFromGitHub {
-          owner = "tusooa";
-          repo = "gettext";
-          rev = "72fb2496b6c5280ed911bdc3756890e7f38a4808";
-          hash = "sha256-V0qmE+LcAbVoWsJmWE4fwrduYFIZ5BzK/sGzgLY3eH0=";
-        };
-      };
       linkify = beamPackages.buildMix rec {
         name = "linkify";
         version = "0.5.2";
@@ -120,20 +101,6 @@ beamPackages.mixRelease rec {
 
         beamDeps = with final; [ phoenix_view temple ];
       };
-      remote_ip = beamPackages.buildMix rec {
-        name = "remote_ip";
-        version = "0.1.5";
-
-        src = fetchFromGitLab {
-          domain = "git.pleroma.social";
-          group = "pleroma";
-          owner = "elixir-libraries";
-          repo = "remote_ip";
-          rev = "b647d0deecaa3acb140854fe4bda5b7e1dc6d1c8";
-          sha256 = "0c7vmakcxlcs3j040018i7bfd6z0yq6fjfig02g5fgakx398s0x6";
-        };
-        beamDeps = with final; [ combine plug inet_cidr ];
-      };
       search_parser = beamPackages.buildMix rec {
         name = "search_parser";
         version = "0.1.0";
diff --git a/pkgs/servers/akkoma/mix.nix b/pkgs/servers/akkoma/mix.nix
index f26d96c0f216..27d88ec7b9e6 100644
--- a/pkgs/servers/akkoma/mix.nix
+++ b/pkgs/servers/akkoma/mix.nix
@@ -8,6 +8,19 @@ let
   self = packages // (overrides self packages);
 
   packages = with beamPackages; with self; {
+    argon2_elixir = buildMix rec {
+      name = "argon2_elixir";
+      version = "3.0.0";
+
+      src = fetchHex {
+        pkg = "${name}";
+        version = "${version}";
+        sha256 = "0mywrvzzm76glvajzxrdg6ka49xby30fpk9zl4dxamzm18kknxcb";
+      };
+
+      beamDeps = [ comeonin elixir_make ];
+    };
+
     base62 = buildMix rec {
       name = "base62";
       version = "1.2.2";
@@ -75,12 +88,12 @@ let
 
     cachex = buildMix rec {
       name = "cachex";
-      version = "3.4.0";
+      version = "3.5.0";
 
       src = fetchHex {
         pkg = "${name}";
         version = "${version}";
-        sha256 = "1rfbbij81zmk6p75z33wg04mfcjqsxzzh67vclllvfjgmfqj609p";
+        sha256 = "0jdh08np2d85h57s6718jb5xzjkc882g9knd12xgzn8d43xfphps";
       };
 
       beamDeps = [ eternal jumper sleeplocks unsafe ];
@@ -101,12 +114,12 @@ let
 
     castore = buildMix rec {
       name = "castore";
-      version = "0.1.19";
+      version = "0.1.20";
 
       src = fetchHex {
         pkg = "${name}";
         version = "${version}";
-        sha256 = "0291pdk3x7qzbv8laris1y90vi7g9akmykd23m2fz0nwlmhh2vp9";
+        sha256 = "12n9bb4v9b9sx9xk11k98s4f4a532dmmn0x4ak28dj990mjvf850";
       };
 
       beamDeps = [];
@@ -229,19 +242,6 @@ let
       beamDeps = [];
     };
 
-    credo = buildMix rec {
-      name = "credo";
-      version = "1.6.7";
-
-      src = fetchHex {
-        pkg = "${name}";
-        version = "${version}";
-        sha256 = "1lvxzksdrc2lbl0rzrww4q5rmayf37q0phcpz2kyvxq7n2zi1qa1";
-      };
-
-      beamDeps = [ bunt file_system jason ];
-    };
-
     custom_base = buildMix rec {
       name = "custom_base";
       version = "0.2.1";
@@ -294,14 +294,27 @@ let
       beamDeps = [];
     };
 
-    earmark = buildMix rec {
-      name = "earmark";
-      version = "1.4.33";
+    dialyxir = buildMix rec {
+      name = "dialyxir";
+      version = "1.2.0";
 
       src = fetchHex {
         pkg = "${name}";
         version = "${version}";
-        sha256 = "01mfb0c1vq72pira1622cmvaly2p6n4dxwmsrw10i9x0srii7cr1";
+        sha256 = "0qw4zyd86fjwsav744jvz1wpdbmy9nz645xqr9s1d1bs88v221v1";
+      };
+
+      beamDeps = [ erlex ];
+    };
+
+    earmark = buildMix rec {
+      name = "earmark";
+      version = "1.4.34";
+
+      src = fetchHex {
+        pkg = "${name}";
+        version = "${version}";
+        sha256 = "012mwv4ixll3gmav9v0wzlin2948ghb2imnp20xi6nyqvbrhdcch";
       };
 
       beamDeps = [ earmark_parser ];
@@ -335,12 +348,12 @@ let
 
     ecto = buildMix rec {
       name = "ecto";
-      version = "3.9.2";
+      version = "3.9.4";
 
       src = fetchHex {
         pkg = "${name}";
         version = "${version}";
-        sha256 = "05cxg8rq6rawmn8ryfks5hj7h9b4k9bxxsn7k8l5b7p0fx8nsii1";
+        sha256 = "0xgfz1pzylj22k0qa8zh4idvd4139b1lwnmq33na8fia2j69hpyy";
       };
 
       beamDeps = [ decimal jason telemetry ];
@@ -374,12 +387,12 @@ let
 
     ecto_sql = buildMix rec {
       name = "ecto_sql";
-      version = "3.9.1";
+      version = "3.9.2";
 
       src = fetchHex {
         pkg = "${name}";
         version = "${version}";
-        sha256 = "060iqmkqnsyy2kv05s218ady9lgnz7rvgknwz6xjks7jzyj71m2z";
+        sha256 = "0w1zplm8ndf10dwxffg60iwzvbz3hyyiy761x91cvnwg6nsfxd8y";
       };
 
       beamDeps = [ db_connection ecto postgrex telemetry ];
@@ -398,6 +411,19 @@ let
       beamDeps = [];
     };
 
+    erlex = buildMix rec {
+      name = "erlex";
+      version = "0.2.6";
+
+      src = fetchHex {
+        pkg = "${name}";
+        version = "${version}";
+        sha256 = "0x8c1j62y748ldvlh46sxzv5514rpzm809vxn594vd7y25by5lif";
+      };
+
+      beamDeps = [];
+    };
+
     eternal = buildMix rec {
       name = "eternal";
       version = "1.2.2";
@@ -426,12 +452,12 @@ let
 
     ex_aws_s3 = buildMix rec {
       name = "ex_aws_s3";
-      version = "2.3.3";
+      version = "2.4.0";
 
       src = fetchHex {
         pkg = "${name}";
         version = "${version}";
-        sha256 = "017iswr9m2kwri2m5j3r9m0b7hk4vqqddbqy09k5d4nfz6vg0i00";
+        sha256 = "1fsngrldq2g3i2f7y5m4d85sd7hx4jiwnfcxhs14bnalfziadpc5";
       };
 
       beamDeps = [ ex_aws sweet_xml ];
@@ -491,12 +517,12 @@ let
 
     excoveralls = buildMix rec {
       name = "excoveralls";
-      version = "0.12.3";
+      version = "0.15.1";
 
       src = fetchHex {
         pkg = "${name}";
         version = "${version}";
-        sha256 = "1nnsr9dv7mybcxx3y5p2gqzyy3p479w21c55vvsq6hi6dihkx2jn";
+        sha256 = "1rq7vqvzw7sa2r7n59bhbxbhcnjr6z44dkvq45mdb0h01kcnnhgq";
       };
 
       beamDeps = [ hackney jason ];
@@ -543,12 +569,12 @@ let
 
     finch = buildMix rec {
       name = "finch";
-      version = "0.13.0";
+      version = "0.14.0";
 
       src = fetchHex {
         pkg = "${name}";
         version = "${version}";
-        sha256 = "1k56zfbadpppn8flavb4aczq0npcqnlhg993l51c1k8dw76pv5a9";
+        sha256 = "1pd805jyd4qbpb2md3kw443325yqynpkpyr2iixb9zf432psqnal";
       };
 
       beamDeps = [ castore mime mint nimble_options nimble_pool telemetry ];
@@ -593,17 +619,17 @@ let
       beamDeps = [];
     };
 
-    gun = buildRebar3 rec {
-      name = "gun";
-      version = "2.0.0-rc.2";
+    gettext = buildMix rec {
+      name = "gettext";
+      version = "0.20.0";
 
       src = fetchHex {
         pkg = "${name}";
         version = "${version}";
-        sha256 = "1z2lsbbpl2925z8x2ri0rhp30ccn9d08pgqd2hkxf4342jp1x7bb";
+        sha256 = "0ggb458h60ch3inndqp9xhbailhb0jkq3xnp85sa94sy8dvv20qw";
       };
 
-      beamDeps = [ cowlib ];
+      beamDeps = [];
     };
 
     hackney = buildRebar3 rec {
@@ -725,12 +751,12 @@ let
 
     jose = buildMix rec {
       name = "jose";
-      version = "1.11.2";
+      version = "1.11.5";
 
       src = fetchHex {
         pkg = "${name}";
         version = "${version}";
-        sha256 = "1lj715gzl022yc47qsg9712x8nc9wi7x70msv8c3lpym92y3y54q";
+        sha256 = "115k981kfg9jmafgs16rybc5qah6p0zgvni3bdyfl0pyp8av5lyw";
       };
 
       beamDeps = [];
@@ -749,6 +775,19 @@ let
       beamDeps = [];
     };
 
+    mail = buildMix rec {
+      name = "mail";
+      version = "0.2.3";
+
+      src = fetchHex {
+        pkg = "${name}";
+        version = "${version}";
+        sha256 = "1xbbdkyar8h0pdihfnsd84j1w3vfh9sk3xkz1llxz7y6m67kjawk";
+      };
+
+      beamDeps = [];
+    };
+
     majic = buildMix rec {
       name = "majic";
       version = "1.0.0";
@@ -907,12 +946,12 @@ let
 
     nimble_options = buildMix rec {
       name = "nimble_options";
-      version = "0.4.0";
+      version = "0.5.2";
 
       src = fetchHex {
         pkg = "${name}";
         version = "${version}";
-        sha256 = "0bd0pi3sij9vxhiilv25x6n3jls75g3b38rljvm1x896ycd1qw76";
+        sha256 = "1q6wa2ljprybfb9w2zg0gbppiwsnimgw5kcvakdp3z8mp42gk9sd";
       };
 
       beamDeps = [];
@@ -959,12 +998,12 @@ let
 
     open_api_spex = buildMix rec {
       name = "open_api_spex";
-      version = "3.10.0";
+      version = "3.16.0";
 
       src = fetchHex {
         pkg = "${name}";
         version = "${version}";
-        sha256 = "0rc7q857b8zb9vc4c699arjihca353rzm3bfjc31z0ib7pg2pfrd";
+        sha256 = "0a91jzgq6qp6ba5kxcz8fli2d1l49d8pz8dxikyfhwwbci5f42xv";
       };
 
       beamDeps = [ jason plug poison ];
@@ -1024,12 +1063,12 @@ let
 
     phoenix_live_dashboard = buildMix rec {
       name = "phoenix_live_dashboard";
-      version = "0.6.5";
+      version = "0.7.2";
 
       src = fetchHex {
         pkg = "${name}";
         version = "${version}";
-        sha256 = "0lmq1m7k465i9mzw35l7bx69n85mibwzd76976840r43sw6sakzg";
+        sha256 = "1dq5vj1a6fzclr3fwj7y8rg2xq3yigvgqc3aaq664fvs7h3dypqf";
       };
 
       beamDeps = [ ecto ecto_psql_extras mime phoenix_live_view telemetry_metrics ];
@@ -1037,15 +1076,15 @@ let
 
     phoenix_live_view = buildMix rec {
       name = "phoenix_live_view";
-      version = "0.17.12";
+      version = "0.18.6";
 
       src = fetchHex {
         pkg = "${name}";
         version = "${version}";
-        sha256 = "1j4r1pjl60hphan7mf0fn60cnqkdc7hah9zmf4sz8vy1mbhdavdg";
+        sha256 = "0wvbpi16bfn4hxyqs7907aln5di30v3hskzw2ggp1hy38kxnh9yf";
       };
 
-      beamDeps = [ jason phoenix phoenix_html telemetry ];
+      beamDeps = [ jason phoenix phoenix_html phoenix_template phoenix_view telemetry ];
     };
 
     phoenix_pubsub = buildMix rec {
@@ -1102,12 +1141,12 @@ let
 
     plug = buildMix rec {
       name = "plug";
-      version = "1.10.4";
+      version = "1.14.0";
 
       src = fetchHex {
         pkg = "${name}";
         version = "${version}";
-        sha256 = "1874ixvvjklg0hnxr6d990qzarvvfxhd4s35c5bfqbixwwzj67md";
+        sha256 = "056wkb1b17mh5h9ncs2vbswvpjsm2iqc580nmyrvgznlqwr080mz";
       };
 
       beamDeps = [ mime plug_crypto telemetry ];
@@ -1204,19 +1243,6 @@ let
       beamDeps = [];
     };
 
-    quack = buildMix rec {
-      name = "quack";
-      version = "0.1.1";
-
-      src = fetchHex {
-        pkg = "${name}";
-        version = "${version}";
-        sha256 = "0hr5ppds4a9vih14hzs3lfj07r5069w8ifr7022fn4j18jkvydnp";
-      };
-
-      beamDeps = [ poison tesla ];
-    };
-
     ranch = buildRebar3 rec {
       name = "ranch";
       version = "1.8.0";
@@ -1232,17 +1258,30 @@ let
 
     recon = buildMix rec {
       name = "recon";
-      version = "2.5.2";
+      version = "2.5.3";
 
       src = fetchHex {
         pkg = "${name}";
         version = "${version}";
-        sha256 = "070f4dgfp1vzvz0fxwavzv9bd7nl5fx3rmmkyr0zy7g9vv426x9c";
+        sha256 = "1mwr6267lwl4p7f8jfk14s4cszxwra6zgf84hkcxz8fldzs86rkc";
       };
 
       beamDeps = [];
     };
 
+    remote_ip = buildMix rec {
+      name = "remote_ip";
+      version = "1.1.0";
+
+      src = fetchHex {
+        pkg = "${name}";
+        version = "${version}";
+        sha256 = "0x7d086iik0h5gcwn2bvx6cjlznqxr1bznj6qlpsgmmadbvgsvv1";
+      };
+
+      beamDeps = [ combine plug ];
+    };
+
     sleeplocks = buildRebar3 rec {
       name = "sleeplocks";
       version = "1.1.2";
@@ -1297,15 +1336,15 @@ let
 
     swoosh = buildMix rec {
       name = "swoosh";
-      version = "1.8.2";
+      version = "1.9.1";
 
       src = fetchHex {
         pkg = "${name}";
         version = "${version}";
-        sha256 = "1nxpcwq7ynvqjp65z544dvdfw7jx9k0m58w4kb0bdbdg1rsvln6h";
+        sha256 = "07ipsrp34s18c9zd5kglqsdc8z7gxa9aadsrklj0zf6azzrzzpvn";
       };
 
-      beamDeps = [ cowboy ex_aws finch gen_smtp hackney jason mime plug_cowboy telemetry ];
+      beamDeps = [ cowboy ex_aws finch gen_smtp hackney jason mail mime plug_cowboy telemetry ];
     };
 
     syslog = buildRebar3 rec {
@@ -1360,6 +1399,45 @@ let
       beamDeps = [ telemetry ];
     };
 
+    telemetry_metrics_prometheus = buildMix rec {
+      name = "telemetry_metrics_prometheus";
+      version = "1.1.0";
+
+      src = fetchHex {
+        pkg = "${name}";
+        version = "${version}";
+        sha256 = "09jdrv0ik5svi77djycva7a6a8sl05vp2nr7w17s8k94ndckcfyl";
+      };
+
+      beamDeps = [ plug_cowboy telemetry_metrics_prometheus_core ];
+    };
+
+    telemetry_metrics_prometheus_core = buildMix rec {
+      name = "telemetry_metrics_prometheus_core";
+      version = "1.1.0";
+
+      src = fetchHex {
+        pkg = "${name}";
+        version = "${version}";
+        sha256 = "0sd0j7arhf22ickzdfmq656258dh14kzi61p0vgra007x1zhxl8d";
+      };
+
+      beamDeps = [ telemetry telemetry_metrics ];
+    };
+
+    telemetry_poller = buildRebar3 rec {
+      name = "telemetry_poller";
+      version = "0.5.1";
+
+      src = fetchHex {
+        pkg = "${name}";
+        version = "${version}";
+        sha256 = "1m1zcq65yz0wp1wx7mcy2iq37cyizbzrmv0c11x6xg0hj8375asc";
+      };
+
+      beamDeps = [ telemetry ];
+    };
+
     tesla = buildMix rec {
       name = "tesla";
       version = "1.4.4";
@@ -1370,7 +1448,7 @@ let
         sha256 = "0mv48vgby1fv9b2npc0ird3y4isr10np3a3yas3v5hfyz54kll6m";
       };
 
-      beamDeps = [ castore finch gun hackney jason mime mint poison telemetry ];
+      beamDeps = [ castore finch hackney jason mime mint poison telemetry ];
     };
 
     timex = buildMix rec {

From 7ea52d1d387fe47fdf29e95bd10de8fabda99e53 Mon Sep 17 00:00:00 2001
From: Mikael Voss <mvs@nyantec.com>
Date: Sun, 12 Feb 2023 22:53:41 +0100
Subject: [PATCH 42/46] pleroma-fe: 2022-12-10 -> 2023-02-11

---
 pkgs/servers/akkoma/pleroma-fe/default.nix | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/pkgs/servers/akkoma/pleroma-fe/default.nix b/pkgs/servers/akkoma/pleroma-fe/default.nix
index 71f3bcd8aee2..98bd7c520b19 100644
--- a/pkgs/servers/akkoma/pleroma-fe/default.nix
+++ b/pkgs/servers/akkoma/pleroma-fe/default.nix
@@ -7,19 +7,19 @@
 
 stdenv.mkDerivation rec {
   pname = "pleroma-fe";
-  version = "unstable-2022-12-10";
+  version = "unstable-2023-02-11";
 
   src = fetchFromGitea {
     domain = "akkoma.dev";
     owner = "AkkomaGang";
-    repo = "pleroma-fe";
-    rev = "9c9b4cc07c018a21c8261dd7680a97aa3a670756";
-    hash = "sha256-jYJcG2Q5kxOH29G5WV/6Cx7a+b7FuFROEn/8ruh7cDc=";
+    repo = "akkoma-fe";
+    rev = "8569b5946eebdb4e7c91252e1dcf88795c8e2538";
+    hash = "sha256-fIkfKAFrcCioma3Hb0c20rfSWXevwWeJbyJm+dUSNlQ=";
   };
 
   offlineCache = fetchYarnDeps {
     yarnLock = src + "/yarn.lock";
-    hash = "sha256-pz6NHBYZRi+Rwx6H74895vFWGLSivI7Ul8XV6wMbgJg=";
+    hash = "sha256-Uet3zdjLdI4qpiuU4CtW2WwWGcFaOhotLLKfnsAUqho=";
   };
 
   nativeBuildInputs = [

From 507c66f5b1829b44e660f33ea2d124b07c395bc4 Mon Sep 17 00:00:00 2001
From: Mikael Voss <mvs@nyantec.com>
Date: Sun, 12 Feb 2023 22:56:39 +0100
Subject: [PATCH 43/46] pleroma-fe: Rename to akkoma-fe

---
 nixos/modules/services/web-apps/akkoma.md            |  8 ++++----
 nixos/modules/services/web-apps/akkoma.nix           | 12 ++++++------
 .../akkoma/{pleroma-fe => akkoma-fe}/default.nix     |  6 +++---
 pkgs/top-level/all-packages.nix                      |  2 +-
 4 files changed, 14 insertions(+), 14 deletions(-)
 rename pkgs/servers/akkoma/{pleroma-fe => akkoma-fe}/default.nix (93%)

diff --git a/nixos/modules/services/web-apps/akkoma.md b/nixos/modules/services/web-apps/akkoma.md
index fc849be0c872..5419940a68d6 100644
--- a/nixos/modules/services/web-apps/akkoma.md
+++ b/nixos/modules/services/web-apps/akkoma.md
@@ -152,7 +152,7 @@ services.akkoma.config.":pleroma".":media_preview_proxy" = {
 
 ## Frontend management {#modules-services-akkoma-frontend-management}
 
-Akkoma will be deployed with the `pleroma-fe` and `admin-fe` frontends by default. These can be
+Akkoma will be deployed with the `akkoma-fe` and `admin-fe` frontends by default. These can be
 modified by setting
 [{option}`services.akkoma.frontends`](options.html#opt-services.akkoma.frontends).
 
@@ -160,7 +160,7 @@ The following example overrides the primary frontend’s default configuration u
 derivation.
 
 ```nix
-services.akkoma.frontends.primary.package = pkgs.runCommand "pleroma-fe" {
+services.akkoma.frontends.primary.package = pkgs.runCommand "akkoma-fe" {
   config = builtins.toJSON {
     expertLevel = 1;
     collapseMessageWithSubject = false;
@@ -177,10 +177,10 @@ services.akkoma.frontends.primary.package = pkgs.runCommand "pleroma-fe" {
   passAsFile = [ "config" ];
 } ''
   mkdir $out
-  lndir ${pkgs.akkoma-frontends.pleroma-fe} $out
+  lndir ${pkgs.akkoma-frontends.akkoma-fe} $out
 
   rm $out/static/config.json
-  jq -s add ${pkgs.akkoma-frontends.pleroma-fe}/static/config.json ${config} \
+  jq -s add ${pkgs.akkoma-frontends.akkoma-fe}/static/config.json ${config} \
     >$out/static/config.json
 '';
 ```
diff --git a/nixos/modules/services/web-apps/akkoma.nix b/nixos/modules/services/web-apps/akkoma.nix
index fc482ff32deb..8d1775258612 100644
--- a/nixos/modules/services/web-apps/akkoma.nix
+++ b/nixos/modules/services/web-apps/akkoma.nix
@@ -51,13 +51,13 @@ let
       package = mkOption {
         type = types.package;
         description = mdDoc "Akkoma frontend package.";
-        example = literalExpression "pkgs.akkoma-frontends.pleroma-fe";
+        example = literalExpression "pkgs.akkoma-frontends.akkoma-fe";
       };
 
       name = mkOption {
         type = types.nonEmptyStr;
         description = mdDoc "Akkoma frontend name.";
-        example = "pleroma-fe";
+        example = "akkoma-fe";
       };
 
       ref = mkOption {
@@ -476,8 +476,8 @@ in {
         type = with types; attrsOf (submodule frontend);
         default = {
           primary = {
-            package = pkgs.akkoma-frontends.pleroma-fe;
-            name = "pleroma-fe";
+            package = pkgs.akkoma-frontends.akkoma-fe;
+            name = "akkoma-fe";
             ref = "stable";
           };
           admin = {
@@ -489,8 +489,8 @@ in {
         defaultText = literalExpression ''
           {
             primary = {
-              package = pkgs.akkoma-frontends.pleroma-fe;
-              name = "pleroma-fe";
+              package = pkgs.akkoma-frontends.akkoma-fe;
+              name = "akkoma-fe";
               ref = "stable";
             };
             admin = {
diff --git a/pkgs/servers/akkoma/pleroma-fe/default.nix b/pkgs/servers/akkoma/akkoma-fe/default.nix
similarity index 93%
rename from pkgs/servers/akkoma/pleroma-fe/default.nix
rename to pkgs/servers/akkoma/akkoma-fe/default.nix
index 98bd7c520b19..a1f2c43d79ee 100644
--- a/pkgs/servers/akkoma/pleroma-fe/default.nix
+++ b/pkgs/servers/akkoma/akkoma-fe/default.nix
@@ -6,7 +6,7 @@
 }:
 
 stdenv.mkDerivation rec {
-  pname = "pleroma-fe";
+  pname = "akkoma-fe";
   version = "unstable-2023-02-11";
 
   src = fetchFromGitea {
@@ -74,8 +74,8 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "Frontend for Akkoma and Pleroma";
-    homepage = "https://akkoma.dev/AkkomaGang/pleroma-fe/";
+    description = "Frontend for Akkoma";
+    homepage = "https://akkoma.dev/AkkomaGang/akkoma-fe/";
     license = licenses.agpl3;
     maintainers = with maintainers; [ mvs ];
   };
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 1c61ee6febd6..83f0e16fabca 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -1259,7 +1259,7 @@ with pkgs;
 
   akkoma = callPackage ../servers/akkoma { };
   akkoma-frontends = recurseIntoAttrs {
-    pleroma-fe = callPackage ../servers/akkoma/pleroma-fe { };
+    akkoma-fe = callPackage ../servers/akkoma/akkoma-fe { };
     admin-fe = callPackage ../servers/akkoma/admin-fe { };
   };
   akkoma-emoji = recurseIntoAttrs {

From 7cccc07ab2acf7e3935c3673d2a8df54762ba7b5 Mon Sep 17 00:00:00 2001
From: Mikael Voss <mvs@nyantec.com>
Date: Sun, 12 Feb 2023 22:57:25 +0100
Subject: [PATCH 44/46] admin-fe: 2022-09-10 -> 2023-02-11

---
 pkgs/servers/akkoma/admin-fe/default.nix | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/pkgs/servers/akkoma/admin-fe/default.nix b/pkgs/servers/akkoma/admin-fe/default.nix
index 9b75d1e0dbcf..40c267b00ef6 100644
--- a/pkgs/servers/akkoma/admin-fe/default.nix
+++ b/pkgs/servers/akkoma/admin-fe/default.nix
@@ -7,14 +7,14 @@
 
 stdenv.mkDerivation rec {
   pname = "admin-fe";
-  version = "unstable-2022-09-10";
+  version = "unstable-2023-02-11";
 
   src = fetchFromGitea {
     domain = "akkoma.dev";
     owner = "AkkomaGang";
     repo = "admin-fe";
-    rev = "e094e12c3ecb540df839fdf20c5a03d10454fcad";
-    hash = "sha256-dqkW8p4x+5z1Hd8gp8V4+DsLm8EspVwPXDxtvlp1AIk=";
+    rev = "130c17808bc50269f8444612f4ab378a08cd5e43";
+    hash = "sha256-+ZU8J4rOyRMSZP+CUyLeOhRI2fKiw2s31coTYAoReWM=";
   };
 
   patches = [ ./deps.patch ];

From 0f923da38be266e8d2862c3b8ebbf6d5b561dc1e Mon Sep 17 00:00:00 2001
From: K900 <me@0upti.me>
Date: Tue, 14 Feb 2023 23:09:34 +0300
Subject: [PATCH 45/46] nixos/tests/predictable-interface-names: fix eval

---
 nixos/tests/predictable-interface-names.nix | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/nixos/tests/predictable-interface-names.nix b/nixos/tests/predictable-interface-names.nix
index fa9bd67073bd..684df9c39246 100644
--- a/nixos/tests/predictable-interface-names.nix
+++ b/nixos/tests/predictable-interface-names.nix
@@ -13,7 +13,7 @@ in pkgs.lib.listToAttrs (builtins.map ({ predictable, withNetworkd }: {
   name = pkgs.lib.optionalString (!predictable) "un" + "predictable"
        + pkgs.lib.optionalString withNetworkd "Networkd";
   value = makeTest {
-    name = "${lib.optionalString (!predictable) "un"}predictableInterfaceNames${lib.optionalString withNetworkd "-with-networkd"}";
+    name = "${pkgs.lib.optionalString (!predictable) "un"}predictableInterfaceNames${pkgs.lib.optionalString withNetworkd "-with-networkd"}";
     meta = {};
 
     nodes.machine = { lib, ... }: {

From d6ba2dd35403db427e53568653cfb03d1b2fd7be Mon Sep 17 00:00:00 2001
From: Kirill Radzikhovskyy <kirillrdy@gmail.com>
Date: Sun, 12 Feb 2023 09:40:15 +1100
Subject: [PATCH 46/46] android-studio: 2022.1.1.19 -> 2022.1.1.20

---
 pkgs/applications/editors/android-studio/default.nix | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/pkgs/applications/editors/android-studio/default.nix b/pkgs/applications/editors/android-studio/default.nix
index 494a02f3041f..664199553ddf 100644
--- a/pkgs/applications/editors/android-studio/default.nix
+++ b/pkgs/applications/editors/android-studio/default.nix
@@ -10,8 +10,8 @@ let
     inherit tiling_wm;
   };
   stableVersion = {
-    version = "2022.1.1.19"; # "Android Studio Electric Eel (2022.1.1)"
-    sha256Hash = "luxE6a2C86JB28ezuIZV49TyE314S1RcNXQnCQamjUA=";
+    version = "2022.1.1.20"; # "Android Studio Electric Eel (2022.1.1) Patch 1"
+    sha256Hash = "sha256-UX7aOpTM23S7NBPNAz/fKEyK/dqWpok0NnpX9wck6p4=";
   };
   betaVersion = {
     version = "2022.2.1.12"; # "Android Studio Flamingo (2022.2.1) Beta 1"