about summary refs log tree commit diff
path: root/pkgs/data
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/data')
-rw-r--r--pkgs/data/documentation/gnome-user-docs/default.nix4
-rw-r--r--pkgs/data/documentation/man-pages/default.nix22
-rw-r--r--pkgs/data/documentation/scheme-manpages/default.nix6
-rw-r--r--pkgs/data/documentation/zeal/default.nix1
-rw-r--r--pkgs/data/fonts/0xproto/default.nix4
-rw-r--r--pkgs/data/fonts/babelstone-han/default.nix2
-rw-r--r--pkgs/data/fonts/bront/default.nix2
-rw-r--r--pkgs/data/fonts/fg-virgil/default.nix4
-rw-r--r--pkgs/data/fonts/fira-code/default.nix10
-rw-r--r--pkgs/data/fonts/fira-mono/default.nix33
-rw-r--r--pkgs/data/fonts/fira/default.nix37
-rw-r--r--pkgs/data/fonts/google-fonts/default.nix13
-rw-r--r--pkgs/data/fonts/ibm-plex/default.nix4
-rw-r--r--pkgs/data/fonts/inconsolata/default.nix10
-rw-r--r--pkgs/data/fonts/iosevka/bin.nix22
-rw-r--r--pkgs/data/fonts/iosevka/comfy.nix31
-rw-r--r--pkgs/data/fonts/iosevka/default.nix42
-rwxr-xr-xpkgs/data/fonts/iosevka/update-bin.sh4
-rw-r--r--pkgs/data/fonts/iosevka/variants.nix182
-rw-r--r--pkgs/data/fonts/julia-mono/default.nix4
-rw-r--r--pkgs/data/fonts/junicode/default.nix27
-rw-r--r--pkgs/data/fonts/junicode/test-vf.tex46
-rw-r--r--pkgs/data/fonts/junicode/test.tex46
-rw-r--r--pkgs/data/fonts/junicode/tests.nix34
-rw-r--r--pkgs/data/fonts/junicode/tex-font-path.patch166
-rw-r--r--pkgs/data/fonts/kode-mono/default.nix4
-rw-r--r--pkgs/data/fonts/lxgw-neoxihei/default.nix32
-rw-r--r--pkgs/data/fonts/lxgw-wenkai/default.nix4
-rw-r--r--pkgs/data/fonts/marathi-cursive/default.nix2
-rw-r--r--pkgs/data/fonts/material-icons/default.nix22
-rw-r--r--pkgs/data/fonts/mplus-outline-fonts/default.nix2
-rw-r--r--pkgs/data/fonts/nasin-nanpa/default.nix23
-rw-r--r--pkgs/data/fonts/nerdfonts/shas.nix131
-rw-r--r--pkgs/data/fonts/nerdfonts/version.nix2
-rw-r--r--pkgs/data/fonts/openmoji/build.patch77
-rw-r--r--pkgs/data/fonts/openmoji/default.nix108
-rw-r--r--pkgs/data/fonts/sarasa-gothic/default.nix34
-rw-r--r--pkgs/data/fonts/sketchybar-app-font/default.nix101
-rw-r--r--pkgs/data/fonts/smiley-sans/default.nix4
-rw-r--r--pkgs/data/fonts/spleen/default.nix4
-rw-r--r--pkgs/data/fonts/sudo/default.nix4
-rw-r--r--pkgs/data/fonts/tamzen/default.nix4
-rw-r--r--pkgs/data/fonts/twemoji-color-font/default.nix6
-rw-r--r--pkgs/data/fonts/u001/default.nix7
-rw-r--r--pkgs/data/fonts/ubuntu-font-family/default.nix2
-rw-r--r--pkgs/data/fonts/undefined-medium/default.nix6
-rw-r--r--pkgs/data/fonts/unifont/default.nix6
-rw-r--r--pkgs/data/fonts/unifont_upper/default.nix4
-rw-r--r--pkgs/data/fonts/vdrsymbols/default.nix2
-rw-r--r--pkgs/data/fonts/victor-mono/default.nix4
-rw-r--r--pkgs/data/icons/banana-cursor/default.nix31
-rw-r--r--pkgs/data/icons/bibata-cursors/default.nix44
-rw-r--r--pkgs/data/icons/catppuccin-cursors/default.nix3
-rw-r--r--pkgs/data/icons/colloid-icon-theme/default.nix4
-rw-r--r--pkgs/data/icons/comixcursors/default.nix3
-rw-r--r--pkgs/data/icons/elementary-xfce-icon-theme/default.nix4
-rw-r--r--pkgs/data/icons/fluent-icon-theme/default.nix4
-rw-r--r--pkgs/data/icons/gruppled-cursors/default.nix30
-rw-r--r--pkgs/data/icons/gruppled-lite-cursors/default.nix30
-rw-r--r--pkgs/data/icons/kora-icon-theme/default.nix4
-rw-r--r--pkgs/data/icons/numix-icon-theme-circle/default.nix4
-rw-r--r--pkgs/data/icons/numix-icon-theme-square/default.nix4
-rw-r--r--pkgs/data/icons/papirus-icon-theme/default.nix4
-rw-r--r--pkgs/data/icons/phinger-cursors/default.nix4
-rw-r--r--pkgs/data/icons/pop-icon-theme/default.nix4
-rw-r--r--pkgs/data/icons/whitesur-icon-theme/default.nix4
-rw-r--r--pkgs/data/misc/cacert/default.nix8
-rw-r--r--pkgs/data/misc/clash-geoip/default.nix4
-rw-r--r--pkgs/data/misc/conway_polynomials/default.nix41
-rw-r--r--pkgs/data/misc/dbip-country-lite/default.nix4
-rw-r--r--pkgs/data/misc/ddccontrol-db/default.nix4
-rw-r--r--pkgs/data/misc/hackage/pin.json8
-rw-r--r--pkgs/data/misc/iana-etc/default.nix4
-rw-r--r--pkgs/data/misc/nixos-artwork/icons.nix28
-rw-r--r--pkgs/data/misc/papirus-folders/default.nix1
-rw-r--r--pkgs/data/misc/publicsuffix-list/default.nix6
-rw-r--r--pkgs/data/misc/rime-data/default.nix6
-rw-r--r--pkgs/data/misc/rime-data/fetchSchema.nix52
-rw-r--r--pkgs/data/misc/sing-geoip/default.nix18
-rw-r--r--pkgs/data/misc/sing-geoip/main.go68
-rw-r--r--pkgs/data/misc/sing-geosite/default.nix11
-rw-r--r--pkgs/data/misc/sing-geosite/main.go33
-rw-r--r--pkgs/data/misc/spdx-license-list-data/default.nix4
-rw-r--r--pkgs/data/misc/tzdata/default.nix34
-rw-r--r--pkgs/data/misc/unicode-character-database/default.nix5
-rw-r--r--pkgs/data/misc/v2ray-domain-list-community/default.nix6
-rw-r--r--pkgs/data/misc/v2ray-geoip/default.nix11
-rw-r--r--pkgs/data/misc/wireless-regdb/default.nix8
-rw-r--r--pkgs/data/misc/xorg-rgb/default.nix1
-rw-r--r--pkgs/data/themes/adapta-kde/default.nix2
-rw-r--r--pkgs/data/themes/adw-gtk3/default.nix4
-rw-r--r--pkgs/data/themes/alacritty-theme/default.nix6
-rw-r--r--pkgs/data/themes/andromeda-gtk-theme/default.nix61
-rw-r--r--pkgs/data/themes/arc-kde/default.nix2
-rw-r--r--pkgs/data/themes/base16-schemes/default.nix10
-rw-r--r--pkgs/data/themes/catppuccin-gtk/colloid-src-git-reset.patch17
-rw-r--r--pkgs/data/themes/catppuccin-gtk/default.nix11
-rw-r--r--pkgs/data/themes/catppuccin-kde/default.nix10
-rw-r--r--pkgs/data/themes/catppuccin-sddm-corners/default.nix24
-rw-r--r--pkgs/data/themes/catppuccin/default.nix53
-rw-r--r--pkgs/data/themes/colloid-gtk-theme/default.nix6
-rw-r--r--pkgs/data/themes/dracula-theme/default.nix6
-rw-r--r--pkgs/data/themes/elegant-sddm/default.nix63
-rw-r--r--pkgs/data/themes/gruvbox-gtk-theme/default.nix42
-rw-r--r--pkgs/data/themes/gtk-theme-framework/default.nix2
-rw-r--r--pkgs/data/themes/kwin-decorations/kde-rounded-corners/default.nix6
-rw-r--r--pkgs/data/themes/kwin-decorations/sierra-breeze-enhanced/default.nix13
-rw-r--r--pkgs/data/themes/lightly-boehs/default.nix1
-rw-r--r--pkgs/data/themes/lightly-qt/default.nix1
-rw-r--r--pkgs/data/themes/nordic/default.nix46
-rw-r--r--pkgs/data/themes/obsidian2/default.nix4
-rw-r--r--pkgs/data/themes/orchis-theme/default.nix4
-rw-r--r--pkgs/data/themes/sweet/default.nix67
-rw-r--r--pkgs/data/themes/tokyonight-gtk-theme/default.nix (renamed from pkgs/data/themes/tokyo-night-gtk/default.nix)2
-rw-r--r--pkgs/data/themes/tokyonight-gtk-theme/generic.nix (renamed from pkgs/data/themes/tokyo-night-gtk/generic.nix)2
-rw-r--r--pkgs/data/themes/tokyonight-gtk-theme/variants.json (renamed from pkgs/data/themes/tokyo-night-gtk/variants.json)0
-rw-r--r--pkgs/data/themes/where-is-my-sddm-theme/default.nix50
-rw-r--r--pkgs/data/themes/whitesur/default.nix20
-rw-r--r--pkgs/data/themes/yaru/default.nix2
119 files changed, 1491 insertions, 943 deletions
diff --git a/pkgs/data/documentation/gnome-user-docs/default.nix b/pkgs/data/documentation/gnome-user-docs/default.nix
index bfe64459f46b6..30382918c6d02 100644
--- a/pkgs/data/documentation/gnome-user-docs/default.nix
+++ b/pkgs/data/documentation/gnome-user-docs/default.nix
@@ -9,11 +9,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-user-docs";
-  version = "45.1";
+  version = "45.5";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-user-docs/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "L5DGgntfFgXfLt++orNChwMAqamBvDktyWIU2WfzrfE=";
+    sha256 = "sha256-dBZ/z0KgTZ5dPMEw0nvCA9h7aFzmBqhGdN8k4f9xnlQ=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/data/documentation/man-pages/default.nix b/pkgs/data/documentation/man-pages/default.nix
index 5b33714fc258a..deb6a4005f666 100644
--- a/pkgs/data/documentation/man-pages/default.nix
+++ b/pkgs/data/documentation/man-pages/default.nix
@@ -2,25 +2,25 @@
 
 stdenv.mkDerivation rec {
   pname = "man-pages";
-  version = "5.13";
+  version = "6.7";
 
   src = fetchurl {
     url = "mirror://kernel/linux/docs/man-pages/${pname}-${version}.tar.xz";
-    sha256 = "sha256-YU2uPv59/UgJhnY6KiqBeSFQMqWkUmwL5eiZol8Ja4s=";
+    hash = "sha256-gkA61LwXqtuST2hji3nWkwssvVUVMSSKepaId52077I=";
   };
 
-  makeFlags = [ "prefix=$(out)" ];
-  postInstall = ''
-    # conflict with shadow-utils
-    rm $out/share/man/man5/passwd.5 \
-       $out/share/man/man3/getspnam.3
+  makeFlags = [
+    # Clobber /usr/bin/env with the one in PATH.
+    "SHELL=env"
+    "prefix=${placeholder "out"}"
+  ];
+
+  dontBuild = true;
 
-    # The manpath executable looks up manpages from PATH. And this package won't
-    # appear in PATH unless it has a /bin folder
-    mkdir -p $out/bin
-  '';
   outputDocdev = "out";
 
+  enableParallelInstalling = true;
+
   meta = with lib; {
     description = "Linux development manual pages";
     homepage = "https://www.kernel.org/doc/man-pages/";
diff --git a/pkgs/data/documentation/scheme-manpages/default.nix b/pkgs/data/documentation/scheme-manpages/default.nix
index 6eb1e3e74170a..468938a0a75f9 100644
--- a/pkgs/data/documentation/scheme-manpages/default.nix
+++ b/pkgs/data/documentation/scheme-manpages/default.nix
@@ -2,13 +2,13 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "scheme-manpages";
-  version = "unstable-2023-08-27";
+  version = "unstable-2024-02-11";
 
   src = fetchFromGitHub {
     owner = "schemedoc";
     repo = "manpages";
-    rev = "44317b20616699b13b2b6276c86d796f4ae0c8dd";
-    hash = "sha256-qxj9sEQYOZ+me2IhDS5S2GRSho4KWWrEm+5MNxfw1VI=";
+    rev = "1ef440525db569799774c83634d28bfa630358da";
+    hash = "sha256-ZBovG9i0qKD6dP4qcLP1T1fke0hC8MmRjZRzxuojd60=";
   };
 
   dontBuild = true;
diff --git a/pkgs/data/documentation/zeal/default.nix b/pkgs/data/documentation/zeal/default.nix
index 18f4d13197393..3dd2f1c02c94a 100644
--- a/pkgs/data/documentation/zeal/default.nix
+++ b/pkgs/data/documentation/zeal/default.nix
@@ -74,6 +74,7 @@ stdenv.mkDerivation (finalAttrs: {
     changelog = "https://github.com/zealdocs/zeal/releases";
     license = lib.licenses.gpl3Plus;
     maintainers = with lib.maintainers; [ peterhoeg AndersonTorres ];
+    mainProgram = "zeal";
     inherit (qtbase.meta) platforms;
   };
 })
diff --git a/pkgs/data/fonts/0xproto/default.nix b/pkgs/data/fonts/0xproto/default.nix
index 25a1fa585bc23..ee43ede57da49 100644
--- a/pkgs/data/fonts/0xproto/default.nix
+++ b/pkgs/data/fonts/0xproto/default.nix
@@ -4,14 +4,14 @@
 }:
 stdenvNoCC.mkDerivation rec {
   pname = "0xproto";
-  version = "1.300";
+  version = "1.603";
 
   src = let
     underscoreVersion = builtins.replaceStrings ["."] ["_"] version;
   in
     fetchzip {
       url = "https://github.com/0xType/0xProto/releases/download/${version}/0xProto_${underscoreVersion}.zip";
-      hash = "sha256-RanIMf9P2lFOF3kJS6jMlh/X6jttofbHSqFUJxWSqKk=";
+      hash = "sha256-20KqPX6BKlyX+R3zrhDMz3p9Vwgd4RlRe2qhJpic6W4=";
     };
 
   installPhase = ''
diff --git a/pkgs/data/fonts/babelstone-han/default.nix b/pkgs/data/fonts/babelstone-han/default.nix
index 9839295653d12..6dfad42d20865 100644
--- a/pkgs/data/fonts/babelstone-han/default.nix
+++ b/pkgs/data/fonts/babelstone-han/default.nix
@@ -23,7 +23,7 @@ stdenvNoCC.mkDerivation {
     description = "Unicode CJK font with over 36000 Han characters";
     homepage = "https://www.babelstone.co.uk/Fonts/Han.html";
 
-    license = licenses.free;
+    license = licenses.arphicpl;
     platforms = platforms.all;
     maintainers = with maintainers; [ emily ];
   };
diff --git a/pkgs/data/fonts/bront/default.nix b/pkgs/data/fonts/bront/default.nix
index d21c820f127b9..36e6adb380dfd 100644
--- a/pkgs/data/fonts/bront/default.nix
+++ b/pkgs/data/fonts/bront/default.nix
@@ -19,7 +19,7 @@ stdenvNoCC.mkDerivation {
     description = "Bront Fonts";
     longDescription = "Ubuntu Mono Bront and DejaVu Sans Mono Bront fonts.";
     homepage = "https://github.com/chrismwendt/bront";
-    license = licenses.free;
+    license = with licenses; [ bitstreamVera ufl ];
     platforms = platforms.all;
     maintainers = [ maintainers.grburst ];
   };
diff --git a/pkgs/data/fonts/fg-virgil/default.nix b/pkgs/data/fonts/fg-virgil/default.nix
index e0837c71d8eb1..da9ecb235005b 100644
--- a/pkgs/data/fonts/fg-virgil/default.nix
+++ b/pkgs/data/fonts/fg-virgil/default.nix
@@ -2,13 +2,13 @@
 
 stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "fg-virgil";
-  version = "0.17.0";
+  version = "0.17.3";
 
   src = fetchFromGitHub {
     owner = "excalidraw";
     repo = "excalidraw";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-awd5jTz4sSiliEq7xt6dUR31C85oDcCP5GLuQn0ohj0=";
+    hash = "sha256-j8fT17RkgMQAAS4KsC2+uItT8Z300SZWnLkyo4XI1WY=";
   };
 
   installPhase = ''
diff --git a/pkgs/data/fonts/fira-code/default.nix b/pkgs/data/fonts/fira-code/default.nix
index b0e63835156a5..553a2d5809883 100644
--- a/pkgs/data/fonts/fira-code/default.nix
+++ b/pkgs/data/fonts/fira-code/default.nix
@@ -1,11 +1,11 @@
-{ lib, stdenvNoCC, fetchzip }:
+{ lib, stdenvNoCC, fetchzip, useVariableFont ? true }:
 
-stdenvNoCC.mkDerivation rec {
+stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "fira-code";
   version = "6.2";
 
   src = fetchzip {
-    url = "https://github.com/tonsky/FiraCode/releases/download/${version}/Fira_Code_v${version}.zip";
+    url = "https://github.com/tonsky/FiraCode/releases/download/${finalAttrs.version}/Fira_Code_v${finalAttrs.version}.zip";
     stripRoot = false;
     hash = "sha256-UHOwZL9WpCHk6vZaqI/XfkZogKgycs5lWg1p0XdQt0A=";
   };
@@ -14,7 +14,7 @@ stdenvNoCC.mkDerivation rec {
   installPhase = ''
     runHook preInstall
 
-    install -Dm644 variable_ttf/*-VF.ttf -t $out/share/fonts/truetype
+    install -Dm644 -t $out/share/fonts/truetype ${if useVariableFont then "variable_ttf/*-VF.ttf" else "ttf/*.ttf"}
 
     runHook postInstall
   '';
@@ -31,4 +31,4 @@ stdenvNoCC.mkDerivation rec {
     maintainers = [ maintainers.rycee ];
     platforms = platforms.all;
   };
-}
+})
diff --git a/pkgs/data/fonts/fira-mono/default.nix b/pkgs/data/fonts/fira-mono/default.nix
deleted file mode 100644
index 5d059dbf88e08..0000000000000
--- a/pkgs/data/fonts/fira-mono/default.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{ lib, stdenvNoCC, fetchzip }:
-
-stdenvNoCC.mkDerivation rec {
-  pname = "fira-mono";
-  version = "4.202";
-
-  src = fetchzip {
-    url = "https://github.com/mozilla/Fira/archive/${version}.zip";
-    hash = "sha256-HLReqgL0PXF5vOpwLN0GiRwnzkjGkEVEyOEV2Z4R0oQ=";
-  };
-
-  installPhase = ''
-    runHook preInstall
-
-    install -Dm644 otf/FiraMono*.otf -t $out/share/fonts/opentype
-
-    runHook postInstall
-  '';
-
-  meta = with lib; {
-    homepage = "https://mozilla.github.io/Fira/";
-    description = "Monospace font for Firefox OS";
-    longDescription = ''
-      Fira Mono is a monospace font designed by Erik Spiekermann,
-      Ralph du Carrois, Anja Meiners and Botio Nikoltchev of Carrois
-      Type Design for Mozilla Firefox OS. Available in Regular,
-      Medium, and Bold.
-    '';
-    license = licenses.ofl;
-    maintainers = [ maintainers.rycee ];
-    platforms = platforms.all;
-  };
-}
diff --git a/pkgs/data/fonts/fira/default.nix b/pkgs/data/fonts/fira/default.nix
deleted file mode 100644
index 4b79d14dd94e7..0000000000000
--- a/pkgs/data/fonts/fira/default.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{ lib, stdenvNoCC, fetchFromGitHub }:
-
-stdenvNoCC.mkDerivation rec {
-  pname = "fira";
-  version = "4.202";
-
-  src = fetchFromGitHub {
-    owner = "mozilla";
-    repo = "Fira";
-    rev = version;
-    hash = "sha256-HLReqgL0PXF5vOpwLN0GiRwnzkjGkEVEyOEV2Z4R0oQ=";
-  };
-
-  installPhase = ''
-    runHook preInstall
-
-    install --mode=-x -Dt $out/share/fonts/opentype otf/*.otf
-
-    runHook postInstall
-  '';
-
-  meta = with lib; {
-    homepage = "https://mozilla.github.io/Fira/";
-    description = "Sans-serif font for Firefox OS";
-    longDescription = ''
-      Fira Sans is a sans-serif font designed by Erik Spiekermann,
-      Ralph du Carrois, Anja Meiners and Botio Nikoltchev of Carrois
-      Type Design for Mozilla Firefox OS.  It is closely related to
-      Spiekermann's FF Meta typeface.  Available in Two, Four, Eight,
-      Hair, Thin, Ultra Light, Extra Light, Light, Book, Regular,
-      Medium, Semi Bold, Bold, Extra Bold, Heavy weights with
-      corresponding italic versions.
-    '';
-    license = licenses.ofl;
-    platforms = platforms.all;
-  };
-}
diff --git a/pkgs/data/fonts/google-fonts/default.nix b/pkgs/data/fonts/google-fonts/default.nix
index d0f055166805e..bb3fc3ab0c1db 100644
--- a/pkgs/data/fonts/google-fonts/default.nix
+++ b/pkgs/data/fonts/google-fonts/default.nix
@@ -40,12 +40,10 @@ stdenvNoCC.mkDerivation {
 
   dontBuild = true;
 
-  # The font files are in the fonts directory and use two naming schemes:
-  # FamilyName-StyleName.ttf and FamilyName[param1,param2,...].ttf
-  # This installs all fonts if fonts is empty and otherwise only
-  # the specified fonts by FamilyName. To do this, it invokes
-  # `find` 2 times for every font, anyone is free to do this
-  # in a more efficient way.
+  # The font files are in the fonts directory and use three naming schemes:
+  # FamilyName-StyleName.ttf, FamilyName[param1,param2,...].ttf, and
+  # FamilyName.ttf. This installs all fonts if fonts is empty and otherwise
+  # only the specified fonts by FamilyName.
   fonts = map (font: builtins.replaceStrings [" "] [""] font) fonts;
   installPhase = ''
     adobeBlankDest=$adobeBlank/share/fonts/truetype
@@ -56,8 +54,7 @@ stdenvNoCC.mkDerivation {
     find . -name '*.ttf' -exec install -m 444 -Dt $dest '{}' +
   '' else ''
     for font in $fonts; do
-      find . -name "$font-*.ttf" -exec install -m 444 -Dt $dest '{}' +
-      find . -name "$font[*.ttf" -exec install -m 444 -Dt $dest '{}' +
+      find . \( -name "$font-*.ttf" -o -name "$font[*.ttf" -o -name "$font.ttf" \) -exec install -m 444 -Dt $dest '{}' +
     done
   '');
 
diff --git a/pkgs/data/fonts/ibm-plex/default.nix b/pkgs/data/fonts/ibm-plex/default.nix
index 21321d83af34b..a6c7b4d29535b 100644
--- a/pkgs/data/fonts/ibm-plex/default.nix
+++ b/pkgs/data/fonts/ibm-plex/default.nix
@@ -2,11 +2,11 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "ibm-plex";
-  version = "6.2.0";
+  version = "6.4.0";
 
   src = fetchzip {
     url = "https://github.com/IBM/plex/releases/download/v${version}/OpenType.zip";
-    hash = "sha256-RvD/aeZrvltJiuAHqYMNaRsjLgTdcC1/5zqlcd4qKAA=";
+    hash = "sha256-/aR3bu03VxenSPed6EqrGoPjWCcKT//MVtb9OC8tSRs=";
   };
 
   installPhase = ''
diff --git a/pkgs/data/fonts/inconsolata/default.nix b/pkgs/data/fonts/inconsolata/default.nix
index 57069fadbc5ec..180fa12b10664 100644
--- a/pkgs/data/fonts/inconsolata/default.nix
+++ b/pkgs/data/fonts/inconsolata/default.nix
@@ -2,23 +2,23 @@
 
 stdenv.mkDerivation {
   pname = "inconsolata";
-  version = "unstable-2021-01-19";
+  version = "3.001";
 
   src = fetchFromGitHub {
     owner = "google";
     repo = "fonts";
-    rev = "f113126dc4b9b1473d9354a86129c9d7b837aa1a";
-    sha256 = "0safw5prpa63mqcyfw3gr3a535w4c9hg5ayw5pkppiwil7n3pyxs";
+    rev = "0f203e3740b5eb77e0b179dff1e5869482676782";
+    sha256 = "sha256-Q8eUJ0mkoB245Ifz5ulxx61x4+AqKhG0uqhWF2nSLpw=";
   };
 
   installPhase = ''
-    install -m644 --target $out/share/fonts/truetype/inconsolata -D $src/ofl/inconsolata/*.ttf
+    install -m644 --target $out/share/fonts/truetype/inconsolata -D $src/ofl/inconsolata/static/*.ttf
   '';
 
   meta = with lib; {
     homepage = "https://www.levien.com/type/myfonts/inconsolata.html";
     description = "A monospace font for both screen and print";
-    maintainers = with maintainers; [ mikoim raskin ];
+    maintainers = with maintainers; [ appsforartists mikoim raskin ];
     license = licenses.ofl;
     platforms = platforms.all;
   };
diff --git a/pkgs/data/fonts/iosevka/bin.nix b/pkgs/data/fonts/iosevka/bin.nix
index 4b0f78e298ab1..749658086bf50 100644
--- a/pkgs/data/fonts/iosevka/bin.nix
+++ b/pkgs/data/fonts/iosevka/bin.nix
@@ -1,20 +1,26 @@
-{ stdenv, lib, fetchurl, iosevka, unzip
+{ stdenv
+, lib
+, fetchurl
+, iosevka
+, unzip
 , variant ? ""
 }:
 
 let
-  name = if lib.hasPrefix "sgr" variant then variant
-    else "iosevka" + lib.optionalString (variant != "") "-" + variant;
+  name =
+    if lib.hasPrefix "SGr-" variant then variant
+    else "Iosevka" + variant;
 
   variantHashes = import ./variants.nix;
-  validVariants = map (lib.removePrefix "iosevka-")
-    (builtins.attrNames (builtins.removeAttrs variantHashes [ "iosevka" ]));
-in stdenv.mkDerivation rec {
+  validVariants = map (lib.removePrefix "Iosevka")
+    (builtins.attrNames (builtins.removeAttrs variantHashes [ "Iosevka" ]));
+in
+stdenv.mkDerivation rec {
   pname = "${name}-bin";
-  version = "27.3.5";
+  version = "29.1.0";
 
   src = fetchurl {
-    url = "https://github.com/be5invis/Iosevka/releases/download/v${version}/ttc-${name}-${version}.zip";
+    url = "https://github.com/be5invis/Iosevka/releases/download/v${version}/PkgTTC-${name}-${version}.zip";
     sha256 = variantHashes.${name} or (throw ''
       No such variant "${variant}" for package iosevka-bin.
       Valid variants are: ${lib.concatStringsSep ", " validVariants}.
diff --git a/pkgs/data/fonts/iosevka/comfy.nix b/pkgs/data/fonts/iosevka/comfy.nix
index fb788b2876356..63dfca58d5440 100644
--- a/pkgs/data/fonts/iosevka/comfy.nix
+++ b/pkgs/data/fonts/iosevka/comfy.nix
@@ -4,21 +4,21 @@ let
   sets = [
     # Family                  | Shapes | Spacing | Style      | Ligatures |
     # ------------------------+--------+---------+------------+-----------|
-    "comfy"                   # Sans   | Compact | Monospaced | Yes       |
-    "comfy-fixed"             # Sans   | Compact | Monospaced | No        |
-    "comfy-duo"               # Sans   | Compact | Duospaced  | Yes       |
+    "comfy" #                 | Sans   | Compact | Monospaced | Yes       |
+    "comfy-fixed" #           | Sans   | Compact | Monospaced | No        |
+    "comfy-duo" #             | Sans   | Compact | Duospaced  | Yes       |
     # ------------------------+--------+---------+------------+-----------|
-    "comfy-motion"            # Slab   | Compact | Monospaced | Yes       |
-    "comfy-motion-fixed"      # Slab   | Compact | Monospaced | No        |
-    "comfy-motion-duo"        # Slab   | Compact | Duospaced  | Yes       |
+    "comfy-motion" #          | Slab   | Compact | Monospaced | Yes       |
+    "comfy-motion-fixed" #    | Slab   | Compact | Monospaced | No        |
+    "comfy-motion-duo" #      | Slab   | Compact | Duospaced  | Yes       |
     # ------------------------+--------+---------+------------+-----------|
-    "comfy-wide"              # Sans   | Wide    | Monospaced | Yes       |
-    "comfy-wide-fixed"        # Sans   | Wide    | Monospaced | No        |
-    "comfy-wide-duo"          # Sans   | Wide    | Duospaced  | Yes       |
+    "comfy-wide" #            | Sans   | Wide    | Monospaced | Yes       |
+    "comfy-wide-fixed" #      | Sans   | Wide    | Monospaced | No        |
+    "comfy-wide-duo" #        | Sans   | Wide    | Duospaced  | Yes       |
     # ------------------------+--------+---------+------------+-----------|
-    "comfy-wide-motion"       # Slab   | Wide    | Monospaced | Yes       |
+    "comfy-wide-motion" #     | Slab   | Wide    | Monospaced | Yes       |
     "comfy-wide-motion-fixed" # Slab   | Wide    | Monospaced | No        |
-    "comfy-wide-motion-duo"   # Slab   | Wide    | Duospaced  | Yes       |
+    "comfy-wide-motion-duo" # | Slab   | Wide    | Duospaced  | Yes       |
   ];
   version = "1.4.0";
   src = fetchFromGitHub {
@@ -34,6 +34,7 @@ let
       inherit set privateBuildPlan;
       buildNpmPackage = args: superBuildNpmPackage
         (args // {
+          pname = "iosevka-${set}";
           inherit version;
 
           src = fetchFromGitHub {
@@ -45,6 +46,14 @@ let
 
           npmDepsHash = "sha256-c+ltdh5e3+idclYfqp0Xh9IUwoj7XYP1uzJG6+a5gFU=";
 
+          installPhase = ''
+            runHook preInstall
+            fontdir="$out/share/fonts/truetype"
+            install -d "$fontdir"
+            install "dist/$pname/ttf"/* "$fontdir"
+            runHook postInstall
+          '';
+
           meta = with lib; {
             inherit (src.meta) homepage;
             description = ''
diff --git a/pkgs/data/fonts/iosevka/default.nix b/pkgs/data/fonts/iosevka/default.nix
index 6993a1641de56..1350b01d96fe5 100644
--- a/pkgs/data/fonts/iosevka/default.nix
+++ b/pkgs/data/fonts/iosevka/default.nix
@@ -54,17 +54,17 @@ assert (privateBuildPlan != null) -> set != null;
 assert (extraParameters != null) -> set != null;
 
 buildNpmPackage rec {
-  pname = if set != null then "iosevka-${set}" else "iosevka";
-  version = "27.3.5";
+  pname = "Iosevka${toString set}";
+  version = "29.2.1";
 
   src = fetchFromGitHub {
     owner = "be5invis";
     repo = "iosevka";
     rev = "v${version}";
-    hash = "sha256-dqXr/MVOuEmAMueaRWsnzY9MabhnyBRtLR9IDVLN79I=";
+    hash = "sha256-WWumGi6+jaQUGi1eArS9l3G8sOQL4ZetixVB5RWDPQ4=";
   };
 
-  npmDepsHash = "sha256-bux8aFBP1Pi5pAQY1jkNTqD2Ny2j+QQs+QRaXWJj6xg=";
+  npmDepsHash = "sha256-Gm3R8lWmYbLOfyGW+f8CYXlodp11vMCMAhagILxLKFA=";
 
   nativeBuildInputs = [
     remarshal
@@ -88,29 +88,29 @@ buildNpmPackage rec {
     ) [ "buildPlan" ];
 
   configurePhase = ''
-    runHook preConfigure
-    ${lib.optionalString (builtins.isAttrs privateBuildPlan) ''
-      remarshal -i "$buildPlanPath" -o private-build-plans.toml -if json -of toml
-    ''}
-    ${lib.optionalString (builtins.isString privateBuildPlan
-      && (!lib.hasPrefix builtins.storeDir privateBuildPlan)) ''
-        cp "$buildPlanPath" private-build-plans.toml
+      runHook preConfigure
+      ${lib.optionalString (builtins.isAttrs privateBuildPlan) ''
+        remarshal -i "$buildPlanPath" -o private-build-plans.toml -if json -of toml
       ''}
-    ${lib.optionalString (builtins.isString privateBuildPlan
-      && (lib.hasPrefix builtins.storeDir privateBuildPlan)) ''
-        cp "$buildPlan" private-build-plans.toml
+      ${lib.optionalString (builtins.isString privateBuildPlan
+    && (!lib.hasPrefix builtins.storeDir privateBuildPlan)) ''
+          cp "$buildPlanPath" private-build-plans.toml
+        ''}
+      ${lib.optionalString (builtins.isString privateBuildPlan
+    && (lib.hasPrefix builtins.storeDir privateBuildPlan)) ''
+          cp "$buildPlan" private-build-plans.toml
+        ''}
+      ${lib.optionalString (extraParameters != null) ''
+        echo -e "\n" >> params/parameters.toml
+        cat "$extraParametersPath" >> params/parameters.toml
       ''}
-    ${lib.optionalString (extraParameters != null) ''
-      echo -e "\n" >> params/parameters.toml
-      cat "$extraParametersPath" >> params/parameters.toml
-    ''}
-    runHook postConfigure
+      runHook postConfigure
   '';
 
   buildPhase = ''
     export HOME=$TMPDIR
     runHook preBuild
-    npm run build --no-update-notifier -- --jCmd=$NIX_BUILD_CORES --verbose=9 ttf::$pname
+    npm run build --no-update-notifier --targets ttf::$pname -- --jCmd=$NIX_BUILD_CORES --verbose=9
     runHook postBuild
   '';
 
@@ -118,7 +118,7 @@ buildNpmPackage rec {
     runHook preInstall
     fontdir="$out/share/fonts/truetype"
     install -d "$fontdir"
-    install "dist/$pname/ttf"/* "$fontdir"
+    install "dist/$pname/TTF"/* "$fontdir"
     runHook postInstall
   '';
 
diff --git a/pkgs/data/fonts/iosevka/update-bin.sh b/pkgs/data/fonts/iosevka/update-bin.sh
index 68f93f1f26e69..bfa50e1a6e529 100755
--- a/pkgs/data/fonts/iosevka/update-bin.sh
+++ b/pkgs/data/fonts/iosevka/update-bin.sh
@@ -19,9 +19,9 @@ sed -i "s/$oldVersion/$version/" bin.nix
 {
     echo '# This file was autogenerated. DO NOT EDIT!'
     echo '{'
-    for asset in $(echo "$release" | jq -r '.assets[].name | select(startswith("ttc"))'); do
+    for asset in $(echo "$release" | jq -r '.assets[].name | select(startswith("PkgTTC"))'); do
         printf '  %s = "%s";\n' \
-            $(echo "$asset" | sed -r "s/^ttc-(.*)-$version.zip$/\1/") \
+            $(echo "$asset" | sed -r "s/^PkgTTC-(.*)-$version.zip$/\1/") \
             $(nix-prefetch-url "https://github.com/be5invis/Iosevka/releases/download/v$version/$asset")
     done
     echo '}'
diff --git a/pkgs/data/fonts/iosevka/variants.nix b/pkgs/data/fonts/iosevka/variants.nix
index 5e71e08b78dac..268f2c80f1b6c 100644
--- a/pkgs/data/fonts/iosevka/variants.nix
+++ b/pkgs/data/fonts/iosevka/variants.nix
@@ -1,95 +1,93 @@
 # This file was autogenerated. DO NOT EDIT!
 {
-  iosevka = "0s37z4yml026pmaj6gpc603mry34hlzg67b0v9rblb90rx7xqlii";
-  iosevka-aile = "1vpn9mg48xy4jmbs804zmisaj1mnvwv5b9c0iy6mrwkd5m7gcqfb";
-  iosevka-curly = "138wwgn03cx0lkgs2mbydiyggjmbmy3iz4wgn17sbp5d7m7g0sp3";
-  iosevka-curly-slab = "024miwl9y57rxmc4hnyjk0j861wapyfy4jpg5q61jjh6nji3qwrk";
-  iosevka-etoile = "0gcdpzi6riy6x9qcjzmvb2kcdh209d8zbbc78b95ymgyndzwp3k2";
-  iosevka-slab = "1gny1az6lrg24dx9qrrpbrq85mkn6684970gbvl8wjh1pmkv2w14";
-  iosevka-ss01 = "06kw96biyyp35cc4x5pr3bf08f72020nvwcz12wk0qms02rz37s0";
-  iosevka-ss02 = "0yd18n2vrxbpf4kccad5q0cr24j04grz57l2jpgr3j3qiwz53zn1";
-  iosevka-ss03 = "01203jgpx8hsxs2jq5py8404y1cz95m5bsdzgya3nhyfslix7dxz";
-  iosevka-ss04 = "1c2xs689fqzzvbv72wb7pfwx687hrl8vzvakjbl317qpzmlrlbkr";
-  iosevka-ss05 = "0whfsl9ma1590zmks0r7lywc0sfy6mq74p8mhkmds6h35nri9djj";
-  iosevka-ss06 = "065lqb0w4cvhk7jadic2xn4pdq0rrg4f4b0gpc5z0xa2fsvw4rir";
-  iosevka-ss07 = "0bhl2p0zrzdn9vhl5ndfdzd7658qsaci41l6vpcsl5x9np3ii2jg";
-  iosevka-ss08 = "1ka2ii29v4aqqiwfbjcwsqsj2gpa46mpnv7d11rgn49n4j0isk1p";
-  iosevka-ss09 = "08n44fjsas94d7q1x9az58z5p786gxh8665yyhvhjzh76pzrkbwj";
-  iosevka-ss10 = "136pvfw6lab3vwzrx45cqkh1n6r8srahd9jbi9li02r19m78qp6f";
-  iosevka-ss11 = "0wgnzq1vfibxgb50dcwjsvf20jvjvhp1xwsbh1zpqqsh1kr89bln";
-  iosevka-ss12 = "0ql1xhjk2alrvyryvjaw54z9gnh4gi58nhskrhnkz4mdlr7a6xr3";
-  iosevka-ss13 = "0ivk20l8y2g0s7729wjc4h9bdqvjn859ij8vaccl12ql58i2phhb";
-  iosevka-ss14 = "0ib2ynpk7lcisbmcrrd2wlia7rh243zq1hys6ln2r3gd75m6hvbq";
-  iosevka-ss15 = "0yp0n7d5wwwykmzlc41fywc1mx06khp3xiy6gad9bng7mavpx91c";
-  iosevka-ss16 = "0gm0b50zhc2hc6l3qpl4q3jk8rcr9bh8y0i65xcv3bm456753l4v";
-  iosevka-ss17 = "0yf244n7161zk1csxnb7zx2c95q79jibplvczqfh2k8as3r4xw07";
-  iosevka-ss18 = "1886h5dzswspd0j3hs0d6m271qqsfp3zkihyp9acpf2v4r56nmmn";
-  sgr-iosevka = "1kl1wkgda764qqyyk14s0gfb2qavsfvc9zbr30z7zdkcqxk383gd";
-  sgr-iosevka-aile = "115ynw0dysf9473j6jami7yf79i6rlhm7a019fxlfcqnm2k3zz5r";
-  sgr-iosevka-curly = "010g7cgd3r8dw48mfdmcqzymqn8mqn5xnnvinvilahxq0qaj2s4w";
-  sgr-iosevka-curly-slab = "1fk67ay7bs1s1qajlrib06n0y1ii1fjlxdqrj2dvzlji8ac35hqc";
-  sgr-iosevka-etoile = "1gf696k4f4hh1yh664d361x0n65sh6q0i3n8as5id2vpzcjbn83w";
-  sgr-iosevka-fixed = "12v438imi2891b4ra3c48imd0n429aa889myhkglrky1bfxwwpw2";
-  sgr-iosevka-fixed-curly = "1v4vv48an8l9a5diavxap328d3qd6iy6hbwkkn64db2vxwmkdml7";
-  sgr-iosevka-fixed-curly-slab = "0xbz45qkd9paghrdx4s1gxgnn872fmywmr7il0v5yir81wys1z97";
-  sgr-iosevka-fixed-slab = "1w7qsg6a2g27izbmqshly2bnsbwdf2rhymvnq30vqgb2f1a6rlwq";
-  sgr-iosevka-fixed-ss01 = "1f4fi4h3fl7c3b0maj2l9df4yfs4pqj9rq5f7kk9kl2jnk0zq6yy";
-  sgr-iosevka-fixed-ss02 = "18q603zbi1dk1z8n215z2kyi3rcxik6m6cffihml0f1sb39rh3r7";
-  sgr-iosevka-fixed-ss03 = "05xs1z82ck01f9x3vhc74ajbgj9ms14bbmbcz0cf18sx03hpyz84";
-  sgr-iosevka-fixed-ss04 = "00rb7580xppnvjph6az2ldhgagahvivirzax2pf3fxd5an08zmla";
-  sgr-iosevka-fixed-ss05 = "1smjnzjhkxkb9m79d8ynp30846zggb88z7qxd2q58iadq8narx2q";
-  sgr-iosevka-fixed-ss06 = "0wqd4pyv66axwsnicbpzidghvh3cx2lyzjmj66734rqz8slsrjb6";
-  sgr-iosevka-fixed-ss07 = "1xbs7mjvl8mvi4jhmxnfadvvgpyvyh7y4yqn8vhgbcxp84fzgy3j";
-  sgr-iosevka-fixed-ss08 = "0x2kkfffhapj4vnfpdv49zr4wrf02sw6467qrky9sf9phkwa40vh";
-  sgr-iosevka-fixed-ss09 = "0z436cps3rb8kfm7pxjjs8p3bjwrg86p549nd6fvgp67p05xx38r";
-  sgr-iosevka-fixed-ss10 = "0qpjdgzqb5yadp4bz26kmwjdmpaak7s2mj9km2g565bci096cri4";
-  sgr-iosevka-fixed-ss11 = "1i306ai7drhca8ammi6dz8j6v68mjyxwc35zzg801shgy8a00scd";
-  sgr-iosevka-fixed-ss12 = "0aza67vz3mrq9ah5pm7lyahdbh0dhzzp8v4hy5slmy8a766ha9gm";
-  sgr-iosevka-fixed-ss13 = "022nrapzv1s2a5davh1bpqgm46r04fbns5x6z3826ydsrwkapfs7";
-  sgr-iosevka-fixed-ss14 = "023f8j5rzivmqg61larm5kjyb7sd8prqilzd99xp1b97zi4iy0kg";
-  sgr-iosevka-fixed-ss15 = "0xb85wsfha7z0krlnb1nhzqd4cva13dvrp8kpfpnmmz1alpvgx0x";
-  sgr-iosevka-fixed-ss16 = "0n3chagxlypxsj1zb2r6z3vjfix15pc3nc8sx5cc9j4inb7v5z5v";
-  sgr-iosevka-fixed-ss17 = "0kzk2llpwi9plbn3jw203chr8ahpq6kbv9b4i9maf3ljvgdy7nyc";
-  sgr-iosevka-fixed-ss18 = "1mzv3zkxrd1lsri1niiqvlkpzhxy9m0gr3ygxzrrfj3f6p6wzq87";
-  sgr-iosevka-slab = "1fsl0qsvmfhxjc6y5g8d90x39mz5hzw55xfnwzjjifls6igc8kd4";
-  sgr-iosevka-ss01 = "0z18akfqsgr6qcqrcrrwpfdswzk8if9cdhahqgjnkw90qm4m6pyq";
-  sgr-iosevka-ss02 = "0x0bc72y835xlz9k2xbbpgccrgswkg7w1hia86x6d91kgj7whmg4";
-  sgr-iosevka-ss03 = "0v56qc9aj2k1vs7wxnni21hflady4n5qi05gysp193n7j440l3ci";
-  sgr-iosevka-ss04 = "0nidrw3pjcn5fz2a6ysvdkqah31rzgnsg4z7p804h9cnqwl2b2m4";
-  sgr-iosevka-ss05 = "0khphs4d28sas5i31kbbj2zv0b45vc0p05d9kyg3azl4hl72ic41";
-  sgr-iosevka-ss06 = "0qmr33qv890jqygz6gllh1g0fvvxyjmla0hb02zcgljrccwq7jyd";
-  sgr-iosevka-ss07 = "09952mnal5mdz5fqfg4ayidvxcc8sfwv7d127vdzxhawg60ikkss";
-  sgr-iosevka-ss08 = "1ymf7j5jx2jdh6n910d89k71m95hg05dp6g6mvv0c7m4yf5wd7m3";
-  sgr-iosevka-ss09 = "0gh7rx8fzbx61jba34kcwlazxg7ar4y6vp1h6aysn30fv7q9p7rp";
-  sgr-iosevka-ss10 = "0i72r3xllg8am12n700zylc1a8nc4xnj5zxhfhvlk1czdhv7dln6";
-  sgr-iosevka-ss11 = "0hs8b9fmjwxbl08652zfkgdmq0dds43jsr2qd3npmg6cg2xdiz2n";
-  sgr-iosevka-ss12 = "0crs18k93v2xsry8fmf07wfpl3n7ixdn2sy7xls4ijk5wk0nd6vr";
-  sgr-iosevka-ss13 = "1fg883qjpqpcxwh9bwc88nzihisr212q1fdrrzy8q3p9vy322j5j";
-  sgr-iosevka-ss14 = "1ix85cr0prgfrxckzgf2xdnh9zv6d8v2f4lf6syq0rax2wpdxdk7";
-  sgr-iosevka-ss15 = "098fjkjlgnzmw4wgr2d7vx627xiq7n19rc2x5f6qhqcfxcvayf0f";
-  sgr-iosevka-ss16 = "0ibfr10h6gxnimpq0bbp2n61a4y4rdkwa5x6m8hlxndxi801zy8j";
-  sgr-iosevka-ss17 = "11zx7lpp8xy67x35a6089s3fq0i1yqfdkckxnp2f32szv67midp0";
-  sgr-iosevka-ss18 = "1zdfk1a9sixn7as75sjf7sgh3qhhhs819305i9aw93dy4ghvc4zc";
-  sgr-iosevka-term = "091rkh4abm90hakq78w7r3ks9kcyx7kpcfvvcx8ydq7qammc2064";
-  sgr-iosevka-term-curly = "0kqxraz8jl7w97yf4x9jp7rkbkxjj85yghw0f70g3idxmzk2n4fh";
-  sgr-iosevka-term-curly-slab = "1q10n7wckzv1y9dq0b3jj61h39mcjhkga310pm8r0mjh59jsqxxk";
-  sgr-iosevka-term-slab = "1pzd5gzz7s1gawvvqnh8gfc6cm5c56ajvkc6c3fnjycl1v9fr3fg";
-  sgr-iosevka-term-ss01 = "0za9kwg389znql9jycs02xnmn9wi9c9ganwlqrsmazgcg6cxksds";
-  sgr-iosevka-term-ss02 = "0qli57cva503qvxqx86lrl6mjmbq9n0i04198vzjs5ad151iqk2a";
-  sgr-iosevka-term-ss03 = "0yfp4a6m9dl67kc8wa4skzrlkh1ysh0a0ndv3gvknaidzpqyigwh";
-  sgr-iosevka-term-ss04 = "1b8yvv3i66d0j4z8fh94q97hqgw404pf1z57p7kx31nlgs0p26kq";
-  sgr-iosevka-term-ss05 = "1x6adciw3irh6xsxjlw668l0cz094zin1p4f83allc2bkphq3f9w";
-  sgr-iosevka-term-ss06 = "1z73jak1ffc1mdnfh3j1z33b8sj5bbh5s86mn7ki5fy5wvq65sih";
-  sgr-iosevka-term-ss07 = "1f028x2m39xphvx265qzh3mrirj3rkwv9jmr5q4qdpvpk7xnbra9";
-  sgr-iosevka-term-ss08 = "1i0k7k21fmnb0s5ri840a45ycxmm9dz2zw59n4sxivyv70fhhsfc";
-  sgr-iosevka-term-ss09 = "1qn891rqxha2sr9w2h885xx4fnyc9scjqqp148dpsnn32cg7bqpr";
-  sgr-iosevka-term-ss10 = "02a1nxcv4q6s6kvlxrq7b9xdym2j7in40pkw05df8wqmlqzmgv2b";
-  sgr-iosevka-term-ss11 = "0fwjn4a5p65q5rdbb9wb979ff4k5r2ifh2x99jhj0xhwpy8dza1i";
-  sgr-iosevka-term-ss12 = "1ycga16psqw4jh6gzxji6sbvhlq6488hkkqwsh1h860gjql0ckm6";
-  sgr-iosevka-term-ss13 = "1f715vxs5j5ham5ihpxzq36ykn2nm2f62gg8s3yzsyp9s58sndmd";
-  sgr-iosevka-term-ss14 = "1l2s2naa77xv1dwng6lw0zccbndaln8viamsgmbrqjwfdisbrlzw";
-  sgr-iosevka-term-ss15 = "1wmkpilp06633rdaf5dzbw48srikh5a8jvk8prcwka4flrs5crnq";
-  sgr-iosevka-term-ss16 = "0ccxfk87qp4lr3g67lzbphw6rknvc78h66bbpq5smk0diad8q3nc";
-  sgr-iosevka-term-ss17 = "1hm0m9gr8pwbp34fsg9dxcmawn2czmx908gajv4miq4wg0ivsz8k";
-  sgr-iosevka-term-ss18 = "1ylbvygxdn3f2crkrywhj0jc15hdpwh08f925xxygq3vrshd22r6";
+  Iosevka = "1mz2l4j2kczk540gx2nbj40apympy9b7sih9nr3585yg14axihfa";
+  IosevkaAile = "0rlajr2gzj8n2jynz86yr382jbxffi6rygkb7a2psp6b91p3q8yg";
+  IosevkaCurly = "1zp5015qvrnzpp2hr8cxrdb8qw86bmn80cr7jwl119dmdsk7aaks";
+  IosevkaCurlySlab = "1lkq462j3a2bm791d67xsymdgz3fjjakakdzyjj3plvycg39rszd";
+  IosevkaEtoile = "17shszmnrsxis5hvafsp3j0p7izzqw9fv0j0bp7x0dxljdhj9f4x";
+  IosevkaSlab = "03xcj0y7m9rp9p9vh8mah83kap3bfssbxfpl4jwdjq661f43pkxw";
+  IosevkaSS01 = "1hc3x3m5p22483asdfy1anvlxvpagwf8k23kri0r5i003cyhs4kb";
+  IosevkaSS02 = "0rcmiirz5hkfb8pjsgz1sqjr6dj6w922yx60fz8icg5743q7n8gs";
+  IosevkaSS03 = "02lyihd7acr6ai22k78qk18zfgs63rmwv57v2hkz248nz04xhg5v";
+  IosevkaSS04 = "06by2zj9m5v70hpa7krf443817dikzyc1sawldgqjz83nwhnnbyq";
+  IosevkaSS05 = "1f6bvc47rc843n6a12j3mdf223df8rr542xjvg4zh9g6lmm35bj9";
+  IosevkaSS06 = "0vrpygvg5ywhqzam1yndmbxlq72fmab70ns6pmn9yx4gpa95gdr3";
+  IosevkaSS07 = "0g69bwhxgnk8lyqyvvg7hg88lfgakh4vjkxcjpqnymia3bd5siiy";
+  IosevkaSS08 = "0a02ar74m8cas3x9mfwi1ncbnvrgcipii17qip0c3f1d7a0qpf8i";
+  IosevkaSS09 = "1mh77424jxnf5hicy9v3kgzngy4cvh0kwkqpyfhdk8f7alqnlk8v";
+  IosevkaSS10 = "05bqjz33j78q4daf40js6rcli8q7i2y1ldxnpgsrlirk7cr3q88y";
+  IosevkaSS11 = "11blakgiqhvl5z34py7lw23m32f1qqinajrya1pi10i2q2kwhm06";
+  IosevkaSS12 = "0zb9xrw83a3g4rany2prkxw6x707rxziv0fjj1vjmdpxcdpmndi6";
+  IosevkaSS13 = "1li250cjnyihs1ha3y3xhw3fbr60bz068513zjf7pjqwjpaj1lqq";
+  IosevkaSS14 = "027g4lj3qqmq6m2bpk79i8bf0d402yqwnk800zzbhvgc32pmrwz5";
+  IosevkaSS15 = "0ndn2y8sq9b3667j4cvz5nqyfs5sldn231xba4q79naq4cgjphkl";
+  IosevkaSS16 = "17vndj8h8dcgbsvzmjvzyzj30zzpqjyxch346a1zhrpaq4slmahp";
+  IosevkaSS17 = "0y95r32x5z75nk3rqvqx9makr3lpkyap8zlwg1aq2hfcnfppf2mf";
+  IosevkaSS18 = "1w70hv0fapx3a7zmnrayzxc0wxsk6rc9czr2spjjy42l60nrf4fl";
+  SGr-Iosevka = "1n8haiwyvsxi9qf2h63jp2ilr9iqc7dgw7j3znji8dpwzvyl86hh";
+  SGr-IosevkaCurly = "0g86gdhqw231bgqy26shi8bm6216rvyxzwvnjis7hjqg3b312z9x";
+  SGr-IosevkaCurlySlab = "0cy1nzqn138cd1xipb76pz36dd3mgss2vmmqlbqwjjcwpr8h0s0s";
+  SGr-IosevkaFixed = "187g1q32blj0nkfd3yxjgscnz7zslh5k58abnx7fjd30s5n5yscr";
+  SGr-IosevkaFixedCurly = "1mgbbhazvqxm1r9cl6slr1y0bdna6h7as0q5iggh6zqan0zrr70c";
+  SGr-IosevkaFixedCurlySlab = "1v8gsjbl5136scnd06k7hhbkzsvjbg9j2g1xj5pgvda0lanqy0r4";
+  SGr-IosevkaFixedSlab = "05jf8yzkp61aggyb8rky9wlj16g9xfhf0qgr8n9p4wf51i1fikky";
+  SGr-IosevkaFixedSS01 = "1h43f0vn1hlv7676v620dss9ijwlnjkdjzf3zs590k5cm0xpfmfj";
+  SGr-IosevkaFixedSS02 = "004idwfv9fww05q44bdqcc1m47sjdkh0ybrv3k3djgkm4ii3irjf";
+  SGr-IosevkaFixedSS03 = "0l4i8fzy1ypfcb43475jyccij8a9s2bm7pvbbrckkhmi357f53mh";
+  SGr-IosevkaFixedSS04 = "15kmg0xvi1l32fd3swl5rz539xxif5vx57rr0byrg9bi9ksvsfg6";
+  SGr-IosevkaFixedSS05 = "07i8nd9z42xxjqb73if3zqznipgkjlvh06rckrp3k9ylpr608rgr";
+  SGr-IosevkaFixedSS06 = "0s9zh2v0qykqjrms8wbrarjid3vjd3d0mas7pl75d207smcy1sf2";
+  SGr-IosevkaFixedSS07 = "1bkqj44xjnafp1vmlyg91zpjwsqc991infbpcgrmm1kd7nxsdki1";
+  SGr-IosevkaFixedSS08 = "1jyrnc94cr47glmjn9as5yz534j2lzb171rr5ybmjf1f1iir8hh5";
+  SGr-IosevkaFixedSS09 = "1kpf263mjddjdl4nk06pp0x48ia73pyicvqkkk6jw556w0gbmd38";
+  SGr-IosevkaFixedSS10 = "0dx5bjc8xhxg6a6h6620v3nz3jnldq4is1cw2g4j0xxr2wigi1q2";
+  SGr-IosevkaFixedSS11 = "0zc66j2x7z95lycmi7phyjl7wxf8fxy0x6dywsksm54rzqpw2x2n";
+  SGr-IosevkaFixedSS12 = "0z7riwx6kq3v35vap4vnp23xlwdczp4mdzkwq8w73v0ki47mm1vf";
+  SGr-IosevkaFixedSS13 = "0nq1l70fw1rlj6ijs3drjrgwsfrgl3r7hzmv4dzaw3135irbw7jl";
+  SGr-IosevkaFixedSS14 = "15i7qy09x7xgcl097l430nbs4zfmdqsjqlqxlnvxh8l7if52glx0";
+  SGr-IosevkaFixedSS15 = "04pl83npfvy7zyhxnzsds04sq0ffilkgvj74i8w74jrr6ncsigc5";
+  SGr-IosevkaFixedSS16 = "0ib27fr1mj6zdyp99h425wyw1g4a0qdgz7wkbvnvjm7s9api750w";
+  SGr-IosevkaFixedSS17 = "0ln4i0q5yszb1162rm6dgfnssqc09zak400rjhwkf89z8nggyjnr";
+  SGr-IosevkaFixedSS18 = "0pi4qnzjlkzfdlnf853aamhb1dbinhcs42al6dara8j4la2mw9b0";
+  SGr-IosevkaSlab = "17fcn0b79z901kdzyjxlx46d6b40x2rib6lnh6bja7g4n42ha8rc";
+  SGr-IosevkaSS01 = "1xrdrydi9ync2iybpbf4k5iax1i7pfbmn1grbql07b13snagcjsy";
+  SGr-IosevkaSS02 = "13m6si5mamblvdbnaz16fl9gnpq0r5zr0iwrv4fycs21bz12gz3w";
+  SGr-IosevkaSS03 = "0s6ljh6igx7i188c86xy3gpwc37xzm2d5w3f6sdp1sg8cgr71iaf";
+  SGr-IosevkaSS04 = "15xlzn0mi150h8hy03bz611w5vla61nhannglfmsa8bljqwb33sp";
+  SGr-IosevkaSS05 = "1ljkb44sycdh6gira2fjflbmcfkqs3fsv2xf493bl2mvd46kkh2b";
+  SGr-IosevkaSS06 = "1ra5s2f1ydpzg742yg1d1fawvhvxijq8ibi7maf99k1pf4qkpvak";
+  SGr-IosevkaSS07 = "1cx9k8f6qnqfz2klcqdbnbz9ndr353kvg5w817b84zqbb2isyy2g";
+  SGr-IosevkaSS08 = "0i3sz05nmabvxa62j85hw4hs53q378x4sy715af8cpzy1xwg46qh";
+  SGr-IosevkaSS09 = "1pbd35y5rfa7hlvgci3a5mfixpq3dcg69yd539csy4riz99nbnzz";
+  SGr-IosevkaSS10 = "0br4g7hdf3crnxkax2qy6nm1prgygl8j78jlhkfqhzfmzxajf2v3";
+  SGr-IosevkaSS11 = "1k6vg4xkarch1vxry6wk1fsns563a6afv88pd286gid332hjlzk5";
+  SGr-IosevkaSS12 = "01sraf0kw9kfm33ybglpqml59blggsp7q4hpi2jmf2nm05qzd5kz";
+  SGr-IosevkaSS13 = "0ga9j1cd9vgiwji2pz3w1dmgd7r8abnd8486fyfjqzjcw9vh4w06";
+  SGr-IosevkaSS14 = "0d1d65d52r7snmzhyb8r6i78z7mjmhz8psw20843bg8wrbpd35yq";
+  SGr-IosevkaSS15 = "11bxcnpj4b6w9v4kwg6lfg4gingh9aigfwwi7q7iv8bzhv6pznng";
+  SGr-IosevkaSS16 = "0bk8cs7qm4q36s28hrdg3sd7b6v2b9xfvam8vsxfbdsdwy8p7ksv";
+  SGr-IosevkaSS17 = "0qz53fa53bin4an8dh66j29j019zhb4pni1j6isijm1lr37i7xmf";
+  SGr-IosevkaSS18 = "02d57rs879r8rnikdpcr6vk1i191c674jvxw7qzanyflfi9xr90m";
+  SGr-IosevkaTerm = "1pamv5s6d11kxvhcy6id985rz895y02px65dv7s761ci5a1rvayx";
+  SGr-IosevkaTermCurly = "09781j6hhv7v3qrh79kdg3kzyfdwfy217fz5mwhr36qjikwlbbiq";
+  SGr-IosevkaTermCurlySlab = "1kx0nzgcrggwgw06520nrfhym5yi6k1rfgbgdc6f7a93hdkyb8v1";
+  SGr-IosevkaTermSlab = "07i6wbqxaaxr4xg9avs7473x0w2zcyg6zxpgby8l7lcv4g6wrn23";
+  SGr-IosevkaTermSS01 = "1g8lbkk5z1kypcwhkn9izdbg246imnhfa0g2xssy2xd41jmk9djn";
+  SGr-IosevkaTermSS02 = "04n26jkd8dp91n1a0ifr4srsxhpg3rcp9k56r1xjrc0wjpwmw05n";
+  SGr-IosevkaTermSS03 = "108160gn6ggw1piz7r4ngwyfhycqhx350v8x6lcrfjlcx1mp5isk";
+  SGr-IosevkaTermSS04 = "0qw7n2i8p323mr73pimjyb1rlk2m07d34qswgwpqvfj0jbbp3bp3";
+  SGr-IosevkaTermSS05 = "0diwqrdyl43c6kng7rvg8wc7m2r5bri999rvn99xdhsll644b7zd";
+  SGr-IosevkaTermSS06 = "08wql4iwkczxb0nz74iwnkr2gnafw4wa3x2yaxyd7rqf5qdlf0pr";
+  SGr-IosevkaTermSS07 = "1hlcfx89yz0j0f93v0gww72m8jdy8k6cbmj7nhh4yqyvph9clqqa";
+  SGr-IosevkaTermSS08 = "1z4qxhlibyimjwizwp5i3b8c827c4pvdfib1ma7f8c654jni7v8k";
+  SGr-IosevkaTermSS09 = "1847m7zksg0ndn8kzx7hlqmwc9hs7rgaywqqzyp7ahpa5cwyk9zr";
+  SGr-IosevkaTermSS10 = "16nyrrim1g0zf5n4mp9k1iz8l5pgb3w9hlafhl4ys5xn7fw47cfc";
+  SGr-IosevkaTermSS11 = "0ry7h0ghwgi5ra36dgsc8zdkyxrd8srpc12ix9glcficbkhkkisp";
+  SGr-IosevkaTermSS12 = "1iri5bcjlwcni9k64y7cq3rh4106hrimpi4c47ii249nk6q2ppak";
+  SGr-IosevkaTermSS13 = "0qkkxq4gmf13wzic31y477hi3rkyihs0bxmch8nh1myy8fmj4fik";
+  SGr-IosevkaTermSS14 = "04pjjmy3mh3721fxf10hgii2d8gzc7x76v4mv6m84spwa2g8c72c";
+  SGr-IosevkaTermSS15 = "1lix7g00xx4yrq7xc2jik0bh6iib7sqyn2zsrng9pph4589vri22";
+  SGr-IosevkaTermSS16 = "076wy7yix7d217c87pp61x4nwqmmlzpqzlidq5v49jcdrdxj4b7k";
+  SGr-IosevkaTermSS17 = "0qdb5603nxs93sv1f06svf0r0c9b0qmpnr3grif3qx09ifpqnkfb";
+  SGr-IosevkaTermSS18 = "0whg2lxndn3j5jlnhjy6zj1lkwd4q0qf0pbf8kajhvnlrn6yx0ca";
 }
diff --git a/pkgs/data/fonts/julia-mono/default.nix b/pkgs/data/fonts/julia-mono/default.nix
index 6b343bcb163d1..dc9ebf5ef25fb 100644
--- a/pkgs/data/fonts/julia-mono/default.nix
+++ b/pkgs/data/fonts/julia-mono/default.nix
@@ -2,12 +2,12 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "JuliaMono-ttf";
-  version = "0.053";
+  version = "0.054";
 
   src = fetchzip {
     url = "https://github.com/cormullion/juliamono/releases/download/v${version}/${pname}.tar.gz";
     stripRoot = false;
-    hash = "sha256-KvDyT0T8ecpSoNmqvsvDMooWNNe+z/PvxYj1Nd6qqfA=";
+    hash = "sha256-DtvaFu3r2r5WmlFCbkbzqAk/Y2BNEnxR6hPDfKM+/aQ=";
   };
 
   installPhase = ''
diff --git a/pkgs/data/fonts/junicode/default.nix b/pkgs/data/fonts/junicode/default.nix
index 919d77f10f4f5..1bc12ad70abbd 100644
--- a/pkgs/data/fonts/junicode/default.nix
+++ b/pkgs/data/fonts/junicode/default.nix
@@ -1,15 +1,25 @@
-{ lib, stdenvNoCC, fetchzip }:
+{ lib, stdenvNoCC, fetchzip, texlive, callPackage }:
 
 stdenvNoCC.mkDerivation rec {
   pname = "junicode";
-  version = "2.203";
+  version = "2.206";
 
   src = fetchzip {
     url = "https://github.com/psb1558/Junicode-font/releases/download/v${version}/Junicode_${version}.zip";
-    hash = "sha256-RG12veiZXqjfK2gONmauhGReuLEkqxbQ4h4PEwaih/U=";
+    hash = "sha256-oOKg85Yz5/2/pvwjVqeQXE8xE7X+QJvPYwYN+E18oEc=";
   };
 
-  outputs = [ "out" "doc" ];
+  outputs = [ "out" "doc" "tex" ];
+
+  patches = [ ./tex-font-path.patch ];
+
+  postPatch = ''
+    substituteInPlace TeX/junicode.sty \
+      --replace '@@@opentype_path@@@' "$out/share/fonts/opentype/" \
+      --replace '@@@truetype_path@@@' "$out/share/fonts/truetype/"
+    substituteInPlace TeX/junicodevf.sty \
+      --replace '@@@truetype_path@@@' "$out/share/fonts/truetype/"
+  '';
 
   installPhase = ''
     runHook preInstall
@@ -20,9 +30,18 @@ stdenvNoCC.mkDerivation rec {
 
     install -Dm 444 -t $doc/share/doc/${pname}-${version} docs/*.pdf
 
+    install -Dm 444 -t $tex/tex/latex/junicode TeX/junicode.sty
+    install -Dm 444 -t $tex/tex/latex/junicodevf TeX/junicodevf.{sty,lua}
+
     runHook postInstall
   '';
 
+  passthru = {
+    tlDeps = with texlive; [ xkeyval fontspec ];
+
+    tests = callPackage ./tests.nix { };
+  };
+
   meta = {
     homepage = "https://github.com/psb1558/Junicode-font";
     description = "A Unicode font for medievalists";
diff --git a/pkgs/data/fonts/junicode/test-vf.tex b/pkgs/data/fonts/junicode/test-vf.tex
new file mode 100644
index 0000000000000..a23437b40efd8
--- /dev/null
+++ b/pkgs/data/fonts/junicode/test-vf.tex
@@ -0,0 +1,46 @@
+\documentclass{article}
+
+\usepackage{junicodevf}
+
+\begin{document}
+\begin{enumerate}
+\item {\jBold Bold}
+\item {\jBoldItalic BoldItalic}
+\item {\jCond Cond}
+\item {\jCondItalic CondItalic}
+\item {\jCondLight CondLight}
+\item {\jCondLightItalic CondLightItalic}
+\item {\jCondMedium CondMedium}
+\item {\jCondMediumItalic CondMediumItalic}
+\item {\jExp Exp}
+\item {\jExpItalic ExpItalic}
+\item {\jExpBold ExpBold}
+\item {\jExpBoldItalic ExpBoldItalic}
+\item {\jExpMedium ExpMedium}
+\item {\jExpMediumItalic ExpMediumItalic}
+\item {\jExpSmbold ExpSmbold}
+\item {\jExpSmboldItalic ExpSmboldItalic}
+\item {\jItalic Italic}
+\item {\jLight Light}
+\item {\jLightItalic LightItalic}
+\item {\jMedium Medium}
+\item {\jMediumItalic MediumItalic}
+\item {\jRegular Regular}
+\item {\jSmbold Smbold}
+\item {\jSmboldItalic SmboldItalic}
+\item {\jSmCond SmCond}
+\item {\jSmCondItalic SmCondItalic}
+\item {\jSmCondLight SmCondLight}
+\item {\jSmCondLightItalic SmCondLightItalic}
+\item {\jSmCondMedium SmCondMedium}
+\item {\jSmCondMediumItalic SmCondMediumItalic}
+\item {\jSmExp SmExp}
+\item {\jSmExpItalic SmExpItalic}
+\item {\jSmExpBold SmExpBold}
+\item {\jSmExpBoldItalic SmExpBoldItalic}
+\item {\jSmExpMedium SmExpMedium}
+\item {\jSmExpMediumItalic SmExpMediumItalic}
+\item {\jSmExpSmbold SmExpSmbold}
+\item {\jSmExpSmboldItalic SmExpSmboldItalic}
+\end{enumerate}
+\end{document}
diff --git a/pkgs/data/fonts/junicode/test.tex b/pkgs/data/fonts/junicode/test.tex
new file mode 100644
index 0000000000000..d82f40f1279f2
--- /dev/null
+++ b/pkgs/data/fonts/junicode/test.tex
@@ -0,0 +1,46 @@
+\documentclass{article}
+
+\usepackage[fonttype=@fonttype@]{junicode}
+
+\begin{document}
+\begin{enumerate}
+\item {\jBold Bold}
+\item {\jBoldItalic BoldItalic}
+\item {\jCond Cond}
+\item {\jCondItalic CondItalic}
+\item {\jCondLight CondLight}
+\item {\jCondLightItalic CondLightItalic}
+\item {\jCondMedium CondMedium}
+\item {\jCondMediumItalic CondMediumItalic}
+\item {\jExp Exp}
+\item {\jExpItalic ExpItalic}
+\item {\jExpBold ExpBold}
+\item {\jExpBoldItalic ExpBoldItalic}
+\item {\jExpMedium ExpMedium}
+\item {\jExpMediumItalic ExpMediumItalic}
+\item {\jExpSmBold ExpSmBold}
+\item {\jExpSmBoldItalic ExpSmBoldItalic}
+\item {\jItalic Italic}
+\item {\jLight Light}
+\item {\jLightItalic LightItalic}
+\item {\jMedium Medium}
+\item {\jMediumItalic MediumItalic}
+\item {\jRegular Regular}
+\item {\jSmBold SmBold}
+\item {\jSmBoldItalic SmBoldItalic}
+\item {\jSmCond SmCond}
+\item {\jSmCondItalic SmCondItalic}
+\item {\jSmCondLight SmCondLight}
+\item {\jSmCondLightItalic SmCondLightItalic}
+\item {\jSmCondMedium SmCondMedium}
+\item {\jSmCondMediumItalic SmCondMediumItalic}
+\item {\jSmExp SmExp}
+\item {\jSmExpItalic SmExpItalic}
+\item {\jSmExpBold SmExpBold}
+\item {\jSmExpBoldItalic SmExpBoldItalic}
+\item {\jSmExpMedium SmExpMedium}
+\item {\jSmExpMediumItalic SmExpMediumItalic}
+\item {\jSmExpSmBold SmExpSmBold}
+\item {\jSmExpSmBoldItalic SmExpSmBoldItalic}
+\end{enumerate}
+\end{document}
diff --git a/pkgs/data/fonts/junicode/tests.nix b/pkgs/data/fonts/junicode/tests.nix
new file mode 100644
index 0000000000000..831e60796d12f
--- /dev/null
+++ b/pkgs/data/fonts/junicode/tests.nix
@@ -0,0 +1,34 @@
+{ lib, runCommand, junicode, texliveBasic }:
+let
+  texliveWithJunicode = texliveBasic.withPackages (p: [ p.xetex junicode ]);
+
+  texTest = { package, tex, fonttype, file }:
+    lib.attrsets.nameValuePair "${package}-${tex}-${fonttype}" (
+      runCommand "${package}-test-${tex}-${fonttype}.pdf"
+        {
+          nativeBuildInputs = [ texliveWithJunicode ];
+          inherit tex fonttype file;
+        } ''
+        substituteAll $file test.tex
+        HOME=$PWD $tex test.tex
+        cp test.pdf $out
+      '');
+in
+builtins.listToAttrs (
+  lib.mapCartesianProduct texTest
+    {
+      tex = [ "xelatex" "lualatex" ];
+      fonttype = [ "ttf" "otf" ];
+      package = [ "junicode" ];
+      file = [ ./test.tex ];
+    }
+  ++
+  [
+    (texTest {
+      package = "junicodevf";
+      fonttype = "ttf";
+      tex = "lualatex";
+      file = ./test-vf.tex;
+    })
+  ]
+)
diff --git a/pkgs/data/fonts/junicode/tex-font-path.patch b/pkgs/data/fonts/junicode/tex-font-path.patch
new file mode 100644
index 0000000000000..13b311b39ce65
--- /dev/null
+++ b/pkgs/data/fonts/junicode/tex-font-path.patch
@@ -0,0 +1,166 @@
+Upstream style file relies on font files being present on the system
+globally.  This is not quite how Nix usually does thing, so this patch
+changes the style file to instead look fonts up in hardcoded
+locations, which are later patched up to refer to the package outputs,
+thus ensuring the style always uses the fonts packaged with it.
+
+diff --git a/TeX/junicode.sty b/TeX/junicode.sty
+index 83bd45d..8fe671c 100644
+--- a/TeX/junicode.sty
++++ b/TeX/junicode.sty
+@@ -208,7 +208,14 @@
+ 
+ \RequirePackage{fontspec}
+ \defaultfontfeatures{Ligatures=TeX, Extension=.\junicode@fonttype}
+-\defaultfontfeatures{Ligatures=TeX}
++
++\def\junicode@fonttype@otf{otf}
++
++\ifx\junicode@fonttype\junicode@fonttype@otf
++  \def\junicode@fontpath{@@@opentype_path@@@}
++\else
++  \def\junicode@fontpath{@@@truetype_path@@@}
++\fi
+ 
+ \ifxetex
+ \typeout{\junicode@regstylename}
+@@ -219,6 +226,7 @@
+    ItalicFont =        *-\junicode@italstylename,
+    BoldFont =          *-\junicode@boldstylename,
+    BoldItalicFont =    *-\junicode@boldstylename Italic,
++   Path =              \junicode@fontpath,
+   ]{Junicode}
+ \fi
+ \ifluatex
+@@ -230,6 +238,7 @@
+    ItalicFont =        *-\junicode@italstylename,
+    BoldFont =          *-\junicode@boldstylename,
+    BoldItalicFont =    *-\junicode@boldstylename Italic,
++   Path =              \junicode@fontpath,
+   ]{Junicode}
+ \fi
+ 
+@@ -242,6 +251,7 @@
+         #3
+         Numbers =           {\junicode@figurealign,\junicode@figurestyle},
+         SmallCapsFeatures = {Letters=SmallCaps},
++        Path =              \junicode@fontpath,
+     ]
+ }
+ \fi
+@@ -252,6 +262,7 @@
+         #3
+         Numbers =           {\junicode@figurealign,\junicode@figurestyle},
+         SmallCapsFeatures = {Letters=SmallCaps},
++        Path =              \junicode@fontpath,
+     ]
+ }
+ \fi
+diff --git a/TeX/junicodevf.lua b/TeX/junicodevf.lua
+index 7148668..acebe82 100644
+--- a/TeX/junicodevf.lua
++++ b/TeX/junicodevf.lua
+@@ -148,7 +148,7 @@ function mkfontcommands()
+          romfontcmd = "jRegular"
+          italfontcmd = "jItalic"
+       end
+-      tex.print("\\junicodevf@newfont{\\" .. romfontcmd .. "}{JunicodeVF}{\\" .. defcmd .. "}{\\" .. defsizecmd .. "}")
++      tex.print("\\junicodevf@newfont{\\" .. romfontcmd .. "}{JunicodeVF-Roman}{\\" .. defcmd .. "}{\\" .. defsizecmd .. "}")
+       tex.print("\\junicodevf@newfont{\\" .. italfontcmd .. "}{JunicodeVF-Italic}{\\" .. defcmd .. "}{\\" .. defsizecmd .. "}")
+    end
+ end
+diff --git a/TeX/junicodevf.sty b/TeX/junicodevf.sty
+index c01ccaf..07a99ad 100644
+--- a/TeX/junicodevf.sty
++++ b/TeX/junicodevf.sty
+@@ -168,11 +168,13 @@ mkwidthcommands(wdindex, adjustment)}}
+ 
+ % DECLARE THE FONTS
+ 
+-\setmainfont{Junicode VF}[
+-    ItalicFont =         {*-Italic},
+-    BoldFont =           {*},
+-    BoldItalicFont =     {*-Italic},
++\setmainfont{JunicodeVF-Roman}[
++    ItalicFont =         {JunicodeVF-Italic},
++    BoldFont =           {JunicodeVF-Roman},
++    BoldItalicFont =     {JunicodeVF-Italic},
+     Renderer =           HarfBuzz,
++    Extension =          .ttf,
++    Path =               @@@truetype_path@@@,
+     Numbers =            {\junicodevf@figurealign,\junicodevf@figurestyle},
+     \MainDef,
+     UprightFeatures =    {\MainRegDef
+@@ -188,6 +190,8 @@ mkwidthcommands(wdindex, adjustment)}}
+ \newcommand*{\junicodevf@newfont}[4]{
+     \setfontface#1{#2}[
+         Renderer =          HarfBuzz,
++        Extension =          .ttf,
++        Path =               @@@truetype_path@@@,
+         Numbers =           {\junicodevf@figurealign,\junicodevf@figurestyle},
+         SmallCapsFont =     {*},
+         SmallCapsFeatures = {Letters=SmallCaps},
+@@ -200,43 +204,59 @@ mkwidthcommands(wdindex, adjustment)}}
+ 
+ % ENLARGED FACES
+ 
+-\setfontface\EnlargedOne{JunicodeVF}[
++\setfontface\EnlargedOne{JunicodeVF-Roman}[
+     Renderer = HarfBuzz,
++    Extension = .ttf,
++    Path = @@@truetype_path@@@,
+     \ENLAOneSizeDef
+ ]
+ 
+ \setfontface\EnlargedOneItalic{JunicodeVF-Italic}[
+     Renderer = HarfBuzz,
++    Extension = .ttf,
++    Path = @@@truetype_path@@@,
+     \ENLAOneSizeDef
+ ]
+ 
+-\setfontface\EnlargedTwo{JunicodeVF}[
++\setfontface\EnlargedTwo{JunicodeVF-Roman}[
+     Renderer = HarfBuzz,
++    Extension = .ttf,
++    Path = @@@truetype_path@@@,
+     \ENLATwoSizeDef
+ ]
+ 
+ \setfontface\EnlargedTwoItalic{JunicodeVF-Italic}[
+     Renderer = HarfBuzz,
++    Extension = .ttf,
++    Path = @@@truetype_path@@@,
+     \ENLATwoSizeDef
+ ]
+ 
+-\setfontface\EnlargedThree{JunicodeVF}[
++\setfontface\EnlargedThree{JunicodeVF-Roman}[
+     Renderer = HarfBuzz,
++    Extension = .ttf,
++    Path = @@@truetype_path@@@,
+     \ENLAThreeSizeDef
+ ]
+ 
+ \setfontface\EnlargedThreeItalic{JunicodeVF-Italic}[
+     Renderer = HarfBuzz,
++    Extension = .ttf,
++    Path = @@@truetype_path@@@,
+     \ENLAThreeSizeDef
+ ]
+ 
+-\setfontface\EnlargedFour{JunicodeVF}[
++\setfontface\EnlargedFour{JunicodeVF-Roman}[
+     Renderer = HarfBuzz,
++    Extension = .ttf,
++    Path = @@@truetype_path@@@,
+     \ENLAFourSizeDef
+ ]
+ 
+ \setfontface\EnlargedFourItalic{JunicodeVF-Italic}[
+     Renderer = HarfBuzz,
++    Extension = .ttf,
++    Path = @@@truetype_path@@@,
+     \ENLAFourSizeDef
+ ]
+ 
diff --git a/pkgs/data/fonts/kode-mono/default.nix b/pkgs/data/fonts/kode-mono/default.nix
index 9792590c46d30..c4cd9f2de3613 100644
--- a/pkgs/data/fonts/kode-mono/default.nix
+++ b/pkgs/data/fonts/kode-mono/default.nix
@@ -2,11 +2,11 @@
 
 stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "kode-mono";
-  version = "1.201";
+  version = "1.206";
 
   src = fetchzip {
     url = "https://github.com/isaozler/kode-mono/releases/download/${finalAttrs.version}/kode-mono-fonts.zip";
-    hash = "sha256-ssrs79Rg4izFCI2j6jHkFvBLcMgwIm3NAQzeX7QRMTE=";
+    hash = "sha256-0EZTlSqGCavSwjpKcEFv2L/bkKLE2jLyBWPSnmxQ3ww=";
     stripRoot = false;
   };
 
diff --git a/pkgs/data/fonts/lxgw-neoxihei/default.nix b/pkgs/data/fonts/lxgw-neoxihei/default.nix
deleted file mode 100644
index 0e7a9888aed8c..0000000000000
--- a/pkgs/data/fonts/lxgw-neoxihei/default.nix
+++ /dev/null
@@ -1,32 +0,0 @@
-{ lib
-, fetchurl
-, stdenvNoCC
-}:
-
-stdenvNoCC.mkDerivation rec {
-  pname = "lxgw-neoxihei";
-  version = "1.108";
-
-  src = fetchurl {
-    url = "https://github.com/lxgw/LxgwNeoXiHei/releases/download/v${version}/LXGWNeoXiHei.ttf";
-    hash = "sha256-Wx2fmvIEHgimu7BJ49xWK7c08Rsf3fsjMLTdyedgK3I=";
-  };
-
-  dontUnpack = true;
-
-  installPhase = ''
-    runHook preInstall
-
-    install -Dm644 $src $out/share/fonts/truetype/LXGWNeoXiHei.ttf
-
-    runHook postInstall
-  '';
-
-  meta = with lib; {
-    description = "A Simplified Chinese sans-serif font derived from IPAex Gothic";
-    homepage = "https://github.com/lxgw/LxgwNeoXiHei";
-    license = licenses.ipa;
-    platforms = platforms.all;
-    maintainers = with maintainers; [ zendo ];
-  };
-}
diff --git a/pkgs/data/fonts/lxgw-wenkai/default.nix b/pkgs/data/fonts/lxgw-wenkai/default.nix
index 991fff3c0bdc0..8ce458d3e4a36 100644
--- a/pkgs/data/fonts/lxgw-wenkai/default.nix
+++ b/pkgs/data/fonts/lxgw-wenkai/default.nix
@@ -2,11 +2,11 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "lxgw-wenkai";
-  version = "1.315";
+  version = "1.320";
 
   src = fetchurl {
     url = "https://github.com/lxgw/LxgwWenKai/releases/download/v${version}/${pname}-v${version}.tar.gz";
-    hash = "sha256-btiF6jij8sw/kynQedUdy9//5rPPhtnRhmZ59FY+S0c=";
+    hash = "sha256-9crFUfj1mOXg4gD607jL2eHq8wlq/yEi5sgzKJ5YavM=";
   };
 
   installPhase = ''
diff --git a/pkgs/data/fonts/marathi-cursive/default.nix b/pkgs/data/fonts/marathi-cursive/default.nix
index 7f6bedc75e8bd..4da56b2251c5a 100644
--- a/pkgs/data/fonts/marathi-cursive/default.nix
+++ b/pkgs/data/fonts/marathi-cursive/default.nix
@@ -22,7 +22,7 @@ stdenvNoCC.mkDerivation rec {
     homepage = "https://github.com/MihailJP/MarathiCursive";
     description = "Modi script font with Graphite and OpenType support";
     maintainers = with maintainers; [ mathnerd314 ];
-    license = licenses.mit; # It's the M+ license, M+ is MIT(-ish)
+    license = licenses.mplus;
     platforms = platforms.all;
   };
 }
diff --git a/pkgs/data/fonts/material-icons/default.nix b/pkgs/data/fonts/material-icons/default.nix
index f03e8683e5097..993e25ba2cd33 100644
--- a/pkgs/data/fonts/material-icons/default.nix
+++ b/pkgs/data/fonts/material-icons/default.nix
@@ -1,25 +1,33 @@
-{ lib, stdenvNoCC, fetchFromGitHub }:
+{ lib, stdenvNoCC, fetchFromGitHub, nix-update-script }:
 
-stdenvNoCC.mkDerivation rec {
+stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "material-icons";
-  version = "3.0.1";
+  version = "4.0.0";
 
   src = fetchFromGitHub {
     owner = "google";
     repo = "material-design-icons";
-    rev = version;
-    hash = "sha256-4FphNJCsaLWzlVR4TmXnDBid0EVj39fkeoh5j1leBZ8=";
+    rev = finalAttrs.version;
+    hash = "sha256-wX7UejIYUxXOnrH2WZYku9ljv4ZAlvgk8EEJJHOCCjE=";
   };
 
+  dontConfigure = true;
+  dontBuild = true;
+
   installPhase = ''
     runHook preInstall
 
     mkdir -p $out/share/fonts/truetype
-    cp iconfont/*.ttf $out/share/fonts/truetype
+    cp font/*.ttf $out/share/fonts/truetype
+
+    mkdir -p $out/share/fonts/opentype
+    cp font/*.otf $out/share/fonts/opentype
 
     runHook postInstall
   '';
 
+  passthru.updateScript = nix-update-script { };
+
   meta = with lib; {
     description = "System status icons by Google, featuring material design";
     homepage = "https://material.io/icons";
@@ -27,4 +35,4 @@ stdenvNoCC.mkDerivation rec {
     platforms = platforms.all;
     maintainers = with maintainers; [ mpcsh ];
   };
-}
+})
diff --git a/pkgs/data/fonts/mplus-outline-fonts/default.nix b/pkgs/data/fonts/mplus-outline-fonts/default.nix
index 06d4f018e6447..401295dda1b31 100644
--- a/pkgs/data/fonts/mplus-outline-fonts/default.nix
+++ b/pkgs/data/fonts/mplus-outline-fonts/default.nix
@@ -25,7 +25,7 @@ in
       homepage = "https://mplus-fonts.osdn.jp";
       maintainers = with maintainers; [ uakci ];
       platforms = platforms.all;
-      license = licenses.mit;
+      license = licenses.mplus;
     };
   };
 
diff --git a/pkgs/data/fonts/nasin-nanpa/default.nix b/pkgs/data/fonts/nasin-nanpa/default.nix
index cd05c667a2487..339c89dd9b0b4 100644
--- a/pkgs/data/fonts/nasin-nanpa/default.nix
+++ b/pkgs/data/fonts/nasin-nanpa/default.nix
@@ -2,29 +2,18 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "nasin-nanpa";
-  version = "2.5.1";
+  version = "3.1.0";
 
-  srcs = [
-    (fetchurl {
-      name = "nasin-nanpa.otf";
-      url = "https://github.com/ETBCOR/nasin-nanpa/releases/download/n${version}/nasin-nanpa-${version}.otf";
-      hash = "sha256-++uOrqFzQ6CB/OPEmBivpjMfAtFk3PSsCNpFBjOtGEg=";
-    })
-    (fetchurl {
-      name = "nasin-nanpa-lasina-kin.otf";
-      url = "https://github.com/ETBCOR/nasin-nanpa/releases/download/n${version}/nasin-nanpa-${version}-lasina-kin.otf";
-      hash = "sha256-4WIX74y2O4NaKi/JQrgTbOxlKDQKJ/F9wkQuoOdWuTI=";
-    })
-  ];
+  src = fetchurl {
+    url = "https://github.com/ETBCOR/nasin-nanpa/releases/download/n${version}/nasin-nanpa-${version}.otf";
+    hash = "sha256-remTvvOt7kpvTdq9H8tFI2yU+BtqePXlDDLQv/jtETU=";
+  };
 
   dontUnpack = true;
 
   installPhase = ''
     mkdir -p $out/share/fonts/opentype
-    for src in $srcs; do
-        file=$(stripHash $src)
-        cp $src $out/share/fonts/opentype/$file
-    done
+    cp $src $out/share/fonts/opentype/nasin-nanpa.otf
   '';
 
   meta = with lib; {
diff --git a/pkgs/data/fonts/nerdfonts/shas.nix b/pkgs/data/fonts/nerdfonts/shas.nix
index 5a12102376308..b7ad0b67aa1b8 100644
--- a/pkgs/data/fonts/nerdfonts/shas.nix
+++ b/pkgs/data/fonts/nerdfonts/shas.nix
@@ -1,66 +1,69 @@
 {
-  "0xProto" = "0a05a5pzqrncijngdn39v4dckq54sip1sclyyazfwgz5lyazwsac";
-  "3270" = "0fdfwgjn2gx1a3pakyqlbq2yijrs7i8z7zcgb59qy7dfn1ddc1wc";
-  "Agave" = "1akiinz10nmwqffdms3367hizbnk2y2d545ypz94hfvp3b5kpagr";
-  "AnonymousPro" = "1nkg8wxcw0fvshvbphaqq3hwsi14lj5adh93nklg7y9zvqyyg63m";
-  "Arimo" = "04dfmy16jvrm0n4y2fwad9d3ijwibb3rhm8b0gxyfx30ipm7ar67";
-  "AurulentSansMono" = "0h7n1dxim6623s7b6nww72g28qfbdafakzpzmkdv0nywa0k0z6bw";
-  "BigBlueTerminal" = "1y5i2bkcszi48ajman2gm4vsqxdh03hf0l66bdzaihfxbxx7wsc1";
-  "BitstreamVeraSansMono" = "0y8b9ckq9im3mnzz66zk8alkgf450hy9a2gwb1zvb1s93kc8jmfb";
-  "CascadiaCode" = "1x5y55s6nc7k7lnrwv547a3vaf65q099mj17qindki27vylp4pvg";
-  "CascadiaMono" = "1168l2lvb5wi4wy2hplm8mxzwvk4k0si4sgabpamxn7qwynxg875";
-  "CodeNewRoman" = "1bj6jf9h0975f5syxibgw1vbw5hf1yh7lz118s6nmfdnjd3gkgxh";
-  "ComicShannsMono" = "1c32nhk02aiiz8cwws1rhvikyb27i5jbigy9k20n6zcj5v1n2b4f";
-  "CommitMono" = "00anj74dzjbf2b51r52qcw28jbvpd3v9p9gnws5c1bhjc4p0a3h0";
-  "Cousine" = "1apa96haqyi1ya7w5n7bvmy80gwqvawc9pnwcw19z1j8vmlxziya";
-  "D2Coding" = "12caqhh15glw4spmgf2l9xfwhab8mjrjdpcx0rf9zyd4fhn6rdj2";
-  "DaddyTimeMono" = "145nhbp5b83s5n2nqnmijnwl7g7ddpn6mzkqfip33ywsvvd5zrsy";
-  "DejaVuSansMono" = "1bxmylj3lg8w56maxp0z2zqfi4rwggabvcgkn6n4wzm2bm6l13dg";
-  "DroidSansMono" = "02cxbklawvvywbyh0b82mh4wvnbnl3b17lxy5hfhjarzzfm6zqf7";
-  "EnvyCodeR" = "0zy4mydpi0yvp15vd4yk5389pgxj2m2cx1pa3c749r81wrmc7b82";
-  "FantasqueSansMono" = "1nrs1vn8n7pm7fhvirxq77581ck2c1z8cj4454az2x3scglc6qb3";
-  "FiraCode" = "1brqps4j1n57l4y25m38mjcsxhl1jdhiwf5dgi482zbfi89yx5l7";
-  "FiraMono" = "0gf2vd9zz33hjkm2l1nyk458j561x7mva6p2nc3ja92156q99ci2";
-  "GeistMono" = "09ch98xwdj4qwcmkhb10fm6xjg0038q2gnrllyjnyd3jyph4klh1";
-  "Go-Mono" = "03946zrsdvb7mbbc6l5ar292jdpf9k77jvdjgh2vgml1ibxg91q5";
-  "Gohu" = "1qm97n6w8msw2s6gbmch7m5j1q50karrj9m2mp79ifhv808j7k4g";
-  "Hack" = "05ls81d15lgscc163451da5wxyj3ckr06kiml5fa31nvzsr0r0hd";
-  "Hasklig" = "117236vqcf2j70irb5a36n509swssmv2310c43b1ffxx5m4ysq0n";
-  "HeavyData" = "1mm0qj8pk8da7ffzh6sxlgis188k25k6r11vwa9albmsqb99qnp3";
-  "Hermit" = "157xyw1hdwhsr20dsp71kpm7kgv63ag0xdhyinkmcdfc0nmr14p1";
-  "iA-Writer" = "1gc1nv13bh91c2hq64acvmdyn314n61l465j0dzl6r3wzqcc0civ";
-  "IBMPlexMono" = "0a67c2imml0r888s9sfjsw0dvm14anw70j98aq00hx637xs8j5ka";
-  "Inconsolata" = "0vj68n1l8baxgyhm5dblqq74gns8gc7g41kh9j6dxq1xg9p9v5bg";
-  "InconsolataGo" = "0pqv0jj7kg9q3iw0acv59ip6ccgdwypk0qjniyqxbr786rpl2wvx";
-  "InconsolataLGC" = "13xi6s8v5rymw827hm89wiaf9gbnysmria7wqjv94c43yxx95xwm";
-  "IntelOneMono" = "07z4gk8jb2s0i8g7dza88gadb2hl3af71cl3pdkkz31ihjs19x21";
-  "Iosevka" = "00579ljkpry71iwihj9ncmx36hgnxy6hasgbk0wnxc9qizxx6ya1";
-  "IosevkaTerm" = "00qjllymd94cdj0jpcydn2xqylvfaga81lw5rjpl1in1jpwmnmad";
-  "IosevkaTermSlab" = "0vf4gha5v069ck0y7aq501c443vr7gnn5qrbacgjhs9lmdamx2ap";
-  "JetBrainsMono" = "1f8xi8kgyik59ahjm3pcrb2s02c9a9i6kwf5b4651zpjmjy5l8lj";
-  "Lekton" = "0fzmrfwhxykgr4m274v5pza7n6ayk52dprfx1vrjflcqmm3h4k8h";
-  "LiberationMono" = "1gfim5av892rcxwg0jdfa8an5k6sd683fkhf46ydi5sydw59bdp1";
-  "Lilex" = "0n4h968gv24szrpqkllypgpxwzf0bf7kvm6v5jfcgdcfvswkqm2w";
-  "MartianMono" = "1bbrcjkgvga4wnbh0hbx64ldc8plcl7zkyh4d7hja85nhh5z377f";
-  "Meslo" = "165mkzl3lfg01cmx1pngbjynrskwgdvh74ir4jjbp9im3xp9nbfh";
-  "Monaspace" = "0xp859zn2agj8mya1mxprlhlawb9k7r0x6dzl6isilf7n444wjq0";
-  "Monofur" = "1g0kbazkap4f4kiidc68b3za2kls9mj0qxwrvlrlgwdjlcri9n6n";
-  "Monoid" = "0faxfb0nb6j1zcsdic0xkgvi7g6n41jnx4m0rcyd5c8xparalg1v";
-  "Mononoki" = "10zs46vyffr4z84ay1rw2w9bl5yi85sapiwa3bqp2wkvh68as418";
-  "MPlus" = "1r5l09pk2dw3lq9y7ffg5qnblwv02mabj6w41vcp1w5yzp9agqrj";
-  "NerdFontsSymbolsOnly" = "0v3x4aiia098zbpb0pabi6srzmlxcdcwky7nf7mha8g47c6xdwnz";
-  "Noto" = "00byck8xwmr4fkj4ah6sbifvl8lwsclgqj96ygqci6pn9rwgrc3i";
-  "OpenDyslexic" = "0fan7yn3wadq6gsa69nz92m0ibzwhfp1b57jgh96ifq1k2prrlrp";
-  "Overpass" = "0inij9mi1v375yykxf1sy5jh5hgp6p6n7szzwwshbv37xsispqnq";
-  "ProFont" = "0l8diqylagjj6q0gqmfrz0vh1jzag2pwm4i7czy843bzgv04p9ci";
-  "ProggyClean" = "1wsb7xz5wx9rni0n01vyhj6a1x0r7fd733fbd3ynmykcqz4v7kfv";
-  "RobotoMono" = "1jsqhfahn0fmdk3m40x0fipfm8bmwyg7w0bi3cjbqrzvg7m1f197";
-  "ShareTechMono" = "12x08z717w13agcf4xbwgzmi9qqzycr3rrc4wyykm2cnrpldhss4";
-  "SourceCodePro" = "0fmxjgjxg4r956svry7ngxlxs7sp7arlbyaynm9dvxqpw46jylhk";
-  "SpaceMono" = "1imgcrv0000l1hd8hynas5d1x3mr7nq2xhc8drlqhcgcd4hxil2f";
-  "Terminus" = "0k1lm09rs0kih0fhrmmw87261pyl6c1s3507qs8hzbx75hsmzy2a";
-  "Tinos" = "11p0a9np9lknxmsddiwqlsw72rbwmc1hagahh37gah95gx5sxgyz";
-  "Ubuntu" = "0xm0qqphsaq9mr6a4lip2bnls687wxzh6hjljyvjrfdjam9d5q3m";
-  "UbuntuMono" = "0slcb7yd9imk2l4jkg2k1gr05xp0a6jb6gv2bzab2igkv737s62b";
-  "VictorMono" = "1yhj87vwwap8wr88bdmpgfb4s6qmszvczj2rg10rjkgsn4c0q6d2";
+  "0xProto" = "09q4ipl3vvav3jbs0s14fqmd2wk70mc7i8mmplpj20jwcicm05ng";
+  "3270" = "0zcj5xhylyqxpwn6dzp28kh8xybhh4y9lva3smcqs7iklhbf8s31";
+  "Agave" = "1xxylrjb0zbq3kj14fx5d3lpb7abl0br6mkj961i391qyqlx01y3";
+  "AnonymousPro" = "1lq9wkf8c153jkjmhnddih12y9xd4gabbkgac0vx9j98hmy7yjqy";
+  "Arimo" = "1f7zljmljrp1dxkrhkyz8zh9ddv7l7m9br6gaygzxr26bq0vrwr0";
+  "AurulentSansMono" = "0wlwwgp1w7rqvqx66dkqwhz5flw75620fj9fb795hakpkjiya6yp";
+  "BigBlueTerminal" = "115cxnll1iyj75f5wi7b7pi5hgfa3b5kbx269alm9183h284lb23";
+  "BitstreamVeraSansMono" = "1s6jpg0vrdwgi9qyn0mbcy8r7h1lqw8z6q39wiin61szfn642a2k";
+  "CascadiaCode" = "1sg6czl3km7yi70vdcyb0ff1xkq1p4nalj0yh164gan3psp9mxss";
+  "CascadiaMono" = "0rrknf86kdwyjpnryp5870nmnq2sxjda8pgs93z23lh7hw758wln";
+  "CodeNewRoman" = "0p1wkmpzcrxw8qv5lf9fwsxqpjglhwim83amf7i8mmxdx1drzlj5";
+  "ComicShannsMono" = "1p35nmzl51mn2mk0g9fdcawvssv4v7bklxxmdx99357ihnlka26w";
+  "CommitMono" = "0jjzi98i28s3z2x8v7rakcdhgdf7jxzagj8snrylw2mvwn7mlgqp";
+  "Cousine" = "1ccq3sp8fqbi0njm9w2p6cf5r7avpan5fklwzpx4mknwbdqlrwdq";
+  "D2Coding" = "1c0chgbsmzlgq0vinbcz7ydkdhnram8cif8zx8kkpha31abna5n0";
+  "DaddyTimeMono" = "1nz4g26a4dx7ng5nv6bc4hg474inan1c00c86mdlmvl2vgmx6zbf";
+  "DejaVuSansMono" = "12x18i15723hxc1l6ng92m77wycjk0d6r15j34n1zsww5r6xwjxr";
+  "DroidSansMono" = "1mqd1qqbs9dxwmi98i4xw88c68l1bww1sqlsmxmn86368rjh14fk";
+  "EnvyCodeR" = "197g4jaljcb1yncn9rvh17n077p7bq0v59lvb9vqkq3lms5lzjni";
+  "FantasqueSansMono" = "079mk8xrri4r1d5k1w5fv1hb0hp3w499csirkd6yriss35sbhv9d";
+  "FiraCode" = "1i1vw65f00n6vjinyqr1bq5ni5r6g8cjinrfl5zhlqm0gagv5x6y";
+  "FiraMono" = "1i9bfxblx568wsjq7ks1kyyfn9k36i4r2an4n45mb46swc94n8n0";
+  "GeistMono" = "0wvc9hqkh7ap3ysklcin8k72706l72p2wyqv3bg5brzcmwcpy90g";
+  "Go-Mono" = "0j6rr0r7418f8a5bmxbagpmcf7bas2n53f0hg835zp2ikx9cx924";
+  "Gohu" = "0h8hjiqs3f6xwn7g4wg12xim65ybw2546nlf5p9ip4ymr7x17dks";
+  "Hack" = "1wxmd4jr4p11cfhzs5chyh649vps6sdz4bq28204npkd7wzh5fc9";
+  "Hasklig" = "1nja4r8sn67g3gn85xhb1h7p1pi96wl0hpg5b5gyd1z5llbgzc2g";
+  "HeavyData" = "1a3a1pixv97wlnai24zb8dhkzxb2llcarhjkfrgd4syhn37sdf7n";
+  "Hermit" = "1bh18rzwma7gzrx3ybw8g2s9k5xv7wx8ybnyas3qaxb03fpjqm93";
+  "iA-Writer" = "0vsppg62l35zhzlsa0fwczv09pk1nhrag9xhcaadipd962dv7c45";
+  "IBMPlexMono" = "0hd04z17l2p21hij4a0gmwnlfxs7s8qqh08zf4pzqld10557gqlp";
+  "Inconsolata" = "1xy3h05zy49h91k7fqk8934p1f776w46i0bh510addg12w8mm7rc";
+  "InconsolataGo" = "0hcvh3s2rnnir03pszfmmwhbdsapx1b516phhjhb4wl0dqma9q39";
+  "InconsolataLGC" = "0bfwhzbz422kfdv9ppr83cc2aqqdn7g49f73zipl4yp5636gi5ks";
+  "IntelOneMono" = "0388390dlcprxhxxl57gy8rllwk8wsd92b5xwnqwb5f394gbc5m0";
+  "Iosevka" = "0dzkcn277jxiqrrqkyigw6jgd4lp9411r28rkpkwx6js6px27q8v";
+  "IosevkaTerm" = "1xccqkydkhmhq8akk23kkypqzcc2svyicxv9gblwzwbndjrfgmdm";
+  "IosevkaTermSlab" = "1svig63li8mjj2dkgiawgb82gpk8vkrkhih5cp0a6174bh4gycii";
+  "JetBrainsMono" = "01j0rkgrix7mdp9fx0y8zzk1kh40yfcp932p0r5y666aq4mq5y3c";
+  "Lekton" = "00cm8ni3cnmgzwj1ypvpcy8gvnlz31la51j411dpsdqsclbcp0i2";
+  "LiberationMono" = "1941pgw723a6my44g6idi56a88qvsi8lj3wl7slpr5l3pmfda2lx";
+  "Lilex" = "0qz23h6a77i4n8nmhb7hc56mkiwn3pj1s6dbl2v53fvypwghswm2";
+  "MartianMono" = "0zfcvi150yn274i41n66zr20hqgqb0r5v75q21bbgqvaysl4wj32";
+  "Meslo" = "1sjrsr7i3diz4h7wkrl8va7b40g4m1432dz6bpbm2nmp89aszg8s";
+  "Monaspace" = "0il36cm37pc6ndp96j32j0fqpqvwyv2xm3jr7d3zxwax1lcfilp5";
+  "Monofur" = "10gzx2r5a5f5jl192c6cwsil5k57aslmryfnilkv4g8417xmn0zb";
+  "Monoid" = "1fhsb326lc093ckrq2kz4vhr3ibrgp8y0mwa3qwdbapldxazz9f7";
+  "Mononoki" = "18zp94dnv6kp8l58151dybjf2w1gi99nh1rw098hkrf52gfrfdpb";
+  "MPlus" = "0x7yvpkn32x50y9zpdpjrp1gvwwp4fsmjbqbnfzy14xhi03p0q2w";
+  "NerdFontsSymbolsOnly" = "0y4r1rid5sjd9ihi6nkwy0sja792aghg21bpl3ri029b9pifx8xp";
+  "Noto" = "0vq9lgf4j6pi7pw3bfgfzkcdixnhikf4yys8fr0qql7mkwhj3rjb";
+  "OpenDyslexic" = "1yl1fm4pfjvxq411m6f8nycqjnpnhkllmlx16wjrjfqpaf63mm4n";
+  "Overpass" = "1plcn2qx2b08va65zagn1ybkh850157ii7x20nnrhp0h5f4rddzw";
+  "ProFont" = "11c3shv09dssjbjwa44y64dwq7dxn3gs23bfgvhkv51vshsx0fzy";
+  "ProggyClean" = "1l822wqrz7xmgnw535i9vl9gwjl4h037hi3xl0g4907kcdxwan0s";
+  "Recursive" = "1fngqsl1shbfbb1wcx77di42g65lm9f5fcw93m8dcvdzk5lxpxz5";
+  "RobotoMono" = "0g6yvz4vpfcylnshhyhwy5llz61n8m0a0vp4jgjhiir5svcd9krw";
+  "ShareTechMono" = "0mxsywg4gns31yzh1256y7pkbh0m6n3rf8gbb55mxw219ngskkyv";
+  "SourceCodePro" = "088vi947kavk1pkvbl68kv7nz84yvfkj725n2zn7ypq354kkm92n";
+  "SpaceMono" = "0f4kcm4i3y11mpxb9anmn8759zpv3lvril4shp3d4mfc0k3dgfdn";
+  "Terminus" = "04kzc594sb5vk8fd3ww9ip7jsy4vi6wmxdf6vzsvb2fgd98ck335";
+  "Tinos" = "14c31qv3ik0in44k98zjn398cffwgq8z7d5lx7sk6iv12hikrd11";
+  "Ubuntu" = "1bgk4hx26qn5ylsydsy9655isz05ir7154pv8dy4x5rpr144s9ba";
+  "UbuntuMono" = "15kkgx6i4f7zn6fdaw2dqqw3hcpl3pi4cy4g5jx67af8qlhqarrb";
+  "UbuntuSans" = "0jj4v198zshwhns5swrh02h2np3wgnv8lacn8b7jhmcd575cgy1y";
+  "VictorMono" = "03rh7rc6a934sgd1bs7h7y1swqwbv3g7zi624k6hd8v1m3f0j6xa";
+  "ZedMono" = "0yhb9fp7ahw8niki1njzk8pbl0iy53pgf7gx5yfc2ass9vjwky9d";
 }
diff --git a/pkgs/data/fonts/nerdfonts/version.nix b/pkgs/data/fonts/nerdfonts/version.nix
index b6d7788c7faeb..038707f5b9ecc 100644
--- a/pkgs/data/fonts/nerdfonts/version.nix
+++ b/pkgs/data/fonts/nerdfonts/version.nix
@@ -1 +1 @@
-"3.1.1"
+"3.2.1"
diff --git a/pkgs/data/fonts/openmoji/build.patch b/pkgs/data/fonts/openmoji/build.patch
new file mode 100644
index 0000000000000..ddc9b554caf0d
--- /dev/null
+++ b/pkgs/data/fonts/openmoji/build.patch
@@ -0,0 +1,77 @@
+diff --git a/helpers/generate-fonts-runner.sh b/helpers/generate-fonts-runner.sh
+index 21267e50f..873b5c664 100755
+--- a/helpers/generate-fonts-runner.sh
++++ b/helpers/generate-fonts-runner.sh
+@@ -25,10 +25,10 @@ mkdir -p "$build_dir"
+ 
+ # Change these to enable/disable formats
+ # Remember to update font/README.md accordingly
+-methods_black=(glyf)
+-methods_color=(cbdt glyf_colr_0 glyf_colr_1 sbix picosvgz untouchedsvgz)
++#methods_black=(glyf)
++#methods_color=(cbdt glyf_colr_0 glyf_colr_1 sbix picosvgz untouchedsvgz)
+ 
+-saturations=(black color)
++#saturations=(black color)
+ for saturation in "${saturations[@]}"; do
+     case "$saturation" in
+     black)
+@@ -43,6 +43,7 @@ for saturation in "${saturations[@]}"; do
+     mkdir -p "$build_dir/$saturation"
+ 
+     for method in "${methods[@]}"; do
++        if [ -z "$method" ]; then continue; fi
+         cat >"$build_dir/$saturation/OpenMoji-$saturation-$method.toml" <<-EOF
+ output_file = "$build_dir/$saturation/OpenMoji-$saturation-$method.ttf"
+ color_format = "$method"
+@@ -55,10 +56,7 @@ default = 400
+ 
+ [master.regular]
+ style_name = "Regular"
+-
+-# To quickly check build reverse comments below
+-srcs = ["/mnt/$saturation/svg/*.svg"]
+-# srcs = ["/mnt/$saturation/svg/1F923.svg", "/mnt/$saturation/svg/1F1E9-1F1F0.svg"]
++srcs = ["$(pwd)/$saturation/svg/*.svg"]
+ 
+ [master.regular.position]
+ wght = 400
+@@ -71,7 +69,7 @@ EOF
+     for method in "${methods[@]}"; do
+         # Generate XML for font
+         sed "s/Color/${saturation^}/;" \
+-            /mnt/data/OpenMoji-Color.ttx \
++            data/OpenMoji-Color.ttx \
+             > "$build_dir/$saturation/OpenMoji-$saturation-$method.ttx"
+ 
+         # Add version to XML
+@@ -89,25 +87,21 @@ EOF
+ 
+         # Compress with WOFF2
+         woff2_compress "$build_dir/fonts/OpenMoji-$saturation-$method/OpenMoji-$saturation-$method.ttf"
+-
+-        # Generate font demo
+-        /mnt/helpers/generate-font-demo.js "OpenMoji-$saturation-$method.woff2" "$build_dir/fonts/OpenMoji-$saturation-$method"
+     done
+ done
+ 
+-for colr_version in 0 1; do
++for colr_version in "${maximumColorVersions[@]}"; do
++    if [ -z "$colr_version" ]; then continue; fi
+     # Make TTF with both COLR and SVG font data in it
+     mkdir -p "$build_dir/fonts/OpenMoji-color-colr${colr_version}_svg"
+ 
+-    maximum_color \
++    maximum_color --build_dir="$build_dir/color" \
+         "$build_dir/fonts/OpenMoji-color-glyf_colr_${colr_version}/OpenMoji-color-glyf_colr_${colr_version}.ttf"\
+         --output_file "$build_dir/fonts/OpenMoji-color-colr${colr_version}_svg/OpenMoji-color-colr${colr_version}_svg.ttf"
+ 
+     woff2_compress "$build_dir/fonts/OpenMoji-color-colr${colr_version}_svg/OpenMoji-color-colr${colr_version}_svg.ttf"
+ 
+-    /mnt/helpers/generate-font-demo.js\
+-        "OpenMoji-color-colr${colr_version}_svg.woff2"\
+-        "$build_dir/fonts/OpenMoji-color-colr${colr_version}_svg"
++    rm -rf "$build_dir/fonts/OpenMoji-color-glyf_colr_${colr_version}"
+ done
+ 
+ echo "Done building fonts!"
diff --git a/pkgs/data/fonts/openmoji/default.nix b/pkgs/data/fonts/openmoji/default.nix
index fd0d8882059c4..3f19bbe91f338 100644
--- a/pkgs/data/fonts/openmoji/default.nix
+++ b/pkgs/data/fonts/openmoji/default.nix
@@ -1,93 +1,85 @@
 { lib
-, stdenv
+, stdenvNoCC
 , fetchFromGitHub
-, fetchpatch
-, scfbuild
-, fontforge
-, node-glob
-, libuninameslist
-, nodejs
-, nodePackages
+, nanoemoji
 , python3Packages
-, variant ? "color" # "color" or "black"
+, woff2
+, xmlstarlet
+  # available color formats: ["cbdt" "glyf_colr_0" "glyf_colr_1" "sbix" "picosvgz" "untouchedsvgz"]
+  # available black formats: ["glyf"]
+, fontFormats ? [ "glyf" "cbdt" "glyf_colr_0" "glyf_colr_1" ]
+  # when at least one of the glyf_colr_0/1 formats is specified, whether to build maximum color fonts
+  # "none" to not build any, "svg" to build colr+svg, "bitmap" to build cbdt+colr+svg fonts
+, buildMaximumColorFonts ? "bitmap"
 }:
-
 let
-  filename = builtins.replaceStrings
-    [ "color"              "black"              ]
-    [ "OpenMoji-Color.ttf" "OpenMoji-Black.ttf" ]
-    variant;
+  # all available methods
+  methods = {
+    black = [ "glyf" ];
+    color = [ "cbdt" "glyf_colr_0" "glyf_colr_1" "sbix" "picosvgz" "untouchedsvgz" ];
+  };
+in
 
-  # With newer fontforge the build hangs, see
-  # https://github.com/NixOS/nixpkgs/issues/167869
-  # Patches etc taken from
-  # https://github.com/NixOS/nixpkgs/commit/69da642a5a9bb433138ba1b13c8d56fb5bb6ec05
-  fontforge-20201107 = fontforge.overrideAttrs (old: rec {
-    version = "20201107";
-    src = fetchFromGitHub {
-      owner = "fontforge";
-      repo = "fontforge";
-      rev = version;
-      sha256 = "sha256-Rl/5lbXaPgIndANaD0IakaDus6T53FjiBb45FIuGrvc=";
-    };
-    patches = [
-      (fetchpatch {
-        url = "https://salsa.debian.org/fonts-team/fontforge/raw/76bffe6ccf8ab20a0c81476a80a87ad245e2fd1c/debian/patches/0001-add-extra-cmake-install-rules.patch";
-        sha256 = "u3D9od2xLECNEHhZ+8dkuv9818tPkdP6y/Tvd9CADJg=";
-      })
-      (fetchpatch {
-        url = "https://github.com/fontforge/fontforge/commit/69e263b2aff29ad22f97f13935cfa97a1eabf207.patch";
-        sha256 = "06yyf90605aq6ppfiz83mqkdmnaq5418axp9jgsjyjq78b00xb29";
-      })
-    ];
-    buildInputs = old.buildInputs ++ [ libuninameslist ];
-  });
-  scfbuild-with-fontforge-20201107 = scfbuild.override (old: {
-    fontforge = fontforge-20201107;
-  });
+assert lib.asserts.assertEachOneOf "fontFormats" fontFormats (methods.black ++ methods.color);
+assert lib.asserts.assertOneOf "buildMaximumColorFonts" buildMaximumColorFonts [ "none" "bitmap" "svg" ];
 
-in stdenv.mkDerivation rec {
+stdenvNoCC.mkDerivation rec {
   pname = "openmoji";
-  version = "14.0.0";
+  version = "15.0.0";
 
   src = fetchFromGitHub {
     owner = "hfg-gmuend";
     repo = pname;
     rev = version;
-    sha256 = "sha256-XnSRSlWXOMeSaO6dKaOloRg3+sWS4BSaro4bPqOyKmE=";
+    hash = "sha256-659ONkHU45Z2789ay0yLero9j5nFWhslpJad++4oNN8=";
   };
 
+  patches = [
+    # fix paths and variables for nix build and skip generating font demos
+    ./build.patch
+  ];
+
   nativeBuildInputs = [
-    scfbuild-with-fontforge-20201107
-    nodejs
-    node-glob
-    nodePackages.lodash
+    nanoemoji
+    python3Packages.fonttools
+    woff2
+    xmlstarlet
   ];
 
-  postPatch = ''
-    # this is API change in glob >9
-    substituteInPlace helpers/generate-font-glyphs.js \
-      --replace "require('glob').sync" "require('glob').globSync"
+  methods_black = builtins.filter (m: builtins.elem m fontFormats) methods.black;
+  methods_color = builtins.filter (m: builtins.elem m fontFormats) methods.color;
+  saturations = lib.optional (methods_black != [ ]) "black" ++ lib.optional (methods_color != [ ]) "color";
+  maximumColorVersions = lib.optionals (buildMaximumColorFonts != "none") (
+    lib.optional (builtins.elem "glyf_colr_0" fontFormats) "0"
+    ++ lib.optional (builtins.elem "glyf_colr_1" fontFormats) "1"
+  );
+
+  postPatch = lib.optionalString (buildMaximumColorFonts == "bitmap") ''
+    substituteInPlace helpers/generate-fonts-runner.sh \
+      --replace 'maximum_color' 'maximum_color --bitmaps'
   '';
 
   buildPhase = ''
     runHook preBuild
 
-    node helpers/generate-font-glyphs.js
-
-    cd font
-    scfbuild -c scfbuild-${variant}.yml
+    bash helpers/generate-fonts-runner.sh "$(pwd)/build" "${version}"
 
     runHook postBuild
   '';
 
   installPhase = ''
-    install -Dm644 ${filename} $out/share/fonts/truetype/${filename}
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype $out/share/fonts/woff2
+    cp build/fonts/*/*.ttf $out/share/fonts/truetype/
+    cp build/fonts/*/*.woff2 $out/share/fonts/woff2/
+
+    runHook postInstall
   '';
 
   meta = with lib; {
     license = licenses.cc-by-sa-40;
-    maintainers = with maintainers; [ fgaz ];
+    maintainers = with maintainers; [ _999eagle fgaz ];
     platforms = platforms.all;
     homepage = "https://openmoji.org/";
     downloadPage = "https://github.com/hfg-gmuend/openmoji/releases";
diff --git a/pkgs/data/fonts/sarasa-gothic/default.nix b/pkgs/data/fonts/sarasa-gothic/default.nix
deleted file mode 100644
index b18b79950bfd3..0000000000000
--- a/pkgs/data/fonts/sarasa-gothic/default.nix
+++ /dev/null
@@ -1,34 +0,0 @@
-{ lib, stdenvNoCC, fetchurl, p7zip }:
-
-stdenvNoCC.mkDerivation rec {
-  pname = "sarasa-gothic";
-  version = "1.0.2";
-
-  src = fetchurl {
-    # Use the 'ttc' files here for a smaller closure size.
-    # (Using 'ttf' files gives a closure size about 15x larger, as of November 2021.)
-    url = "https://github.com/be5invis/Sarasa-Gothic/releases/download/v${version}/Sarasa-TTC-${version}.7z";
-    hash = "sha256-h34M5waO2uaqsZDYEEI72LIYv7B1Qjwms2v6qGTaNKg=";
-  };
-
-  sourceRoot = ".";
-
-  nativeBuildInputs = [ p7zip ];
-
-  installPhase = ''
-    runHook preInstall
-
-    mkdir -p $out/share/fonts/truetype
-    cp *.ttc $out/share/fonts/truetype
-
-    runHook postInstall
-  '';
-
-  meta = with lib; {
-    description = "A CJK programming font based on Iosevka and Source Han Sans";
-    homepage = "https://github.com/be5invis/Sarasa-Gothic";
-    license = licenses.ofl;
-    maintainers = [ maintainers.ChengCat ];
-    platforms = platforms.all;
-  };
-}
diff --git a/pkgs/data/fonts/sketchybar-app-font/default.nix b/pkgs/data/fonts/sketchybar-app-font/default.nix
index 006738fd4850e..ff1a2fe7c742c 100644
--- a/pkgs/data/fonts/sketchybar-app-font/default.nix
+++ b/pkgs/data/fonts/sketchybar-app-font/default.nix
@@ -1,34 +1,91 @@
+let
+  artifacts = [ "shell" "lua" "font" ];
+in
 { lib
 , stdenvNoCC
 , fetchurl
+, common-updater-scripts
+, curl
+, jq
+, writeShellScript
+, artifactList ? artifacts
 }:
+lib.checkListOfEnum "sketchybar-app-font: artifacts" artifacts artifactList
+  stdenvNoCC.mkDerivation
+  (finalAttrs:
+  let
+    selectedSources = map (artifact: builtins.getAttr artifact finalAttrs.passthru.sources) artifactList;
+  in
+  {
+    pname = "sketchybar-app-font";
+    version = "2.0.17";
 
-stdenvNoCC.mkDerivation (finalAttrs: {
-  pname = "sketchybar-app-font";
-  version = "1.0.21";
+    srcs = selectedSources;
 
-  src = fetchurl {
-    url = "https://github.com/kvndrsslr/sketchybar-app-font/releases/download/v${finalAttrs.version}/sketchybar-app-font.ttf";
-    hash = "sha256-k3Ok5qizXQvRCzW0oRilLWNJelYI0BGQ6qLbjhxosTA=";
-  };
+    unpackPhase = ''
+      runHook preUnpack
 
-  dontUnpack = true;
+      for s in $selectedSources; do
+        b=$(basename $s)
+        cp $s ''${b#*-}
+      done
 
-  installPhase = ''
-    runHook preInstall
+      runHook postUnpack
+    '';
+
+    installPhase = ''
+      runHook preInstall
+
+    '' + lib.optionalString (lib.elem "font" artifactList) ''
+      install -Dm644 ${finalAttrs.passthru.sources.font} "$out/share/fonts/truetype/sketchybar-app-font.ttf"
 
-    install -Dm644 $src $out/share/fonts/truetype/sketchybar-app-font.ttf
+    '' + lib.optionalString (lib.elem "shell" artifactList) ''
+      install -Dm755 ${finalAttrs.passthru.sources.shell} "$out/bin/icon_map.sh"
 
-    runHook postInstall
-  '';
+    '' + lib.optionalString (lib.elem "lua" artifactList) ''
+      install -Dm644 ${finalAttrs.passthru.sources.lua} "$out/lib/sketchybar-app-font/icon_map.lua"
 
-  meta = {
-    description = "A ligature-based symbol font and a mapping function for sketchybar";
-    longDescription = ''
-      A ligature-based symbol font and a mapping function for sketchybar, inspired by simple-bar's usage of community-contributed minimalistic app icons.
+      runHook postInstall
     '';
-    homepage = "https://github.com/kvndrsslr/sketchybar-app-font";
-    license = lib.licenses.unlicense;
-    maintainers = with lib.maintainers; [ khaneliman ];
-  };
-})
+
+    passthru = {
+      sources = {
+        font = fetchurl {
+          url = "https://github.com/kvndrsslr/sketchybar-app-font/releases/download/v${finalAttrs.version}/sketchybar-app-font.ttf";
+          hash = "sha256-iVSWFqhzf0ZxfQODAf+uvGIiWMjWbir6ZWurlx3n6/w=";
+        };
+        lua = fetchurl {
+          url = "https://github.com/kvndrsslr/sketchybar-app-font/releases/download/v${finalAttrs.version}/icon_map.lua";
+          hash = "sha256-/N16zLflQ2sONBFOZiIdC8KR1rd5pZvXftiXjXJvTVA=";
+        };
+        shell = fetchurl {
+          url = "https://github.com/kvndrsslr/sketchybar-app-font/releases/download/v${finalAttrs.version}/icon_map.sh";
+          hash = "sha256-nPBiNz+3oHwiertjMJ6YW6g6WZglGjassUGrsQVvnRM=";
+        };
+      };
+
+      updateScript = writeShellScript "update-sketchybar-app-font" ''
+        set -o errexit
+        export PATH="${lib.makeBinPath [ curl jq common-updater-scripts ]}"
+        NEW_VERSION=$(curl --silent https://api.github.com/repos/kvndrsslr/sketchybar-app-font/releases/latest | jq '.tag_name | ltrimstr("v")' --raw-output)
+        if [[ "${finalAttrs.version}" = "$NEW_VERSION" ]]; then
+            echo "The new version same as the old version."
+            exit 0
+        fi
+        for artifact in ${lib.escapeShellArgs (lib.mapAttrsToList(a: _: a) finalAttrs.passthru.sources)}; do
+          update-source-version "sketchybar-app-font" "0" "${lib.fakeHash}" --source-key="sources.$artifact"
+          update-source-version "sketchybar-app-font" "$NEW_VERSION" --source-key="sources.$artifact"
+        done
+      '';
+    };
+
+    meta = {
+      description = "A ligature-based symbol font and a mapping function for sketchybar";
+      longDescription = ''
+        A ligature-based symbol font and a mapping function for sketchybar, inspired by simple-bar's usage of community-contributed minimalistic app icons.
+      '';
+      homepage = "https://github.com/kvndrsslr/sketchybar-app-font";
+      license = lib.licenses.cc0;
+      maintainers = with lib.maintainers; [ khaneliman ];
+    };
+  })
diff --git a/pkgs/data/fonts/smiley-sans/default.nix b/pkgs/data/fonts/smiley-sans/default.nix
index 9c26bea807122..62d65aa5b0105 100644
--- a/pkgs/data/fonts/smiley-sans/default.nix
+++ b/pkgs/data/fonts/smiley-sans/default.nix
@@ -2,11 +2,11 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "smiley-sans";
-  version = "1.1.1";
+  version = "2.0.1";
 
   src = fetchzip {
     url = "https://github.com/atelier-anchor/smiley-sans/releases/download/v${version}/smiley-sans-v${version}.zip";
-    sha256 = "sha256-/lsAZRHgmx1TMjm2O5Z0IOiHQM8LKJPXcBKZrlXt3RA=";
+    sha256 = "sha256-p6DwX5MBPemAfV99L9ayLkEWro31ip4tf+wBQr8mkbs=";
     stripRoot = false;
   };
 
diff --git a/pkgs/data/fonts/spleen/default.nix b/pkgs/data/fonts/spleen/default.nix
index e97d8416610c0..ef9e2956b924e 100644
--- a/pkgs/data/fonts/spleen/default.nix
+++ b/pkgs/data/fonts/spleen/default.nix
@@ -2,11 +2,11 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "spleen";
-  version = "2.0.2";
+  version = "2.1.0";
 
   src = fetchurl {
     url = "https://github.com/fcambus/spleen/releases/download/${version}/spleen-${version}.tar.gz";
-    hash = "sha256-+TDrAolKoG61CuqqELAEICVNcjIPoow6QPFXqMKUN1U=";
+    hash = "sha256-i0fFbxpuuFj7z540UwVXQEsC+7NFXjjmT7hEc/0MNy8=";
   };
 
   nativeBuildInputs = [ xorg.mkfontscale ];
diff --git a/pkgs/data/fonts/sudo/default.nix b/pkgs/data/fonts/sudo/default.nix
index 874aeb4c4b55d..5678855ab80a8 100644
--- a/pkgs/data/fonts/sudo/default.nix
+++ b/pkgs/data/fonts/sudo/default.nix
@@ -2,11 +2,11 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "sudo-font";
-  version = "0.80";
+  version = "1.2";
 
   src = fetchzip {
     url = "https://github.com/jenskutilek/sudo-font/releases/download/v${version}/sudo.zip";
-    hash = "sha256-PUqWwWvi9k7Aj6L7NjlrBMFeRHKDUF5yX4efvi0nywI=";
+    hash = "sha256-8ucMeKbnrYtk2/ZeYxzp8MA4Ss952/opD8GpB01Ze/I=";
   };
 
   installPhase = ''
diff --git a/pkgs/data/fonts/tamzen/default.nix b/pkgs/data/fonts/tamzen/default.nix
index f589455e9811e..e8706c1971c6a 100644
--- a/pkgs/data/fonts/tamzen/default.nix
+++ b/pkgs/data/fonts/tamzen/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "tamzen-font";
-  version = "1.11.5";
+  version = "1.11.6";
 
   src = fetchFromGitHub {
     owner = "sunaku";
     repo = "tamzen-font";
     rev = "Tamzen-${version}";
-    sha256 = "00x5fipzqimglvshhqwycdhaqslbvn3rl06jnswhyxfvz16ymj7s";
+    sha256 = "sha256-W5Wqsm5rpzzcbJl2lv6ORAznaAwLcmJ2S6Qo2zIoq9I=";
   };
 
   nativeBuildInputs = [ xorg.mkfontscale ];
diff --git a/pkgs/data/fonts/twemoji-color-font/default.nix b/pkgs/data/fonts/twemoji-color-font/default.nix
index 2641fc1bc9407..a6e65ce689555 100644
--- a/pkgs/data/fonts/twemoji-color-font/default.nix
+++ b/pkgs/data/fonts/twemoji-color-font/default.nix
@@ -3,14 +3,14 @@
 , fetchurl
 }:
 
-stdenv.mkDerivation rec {
+stdenv.mkDerivation (finalAttrs: {
   pname = "twemoji-color-font";
   version = "14.0.2";
 
   # We fetch the prebuilt font because building it takes 1.5 hours on hydra.
   # Relevant issue: https://github.com/NixOS/nixpkgs/issues/97871
   src = fetchurl {
-    url = "https://github.com/eosrei/twemoji-color-font/releases/download/v${version}/TwitterColorEmoji-SVGinOT-Linux-${version}.tar.gz";
+    url = "https://github.com/eosrei/twemoji-color-font/releases/download/v${finalAttrs.version}/TwitterColorEmoji-SVGinOT-Linux-${finalAttrs.version}.tar.gz";
     sha256 = "sha256-aCbiHqCNxd8myIeuTlYEaYfg9JCd+MAsc94FcUoDU8E=";
   };
 
@@ -39,4 +39,4 @@ stdenv.mkDerivation rec {
     license = with licenses; [ cc-by-40 mit ];
     maintainers = [ maintainers.fgaz ];
   };
-}
+})
diff --git a/pkgs/data/fonts/u001/default.nix b/pkgs/data/fonts/u001/default.nix
index c50e972a4d69b..b0359ac1e55e8 100644
--- a/pkgs/data/fonts/u001/default.nix
+++ b/pkgs/data/fonts/u001/default.nix
@@ -5,8 +5,11 @@ stdenvNoCC.mkDerivation rec {
   version = "unstable-2016-08-01"; # date in the zip file, actual creation date unknown
 
   src = fetchzip {
-    url = "https://fontlibrary.org/assets/downloads/u001/3ea00b3c0c8fa6ce4373e5766fafd651/u001.zip";
-    sha256 = "sha256-7H32pfr0g68XP5B48VUY99e6fbd7rhH6fEnCKNXWEkU=";
+    urls = [
+      "https://fontlibrary.org/assets/downloads/u001/3ea00b3c0c8fa6ce4373e5766fafd651/u001.zip"
+      "https://web.archive.org/web/20220830085803/https://fontlibrary.org/assets/downloads/u001/3ea00b3c0c8fa6ce4373e5766fafd651/u001.zip"
+    ];
+    hash = "sha256-7H32pfr0g68XP5B48VUY99e6fbd7rhH6fEnCKNXWEkU=";
     stripRoot = false;
   };
 
diff --git a/pkgs/data/fonts/ubuntu-font-family/default.nix b/pkgs/data/fonts/ubuntu-font-family/default.nix
index 331e34690a5e2..671ba8b4b48d9 100644
--- a/pkgs/data/fonts/ubuntu-font-family/default.nix
+++ b/pkgs/data/fonts/ubuntu-font-family/default.nix
@@ -25,7 +25,7 @@ stdenvNoCC.mkDerivation rec {
     contemporary style and contains characteristics unique to
     the Ubuntu brand that convey a precise, reliable and free attitude.";
     homepage = "http://font.ubuntu.com/";
-    license = licenses.free;
+    license = licenses.ufl;
     platforms = platforms.all;
     maintainers = [ maintainers.antono ];
   };
diff --git a/pkgs/data/fonts/undefined-medium/default.nix b/pkgs/data/fonts/undefined-medium/default.nix
index 3e3087c6abc8b..c1b22f7871173 100644
--- a/pkgs/data/fonts/undefined-medium/default.nix
+++ b/pkgs/data/fonts/undefined-medium/default.nix
@@ -2,11 +2,11 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "undefined-medium";
-  version = "1.1";
+  version = "1.2";
 
   src = fetchzip {
-    url = "https://github.com/andirueckel/undefined-medium/archive/v1.1.zip";
-    hash = "sha256-iquxt7lo92y4AQZf23Ij5Qzg2U7buL3kGLksQSR6vac=";
+    url = "https://github.com/andirueckel/undefined-medium/archive/v1.2.zip";
+    hash = "sha256-hgHwi25T+aM7ljzk5uR4x+CqoRJ3/IOyktdp/mDW46I=";
   };
 
   installPhase = ''
diff --git a/pkgs/data/fonts/unifont/default.nix b/pkgs/data/fonts/unifont/default.nix
index 7f2e9a1b158b4..0868abcdd58c2 100644
--- a/pkgs/data/fonts/unifont/default.nix
+++ b/pkgs/data/fonts/unifont/default.nix
@@ -4,16 +4,16 @@
 
 stdenv.mkDerivation rec {
   pname = "unifont";
-  version = "15.1.04";
+  version = "15.1.05";
 
   otf = fetchurl {
     url = "mirror://gnu/unifont/${pname}-${version}/${pname}-${version}.otf";
-    hash = "sha256-J8g8ojXDq5nV013zXXi1rEAYQhpCh7G06mV7IpmZbTg=";
+    hash = "sha256-e2K1CsuxhmidwwxEbOQ2e4fXlInpkHuDJV+fvg3PueE=";
   };
 
   pcf = fetchurl {
     url = "mirror://gnu/unifont/${pname}-${version}/${pname}-${version}.pcf.gz";
-    hash = "sha256-XHKP8xx+GvhFYBW03Sambpd2gclKvQUz1JAjIlb59OI=";
+    hash = "sha256-zpc9Z4XXvma/tXRYOvAAQIpjyYS+1XPiaLZF4xYPTbw=";
   };
 
   nativeBuildInputs = [ libfaketime xorg.fonttosfnt xorg.mkfontscale ];
diff --git a/pkgs/data/fonts/unifont_upper/default.nix b/pkgs/data/fonts/unifont_upper/default.nix
index e7820a85842c2..058e4e4191c4a 100644
--- a/pkgs/data/fonts/unifont_upper/default.nix
+++ b/pkgs/data/fonts/unifont_upper/default.nix
@@ -2,11 +2,11 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "unifont_upper";
-  version = "15.1.04";
+  version = "15.1.05";
 
   src = fetchurl {
     url = "mirror://gnu/unifont/unifont-${version}/${pname}-${version}.otf";
-    hash = "sha256-SUsG2xhrn47zrGpNzRn1g76qyt2vQyH/UBmYtzCD0UA=";
+    hash = "sha256-A/Z/+IMNUH/3Ir3ewf/U2xqkkpZDUDKO+dlnRYt+7U0=";
   };
 
   dontUnpack = true;
diff --git a/pkgs/data/fonts/vdrsymbols/default.nix b/pkgs/data/fonts/vdrsymbols/default.nix
index 5df82b31cfe50..fd7aba9ec063f 100644
--- a/pkgs/data/fonts/vdrsymbols/default.nix
+++ b/pkgs/data/fonts/vdrsymbols/default.nix
@@ -27,6 +27,6 @@ stdenvNoCC.mkDerivation rec {
     # Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved.
     # DejaVu changes are in public domain
     # See https://dejavu-fonts.github.io/License.html for details
-    license = licenses.free;
+    license = with licenses; [ bitstreamVera publicDomain ];
   };
 }
diff --git a/pkgs/data/fonts/victor-mono/default.nix b/pkgs/data/fonts/victor-mono/default.nix
index 5c17ad653ebca..a855cf8b80bb6 100644
--- a/pkgs/data/fonts/victor-mono/default.nix
+++ b/pkgs/data/fonts/victor-mono/default.nix
@@ -2,7 +2,7 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "victor-mono";
-  version = "1.5.5";
+  version = "1.5.6";
 
   # Upstream prefers we download from the website,
   # but we really insist on a more versioned resource.
@@ -14,7 +14,7 @@ stdenvNoCC.mkDerivation rec {
   src = fetchzip {
     url = "https://github.com/rubjo/victor-mono/raw/v${version}/public/VictorMonoAll.zip";
     stripRoot = false;
-    hash = "sha256-l8XeKE9PtluiazZO0PXfkGCcnm5o+VZdL7NZ6w0tp80=";
+    hash = "sha256-PnCCU7PO+XcxUk445sU5xVl8XqdSPJighjtDTqI6qiw=";
   };
 
   installPhase = ''
diff --git a/pkgs/data/icons/banana-cursor/default.nix b/pkgs/data/icons/banana-cursor/default.nix
deleted file mode 100644
index b89213c6d6fb9..0000000000000
--- a/pkgs/data/icons/banana-cursor/default.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{
-  lib,
-  stdenvNoCC,
-  fetchFromGitHub,
-}:
-stdenvNoCC.mkDerivation rec {
-  pname = "banana-cursor";
-  version = "1.0.0";
-
-  src = fetchFromGitHub {
-    owner = "ful1e5";
-    repo = "banana-cursor";
-    rev = "v${version}";
-    sha256 = "sha256-PI7381xf/GctQTnfcE0W3M3z2kqbX4VexMf17C61hT8=";
-  };
-
-  dontBuild = true;
-
-  installPhase = ''
-    mkdir -p $out/share/icons
-    mv themes/Banana $out/share/icons
-  '';
-
-  meta = with lib; {
-    homepage = "https://github.com/ful1e5/banana-cursor";
-    description = "The banana cursor theme";
-    license = licenses.gpl3;
-    platforms = platforms.linux;
-    maintainers = with maintainers; [ yrd ];
-  };
-}
diff --git a/pkgs/data/icons/bibata-cursors/default.nix b/pkgs/data/icons/bibata-cursors/default.nix
deleted file mode 100644
index 06c8becd64e51..0000000000000
--- a/pkgs/data/icons/bibata-cursors/default.nix
+++ /dev/null
@@ -1,44 +0,0 @@
-{ lib
-, stdenvNoCC
-, fetchFromGitHub
-, fetchurl
-, clickgen
-, attrs
-}:
-
-stdenvNoCC.mkDerivation rec {
-  pname = "bibata-cursors";
-  version = "2.0.3";
-
-  src = fetchFromGitHub {
-    owner = "ful1e5";
-    repo = "Bibata_Cursor";
-    rev = "v${version}";
-    sha256 = "zCk7qgPeae0BfzhxxU2Dk1SOWJQOxiWyJuzH/ri+Gq4=";
-  };
-
-  buildInputs = [ clickgen attrs ];
-
-  buildPhase = ''
-    ctgen build.toml -p x11 -d 'bitmaps/Bibata-Modern-Amber' -n 'Bibata-Modern-Amber' -c 'Yellowish and rounded edge bibata cursors.'
-    ctgen build.toml -p x11 -d 'bitmaps/Bibata-Modern-Classic' -n 'Bibata-Modern-Classic' -c 'Black and rounded edge Bibata cursors.'
-    ctgen build.toml -p x11 -d 'bitmaps/Bibata-Modern-Ice' -n 'Bibata-Modern-Ice' -c 'White and rounded edge Bibata cursors.'
-
-    ctgen build.toml -p x11 -d 'bitmaps/Bibata-Original-Amber' -n 'Bibata-Original-Amber' -c 'Yellowish and sharp edge Bibata cursors.'
-    ctgen build.toml -p x11 -d 'bitmaps/Bibata-Original-Classic' -n 'Bibata-Original-Classic' -c 'Black and sharp edge Bibata cursors.'
-    ctgen build.toml -p x11 -d 'bitmaps/Bibata-Original-Ice' -n 'Bibata-Original-Ice' -c 'White and sharp edge Bibata cursors.'
-  '';
-
-  installPhase = ''
-    install -dm 0755 $out/share/icons
-    cp -rf themes/* $out/share/icons/
-  '';
-
-  meta = with lib; {
-    description = "Material Based Cursor Theme";
-    homepage = "https://github.com/ful1e5/Bibata_Cursor";
-    license = licenses.gpl3;
-    platforms = platforms.linux;
-    maintainers = with maintainers; [ rawkode AdsonCicilioti ];
-  };
-}
diff --git a/pkgs/data/icons/catppuccin-cursors/default.nix b/pkgs/data/icons/catppuccin-cursors/default.nix
index 20e4718515e61..eeb9dd3227f07 100644
--- a/pkgs/data/icons/catppuccin-cursors/default.nix
+++ b/pkgs/data/icons/catppuccin-cursors/default.nix
@@ -9,9 +9,8 @@ let
     palette = [ "Frappe" "Latte" "Macchiato" "Mocha" ];
     color = [ "Blue" "Dark" "Flamingo" "Green" "Lavender" "Light" "Maroon" "Mauve" "Peach" "Pink" "Red" "Rosewater" "Sapphire" "Sky" "Teal" "Yellow" ];
   };
-  product = lib.attrsets.cartesianProductOfSets dimensions;
   variantName = { palette, color }: (lib.strings.toLower palette) + color;
-  variants = map variantName product;
+  variants = lib.mapCartesianProduct variantName dimensions;
 in
 stdenvNoCC.mkDerivation rec {
   pname = "catppuccin-cursors";
diff --git a/pkgs/data/icons/colloid-icon-theme/default.nix b/pkgs/data/icons/colloid-icon-theme/default.nix
index 7806f3e814ad1..1e14e71129559 100644
--- a/pkgs/data/icons/colloid-icon-theme/default.nix
+++ b/pkgs/data/icons/colloid-icon-theme/default.nix
@@ -18,13 +18,13 @@ lib.checkListOfEnum "${pname}: color variants" [ "default" "purple" "pink" "red"
 
 stdenvNoCC.mkDerivation rec {
   inherit pname;
-  version = "2023-07-01";
+  version = "2024-02-28";
 
   src = fetchFromGitHub {
     owner = "vinceliuice";
     repo = pname;
     rev = version;
-    hash = "sha256-2J6LmDV/Y2+x+nK3mO+t4MnmZCbVwDLX0tDG6BmLgqo=";
+    hash = "sha256-bTN6x3t88yBL4WsPfOJIiNGWTywdIVi7E2VJKgMzEso=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/data/icons/comixcursors/default.nix b/pkgs/data/icons/comixcursors/default.nix
index 1c4fdc195180b..735ff686b49cf 100644
--- a/pkgs/data/icons/comixcursors/default.nix
+++ b/pkgs/data/icons/comixcursors/default.nix
@@ -7,14 +7,13 @@ let
     thickness = [ "" "Slim_" ];  # Thick or slim edges.
     handedness = [ "" "LH_" ];   # Right- or left-handed.
   };
-  product = lib.cartesianProductOfSets dimensions;
   variantName =
     { color, opacity, thickness, handedness }:
     "${handedness}${opacity}${thickness}${color}";
   variants =
     # (The order of this list is already good looking enough to show in the
     # meta.longDescription.)
-    map variantName product;
+    lib.mapCartesianProduct variantName dimensions;
 in
 stdenvNoCC.mkDerivation rec {
   pname = "comixcursors";
diff --git a/pkgs/data/icons/elementary-xfce-icon-theme/default.nix b/pkgs/data/icons/elementary-xfce-icon-theme/default.nix
index 69eef5754d625..8433d58795be2 100644
--- a/pkgs/data/icons/elementary-xfce-icon-theme/default.nix
+++ b/pkgs/data/icons/elementary-xfce-icon-theme/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "elementary-xfce-icon-theme";
-  version = "0.18";
+  version = "0.19";
 
   src = fetchFromGitHub {
     owner = "shimmerproject";
     repo = "elementary-xfce";
     rev = "v${version}";
-    sha256 = "sha256-OgQtqBrYKDgU4mhXLFO8YwiPv2lKqGSdZnfKCd9ri4g=";
+    sha256 = "sha256-exrPxJ6S3xV1EJ61KW1MqCcOSzPY9zOycuSh8I9Gdns=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/data/icons/fluent-icon-theme/default.nix b/pkgs/data/icons/fluent-icon-theme/default.nix
index 6933a0ecb9286..cc3253e3b1fb9 100644
--- a/pkgs/data/icons/fluent-icon-theme/default.nix
+++ b/pkgs/data/icons/fluent-icon-theme/default.nix
@@ -16,13 +16,13 @@ lib.checkListOfEnum "${pname}: available color variants" [ "standard" "green" "g
 
 stdenvNoCC.mkDerivation rec {
   inherit pname;
-  version = "2023-06-07";
+  version = "2024-02-25";
 
   src = fetchFromGitHub {
     owner = "vinceliuice";
     repo = pname;
     rev = version;
-    hash = "sha256-drEAjIY/lacqncSeVeNmeRX6v4PnLvGo66Na1fuFXRg=";
+    hash = "sha256-Cadp2+4kBZ74kdD5x0O85FszxvN6/sg6yccxughyX1Q";
   };
 
   nativeBuildInputs = [ gtk3 jdupes ];
diff --git a/pkgs/data/icons/gruppled-cursors/default.nix b/pkgs/data/icons/gruppled-cursors/default.nix
new file mode 100644
index 0000000000000..f78becfd615f4
--- /dev/null
+++ b/pkgs/data/icons/gruppled-cursors/default.nix
@@ -0,0 +1,30 @@
+{
+  stdenvNoCC,
+  fetchFromGitHub,
+  theme,
+  lib,
+}:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "gruppled-cursors";
+  version = "1.0.0";
+
+  src = fetchFromGitHub {
+    owner = "nim65s";
+    repo = finalAttrs.pname;
+    rev = "v${finalAttrs.version}";
+    hash = "sha256-ejlgdogjIYevZvB23si6bEeU6qY7rWXflaUyVk5MzqU=";
+  };
+
+  installPhase = ''
+    mkdir -p $out/share/icons/${theme}
+    cp -r ${theme}/{cursors,index.theme} $out/share/icons/${theme}
+  '';
+
+  meta = with lib; {
+    description = "Gruppled Cursors theme";
+    homepage = "https://github.com/nim65s/gruppled-cursors";
+    license = licenses.gpl2Only;
+    maintainers = with maintainers; [ nim65s ];
+  };
+})
diff --git a/pkgs/data/icons/gruppled-lite-cursors/default.nix b/pkgs/data/icons/gruppled-lite-cursors/default.nix
new file mode 100644
index 0000000000000..eba7daeb0d80e
--- /dev/null
+++ b/pkgs/data/icons/gruppled-lite-cursors/default.nix
@@ -0,0 +1,30 @@
+{
+  stdenvNoCC,
+  fetchFromGitHub,
+  theme,
+  lib,
+}:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "gruppled-lite-cursors";
+  version = "1.0.0";
+
+  src = fetchFromGitHub {
+    owner = "nim65s";
+    repo = finalAttrs.pname;
+    rev = "v${finalAttrs.version}";
+    hash = "sha256-adCXYu8v6mFKXubVQb/RCZXS87//YgixQp20kMt7KT8=";
+  };
+
+  installPhase = ''
+    mkdir -p $out/share/icons/${theme}
+    cp -r ${theme}/{cursors,index.theme} $out/share/icons/${theme}
+  '';
+
+  meta = with lib; {
+    description = "Gruppled Lite Cursors theme";
+    homepage = "https://github.com/nim65s/gruppled-lite-cursors";
+    license = licenses.gpl2Only;
+    maintainers = with maintainers; [ nim65s ];
+  };
+})
diff --git a/pkgs/data/icons/kora-icon-theme/default.nix b/pkgs/data/icons/kora-icon-theme/default.nix
index 87093b2f357e8..a490d1c7289a5 100644
--- a/pkgs/data/icons/kora-icon-theme/default.nix
+++ b/pkgs/data/icons/kora-icon-theme/default.nix
@@ -10,13 +10,13 @@
 
 stdenvNoCC.mkDerivation rec  {
   pname = "kora-icon-theme";
-  version = "1.5.9";
+  version = "1.6.0";
 
   src = fetchFromGitHub  {
     owner = "bikass";
     repo = "kora";
     rev = "v${version}";
-    sha256 = "sha256-ZXAS22Oe6C34DR1BfGmCGr1qh9mu1PCY5IQWxrm1EfY=";
+    sha256 = "sha256-YKdqV41HlQMvkyWoWbOCMUASshnEDnXtxzdmJdTEQGw=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/data/icons/numix-icon-theme-circle/default.nix b/pkgs/data/icons/numix-icon-theme-circle/default.nix
index 60515e76692f1..5422eaac80739 100644
--- a/pkgs/data/icons/numix-icon-theme-circle/default.nix
+++ b/pkgs/data/icons/numix-icon-theme-circle/default.nix
@@ -2,13 +2,13 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "numix-icon-theme-circle";
-  version = "23.12.10";
+  version = "24.03.12";
 
   src = fetchFromGitHub {
     owner = "numixproject";
     repo = pname;
     rev = version;
-    sha256 = "sha256-DZmjSMJ1I+Ir/Hz/fmsw36dFSp5S3YF024nJLb/Xxig=";
+    sha256 = "sha256-WWgppmMIXa7AtMu8Tu3TOt4JvsAkpufZva1reE+UaWg=";
   };
 
   nativeBuildInputs = [ gtk3 ];
diff --git a/pkgs/data/icons/numix-icon-theme-square/default.nix b/pkgs/data/icons/numix-icon-theme-square/default.nix
index 3dac6c8d95c6e..7641a9a7ba7c6 100644
--- a/pkgs/data/icons/numix-icon-theme-square/default.nix
+++ b/pkgs/data/icons/numix-icon-theme-square/default.nix
@@ -2,13 +2,13 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "numix-icon-theme-square";
-  version = "23.12.10";
+  version = "24.04.16";
 
   src = fetchFromGitHub {
     owner = "numixproject";
     repo = pname;
     rev = version;
-    sha256 = "sha256-kNO0YHHapoIKAosGvCMUEhjP6FkD/CRNhrv5D3dxgoI=";
+    sha256 = "sha256-PYsGP0Snn9A5cJ5CG+RyjC+TJwAqJOFQdnYIUkugnq0=";
   };
 
   nativeBuildInputs = [ gtk3 ];
diff --git a/pkgs/data/icons/papirus-icon-theme/default.nix b/pkgs/data/icons/papirus-icon-theme/default.nix
index e940bc7d52beb..4a39dfe473c87 100644
--- a/pkgs/data/icons/papirus-icon-theme/default.nix
+++ b/pkgs/data/icons/papirus-icon-theme/default.nix
@@ -13,13 +13,13 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "papirus-icon-theme";
-  version = "20231201";
+  version = "20240201";
 
   src = fetchFromGitHub {
     owner = "PapirusDevelopmentTeam";
     repo = pname;
     rev = version;
-    hash = "sha256-nLc2nt8YI193loMHjzzEwgvb+tdNrVTZskqssX2oFrU=";
+    hash = "sha256-hAmtvib6wENEAGQdK242wwDqF3Ddu4YR00KPaWR8JMo=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/data/icons/phinger-cursors/default.nix b/pkgs/data/icons/phinger-cursors/default.nix
index 82742723806f5..26b729b268c93 100644
--- a/pkgs/data/icons/phinger-cursors/default.nix
+++ b/pkgs/data/icons/phinger-cursors/default.nix
@@ -2,11 +2,11 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "phinger-cursors";
-  version = "1.1";
+  version = "2.0";
 
   src = fetchurl {
     url = "https://github.com/phisch/phinger-cursors/releases/download/v${version}/phinger-cursors-variants.tar.bz2";
-    sha256 = "sha256-II+1x+rcjGRRVB8GYkVwkKVHNHcNaBKRb6C613901oc=";
+    sha256 = "sha256-A12BGtc0+wDqeSGN4lbUe5G3Pv4IsQB4TkvWHnDU6bE=";
   };
 
   sourceRoot = ".";
diff --git a/pkgs/data/icons/pop-icon-theme/default.nix b/pkgs/data/icons/pop-icon-theme/default.nix
index 2a27122da5db7..8d4467e3abad6 100644
--- a/pkgs/data/icons/pop-icon-theme/default.nix
+++ b/pkgs/data/icons/pop-icon-theme/default.nix
@@ -10,13 +10,13 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "pop-icon-theme";
-  version = "3.3.0";
+  version = "3.5.0";
 
   src = fetchFromGitHub {
     owner = "pop-os";
     repo = "icon-theme";
     rev = "v${version}";
-    sha256 = "sha256-7cDXEkqtPNQsyZvuYZhBSgAYshkDlP8o8umWGbNLtjw=";
+    sha256 = "sha256-V8xBZj6T4Ly/GHV0CVLZ1a4UZbmCkhYRe05qUfJk7Wg=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/data/icons/whitesur-icon-theme/default.nix b/pkgs/data/icons/whitesur-icon-theme/default.nix
index a6514b3fe0d41..e9ca757add207 100644
--- a/pkgs/data/icons/whitesur-icon-theme/default.nix
+++ b/pkgs/data/icons/whitesur-icon-theme/default.nix
@@ -27,13 +27,13 @@ lib.checkListOfEnum "${pname}: theme variants" [
 
 stdenvNoCC.mkDerivation rec {
   inherit pname;
-  version = "2023-07-03";
+  version = "2024.04.08";
 
   src = fetchFromGitHub {
     owner = "vinceliuice";
     repo = pname;
     rev = version;
-    hash = "sha256-lq6d3BForrvzEJYeEMQZplvn/p6dPjggTToAU9UcPoM=";
+    hash = "sha256-Baf0BowyR4P7MDx+LmH6MHlANl+9lXlCaQispN4/i9o=";
   };
 
   nativeBuildInputs = [ gtk3 jdupes ];
diff --git a/pkgs/data/misc/cacert/default.nix b/pkgs/data/misc/cacert/default.nix
index 30f2ee38c72f8..7dc047bb1c88b 100644
--- a/pkgs/data/misc/cacert/default.nix
+++ b/pkgs/data/misc/cacert/default.nix
@@ -20,7 +20,7 @@ let
   blocklist = writeText "cacert-blocklist.txt" (lib.concatStringsSep "\n" blacklist);
   extraCertificatesBundle = writeText "cacert-extra-certificates-bundle.crt" (lib.concatStringsSep "\n\n" extraCertificateStrings);
 
-  srcVersion = "3.95";
+  srcVersion = "3.98";
   version = if nssOverride != null then nssOverride.version else srcVersion;
   meta = with lib; {
     homepage = "https://curl.haxx.se/docs/caextract.html";
@@ -37,7 +37,7 @@ let
       owner = "nss-dev";
       repo = "nss";
       rev = "NSS_${lib.replaceStrings ["."] ["_"] version}_RTM";
-      hash = "sha256-qgSbzlRbU+gElC2ae3FEGRUFSM1JHd/lNGNXC0x4xt4=";
+      hash = "sha256-0p1HzspxyzhzX46O7ax8tmYiaFEBeqEqEvman4NIiQc=";
     };
 
     dontBuild = true;
@@ -71,6 +71,7 @@ stdenv.mkDerivation rec {
       --ca_bundle_input "${extraCertificatesBundle}" ${lib.escapeShellArgs (map (arg: "${arg}") extraCertificateFiles)} \
       --blocklist "${blocklist}" \
       --ca_bundle_output ca-bundle.crt \
+      --ca_standard_bundle_output ca-no-trust-rules-bundle.crt \
       --ca_unpacked_output unbundled \
       --p11kit_output ca-bundle.trust.p11-kit
   '';
@@ -78,6 +79,9 @@ stdenv.mkDerivation rec {
   installPhase = ''
     install -D -t "$out/etc/ssl/certs" ca-bundle.crt
 
+    # install standard PEM compatible bundle
+    install -D -t "$out/etc/ssl/certs" ca-no-trust-rules-bundle.crt
+
     # install p11-kit specific output to p11kit output
     install -D -t "$p11kit/etc/ssl/trust-source" ca-bundle.trust.p11-kit
 
diff --git a/pkgs/data/misc/clash-geoip/default.nix b/pkgs/data/misc/clash-geoip/default.nix
index 7dcb0c63e8de8..7514d08f5e11f 100644
--- a/pkgs/data/misc/clash-geoip/default.nix
+++ b/pkgs/data/misc/clash-geoip/default.nix
@@ -2,11 +2,11 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "clash-geoip";
-  version = "20231212";
+  version = "20240412";
 
   src = fetchurl {
     url = "https://github.com/Dreamacro/maxmind-geoip/releases/download/${version}/Country.mmdb";
-    sha256 = "sha256-h6EojfOWfDwD5Akvb8NrSvg3xyQZhOUrKhUxlWwio8A=";
+    sha256 = "sha256-xc31FwO9wku1MzLIuCScOKEgzwLPn5NuXi2H4L3+M9s=";
   };
 
   dontUnpack = true;
diff --git a/pkgs/data/misc/conway_polynomials/default.nix b/pkgs/data/misc/conway_polynomials/default.nix
deleted file mode 100644
index caf470c511523..0000000000000
--- a/pkgs/data/misc/conway_polynomials/default.nix
+++ /dev/null
@@ -1,41 +0,0 @@
-{ lib, stdenv
-, fetchurl
-, python3
-}:
-
-stdenv.mkDerivation rec {
-  pname = "conway_polynomials";
-  version = "0.5";
-
-  src = fetchurl {
-    url = "mirror://sageupstream/conway_polynomials/conway_polynomials-${version}.tar.bz2";
-    sha256 = "05zb1ly9x2bbscqv0jgc45g48xx77mfs7qdbqhn4ihmihn57iwnq";
-  };
-
-  # Script that creates the "database" (nested python array) and pickles it
-  spkg-install = fetchurl {
-    url = "https://raw.githubusercontent.com/sagemath/sage/9.2/build/pkgs/conway_polynomials/spkg-install.py";
-    sha256 = "1bwnqasnyv793hxg29viing4dnliz29grkhldsirq19d509yk1fs";
-  };
-
-  installPhase = ''
-    # directory layout as spkg-install.py expects
-    dir="$PWD"
-    cd ..
-    ln -s "$dir" "src"
-
-    # environment spkg-install.py expects
-    mkdir -p "$out/share"
-    export SAGE_SHARE="$out/share"
-    export PYTHONPATH=$PWD
-
-    ${python3.interpreter} ${spkg-install}
-  '';
-
-  meta = with lib; {
-    description = "Contains a small database of Conway polynomials";
-    license = licenses.gpl2;
-    platforms = platforms.all;
-    maintainers = teams.sage.members;
-  };
-}
diff --git a/pkgs/data/misc/dbip-country-lite/default.nix b/pkgs/data/misc/dbip-country-lite/default.nix
index 8685c1b35cd78..ca151c3b4dfbb 100644
--- a/pkgs/data/misc/dbip-country-lite/default.nix
+++ b/pkgs/data/misc/dbip-country-lite/default.nix
@@ -5,11 +5,11 @@
 
 stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "dbip-country-lite";
-  version = "2024-01";
+  version = "2024-04";
 
   src = fetchurl {
     url = "https://download.db-ip.com/free/dbip-country-lite-${finalAttrs.version}.mmdb.gz";
-    hash = "sha256-aFelcJPwkHRp/McStNABdJKTifz+WK3ODUk8bdiTtEk=";
+    hash = "sha256-tpiggDnhYPeLJ21mctXjbNSS2Gw4RI8gnpc1stDVmMc=";
   };
 
   dontUnpack = true;
diff --git a/pkgs/data/misc/ddccontrol-db/default.nix b/pkgs/data/misc/ddccontrol-db/default.nix
index 7574c16cba726..91c406cad1b19 100644
--- a/pkgs/data/misc/ddccontrol-db/default.nix
+++ b/pkgs/data/misc/ddccontrol-db/default.nix
@@ -6,13 +6,13 @@
 
 stdenv.mkDerivation rec {
   pname = "ddccontrol-db";
-  version = "20231004";
+  version = "20240304";
 
   src = fetchFromGitHub {
     owner = "ddccontrol";
     repo = pname;
     rev = version;
-    sha256 = "sha256-C/FqLczkQ9thoAdBI2aDDKgp5ByTWVOJ9bcD9ICqyFM=";
+    sha256 = "sha256-vXG9aa6Zdv5R7q62tpFaUIw4MVnT/jWwZ+jw1S9K7MM=";
   };
 
   nativeBuildInputs = [ autoreconfHook intltool ];
diff --git a/pkgs/data/misc/hackage/pin.json b/pkgs/data/misc/hackage/pin.json
index e9b32370af55c..ede51924e0275 100644
--- a/pkgs/data/misc/hackage/pin.json
+++ b/pkgs/data/misc/hackage/pin.json
@@ -1,6 +1,6 @@
 {
-  "commit": "d77837f979c4b15fe0eb25cdf8a0463773434c9d",
-  "url": "https://github.com/commercialhaskell/all-cabal-hashes/archive/d77837f979c4b15fe0eb25cdf8a0463773434c9d.tar.gz",
-  "sha256": "01ihv1nwp0qqhwll5icl19ij5sb1nvhpnwgvwpcr319rn3b704km",
-  "msg": "Update from Hackage at 2023-12-17T16:07:47Z"
+  "commit": "5bae847bf7e96ce10e824377f4cb7f02c51b7245",
+  "url": "https://github.com/commercialhaskell/all-cabal-hashes/archive/5bae847bf7e96ce10e824377f4cb7f02c51b7245.tar.gz",
+  "sha256": "1p45mapjca2d7r8ky27s0pn3sflp61iippcabsb85s49fi9sqlv2",
+  "msg": "Update from Hackage at 2024-04-09T20:48:09Z"
 }
diff --git a/pkgs/data/misc/iana-etc/default.nix b/pkgs/data/misc/iana-etc/default.nix
index de19347e34033..2f60c1367f2ce 100644
--- a/pkgs/data/misc/iana-etc/default.nix
+++ b/pkgs/data/misc/iana-etc/default.nix
@@ -2,11 +2,11 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "iana-etc";
-  version = "20230316";
+  version = "20240318";
 
   src = fetchzip {
     url = "https://github.com/Mic92/iana-etc/releases/download/${version}/iana-etc-${version}.tar.gz";
-    sha256 = "sha256-5acFYPSwevEw5tZNbQDpui3stWuMdnhaKHqC8lhnsOY=";
+    sha256 = "sha256-t/VOTFDdAH+EdzofdMyUO9Yvl5qdMjdPl9ebYtBC388=";
   };
 
   installPhase = ''
diff --git a/pkgs/data/misc/nixos-artwork/icons.nix b/pkgs/data/misc/nixos-artwork/icons.nix
index af8a157d491ca..75c7075bae9fd 100644
--- a/pkgs/data/misc/nixos-artwork/icons.nix
+++ b/pkgs/data/misc/nixos-artwork/icons.nix
@@ -1,25 +1,39 @@
 { stdenv
+, lib
 , fetchFromGitHub
 , imagemagick
 }:
 
-stdenv.mkDerivation {
+stdenv.mkDerivation (finalAttrs: {
   pname = "nixos-icons";
-  version = "2021-02-24";
+  version = "0-unstable-2024-04-10";
 
   src = fetchFromGitHub {
     owner = "NixOS";
     repo = "nixos-artwork";
-    rev = "488c22aad523c709c44169d3e88d34b4691c20dc";
-    sha256 = "ZoanCzn4pqGB1fyMzMyGQVT0eIhNdL7ZHJSn1VZWVRs=";
+    rev = "f84c13adae08e860a7c3f76ab3a9bef916d276cc";
+    hash = "sha256-lO/2dLGK2f9pzLHudRIs4PUcGUliy7kfyt9r4CbhbVg=";
   };
 
+  sourceRoot = "${finalAttrs.src.name}/icons";
+
+  strictDeps = true;
+
   nativeBuildInputs = [
     imagemagick
   ];
 
   makeFlags = [
-    "DESTDIR=${placeholder "out"}"
-    "prefix="
+    "prefix=${placeholder "out"}"
   ];
-}
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    description = "Icons of the Nix logo, in Freedesktop Icon Directory Layout";
+    homepage = "https://github.com/NixOS/nixos-artwork";
+    license = licenses.cc-by-40;
+    maintainers = with maintainers; [];
+    platforms = platforms.all;
+  };
+})
diff --git a/pkgs/data/misc/papirus-folders/default.nix b/pkgs/data/misc/papirus-folders/default.nix
index a44a382c4b40a..b701742a9f460 100644
--- a/pkgs/data/misc/papirus-folders/default.nix
+++ b/pkgs/data/misc/papirus-folders/default.nix
@@ -23,6 +23,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A tool to change papirus icon theme color";
+    mainProgram = "papirus-folders";
     longDescription = ''
       papirus-folders is a bash script that allows changing the color of
       folders in Papirus icon theme and its forks (which based on version 20171007 and newer).
diff --git a/pkgs/data/misc/publicsuffix-list/default.nix b/pkgs/data/misc/publicsuffix-list/default.nix
index d5608036b5e3a..b2c69dff10919 100644
--- a/pkgs/data/misc/publicsuffix-list/default.nix
+++ b/pkgs/data/misc/publicsuffix-list/default.nix
@@ -2,13 +2,13 @@
 
 stdenvNoCC.mkDerivation {
   pname = "publicsuffix-list";
-  version = "unstable-2023-02-16";
+  version = "0-unstable-2024-01-07";
 
   src = fetchFromGitHub {
     owner = "publicsuffix";
     repo = "list";
-    rev = "8ec4d3049fe139f92937b6137155c33b81dcaf18";
-    hash = "sha256-wA8zk0iADFNP33veIf+Mfx22zdMzHsMNWEizMp1SnuA=";
+    rev = "5db9b65997e3c9230ac4353b01994c2ae9667cb9";
+    hash = "sha256-kIJVS2ETAXQa1MMG8cjRUSFUn+jm9jBWH8go3L+lqHE=";
   };
 
   dontBuild = true;
diff --git a/pkgs/data/misc/rime-data/default.nix b/pkgs/data/misc/rime-data/default.nix
index 97404764e2005..15c33238e8da3 100644
--- a/pkgs/data/misc/rime-data/default.nix
+++ b/pkgs/data/misc/rime-data/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation {
   pname = "rime-data";
-  version = "0.38.20211002";
+  version = "0.38.20231116";
 
   src = fetchFromGitHub {
     owner = "rime";
     repo = "plum";
-    rev = "1730556e1da5a08bb8e0a656c4780a46851a2913";
-    sha256 = "sha256-D7rPUxcB3QkCtisfBLHPiqfgL5lqmxjSiuEcpE63elw=";
+    rev = "6f502ff6fa87789847fa18200415318e705bffa4";
+    sha256 = "sha256-DNSLP0dzzgJ6XzwvxGPeRqRrRIUV/GwD2+8cz9bYAwA=";
   };
 
   buildInputs = [ librime ];
diff --git a/pkgs/data/misc/rime-data/fetchSchema.nix b/pkgs/data/misc/rime-data/fetchSchema.nix
index c2841a9f1e61d..6ceb44fefe5ca 100644
--- a/pkgs/data/misc/rime-data/fetchSchema.nix
+++ b/pkgs/data/misc/rime-data/fetchSchema.nix
@@ -5,8 +5,8 @@ mkdir -p package/rime
 ln -sv ${fetchFromGitHub {
   owner = "rime";
   repo = "rime-array";
-  rev = "d10f2f8b2aec7c7e736ace01e8a399e5ae5e7c3a";
-  sha256 = "sha256-4t6+gh2V57SueDp9Tn6vTuxQCZNGzjLdJEhzIEqRjdI=";
+  rev = "b37aad383ff6e71e457aa6d1d47d2040af8649b9";
+  sha256 = "0krvxnjr35r49wwi6bcjdnld6zbk791l7vm294wmdy36qfp2924y";
 }} package/rime/array
 ln -sv ${fetchFromGitHub {
   owner = "rime";
@@ -23,14 +23,14 @@ ln -sv ${fetchFromGitHub {
 ln -sv ${fetchFromGitHub {
   owner = "rime";
   repo = "rime-cantonese";
-  rev = "b6f800c74eb639816d56d0d5601aaa96c8963178";
-  sha256 = "1a4ksacbz8l30y3y5c017d0hzwik8knplglb3yswy7l4hsvaanyh";
+  rev = "e3c6b17e638ac8a9aeab4d5852e5909b049c5ab3";
+  sha256 = "171a64l17yb6isgiih2z0cp2vgzvdcn0vby3rk8556b0ir4j545q";
 }} package/rime/cantonese
 ln -sv ${fetchFromGitHub {
   owner = "rime";
   repo = "rime-combo-pinyin";
-  rev = "a84065a86b272c76215215bd6f03c506b6e7097c";
-  sha256 = "1f0b4kakw0x26gmx7xi4f94nbjlb8lvi9bks4f92jswa045vnd87";
+  rev = "17b66079a23a00d3214639fee2b8ae97d3e620dc";
+  sha256 = "1izx29hawfryapfzadysjbb2zfw0yq6vwsw56khkf6gsaz1faamn";
 }} package/rime/combo-pinyin
 ln -sv ${fetchFromGitHub {
   owner = "rime";
@@ -41,14 +41,14 @@ ln -sv ${fetchFromGitHub {
 ln -sv ${fetchFromGitHub {
   owner = "rime";
   repo = "rime-emoji";
-  rev = "4c8c51f4a3bc7298c99376eda9bbd86070fc4fa1";
-  sha256 = "0175jqh210fncafqckr9zzaw55qpswmqjrykwms1apmc68l43122";
+  rev = "a18b09997e7c457066e4c92adf249a4b3e235f9c";
+  sha256 = "0gaa9r3yx1s135jlqxp85iyygcwqgz2k4n1bpvjr2n8xkn9297b6";
 }} package/rime/emoji
 ln -sv ${fetchFromGitHub {
   owner = "rime";
   repo = "rime-essay";
-  rev = "9db2e77305e75798baf3ec8dcf1f82785b5e1be9";
-  sha256 = "03ypkkaadd5qmyg26n24a66cll90xvcimgbmiyv4d33jradiqg22";
+  rev = "e0519d0579722a0871efb68189272cba61a7350b";
+  sha256 = "1g7188vgklxindvm6p65b5jlm6z47fdmhmp0hqrrd6smg9pz4qpw";
 }} package/rime/essay
 ln -sv ${fetchFromGitHub {
   owner = "rime";
@@ -59,32 +59,32 @@ ln -sv ${fetchFromGitHub {
 ln -sv ${fetchFromGitHub {
   owner = "rime";
   repo = "rime-jyutping";
-  rev = "1e24baa6998815c716c581effe8ec65ee87c4e8c";
-  sha256 = "0s2rckpwlrm3n7w1csnqyi5p9mkpp3z87s7mrm2vc9sv06rpv7zl";
+  rev = "50100769f645bf92afef5170e3bf42be5147b41b";
+  sha256 = "1dmw2ssbqxbs93iab0whjzncsvv66vyw3hwb30kly2v18bwkagq0";
 }} package/rime/jyutping
 ln -sv ${fetchFromGitHub {
   owner = "rime";
   repo = "rime-luna-pinyin";
-  rev = "623adb022b094d540218b287c2e601509eee3347";
-  sha256 = "06pcwp09l5wkqv7792gbsl31xnlb3gr9q6bgbp94vvq6m2ycahqz";
+  rev = "79aeae200a7370720be98232844c0715f277e1c0";
+  sha256 = "06vff5hq85dkbmqch9d3w2rww2n8sk41c7say0pdlkfphyjs76ps";
 }} package/rime/luna-pinyin
 ln -sv ${fetchFromGitHub {
   owner = "rime";
   repo = "rime-middle-chinese";
-  rev = "9fad7a7c0c26167d5e6e85db8df48a15c7f7d4f0";
-  sha256 = "0a0bqrlzg0k692xblqnh1rh1fwwqqb205xwxlihgji85n8ibcgph";
+  rev = "582e144e525525ac2b6c2498097d7c7919e84174";
+  sha256 = "0ixj2f3syc0hv9n5r0cavcq0jrdf1www2frjl11855gwydp4lsx5";
 }} package/rime/middle-chinese
 ln -sv ${fetchFromGitHub {
   owner = "rime";
   repo = "rime-pinyin-simp";
-  rev = "b0e84cda02c613ebdedc127a26131b3800f45a8e";
-  sha256 = "05v804qr3a9xvjzp9yid7231fi2l2yrl47ybbvql61z9k36ab094";
+  rev = "52b9c75f085479799553f2499c4f4c611d618cdf";
+  sha256 = "1zi9yqgijb4r3q5ah89hdwbli5xhlmg19xj8sq1grnpfbw2hbdbj";
 }} package/rime/pinyin-simp
 ln -sv ${fetchFromGitHub {
   owner = "rime";
   repo = "rime-prelude";
-  rev = "3de303ffaa731dba07b0462ce59f4767e1219ad2";
-  sha256 = "0g7a0bla58rh1v3md59k6adk185pilb4z8i2i0pqdl4nwqp40n2p";
+  rev = "dd84abecc33f0b05469f1d744e32d2b60b3529e3";
+  sha256 = "14wn86xqvb6r73pgksi51wgfc70pj95iqrl85m2i0fwl43zg2y5g";
 }} package/rime/prelude
 ln -sv ${fetchFromGitHub {
   owner = "rime";
@@ -113,20 +113,20 @@ ln -sv ${fetchFromGitHub {
 ln -sv ${fetchFromGitHub {
   owner = "rime";
   repo = "rime-stroke";
-  rev = "ea8576d1accd6fda339e96b415caadb56e2a07d1";
-  sha256 = "07h6nq9867hjrd2v3h1pnr940sdrw4mqrzj43siz1rzjxz3s904r";
+  rev = "e6c7608925009636577ff7469eecc870f1de18f3";
+  sha256 = "1rzclksf09s9js6z9mjm4ibgybr6kg2c4xq4j6sg9b3pnjbjwv8g";
 }} package/rime/stroke
 ln -sv ${fetchFromGitHub {
   owner = "rime";
   repo = "rime-terra-pinyin";
-  rev = "ce7b9249612f575d2f43d51fcacd31d1b4e0ef1b";
-  sha256 = "0vm303f4lrdmdmif5klrp6w29vn9z2vzw33cw0y83pcnz39wiads";
+  rev = "9427853de91d645d9aca9ceace8fe9e9d8bc5b50";
+  sha256 = "0f1wiqasy41hp3kw3qc5zk6z0rgfrswdw91kc66v1w1a3skb6wpp";
 }} package/rime/terra-pinyin
 ln -sv ${fetchFromGitHub {
   owner = "rime";
   repo = "rime-wubi";
-  rev = "f1876f08f1d4a9696395be0070c0e8e4353c44cb";
-  sha256 = "1d9y9rqssacria9d0hla96czsqv2wkfm6z926m1x269ryv96zxvk";
+  rev = "152a0d3f3efe40cae216d1e3b338242446848d07";
+  sha256 = "1p2ikcw40q84fx0ixarm1jfp8ax276pabansybchrj34cqs53sr1";
 }} package/rime/wubi
 ln -sv ${fetchFromGitHub {
   owner = "rime";
diff --git a/pkgs/data/misc/sing-geoip/default.nix b/pkgs/data/misc/sing-geoip/default.nix
index b27a61ef02013..2e128c6efe362 100644
--- a/pkgs/data/misc/sing-geoip/default.nix
+++ b/pkgs/data/misc/sing-geoip/default.nix
@@ -8,26 +8,32 @@
 let
   generator = buildGoModule rec {
     pname = "sing-geoip";
-    version = "20230512";
+    version = "20240312";
 
     src = fetchFromGitHub {
       owner = "SagerNet";
       repo = pname;
       rev = "refs/tags/${version}";
-      hash = "sha256-Zm+5N/37hoHpH/TLNJrHeaBXI8G1jEpM1jz6Um8edNE=";
+      hash = "sha256-nIrbiECK25GyuPEFqMvPdZUShC2JC1NI60Y10SsoWyY=";
     };
 
-    vendorHash = "sha256-ejXAdsJwXhqet+Ca+pDLWwu0gex79VcIxW6rmhRnbTQ=";
+    vendorHash = "sha256-WH0eMg06qCiVcy4H+vBtYrmLMA2KJRCPGXiEnatW+LU=";
+
+    postPatch = ''
+      sed -i -e '/func main()/,/^}/d' main.go
+      cat ${./main.go} >> main.go
+    '';
 
     meta = with lib; {
       description = "GeoIP data for sing-box";
       homepage = "https://github.com/SagerNet/sing-geoip";
       license = licenses.gpl3Plus;
       maintainers = with maintainers; [ linsui ];
+      mainProgram = "sing-geoip";
     };
   };
 in
-stdenvNoCC.mkDerivation rec {
+stdenvNoCC.mkDerivation {
   inherit (generator) pname;
   inherit (dbip-country-lite) version;
 
@@ -38,8 +44,7 @@ stdenvNoCC.mkDerivation rec {
   buildPhase = ''
     runHook preBuild
 
-    ${pname} ${dbip-country-lite.mmdb} geoip.db
-    ${pname} ${dbip-country-lite.mmdb} geoip-cn.db cn
+    sing-geoip ${dbip-country-lite.mmdb}
 
     runHook postBuild
   '';
@@ -49,6 +54,7 @@ stdenvNoCC.mkDerivation rec {
 
     install -Dm644 geoip.db $out/share/sing-box/geoip.db
     install -Dm644 geoip-cn.db $out/share/sing-box/geoip-cn.db
+    install -Dm644 rule-set/* -t $out/share/sing-box/rule-set
 
     runHook postInstall
   '';
diff --git a/pkgs/data/misc/sing-geoip/main.go b/pkgs/data/misc/sing-geoip/main.go
new file mode 100644
index 0000000000000..8c2ac246fba4a
--- /dev/null
+++ b/pkgs/data/misc/sing-geoip/main.go
@@ -0,0 +1,68 @@
+func main() {
+	var err error
+
+  input := os.Args[1]
+  ruleSetOutput := "rule-set"
+
+  binary, err := os.ReadFile(input)
+	if err != nil {
+		panic(err)
+	}
+  metadata, countryMap, err := parse(binary)
+	if err != nil {
+		panic(err)
+	}
+	allCodes := make([]string, 0, len(countryMap))
+	for code := range countryMap {
+		allCodes = append(allCodes, code)
+	}
+
+	writer, err := newWriter(metadata, allCodes)
+	if err != nil {
+		panic(err)
+	}
+	err = write(writer, countryMap, "geoip.db", nil)
+	if err != nil {
+		panic(err)
+	}
+
+	writer, err = newWriter(metadata, []string{"cn"})
+	if err != nil {
+		panic(err)
+	}
+	err = write(writer, countryMap, "geoip-cn.db", []string{"cn"})
+	if err != nil {
+		panic(err)
+	}
+
+	err = os.MkdirAll(ruleSetOutput, 0o755)
+	if err != nil {
+		panic(err)
+	}
+	for countryCode, ipNets := range countryMap {
+		var headlessRule option.DefaultHeadlessRule
+		headlessRule.IPCIDR = make([]string, 0, len(ipNets))
+		for _, cidr := range ipNets {
+			headlessRule.IPCIDR = append(headlessRule.IPCIDR, cidr.String())
+		}
+		var plainRuleSet option.PlainRuleSet
+		plainRuleSet.Rules = []option.HeadlessRule{
+			{
+				Type:           C.RuleTypeDefault,
+				DefaultOptions: headlessRule,
+			},
+		}
+		srsPath, _ := filepath.Abs(filepath.Join(ruleSetOutput, "geoip-"+countryCode+".srs"))
+		os.Stderr.WriteString("write " + srsPath + "\n")
+		outputRuleSet, err := os.Create(srsPath)
+		if err != nil {
+			panic(err)
+		}
+		err = srs.Write(outputRuleSet, plainRuleSet)
+		if err != nil {
+			outputRuleSet.Close()
+			panic(err)
+		}
+		outputRuleSet.Close()
+	}
+}
diff --git a/pkgs/data/misc/sing-geosite/default.nix b/pkgs/data/misc/sing-geosite/default.nix
index 900e5ef86c8f3..8540eb5340018 100644
--- a/pkgs/data/misc/sing-geosite/default.nix
+++ b/pkgs/data/misc/sing-geosite/default.nix
@@ -1,5 +1,5 @@
 { lib
-, buildGo120Module
+, buildGoModule
 , fetchFromGitHub
 , substituteAll
 , v2ray-domain-list-community
@@ -11,18 +11,18 @@ let
     geosite_data = "${v2ray-domain-list-community}/share/v2ray/geosite.dat";
   };
 in
-buildGo120Module {
+buildGoModule {
   pname = "sing-geosite";
   inherit (v2ray-domain-list-community) version;
 
   src = fetchFromGitHub {
     owner = "SagerNet";
     repo = "sing-geosite";
-    rev = "4a32d56c1705f77668beb5828df0b0a051efdeb9";
-    hash = "sha256-P/EBcwJI2G9327BNi84R+q6BABx9DEKpN6ETTp8Q4NU=";
+    rev = "bbd9f11bb9245463bf9d5614b74014fe5803b989";
+    hash = "sha256-UQChYKgN5JZk+KZ2c5Ffh/rQi6/TVeFQkbH6mpLx4x8=";
   };
 
-  vendorHash = "sha256-uQOmUXT2wd40DwwTCMnFFKd47eu+BPBDjiCGtUNFoKY=";
+  vendorHash = "sha256-C6idJDUp6AFe50tQ+4mmZsxuOKH8JSeC1p7XVRZ224E=";
 
   patchPhase = ''
     sed -i -e '/func main()/,/^}/d' -e '/"io"/a "io/ioutil"' main.go
@@ -38,6 +38,7 @@ buildGo120Module {
   installPhase = ''
     runHook preInstall
     install -Dm644 geosite.db $out/share/sing-box/geosite.db
+    install -Dm644 rule-set/* -t $out/share/sing-box/rule-set
     runHook postInstall
   '';
 
diff --git a/pkgs/data/misc/sing-geosite/main.go b/pkgs/data/misc/sing-geosite/main.go
index d059d99ffe1eb..e6ca57275adbf 100644
--- a/pkgs/data/misc/sing-geosite/main.go
+++ b/pkgs/data/misc/sing-geosite/main.go
@@ -16,4 +16,37 @@ func main() {
 	if err != nil {
 		panic(err)
 	}
+
+	ruleSetOutput := "rule-set"
+	err = os.MkdirAll(ruleSetOutput, 0o755)
+	if err != nil {
+		panic(err)
+	}
+	for code, domains := range domainMap {
+		var headlessRule option.DefaultHeadlessRule
+		defaultRule := geosite.Compile(domains)
+		headlessRule.Domain = defaultRule.Domain
+		headlessRule.DomainSuffix = defaultRule.DomainSuffix
+		headlessRule.DomainKeyword = defaultRule.DomainKeyword
+		headlessRule.DomainRegex = defaultRule.DomainRegex
+		var plainRuleSet option.PlainRuleSet
+		plainRuleSet.Rules = []option.HeadlessRule{
+			{
+				Type:           C.RuleTypeDefault,
+				DefaultOptions: headlessRule,
+			},
+		}
+		srsPath, _ := filepath.Abs(filepath.Join(ruleSetOutput, "geosite-"+code+".srs"))
+		os.Stderr.WriteString("write " + srsPath + "\n")
+		outputRuleSet, err := os.Create(srsPath)
+		if err != nil {
+			panic(err)
+		}
+		err = srs.Write(outputRuleSet, plainRuleSet)
+		if err != nil {
+			outputRuleSet.Close()
+			panic(err)
+		}
+		outputRuleSet.Close()
+	}
 }
diff --git a/pkgs/data/misc/spdx-license-list-data/default.nix b/pkgs/data/misc/spdx-license-list-data/default.nix
index e20872482d58e..ac66df4246364 100644
--- a/pkgs/data/misc/spdx-license-list-data/default.nix
+++ b/pkgs/data/misc/spdx-license-list-data/default.nix
@@ -2,13 +2,13 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "spdx-license-list-data";
-  version = "3.22";
+  version = "3.23";
 
   src = fetchFromGitHub {
     owner = "spdx";
     repo = "license-list-data";
     rev = "v${version}";
-    hash = "sha256-ZADijP8TKMSXJApY7pVTJoqsEPPL8PX7dUFJHFX5utw=";
+    hash = "sha256-mxTEEkmLB/bh+7r2idKrP3IjT00UBlhI0HnR5bMfu+E=";
   };
 
   # List of file formats to package.
diff --git a/pkgs/data/misc/tzdata/default.nix b/pkgs/data/misc/tzdata/default.nix
index b90a560045bbf..522b2da68ca5c 100644
--- a/pkgs/data/misc/tzdata/default.nix
+++ b/pkgs/data/misc/tzdata/default.nix
@@ -1,17 +1,17 @@
 { lib, stdenv, fetchurl, buildPackages }:
 
-stdenv.mkDerivation rec {
+stdenv.mkDerivation (finalAttrs: {
   pname = "tzdata";
-  version = "2023d";
+  version = "2024a";
 
   srcs = [
     (fetchurl {
-      url = "https://data.iana.org/time-zones/releases/tzdata${version}.tar.gz";
-      hash = "sha256-28ohlwsKi4wM7O7B17kfqQO+D27KWucytTKWciMqCPM=";
+      url = "https://data.iana.org/time-zones/releases/tzdata${finalAttrs.version}.tar.gz";
+      hash = "sha256-DQQ0RZrL0gWaeo2h8zBKhKhlkfbtacYkj/+lArbt/+M=";
     })
     (fetchurl {
-      url = "https://data.iana.org/time-zones/releases/tzcode${version}.tar.gz";
-      hash = "sha256-6aX54RiIbS3pK2K7BVEKKMxsBY15HJO9a4TTKSw8Fh4=";
+      url = "https://data.iana.org/time-zones/releases/tzcode${finalAttrs.version}.tar.gz";
+      hash = "sha256-gAcolK3/WkWPHRQ+FuTKHYsqEiycU5naSCy2jLpqH/g=";
     })
   ];
 
@@ -25,14 +25,14 @@ stdenv.mkDerivation rec {
   propagatedBuildOutputs = [ ];
 
   makeFlags = [
-    "TOPDIR=$(out)"
-    "TZDIR=$(out)/share/zoneinfo"
-    "BINDIR=$(bin)/bin"
-    "ZICDIR=$(bin)/bin"
+    "TOPDIR=${placeholder "out"}"
+    "TZDIR=${placeholder "out"}/share/zoneinfo"
+    "BINDIR=${placeholder "bin"}/bin"
+    "ZICDIR=${placeholder "bin"}/bin"
     "ETCDIR=$(TMPDIR)/etc"
     "TZDEFAULT=tzdefault-to-remove"
-    "LIBDIR=$(dev)/lib"
-    "MANDIR=$(man)/share/man"
+    "LIBDIR=${placeholder "dev"}/lib"
+    "MANDIR=${placeholder "man"}/share/man"
     "AWK=awk"
     "CFLAGS=-DHAVE_LINK=0"
     "CFLAGS+=-DZIC_BLOAT_DEFAULT=\\\"fat\\\""
@@ -45,7 +45,11 @@ stdenv.mkDerivation rec {
     "CFLAGS+=-DRESERVE_STD_EXT_IDS"
   ];
 
-  doCheck = false; # needs more tools
+  doCheck = true;
+  # everything except for:
+  # - check_web, because that needs curl and wants to talk to https://validator.w3.org
+  # - check_now, because that depends on the current time
+  checkTarget = "check_back check_character_set check_white_space check_links check_name_lengths check_slashed_abbrs check_sorted check_tables check_ziguard check_zishrink check_tzs";
 
   installFlags = lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
     "zic=${buildPackages.tzdata.bin}/bin/zic"
@@ -70,7 +74,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "http://www.iana.org/time-zones";
     description = "Database of current and historical time zones";
-    changelog = "https://github.com/eggert/tz/blob/${version}/NEWS";
+    changelog = "https://github.com/eggert/tz/blob/${finalAttrs.version}/NEWS";
     license = with licenses; [
       bsd3 # tzcode
       publicDomain # tzdata
@@ -78,4 +82,4 @@ stdenv.mkDerivation rec {
     platforms = platforms.all;
     maintainers = with maintainers; [ ajs124 fpletz ];
   };
-}
+})
diff --git a/pkgs/data/misc/unicode-character-database/default.nix b/pkgs/data/misc/unicode-character-database/default.nix
index 721e04256db88..393fe7d2a8062 100644
--- a/pkgs/data/misc/unicode-character-database/default.nix
+++ b/pkgs/data/misc/unicode-character-database/default.nix
@@ -1,9 +1,9 @@
-{ lib, stdenv
+{ lib, stdenvNoCC
 , fetchurl
 , unzip
 }:
 
-stdenv.mkDerivation rec {
+stdenvNoCC.mkDerivation rec {
   pname = "unicode-character-database";
   version = "15.1.0";
 
@@ -23,6 +23,7 @@ stdenv.mkDerivation rec {
 
     mkdir -p $out/share/unicode
     cp -r * $out/share/unicode
+    rm $out/share/unicode/env-vars
 
     runHook postInstall
   '';
diff --git a/pkgs/data/misc/v2ray-domain-list-community/default.nix b/pkgs/data/misc/v2ray-domain-list-community/default.nix
index 9593195d78d49..fb73738345a31 100644
--- a/pkgs/data/misc/v2ray-domain-list-community/default.nix
+++ b/pkgs/data/misc/v2ray-domain-list-community/default.nix
@@ -3,12 +3,12 @@
 let
   generator = pkgsBuildBuild.buildGoModule rec {
     pname = "v2ray-domain-list-community";
-    version = "20240105034708";
+    version = "20240410101316";
     src = fetchFromGitHub {
       owner = "v2fly";
       repo = "domain-list-community";
       rev = version;
-      hash = "sha256-8taKbZUWttpTY56lzgWJeAPpt0q9srSwRkNqkOsmY2Y=";
+      hash = "sha256-llj1z9fIzELeIIhyW6dmAl8Z/0DtZq3tkMrfwSJkZbE=";
     };
     vendorHash = "sha256-azvMUi8eLNoNofRa2X4SKTTiMd6aOyO6H/rOiKjkpIY=";
     meta = with lib; {
@@ -23,7 +23,7 @@ stdenv.mkDerivation {
   inherit (generator) pname version src meta;
   buildPhase = ''
     runHook preBuild
-    ${generator}/bin/domain-list-community -datapath $src/data --exportlists=category-ads-all,tld-cn,cn,tld-\!cn,geolocation-\!cn,apple,icloud
+    ${generator}/bin/domain-list-community -datapath $src/data
     runHook postBuild
   '';
   installPhase = ''
diff --git a/pkgs/data/misc/v2ray-geoip/default.nix b/pkgs/data/misc/v2ray-geoip/default.nix
index fb9064a437d10..94631881fb075 100644
--- a/pkgs/data/misc/v2ray-geoip/default.nix
+++ b/pkgs/data/misc/v2ray-geoip/default.nix
@@ -1,5 +1,6 @@
 { lib
 , stdenvNoCC
+, fetchpatch
 , fetchFromGitHub
 , pkgsBuildBuild
 , jq
@@ -8,18 +9,18 @@
 }:
 
 let
-  generator = pkgsBuildBuild.buildGo120Module {
+  generator = pkgsBuildBuild.buildGoModule rec {
     pname = "v2ray-geoip";
-    version = "unstable-2023-10-11";
+    version = "202403140037";
 
     src = fetchFromGitHub {
       owner = "v2fly";
       repo = "geoip";
-      rev = "3182dda7b38c900f28505b91a44b09ec486e6f36";
-      hash = "sha256-KSRgof78jScwnUeMtryj34J0mBsM/x9hFE4H9WtZUuM=";
+      rev = version;
+      hash = "sha256-nqobjgeDvD5RYvCVVd14XC/tb/+SVfvdQUFZ3gfeDrI=";
     };
 
-    vendorHash = "sha256-rlRazevKnWy/Ig143s8TZgV3JlQMlHID9rnncLYhQDc=";
+    vendorHash = "sha256-cuKcrYAzjIt6Z4wYg5R6JeL413NDwTub2fZndXEKdTo=";
 
     meta = with lib; {
       description = "GeoIP for V2Ray";
diff --git a/pkgs/data/misc/wireless-regdb/default.nix b/pkgs/data/misc/wireless-regdb/default.nix
index 14ce443eb3b57..284e6f524de52 100644
--- a/pkgs/data/misc/wireless-regdb/default.nix
+++ b/pkgs/data/misc/wireless-regdb/default.nix
@@ -1,12 +1,12 @@
-{ lib, stdenvNoCC, fetchurl }:
+{ lib, stdenvNoCC, fetchurl, directoryListingUpdater }:
 
 stdenvNoCC.mkDerivation rec {
   pname = "wireless-regdb";
-  version = "2023.09.01";
+  version = "2024.01.23";
 
   src = fetchurl {
     url = "https://www.kernel.org/pub/software/network/${pname}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-JtTCpyfMWSObhHNarYVrfH0LBOMKpcI1xPf0f18FNJE=";
+    hash = "sha256-yKYcms92+n60I56J9kDe4+hwmNn2m001GMnGD8bSDFU=";
   };
 
   dontBuild = true;
@@ -16,6 +16,8 @@ stdenvNoCC.mkDerivation rec {
     "PREFIX="
   ];
 
+  passthru.updateScript = directoryListingUpdater { };
+
   meta = with lib; {
     description = "Wireless regulatory database for CRDA";
     homepage = "http://wireless.kernel.org/en/developers/Regulatory/";
diff --git a/pkgs/data/misc/xorg-rgb/default.nix b/pkgs/data/misc/xorg-rgb/default.nix
index 646f4ae491b0d..d9d78b1536499 100644
--- a/pkgs/data/misc/xorg-rgb/default.nix
+++ b/pkgs/data/misc/xorg-rgb/default.nix
@@ -14,6 +14,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = with lib; {
     description = "X11 colorname to RGB mapping database";
+    mainProgram = "showrgb";
     license = licenses.mit;
     maintainers = with maintainers; [ raskin ];
     platforms = platforms.linux;
diff --git a/pkgs/data/themes/adapta-kde/default.nix b/pkgs/data/themes/adapta-kde/default.nix
index a93e78480b003..be9367106d4d3 100644
--- a/pkgs/data/themes/adapta-kde/default.nix
+++ b/pkgs/data/themes/adapta-kde/default.nix
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "A port of the Adapta theme for Plasma";
-    homepage = "https://git.io/adapta-kde";
+    homepage = "https://github.com/PapirusDevelopmentTeam/adapta-kde";
     license = lib.licenses.gpl3;
     maintainers = [ lib.maintainers.tadfisher ];
     platforms = lib.platforms.all;
diff --git a/pkgs/data/themes/adw-gtk3/default.nix b/pkgs/data/themes/adw-gtk3/default.nix
index db4fa114110fa..b00e71a5f16cc 100644
--- a/pkgs/data/themes/adw-gtk3/default.nix
+++ b/pkgs/data/themes/adw-gtk3/default.nix
@@ -9,13 +9,13 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "adw-gtk3";
-  version = "5.2";
+  version = "5.3";
 
   src = fetchFromGitHub {
     owner = "lassekongo83";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-S6Yo67DTyRzS9uz/6g87SRmfPIBmAKfy4c23M5aENNg=";
+    sha256 = "sha256-DpJLX9PJX1Q8dDOx7YOXQzgNECsKp5uGiCVTX6iSlbI=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/data/themes/alacritty-theme/default.nix b/pkgs/data/themes/alacritty-theme/default.nix
index a60f42107ce43..b24f27f326dcb 100644
--- a/pkgs/data/themes/alacritty-theme/default.nix
+++ b/pkgs/data/themes/alacritty-theme/default.nix
@@ -6,13 +6,13 @@
 
 stdenvNoCC.mkDerivation (self: {
   name = "alacritty-theme";
-  version = "unstable-2023-12-28";
+  version = "unstable-2024-03-06";
 
   src = fetchFromGitHub {
     owner = "alacritty";
     repo = "alacritty-theme";
-    rev = "b7a59c92fd54a005893b99479fb0aa466a37a4b7";
-    hash = "sha256-UBWH4Q9MliqcolFq1tZrfRdzCkUO1pRn84qvZEVw8Gg=";
+    rev = "cb786242b6f5e00a57e2f541e7bf1115f3950650";
+    hash = "sha256-fZJ0F4zJy6HOwWtZGm5yN4WfeFNJnW/UJhoQSZ0Bpxk=";
   };
 
   dontConfigure = true;
diff --git a/pkgs/data/themes/andromeda-gtk-theme/default.nix b/pkgs/data/themes/andromeda-gtk-theme/default.nix
new file mode 100644
index 0000000000000..9372d611c57f7
--- /dev/null
+++ b/pkgs/data/themes/andromeda-gtk-theme/default.nix
@@ -0,0 +1,61 @@
+{ lib, stdenvNoCC, fetchFromGitHub, gtk-engine-murrine }:
+
+stdenvNoCC.mkDerivation {
+  pname = "andromeda-gtk-theme";
+  version = "0-unstable-2024-03-04";
+
+  srcs = [
+    (fetchFromGitHub {
+      owner = "EliverLara";
+      repo = "Andromeda-gtk";
+      rev = "250751a546dd0fa2e67eef86d957fbf993b61dfe";
+      hash = "sha256-exr9j/jW2P9cBhKUPQy3AtK5Vgav5vOyWInXUyVhBk0=";
+      name = "Andromeda";
+    })
+
+    (fetchFromGitHub {
+      owner = "EliverLara";
+      repo = "Andromeda-gtk";
+      rev = "11a6194d19cb846447db048455a5e782ec830ae1";
+      hash = "sha256-Yy3mih0nyA+ahLqj2D99EKqtmWYJRsvQMkmlLfUPcqQ=";
+      name = "Andromeda-standard-buttons";
+    })
+  ];
+
+  sourceRoot = ".";
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/themes
+    cp -a Andromeda* $out/share/themes
+
+    # remove uneeded files, which are not distributed in https://www.gnome-look.org/p/2039961/
+    rm -rf $out/share/themes/*/.gitignore
+    rm -rf $out/share/themes/*/Art
+    rm -rf $out/share/themes/*/LICENSE
+    rm -rf $out/share/themes/*/README.md
+    rm -rf $out/share/themes/*/{package.json,package-lock.json,Gulpfile.js}
+    rm -rf $out/share/themes/*/src
+    rm -rf $out/share/themes/*/cinnamon/*.scss
+    rm -rf $out/share/themes/*/gnome-shell/{earlier-versions,extensions,*.scss}
+    rm -rf $out/share/themes/*/gtk-2.0/{assets.svg,assets.txt,links.fish,render-assets.sh}
+    rm -rf $out/share/themes/*/gtk-3.0/{apps,widgets,*.scss}
+    rm -rf $out/share/themes/*/gtk-4.0/{apps,widgets,*.scss}
+    rm -rf $out/share/themes/*/xfwm4/{assets,render_assets.fish}
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "An elegant dark theme for gnome, mate, budgie, cinnamon, xfce";
+    homepage = "https://github.com/EliverLara/Andromeda-gtk";
+    license = licenses.gpl3Only;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ jakedevs ];
+  };
+}
diff --git a/pkgs/data/themes/arc-kde/default.nix b/pkgs/data/themes/arc-kde/default.nix
index 2b41baa63494f..79467e1743ef8 100644
--- a/pkgs/data/themes/arc-kde/default.nix
+++ b/pkgs/data/themes/arc-kde/default.nix
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "A port of the arc theme for Plasma";
-    homepage = "https://git.io/arc-kde";
+    homepage = "https://github.com/PapirusDevelopmentTeam/arc-kde";
     license = lib.licenses.gpl3;
     maintainers = [ lib.maintainers.nixy ];
     platforms = lib.platforms.all;
diff --git a/pkgs/data/themes/base16-schemes/default.nix b/pkgs/data/themes/base16-schemes/default.nix
index 674eeabc62567..b910ba8c6cf60 100644
--- a/pkgs/data/themes/base16-schemes/default.nix
+++ b/pkgs/data/themes/base16-schemes/default.nix
@@ -2,20 +2,20 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "base16-schemes";
-  version = "unstable-2023-05-02";
+  version = "unstable-2024-01-14";
 
   src = fetchFromGitHub {
     owner = "tinted-theming";
-    repo = "base16-schemes";
-    rev = "9a4002f78dd1094c123169da243680b2fda3fe69";
-    sha256 = "sha256-AngNF++RZQB0l4M8pRgcv66pAcIPY+cCwmUOd+RBJKA=";
+    repo = "schemes";
+    rev = "395074124283df993571f2abb9c713f413b76e6e";
+    sha256 = "sha256-9LmwYbtTxNFiP+osqRUbOXghJXpYvyvAwBwW80JMO7s=";
   };
 
   installPhase = ''
     runHook preInstall
 
     mkdir -p $out/share/themes/
-    install *.yaml $out/share/themes/
+    install base16/*.yaml $out/share/themes/
 
     runHook postInstall
   '';
diff --git a/pkgs/data/themes/catppuccin-gtk/colloid-src-git-reset.patch b/pkgs/data/themes/catppuccin-gtk/colloid-src-git-reset.patch
new file mode 100644
index 0000000000000..7ee1f4bd9b6f7
--- /dev/null
+++ b/pkgs/data/themes/catppuccin-gtk/colloid-src-git-reset.patch
@@ -0,0 +1,17 @@
+diff --git a/scripts/create_theme.py b/scripts/create_theme.py
+index 074dc43..7e7a8eb 100644
+--- a/scripts/create_theme.py
++++ b/scripts/create_theme.py
+@@ -34,7 +34,11 @@ def create_theme(types: List[str], accents: List[str], dest: str, link: bool = F
+             os.chdir(work_dir)
+             subprocess.call("./build.sh", shell=True) # Rebuild all scss
+             subprocess.call(install_cmd, shell=True) # Install the theme globally for you
+-            subprocess.call("git reset --hard HEAD", shell=True)  # reset colloid repo to original state
++            # subprocess.call("git reset --hard HEAD", shell=True)  # reset colloid repo to original state
++            # recreate git reset
++            os.chdir(repo_dir)
++            shutil.rmtree("colloid")
++            shutil.copytree("colloid-base", "colloid")
+ 
+             try:
+                 # Rename colloid generated files as per catppuccin
diff --git a/pkgs/data/themes/catppuccin-gtk/default.nix b/pkgs/data/themes/catppuccin-gtk/default.nix
index 49df77b2adb96..2e552290ffd35 100644
--- a/pkgs/data/themes/catppuccin-gtk/default.nix
+++ b/pkgs/data/themes/catppuccin-gtk/default.nix
@@ -29,17 +29,21 @@ lib.checkListOfEnum "${pname}: tweaks" validTweaks tweaks
 
 stdenvNoCC.mkDerivation rec {
   inherit pname;
-  version = "0.7.1";
+  version = "0.7.3";
 
   src = fetchFromGitHub {
     owner = "catppuccin";
     repo = "gtk";
     rev = "v${version}";
-    hash = "sha256-V3JasiHaATbVDQJeJPeFq5sjbkQnSMbDRWsaRzGccXU=";
+    hash = "sha256-pGL8vaE63ss2ZT2FoNDfDkeuCxjcbl02RmwwfHC/Vxg=";
   };
 
   nativeBuildInputs = [ gtk3 sassc ];
 
+  patches = [
+    ./colloid-src-git-reset.patch
+  ];
+
   buildInputs = [
     gnome-themes-extra
     (python3.withPackages (ps: [ ps.catppuccin ]))
@@ -54,7 +58,7 @@ stdenvNoCC.mkDerivation rec {
   '';
 
   postPatch = ''
-    patchShebangs --build colloid/install.sh
+    patchShebangs --build colloid/install.sh colloid/build.sh
   '';
 
   dontConfigure = true;
@@ -63,6 +67,7 @@ stdenvNoCC.mkDerivation rec {
   installPhase = ''
     runHook preInstall
 
+    cp -r colloid colloid-base
     mkdir -p $out/share/themes
     export HOME=$(mktemp -d)
 
diff --git a/pkgs/data/themes/catppuccin-kde/default.nix b/pkgs/data/themes/catppuccin-kde/default.nix
index 8dac978a64dc5..b4ce9ed5d39f0 100644
--- a/pkgs/data/themes/catppuccin-kde/default.nix
+++ b/pkgs/data/themes/catppuccin-kde/default.nix
@@ -21,19 +21,19 @@ in
 
 stdenvNoCC.mkDerivation rec {
   pname = "kde";
-  version = "0.2.4";
+  version = "0.2.6";
 
   src = fetchFromGitHub {
     owner = "catppuccin";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-w77lzeSisx/PPxctMJKIdRJenq0s8HwR8gLmgNh4SH8=";
+    hash = "sha256-pfG0L4eSXLYLZM8Mhla4yalpEro74S9kc0sOmQtnG3w=";
   };
 
   patches = [
     (fetchpatch {
-      url = "https://github.com/michaelBelsanti/catppuccin-kde/commit/81a8edb3c24bd6af896c92b5051e09af97d69c51.patch";
-      hash = "sha256-cb4/dQ52T+H8UqXEgExblmnMfxwO0Y1BrjMCay/EAkI=";
+      url = "https://github.com/GiggleSquid/catppuccin-kde/commit/f0291c17d2e4711b0d0aac00e3dbb94ee89b4a82.patch";
+      hash = "sha256-iD+mEX2LRFmrCwLr3VAs6kzcTuZ231TKDn+U188iOss=";
     })
   ];
 
@@ -57,6 +57,6 @@ stdenvNoCC.mkDerivation rec {
     description = "Soothing pastel theme for KDE";
     homepage = "https://github.com/catppuccin/kde";
     license = licenses.mit;
-    maintainers = with maintainers; [ michaelBelsanti ];
+    maintainers = with maintainers; [ michaelBelsanti gigglesquid ];
   };
 }
diff --git a/pkgs/data/themes/catppuccin-sddm-corners/default.nix b/pkgs/data/themes/catppuccin-sddm-corners/default.nix
index eca8bac5e4980..952399f7bf868 100644
--- a/pkgs/data/themes/catppuccin-sddm-corners/default.nix
+++ b/pkgs/data/themes/catppuccin-sddm-corners/default.nix
@@ -1,21 +1,37 @@
 { lib
 , stdenvNoCC
 , fetchFromGitHub
+, libsForQt5
+, unstableGitUpdater
 }:
 
 stdenvNoCC.mkDerivation {
   pname = "catppuccin-sddm-corners";
-  version = "unstable-2023-02-17";
+  version = "unstable-2023-05-30";
 
   src = fetchFromGitHub {
     owner = "khaneliman";
     repo = "catppuccin-sddm-corners";
-    rev = "7b7a86ee9a5a2905e7e6623d2af5922ce890ef79";
-    hash = "sha256-sTnt8RarNXz3RmYfmx4rD+nMlY8rr2n0EN3ntPzOurw=";
+    rev = "ffaad5c8964b52ccd92a80dfd3a7931c8b68c446";
+    hash = "sha256-CaCMrXlwt7JfSycB8WH3XCWUu+i7bPSfFv3duo7ZlZo=";
   };
 
   dontConfigure = true;
   dontBuild = true;
+  dontWrapQtApps = true;
+
+  propagatedBuildInputs = with libsForQt5.qt5; [
+    qtgraphicaleffects
+    qtquickcontrols2
+    qtsvg
+  ];
+
+  postFixup = ''
+    mkdir -p $out/nix-support
+    echo ${libsForQt5.qt5.qtgraphicaleffects}  >> $out/nix-support/propagated-user-env-packages
+    echo ${libsForQt5.qt5.qtquickcontrols2}  >> $out/nix-support/propagated-user-env-packages
+    echo ${libsForQt5.qt5.qtsvg}  >> $out/nix-support/propagated-user-env-packages
+  '';
 
   installPhase = ''
     runHook preInstall
@@ -26,6 +42,8 @@ stdenvNoCC.mkDerivation {
     runHook postInstall
   '';
 
+  passthru.updateScript = unstableGitUpdater { };
+
   meta = {
     description = "Soothing pastel theme for SDDM based on corners theme.";
     homepage = "https://github.com/khaneliman/sddm-catppuccin-corners";
diff --git a/pkgs/data/themes/catppuccin/default.nix b/pkgs/data/themes/catppuccin/default.nix
index 25794c9e67d7c..2463b1fde6db3 100644
--- a/pkgs/data/themes/catppuccin/default.nix
+++ b/pkgs/data/themes/catppuccin/default.nix
@@ -1,5 +1,5 @@
 let
-  validThemes = [ "bat" "bottom" "btop" "grub" "hyprland" "k9s" "kvantum" "lazygit" "plymouth" "qt5ct" "refind" "rofi" "starship" "waybar" ];
+  validThemes = [ "bat" "bottom" "btop" "grub" "hyprland" "k9s" "kvantum" "lazygit" "lxqt" "plymouth" "qt5ct" "refind" "rofi" "starship" "thunderbird" "waybar" ];
 in
 { fetchFromGitHub
 , lib
@@ -20,8 +20,8 @@ let
       name = "bat";
       owner = "catppuccin";
       repo = "bat";
-      rev = "ba4d16880d63e656acced2b7d4e034e4a93f74b1";
-      hash = "sha256-6WVKQErGdaqb++oaXnY3i6/GuH2FhTgK0v4TN4Y0Wbw=";
+      rev = "2bafe4454d8db28491e9087ff3a1382c336e7d27";
+      hash = "sha256-yHt3oIjUnljARaihalcWSNldtaJfVDfmfiecYfbzGs0=";
     };
 
     bottom = fetchFromGitHub {
@@ -60,8 +60,8 @@ let
       name = "k9s";
       owner = "catppuccin";
       repo = "k9s";
-      rev = "516f44dd1a6680357cb30d96f7e656b653aa5059";
-      hash = "sha256-PtBJRBNbLkj7D2ko7ebpEjbfK9Ywjs7zbE+Y8FQVEfA=";
+      rev = "590a762110ad4b6ceff274265f2fe174c576ce96";
+      hash = "sha256-EBDciL3F6xVFXvND+5duT+OiVDWKkFMWbOOSruQ0lus=";
     };
 
     kvantum = fetchFromGitHub {
@@ -76,16 +76,24 @@ let
       name = "lazygit";
       owner = "catppuccin";
       repo = "lazygit";
-      rev = "0543c28e8af1a935f8c512ad9451facbcc17d8a8";
-      hash = "sha256-OVihY5E+elPKag2H4RyWiSv+MdIqHtfGNM3/1u2ik6U=";
+      rev = "v2.0.0";
+      hash = "sha256-gM0HplHhcpvtpmIVdlX/p59h0v+ihKEidS1imqPYlBg=";
+    };
+
+    lxqt = fetchFromGitHub {
+      name = "lxqt";
+      owner = "catppuccin";
+      repo = "lxqt";
+      rev = "38cf86b3e499e0c0928a102c9c030e5dc6b79255";
+      hash = "sha256-3TuUkOwk6BSc7BnLnTowGAkSlNTOtGTRlEcjJ6MNJ5g=";
     };
 
     plymouth = fetchFromGitHub {
       name = "plymouth";
       owner = "catppuccin";
       repo = "plymouth";
-      rev = "d4105cf336599653783c34c4a2d6ca8c93f9281c";
-      hash = "sha256-quBSH8hx3gD7y1JNWAKQdTk3CmO4t1kVo4cOGbeWlNE=";
+      rev = "67759fbe15eb9490d096ef8014d9f92fc5748fe7";
+      hash = "sha256-IzoyVOi44Uay7DTfzR9RdRLSjORsdBM4pPrgeXk5YMI=";
     };
 
     qt5ct = fetchFromGitHub {
@@ -120,6 +128,14 @@ let
       hash = "sha256-nsRuxQFKbQkyEI4TXgvAjcroVdG+heKX5Pauq/4Ota0=";
     };
 
+    thunderbird = fetchFromGitHub {
+      name = "thunderbird";
+      owner = "catppuccin";
+      repo = "thunderbird";
+      rev = "d61882ad9fd35909a75da6bb95fca38db552135c";
+      hash = "sha256-wn8//8lHScbbB1nEiDY8DphnLUMKZBFMc1GPaTRjTOY=";
+    };
+
     waybar = fetchFromGitHub {
       name = "waybar";
       owner = "catppuccin";
@@ -135,7 +151,7 @@ lib.checkListOfEnum "${pname}: themes" validThemes themeList
 
 stdenvNoCC.mkDerivation {
   inherit pname;
-  version = "unstable-2023-10-09";
+  version = "unstable-2024-03-12";
 
   srcs = selectedSources;
 
@@ -154,7 +170,7 @@ stdenvNoCC.mkDerivation {
 
   '' + lib.optionalString (lib.elem "bat" themeList) ''
     mkdir -p $out/bat
-    cp "${sources.bat}/Catppuccin-${variant}.tmTheme" "$out/bat/"
+    cp "${sources.bat}/themes/Catppuccin "$capitalizedVariant".tmTheme" "$out/bat/"
 
   '' + lib.optionalString (lib.elem "btop" themeList) ''
     mkdir -p $out/btop
@@ -174,7 +190,8 @@ stdenvNoCC.mkDerivation {
 
   '' + lib.optionalString (lib.elem "k9s" themeList) ''
     mkdir -p $out/k9s
-    cp "${sources.k9s}/dist/${variant}.yml" "$out/k9s/"
+    cp "${sources.k9s}/dist/catppuccin-${variant}.yaml" "$out/k9s/"
+    cp "${sources.k9s}/dist/catppuccin-${variant}-transparent.yaml" "$out/k9s/"
 
   '' + lib.optionalString (lib.elem "kvantum" themeList) ''
     mkdir -p $out/share/Kvantum
@@ -182,8 +199,12 @@ stdenvNoCC.mkDerivation {
 
   '' + lib.optionalString (lib.elem "lazygit" themeList) ''
     mkdir -p $out/lazygit/{themes,themes-mergable}
-    cp "${sources.lazygit}/themes/${variant}/${variant}-${accent}.yml" "$out/lazygit/themes/"
-    cp "${sources.lazygit}/themes-mergable/${variant}/${variant}-${accent}.yml" "$out/lazygit/themes-mergable/"
+    cp "${sources.lazygit}/themes/${variant}/${accent}.yml" "$out/lazygit/themes/"
+    cp "${sources.lazygit}/themes-mergable/${variant}/${accent}.yml" "$out/lazygit/themes-mergable/"
+
+  '' + lib.optionalString (lib.elem "lxqt" themeList) ''
+    mkdir -p $out/share/lxqt/themes/catppuccin-${variant}
+    cp -r ${sources.lxqt}/src/catppuccin-${variant}/* $out/share/lxqt/themes/catppuccin-${variant}/
 
   '' + lib.optionalString (lib.elem "plymouth" themeList) ''
     mkdir -p $out/share/plymouth/themes/catppuccin-${variant}
@@ -207,6 +228,10 @@ stdenvNoCC.mkDerivation {
     mkdir -p $out/starship
     cp ${sources.starship}/palettes/${variant}.toml $out/starship/
 
+  '' + lib.optionalString (lib.elem "thunderbird" themeList) ''
+    mkdir -p $out/thunderbird
+    cp ${sources.thunderbird}/themes/${variant}/${variant}-${accent}.xpi $out/thunderbird/
+
   '' + lib.optionalString (lib.elem "waybar" themeList) ''
     mkdir -p $out/waybar
     cp ${sources.waybar}/${variant}.css $out/waybar/
diff --git a/pkgs/data/themes/colloid-gtk-theme/default.nix b/pkgs/data/themes/colloid-gtk-theme/default.nix
index 71e7fb9a28632..ef69114c855e0 100644
--- a/pkgs/data/themes/colloid-gtk-theme/default.nix
+++ b/pkgs/data/themes/colloid-gtk-theme/default.nix
@@ -18,17 +18,17 @@ in
 lib.checkListOfEnum "${pname}: theme variants" [ "default" "purple" "pink" "red" "orange" "yellow" "green" "teal" "grey" "all" ] themeVariants
 lib.checkListOfEnum "${pname}: color variants" [ "standard" "light" "dark" ] colorVariants
 lib.checkListOfEnum "${pname}: size variants" [ "standard" "compact" ] sizeVariants
-lib.checkListOfEnum "${pname}: tweaks" [ "nord" "dracula" "gruvbox" "all" "black" "rimless" "normal" "float" ] tweaks
+lib.checkListOfEnum "${pname}: tweaks" [ "nord" "dracula" "gruvbox" "everforest" "all" "black" "rimless" "normal" "float" ] tweaks
 
 stdenvNoCC.mkDerivation rec {
   inherit pname;
-  version = "2023-10-28";
+  version = "2024-04-14";
 
   src = fetchFromGitHub {
     owner = "vinceliuice";
     repo = pname;
     rev = version;
-    hash = "sha256-NxIWH3qLW8sEguovAv9wfgnlnmPlTipRJTmMo3rSHNY=";
+    hash = "sha256-DQYnR2V86KbIJfAA4ObRtKQq1IuECie1qdOBYVu8NtA=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/data/themes/dracula-theme/default.nix b/pkgs/data/themes/dracula-theme/default.nix
index 348b6c961f58a..db1ef4da0b1e3 100644
--- a/pkgs/data/themes/dracula-theme/default.nix
+++ b/pkgs/data/themes/dracula-theme/default.nix
@@ -2,7 +2,7 @@
 
 let
   themeName = "Dracula";
-  version = "unstable-2024-01-08";
+  version = "unstable-2024-04-08";
 in
 stdenvNoCC.mkDerivation {
   pname = "dracula-theme";
@@ -11,8 +11,8 @@ stdenvNoCC.mkDerivation {
   src = fetchFromGitHub {
     owner = "dracula";
     repo = "gtk";
-    rev = "f3c876d8c97f9bb504c98592a8d96770e70585bb";
-    hash = "sha256-jRq/rUVk/1+LoQaD5sytjai0yZOf+544z0TfxhMUThg=";
+    rev = "18350cafd8e9c775737f97fb5acf0890e29bc47a";
+    hash = "sha256-uhcRV7E7GDjWjetUHcz/E/g36m/yYTg3c9WJo6gYTJA=";
   };
 
   propagatedUserEnvPkgs = [
diff --git a/pkgs/data/themes/elegant-sddm/default.nix b/pkgs/data/themes/elegant-sddm/default.nix
new file mode 100644
index 0000000000000..eaf435089d71d
--- /dev/null
+++ b/pkgs/data/themes/elegant-sddm/default.nix
@@ -0,0 +1,63 @@
+{ lib
+, formats
+, stdenvNoCC
+, fetchFromGitHub
+, qtgraphicaleffects
+  /* An example of how you can override the background with a NixOS wallpaper
+  *
+  *  environment.systemPackages = [
+  *    (pkgs.elegant-sddm.override {
+  *      themeConfig.General = {
+           background = "${pkgs.nixos-artwork.wallpapers.simple-dark-gray-bottom.gnomeFilePath}";
+  *      };
+  *    })
+  *  ];
+  */
+, themeConfig ? null
+}:
+
+let
+  user-cfg = (formats.ini { }).generate "theme.conf.user" themeConfig;
+in
+
+stdenvNoCC.mkDerivation {
+  pname = "elegant-sddm";
+  version = "unstable-2024-02-08";
+
+  src = fetchFromGitHub {
+    owner = "surajmandalcell";
+    repo = "Elegant-sddm";
+    rev = "3102e880f46a1b72c929d13cd0a3fb64f973952a";
+    hash = "sha256-yn0fTYsdZZSOcaYlPCn8BUIWeFIKcTI1oioTWqjYunQ=";
+  };
+
+  propagatedBuildInputs = [
+    qtgraphicaleffects
+  ];
+
+  dontWrapQtApps = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p "$out/share/sddm/themes"
+    cp -r Elegant/ "$out/share/sddm/themes/Elegant"
+  '' + (lib.optionalString (lib.isAttrs themeConfig) ''
+    ln -sf ${user-cfg} $out/share/sddm/themes/Elegant/theme.conf.user
+  '') + ''
+    runHook postInstall
+  '';
+
+  postFixup = ''
+    mkdir -p $out/nix-support
+
+    echo ${qtgraphicaleffects} >> $out/nix-support/propagated-user-env-packages
+  '';
+
+  meta = with lib; {
+    description = "Sleek and stylish SDDM theme crafted in QML";
+    homepage = "https://github.com/surajmandalcell/Elegant-sddm";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ GaetanLepage ];
+  };
+}
diff --git a/pkgs/data/themes/gruvbox-gtk-theme/default.nix b/pkgs/data/themes/gruvbox-gtk-theme/default.nix
deleted file mode 100644
index b579f71d8b8b5..0000000000000
--- a/pkgs/data/themes/gruvbox-gtk-theme/default.nix
+++ /dev/null
@@ -1,42 +0,0 @@
-{ lib
-, stdenvNoCC
-, fetchFromGitHub
-, gnome-themes-extra
-, gtk-engine-murrine
-}:
-stdenvNoCC.mkDerivation {
-  pname = "gruvbox-gtk-theme";
-  version = "unstable-2023-05-26";
-
-  src = fetchFromGitHub {
-    owner = "Fausto-Korpsvart";
-    repo = "Gruvbox-GTK-Theme";
-    rev = "c0b7fb501938241a3b6b5734f8cb1f0982edc6b4";
-    hash = "sha256-Y+6HuWaVkNqlYc+w5wLkS2LpKcDtpeOpdHnqBmShm5Q=";
-  };
-
-  propagatedUserEnvPkgs = [
-    gtk-engine-murrine
-  ];
-
-  buildInputs = [
-    gnome-themes-extra
-  ];
-
-  dontBuild = true;
-
-  installPhase = ''
-    runHook preInstall
-    mkdir -p $out/share/themes
-    cp -a themes/* $out/share/themes
-    runHook postInstall
-  '';
-
-  meta = with lib; {
-    description = "A Gtk theme based on the Gruvbox colour pallete";
-    homepage = "https://www.pling.com/p/1681313/";
-    license = licenses.gpl3Only;
-    platforms = platforms.unix;
-    maintainers = [ maintainers.math-42 ];
-  };
-}
diff --git a/pkgs/data/themes/gtk-theme-framework/default.nix b/pkgs/data/themes/gtk-theme-framework/default.nix
index 99b9edfc3aca9..d596580d67edf 100644
--- a/pkgs/data/themes/gtk-theme-framework/default.nix
+++ b/pkgs/data/themes/gtk-theme-framework/default.nix
@@ -31,6 +31,6 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/jaxwilko/gtk-theme-framework";
     license = licenses.gpl3Only;
-    maintainers = with maintainers; [ flexagoon ];
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/data/themes/kwin-decorations/kde-rounded-corners/default.nix b/pkgs/data/themes/kwin-decorations/kde-rounded-corners/default.nix
index f0f28776d358b..b70bc18d78af1 100644
--- a/pkgs/data/themes/kwin-decorations/kde-rounded-corners/default.nix
+++ b/pkgs/data/themes/kwin-decorations/kde-rounded-corners/default.nix
@@ -12,13 +12,13 @@
 
 stdenv.mkDerivation rec {
   pname = "kde-rounded-corners";
-  version = "0.4.0";
+  version = "0.6.1";
 
   src = fetchFromGitHub {
     owner = "matinlotfali";
     repo = "KDE-Rounded-Corners";
     rev = "v${version}";
-    hash = "sha256-mjZWfh00A0J6ijuLqW6frPH4AYbRI/BlVHblGCCmNEo=";
+    hash = "sha256-8QkuIuHC0/fMxh8K3/I8GNhNPX+tw7kUMiU2oK12c0U=";
   };
 
   postConfigure = ''
@@ -33,6 +33,6 @@ stdenv.mkDerivation rec {
     description = "Rounds the corners of your windows";
     homepage = "https://github.com/matinlotfali/KDE-Rounded-Corners";
     license = licenses.gpl3Only;
-    maintainers = with maintainers; [ flexagoon ];
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/data/themes/kwin-decorations/sierra-breeze-enhanced/default.nix b/pkgs/data/themes/kwin-decorations/sierra-breeze-enhanced/default.nix
index 46d6af5f24c42..156d8aaaf9073 100644
--- a/pkgs/data/themes/kwin-decorations/sierra-breeze-enhanced/default.nix
+++ b/pkgs/data/themes/kwin-decorations/sierra-breeze-enhanced/default.nix
@@ -5,17 +5,24 @@
 , wrapQtAppsHook
 , kwin
 , lib
+, useQt5 ? false
 }:
+let
+  latestVersion = "2.0.1";
+  latestSha256 = "sha256-4KvOhQSYmHV/5TxyeK4f1uUmHK5uR5xXC2MfPTM96SM=";
 
+  qt5Version = "1.3.3";
+  qt5Sha256 = "sha256-zTUTsSzy4p0Y7RPOidCtxTjjyvPRyWSQCxA5sUzXcLc=";
+in
 stdenv.mkDerivation rec {
   pname = "sierra-breeze-enhanced";
-  version = "1.3.3";
+  version = if useQt5 then qt5Version else latestVersion;
 
   src = fetchFromGitHub {
     owner = "kupiqu";
     repo = "SierraBreezeEnhanced";
     rev = "V${version}";
-    sha256 = "sha256-zTUTsSzy4p0Y7RPOidCtxTjjyvPRyWSQCxA5sUzXcLc=";
+    sha256 = if useQt5 then qt5Sha256 else latestSha256;
   };
 
   nativeBuildInputs = [ cmake extra-cmake-modules wrapQtAppsHook ];
@@ -32,6 +39,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/kupiqu/SierraBreezeEnhanced";
     changelog = "https://github.com/kupiqu/SierraBreezeEnhanced/releases/tag/V${version}";
     license = licenses.gpl3Only;
-    maintainers = with maintainers; [ flexagoon ];
+    maintainers = with maintainers; [ A1ca7raz ];
   };
 }
diff --git a/pkgs/data/themes/lightly-boehs/default.nix b/pkgs/data/themes/lightly-boehs/default.nix
index 10c30a431e7c0..c8a1b010fc226 100644
--- a/pkgs/data/themes/lightly-boehs/default.nix
+++ b/pkgs/data/themes/lightly-boehs/default.nix
@@ -34,6 +34,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "A fork of the Lightly breeze theme style that aims to be visually modern and minimalistic";
+    mainProgram = "lightly-settings5";
     homepage = "https://github.com/boehs/Lightly";
     license = licenses.gpl2Plus;
     maintainers = [ maintainers.hikari ];
diff --git a/pkgs/data/themes/lightly-qt/default.nix b/pkgs/data/themes/lightly-qt/default.nix
index 7b653d9524240..99e7e4eb59ef1 100644
--- a/pkgs/data/themes/lightly-qt/default.nix
+++ b/pkgs/data/themes/lightly-qt/default.nix
@@ -34,6 +34,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "A fork of breeze theme style that aims to be visually modern and minimalistic";
+    mainProgram = "lightly-settings5";
     homepage = "https://github.com/Luwx/Lightly";
     license = licenses.gpl2Plus;
     maintainers = [ maintainers.pwoelfel ];
diff --git a/pkgs/data/themes/nordic/default.nix b/pkgs/data/themes/nordic/default.nix
index 16eefee7bbb9c..ce17fd9ffd8da 100644
--- a/pkgs/data/themes/nordic/default.nix
+++ b/pkgs/data/themes/nordic/default.nix
@@ -1,5 +1,5 @@
 { lib
-, stdenv
+, stdenvNoCC
 , fetchFromGitHub
 , gtk-engine-murrine
 , breeze-icons
@@ -8,72 +8,72 @@
 , jdupes
 }:
 
-stdenv.mkDerivation rec {
+stdenvNoCC.mkDerivation rec {
   pname = "nordic";
-  version = "unstable-2023-10-17";
+  version = "2.2.0-unstable-2024-02-20";
 
   srcs = [
     (fetchFromGitHub {
       owner = "EliverLara";
       repo = pname;
-      rev = "e97d2bcf4494f8ab502e33d13c74b396469a42f4";
-      hash = "sha256-7WfCE3eoJ7maAYqgQNb0mlw8u3zc6NAwTJN+PVojDcE=";
+      rev = "58d5a8e10ae068b98a63e6de2791e289f417842d";
+      hash = "sha256-Z3e7DoakK6f+UMBr78gZ+NJPb5vuJCfDgPRYywFDYeg=";
       name = "Nordic";
     })
 
     (fetchFromGitHub {
       owner = "EliverLara";
       repo = pname;
-      rev = "73ed3490c13b2df6c3d27d6b3bcba0c087297f4a";
-      hash = "sha256-fRmGiqtjfGFIfr5hRBS3ZPFYEpQx391WoxphB5gRTJo=";
+      rev = "cb7d95bd5438728f30f361a888dfb33b7f6ad28c";
+      hash = "sha256-ZWGmDiXjEt0UuALyw7cjTYgdw9kdJJKc0vkclbZkBvo=";
       name = "Nordic-standard-buttons";
     })
 
     (fetchFromGitHub {
       owner = "EliverLara";
       repo = pname;
-      rev = "4b1fc2942bad203a0aa035cbb688b28005bb1011";
-      hash = "sha256-VU5Bo39l8xdR6QmbTR0Qic6XkSfDFrhyjoHaMm9SBYM=";
+      rev = "37b86a30ad3e048f87a689f2813aa28644035fa8";
+      hash = "sha256-+O8+30H6humVQTwgFL3uQkeo5gPYrokpAKbT56PX6YQ=";
       name = "Nordic-darker";
     })
 
     (fetchFromGitHub {
       owner = "EliverLara";
       repo = pname;
-      rev = "6d57a16eef66c25f0212b7d2f02e208f2afdf4f9";
-      hash = "sha256-Sq5ZXOh+HA+udQHL2wUw5azgKwAVVvHGNb3SiuOn0nQ=";
+      rev = "926b215d14394ff043f2d2969e730759af7acd86";
+      hash = "sha256-yR0DfmUW1rr38Zbwtr7TUYL6z8vTNyoj0vEhphbZieU=";
       name = "Nordic-darker-standard-buttons";
     })
 
     (fetchFromGitHub {
       owner = "EliverLara";
       repo = pname;
-      rev = "566e38c40bca86df93d0e9226c33d5d525d34454";
-      hash = "sha256-Wl/m2O0tVCFgZhPC/gcNgKr0JqQbiyQBpGEcp8g6kvY=";
+      rev = "1ae59d40ba8342fc14f3a55a2fb37446a8d10880";
+      hash = "sha256-tFIXPP5Ohw8atNIqvMtB7sLka+/tw+aSbjMdzKfI9r0=";
       name = "Nordic-bluish-accent";
     })
 
     (fetchFromGitHub {
       owner = "EliverLara";
       repo = pname;
-      rev = "b43efee28129634fdefe70f2a03c401efc7dc22f";
-      hash = "sha256-rLOWkfTMFEnVU2tuw5M2fvbNMPfxIu+gzi+3gnBEhx4=";
+      rev = "aaaa5dab0517f182a85a75d457da70d22e577b26";
+      hash = "sha256-J/nti2jxQ0VfTbp5WfrE0CN6Pvfg1edplL6/QPKUBzc=";
       name = "Nordic-bluish-accent-standard-buttons";
     })
 
     (fetchFromGitHub {
       owner = "EliverLara";
       repo = "${pname}-polar";
-      rev = "2192acfce55fbb9a2982886abe25e623d0e7ff66";
-      hash = "sha256-B/sAy4I+9gX9dHXUldcN5t0vlOL2Jnoan/hRV+tNnSo=";
+      rev = "733d5ea57c6ecd8209ec0a928029e28b3f54f83d";
+      hash = "sha256-y3ge0DF0SdKFjH+mZdHDpK3YG7Ng3rN0y0Er2WBC6Sc=";
       name = "Nordic-Polar";
     })
 
     (fetchFromGitHub {
       owner = "EliverLara";
       repo = "${pname}-polar";
-      rev = "a24b42411d8ea0dc63bf0778e443be251858e586";
-      hash = "sha256-02z4eMFtok1+SeW+ai7vZCXZb6ZhU4l4ch1Zc/GyhYM=";
+      rev = "667dfe4f6e8157f30a4e0ea5dc1d17438520d6cf";
+      hash = "sha256-p7bY1r8Ik+jsIyjR75UFHw8XuiGz5LmT09txBLyZpx4=";
       name = "Nordic-Polar-standard-buttons";
     })
   ];
@@ -121,10 +121,14 @@ stdenv.mkDerivation rec {
     mv -v $out/share/themes/Nordic/kde/colorschemes/* $out/share/color-schemes/
     mv -v $out/share/themes/Nordic/kde/konsole $out/share/
     mv -v $out/share/themes/Nordic/kde/kvantum/* $out/share/Kvantum/
-    mv -v $out/share/themes/Nordic/kde/plasma/look-and-feel $out/share/plasma/
+    cp -vr $out/share/themes/Nordic/kde/plasma/look-and-feel $out/share/plasma/look-and-feel/
+    mv -v $out/share/themes/Nordic/kde/plasma/look-and-feel $out/share/plasma/desktoptheme/
     mv -v $out/share/themes/Nordic/kde/folders/* $out/share/icons/
     mv -v $out/share/themes/Nordic/kde/cursors/*-cursors $out/share/icons/
 
+    rm -rf $out/share/plasma/look-and-feel/*/contents/{logout,osd,components}
+    rm -rf $out/share/plasma/desktoptheme/*/contents/{{defaults,splash,previews}
+
     mkdir -p $sddm/share/sddm/themes
     mv -v $out/share/themes/Nordic/kde/sddm/* $sddm/share/sddm/themes/
 
@@ -139,7 +143,7 @@ stdenv.mkDerivation rec {
 
   postFixup = ''
     # Propagate sddm theme dependencies to user env otherwise sddm
-    # does find them. Putting them in buildInputs is not enough.
+    # does not find them. Putting them in buildInputs is not enough.
 
     mkdir -p $sddm/nix-support
 
diff --git a/pkgs/data/themes/obsidian2/default.nix b/pkgs/data/themes/obsidian2/default.nix
index 86b06f8235353..1d7756e23b052 100644
--- a/pkgs/data/themes/obsidian2/default.nix
+++ b/pkgs/data/themes/obsidian2/default.nix
@@ -8,11 +8,11 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "theme-obsidian2";
-  version = "2.23";
+  version = "2.24";
 
   src = fetchurl {
     url = "https://github.com/madmaxms/theme-obsidian-2/releases/download/v${version}/obsidian-2-theme.tar.xz";
-    sha256 = "sha256-yJoMS5XrHlMss+rdJ+xLJx0F9Hs1Cc+MFk+xyhRXaf0=";
+    sha256 = "sha256-P+62cdYiCk8419S+u1w6EmzJL0rgHAh7G5eTuBOrAGY=";
   };
 
   sourceRoot = ".";
diff --git a/pkgs/data/themes/orchis-theme/default.nix b/pkgs/data/themes/orchis-theme/default.nix
index 351c1c22207cd..75bdf7b07aa9c 100644
--- a/pkgs/data/themes/orchis-theme/default.nix
+++ b/pkgs/data/themes/orchis-theme/default.nix
@@ -26,13 +26,13 @@ lib.checkListOfEnum "${pname}: theme tweaks" validTweaks tweaks
 stdenvNoCC.mkDerivation
 rec {
   inherit pname;
-  version = "2023-10-20";
+  version = "2024-04-18";
 
   src = fetchFromGitHub {
     repo = "Orchis-theme";
     owner = "vinceliuice";
     rev = version;
-    hash = "sha256-GhSzTtbuvbAuXxKNm29sJX5kXE2s2jMDB6Ww6Q7GNSo=";
+    hash = "sha256-Kvafbvw1q8F0+l47WshFHPfZEQhFXPPXuI0RjBJnP4s=";
   };
 
   nativeBuildInputs = [ gtk3 sassc ];
diff --git a/pkgs/data/themes/sweet/default.nix b/pkgs/data/themes/sweet/default.nix
index 3ffa3caf8ba8e..308392a2450b8 100644
--- a/pkgs/data/themes/sweet/default.nix
+++ b/pkgs/data/themes/sweet/default.nix
@@ -1,29 +1,62 @@
-{ lib, stdenv, fetchurl, unzip, gtk-engine-murrine }:
+{ lib
+, stdenvNoCC
+, fetchurl
+, unzip
+, gtk-engine-murrine
+}:
 
-stdenv.mkDerivation rec {
+stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "sweet";
-  version = "3.0";
+  version = "4.0";
 
   srcs = [
     (fetchurl {
-      url = "https://github.com/EliverLara/Sweet/releases/download/v${version}/Sweet-Ambar-Blue.zip";
-      sha256 = "sha256-6ZrjH5L7Yox7riR+2I7vVbFoG4k7xHGyOq1OnkllyiY";
+      url = "https://github.com/EliverLara/Sweet/releases/download/v${finalAttrs.version}/Sweet-Ambar-Blue-Dark-v40.zip";
+      hash = "sha256-w4jN6PSUNCuqeRQ5wInb5deMTtfpKOa7lj9pN+b/0hU=";
     })
     (fetchurl {
-      url = "https://github.com/EliverLara/Sweet/releases/download/v${version}/Sweet-Ambar.zip";
-      sha256 = "sha256-FAbf682YJCCt8NKSdFoaFLwxLDU1aCcTgNdlybZtPMo=";
+      url = "https://github.com/EliverLara/Sweet/releases/download/v${finalAttrs.version}/Sweet-Ambar-Blue-Dark.zip";
+      hash = "sha256-2hb2FHWyGSowRdUnrWMJENlqRtSr2CrPtDe3DSZlP8M=";
     })
     (fetchurl {
-      url = "https://github.com/EliverLara/Sweet/releases/download/v${version}/Sweet-Dark.zip";
-      sha256 = "sha256-t6fczOnKwi4B9hSFhHQaQ533o7MFL+7HPtUJ/p2CIXM=";
+      url = "https://github.com/EliverLara/Sweet/releases/download/v${finalAttrs.version}/Sweet-Ambar-Blue-v40.zip";
+      hash = "sha256-4B0O9hOI9xtzj2gOX354DxtQyiahK5ezr6q6VBpxOJQ=";
     })
     (fetchurl {
-      url = "https://github.com/EliverLara/Sweet/releases/download/v${version}/Sweet-mars.zip";
-      sha256 = "sha256-QGkkpUqkxGPM1DXrvToB3taajk7vK3rqibQF2M4N9i0=";
+      url = "https://github.com/EliverLara/Sweet/releases/download/v${finalAttrs.version}/Sweet-Ambar-Blue.zip";
+      hash = "sha256-8Aw7CsHRflHoeL/DhpxgxDATaAFm+MTMjeZe9Qg8J8o=";
     })
     (fetchurl {
-      url = "https://github.com/EliverLara/Sweet/releases/download/v${version}/Sweet.zip";
-      sha256 = "sha256-1qVC2n7ypN1BFuSzBpbY7QzJUzF1anYNAVcMkNpGTMM";
+      url = "https://github.com/EliverLara/Sweet/releases/download/v${finalAttrs.version}/Sweet-Ambar-v40.zip";
+      hash = "sha256-Ih8/d4qHBAaDDHUIdzw7J6jGu5Zg6KTPffEs+jh0VkM=";
+    })
+    (fetchurl {
+      url = "https://github.com/EliverLara/Sweet/releases/download/v${finalAttrs.version}/Sweet-Ambar.zip";
+      hash = "sha256-WdawPwNRW1uVNFIiP7bSQxvcWQtD/i8b4oLplPbPLyU=";
+    })
+    (fetchurl {
+      url = "https://github.com/EliverLara/Sweet/releases/download/v${finalAttrs.version}/Sweet-Dark-v40.zip";
+      hash = "sha256-5vnTneWP5uRFeL6PjuP61OglbNL6+lLGPHmrLeqyk2w=";
+    })
+    (fetchurl {
+      url = "https://github.com/EliverLara/Sweet/releases/download/v${finalAttrs.version}/Sweet-Dark.zip";
+      hash = "sha256-EmXM2/IG82KKm5npl2KLTryhu7Y/5KLKnPv1JxYm0Z4=";
+    })
+    (fetchurl {
+      url = "https://github.com/EliverLara/Sweet/releases/download/v${finalAttrs.version}/Sweet-mars-v40.zip";
+      hash = "sha256-5t9NsxmbjDg7Nf/BSnbdZhx1wl6PQxXYxKuhlNnIPO4=";
+    })
+    (fetchurl {
+      url = "https://github.com/EliverLara/Sweet/releases/download/v${finalAttrs.version}/Sweet-mars.zip";
+      hash = "sha256-ZX7Z9gTMVUjFVtdN+FWuHAkV+Yk8vk7D23gr27efpNM=";
+    })
+    (fetchurl {
+      url = "https://github.com/EliverLara/Sweet/releases/download/v${finalAttrs.version}/Sweet-v40.zip";
+      hash = "sha256-NHSFgj5iybwzcYw0JyMWijhVXSEvhbMhj1KcvTsHpS4=";
+    })
+    (fetchurl {
+      url = "https://github.com/EliverLara/Sweet/releases/download/v${finalAttrs.version}/Sweet.zip";
+      hash = "sha256-R2ULcqjOQ9aPO4c2o5ow81icZGKxA5Qvq7G5XGGC2Og=";
     })
   ];
 
@@ -44,8 +77,8 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     description = "Light and dark colorful Gtk3.20+ theme";
     homepage = "https://github.com/EliverLara/Sweet";
-    license = licenses.gpl3Only;
-    maintainers = with maintainers; [ fuzen ];
-    platforms = platforms.linux;
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ fuzen d3vil0p3r ];
+    platforms = platforms.unix;
   };
-}
+})
diff --git a/pkgs/data/themes/tokyo-night-gtk/default.nix b/pkgs/data/themes/tokyonight-gtk-theme/default.nix
index dc3273e695b1e..b56b0aadd3ed4 100644
--- a/pkgs/data/themes/tokyo-night-gtk/default.nix
+++ b/pkgs/data/themes/tokyonight-gtk-theme/default.nix
@@ -6,7 +6,7 @@
 }:
 
 let
-  prefix = "tokyo-night-gtk";
+  prefix = "tokyonight-gtk-theme";
 
   packages = lib.mapAttrs' (type: content: {
     name = type;
diff --git a/pkgs/data/themes/tokyo-night-gtk/generic.nix b/pkgs/data/themes/tokyonight-gtk-theme/generic.nix
index 35bf498666da9..e575d13c436b8 100644
--- a/pkgs/data/themes/tokyo-night-gtk/generic.nix
+++ b/pkgs/data/themes/tokyonight-gtk-theme/generic.nix
@@ -12,7 +12,7 @@
 
 stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "${prefix}_${type}-${variantName}";
-  version = "unstable-2023-05-30";
+  version = "unstable-2023-05-31";
 
   src = fetchFromGitHub {
     owner = "Fausto-Korpsvart";
diff --git a/pkgs/data/themes/tokyo-night-gtk/variants.json b/pkgs/data/themes/tokyonight-gtk-theme/variants.json
index 6489d9c649dee..6489d9c649dee 100644
--- a/pkgs/data/themes/tokyo-night-gtk/variants.json
+++ b/pkgs/data/themes/tokyonight-gtk-theme/variants.json
diff --git a/pkgs/data/themes/where-is-my-sddm-theme/default.nix b/pkgs/data/themes/where-is-my-sddm-theme/default.nix
deleted file mode 100644
index 64fc67b300268..0000000000000
--- a/pkgs/data/themes/where-is-my-sddm-theme/default.nix
+++ /dev/null
@@ -1,50 +0,0 @@
-{ lib
-, formats
-, stdenvNoCC
-, fetchFromGitHub
-, qtgraphicaleffects
-  /* An example of how you can override the background on the NixOS logo
-  *
-  *  environment.systemPackages = [
-  *    (pkgs.where-is-my-sddm-theme.override {
-  *      themeConfig.General = {
-  *        background = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
-  *        backgroundMode = "none";
-  *      };
-  *    })
-  *  ];
-  */
-, themeConfig ? null
-}:
-
-let
-  user-cfg = (formats.ini { }).generate "theme.conf.user" themeConfig;
-in
-
-stdenvNoCC.mkDerivation rec {
-  pname = "where-is-my-sddm-theme";
-  version = "1.6.0";
-
-  src = fetchFromGitHub {
-    owner = "stepanzubkov";
-    repo = pname;
-    rev = "v${version}";
-    hash = "sha256-EK0bB2dRXNtDKFiyf+nMoDq9XK2f3PFwoNbQDZamB3Y=";
-  };
-
-  propagatedUserEnvPkgs = [ qtgraphicaleffects ];
-
-  installPhase = ''
-    mkdir -p $out/share/sddm/themes/
-    cp -r where_is_my_sddm_theme/ $out/share/sddm/themes/
-  '' + lib.optionalString (lib.isAttrs themeConfig) ''
-    ln -sf ${user-cfg} $out/share/sddm/themes/where_is_my_sddm_theme/theme.conf.user
-  '';
-
-  meta = with lib; {
-    description = "The most minimalistic SDDM theme among all themes";
-    homepage = "https://github.com/stepanzubkov/where-is-my-sddm-theme";
-    license = licenses.mit;
-    maintainers = with maintainers; [ name-snrl ];
-  };
-}
diff --git a/pkgs/data/themes/whitesur/default.nix b/pkgs/data/themes/whitesur/default.nix
index fb9a63b21f1ab..8c1651fff231c 100644
--- a/pkgs/data/themes/whitesur/default.nix
+++ b/pkgs/data/themes/whitesur/default.nix
@@ -13,9 +13,14 @@
 , colorVariants ? [] # default: all
 , opacityVariants ? [] # default: all
 , themeVariants ? [] # default: default (BigSur-like theme)
+, iconVariant ? null # default: standard (Apple logo)
+, nautilusStyle ? null # default: stable (BigSur-like style)
 , nautilusSize ? null # default: 200px
 , panelOpacity ? null # default: 15%
 , panelSize ? null # default: 32px
+, roundedMaxWindow ? false # default: false
+, nordColor ? false # default = false
+, darkerColor ? false # default = false
 }:
 
 let
@@ -24,22 +29,24 @@ let
 
 in
 lib.checkListOfEnum "${pname}: alt variants" [ "normal" "alt" "all" ] altVariants
-lib.checkListOfEnum "${pname}: color variants" [ "light" "dark" ] colorVariants
+lib.checkListOfEnum "${pname}: color variants" [ "Light" "Dark" ] colorVariants
 lib.checkListOfEnum "${pname}: opacity variants" [ "normal" "solid" ] opacityVariants
 lib.checkListOfEnum "${pname}: theme variants" [ "default" "blue" "purple" "pink" "red" "orange" "yellow" "green" "grey" "all" ] themeVariants
+lib.checkListOfEnum "${pname}: Activities icon variants" [ "standard" "simple" "gnome" "ubuntu" "tux" "arch" "manjaro" "fedora" "debian" "void" "opensuse" "popos" "mxlinux" "zorin" ] (single iconVariant)
+lib.checkListOfEnum "${pname}: nautilus style" [ "stable" "normal" "mojave" "glassy" ] (single nautilusStyle)
 lib.checkListOfEnum "${pname}: nautilus sidebar minimum width" [ "default" "180" "220" "240" "260" "280" ] (single nautilusSize)
 lib.checkListOfEnum "${pname}: panel opacity" [ "default" "30" "45" "60" "75" ] (single panelOpacity)
 lib.checkListOfEnum "${pname}: panel size" [ "default" "smaller" "bigger" ] (single panelSize)
 
 stdenv.mkDerivation rec {
   pname = "whitesur-gtk-theme";
-  version = "2023-10-13";
+  version = "2024-02-26";
 
   src = fetchFromGitHub {
     owner = "vinceliuice";
     repo = pname;
     rev = version;
-    sha256 = "sha256-H8QdKCX6C36J7AfFd0VV9Rnm8LGXSfkxj5Yp2p+PduE=";
+    sha256 = "sha256-9HYsORTd5n0jUYmwiObPZ90mOGhR2j+tzs6Y1NNnrn4=";
   };
 
   nativeBuildInputs = [
@@ -79,9 +86,14 @@ stdenv.mkDerivation rec {
       ${toString (map (x: "--color " + x) colorVariants)} \
       ${toString (map (x: "--opacity " + x) opacityVariants)} \
       ${toString (map (x: "--theme " + x) themeVariants)} \
+      ${lib.optionalString (iconVariant != null) ("--icon " + iconVariant)} \
+      ${lib.optionalString (nautilusStyle != null) ("--nautilus-style " + nautilusStyle)} \
       ${lib.optionalString (nautilusSize != null) ("--size " + nautilusSize)} \
       ${lib.optionalString (panelOpacity != null) ("--panel-opacity " + panelOpacity)} \
       ${lib.optionalString (panelSize != null) ("--panel-size " + panelSize)} \
+      ${lib.optionalString (roundedMaxWindow == true) "--roundedmaxwindow"} \
+      ${lib.optionalString (nordColor == true) "--nordcolor"} \
+      ${lib.optionalString (darkerColor == true) "--darkercolor"} \
       --dest $out/share/themes
 
     jdupes --quiet --link-soft --recurse $out/share
@@ -92,7 +104,7 @@ stdenv.mkDerivation rec {
   passthru.updateScript = gitUpdater { };
 
   meta = with lib; {
-    description = "MacOS Big Sur like theme for Gnome desktops";
+    description = "MacOS BigSur like Gtk+ theme based on Elegant Design";
     homepage = "https://github.com/vinceliuice/WhiteSur-gtk-theme";
     license = licenses.mit;
     platforms = platforms.unix;
diff --git a/pkgs/data/themes/yaru/default.nix b/pkgs/data/themes/yaru/default.nix
index 1490b5db79d72..4810bfd55e325 100644
--- a/pkgs/data/themes/yaru/default.nix
+++ b/pkgs/data/themes/yaru/default.nix
@@ -39,6 +39,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/ubuntu/yaru";
     license = with licenses; [ cc-by-sa-40 gpl3Plus lgpl21Only lgpl3Only ];
     platforms = platforms.linux;
-    maintainers = with maintainers; [ moni amaxine ];
+    maintainers = with maintainers; [ moni ];
   };
 }