about summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/applications/display-managers/greetd/gtkgreet.nix1
-rw-r--r--pkgs/applications/editors/vim/plugins/generated.nix417
-rw-r--r--pkgs/applications/editors/vim/plugins/nvim-treesitter/generated.nix183
-rw-r--r--pkgs/applications/editors/vim/plugins/overrides.nix17
-rw-r--r--pkgs/applications/editors/vim/plugins/vim-plugin-names2
-rw-r--r--pkgs/applications/networking/browsers/firefox-bin/release_sources.nix810
-rw-r--r--pkgs/applications/networking/browsers/firefox/packages.nix4
-rw-r--r--pkgs/applications/networking/cluster/terraform-providers/providers.json42
-rw-r--r--pkgs/applications/networking/cluster/timoni/default.nix6
-rw-r--r--pkgs/applications/science/molecular-dynamics/gromacs/default.nix4
-rw-r--r--pkgs/applications/terminal-emulators/foot/default.nix1
-rw-r--r--pkgs/applications/video/kooha/default.nix1
-rw-r--r--pkgs/applications/window-managers/hyprwm/hyprpaper/default.nix1
-rw-r--r--pkgs/applications/window-managers/sway/default.nix1
-rw-r--r--pkgs/development/libraries/ctranslate2/default.nix4
-rw-r--r--pkgs/development/node-packages/aliases.nix6
-rw-r--r--pkgs/development/node-packages/main-programs.nix4
-rw-r--r--pkgs/development/node-packages/node-packages.json6
-rw-r--r--pkgs/development/node-packages/node-packages.nix1685
-rw-r--r--pkgs/development/node-packages/overrides.nix19
-rwxr-xr-xpkgs/development/node-packages/remove-attr.py19
-rw-r--r--pkgs/development/python-modules/adb-enhanced/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-keyvault/default.nix4
-rw-r--r--pkgs/development/python-modules/black/default.nix1
-rw-r--r--pkgs/development/python-modules/cdcs/default.nix8
-rw-r--r--pkgs/development/python-modules/dvc-data/default.nix4
-rw-r--r--pkgs/development/python-modules/dvclive/default.nix4
-rw-r--r--pkgs/development/python-modules/emoji/default.nix4
-rw-r--r--pkgs/development/python-modules/flask-talisman/default.nix4
-rw-r--r--pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix4
-rw-r--r--pkgs/development/python-modules/google-cloud-pubsub/default.nix4
-rw-r--r--pkgs/development/python-modules/google-cloud-resource-manager/default.nix4
-rw-r--r--pkgs/development/python-modules/google-cloud-secret-manager/default.nix4
-rw-r--r--pkgs/development/python-modules/google-cloud-spanner/default.nix4
-rw-r--r--pkgs/development/python-modules/google-cloud-tasks/default.nix4
-rw-r--r--pkgs/development/python-modules/influxdb-client/default.nix4
-rw-r--r--pkgs/development/python-modules/json-schema-for-humans/default.nix4
-rw-r--r--pkgs/development/python-modules/mrkd/default.nix30
-rw-r--r--pkgs/development/python-modules/pex/default.nix6
-rw-r--r--pkgs/development/python-modules/trove-classifiers/default.nix4
-rw-r--r--pkgs/development/python-modules/yaramod/default.nix4
-rw-r--r--pkgs/development/tools/deadnix/default.nix1
-rw-r--r--pkgs/development/tools/hclfmt/default.nix1
-rw-r--r--pkgs/development/tools/jaq/default.nix1
-rw-r--r--pkgs/development/tools/karma-runner/default.nix32
-rw-r--r--pkgs/development/tools/karma-runner/fix-package-lock.patch53
-rw-r--r--pkgs/development/tools/ruff/default.nix1
-rw-r--r--pkgs/development/web/deno/default.nix7
-rw-r--r--pkgs/development/web/deno/librusty_v8.nix10
-rw-r--r--pkgs/games/vintagestory/default.nix8
-rw-r--r--pkgs/os-specific/linux/firmware/linux-firmware/source.nix8
-rw-r--r--pkgs/servers/antennas/default.nix37
-rw-r--r--pkgs/shells/fish/default.nix1
-rw-r--r--pkgs/test/texlive/default.nix204
-rw-r--r--pkgs/tools/audio/playerctl/default.nix1
-rw-r--r--pkgs/tools/backup/pgbackrest/default.nix1
-rw-r--r--pkgs/tools/misc/balanceofsatoshis/default.nix45
-rw-r--r--pkgs/tools/misc/hueadm/default.nix27
-rw-r--r--pkgs/tools/misc/lektor/default.nix (renamed from pkgs/development/python-modules/lektor/default.nix)48
-rw-r--r--pkgs/tools/misc/starship/default.nix1
-rw-r--r--pkgs/tools/networking/castnow/default.nix27
-rw-r--r--pkgs/tools/networking/curl/default.nix1
-rw-r--r--pkgs/tools/networking/socat/default.nix1
-rw-r--r--pkgs/tools/nix/statix/default.nix1
-rw-r--r--pkgs/tools/security/exploitdb/default.nix4
-rw-r--r--pkgs/tools/security/grype/default.nix4
-rw-r--r--pkgs/tools/security/yubikey-touch-detector/default.nix1
-rw-r--r--pkgs/tools/text/markdownlint-cli/default.nix28
-rw-r--r--pkgs/tools/text/mrkd/default.nix52
-rw-r--r--pkgs/tools/typesetting/tex/texlive/UPGRADING.md31
-rw-r--r--pkgs/tools/typesetting/tex/texlive/bin.nix56
-rw-r--r--pkgs/tools/typesetting/tex/texlive/combine.nix171
-rw-r--r--pkgs/tools/typesetting/tex/texlive/default.nix431
-rw-r--r--pkgs/tools/typesetting/tex/texlive/fixed-hashes.nix1
-rw-r--r--pkgs/tools/typesetting/tex/texlive/make-bin-containers.sh62
-rw-r--r--pkgs/tools/typesetting/tex/texlive/patch-scripts.sed57
-rw-r--r--pkgs/tools/typesetting/tex/texlive/tl2nix.sed74
-rw-r--r--pkgs/tools/typesetting/tex/texlive/tlpdb.nix1743
-rw-r--r--pkgs/tools/wayland/wtype/default.nix1
-rw-r--r--pkgs/top-level/all-packages.nix16
-rw-r--r--pkgs/top-level/python-aliases.nix2
-rw-r--r--pkgs/top-level/python-packages.nix4
82 files changed, 3759 insertions, 2838 deletions
diff --git a/pkgs/applications/display-managers/greetd/gtkgreet.nix b/pkgs/applications/display-managers/greetd/gtkgreet.nix
index 77ddda933710..39beea377e1e 100644
--- a/pkgs/applications/display-managers/greetd/gtkgreet.nix
+++ b/pkgs/applications/display-managers/greetd/gtkgreet.nix
@@ -49,5 +49,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ luc65r ];
     platforms = platforms.linux;
+    mainProgram = "gtkgreet";
   };
 }
diff --git a/pkgs/applications/editors/vim/plugins/generated.nix b/pkgs/applications/editors/vim/plugins/generated.nix
index 0402a7dacd54..b317101f88df 100644
--- a/pkgs/applications/editors/vim/plugins/generated.nix
+++ b/pkgs/applications/editors/vim/plugins/generated.nix
@@ -173,12 +173,12 @@ final: prev:
 
   LazyVim = buildVimPluginFrom2Nix {
     pname = "LazyVim";
-    version = "2023-07-26";
+    version = "2023-07-30";
     src = fetchFromGitHub {
       owner = "LazyVim";
       repo = "LazyVim";
-      rev = "9264c54ae96d1d56f029ad9b561326c7b991c53b";
-      sha256 = "1lcq6gwh31w1fg2cw5bzihjalfvagr6gf86kprd83vpjzwvp3237";
+      rev = "566049aa4a26a86219dd1ad1624f9a1bf18831b6";
+      sha256 = "12y7fxwlcia92q12wj50k5bdlyhjm70hn3kkibn5a1xf4f9vkwkg";
     };
     meta.homepage = "https://github.com/LazyVim/LazyVim/";
   };
@@ -498,12 +498,12 @@ final: prev:
 
   aerial-nvim = buildVimPluginFrom2Nix {
     pname = "aerial.nvim";
-    version = "2023-07-11";
+    version = "2023-07-30";
     src = fetchFromGitHub {
       owner = "stevearc";
       repo = "aerial.nvim";
-      rev = "fb1f08c9f90e8b0c04b2f2c5d95d06288a14c5b2";
-      sha256 = "1429srq5gkw37b4hb05cxp0lxjqgfawak3b8vbdphg79zr9imwn8";
+      rev = "2a6498f4b5f8e52557eadbcd2b3f91da8fe438ca";
+      sha256 = "1irmbisymrr92rwjsk2997z0hjkm110s54b3yjnpva7aizs2r8fx";
       fetchSubmodules = true;
     };
     meta.homepage = "https://github.com/stevearc/aerial.nvim/";
@@ -559,12 +559,12 @@ final: prev:
 
   ale = buildVimPluginFrom2Nix {
     pname = "ale";
-    version = "2023-07-25";
+    version = "2023-07-31";
     src = fetchFromGitHub {
       owner = "dense-analysis";
       repo = "ale";
-      rev = "b216892f0c1ce7bbe9efeeb6cf55b52a473f49c2";
-      sha256 = "0df56hrqyv1vq19alnpv981fmrb68gx3127izp7pi974r4if87pa";
+      rev = "1174b3b81ef6d376401e46b490448d619fac9335";
+      sha256 = "0hny5ws6mmzlwf2jwv0izfax188smn8m01b29k4mgr53rs0z0v89";
     };
     meta.homepage = "https://github.com/dense-analysis/ale/";
   };
@@ -859,12 +859,12 @@ final: prev:
 
   autoclose-nvim = buildVimPluginFrom2Nix {
     pname = "autoclose.nvim";
-    version = "2023-06-22";
+    version = "2023-07-31";
     src = fetchFromGitHub {
       owner = "m4xshen";
       repo = "autoclose.nvim";
-      rev = "469782b0456f0b4f764378ffda94c18599544e09";
-      sha256 = "0qj2qvyjh4a70wykwlijj9h73i06npl8h88g7bb1vifsp5yyshzv";
+      rev = "a9ecd7ef80af7caada66e1215172722ec2d61d64";
+      sha256 = "11xrq1v6rykz87vxg5nsvj64dq81q11fs9w0zdc9i711m8j0z8b7";
     };
     meta.homepage = "https://github.com/m4xshen/autoclose.nvim/";
   };
@@ -967,12 +967,12 @@ final: prev:
 
   base46 = buildVimPluginFrom2Nix {
     pname = "base46";
-    version = "2023-07-27";
+    version = "2023-07-29";
     src = fetchFromGitHub {
       owner = "nvchad";
       repo = "base46";
-      rev = "a88ada931feecc22dfdcaae00ff98f412b863f9a";
-      sha256 = "1zqaqd2byzfqgy36jwjimcrvgs2wds9dx18kza41c3in9b9243rd";
+      rev = "1a3faca5fdb6da541a28c37efdb60d99b34c15cc";
+      sha256 = "1yjhfd8cc8k449qxbf4c7mm5fgi3qblbh6775byrib73hbli7p2c";
     };
     meta.homepage = "https://github.com/nvchad/base46/";
   };
@@ -1231,12 +1231,12 @@ final: prev:
 
   chadtree = buildVimPluginFrom2Nix {
     pname = "chadtree";
-    version = "2023-07-26";
+    version = "2023-07-30";
     src = fetchFromGitHub {
       owner = "ms-jpq";
       repo = "chadtree";
-      rev = "a12f2d375a06b0b10137462820efd5962425333e";
-      sha256 = "02p1wfkc6d5ysgv05ifazk3yswikan3j16fdcc07mfjp2y2cs5vk";
+      rev = "81bf1d909971aa78843c017391ded499fa22c527";
+      sha256 = "04sr4rny6xzcasdaff8f8wql1p749ryq7s06zmszqdbky9apkkch";
     };
     meta.homepage = "https://github.com/ms-jpq/chadtree/";
   };
@@ -1303,12 +1303,12 @@ final: prev:
 
   clangd_extensions-nvim = buildVimPluginFrom2Nix {
     pname = "clangd_extensions.nvim";
-    version = "2023-07-25";
+    version = "2023-07-30";
     src = fetchFromGitHub {
       owner = "p00f";
       repo = "clangd_extensions.nvim";
-      rev = "b3b0eb798ecbdd16832fd38d4b07ba31ab4fe831";
-      sha256 = "127sb5w8sv5ldx6vgzf7ynkw24wpvpdp7m192fh1qgymlnma8hsy";
+      rev = "723639da63ad87753c4a9271077a39b5b2f080a4";
+      sha256 = "0wd8n5qqx2ii1vcmmcknb4h6cigaqb1nkif2x7vzvvmi5igk0ma5";
     };
     meta.homepage = "https://github.com/p00f/clangd_extensions.nvim/";
   };
@@ -1373,6 +1373,18 @@ final: prev:
     meta.homepage = "https://github.com/winston0410/cmd-parser.nvim/";
   };
 
+  cmp-async-path = buildVimPluginFrom2Nix {
+    pname = "cmp-async-path";
+    version = "2023-01-16";
+    src = fetchFromGitHub {
+      owner = "FelipeLema";
+      repo = "cmp-async-path";
+      rev = "d8229a93d7b71f22c66ca35ac9e6c6cd850ec61d";
+      sha256 = "18z548v4ypby32jydq439zdi6gv7zybp8gk957iai22cnxaj403n";
+    };
+    meta.homepage = "https://github.com/FelipeLema/cmp-async-path/";
+  };
+
   cmp-beancount = buildVimPluginFrom2Nix {
     pname = "cmp-beancount";
     version = "2022-11-27";
@@ -2311,24 +2323,24 @@ final: prev:
 
   coq-artifacts = buildVimPluginFrom2Nix {
     pname = "coq.artifacts";
-    version = "2023-07-28";
+    version = "2023-07-30";
     src = fetchFromGitHub {
       owner = "ms-jpq";
       repo = "coq.artifacts";
-      rev = "2b27da78d6eb74fa9fd565e845e2381c51e59675";
-      sha256 = "0mawmz0i4nny1vdvahfb0b6hymil5vc4sa5yhj38yqcnwzbndzzv";
+      rev = "417dd82718025fdcd0136c5d08129c150d743387";
+      sha256 = "0y7xyfg9zb057cipc3icvzhw32pw4z25p2h276lsscrgxy71jwm5";
     };
     meta.homepage = "https://github.com/ms-jpq/coq.artifacts/";
   };
 
   coq-thirdparty = buildVimPluginFrom2Nix {
     pname = "coq.thirdparty";
-    version = "2023-07-23";
+    version = "2023-07-30";
     src = fetchFromGitHub {
       owner = "ms-jpq";
       repo = "coq.thirdparty";
-      rev = "dedb7387a50a797a7bd871d009cf711fbf00eb20";
-      sha256 = "1p2xyrfp9gdasrh0chr5mf8n7l0z2qhg908578pkl4bjn1sl1q46";
+      rev = "8dfe289b5bde380be5cf7ffb51487099ba312d7a";
+      sha256 = "11pmh5a2wimywkv0lbjdkn194ylaqh4lzngzl0lb5dghj17mhk0s";
     };
     meta.homepage = "https://github.com/ms-jpq/coq.thirdparty/";
   };
@@ -2347,12 +2359,12 @@ final: prev:
 
   coq_nvim = buildVimPluginFrom2Nix {
     pname = "coq_nvim";
-    version = "2023-07-28";
+    version = "2023-07-30";
     src = fetchFromGitHub {
       owner = "ms-jpq";
       repo = "coq_nvim";
-      rev = "8ad8815816657e6be07f6c47ae50f6e8a70e9a59";
-      sha256 = "1i1264czx49qs30i788nr8ryawrlk8gnvyw3p7psb58p6mc6gsih";
+      rev = "935624409da0f672f309cd5ac24cc7adee81c8e5";
+      sha256 = "1cvy7v24ssll3rspb8gc4kdfizwrwh83diy6p5mqpp9rkc68c80q";
     };
     meta.homepage = "https://github.com/ms-jpq/coq_nvim/";
   };
@@ -2949,36 +2961,36 @@ final: prev:
 
   dracula-nvim = buildVimPluginFrom2Nix {
     pname = "dracula.nvim";
-    version = "2023-07-16";
+    version = "2023-07-29";
     src = fetchFromGitHub {
       owner = "Mofiqul";
       repo = "dracula.nvim";
-      rev = "948d237241b91389c8c2f109885b91cd2574b8bb";
-      sha256 = "09cgyskfmqnp0gl1qbwfij8a6r6c0frgbj39zjx15frbhraygpdb";
+      rev = "9fe831e685a76e1a1898a694623b33247c4d036c";
+      sha256 = "03mrsy17fvdislkf50hfxp87kw2k53zfyygc21ln11792k2nmfc1";
     };
     meta.homepage = "https://github.com/Mofiqul/dracula.nvim/";
   };
 
   dressing-nvim = buildVimPluginFrom2Nix {
     pname = "dressing.nvim";
-    version = "2023-07-17";
+    version = "2023-07-29";
     src = fetchFromGitHub {
       owner = "stevearc";
       repo = "dressing.nvim";
-      rev = "39611852fd7bbac117e939a26759bb37361f0c90";
-      sha256 = "19j6c9byrxjiv067lc7s6f34854nnxwcla8vil6g41f67m3810k7";
+      rev = "829bc80400651aea31b03d8fc9a99135512fe67a";
+      sha256 = "1zjhydhghigvwqpl6b158z10fj36cbl9wx6g3i0pv1cpnh952xw6";
     };
     meta.homepage = "https://github.com/stevearc/dressing.nvim/";
   };
 
   dropbar-nvim = buildVimPluginFrom2Nix {
     pname = "dropbar.nvim";
-    version = "2023-07-21";
+    version = "2023-07-30";
     src = fetchFromGitHub {
       owner = "Bekaboo";
       repo = "dropbar.nvim";
-      rev = "90fc6aa051d31f22b512f967cd1485dc0d1cf32a";
-      sha256 = "1dzkrf3qak2s5bagh6w5gvq9xqd11s0z3gaawjlqnq2dpfamccah";
+      rev = "cae3b8449053edb8b5ea49e277eeae098ad2502f";
+      sha256 = "1hhx8y93n7wbgjcnsrlsxi0gi2zpffpdpissfxr20k1g5scz5z46";
     };
     meta.homepage = "https://github.com/Bekaboo/dropbar.nvim/";
   };
@@ -3062,8 +3074,8 @@ final: prev:
     src = fetchFromGitHub {
       owner = "elixir-tools";
       repo = "elixir-tools.nvim";
-      rev = "0930654e8c83c6adbb479f75882ae5fd0caf9723";
-      sha256 = "1w0367p2hrhknka2kald0c35bzmvdn1h3b8gvqrl6k3mpr4v8qal";
+      rev = "883933b57c9150c71ad2b99a4080685d83e095b8";
+      sha256 = "1h6axz92qi3yhcbq18rkmjykk796r3kqxynl71y6ll6k2l5c807g";
     };
     meta.homepage = "https://github.com/elixir-tools/elixir-tools.nvim/";
   };
@@ -3324,12 +3336,12 @@ final: prev:
 
   flatten-nvim = buildVimPluginFrom2Nix {
     pname = "flatten.nvim";
-    version = "2023-07-23";
+    version = "2023-07-31";
     src = fetchFromGitHub {
       owner = "willothy";
       repo = "flatten.nvim";
-      rev = "97228f78dfee042c18ecce0d788c91f59e770f31";
-      sha256 = "0baab64zqj7z5rxb7cmy3k8xwbad1jmqzfljla2z9h3q83xff4a6";
+      rev = "07e9496191653587336b4c8f8cab02e5c34c7c44";
+      sha256 = "1ya2akgxbkwa3cjw8h9bpwh89yzbv2168w0qisbydl0wj9k16bcm";
     };
     meta.homepage = "https://github.com/willothy/flatten.nvim/";
   };
@@ -3540,12 +3552,12 @@ final: prev:
 
   fzf-lua = buildVimPluginFrom2Nix {
     pname = "fzf-lua";
-    version = "2023-07-18";
+    version = "2023-07-28";
     src = fetchFromGitHub {
       owner = "ibhagwan";
       repo = "fzf-lua";
-      rev = "1bba731df46feb1751dca1632268aae41ed5ac15";
-      sha256 = "08qv4zslrqrg67gbazk2sllcgx4hakl5fgrlcv7bd6r0djiv673y";
+      rev = "2fa4913c7db0c22e02c003c6f09b7ebb2d0ed367";
+      sha256 = "093vaiyc6q1rm7cmqgavns09dyinjgf27ddhs7sxzj29pjmr6azn";
     };
     meta.homepage = "https://github.com/ibhagwan/fzf-lua/";
   };
@@ -3732,12 +3744,12 @@ final: prev:
 
   glance-nvim = buildVimPluginFrom2Nix {
     pname = "glance.nvim";
-    version = "2023-07-25";
+    version = "2023-07-28";
     src = fetchFromGitHub {
       owner = "DNLHC";
       repo = "glance.nvim";
-      rev = "3d67c10c422b2d2800761f4f484305540d54450b";
-      sha256 = "186zb2zh4njwy2rxfhmgq0bb3nyfiwf7d289k35qnzw0i7b21wkj";
+      rev = "b78ef99ffda23fa42ce85de50e3fc13a5472ecfd";
+      sha256 = "02v5314d7znjfv8vq1v96jbl4zawnllmrs744z1vpn3lsrv3n9vq";
     };
     meta.homepage = "https://github.com/DNLHC/glance.nvim/";
   };
@@ -3760,8 +3772,8 @@ final: prev:
     src = fetchFromGitHub {
       owner = "ellisonleao";
       repo = "glow.nvim";
-      rev = "0bd87753b052205d271a790b48a09882a9e79f35";
-      sha256 = "1sgarwqc8l8gygz90f408cljpcqrw1gsyzvfg6afih90214nfk95";
+      rev = "8942dfb05794f436af4fbc90a34393f1fd36f361";
+      sha256 = "1lqfdfmmqygk2ljlp8gi647j1bij51i85hwl7adx1as749ym0fb4";
     };
     meta.homepage = "https://github.com/ellisonleao/glow.nvim/";
   };
@@ -4450,12 +4462,12 @@ final: prev:
 
   jedi-vim = buildVimPluginFrom2Nix {
     pname = "jedi-vim";
-    version = "2023-04-11";
+    version = "2023-07-31";
     src = fetchFromGitHub {
       owner = "davidhalter";
       repo = "jedi-vim";
-      rev = "42c2af1812bc12831a2904811835082904c3cc1e";
-      sha256 = "0f6889lzxfgpjzk78pzh6450r3aqgkc521mv4v1fq9li8hvdqlxx";
+      rev = "338af171ea32bb9d4705429d3aef20735d567c87";
+      sha256 = "0mwnzvv3pr9ny7bfd98q78mjyw9zhgvnz38drh3y3l0h5f6i9z08";
       fetchSubmodules = true;
     };
     meta.homepage = "https://github.com/davidhalter/jedi-vim/";
@@ -4631,12 +4643,12 @@ final: prev:
 
   lazy-nvim = buildVimPluginFrom2Nix {
     pname = "lazy.nvim";
-    version = "2023-07-22";
+    version = "2023-07-30";
     src = fetchFromGitHub {
       owner = "folke";
       repo = "lazy.nvim";
-      rev = "3ad55ae678876516156cca2f361c51f7952a924b";
-      sha256 = "1yzdy9iqfx2aa7gd56lxqjmarpflnqqv0yyx9vcz5w9i7bg7dk1g";
+      rev = "dac844ed617dda4f9ec85eb88e9629ad2add5e05";
+      sha256 = "1sd7xg2ql1frr293x976phv6k1r9r01jn48ip60b6pmq80x7gvj6";
     };
     meta.homepage = "https://github.com/folke/lazy.nvim/";
   };
@@ -5122,12 +5134,12 @@ final: prev:
 
   ltex_extra-nvim = buildVimPluginFrom2Nix {
     pname = "ltex_extra.nvim";
-    version = "2023-06-24";
+    version = "2023-07-28";
     src = fetchFromGitHub {
       owner = "barreiroleo";
       repo = "ltex_extra.nvim";
-      rev = "f32a4ca33857a61a8cf8dcd4177fa1d02e16dee0";
-      sha256 = "08h0hxwdncpjncvb95azc4sl1nypd2vsahcsvq9i4hikj56ar8mm";
+      rev = "9bed99b2b8488cc2daf66c76d2e0cf051ee80d13";
+      sha256 = "1v4vxfysvisl9l91f519mbj4r7a43gzfyaj4cbgs3fc650h00f1g";
     };
     meta.homepage = "https://github.com/barreiroleo/ltex_extra.nvim/";
   };
@@ -5183,12 +5195,12 @@ final: prev:
 
   lush-nvim = buildNeovimPlugin {
     pname = "lush.nvim";
-    version = "2023-07-03";
+    version = "2023-07-31";
     src = fetchFromGitHub {
       owner = "rktjmp";
       repo = "lush.nvim";
-      rev = "b10ef2bfff0647e701b691019ade3edd5e44eb50";
-      sha256 = "13apg02ng37x1j5n6n4nhrp22bsmwb6hgf623wsrqx5qll4fnn6i";
+      rev = "1b58de77b457ad22c81bcdd621fa5f943f41dd87";
+      sha256 = "11y4gfdbhlh4ynw0c326v30amxcs9qgrp504v31br2mk6pgaga0q";
     };
     meta.homepage = "https://github.com/rktjmp/lush.nvim/";
   };
@@ -5699,24 +5711,24 @@ final: prev:
 
   neco-vim = buildVimPluginFrom2Nix {
     pname = "neco-vim";
-    version = "2023-05-18";
+    version = "2023-07-31";
     src = fetchFromGitHub {
       owner = "Shougo";
       repo = "neco-vim";
-      rev = "4ecb82f2821d2ebee0dec56f04c223ddc3b26d82";
-      sha256 = "07k5rp0abgfdrayf1h4xc49nr4l8bbb0r40s5a8vinaz54i4fy9r";
+      rev = "c1803742fed623212e675909ed74657cf6a77a2f";
+      sha256 = "1w4gqdjiv624izl5j92sjrrc2p72k9vq6pq1gwkyvhhvvaqnxhzs";
     };
     meta.homepage = "https://github.com/Shougo/neco-vim/";
   };
 
   neo-tree-nvim = buildVimPluginFrom2Nix {
     pname = "neo-tree.nvim";
-    version = "2023-07-26";
+    version = "2023-07-31";
     src = fetchFromGitHub {
       owner = "nvim-neo-tree";
       repo = "neo-tree.nvim";
-      rev = "93fcf0a3056c60829c0a210fe35523cda7ef0369";
-      sha256 = "1gyb0y0dalam3s7gj8179kkgpjkn05wv15gkjhy0r16b7xyfk6vh";
+      rev = "7951701fd21291ac473ea92d3fd57ec5c8bf10bb";
+      sha256 = "1556wdvh4w6kpnwbnfzdr5axbl13sm4awzhpdpm9n88jvg4jcq6w";
     };
     meta.homepage = "https://github.com/nvim-neo-tree/neo-tree.nvim/";
   };
@@ -5759,24 +5771,24 @@ final: prev:
 
   neodev-nvim = buildVimPluginFrom2Nix {
     pname = "neodev.nvim";
-    version = "2023-07-27";
+    version = "2023-07-30";
     src = fetchFromGitHub {
       owner = "folke";
       repo = "neodev.nvim";
-      rev = "f57e5210d450b47aa02ea6d9e50a37414f570b4c";
-      sha256 = "1mx41pwdrnxbzgwx478fcdp8v7qljh9z06jn5qs0706lsw05pkci";
+      rev = "2973d6c56cbde46c04e12476bb40eefd516d5f35";
+      sha256 = "110dk73da7yvjvbcnxnnwz3kpv25ddir4h16j955c1027cbxrcq5";
     };
     meta.homepage = "https://github.com/folke/neodev.nvim/";
   };
 
   neoformat = buildVimPluginFrom2Nix {
     pname = "neoformat";
-    version = "2023-07-01";
+    version = "2023-07-29";
     src = fetchFromGitHub {
       owner = "sbdchd";
       repo = "neoformat";
-      rev = "b35ae45f9425c817126be4cc946a950c1cffe6fa";
-      sha256 = "1qcrladfl3zvci58aiv4w6bq6dc8ibfjgp95l4q10bx8gjkdipkq";
+      rev = "b3c27188a4a5fd21f11695c6948f0a480044e6dd";
+      sha256 = "1gbfnx4jrj4ngqydj2ngcypcw1yhc4x968bmgs80hfx7mjh4a6xw";
     };
     meta.homepage = "https://github.com/sbdchd/neoformat/";
   };
@@ -5795,12 +5807,12 @@ final: prev:
 
   neogit = buildVimPluginFrom2Nix {
     pname = "neogit";
-    version = "2023-07-27";
+    version = "2023-07-31";
     src = fetchFromGitHub {
       owner = "NeogitOrg";
       repo = "neogit";
-      rev = "2118729749a5b500e6d52bfeac22559c5a0866cc";
-      sha256 = "1qfh68md3wv5bchpip450fnmgwzxlylgb8kf5p7i8gkkzz7qdg3q";
+      rev = "343ea071602c52a618fdee4f1333dc37f0d7757b";
+      sha256 = "0095dp2k1aym4ypymg2my17hl31gbh2mvdd8gkv56xc48l77qx4f";
     };
     meta.homepage = "https://github.com/NeogitOrg/neogit/";
   };
@@ -5855,12 +5867,12 @@ final: prev:
 
   neorg = buildVimPluginFrom2Nix {
     pname = "neorg";
-    version = "2023-07-24";
+    version = "2023-07-31";
     src = fetchFromGitHub {
       owner = "nvim-neorg";
       repo = "neorg";
-      rev = "e76f0cb6b3ae5e990052343ebb73a5c8d8cac783";
-      sha256 = "194bawzni3psgzs2aljzdm7rgxv58psm30aakrnqy6rl11sackrc";
+      rev = "8529310c5e711caef7293d4f027c9b9e98c17496";
+      sha256 = "18k51g5rqlprsxygy8z34gwk826681g7pws19mhfq1pnmnazmzjg";
     };
     meta.homepage = "https://github.com/nvim-neorg/neorg/";
   };
@@ -6071,12 +6083,12 @@ final: prev:
 
   neotest-rspec = buildVimPluginFrom2Nix {
     pname = "neotest-rspec";
-    version = "2023-07-19";
+    version = "2023-07-29";
     src = fetchFromGitHub {
       owner = "olimorris";
       repo = "neotest-rspec";
-      rev = "754431f0ba41d058ba5d6c2d59908836e18ac355";
-      sha256 = "1jbd3i0zvjx7pknfg0xwk5g8742kpqbnk2z5vwnspwwf0y9ayk86";
+      rev = "7f03e1e1f8cc18f9dd22ebccdff254cd7b167fbd";
+      sha256 = "10w1qh18j9p1s06r96m5d7f1izs2vgi74fihhmy4gqc4d8gqvn3r";
     };
     meta.homepage = "https://github.com/olimorris/neotest-rspec/";
   };
@@ -6263,12 +6275,12 @@ final: prev:
 
   nightfox-nvim = buildVimPluginFrom2Nix {
     pname = "nightfox.nvim";
-    version = "2023-05-12";
+    version = "2023-07-31";
     src = fetchFromGitHub {
       owner = "EdenEast";
       repo = "nightfox.nvim";
-      rev = "77aa7458d2b725c2d9ff55a18befe1b891ac473e";
-      sha256 = "196yavgxvfz3n0d5yb97h7bdgja1qnrwvjhk3gz3fjgk4a8xvgmb";
+      rev = "a48f6d9a0273101df76eb25d2f5477baa277f935";
+      sha256 = "0ikl4cnm9xxkc0jzlmscpwl870d74hvjxsm9n9wwryiqf7i4d4ri";
     };
     meta.homepage = "https://github.com/EdenEast/nightfox.nvim/";
   };
@@ -6527,12 +6539,12 @@ final: prev:
 
   nvim-bqf = buildVimPluginFrom2Nix {
     pname = "nvim-bqf";
-    version = "2023-07-27";
+    version = "2023-07-29";
     src = fetchFromGitHub {
       owner = "kevinhwang91";
       repo = "nvim-bqf";
-      rev = "65397976cec59a1e9892b93e3ab1ea987064b0dc";
-      sha256 = "0yih7p37gm3ipx6vixb89iq7wwf85id8ff49hrs4v6y020s4sny5";
+      rev = "60ebdf05c273e8e7f420851c6a33bbd731a1de8d";
+      sha256 = "0m7zqi0crk7v4s7cb51x9g98ffbr6p3q1gssn5gpbgk4k89gxcf3";
     };
     meta.homepage = "https://github.com/kevinhwang91/nvim-bqf/";
   };
@@ -6587,12 +6599,12 @@ final: prev:
 
   nvim-cokeline = buildVimPluginFrom2Nix {
     pname = "nvim-cokeline";
-    version = "2023-07-26";
+    version = "2023-07-31";
     src = fetchFromGitHub {
       owner = "willothy";
       repo = "nvim-cokeline";
-      rev = "c2842a51df781d357cd3408c411a7bec147b57ae";
-      sha256 = "14nv3rvcy7fznxqdk2xbxfsjp8dg9kzv27zakpq352l4w9i4qfv0";
+      rev = "0d2988c6eff6c58dfc04b08639ae5ff04a21b32c";
+      sha256 = "1yq3b2g7f72nwdx9d7jnd6wpbx7r02i4rwxch9y3wql4hylcq0c6";
     };
     meta.homepage = "https://github.com/willothy/nvim-cokeline/";
   };
@@ -6683,12 +6695,12 @@ final: prev:
 
   nvim-dap = buildVimPluginFrom2Nix {
     pname = "nvim-dap";
-    version = "2023-07-27";
+    version = "2023-07-31";
     src = fetchFromGitHub {
       owner = "mfussenegger";
       repo = "nvim-dap";
-      rev = "2f28ea843bcdb378b171a66ddcd568516e431d55";
-      sha256 = "12b72xhz3ha18xpcnc54s4ic19jg4i6v8dka8lxky6hymzw408ir";
+      rev = "5a39d1fe390aa30953c2a8340784e572c2e6933b";
+      sha256 = "1884zcyg2xr1j3x1k375ybryhk5whvr2awciipfscwig1cqg6c3s";
     };
     meta.homepage = "https://github.com/mfussenegger/nvim-dap/";
   };
@@ -6779,12 +6791,12 @@ final: prev:
 
   nvim-gdb = buildVimPluginFrom2Nix {
     pname = "nvim-gdb";
-    version = "2023-07-26";
+    version = "2023-07-28";
     src = fetchFromGitHub {
       owner = "sakhnik";
       repo = "nvim-gdb";
-      rev = "571f25463a2a4c512b7c2617c976beb8190d2621";
-      sha256 = "1wxy0nwzg72i586a1zq8q17rbl116njbrwnbyd2xn1g21887myhm";
+      rev = "c08f313d57aedf114617c52be2df1950cca806cb";
+      sha256 = "13pwl5ar1vcv2xh73h7msq92rj9hn6ifb4x1w26fk3daqpp64bjl";
     };
     meta.homepage = "https://github.com/sakhnik/nvim-gdb/";
   };
@@ -6815,12 +6827,12 @@ final: prev:
 
   nvim-highlite = buildVimPluginFrom2Nix {
     pname = "nvim-highlite";
-    version = "2023-07-26";
+    version = "2023-07-29";
     src = fetchFromGitHub {
       owner = "Iron-E";
       repo = "nvim-highlite";
-      rev = "7e67fa948e32ad54f790023ae7ab0bac1a1d10fa";
-      sha256 = "17r8adn2rw6b7914sk2i3407qj4ji8ph4b2dsjmfwrar6mixg411";
+      rev = "dde074b6465fef5125d190e9a85ae827cf09283f";
+      sha256 = "1higwr7xr9cnsh1aan3sypxpzhwakq29sjwiw8sb9gvhyvjj7ksk";
     };
     meta.homepage = "https://github.com/Iron-E/nvim-highlite/";
   };
@@ -6911,12 +6923,12 @@ final: prev:
 
   nvim-lint = buildVimPluginFrom2Nix {
     pname = "nvim-lint";
-    version = "2023-07-27";
+    version = "2023-07-30";
     src = fetchFromGitHub {
       owner = "mfussenegger";
       repo = "nvim-lint";
-      rev = "3db039fb36bba925f096a659fc4d1b4a93f7fb70";
-      sha256 = "1kwy1rc2nd6krvy3n4dkyxl0a2dzfl3viyrfrbzypv321p60jyyf";
+      rev = "4744fc04c3a869c9eaa137fec13d992aea7da7ee";
+      sha256 = "1f4gkp7fmlnalmsixin880c6lrbh9q7d1dhn2hmlymxi7jl4xz37";
     };
     meta.homepage = "https://github.com/mfussenegger/nvim-lint/";
   };
@@ -7031,12 +7043,12 @@ final: prev:
 
   nvim-navbuddy = buildVimPluginFrom2Nix {
     pname = "nvim-navbuddy";
-    version = "2023-07-05";
+    version = "2023-07-31";
     src = fetchFromGitHub {
       owner = "SmiteshP";
       repo = "nvim-navbuddy";
-      rev = "244a4cded6f2b568403684131d148048efe4e8af";
-      sha256 = "10886zx97s7nc288fxsw0w1029vf65f5qazksr8x0h97zi7m2pfk";
+      rev = "15184582a786d6b32b2724a4799891d0d69f0cdd";
+      sha256 = "0rfw1alah02ws569akhkq8rfkwy89p30mzh4pr4v8d70d42zy2kr";
     };
     meta.homepage = "https://github.com/SmiteshP/nvim-navbuddy/";
   };
@@ -7163,12 +7175,12 @@ final: prev:
 
   nvim-scrollview = buildVimPluginFrom2Nix {
     pname = "nvim-scrollview";
-    version = "2023-07-28";
+    version = "2023-07-31";
     src = fetchFromGitHub {
       owner = "dstein64";
       repo = "nvim-scrollview";
-      rev = "d83bf0bf21349d396f365f86a8126747cb72d89c";
-      sha256 = "0miw0mw3s73iv7inwhqcndcw4v759d5kvl74yd49n6qn28y0cj86";
+      rev = "851f03c7e165d45ba2358fe6de68dc909695f5e2";
+      sha256 = "10pw520765yvbhnzp6s84r6vzm9z1hm8j5x3zp1xiidsihp289ak";
     };
     meta.homepage = "https://github.com/dstein64/nvim-scrollview/";
   };
@@ -7211,12 +7223,12 @@ final: prev:
 
   nvim-spider = buildVimPluginFrom2Nix {
     pname = "nvim-spider";
-    version = "2023-07-24";
+    version = "2023-07-28";
     src = fetchFromGitHub {
       owner = "chrisgrieser";
       repo = "nvim-spider";
-      rev = "b268dfcdd00e75d8c3f3576da7f89dfe14cadeec";
-      sha256 = "18ik049anbdcadj3myn5y78qz62x8amrdibr2avkrb0ay9bfvjaj";
+      rev = "a9658b58cd219e3fbfa6d2c5ab04b255bc6a1f6c";
+      sha256 = "1imxfppfacypjkns4nwbfpymf610nc2syh2dq4qm15c4k5l6hnpn";
     };
     meta.homepage = "https://github.com/chrisgrieser/nvim-spider/";
   };
@@ -7271,24 +7283,24 @@ final: prev:
 
   nvim-tree-lua = buildVimPluginFrom2Nix {
     pname = "nvim-tree.lua";
-    version = "2023-07-23";
+    version = "2023-08-01";
     src = fetchFromGitHub {
       owner = "nvim-tree";
       repo = "nvim-tree.lua";
-      rev = "273c1700eb68c27dce4e518efafc8144fd7ce4ab";
-      sha256 = "1cs0nkjmmd8gqlwk68zqy9hr2s86hybacmqxvf7n69f8q3539g38";
+      rev = "0a89dcb464b433d2d7b97a8f15d0b608c718dc13";
+      sha256 = "1sb11384sp4fjky8bdcjsb2ss1wqbhi5dm1akfpk2b3bcmf5kr0a";
     };
     meta.homepage = "https://github.com/nvim-tree/nvim-tree.lua/";
   };
 
   nvim-treesitter = buildVimPluginFrom2Nix {
     pname = "nvim-treesitter";
-    version = "2023-07-27";
+    version = "2023-07-31";
     src = fetchFromGitHub {
       owner = "nvim-treesitter";
       repo = "nvim-treesitter";
-      rev = "f09bcffe0c29a464db24ad8124dd1f0be3fe9ce5";
-      sha256 = "07lkgkwnzibsx0syd1js4j5rgpxqb2vpkn0x37zb8x2dxzdfv0i8";
+      rev = "82c948653909d8c1582f28313aa1cf9d68d66fe8";
+      sha256 = "0q36m9gbzxpvxss546cxgsqm70b6afbhzmbd1kmfh42z5ljh0fgf";
     };
     meta.homepage = "https://github.com/nvim-treesitter/nvim-treesitter/";
   };
@@ -7689,6 +7701,19 @@ final: prev:
     meta.homepage = "https://github.com/rgroli/other.nvim/";
   };
 
+  overseer-nvim = buildVimPluginFrom2Nix {
+    pname = "overseer.nvim";
+    version = "2023-07-30";
+    src = fetchFromGitHub {
+      owner = "stevearc";
+      repo = "overseer.nvim";
+      rev = "16ac26aebef2468fda76de2b913bb6b76193932f";
+      sha256 = "0h9s9y3v70l7axwc59ay5z7bixgzj9nv6q2jswp64b2s6v4sqc1n";
+      fetchSubmodules = true;
+    };
+    meta.homepage = "https://github.com/stevearc/overseer.nvim/";
+  };
+
   oxocarbon-nvim = buildVimPluginFrom2Nix {
     pname = "oxocarbon.nvim";
     version = "2023-06-06";
@@ -8365,12 +8390,12 @@ final: prev:
 
   satellite-nvim = buildVimPluginFrom2Nix {
     pname = "satellite.nvim";
-    version = "2023-07-26";
+    version = "2023-07-31";
     src = fetchFromGitHub {
       owner = "lewis6991";
       repo = "satellite.nvim";
-      rev = "8a84a2ab739d0cb5eff461f2635a32bf9a0c508d";
-      sha256 = "0x5kc8r6z8m7arhxv2nq723fzdn7c5xvmsxpp5jndvbk6nmh6n78";
+      rev = "542e856b3a727ce4757250cc00e45332fe146690";
+      sha256 = "1sjdgf3q60c80zhd4zqiixkizyy3xxa91v60nkag32lnjqmqx9qv";
     };
     meta.homepage = "https://github.com/lewis6991/satellite.nvim/";
   };
@@ -8497,12 +8522,12 @@ final: prev:
 
   sg-nvim = buildVimPluginFrom2Nix {
     pname = "sg.nvim";
-    version = "2023-07-27";
+    version = "2023-07-31";
     src = fetchFromGitHub {
       owner = "sourcegraph";
       repo = "sg.nvim";
-      rev = "7de5e1577800560b2a94c0618fdccc67b74fa620";
-      sha256 = "1prq9q4mcy9035n8vganwgcmdxr7xpg8dscrracd4mrny5bhx20j";
+      rev = "2be8a630ee73d546fa6780389ed54ee77321372f";
+      sha256 = "1arbpkqjnhs5kphk4zy3dx7zhrbm5gypscw9wa0715xxhg5z7agp";
     };
     meta.homepage = "https://github.com/sourcegraph/sg.nvim/";
   };
@@ -9245,12 +9270,12 @@ final: prev:
 
   telescope-file-browser-nvim = buildVimPluginFrom2Nix {
     pname = "telescope-file-browser.nvim";
-    version = "2023-07-28";
+    version = "2023-07-30";
     src = fetchFromGitHub {
       owner = "nvim-telescope";
       repo = "telescope-file-browser.nvim";
-      rev = "6c234e863444c246611ad7458185c771ad8cd6e6";
-      sha256 = "05bd8yw22hp6lj732dhffq8wpy13qslwv2wf8rlmza2m7am4jfiy";
+      rev = "6fe423eea6604c2fcbb906ff5f7e27f748a6ed87";
+      sha256 = "1hckw1jq0azx33sqawganlk256a88vzifa3f4x0h1q4579j38n1x";
     };
     meta.homepage = "https://github.com/nvim-telescope/telescope-file-browser.nvim/";
   };
@@ -9487,12 +9512,12 @@ final: prev:
 
   telescope-nvim = buildNeovimPlugin {
     pname = "telescope.nvim";
-    version = "2023-07-27";
+    version = "2023-08-01";
     src = fetchFromGitHub {
       owner = "nvim-telescope";
       repo = "telescope.nvim";
-      rev = "22735947d84d78f29436c203f0a4b8dc15dda204";
-      sha256 = "09vy6kmqrnk503vxa7v9z526lv7p3h76fcpcacq1n2196hrjdrxx";
+      rev = "d2e17ba18a6840b7e7079764b282616c3188e0de";
+      sha256 = "0dg9iw672fqvm6mw1c7bz4chpq2nkldczrw3bl061cbc94vyrna6";
     };
     meta.homepage = "https://github.com/nvim-telescope/telescope.nvim/";
   };
@@ -9511,12 +9536,12 @@ final: prev:
 
   template-string-nvim = buildVimPluginFrom2Nix {
     pname = "template-string.nvim";
-    version = "2023-04-08";
+    version = "2023-07-31";
     src = fetchFromGitHub {
       owner = "axelvc";
       repo = "template-string.nvim";
-      rev = "e347d83c80bd1ec77e13a37962013199d216a8cd";
-      sha256 = "0ihlrkf41vpq17mjiadq3375lcvn5kvdkqwwrdl52vw4gc8kbkq8";
+      rev = "399e0b47ed7a9c5dd3823b84b7cbda7770d4a9dc";
+      sha256 = "0495qgwi16ifbw01grh27h0ymgh5b909mja2a5k9j7syhz1phpfw";
     };
     meta.homepage = "https://github.com/axelvc/template-string.nvim/";
   };
@@ -9535,12 +9560,12 @@ final: prev:
 
   term-edit-nvim = buildVimPluginFrom2Nix {
     pname = "term-edit.nvim";
-    version = "2023-07-28";
+    version = "2023-07-30";
     src = fetchFromGitHub {
       owner = "chomosuke";
       repo = "term-edit.nvim";
-      rev = "07bfebde433d3de5d3f53494417413d5a3f7292b";
-      sha256 = "15mm09wqn83pnqp0k6js0j8g0v71bmf7wda64vbyicxc9xsrxn7q";
+      rev = "929c45441adc5798d382caa50f4e5158e2097765";
+      sha256 = "0ggr9rg10r7hrai9rz89sa301z9pib0g6mav6byrxfnw1kww16xy";
     };
     meta.homepage = "https://github.com/chomosuke/term-edit.nvim/";
   };
@@ -9703,12 +9728,12 @@ final: prev:
 
   todo-comments-nvim = buildVimPluginFrom2Nix {
     pname = "todo-comments.nvim";
-    version = "2023-05-22";
+    version = "2023-07-28";
     src = fetchFromGitHub {
       owner = "folke";
       repo = "todo-comments.nvim";
-      rev = "09b0b17d824d2d56f02ff15967e8a2499a89c731";
-      sha256 = "0iz0xingbfxlqxwm11hy77cf2awgr1610i2snrafmr346hdn0ywl";
+      rev = "3094ead8edfa9040de2421deddec55d3762f64d1";
+      sha256 = "0qmx94fq1pllwnwzav87fi3v9d64sm8ggv9jgs19flr6r8kh0vs2";
     };
     meta.homepage = "https://github.com/folke/todo-comments.nvim/";
   };
@@ -9776,12 +9801,12 @@ final: prev:
 
   train-nvim = buildVimPluginFrom2Nix {
     pname = "train.nvim";
-    version = "2020-09-10";
+    version = "2023-07-31";
     src = fetchFromGitHub {
       owner = "tjdevries";
       repo = "train.nvim";
-      rev = "7b2e9a59af58385d88bf39c5311c08f839e2b1ce";
-      sha256 = "1pbv8c2wb6b2h9czx7c0c8v0q7v0wc4w9s6qgw7hcbqdl3jv1svh";
+      rev = "87a45f805497e7e929702c75187704de8990de14";
+      sha256 = "10kxd3xmdr6zzavq22r73plv3h9kz71yb1ljapcmaiswz7872291";
     };
     meta.homepage = "https://github.com/tjdevries/train.nvim/";
   };
@@ -9824,12 +9849,12 @@ final: prev:
 
   trouble-nvim = buildVimPluginFrom2Nix {
     pname = "trouble.nvim";
-    version = "2023-07-25";
+    version = "2023-07-29";
     src = fetchFromGitHub {
       owner = "folke";
       repo = "trouble.nvim";
-      rev = "fc4bb22b1d2cd5eb46fe61a9f6d6416d742beb5c";
-      sha256 = "0mhhjl4q45bn0i22jqri6v3rp24d7l3k2q72ggx5i1xinxls3ap5";
+      rev = "40aad004f53ae1d1ba91bcc5c29d59f07c5f01d3";
+      sha256 = "1i99lvxbr1kmfcz414zg8xdn8n0b1ad9v3hwsbac00xzqhrh1v8i";
     };
     meta.homepage = "https://github.com/folke/trouble.nvim/";
   };
@@ -9956,12 +9981,12 @@ final: prev:
 
   unison = buildVimPluginFrom2Nix {
     pname = "unison";
-    version = "2023-07-28";
+    version = "2023-07-31";
     src = fetchFromGitHub {
       owner = "unisonweb";
       repo = "unison";
-      rev = "3a2d7d78b310f6ddde939042fa04b553012d2c7b";
-      sha256 = "10741mmqls1ys0cd7kab1cn7sjby8f9fhap57jh01nhjkkqbfz86";
+      rev = "46cf0cab0f6b514fe57c86178b62857fd77dfe09";
+      sha256 = "07jgkr10zyx8z17jmnzkvhqr8rqjppy5qpazl5gzdpibji7a1vn9";
     };
     meta.homepage = "https://github.com/unisonweb/unison/";
   };
@@ -10904,12 +10929,12 @@ final: prev:
 
   vim-codefmt = buildVimPluginFrom2Nix {
     pname = "vim-codefmt";
-    version = "2023-06-02";
+    version = "2023-07-28";
     src = fetchFromGitHub {
       owner = "google";
       repo = "vim-codefmt";
-      rev = "6ee1e7e22a6ff793331da96c0884f0b906e7dc96";
-      sha256 = "116r2hrbf87silgzp5py7chp8wcb64rhxcg5vhscq2gp7080yv7h";
+      rev = "4c233043b4bfd5fde2d65f72db01e53e8726c5df";
+      sha256 = "15a9dz459z01j1h1p13fls04j8jbbzkypmw9axk03ld2g0h47yxk";
     };
     meta.homepage = "https://github.com/google/vim-codefmt/";
   };
@@ -11588,12 +11613,12 @@ final: prev:
 
   vim-flog = buildVimPluginFrom2Nix {
     pname = "vim-flog";
-    version = "2023-06-22";
+    version = "2023-07-30";
     src = fetchFromGitHub {
       owner = "rbong";
       repo = "vim-flog";
-      rev = "72f80973021957741ceca35e488fce5b430faeea";
-      sha256 = "1q7svpk0hq3rn335dxqz0l2nqxfgq5xid12955q2kxgvnq2nhc81";
+      rev = "2cfa2e9d67a06a75d3d4e965c6bad558ff41e488";
+      sha256 = "1wx8bimv39y8grwd4dk3lww2rsvpfpwa9sy8y9962s102pdck0sk";
     };
     meta.homepage = "https://github.com/rbong/vim-flog/";
   };
@@ -11756,12 +11781,12 @@ final: prev:
 
   vim-gitgutter = buildVimPluginFrom2Nix {
     pname = "vim-gitgutter";
-    version = "2023-07-14";
+    version = "2023-07-31";
     src = fetchFromGitHub {
       owner = "airblade";
       repo = "vim-gitgutter";
-      rev = "8a2f8199b689b93fe4391a8ba1d97dd84b86ebd6";
-      sha256 = "1jxp27mmp84gkjll0h96q9zbh8gs1dsb46cvqnbqvag1p3laxxlq";
+      rev = "68f16eb21f371bf77161c2c8ea9ff431cab2d314";
+      sha256 = "0h8liq8fljqlac4k1g5gzl2axn7sb6jgrdpfyax82463r10vpmfq";
     };
     meta.homepage = "https://github.com/airblade/vim-gitgutter/";
   };
@@ -12382,12 +12407,12 @@ final: prev:
 
   vim-just = buildVimPluginFrom2Nix {
     pname = "vim-just";
-    version = "2023-07-28";
+    version = "2023-07-30";
     src = fetchFromGitHub {
       owner = "NoahTheDuke";
       repo = "vim-just";
-      rev = "2a94aecd8eb53e1147392da33df8ee4ea6e482d6";
-      sha256 = "0n8vq3a4z9yl3xidg2gbclwwwjdd82kixqjjdm8z03d8vy59qg9r";
+      rev = "9129b096a6b43e0a47e405cc7b3fb55bc0e31c42";
+      sha256 = "04sh6xdnmb89gw31wjd1zd4jwl4cwb4731qpkgz59rh5cdiv27qr";
     };
     meta.homepage = "https://github.com/NoahTheDuke/vim-just/";
   };
@@ -12634,12 +12659,12 @@ final: prev:
 
   vim-lsp-settings = buildVimPluginFrom2Nix {
     pname = "vim-lsp-settings";
-    version = "2023-06-22";
+    version = "2023-07-31";
     src = fetchFromGitHub {
       owner = "mattn";
       repo = "vim-lsp-settings";
-      rev = "da214dcc8d56ff1aa91f0661c8d16f6771e2231b";
-      sha256 = "00wvfi39fpmn2zmn2hnamvi9m6fwp2vb12y73fjqldn483ml1hjl";
+      rev = "13fc03c6950e8b3f0f6f2dcd25b470a9adf0d37b";
+      sha256 = "1h4gfw2v2ddran0cl0v15am7xzki9nf2183kgg4zv770yd3siv2j";
     };
     meta.homepage = "https://github.com/mattn/vim-lsp-settings/";
   };
@@ -12755,12 +12780,12 @@ final: prev:
 
   vim-matchup = buildVimPluginFrom2Nix {
     pname = "vim-matchup";
-    version = "2023-07-27";
+    version = "2023-07-30";
     src = fetchFromGitHub {
       owner = "andymass";
       repo = "vim-matchup";
-      rev = "0646093e07b1f89b16536cfb3dc4993e3f0ac653";
-      sha256 = "117zdg6ibnnnpl03r6dhb71hm3dw6h0y2lxbkj8kl5b0gk8lapph";
+      rev = "207418404291d81df13612b966b7eb9841c9e704";
+      sha256 = "1sypjbwjs3s63w84xhps25v32l3gjyxhx8liw9k6m8v0ypww302p";
     };
     meta.homepage = "https://github.com/andymass/vim-matchup/";
   };
@@ -13007,12 +13032,12 @@ final: prev:
 
   vim-nix = buildVimPluginFrom2Nix {
     pname = "vim-nix";
-    version = "2023-07-21";
+    version = "2023-07-29";
     src = fetchFromGitHub {
       owner = "LnL7";
       repo = "vim-nix";
-      rev = "b5da592a45418d02b116ebf686ee3786b419d80a";
-      sha256 = "1lb6zxz577zmyjsrk47apvyik7hl3xbrls20fxx10qp4ksnjms0q";
+      rev = "1e8d3cc4d74f40fb384cd1739739543fe117ff61";
+      sha256 = "06sdplgw76xnpdb89yd4arpphsn24nn327mhp3siyvc5qlsddby7";
     };
     meta.homepage = "https://github.com/LnL7/vim-nix/";
   };
@@ -13943,12 +13968,12 @@ final: prev:
 
   vim-slime = buildVimPluginFrom2Nix {
     pname = "vim-slime";
-    version = "2023-07-27";
+    version = "2023-07-28";
     src = fetchFromGitHub {
       owner = "jpalardy";
       repo = "vim-slime";
-      rev = "99cc4af89014971ca65748b32128d15b008c979c";
-      sha256 = "1sh5k3w3d81gnyvsfy70vygvvi3rsk8wbyh1n30k0fl6b30j4pb6";
+      rev = "c1f6a5bdd86f2beceaaf694e34a2587aca76319a";
+      sha256 = "0lf3b25c3sx0ykqf7vpqk3wa87x6dsn8c6lbdj7pw9bkqfcw842f";
     };
     meta.homepage = "https://github.com/jpalardy/vim-slime/";
   };
@@ -15097,12 +15122,12 @@ final: prev:
 
   vimwiki = buildVimPluginFrom2Nix {
     pname = "vimwiki";
-    version = "2023-07-10";
+    version = "2023-07-31";
     src = fetchFromGitHub {
       owner = "vimwiki";
       repo = "vimwiki";
-      rev = "09804c2a5f1009fde29e32c5f3a6093e4684433a";
-      sha256 = "0i0vwlidv1yv9qk74hi8ync128jrc3qigp8l6zgcm55di5nmw8zl";
+      rev = "f0fe154ede6b11e3db9b058b930005a056a3d1c6";
+      sha256 = "1bkhlvr9y22wdl3cgwcfw591d4d0n7hsmfp2y7az4qjnxbk9pkf4";
     };
     meta.homepage = "https://github.com/vimwiki/vimwiki/";
   };
@@ -15193,12 +15218,12 @@ final: prev:
 
   which-key-nvim = buildVimPluginFrom2Nix {
     pname = "which-key.nvim";
-    version = "2023-07-16";
+    version = "2023-07-28";
     src = fetchFromGitHub {
       owner = "folke";
       repo = "which-key.nvim";
-      rev = "38b990f6eabf62014018b4aae70a97d7a6c2eb88";
-      sha256 = "08j58jc3ja1hbg15raj2xg3ff3wyjf09i42qda84b1iq0klrlxnp";
+      rev = "7ccf476ebe0445a741b64e36c78a682c1c6118b7";
+      sha256 = "173gxysxw68xnfmkx468cz4g5lw5vz9sg8lj1wdz27wyvlfq8pq7";
     };
     meta.homepage = "https://github.com/folke/which-key.nvim/";
   };
@@ -15530,12 +15555,12 @@ final: prev:
 
   catppuccin-nvim = buildVimPluginFrom2Nix {
     pname = "catppuccin-nvim";
-    version = "2023-07-26";
+    version = "2023-07-29";
     src = fetchFromGitHub {
       owner = "catppuccin";
       repo = "nvim";
-      rev = "737f60a3a25c79d9bb9574092f6c6c958a3d747a";
-      sha256 = "0n2jwxzprgn4lryaivrfds78dri9h24q7ablf5lyfj6wcrmcqgk7";
+      rev = "057c34f849cf21059487d849e2f3b3efcd4ee0eb";
+      sha256 = "17w3al7ybmcnp5r9dnk68fh1hl26dvpa8k39wqdzigkpnli5q9ii";
     };
     meta.homepage = "https://github.com/catppuccin/nvim/";
   };
@@ -15590,12 +15615,12 @@ final: prev:
 
   lspsaga-nvim-original = buildVimPluginFrom2Nix {
     pname = "lspsaga-nvim-original";
-    version = "2023-07-27";
+    version = "2023-07-30";
     src = fetchFromGitHub {
       owner = "nvimdev";
       repo = "lspsaga.nvim";
-      rev = "557e6fd7fbca325a4bea582576fe36bec903367c";
-      sha256 = "0cxg1ahl9la3m8cd3sb7s456kmvrxjjsf411imyfgl0rp7632bf5";
+      rev = "d42fe8162356f3b55c24044f94e1880a4c317a95";
+      sha256 = "1f5giy1mwp3d4gb21kyzi7ilq3d1nywlj4fg1fxv043qyjfbrfhw";
     };
     meta.homepage = "https://github.com/nvimdev/lspsaga.nvim/";
   };
@@ -15614,12 +15639,12 @@ final: prev:
 
   nightfly = buildVimPluginFrom2Nix {
     pname = "nightfly";
-    version = "2023-07-19";
+    version = "2023-07-29";
     src = fetchFromGitHub {
       owner = "bluz71";
       repo = "vim-nightfly-colors";
-      rev = "cd68ec3c0a3ca2bf15072dd2040401ea4b89e79f";
-      sha256 = "00nfpkpv0li3wgh926azp8xf1zvdh3zc6fx5aznplhs9j6xbdx21";
+      rev = "b40ea7f8bb8fcbfdcfbbaed23cf628d336a7b83c";
+      sha256 = "10670b1xdl2pxm0xgl0ya5w97phs1866k0axl7ym8ff0agy4fxj4";
     };
     meta.homepage = "https://github.com/bluz71/vim-nightfly-colors/";
   };
@@ -15650,12 +15675,12 @@ final: prev:
 
   nvchad-ui = buildVimPluginFrom2Nix {
     pname = "nvchad-ui";
-    version = "2023-07-28";
+    version = "2023-07-29";
     src = fetchFromGitHub {
       owner = "nvchad";
       repo = "ui";
-      rev = "47ef4046504e5562a3daf30db50b7d4a1552fcb5";
-      sha256 = "1hx7i8z31avpfngqi21izl740p0ryhkf3ys1g76drnzqi6gan8d7";
+      rev = "1d4267f47fc022c66af87261f49c32b9a05273cf";
+      sha256 = "089a3ipja9x0giy29xa01w752rzlfhm6m4nbxd1g0kalh7fypjv3";
     };
     meta.homepage = "https://github.com/nvchad/ui/";
   };
@@ -15686,12 +15711,12 @@ final: prev:
 
   rose-pine = buildVimPluginFrom2Nix {
     pname = "rose-pine";
-    version = "2023-07-22";
+    version = "2023-07-28";
     src = fetchFromGitHub {
       owner = "rose-pine";
       repo = "neovim";
-      rev = "e10340767534b4988992de838d6c811db63b74db";
-      sha256 = "1a58a3xdl3wvs54sbmyyjs6mps8icp7r0g287i3h5jam10vabw3n";
+      rev = "e29002cbee4854a9c8c4b148d8a52fae3176070f";
+      sha256 = "19gndx91dj3c76zbidlk4gjgjw0qkpv4x0ws6f1fsga9b9gplf3g";
     };
     meta.homepage = "https://github.com/rose-pine/neovim/";
   };
diff --git a/pkgs/applications/editors/vim/plugins/nvim-treesitter/generated.nix b/pkgs/applications/editors/vim/plugins/nvim-treesitter/generated.nix
index 8c5562b8bae4..7af7cb7b2bf8 100644
--- a/pkgs/applications/editors/vim/plugins/nvim-treesitter/generated.nix
+++ b/pkgs/applications/editors/vim/plugins/nvim-treesitter/generated.nix
@@ -126,12 +126,12 @@
   };
   c = buildGrammar {
     language = "c";
-    version = "0.0.0+rev=ad09589";
+    version = "0.0.0+rev=39bea7d";
     src = fetchFromGitHub {
       owner = "tree-sitter";
       repo = "tree-sitter-c";
-      rev = "ad095896dd223f1c22b85ac5ec84ab11fb732b07";
-      hash = "sha256-0SqgOjsSFQkDeJMmF9mAgvbgnm9CCuFTYCUJo4zjCEU=";
+      rev = "39bea7d391f57c5f0e061419e1c3066e03eb14b3";
+      hash = "sha256-0iE7dRvouBZuVliWCuuM81CBlPndHR+qFEX8UnOSKWg=";
     };
     meta.homepage = "https://github.com/tree-sitter/tree-sitter-c";
   };
@@ -148,12 +148,12 @@
   };
   cairo = buildGrammar {
     language = "cairo";
-    version = "0.0.0+rev=02ec146";
+    version = "0.0.0+rev=6216c6e";
     src = fetchFromGitHub {
       owner = "amaanq";
       repo = "tree-sitter-cairo";
-      rev = "02ec1461f11aa126d3c16abb2da284ca3ba15631";
-      hash = "sha256-xtGIywLt+sOx82id3/9Me1WTJam8b9gPJfx+2xo7lgg=";
+      rev = "6216c6ee5e9fc0649c4bd7b1aedd884a55bdd9ef";
+      hash = "sha256-D8yAkxaokkdNFLnBDWTa6Xu21ibpVw1A4sd/llh8BKs=";
     };
     meta.homepage = "https://github.com/amaanq/tree-sitter-cairo";
   };
@@ -280,12 +280,12 @@
   };
   cuda = buildGrammar {
     language = "cuda";
-    version = "0.0.0+rev=2af3d43";
+    version = "0.0.0+rev=ccb8368";
     src = fetchFromGitHub {
       owner = "theHamsta";
       repo = "tree-sitter-cuda";
-      rev = "2af3d43cd96dd3f3c3868095222c7f5e2462b3ab";
-      hash = "sha256-ZwinNfhFM1u4qplHOFR8xKphtSjENS+o4u9RUgEnOHg=";
+      rev = "ccb8368181f1684d3c9815bc1271eb25aa7ddb16";
+      hash = "sha256-Fwy05mSFnvV7h0TEiO024uzHI7I3k2IYu4i5fRbdDrs=";
     };
     meta.homepage = "https://github.com/theHamsta/tree-sitter-cuda";
   };
@@ -403,23 +403,23 @@
   };
   elixir = buildGrammar {
     language = "elixir";
-    version = "0.0.0+rev=2616034";
+    version = "0.0.0+rev=a2861e8";
     src = fetchFromGitHub {
       owner = "elixir-lang";
       repo = "tree-sitter-elixir";
-      rev = "2616034f78ffa83ca6a521ebd7eee1868cb5c14c";
-      hash = "sha256-KY/qeIKWaXUCpA7hbK3ptfCg/cXoISa6mNYB7a0XY18=";
+      rev = "a2861e88a730287a60c11ea9299c033c7d076e30";
+      hash = "sha256-hBHqQ3eBjknRPJjP+lQJU6NPFhUMtiv4FbKsTw28Bog=";
     };
     meta.homepage = "https://github.com/elixir-lang/tree-sitter-elixir";
   };
   elm = buildGrammar {
     language = "elm";
-    version = "0.0.0+rev=73edfcd";
+    version = "0.0.0+rev=8fce414";
     src = fetchFromGitHub {
       owner = "elm-tooling";
       repo = "tree-sitter-elm";
-      rev = "73edfcdc3bb2ddfc731cd5d63e6cb287a18da90d";
-      hash = "sha256-0fC3NYHtZQbi9Ca5UAAD9FEXQUJ9z8caf0XQsPpU5Rs=";
+      rev = "8fce414fb951d6d2374593a3adf732621ef4bccf";
+      hash = "sha256-TuWEqei//UZm2RHWJTooJVOM9EiAST8TtehGw6JnuN4=";
     };
     meta.homepage = "https://github.com/elm-tooling/tree-sitter-elm";
   };
@@ -513,12 +513,12 @@
   };
   fortran = buildGrammar {
     language = "fortran";
-    version = "0.0.0+rev=482bdb8";
+    version = "0.0.0+rev=6828cf3";
     src = fetchFromGitHub {
       owner = "stadelmanma";
       repo = "tree-sitter-fortran";
-      rev = "482bdb8b8fb7305b928937379820aa6449e359a7";
-      hash = "sha256-x2Cm1yUfhlkl8zgbQFPe/IxVNGpX050J3wjsqe7uOW8=";
+      rev = "6828cf3629addb1706bdbbd33491e95f12b7042c";
+      hash = "sha256-/DoXmcNmHvgWvYt4IkHJoDp46xgoHMp+cw1jYEcQCHI=";
     };
     meta.homepage = "https://github.com/stadelmanma/tree-sitter-fortran";
   };
@@ -645,23 +645,23 @@
   };
   glsl = buildGrammar {
     language = "glsl";
-    version = "0.0.0+rev=34e0657";
+    version = "0.0.0+rev=e9c49d0";
     src = fetchFromGitHub {
       owner = "theHamsta";
       repo = "tree-sitter-glsl";
-      rev = "34e0657e37323874c6b67c718a0f83410c4602cf";
-      hash = "sha256-tOIwOy0XmDpDPxLWXZQNqxgoycA03oaqbdp+PxJfn+0=";
+      rev = "e9c49d0752d968bc6dcd35d0c3a88397c5d51757";
+      hash = "sha256-O/RNeoUZEPF8dxQDy41mQvmIyQ29V6MFr7Rgi7g4kDw=";
     };
     meta.homepage = "https://github.com/theHamsta/tree-sitter-glsl";
   };
   go = buildGrammar {
     language = "go";
-    version = "0.0.0+rev=8c8007e";
+    version = "0.0.0+rev=bbaa67a";
     src = fetchFromGitHub {
       owner = "tree-sitter";
       repo = "tree-sitter-go";
-      rev = "8c8007eaee47702bb0291a3c7aeb004909baab4d";
-      hash = "sha256-K8mvDoQXSXwyyYQuwEcV6RBTZFbn4OSi7R1nGoQkDQU=";
+      rev = "bbaa67a180cfe0c943e50c55130918be8efb20bd";
+      hash = "sha256-G7d8CHCyKDAb9j6ijRfHk/HlgPqSI+uvkuRIRRvjkHI=";
     };
     meta.homepage = "https://github.com/tree-sitter/tree-sitter-go";
   };
@@ -733,12 +733,12 @@
   };
   hack = buildGrammar {
     language = "hack";
-    version = "0.0.0+rev=95e63e7";
+    version = "0.0.0+rev=2887d39";
     src = fetchFromGitHub {
       owner = "slackhq";
       repo = "tree-sitter-hack";
-      rev = "95e63e79e0d9f91000bd11d458997fabed1bb1e2";
-      hash = "sha256-++WvcNWPEs2Ax4KSWaA7sQ1ga2dJVoUnleLkjuQ6tFA=";
+      rev = "2887d3927c5fadebfd71c604922d0c59748e9901";
+      hash = "sha256-rScvFdoyv0odnAcoKhS+iBaBziV/uaKJa51zPnxMBFQ=";
     };
     meta.homepage = "https://github.com/slackhq/tree-sitter-hack";
   };
@@ -755,12 +755,12 @@
   };
   haskell = buildGrammar {
     language = "haskell";
-    version = "0.0.0+rev=ba0bfb0";
+    version = "0.0.0+rev=9970682";
     src = fetchFromGitHub {
       owner = "tree-sitter";
       repo = "tree-sitter-haskell";
-      rev = "ba0bfb0e5d8e9e31c160d287878c6f26add3ec08";
-      hash = "sha256-ZSOF0CLOn82GwU3xgvFefmh/AD2j5zz8I0t5YPwfan0=";
+      rev = "99706824b92f162d4e0f47c7e930bbccb367276e";
+      hash = "sha256-JJvXkunDFRjWoXipxl1o2P+lRIDa4kw/Ys3LUu3piIY=";
     };
     meta.homepage = "https://github.com/tree-sitter/tree-sitter-haskell";
   };
@@ -788,12 +788,12 @@
   };
   heex = buildGrammar {
     language = "heex";
-    version = "0.0.0+rev=2e1348c";
+    version = "0.0.0+rev=9bf4ae4";
     src = fetchFromGitHub {
       owner = "connorlay";
       repo = "tree-sitter-heex";
-      rev = "2e1348c3cf2c9323e87c2744796cf3f3868aa82a";
-      hash = "sha256-6LREyZhdTDt3YHVRPDyqCaDXqcsPlHOoMFDb2B3+3xM=";
+      rev = "9bf4ae444a8779839ecbca3b6b896dee426b10ae";
+      hash = "sha256-ghknZmki1eBSzxY9omZN6wgLpvoJEYXBpvkVxxqLiIc=";
     };
     meta.homepage = "https://github.com/connorlay/tree-sitter-heex";
   };
@@ -832,12 +832,12 @@
   };
   hoon = buildGrammar {
     language = "hoon";
-    version = "0.0.0+rev=dfa565f";
+    version = "0.0.0+rev=900a272";
     src = fetchFromGitHub {
       owner = "urbit-pilled";
       repo = "tree-sitter-hoon";
-      rev = "dfa565f87c8997d43cec725d41f023cc3577ca46";
-      hash = "sha256-ogNgjvRRR0KevOlB1PH+cI+HHftq/JrS6pQuIwR5m2A=";
+      rev = "900a272271cc2fb78f24aa7b5a1e21ed36bb1d39";
+      hash = "sha256-g2jBCZjsEsWG+LCAGj7b/t5mOET5/mVN39+/HDRUBCk=";
     };
     meta.homepage = "https://github.com/urbit-pilled/tree-sitter-hoon";
   };
@@ -1030,12 +1030,12 @@
   };
   kotlin = buildGrammar {
     language = "kotlin";
-    version = "0.0.0+rev=2878163";
+    version = "0.0.0+rev=06a2f6e";
     src = fetchFromGitHub {
       owner = "fwcd";
       repo = "tree-sitter-kotlin";
-      rev = "2878163ee7cad7eaebd3df1729e86610891fe0ee";
-      hash = "sha256-BRmKlQf78MkK5d2w6J4B5p6Nos+kSon+1M95lOJEkd0=";
+      rev = "06a2f6e71c7fcac34addcbf2a4667adad1b9c5a7";
+      hash = "sha256-HF3wp4nNwgP0LhZvxQKMnPqMPhwu8Xc9khgiQoy6DeA=";
     };
     meta.homepage = "https://github.com/fwcd/tree-sitter-kotlin";
   };
@@ -1107,12 +1107,12 @@
   };
   luap = buildGrammar {
     language = "luap";
-    version = "0.0.0+rev=43916b0";
+    version = "0.0.0+rev=31461ae";
     src = fetchFromGitHub {
       owner = "amaanq";
       repo = "tree-sitter-luap";
-      rev = "43916b0f31c48a05e03783eb0bab4eec54a4ac75";
-      hash = "sha256-wu2f9iCByf85/iE6j5slNruYH8GUVD19u/ygJ/yx76U=";
+      rev = "31461ae9bd0866cb5117cfe5de71189854fd0f3e";
+      hash = "sha256-SW2ubK5317GUc1dQLkhoaisMgctLOwr6TPVYSQh02vE=";
     };
     meta.homepage = "https://github.com/amaanq/tree-sitter-luap";
   };
@@ -1175,12 +1175,12 @@
   };
   matlab = buildGrammar {
     language = "matlab";
-    version = "0.0.0+rev=1558d8f";
+    version = "0.0.0+rev=c8723b3";
     src = fetchFromGitHub {
       owner = "acristoffers";
       repo = "tree-sitter-matlab";
-      rev = "1558d8fc85f7810fa567292ad2a7e64913fa78a1";
-      hash = "sha256-3FKUGmMM3OeRXkS+izu5yrTgiewp5nHN2352t6sYurU=";
+      rev = "c8723b33970deda54257e640779714fb181d4d5f";
+      hash = "sha256-iSpOB5hnd7iKmuhAzAYYbFgP5MiiD57yvAHHG8PS9HA=";
     };
     meta.homepage = "https://github.com/acristoffers/tree-sitter-matlab";
   };
@@ -1310,12 +1310,12 @@
   };
   ocamllex = buildGrammar {
     language = "ocamllex";
-    version = "0.0.0+rev=c8f90e4";
+    version = "0.0.0+rev=4b9898c";
     src = fetchFromGitHub {
       owner = "atom-ocaml";
       repo = "tree-sitter-ocamllex";
-      rev = "c8f90e42e1b9cf9e30b1669c386b8d9de992d201";
-      hash = "sha256-cFzurSuO64PwOuJz1Fa0GTDZ2hnT0dHl4NwQhXWQWIw=";
+      rev = "4b9898ccbf198602bb0dec9cd67cc1d2c0a4fad2";
+      hash = "sha256-YhmEE7I7UF83qMuldHqc/fD/no/7YuZd6CaAIaZ1now=";
     };
     generate = true;
     meta.homepage = "https://github.com/atom-ocaml/tree-sitter-ocamllex";
@@ -1377,23 +1377,23 @@
   };
   perl = buildGrammar {
     language = "perl";
-    version = "0.0.0+rev=4a02376";
+    version = "0.0.0+rev=6141ee2";
     src = fetchFromGitHub {
       owner = "ganezdragon";
       repo = "tree-sitter-perl";
-      rev = "4a023763f54dec0a6f986f5bd238af788a3f0584";
-      hash = "sha256-8mLzXxkc8m69KOQtIT02MCKeTCuwERT3/Kegf48IEls=";
+      rev = "6141ee2cb4c954d5fab9c4ed20ad2b159341533c";
+      hash = "sha256-eRgnMVCh2/DD8Ka1unyBt9KoLNR4fo3lJiJlZXYBOJo=";
     };
     meta.homepage = "https://github.com/ganezdragon/tree-sitter-perl";
   };
   php = buildGrammar {
     language = "php";
-    version = "0.0.0+rev=d43130f";
+    version = "0.0.0+rev=d76de26";
     src = fetchFromGitHub {
       owner = "tree-sitter";
       repo = "tree-sitter-php";
-      rev = "d43130fd1525301e9826f420c5393a4d169819fc";
-      hash = "sha256-oHUfcuqtFFl+70/uJjE74J1JVV93G9++UaEIntOH5tM=";
+      rev = "d76de26b8218df208949f46b31e0c422020eda3a";
+      hash = "sha256-s5oms776eOTkT/tD61ElHCY+pIg7LhnJ3VIyhdHoZWs=";
     };
     meta.homepage = "https://github.com/tree-sitter/tree-sitter-php";
   };
@@ -1432,12 +1432,12 @@
   };
   poe_filter = buildGrammar {
     language = "poe_filter";
-    version = "0.0.0+rev=80dc101";
+    version = "0.0.0+rev=d7b43b5";
     src = fetchFromGitHub {
       owner = "ObserverOfTime";
       repo = "tree-sitter-poe-filter";
-      rev = "80dc10195e26c72598ed1ab02cdf2d8e4c792e7b";
-      hash = "sha256-KDsi8eLrTnZaD9XwyF24edmBNHre3FoTiD7RE/MpvEQ=";
+      rev = "d7b43b51f92fb19efe8af45c2246087c611c8f63";
+      hash = "sha256-83gE+dY1ldK5zFcEtqY3zZgk+MMrSA8w5alqp2sa/7Y=";
     };
     meta.homepage = "https://github.com/ObserverOfTime/tree-sitter-poe-filter";
   };
@@ -1465,12 +1465,12 @@
   };
   promql = buildGrammar {
     language = "promql";
-    version = "0.0.0+rev=4b6b9f3";
+    version = "0.0.0+rev=ed9a12f";
     src = fetchFromGitHub {
       owner = "MichaHoffmann";
       repo = "tree-sitter-promql";
-      rev = "4b6b9f399dc58e408c81da8d8fd7e66ab617eef3";
-      hash = "sha256-CaNCxgKL/N6TUcO838iR09tFTYS/kWJLf8whQF/3hAg=";
+      rev = "ed9a12f6ae4e75d4622adef8fb1b1e4d0ac0a759";
+      hash = "sha256-pE0cPBB6zuQ2MdjT+kPOqhbTvcOBk5M+JK3leaT7ITE=";
     };
     meta.homepage = "https://github.com/MichaHoffmann/tree-sitter-promql";
   };
@@ -1487,12 +1487,12 @@
   };
   prql = buildGrammar {
     language = "prql";
-    version = "0.0.0+rev=02b1e96";
+    version = "0.0.0+rev=09e158c";
     src = fetchFromGitHub {
       owner = "PRQL";
       repo = "tree-sitter-prql";
-      rev = "02b1e967ede00aaa5d7c9fcd4a604b83825a6261";
-      hash = "sha256-3pdfcCfHdusphn7vQX/d1gS5kKyNTE9qf0YBvsa/BjM=";
+      rev = "09e158cd3650581c0af4c49c2e5b10c4834c8646";
+      hash = "sha256-bdT7LZ2x7BdUqLJRq4ENJTaIFnciac7l2dCxOSB09CI=";
     };
     meta.homepage = "https://github.com/PRQL/tree-sitter-prql";
   };
@@ -1520,12 +1520,12 @@
   };
   python = buildGrammar {
     language = "python";
-    version = "0.0.0+rev=7c8930b";
+    version = "0.0.0+rev=5af00f6";
     src = fetchFromGitHub {
       owner = "tree-sitter";
       repo = "tree-sitter-python";
-      rev = "7c8930b6388b5590ebef248853f144185a9eda1d";
-      hash = "sha256-6QXMocivEFGrmCFJdxz+z+FsAQ6MBd4kv7719gKO4Gg=";
+      rev = "5af00f64af6bbf822f208243cce5cf75396fb6f5";
+      hash = "sha256-2btd/NRE6NuGNlx4cq535OrwtWXihiP3VMCJjPCiDOk=";
     };
     meta.homepage = "https://github.com/tree-sitter/tree-sitter-python";
   };
@@ -1586,12 +1586,12 @@
   };
   racket = buildGrammar {
     language = "racket";
-    version = "0.0.0+rev=92bf637";
+    version = "0.0.0+rev=d181a97";
     src = fetchFromGitHub {
       owner = "6cdh";
       repo = "tree-sitter-racket";
-      rev = "92bf6372c63bb413c2d3c1535383d266838d1911";
-      hash = "sha256-r/4tT+dPhyQCQfeprISH0E30hUyxSnJHpcVN/VLM6Rw=";
+      rev = "d181a9738177a3b21b9f0e7bbb33b1a562f73ba6";
+      hash = "sha256-USdHc4c5s1ZGB1nHf0nw8IZEi1xbLWJTnj6KBzcmacY=";
     };
     meta.homepage = "https://github.com/6cdh/tree-sitter-racket";
   };
@@ -1641,12 +1641,12 @@
   };
   robot = buildGrammar {
     language = "robot";
-    version = "0.0.0+rev=51b82cf";
+    version = "0.0.0+rev=5e50f25";
     src = fetchFromGitHub {
       owner = "Hubro";
       repo = "tree-sitter-robot";
-      rev = "51b82cfd0c824681b6a282663820a5ce54243e55";
-      hash = "sha256-jRLP5LqA/Q3IosK0n5sLJ2SW/wXTo9ia1zpdnos/QN8=";
+      rev = "5e50f2517580290cd1b9689664815e3b09d986b8";
+      hash = "sha256-5mWRCd9JcTGTuODltbuz7htW/fYjlBTS9HzxrFRj12w=";
     };
     meta.homepage = "https://github.com/Hubro/tree-sitter-robot";
   };
@@ -1696,12 +1696,12 @@
   };
   scala = buildGrammar {
     language = "scala";
-    version = "0.0.0+rev=8062487";
+    version = "0.0.0+rev=a2f36c2";
     src = fetchFromGitHub {
       owner = "tree-sitter";
       repo = "tree-sitter-scala";
-      rev = "8062487fb3b7f3ce1bb7ce1fd1c84bed60c75203";
-      hash = "sha256-nCmQjLqunccXVgmNUMbMbm6SYuwCRtf1v2CFXrgKXqo=";
+      rev = "a2f36c2477859110d5b7b675f395e50241fbc004";
+      hash = "sha256-/GT4SwYit6IwWgEadPMEyXVtmXdwomWUrDMdlTHS6Qs=";
     };
     meta.homepage = "https://github.com/tree-sitter/tree-sitter-scala";
   };
@@ -1796,12 +1796,12 @@
   };
   sql = buildGrammar {
     language = "sql";
-    version = "0.0.0+rev=9fc30c9";
+    version = "0.0.0+rev=61ab791";
     src = fetchFromGitHub {
       owner = "derekstride";
       repo = "tree-sitter-sql";
-      rev = "9fc30c949f29747d34c254677d039c9df3c521b4";
-      hash = "sha256-EyZSbcjbPuaQGpi33YK+hpsod73yifk2hL+MCjn8R9M=";
+      rev = "61ab7913e110082b7f1fab5421ae3f971b3578ce";
+      hash = "sha256-0M0iMJ3qCh6OLAxHaZatK/DTaLwAzDGC5Anxsjjg8kY=";
     };
     meta.homepage = "https://github.com/derekstride/tree-sitter-sql";
   };
@@ -1896,15 +1896,14 @@
   };
   t32 = buildGrammar {
     language = "t32";
-    version = "0.0.0+rev=4e581fc";
-    src = fetchFromGitea {
-      domain = "codeberg.org";
+    version = "0.0.0+rev=e4cb4a6";
+    src = fetchFromGitLab {
       owner = "xasc";
       repo = "tree-sitter-t32";
-      rev = "4e581fcd17d76651aa92759a68f9a8186b9fe8dc";
-      hash = "sha256-SUft3MpM8fSLyojgRs6uaZxWDfoxNvL5Orb7XcrztYo=";
+      rev = "e4cb4a6adb26650e0a2bf4ae57d829ccb8066dcc";
+      hash = "sha256-WNkO6EkvEmS/Yrpj5Kj34xFcScoCCbbrXiW0CORJYvw=";
     };
-    meta.homepage = "https://codeberg.org/xasc/tree-sitter-t32";
+    meta.homepage = "https://gitlab.com/xasc/tree-sitter-t32";
   };
   tablegen = buildGrammar {
     language = "tablegen";
@@ -2100,12 +2099,12 @@
   };
   verilog = buildGrammar {
     language = "verilog";
-    version = "0.0.0+rev=22f9b84";
+    version = "0.0.0+rev=9020313";
     src = fetchFromGitHub {
       owner = "tree-sitter";
       repo = "tree-sitter-verilog";
-      rev = "22f9b845c77c52b86b21adaebe689864957f4e31";
-      hash = "sha256-X3wIZ9AFc6Cxm4E3NYxRRO8vDfVDuSsupkcLhwkf+QI=";
+      rev = "902031343056bc0b11f3e47b33f036a9cf59f58d";
+      hash = "sha256-7yPSblfcfNpJYFc06GT1EYY6WMgj/SaFI3UJqUBsL9c=";
     };
     meta.homepage = "https://github.com/tree-sitter/tree-sitter-verilog";
   };
@@ -2166,23 +2165,23 @@
   };
   wgsl_bevy = buildGrammar {
     language = "wgsl_bevy";
-    version = "0.0.0+rev=9e3273e";
+    version = "0.0.0+rev=a041228";
     src = fetchFromGitHub {
       owner = "theHamsta";
       repo = "tree-sitter-wgsl-bevy";
-      rev = "9e3273e64bdd3f74d1514674286838f9075ee9e4";
+      rev = "a041228ae64632f59b9bd37346a0dbcb7817f36b";
       hash = "sha256-bBGunOcFPrHWLsP1ISgdFBNDIBbB0uhwxKAwmQZg7/k=";
     };
     meta.homepage = "https://github.com/theHamsta/tree-sitter-wgsl-bevy";
   };
   wing = buildGrammar {
     language = "wing";
-    version = "0.0.0+rev=23712ef";
+    version = "0.0.0+rev=996e87a";
     src = fetchFromGitHub {
       owner = "winglang";
       repo = "wing";
-      rev = "23712eff9768576bdd852cb9b989a9cd44af014a";
-      hash = "sha256-IWqclJM3CKsgXIy3e6pUrd2iLfIu8QZT2k6eZXRpITA=";
+      rev = "996e87a0fa23ebd41d6c50fdff61d2ec6e2e1c1e";
+      hash = "sha256-OKR/zt+53s3BO9Gu0VKEEsslR2Is2LaUnurXqrgNlSo=";
     };
     location = "libs/tree-sitter-wing";
     generate = true;
diff --git a/pkgs/applications/editors/vim/plugins/overrides.nix b/pkgs/applications/editors/vim/plugins/overrides.nix
index 3007625285c3..617096ca90e3 100644
--- a/pkgs/applications/editors/vim/plugins/overrides.nix
+++ b/pkgs/applications/editors/vim/plugins/overrides.nix
@@ -883,6 +883,21 @@ self: super: {
     dependencies = with self; [ (nvim-treesitter.withPlugins (p: [ p.org ])) ];
   };
 
+  overseer-nvim = super.overseer-nvim.overrideAttrs {
+    doCheck = true;
+    checkPhase = ''
+      runHook preCheck
+
+      plugins=.testenv/data/nvim/site/pack/plugins/start
+      mkdir -p "$plugins"
+      ln -s ${self.plenary-nvim} "$plugins/plenary.nvim"
+      bash run_tests.sh
+      rm -r .testenv
+
+      runHook postCheck
+    '';
+  };
+
   inherit parinfer-rust;
 
   phpactor = buildVimPluginFrom2Nix {
@@ -932,7 +947,7 @@ self: super: {
         pname = "sg-nvim-rust";
         inherit (old) version src;
 
-        cargoHash = "sha256-bgroNNFRoKiySTC6Rldoy8Unepxd2OXwqcy3fA+CETs=";
+        cargoHash = "sha256-DgNA/RqnpKmixJKKEDOzflaw8qfnTaBG/Dus1cqgHTU=";
 
         nativeBuildInputs = [ pkg-config ];
 
diff --git a/pkgs/applications/editors/vim/plugins/vim-plugin-names b/pkgs/applications/editors/vim/plugins/vim-plugin-names
index c44c338e82cd..b37e9193df49 100644
--- a/pkgs/applications/editors/vim/plugins/vim-plugin-names
+++ b/pkgs/applications/editors/vim/plugins/vim-plugin-names
@@ -114,6 +114,7 @@ https://github.com/bbchung/clighter8/,,
 https://github.com/ekickx/clipboard-image.nvim/,,
 https://github.com/asheq/close-buffers.vim/,HEAD,
 https://github.com/winston0410/cmd-parser.nvim/,,
+https://github.com/FelipeLema/cmp-async-path/,HEAD,
 https://github.com/crispgm/cmp-beancount/,HEAD,
 https://github.com/hrsh7th/cmp-buffer/,,
 https://github.com/hrsh7th/cmp-calc/,,
@@ -646,6 +647,7 @@ https://github.com/Almo7aya/openingh.nvim/,,
 https://github.com/salkin-mada/openscad.nvim/,HEAD,
 https://github.com/nvim-orgmode/orgmode/,,
 https://github.com/rgroli/other.nvim/,HEAD,
+https://github.com/stevearc/overseer.nvim/,HEAD,
 https://github.com/nyoom-engineering/oxocarbon.nvim/,HEAD,
 https://github.com/vuki656/package-info.nvim/,,
 https://github.com/wbthomason/packer.nvim/,,
diff --git a/pkgs/applications/networking/browsers/firefox-bin/release_sources.nix b/pkgs/applications/networking/browsers/firefox-bin/release_sources.nix
index 1f12e2879a72..94f527b8bbd2 100644
--- a/pkgs/applications/networking/browsers/firefox-bin/release_sources.nix
+++ b/pkgs/applications/networking/browsers/firefox-bin/release_sources.nix
@@ -1,1015 +1,1015 @@
 {
-  version = "116.0";
+  version = "116.0.1";
   sources = [
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/ach/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/ach/firefox-116.0.1.tar.bz2";
       locale = "ach";
       arch = "linux-x86_64";
-      sha256 = "f9f28023f1702d54225f33c6a6bded08a1d17871091ceb7829e000aaf5769485";
+      sha256 = "4cd40512dd07b632ae912103ca3eed6dc8f74356b7ff6778d2aee47ef989a142";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/af/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/af/firefox-116.0.1.tar.bz2";
       locale = "af";
       arch = "linux-x86_64";
-      sha256 = "2936f804f0b40589aaf59b581e11d7296f27671fafffe2696845c22cdccdbb50";
+      sha256 = "f716bef672ac2f7f4efca1c88558336503fd61b19bc3ea055e7a208ae088c8fe";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/an/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/an/firefox-116.0.1.tar.bz2";
       locale = "an";
       arch = "linux-x86_64";
-      sha256 = "1572eade803d946b48070822434301ce4000fa348c9f01af3653e253473e0c50";
+      sha256 = "0d17d220f85d3dd92b80536c177dfd03016e74cc5817563252aa6411c33a977b";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/ar/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/ar/firefox-116.0.1.tar.bz2";
       locale = "ar";
       arch = "linux-x86_64";
-      sha256 = "5668b90b9ad9314cabff710cbd9864acd4f880411952591cfc2770821a7718db";
+      sha256 = "d8bd0efd03b0e05361bb1e5ba9c2c3de15e62a3d46b311e67790742f7c6dbef1";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/ast/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/ast/firefox-116.0.1.tar.bz2";
       locale = "ast";
       arch = "linux-x86_64";
-      sha256 = "61865e18b800873881bd88b034480978378086f2bde9d0746aab91c04491cd45";
+      sha256 = "76ca632f14f689f9dad87efd33d4f4fac7dae211f05235c89180c8d235be9674";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/az/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/az/firefox-116.0.1.tar.bz2";
       locale = "az";
       arch = "linux-x86_64";
-      sha256 = "485ce8e25658725b98f5596536eb34e832e21c8b995f9eb728f6b9bd3d7d68ca";
+      sha256 = "188149214d58acc664d773ce9b24be3ae4c525d53eacaddd4c4633a9546df163";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/be/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/be/firefox-116.0.1.tar.bz2";
       locale = "be";
       arch = "linux-x86_64";
-      sha256 = "3af6a0fc179bd134fcb78241fe08bdd19cd17f56c53e5f6f4ba49607579b7f5c";
+      sha256 = "2c237aea7b369382c5025267828bdf630306a50ac8326b620f03a3b9630a96b0";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/bg/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/bg/firefox-116.0.1.tar.bz2";
       locale = "bg";
       arch = "linux-x86_64";
-      sha256 = "a5633fa78ceb33f1bcb3ea4745c809e018b7319140a8d3a9caf2ea10b9b48956";
+      sha256 = "8a9930f11bf2e8c6f312e60d3630308b9c245022cfb9b263cdc6b9b32bc6aba6";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/bn/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/bn/firefox-116.0.1.tar.bz2";
       locale = "bn";
       arch = "linux-x86_64";
-      sha256 = "221067f2f48985f302c1a20b0a7c0e7a2f9d3ad09e4b59b9cf93af4a39df591c";
+      sha256 = "46151d2f96312d472370d46b9a79767dbd220269e77d4b095dd0b6c379159e4b";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/br/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/br/firefox-116.0.1.tar.bz2";
       locale = "br";
       arch = "linux-x86_64";
-      sha256 = "668cee2552f4d645bc92061e617184b801ceda90f6750a0713ed54955444add0";
+      sha256 = "a7dba6ea1bbf0c32bd90369ce25542a59703f3362bf15e11d7e6c6713e06aeb6";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/bs/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/bs/firefox-116.0.1.tar.bz2";
       locale = "bs";
       arch = "linux-x86_64";
-      sha256 = "a93be95fa0bc3611cfc44e1f3aebe923b98b77117fe9ac45fdfca2429e003616";
+      sha256 = "1ff190385f79d908e371a2d6b2863b143b80c1bc8c979408fe74ae12adde10eb";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/ca-valencia/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/ca-valencia/firefox-116.0.1.tar.bz2";
       locale = "ca-valencia";
       arch = "linux-x86_64";
-      sha256 = "85792291eb9fe516c511444630a5079421fdce76a8ebf9135bfb663dbafa9809";
+      sha256 = "18a309efe29ddd1975849050c1e1cf2d9fa8c889294d2b803d8bc755407cc8d2";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/ca/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/ca/firefox-116.0.1.tar.bz2";
       locale = "ca";
       arch = "linux-x86_64";
-      sha256 = "283ca0073bc7f3e92862d0b7658dace4b82fbf5d9fa28ff0a0db589c27caba2a";
+      sha256 = "6809ad187777ae37f98ffffeda66d07cff7bffdbbf59aa943c31c6bf4d1c5d18";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/cak/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/cak/firefox-116.0.1.tar.bz2";
       locale = "cak";
       arch = "linux-x86_64";
-      sha256 = "9c6eb2e5afe7b7d224e486c1614dafbb03c98418419df5d7cf52603fac86b1f4";
+      sha256 = "5f75ece70a531e3de12932a6ef269caa7920bd43d72275a5e36b9f795eb0372f";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/cs/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/cs/firefox-116.0.1.tar.bz2";
       locale = "cs";
       arch = "linux-x86_64";
-      sha256 = "2a662ea061c338565ce7a41fb5129906fbfbefd211bc1478c8b5df2da31cd09b";
+      sha256 = "5b518ab924956e53634f3f0c7d9853a5ac15ada7af6ea58e639e9169dacb8978";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/cy/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/cy/firefox-116.0.1.tar.bz2";
       locale = "cy";
       arch = "linux-x86_64";
-      sha256 = "8ed1c5c290f15eee386cc50a4b55ba9e68195cced914830d0b5932dc5c360d70";
+      sha256 = "617b154a5581557ea13d6303372dbf3c9ae560087c08e62eaf3256dd97f2231e";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/da/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/da/firefox-116.0.1.tar.bz2";
       locale = "da";
       arch = "linux-x86_64";
-      sha256 = "c7fb3d69577feb9ecf452561bca5acc48de0cfda3af9acd650eda02b0c42fab6";
+      sha256 = "c8b820b7270f1ed8c89814faa44fabb6b68e50223539c0bc0ec440cece702a58";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/de/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/de/firefox-116.0.1.tar.bz2";
       locale = "de";
       arch = "linux-x86_64";
-      sha256 = "a20d2e375059348e3132f68f9bf0adbc82d4a72555844c305a00952fd676461a";
+      sha256 = "e167d133266cc60aed651453f35810864a54bfe23dd35d2f18ce1a6b9d98a3e9";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/dsb/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/dsb/firefox-116.0.1.tar.bz2";
       locale = "dsb";
       arch = "linux-x86_64";
-      sha256 = "4ea38c4555ff2ec51c5fca580f907b3394de478fca190638163220c306d8a28b";
+      sha256 = "fa3a38acd33fc1ad50f18894c00aab4e8b3a86c63b134eb320ac8e9525c767f4";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/el/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/el/firefox-116.0.1.tar.bz2";
       locale = "el";
       arch = "linux-x86_64";
-      sha256 = "7bf38355cde909e73fd9e768bb434ac8e0cbd4c255630f883d7dbda727cd0c66";
+      sha256 = "15aee0405639dea70bacc8710dec6b98cac26040ff489516b801302d981fd7f0";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/en-CA/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/en-CA/firefox-116.0.1.tar.bz2";
       locale = "en-CA";
       arch = "linux-x86_64";
-      sha256 = "a642a2c33a8c2ae92b47799aefd20ee2131e63cc982264a93ac4428fc453abb1";
+      sha256 = "8e9038465c8bceabb827344118751152d69d3eae57e47d085d1b98d142b66dd4";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/en-GB/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/en-GB/firefox-116.0.1.tar.bz2";
       locale = "en-GB";
       arch = "linux-x86_64";
-      sha256 = "055f2b734363586c61561a57ecb476bd8f31b586ab5ecb77041c23fb1f13a15a";
+      sha256 = "87e9c0f890fc305efe9595e843c3388edc42aa758ae1504574bda988656355be";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/en-US/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/en-US/firefox-116.0.1.tar.bz2";
       locale = "en-US";
       arch = "linux-x86_64";
-      sha256 = "c689747d1dfa2b562f665ead7a82a5b399eb8f75b21aab11762f1093d90fea6c";
+      sha256 = "2c85a25a0a201f41babd7a321a2c339f3fcf51e4cab2a94f98bc4b25e6672c6e";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/eo/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/eo/firefox-116.0.1.tar.bz2";
       locale = "eo";
       arch = "linux-x86_64";
-      sha256 = "035b78e5b5dc8202aa340d47a8922c1e2293eb297da9483df1ce482a46a707c7";
+      sha256 = "6a2f01ab574ba5396f6cb6ed53434e981860b18bce56d573930480002ab3df09";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/es-AR/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/es-AR/firefox-116.0.1.tar.bz2";
       locale = "es-AR";
       arch = "linux-x86_64";
-      sha256 = "0017ae92eeab809311ded78ac062fa65f2a287f907823fe5c682d54418a4ef06";
+      sha256 = "5ac4dac5f6442900b10d1a8eaa7d69e261f42afab11eb490859534cf5fc386a1";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/es-CL/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/es-CL/firefox-116.0.1.tar.bz2";
       locale = "es-CL";
       arch = "linux-x86_64";
-      sha256 = "e30d470f0067f10e55c3b60d1c655fa3980cb1769f203f3b963944094f6c4786";
+      sha256 = "c31778635c6142aa3ae5185cb94f3a6ada480f5e4cf7df86093990a068aa3150";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/es-ES/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/es-ES/firefox-116.0.1.tar.bz2";
       locale = "es-ES";
       arch = "linux-x86_64";
-      sha256 = "088d86a0a062e2090ef04253136e9f56afcbdc0cf50b69a9426add68ca2f7303";
+      sha256 = "b8ee6e1a92c8d6c8946b611598088c0933670a2578c0f2c05b63220469357947";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/es-MX/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/es-MX/firefox-116.0.1.tar.bz2";
       locale = "es-MX";
       arch = "linux-x86_64";
-      sha256 = "275c173dbf244a73a1007d4f1ce7a521fd6fd74315850911fc0119a938afa2ac";
+      sha256 = "e9215001b0e087046d61149088ff6c0d78cb2fe2606cc48d6693fd7b17149a71";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/et/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/et/firefox-116.0.1.tar.bz2";
       locale = "et";
       arch = "linux-x86_64";
-      sha256 = "4667ed790999da65741eb458191152983a772e0a6c444591231e4b08d186c23d";
+      sha256 = "ebb4c8213a84aed826613d9914ad4e3dac7321d920f9b37e29f26f2acd5fb0d2";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/eu/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/eu/firefox-116.0.1.tar.bz2";
       locale = "eu";
       arch = "linux-x86_64";
-      sha256 = "4bd83d219053b92a5fc33d2736f0e2a756cf71f497217d44bd86b2afeca6ae38";
+      sha256 = "366693332ea3ea34704cb390a2d8eb7faece05bde6cc8fb52050af6d1633a2a6";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/fa/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/fa/firefox-116.0.1.tar.bz2";
       locale = "fa";
       arch = "linux-x86_64";
-      sha256 = "069915d3dae6e9fa17ab1ea45d3333ee46026db80cc9e1bff576245c175e692e";
+      sha256 = "6f11947eb2a888a74261eddb58792bafa654f13247962ae900c779148511323e";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/ff/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/ff/firefox-116.0.1.tar.bz2";
       locale = "ff";
       arch = "linux-x86_64";
-      sha256 = "e89f47a6dcde5a053b4cb7e345a8ad45383b89f270daf7e81c332a3c9d2e7c00";
+      sha256 = "3d1c85e8a1ed8c7d7626302bdff1817810a927a44c42c227eb444a3bacaf8940";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/fi/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/fi/firefox-116.0.1.tar.bz2";
       locale = "fi";
       arch = "linux-x86_64";
-      sha256 = "f37bf620ae7ebb6abe3aa372e4512fe5995d9ad9730b10f3e7e6c182d37b9017";
+      sha256 = "c67bc808817d6a5047817a73cf49efb0f096b68cc880420c4d7b85704d682ecd";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/fr/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/fr/firefox-116.0.1.tar.bz2";
       locale = "fr";
       arch = "linux-x86_64";
-      sha256 = "177d291f6696edc51672a70ef84747169ac5827cdbae15ee7d4540c95a607d2e";
+      sha256 = "8f64a236006e6addf7f4cb96e198fefdd3d7442aa0d0a34c54e006b74d24e052";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/fur/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/fur/firefox-116.0.1.tar.bz2";
       locale = "fur";
       arch = "linux-x86_64";
-      sha256 = "d254b2d3eb99a1d4447b00cf74c2115703d997e8ea913d37353d84ac39b7ebd4";
+      sha256 = "6791106266d24b13a20346d925f4a6797df279bee0d0bb10b6ad260f06b82f22";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/fy-NL/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/fy-NL/firefox-116.0.1.tar.bz2";
       locale = "fy-NL";
       arch = "linux-x86_64";
-      sha256 = "731e4708989bb25a8508672afcc249a4474a7eaa20f23be2e72b11f82ba32f91";
+      sha256 = "841c6866e3c0e4018ffdb99a034781f04e66b818bb743a4e253f37c923f89e76";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/ga-IE/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/ga-IE/firefox-116.0.1.tar.bz2";
       locale = "ga-IE";
       arch = "linux-x86_64";
-      sha256 = "66b5d0ea2c52c997b58fec04bb102598ba33dae1b5d4086e3a9db25b0e955d10";
+      sha256 = "3e408fd85fb1c9d2195aa0113fcd2dccfabc1f2cc12c641c066503a6e9f15efa";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/gd/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/gd/firefox-116.0.1.tar.bz2";
       locale = "gd";
       arch = "linux-x86_64";
-      sha256 = "9b2452bf68f740323826ef420e09d211376b24aca2fe8375c69af18984e37ecb";
+      sha256 = "3b38ad8d7df6c1f8ff10234084453fcbaf161226c73309e1c95d94b45acf5944";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/gl/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/gl/firefox-116.0.1.tar.bz2";
       locale = "gl";
       arch = "linux-x86_64";
-      sha256 = "2b850b78a0c4ff25f600c15fceca0949dfecad1513be3f224649621b650ba4b0";
+      sha256 = "f469bd374abb829bab4c9e1b714232c1445ec41671e08341757259efeac6bb46";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/gn/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/gn/firefox-116.0.1.tar.bz2";
       locale = "gn";
       arch = "linux-x86_64";
-      sha256 = "010c08f3e89a413acc09f4aa17e7324e6d02933cc76eb9c4283ce0ce3ec63838";
+      sha256 = "0a5ed15868cb8253e56e0d5ae9c085f5e172b4b6ebcef312c05ee6d0e9771e9c";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/gu-IN/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/gu-IN/firefox-116.0.1.tar.bz2";
       locale = "gu-IN";
       arch = "linux-x86_64";
-      sha256 = "42472a5549c925eef91ead8c73172c5fc2b5171b93ae4e5f2177723c03f7b801";
+      sha256 = "b287a77a53fedb78985a00ae69508999c85051bad5f3a28f3e9642a432a6195a";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/he/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/he/firefox-116.0.1.tar.bz2";
       locale = "he";
       arch = "linux-x86_64";
-      sha256 = "677a458b1233f7203f14825fe5cafdefa02f143264da45f63b8f6cf3f49158a0";
+      sha256 = "b195c257007802b38924a7ce29910d0142007069e623459a70dbffd07fcb477c";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/hi-IN/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/hi-IN/firefox-116.0.1.tar.bz2";
       locale = "hi-IN";
       arch = "linux-x86_64";
-      sha256 = "10e74e64414f7c6c3800d30a77d1aabbff98e0b3e08a1620828979d6adcfcad1";
+      sha256 = "5e375896be832ca6e731e179849da587775d62b375de696c8242db4d165e03d5";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/hr/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/hr/firefox-116.0.1.tar.bz2";
       locale = "hr";
       arch = "linux-x86_64";
-      sha256 = "334ac4b63f9e1e41055adefb169c5a9b6117e54dfa665498fe03c3fcff6c8840";
+      sha256 = "ccbb3f21e58ad159568eba02066f22076e9f6c4ca5319ccb4e3d401271d317ef";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/hsb/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/hsb/firefox-116.0.1.tar.bz2";
       locale = "hsb";
       arch = "linux-x86_64";
-      sha256 = "12ddc0e9593068582edcdd60d75cb5a6bdf2050955a2c3c799021fc03d9615f8";
+      sha256 = "e2095aea5390dee60db7a6046487fd7d18827e9053a81b111417c351d5add211";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/hu/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/hu/firefox-116.0.1.tar.bz2";
       locale = "hu";
       arch = "linux-x86_64";
-      sha256 = "79d86bcbdcdc0f72fd0c2b53c14fa0455ec02b80039fcde1ee3238a1a26874b1";
+      sha256 = "5ed95a85eb870848bb528619845280b94be29fccabef1547d6dc9c6792d0b3ed";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/hy-AM/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/hy-AM/firefox-116.0.1.tar.bz2";
       locale = "hy-AM";
       arch = "linux-x86_64";
-      sha256 = "e221de9758c8b124322b0ffd9b9bca39f69f3908a0135ebfb916cfb1dfb35bf3";
+      sha256 = "ffb81343d4586ea859e2cd627f4110be18392a633b7ee6b6597e1650ba257b34";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/ia/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/ia/firefox-116.0.1.tar.bz2";
       locale = "ia";
       arch = "linux-x86_64";
-      sha256 = "e7a2f9139228a529318040fe18084364c2610d5335e659ddc19cb48f4d2f223a";
+      sha256 = "26be8b5d7c00f43f7634e592718a7ea6a8cb6ff5696618e9b238352221fe02a5";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/id/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/id/firefox-116.0.1.tar.bz2";
       locale = "id";
       arch = "linux-x86_64";
-      sha256 = "644e111edad13668c1c541bfaec46d4319a58420eb0d8f528a8247e39b859544";
+      sha256 = "eae0059b82fa8db871b02d274c99e3a5bfddc9b77db82f775af185491d66b233";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/is/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/is/firefox-116.0.1.tar.bz2";
       locale = "is";
       arch = "linux-x86_64";
-      sha256 = "11360ca9d9eae06323d9e73173791700cb981689d0bff68bf4095be709f110c2";
+      sha256 = "a6da8f8ff190716856aa2d26a2393ffcb0a414a7f6e3a5edcf435522515bafa9";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/it/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/it/firefox-116.0.1.tar.bz2";
       locale = "it";
       arch = "linux-x86_64";
-      sha256 = "c3afeee0d1edad4e80a377893ee9ca8c1f9c10d9c3b4db490e8dec29d0da5fe9";
+      sha256 = "260848ea966a0aca751e49492358008e8d64919816422a7717e2a690105331f9";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/ja/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/ja/firefox-116.0.1.tar.bz2";
       locale = "ja";
       arch = "linux-x86_64";
-      sha256 = "4389b9eed95c22df1b3914184458d76daf5648ea681081412b4207864aaaae89";
+      sha256 = "283afb780aa229d897ec6d7fb75c2084c65fe76f961b7fc882e615970a469501";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/ka/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/ka/firefox-116.0.1.tar.bz2";
       locale = "ka";
       arch = "linux-x86_64";
-      sha256 = "d0cea36119a3840f9870ddbff2a6af3faed1826003ec4675cd522f049885d07b";
+      sha256 = "77a4d6a34aa150d86ed6ba774b20f1934ada55d0431fdf8aa9d2adab8d801c37";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/kab/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/kab/firefox-116.0.1.tar.bz2";
       locale = "kab";
       arch = "linux-x86_64";
-      sha256 = "0e62f892ffa423f342dc78af9e2ec950bcf86b4e4a954fa9b73cb39159be48d8";
+      sha256 = "7260a955a24f1b80a4b51f104251f8462ceb294319796e7ae34c420b472e0403";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/kk/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/kk/firefox-116.0.1.tar.bz2";
       locale = "kk";
       arch = "linux-x86_64";
-      sha256 = "2ec97db79fabda5ae1d345aabf494fb398cba1fd45d3198b94f8d48ce972d3da";
+      sha256 = "db336e4712026b5bce90ff0f3e6f3133ca891376cec640c015c31e7e0750cc27";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/km/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/km/firefox-116.0.1.tar.bz2";
       locale = "km";
       arch = "linux-x86_64";
-      sha256 = "0e9192816ecb3f625b77063f5e0abb13a53057dfb91f179fef41d4fbfae42b30";
+      sha256 = "26460c831333a009f059d949a988e0d601cc36d0272e0adfe499184d82469b98";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/kn/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/kn/firefox-116.0.1.tar.bz2";
       locale = "kn";
       arch = "linux-x86_64";
-      sha256 = "d1c08659b7d08d3cbf5c0b3c7be64ea98fbca50c3e222aeed311b15dfa5345f7";
+      sha256 = "7ff13b5430084f0fc884b630e24bb7cf878ef109b94cdef65f3213022d2ac072";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/ko/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/ko/firefox-116.0.1.tar.bz2";
       locale = "ko";
       arch = "linux-x86_64";
-      sha256 = "51f948d0e2547ba1bbede5af396a60731f9170906410db612ed7585b8f0fb309";
+      sha256 = "fc15345ebf492d60a93e99e5f9c17f7d2a402f379a6785c1cbd483b7518459b5";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/lij/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/lij/firefox-116.0.1.tar.bz2";
       locale = "lij";
       arch = "linux-x86_64";
-      sha256 = "e1926c02dfc7004057cc0d8a0ccd7eb7b9f66f330548253a056f515028758479";
+      sha256 = "1b2dc61e93eb00e8d02e30bee999286c4e6d9ba54d929e2127f6f7fe5f5f43f7";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/lt/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/lt/firefox-116.0.1.tar.bz2";
       locale = "lt";
       arch = "linux-x86_64";
-      sha256 = "6b3a0b932816785b0bd996b6242910f7874c9403bbd43780f02df60d6bd03a21";
+      sha256 = "28be529fc15540b25358ef1cb1f2ef05869fab0fe960fa90f05efdf800c17d1b";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/lv/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/lv/firefox-116.0.1.tar.bz2";
       locale = "lv";
       arch = "linux-x86_64";
-      sha256 = "a731bc339e153279bf5440c86b583fca21d2e02431c2194a06824951dae52944";
+      sha256 = "bb1a7a0bc4f482dc2fe87f81137a0e13de0f64ed838132ba58a43730199d8be3";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/mk/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/mk/firefox-116.0.1.tar.bz2";
       locale = "mk";
       arch = "linux-x86_64";
-      sha256 = "667a027b9aec063dee06375420894cd44dd6a6eaeb23c10c0d9dad6541c92507";
+      sha256 = "a71bd3d1350edf681f2e995417916387f17cd4a3d10c27fb476d9d6931835873";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/mr/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/mr/firefox-116.0.1.tar.bz2";
       locale = "mr";
       arch = "linux-x86_64";
-      sha256 = "89c80aec3222608800eea7806365a04b2cc43fc529bc708dc17c805caf21c430";
+      sha256 = "a6e8f88bf8f542330974f95416ec94731c5f33d863e666b882596607d1bb4abc";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/ms/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/ms/firefox-116.0.1.tar.bz2";
       locale = "ms";
       arch = "linux-x86_64";
-      sha256 = "990cfb919ed9939aba6ed558d89598b1a8eea1d74fd56d428d06fefec8909a05";
+      sha256 = "03d34ea605c1c9620adac59e39617f9bd3b624dac176704495db64fd40511aa9";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/my/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/my/firefox-116.0.1.tar.bz2";
       locale = "my";
       arch = "linux-x86_64";
-      sha256 = "294cb3be64d7b43fc8d51d5d97800ea162cd39646da87605afc36a181ffaef6c";
+      sha256 = "a61bb16946623886cad2016333bf86ffed81cae3ba45e526edf68d1d7e3095c1";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/nb-NO/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/nb-NO/firefox-116.0.1.tar.bz2";
       locale = "nb-NO";
       arch = "linux-x86_64";
-      sha256 = "5536ba0a3eeaa80cd54e11b12d44ae6ac7441630a35ab1ead75a0d0a5f6ce8c0";
+      sha256 = "dd730e281d3984173ba94527c862b0729f253017ca83621856d5cc44847baf8d";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/ne-NP/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/ne-NP/firefox-116.0.1.tar.bz2";
       locale = "ne-NP";
       arch = "linux-x86_64";
-      sha256 = "029672dda24ec01565e2b9fb40ffabf803575a4f9328d1fea70517248a928b38";
+      sha256 = "2bf446f858577fa2a2717802cd3fa38b7b54158b6c742dba84107366a856d7ec";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/nl/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/nl/firefox-116.0.1.tar.bz2";
       locale = "nl";
       arch = "linux-x86_64";
-      sha256 = "5e68a5c46646a6aad221ec997bdd1e2ba837ba41010ee7121991def0ed4da22b";
+      sha256 = "054ba147d21781b069db88b8a70b4e39116463c761e421af7ceb3814d00b60a8";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/nn-NO/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/nn-NO/firefox-116.0.1.tar.bz2";
       locale = "nn-NO";
       arch = "linux-x86_64";
-      sha256 = "77284b5caffa342e759e846252fd0598ff7a9fa86f79e0ab7b5f3a647253ef81";
+      sha256 = "85bd7b53fe243f98500b4ce8c356d0edf87e6d45e9ca2e01f8f33253edfb9555";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/oc/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/oc/firefox-116.0.1.tar.bz2";
       locale = "oc";
       arch = "linux-x86_64";
-      sha256 = "dfaacd8319b2f8065b8e1924ad5ec420790c43af243cd1403f969a4ad3e250fb";
+      sha256 = "969ab17b2fb8bdbaca272f795dce3d94cc53d06783b19919471c3452bf0c653a";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/pa-IN/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/pa-IN/firefox-116.0.1.tar.bz2";
       locale = "pa-IN";
       arch = "linux-x86_64";
-      sha256 = "9f0a6eca2dd5a8389416463aff7a61c728389255a93cf928b110c112fc7b73a3";
+      sha256 = "21f48af68f6758aa1bb272da52c14ed8bd99d1108f2338264ddb7ebf6c177a51";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/pl/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/pl/firefox-116.0.1.tar.bz2";
       locale = "pl";
       arch = "linux-x86_64";
-      sha256 = "a3ad36159a690f51d4a75f474d315ecf0be0fc2fc4be07fa579ea9c07f5d7dba";
+      sha256 = "47e1763fe636f899177506ef4423a74ed8667ac1e2bf477b87d8301f74252e50";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/pt-BR/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/pt-BR/firefox-116.0.1.tar.bz2";
       locale = "pt-BR";
       arch = "linux-x86_64";
-      sha256 = "8e9f2ee744da1585af9e2cd95ad7fb8429b8a969c9d73eb5353c4f752566ed17";
+      sha256 = "01cb94b172e66cea9810310246528dca6e0c8c52d4b54e66d468645ade8e46ca";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/pt-PT/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/pt-PT/firefox-116.0.1.tar.bz2";
       locale = "pt-PT";
       arch = "linux-x86_64";
-      sha256 = "a2c7e6ffec70b39d235d172aa6512fb571af2a874d9999f4f5e4551855e418d9";
+      sha256 = "805daceaa0cbbb25d4bcdd44b6efbc877ff7c89fc994225e293cf41475c3bed3";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/rm/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/rm/firefox-116.0.1.tar.bz2";
       locale = "rm";
       arch = "linux-x86_64";
-      sha256 = "394b29f4f35775a6b701cb99960c41024b3379ad22b780e3dff841b8cdaaa4c3";
+      sha256 = "0c48711b06694ef7bf9108952d5f80a7463c4952dbc67426cfa0a58b492aca7f";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/ro/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/ro/firefox-116.0.1.tar.bz2";
       locale = "ro";
       arch = "linux-x86_64";
-      sha256 = "fc7ef54c87bba2c698f62fe4af111b52b3a11368232bf354d41316f950e982ad";
+      sha256 = "7c21cb6cea012c62a0cba5a5d714dbca2ffd20db341797ff7d399488d3c73078";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/ru/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/ru/firefox-116.0.1.tar.bz2";
       locale = "ru";
       arch = "linux-x86_64";
-      sha256 = "6bf8f6870ca514d25eb309dc98f1807f18aba7cba9348d4d4043fdae7ddb2242";
+      sha256 = "bbb64f9e09841ecbf42947cb4635197d0f480ed40a010f1f0434422bf4191496";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/sc/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/sc/firefox-116.0.1.tar.bz2";
       locale = "sc";
       arch = "linux-x86_64";
-      sha256 = "a6892d7ed01d8333491dc3f96309838e02cbb4a4af6e2c46b12f9e1a487ea493";
+      sha256 = "20e69ff3487c1a80cf21cabb774cde1275c0e9716cd207c5dfff31dd04894321";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/sco/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/sco/firefox-116.0.1.tar.bz2";
       locale = "sco";
       arch = "linux-x86_64";
-      sha256 = "8dc34d7b8c42eac485db88f88522d1c900562be0ec504132a77de7a9005dc0da";
+      sha256 = "34698519340f6597ebc42049446d5b1b5a30a35858632a91b570af248d90d232";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/si/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/si/firefox-116.0.1.tar.bz2";
       locale = "si";
       arch = "linux-x86_64";
-      sha256 = "f3d7fb18dc07e1dcb6e15646bd6e878d4ab9d856ce5186b04cff14f990c98316";
+      sha256 = "e8365da757cb052a692be8562960732ff4b82d6de455c45eec4a097bb5197437";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/sk/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/sk/firefox-116.0.1.tar.bz2";
       locale = "sk";
       arch = "linux-x86_64";
-      sha256 = "33be656e28f7fd3f841b8c627e1bb76c2defd8c24456ac8c151b56c2e87bdc4c";
+      sha256 = "b00edd0328369407dc877e4e438a46599baeb7c2bc3ee8720df6185a0a4587bc";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/sl/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/sl/firefox-116.0.1.tar.bz2";
       locale = "sl";
       arch = "linux-x86_64";
-      sha256 = "e6a639a07ba1313df86b304495c9d945335f8a81ff00369f59ea4d393b8f3927";
+      sha256 = "7d7ea3cc05cb227e965962bd34e1ceee5e40ad92b358b0f3288d011524028d6c";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/son/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/son/firefox-116.0.1.tar.bz2";
       locale = "son";
       arch = "linux-x86_64";
-      sha256 = "33c6d2bd9071a4f60112a216e103717140e7eeb98610801977e28dcc442f6375";
+      sha256 = "35418f16358c195b984b0dcf2bbdff28c5b1914440541daf80d36e3e44492355";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/sq/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/sq/firefox-116.0.1.tar.bz2";
       locale = "sq";
       arch = "linux-x86_64";
-      sha256 = "8fc1aba927ac52469172e11f39209775e495e68a381dbaed9c8fc1b6635e77db";
+      sha256 = "f15d7663d16bb07e0eac5ad522786cec2795464cf55fd07cc3b9c8fc964e099e";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/sr/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/sr/firefox-116.0.1.tar.bz2";
       locale = "sr";
       arch = "linux-x86_64";
-      sha256 = "b2ae7b024e374f76879ef265239d184dcc06b35bd858fb3fb3773224bf076dfa";
+      sha256 = "886899bcb7a7c9d3b68a9ae2cecc5c3d75cdde30f9aa20701f4dea173323db23";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/sv-SE/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/sv-SE/firefox-116.0.1.tar.bz2";
       locale = "sv-SE";
       arch = "linux-x86_64";
-      sha256 = "3247e74993817f0f2b9d8e687470bd7fa82a62bd4f74a43ca013f86c6ce1d70f";
+      sha256 = "0529ab13f5650ce2856f6d4da9178501a5073e6daa98f7cdd9d1603111f0639f";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/szl/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/szl/firefox-116.0.1.tar.bz2";
       locale = "szl";
       arch = "linux-x86_64";
-      sha256 = "bfb29ed24ead573e012fc052747aaf441ad7674fa4b76a15d8872d21741cf747";
+      sha256 = "25e23731c68ab719aac6e2672096beff9150b64788bf58a5099353be96542482";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/ta/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/ta/firefox-116.0.1.tar.bz2";
       locale = "ta";
       arch = "linux-x86_64";
-      sha256 = "e5ddde0bfc7e3ba9b1f426f3dfae2994c5dac638be5437219815579dd68771b3";
+      sha256 = "d91cefada2f8522d91634fb6881e78046cce38ae14a582bf31c8baedf8568c2a";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/te/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/te/firefox-116.0.1.tar.bz2";
       locale = "te";
       arch = "linux-x86_64";
-      sha256 = "6168da2cff453f171f6c9e056b1404b0e655dc0755ac89a1d4cbeff6557c2c42";
+      sha256 = "1603d7a2c1705f731fce1ff2c677d1f628d51b110bbc4612d4b5a6816a83a430";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/tg/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/tg/firefox-116.0.1.tar.bz2";
       locale = "tg";
       arch = "linux-x86_64";
-      sha256 = "77a07610b3bf87b4a79ab9947d60ba74c176df62ff531eba6d9a3fc0d7052011";
+      sha256 = "b14a173f0455115a6b397b7fabedf2dd5f179749d48f0568ba22d2e689faf519";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/th/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/th/firefox-116.0.1.tar.bz2";
       locale = "th";
       arch = "linux-x86_64";
-      sha256 = "ff736c6f62aa6c383196640c146a702b27ff97719980da36d28b125236a1c4d3";
+      sha256 = "3bb5893346aa691593168a2727c2c061d13b1e9059b0b1c4a892c2ed98aac30d";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/tl/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/tl/firefox-116.0.1.tar.bz2";
       locale = "tl";
       arch = "linux-x86_64";
-      sha256 = "998641b7fd1667850b79bca0d047389963768a0b0d7b021092cdcbc6c2c64d5c";
+      sha256 = "ebc1bc3c53aa18c92cc20490709d4292f0c91cf389239a7475fbdce40faf4dce";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/tr/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/tr/firefox-116.0.1.tar.bz2";
       locale = "tr";
       arch = "linux-x86_64";
-      sha256 = "40e634567d96de2bd92e2ee29cdab988682a7e3ad6fb6cebe54b4ab437206ce9";
+      sha256 = "8f8c570c0ea68b4192c54de4ff2efb8cd5068002728f05d6b737d5ac0d3d1cae";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/trs/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/trs/firefox-116.0.1.tar.bz2";
       locale = "trs";
       arch = "linux-x86_64";
-      sha256 = "5f53ed35784ed51a1e45cad719c2c132500c15d7351e961ff5e6701bcc78ef1e";
+      sha256 = "c2da4b02be0e9dbdc222fb39d76cd0ccd55821cc188994fe26cfe39350b7fa95";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/uk/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/uk/firefox-116.0.1.tar.bz2";
       locale = "uk";
       arch = "linux-x86_64";
-      sha256 = "1a3948ef2f7b205eb4a46be098ecaf8e36fbe909e292f5f7dc14ecf58b2e949d";
+      sha256 = "35ab47e88983674db1555e16306a1d2e219646d632c6fe24bb5334435e2d2dc3";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/ur/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/ur/firefox-116.0.1.tar.bz2";
       locale = "ur";
       arch = "linux-x86_64";
-      sha256 = "dc144ff4c139f57e5961cc8b224cb3e7e0d977a93471fae9137f17532afa5229";
+      sha256 = "62d543a71cf2884024345f52f087ce34f143b50d5aec33ed2cffe7f8ade45d8b";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/uz/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/uz/firefox-116.0.1.tar.bz2";
       locale = "uz";
       arch = "linux-x86_64";
-      sha256 = "67bad242f01f97a1c593935c150cd4b46e6d91d6f29cf2ab7dc00341828ae7de";
+      sha256 = "d5ff3f0ca259b5251a1a9e509e968e78208898f42501df67a2863636a30864b2";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/vi/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/vi/firefox-116.0.1.tar.bz2";
       locale = "vi";
       arch = "linux-x86_64";
-      sha256 = "7e1522df37328c39941fcf5c005aa86458243747863151557cee090a2fd5b118";
+      sha256 = "24c0c6d27bf3b7ef0b3e7cef0f2d9ca7f2823de6021fcfff7c09e832d1d8732c";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/xh/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/xh/firefox-116.0.1.tar.bz2";
       locale = "xh";
       arch = "linux-x86_64";
-      sha256 = "07727195ac9aaa89bcc81d2225cfde5c01f50957be040a16650987a48ce1f172";
+      sha256 = "ec36453ee1654f40a2091a539267aaf8b6e95f4662554d1103ac0a09c33fb4fa";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/zh-CN/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/zh-CN/firefox-116.0.1.tar.bz2";
       locale = "zh-CN";
       arch = "linux-x86_64";
-      sha256 = "ce7f45abebfc69594836a03ab1caf960b39ed64aefc33090a07f687f613f0d3b";
+      sha256 = "a5701c6600df7479b145c2f936bfb6e473d1a49c7ab6ac5beb598bfee9bdbb16";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-x86_64/zh-TW/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-x86_64/zh-TW/firefox-116.0.1.tar.bz2";
       locale = "zh-TW";
       arch = "linux-x86_64";
-      sha256 = "1c0fe6b916b9953fa929a42f99177e2072fb8085856527d54f84aa7c42f6a088";
+      sha256 = "256871b19476ee62ffd832211193695fa9eaca85661b186c9752542af8359e3c";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/ach/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/ach/firefox-116.0.1.tar.bz2";
       locale = "ach";
       arch = "linux-i686";
-      sha256 = "b126cded350e4a06f34123da79d71687b4299abe829a35d6258bd41b66db9daa";
+      sha256 = "92023348760a1c9d0439ba94bb75c1e582ce87b21dd2cb1e23c8d9e2e150b2b7";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/af/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/af/firefox-116.0.1.tar.bz2";
       locale = "af";
       arch = "linux-i686";
-      sha256 = "dbe582443a9be366833f0c6a325ef0de50ca268d269acc59ddf26fc551d08441";
+      sha256 = "252bcfc60a586bb106c4e82221d9f83db11081f60c48c712e2aad2ba8cafa4e8";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/an/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/an/firefox-116.0.1.tar.bz2";
       locale = "an";
       arch = "linux-i686";
-      sha256 = "bbeea98cbb3059373c37d407bf3b5ae2be39422771a54d98e7cf86e81514d0af";
+      sha256 = "ec23b2086362ce12399ab0fd871b67c43f5f40fe7c31e2b4d1219c25258f157e";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/ar/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/ar/firefox-116.0.1.tar.bz2";
       locale = "ar";
       arch = "linux-i686";
-      sha256 = "73916a69dee407700ef9318c3fcdb41528b7357ed48aa485ad8f2fe3e6744f16";
+      sha256 = "c092daf72428f8e1dc277e15bcf7a479fb32799398d2e3cb6dd550c759c907e9";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/ast/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/ast/firefox-116.0.1.tar.bz2";
       locale = "ast";
       arch = "linux-i686";
-      sha256 = "4b60c751c6fa4bc9c805472ed8106e96fdd0b1cebd34573c8dac5a2002c60be9";
+      sha256 = "939ace277484393cbc16c375da61ff700eeaa01ddfd71ccf5756459db998c4d3";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/az/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/az/firefox-116.0.1.tar.bz2";
       locale = "az";
       arch = "linux-i686";
-      sha256 = "6d29b511b45885d63bf90f460fd2e3477c7256d895f77f4f1a6d8d9dc1615db5";
+      sha256 = "f94617270856508ea0d2606ca685b79efc7aaaa39ecde5320eb1c08cf33b689c";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/be/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/be/firefox-116.0.1.tar.bz2";
       locale = "be";
       arch = "linux-i686";
-      sha256 = "d61ef5e3c54dbab254c2119ab523a20e10fe3fa90ff1d28fb3ca276a70e88573";
+      sha256 = "66a6f821e12e6eb2c24d36ee56b9e1bb1b94c348d2cb0f1ab1bc83dfbf345f42";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/bg/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/bg/firefox-116.0.1.tar.bz2";
       locale = "bg";
       arch = "linux-i686";
-      sha256 = "f9511754b2f225335d6fb11683e6a38557e2d490f86b59bd04992e94f0f5140e";
+      sha256 = "2088cfd68a971f9a67689bdcaa1aceb5d94c80417fef06049d80d4b1ab25d6ae";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/bn/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/bn/firefox-116.0.1.tar.bz2";
       locale = "bn";
       arch = "linux-i686";
-      sha256 = "aaeef05084c67d31edf00bed8c382c02259c2126923fead97a21b54aa1336a6d";
+      sha256 = "c58a47a05ab45b6260dfb3eeb29db05dcf8660bc7fa28bca8782c2afd0da1270";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/br/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/br/firefox-116.0.1.tar.bz2";
       locale = "br";
       arch = "linux-i686";
-      sha256 = "bdf17c9efab7a3abdfc03d7916d9ffb059990528741db9c4fbd8d78a13650de1";
+      sha256 = "51143d91aa6b6c0418df77887f9244c4379b455b17daa531e12093f23ba393ba";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/bs/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/bs/firefox-116.0.1.tar.bz2";
       locale = "bs";
       arch = "linux-i686";
-      sha256 = "3b54b2f8bc8872adef6d831874fb34ab3ccaddd7fc840585847ff7d755879c62";
+      sha256 = "682c628fffef3f08297821f3d7e68a865b03c5543a8baba987cae486d90c19b5";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/ca-valencia/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/ca-valencia/firefox-116.0.1.tar.bz2";
       locale = "ca-valencia";
       arch = "linux-i686";
-      sha256 = "5c77b600a34d4be2c57ac233662e3a1040d25774c07150e2969bca7cbe0ca25a";
+      sha256 = "d0b6b4c37a1a0e2f8d20d5df1557d77c6c511bfabb9dcfdfea797068458d8877";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/ca/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/ca/firefox-116.0.1.tar.bz2";
       locale = "ca";
       arch = "linux-i686";
-      sha256 = "a61d5f4c256301606a5d4ad8e6d78c7199daeb7a176fb8c47565f76179edd82f";
+      sha256 = "f795368c3fbc3fa1b7bba7c68da75b3b44e955465e692aac24c985fec17d08ed";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/cak/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/cak/firefox-116.0.1.tar.bz2";
       locale = "cak";
       arch = "linux-i686";
-      sha256 = "6629ac7c563b28887f4b1a14edda03ffcd692a37add09e087f729027c5d712dc";
+      sha256 = "dfde4263d564a32e0be5117f4acc334c2bc5942777bea2eb0054bf2aff4cafaf";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/cs/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/cs/firefox-116.0.1.tar.bz2";
       locale = "cs";
       arch = "linux-i686";
-      sha256 = "b26584cb0fdb20bf6684682c6d43e2eb1efc7bc693749f7900ecd30161aec46f";
+      sha256 = "e736c7890d5121c3a7de1ea028d98c5c724c180983e067fb5ed26e2c3babaa78";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/cy/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/cy/firefox-116.0.1.tar.bz2";
       locale = "cy";
       arch = "linux-i686";
-      sha256 = "9b2721bcfe203f61a357d4c3ff1ea8985bc198a760132eca9f39089bc39990cc";
+      sha256 = "a8bdeeeff318c57de0fdde654373d29d0150453b50818d0fa3ce9b44ca9461a3";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/da/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/da/firefox-116.0.1.tar.bz2";
       locale = "da";
       arch = "linux-i686";
-      sha256 = "d17a776bf76ee1ab867deac9d26d60f3f6c3fabba627c971202f858ea505750d";
+      sha256 = "2472f720cd9c730bdbb270db86698e6a0dd78a8704e927100bef366352cce642";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/de/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/de/firefox-116.0.1.tar.bz2";
       locale = "de";
       arch = "linux-i686";
-      sha256 = "161d86b84c03193f946e68b961220c5861861695002b8c25b84e82aba22f639b";
+      sha256 = "4e5905654341672dec63846355e2a109c535d8d3bc98cc60d4755a2cb78c2cc1";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/dsb/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/dsb/firefox-116.0.1.tar.bz2";
       locale = "dsb";
       arch = "linux-i686";
-      sha256 = "662c7dc86f45a743f70225d0b6bf80e360ef25df9ab41f474a1cea6f8cbfc604";
+      sha256 = "8737983d0fbe47bbbe8531d01b9cea9cb8c147a07c6ecbf7c7e9d6d0986a6b2e";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/el/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/el/firefox-116.0.1.tar.bz2";
       locale = "el";
       arch = "linux-i686";
-      sha256 = "ee047283cc8ff68b60c83941681ee5fb8a0497ae9e75f23ddca8616c57bfd103";
+      sha256 = "fad05343d0aeab40cadde6c1770e24476357ecfb5104761b7dcf40b7103e4290";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/en-CA/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/en-CA/firefox-116.0.1.tar.bz2";
       locale = "en-CA";
       arch = "linux-i686";
-      sha256 = "38cbac9b43901fe44b073a6bb0444dad49ad673e3d8a23f345f68171295c3fa0";
+      sha256 = "ffbf378f11406fff2323bb65ff54930b377e0560720a9cc577e239700ca810fc";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/en-GB/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/en-GB/firefox-116.0.1.tar.bz2";
       locale = "en-GB";
       arch = "linux-i686";
-      sha256 = "74f6951f343f33a92ec69b21281d53ad2c6943eb1c4a2cecd48c97dad68af3df";
+      sha256 = "10a952bd735e91b1a7dfbb7e42043e9c30e57f612c205b6df4329a5b76a82bd2";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/en-US/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/en-US/firefox-116.0.1.tar.bz2";
       locale = "en-US";
       arch = "linux-i686";
-      sha256 = "3d97e23cd7ef89cc3a393a4e0d4cfe4d76658557465ba8dba7be4671cd874257";
+      sha256 = "d31ad996ea8f81cf3e2036ba07cf33f00380b32a1b0d984fe1abf49caf38cf13";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/eo/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/eo/firefox-116.0.1.tar.bz2";
       locale = "eo";
       arch = "linux-i686";
-      sha256 = "e0aa9118c2bf4a375b0ee7fd4dba620a07aa21c93d555f02c5fa35ba8a906791";
+      sha256 = "97a415f65afb8a22f2d5f0c21d3d0a9e1e9c808a7b5af44e1db3035eb995acd7";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/es-AR/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/es-AR/firefox-116.0.1.tar.bz2";
       locale = "es-AR";
       arch = "linux-i686";
-      sha256 = "5bdd8cfd4f6b06c89a9530206b39c9c3896ed20ed16f2340f92d874f0f4c8c08";
+      sha256 = "1c23cf3b5f21590bb472d783e65856da8fd24b9ebb715c84cef8641eab33746d";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/es-CL/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/es-CL/firefox-116.0.1.tar.bz2";
       locale = "es-CL";
       arch = "linux-i686";
-      sha256 = "793f2c9b733849c567c6ca920230ab2b6f54c8913def829267007d0fd371ae72";
+      sha256 = "e2697894098b1ae96893519cee5565ba8d060e3fc71c591c34f8ac6404f18627";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/es-ES/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/es-ES/firefox-116.0.1.tar.bz2";
       locale = "es-ES";
       arch = "linux-i686";
-      sha256 = "f314606efbb5874dc04e721a231649d7f2257abed6f6f3fcf50829817de3b5f5";
+      sha256 = "639bc7f0e813490710adfc616aa03f1a3cca069c72c40045c0356893f70dd4dc";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/es-MX/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/es-MX/firefox-116.0.1.tar.bz2";
       locale = "es-MX";
       arch = "linux-i686";
-      sha256 = "31eb01a4982db142789a19d6adeac1f056c214158d3bb2e420c7754bb8776b07";
+      sha256 = "caf7f0298b63c057292b1fef868649d6dbf99b537a1aa3c08e79df2fa6790b74";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/et/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/et/firefox-116.0.1.tar.bz2";
       locale = "et";
       arch = "linux-i686";
-      sha256 = "d799f76e43522ce3c9ec79603d5b8a33dfdcfcbc06b414f40aeee244ed62a7c9";
+      sha256 = "12d12b5ee5140798a5a12b1cd2c41de03d6f80b9ce053fd3b52364edc987ba3a";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/eu/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/eu/firefox-116.0.1.tar.bz2";
       locale = "eu";
       arch = "linux-i686";
-      sha256 = "9be4f2530108385b58e92bfd44c122c0c5a16653715051d2b71bdcd9f06b0778";
+      sha256 = "b8564d5e70f71284d0cfea26b148466eb851f52f5876d91572bcef96f042efda";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/fa/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/fa/firefox-116.0.1.tar.bz2";
       locale = "fa";
       arch = "linux-i686";
-      sha256 = "2f508958c449f4ee51ae95b223f1dda10ae51395e4c84663e39ccc19de2afe44";
+      sha256 = "71723e2b4372542998a1f79fe353135916939f5413f75ea27cc30c0878deb827";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/ff/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/ff/firefox-116.0.1.tar.bz2";
       locale = "ff";
       arch = "linux-i686";
-      sha256 = "72cf4196294f0e94b81b9c0634dd91987cc671c81dca12a4156caef4a73da7b6";
+      sha256 = "28969f9cfd248dcca0b0ddbb4c5f26d5dc289b1134547f084069d936533706e8";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/fi/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/fi/firefox-116.0.1.tar.bz2";
       locale = "fi";
       arch = "linux-i686";
-      sha256 = "0289e419019d1091ca2d60cb34babc24ac6ddc374b6d8c6d48c7301cc6aa0abe";
+      sha256 = "e44ac07d56c8ffca155ae10885911c6a9ba3984f05852583d7e6a38cb2d69cd5";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/fr/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/fr/firefox-116.0.1.tar.bz2";
       locale = "fr";
       arch = "linux-i686";
-      sha256 = "242c01c05c7206ed60126b07b1d98f6e93af0cf43386e9db5d40bd22578f3bbf";
+      sha256 = "557b57183f33ff6987f732e0d4142ce96bd853e7bed7bc5995645181ba8530ad";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/fur/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/fur/firefox-116.0.1.tar.bz2";
       locale = "fur";
       arch = "linux-i686";
-      sha256 = "731dc68715afad1c2dbd4dd5b6d9dcc3f15203411548f3e96de0f5280dd77607";
+      sha256 = "913e8be74cd0f62559f3ce87bf5a702666f2e060764807aa6e1340835999431d";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/fy-NL/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/fy-NL/firefox-116.0.1.tar.bz2";
       locale = "fy-NL";
       arch = "linux-i686";
-      sha256 = "fafdb4742dc844a66ee269b5fe4745a7069764d33772932001ef724b013c4392";
+      sha256 = "e68654810922b9b59f31c32ba6ed1024630b0b00a333aa0bf52f5b804f25ab5b";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/ga-IE/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/ga-IE/firefox-116.0.1.tar.bz2";
       locale = "ga-IE";
       arch = "linux-i686";
-      sha256 = "f875d5c148f98498a2866a35384632b3f56f7af589ca66f5a0264fbb06e9428c";
+      sha256 = "a2cc6f15196cefada522557c678eb98dcfefbf0dfde64ff94205f9a394183520";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/gd/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/gd/firefox-116.0.1.tar.bz2";
       locale = "gd";
       arch = "linux-i686";
-      sha256 = "11c3bbcfd0e6f442b4c78846aa637412bb55b927b08f59837ec8f2bb97bc5b32";
+      sha256 = "8d8e507fca3d0b5ce255e0985ec0419dadf472dcc8780d9da02cea6aa2abee9c";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/gl/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/gl/firefox-116.0.1.tar.bz2";
       locale = "gl";
       arch = "linux-i686";
-      sha256 = "ea40980858d2ed594a98f6565ad89b129bc2c4d46e2149172bb0f51df659d4da";
+      sha256 = "f51125c3e1ce30d513ee39d1f07e1d541c31c2ca7748e3e26d89c63d78868b66";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/gn/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/gn/firefox-116.0.1.tar.bz2";
       locale = "gn";
       arch = "linux-i686";
-      sha256 = "0dd9fb270d3e95bc28bb1bca82272869570ec958927b049d717e9c5a9a9a193f";
+      sha256 = "3595c4255e65a935db1a081883f14609c23264b5a5ca50464c1dd22a13638226";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/gu-IN/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/gu-IN/firefox-116.0.1.tar.bz2";
       locale = "gu-IN";
       arch = "linux-i686";
-      sha256 = "f532fd824fd6bf0d7622e36a6ba39b546579c2afac764bedb4e919be4589c486";
+      sha256 = "26bd04ad79946d93cd955437695f4d49807031612e00286fab750397bc861eea";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/he/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/he/firefox-116.0.1.tar.bz2";
       locale = "he";
       arch = "linux-i686";
-      sha256 = "898a7f44222aa6771c11bd23c6f23b7b001ad299a4b665a4c82b1fdd08275b5a";
+      sha256 = "c0d9e5053d3837c58b2776133d1f12685f66d7f0be6491ecae89f7d905607575";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/hi-IN/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/hi-IN/firefox-116.0.1.tar.bz2";
       locale = "hi-IN";
       arch = "linux-i686";
-      sha256 = "2557dfda455bd0b9ca2a2ed27886e2786450fc4afddc7139e74204e677881569";
+      sha256 = "148f948730f037fdbe1aaadb0382f13925c5e630bef32a72362485c9b9341ee6";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/hr/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/hr/firefox-116.0.1.tar.bz2";
       locale = "hr";
       arch = "linux-i686";
-      sha256 = "41202b179ec34e20b29ae9fb592881c9514242f73d2826751da04a876d48fb88";
+      sha256 = "737a69e9d37c4b6e7e7dc8225368280a99f98d3bba0a1b08d7ecd2635d4859d7";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/hsb/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/hsb/firefox-116.0.1.tar.bz2";
       locale = "hsb";
       arch = "linux-i686";
-      sha256 = "9ddd5b992c2b85105fb507fbc85d9b9003b23bff4e1533c4a964d1ac682eb91b";
+      sha256 = "95c11e6b8376492ad20a17761dddee87f60c31dc3fba229ccee56173d5af8623";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/hu/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/hu/firefox-116.0.1.tar.bz2";
       locale = "hu";
       arch = "linux-i686";
-      sha256 = "3003ec7f6aea0ac381ffaafbdcda53b66153e62651c1f33123162a78a567de42";
+      sha256 = "a20049fb87b2146e7da687619785708952723dc065706e15bec769c4b61a1248";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/hy-AM/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/hy-AM/firefox-116.0.1.tar.bz2";
       locale = "hy-AM";
       arch = "linux-i686";
-      sha256 = "1df38bc677895c3040ee8f9a6a0ffa4bafd5d513a7a731452223c2cf08ecbd63";
+      sha256 = "01ef318c74958a9db3c5decc15af5370453b45afeaa438197186fb77898cb6ed";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/ia/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/ia/firefox-116.0.1.tar.bz2";
       locale = "ia";
       arch = "linux-i686";
-      sha256 = "03a3f41f74f4c0a72cec369de157b70427d5739daae1662cfe2c99fba586b4aa";
+      sha256 = "724fc71599771d72c84520610b40790551180f08b7bf4fe39ba50529aebfcfef";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/id/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/id/firefox-116.0.1.tar.bz2";
       locale = "id";
       arch = "linux-i686";
-      sha256 = "3c467edcb2bb7351e2ab95c7c4abbd1cb488cd99e3277bfe4b68d4f9d71d7832";
+      sha256 = "9e724539a13bd031731a110161473aa2cc3cc5f4a9a4c9f283aa3a7e69fdd535";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/is/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/is/firefox-116.0.1.tar.bz2";
       locale = "is";
       arch = "linux-i686";
-      sha256 = "7c831648d0c9d702876ad9de4c470d64d23650c7cd822dd94656dfe098f62a50";
+      sha256 = "4c4666dfe725988115a3b347a2a62cd9cdd7fd5d47e597e490060b4806382d6a";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/it/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/it/firefox-116.0.1.tar.bz2";
       locale = "it";
       arch = "linux-i686";
-      sha256 = "aacfc7503696f4f028bdef91720c67b2b35fef4422172bfdda745db076f102bb";
+      sha256 = "696651df261f7f55fe75503448cbefd146b4b68037dc4aaaf756719c56c872fc";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/ja/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/ja/firefox-116.0.1.tar.bz2";
       locale = "ja";
       arch = "linux-i686";
-      sha256 = "72bbbf9c77817648b88ce65702f3c399a80c62fed4bd54ad4a97676015a1b06b";
+      sha256 = "b640b2ea820d32d6bb4a5678d76d17cd2cc37739dc3628cc24050bc59fab16e0";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/ka/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/ka/firefox-116.0.1.tar.bz2";
       locale = "ka";
       arch = "linux-i686";
-      sha256 = "61c93af6cc729cf4cea2a62cdf379b22903fb9876fb7f6357c4aff084d6bb9c7";
+      sha256 = "d7d213254e66e8b68587e8bdf99e69661d16e6135deb0d0ade6d252dd12bc344";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/kab/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/kab/firefox-116.0.1.tar.bz2";
       locale = "kab";
       arch = "linux-i686";
-      sha256 = "43df4b9ddd7e7e58cd2de8bcf0e612dc489c0e172667a6b2d1931d7e4341eb4d";
+      sha256 = "3a7616b9b29fc1aab3da1e105bb8bf98a296b7708e0adcef7c9aba13849bced6";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/kk/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/kk/firefox-116.0.1.tar.bz2";
       locale = "kk";
       arch = "linux-i686";
-      sha256 = "47898f9fe1b17a424733cc5eec1cb48a1b2de198d3c272f2aed8be05342ee74c";
+      sha256 = "8017504a264267106dff4fe9248424e9b51a8b94743cb9bb0ba82348a8090378";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/km/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/km/firefox-116.0.1.tar.bz2";
       locale = "km";
       arch = "linux-i686";
-      sha256 = "9f21abc634e60797e5869dbbc3a3f0efab58de05a8a7e51748d7d879361b1b49";
+      sha256 = "5340cff98b6e19c2be2bf201edfa355655c320947e2d202ca55afa348d7525a5";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/kn/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/kn/firefox-116.0.1.tar.bz2";
       locale = "kn";
       arch = "linux-i686";
-      sha256 = "16e038a5d4941da4627d843435abd3e6e5478a6f69dc041de8e3a35657c82b24";
+      sha256 = "a7e422f94ec932b32f671fd0d133d265fad25d6a35df2ecc0adeea4e3ac894ef";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/ko/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/ko/firefox-116.0.1.tar.bz2";
       locale = "ko";
       arch = "linux-i686";
-      sha256 = "9d77cb5d87ce74e63b71946662be2f22dfbd348750eb6034309fc8a651957cbb";
+      sha256 = "cb2bd7deb9699b25872323c93ba31771c038aad0448d9603359729544d89db26";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/lij/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/lij/firefox-116.0.1.tar.bz2";
       locale = "lij";
       arch = "linux-i686";
-      sha256 = "d13c0cb9b389e97d295dd8584ccb9097eb3d8dd36a0bf2413a99ae2ba21574c9";
+      sha256 = "27f23e3dfa4dc04a5718f0c1f6e5c67c9b6f14403f2bd67380e4f35da92be5c5";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/lt/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/lt/firefox-116.0.1.tar.bz2";
       locale = "lt";
       arch = "linux-i686";
-      sha256 = "941977d136f650c43ba1abd7a91ef4e2a30ecba312b32c2be15a70bb29e88f72";
+      sha256 = "cda3840361cb2c948ab90f1d301c83c15eeb243a36f2b6dab78c191aa5d13764";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/lv/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/lv/firefox-116.0.1.tar.bz2";
       locale = "lv";
       arch = "linux-i686";
-      sha256 = "8b6c66e6c407094b2e9734c4d5c68c913e0c765938537f1a7380d2d2686d6a72";
+      sha256 = "02551f640e7db183d46fb61eb805a4c29d0efe9cf39c9d1c6b96b7189d95fa44";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/mk/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/mk/firefox-116.0.1.tar.bz2";
       locale = "mk";
       arch = "linux-i686";
-      sha256 = "a415aad48d4bb948d908f29675865b0aea98f0382871f98f2e021d290ea41383";
+      sha256 = "6ef3718ee0763265150697b82136d44fca99d929683c54aa03d26532801def71";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/mr/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/mr/firefox-116.0.1.tar.bz2";
       locale = "mr";
       arch = "linux-i686";
-      sha256 = "217527cd028640dd698289c0363bd9e54731925de83480320b62e34fdbf6fc6d";
+      sha256 = "8969e05a67b588f0cc2cabe4732c2497089fdd7cf5a5038beedadded3b50e7ad";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/ms/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/ms/firefox-116.0.1.tar.bz2";
       locale = "ms";
       arch = "linux-i686";
-      sha256 = "ed1c8e9d1a7f5e9d1cdfa64dfd5308fbcf659ee873e11f1011ffe7ad68eb68ff";
+      sha256 = "dc49eb6902deba7551fb2a1c9144fdb450df2c335d6ffb0af4a58d1d80518dc2";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/my/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/my/firefox-116.0.1.tar.bz2";
       locale = "my";
       arch = "linux-i686";
-      sha256 = "b8ffef2f300ef5b3c4d579d18a1432aa2ff827dcd77bf1c0af2fc51428cf109d";
+      sha256 = "4be6bf9b9c96537b99ebb2e7f9bcc5aaf0c26da713b8747d1ec3d52ed8f72526";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/nb-NO/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/nb-NO/firefox-116.0.1.tar.bz2";
       locale = "nb-NO";
       arch = "linux-i686";
-      sha256 = "5b2275d6bc84e0d5d44d8d1225d25a548712e39398b2d95d2b61235798b4d3a0";
+      sha256 = "67a647574ecab1f94a53a2e61b28e63cbf3d7fbb795b99dcd83b778923ed1ed4";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/ne-NP/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/ne-NP/firefox-116.0.1.tar.bz2";
       locale = "ne-NP";
       arch = "linux-i686";
-      sha256 = "ce93aaa6181af54c9187861145947b157a7073f5f85300de5cc815dcda91ca23";
+      sha256 = "ea86f672512ce01905749aad77e8691d7a5fa0691fc675a2119693d71a5f1e64";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/nl/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/nl/firefox-116.0.1.tar.bz2";
       locale = "nl";
       arch = "linux-i686";
-      sha256 = "44fb66a3951c4d2d2185cac2bae68de9f8c33fbf51b755efb8eb8e65c8244e8d";
+      sha256 = "67a2dd04e2e9860a81b0933c7574abaa4066f95021da858c76e9b6575b5c6ab3";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/nn-NO/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/nn-NO/firefox-116.0.1.tar.bz2";
       locale = "nn-NO";
       arch = "linux-i686";
-      sha256 = "1f193335190eb2ec6197ebf40026e687f6572c49371dd9ad8f7c3ac5b4d044dd";
+      sha256 = "636c85bf3aaee859441d884b2c66ad48b94fac4d9dcf5529e5bb57668b2e29c9";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/oc/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/oc/firefox-116.0.1.tar.bz2";
       locale = "oc";
       arch = "linux-i686";
-      sha256 = "af449593909a84a0bf75e3bbca2d5764e791f34d4e0e155b8163d02e95bdbe61";
+      sha256 = "6062a4f341e538fab912b520986c93bdae3092ff9e96aad77558b4709a3ccec6";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/pa-IN/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/pa-IN/firefox-116.0.1.tar.bz2";
       locale = "pa-IN";
       arch = "linux-i686";
-      sha256 = "e0b6a81f200ab2481e0ee6b1a2c711e2494956ae0a1e48746f91a71e3948c521";
+      sha256 = "475f7e10ec5f3ef1514c2d3cfb082aa77e42f89ff492d6c14d8ba8abcc60c231";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/pl/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/pl/firefox-116.0.1.tar.bz2";
       locale = "pl";
       arch = "linux-i686";
-      sha256 = "fd7c475d0a9b1bd5d02fa2ac25c3a05805f69fdcbf583a09ab1c62a3f3c91ca4";
+      sha256 = "a4a96a0e2840786fef7614e7ace031303fe4e71545ed4d239adec0eeca0a56c3";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/pt-BR/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/pt-BR/firefox-116.0.1.tar.bz2";
       locale = "pt-BR";
       arch = "linux-i686";
-      sha256 = "552449ab9b20abb2bcaaf91d0bb1e20b2bc9fe87b4b0aea7a91b4204adae8a96";
+      sha256 = "c8a0d2e142c681cfaf33ff246da8f9c3a9ddd0c9d60f2eac3b14acf216846096";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/pt-PT/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/pt-PT/firefox-116.0.1.tar.bz2";
       locale = "pt-PT";
       arch = "linux-i686";
-      sha256 = "bfdc36e8c4e88fc059cb60745dfd362f722fea9f7f36ce8c9ae59c098a0001b5";
+      sha256 = "fb6fea09eca832cf0efc6eeb86e8f60f3a32b96a2b584d5fbf553e5118cccaaf";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/rm/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/rm/firefox-116.0.1.tar.bz2";
       locale = "rm";
       arch = "linux-i686";
-      sha256 = "23bf9dcf37362d0fed86ad66c549c7fb316173248d9d21b2305d7ad74e65bf34";
+      sha256 = "123cc0c59ce690b5c73c25a6f0539c1c8d1d49ecadae4f819ef726cce6dbe1fa";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/ro/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/ro/firefox-116.0.1.tar.bz2";
       locale = "ro";
       arch = "linux-i686";
-      sha256 = "c3d5de62719dc8a730cc14c46af8d595aff72660ec053c5b982d7d245db2f235";
+      sha256 = "893faee16f10cc40c1e9d9409bc546f831ba730d8d2408b93a5d04a5c8d06383";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/ru/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/ru/firefox-116.0.1.tar.bz2";
       locale = "ru";
       arch = "linux-i686";
-      sha256 = "5a9e4c850f9bb93d2f97004590f4da1ded42031f3212413ce5a419491e5a421e";
+      sha256 = "31c5d811aa75366f61a02eb7c7dda58a21bc01b24b5710f4b9956f29dd681614";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/sc/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/sc/firefox-116.0.1.tar.bz2";
       locale = "sc";
       arch = "linux-i686";
-      sha256 = "c2ebc9d0d3c7364de45ced4960a0a019a649a7591cc87fad570e38426c7660c1";
+      sha256 = "6442d1258736bf33b406deec4d9ff532ed04116a4fb1b279e85e567978e93d19";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/sco/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/sco/firefox-116.0.1.tar.bz2";
       locale = "sco";
       arch = "linux-i686";
-      sha256 = "90cdf54c7c693cf50f47224dc6a91502bbcf7a613e9faea18d3a0b0a1a55a836";
+      sha256 = "759f3396564e416dee46f76d777f3e0ee63712e0b036ed5a64b32ed9f89f124b";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/si/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/si/firefox-116.0.1.tar.bz2";
       locale = "si";
       arch = "linux-i686";
-      sha256 = "fe27c606dbd5cf843d449b23107811c1cc900d93926502d152804476559fc061";
+      sha256 = "175e6d82c54662b1416399ebe306408cdd19a92a246eb805d079bd8596a75da1";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/sk/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/sk/firefox-116.0.1.tar.bz2";
       locale = "sk";
       arch = "linux-i686";
-      sha256 = "70241a490bda80acda364de47ed926307e2bd79b183fdec0c7288168b5f35da4";
+      sha256 = "27ca1cb2cb12204afe074fe9ed944410ca4e97489523d5f0188d415a6f6354f6";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/sl/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/sl/firefox-116.0.1.tar.bz2";
       locale = "sl";
       arch = "linux-i686";
-      sha256 = "3d5e2c53238f9c97ee3f6f7a57ea2fcb4c6b24d872ef5af7c88b5df1a974c68a";
+      sha256 = "119f8d105de80c69e4d4e0d92c3f65a619c1ec7db772b6a43c17deb4cf5e41ee";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/son/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/son/firefox-116.0.1.tar.bz2";
       locale = "son";
       arch = "linux-i686";
-      sha256 = "ee6449b80616c9fc2650ed47a9474de9f0cf9857973a82945f07c8f053548ce4";
+      sha256 = "1e48070e9fd142c96eba73a3a3ef8b628f0305d21d665c7b6c369f73500218df";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/sq/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/sq/firefox-116.0.1.tar.bz2";
       locale = "sq";
       arch = "linux-i686";
-      sha256 = "9304539492ce794f84f1d95f693c10235c0b87ed412d4dc22a307190fb68c212";
+      sha256 = "ff80a9b052eda021cd08fbdb2dadd8840816f888c5e1451c7a1a86bd4685375f";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/sr/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/sr/firefox-116.0.1.tar.bz2";
       locale = "sr";
       arch = "linux-i686";
-      sha256 = "2be7297624ef34ac0942c1af82701817691457de0ebac4354d2df649d4d69baa";
+      sha256 = "24b4d8bdf8204c4d41b31b2bbc3f85aa054e5f4eb9f1990260743b68e8a60811";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/sv-SE/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/sv-SE/firefox-116.0.1.tar.bz2";
       locale = "sv-SE";
       arch = "linux-i686";
-      sha256 = "42a9372113e8ff5edb79f52868dd5fb0ff0f6810a1764c143020ddc4e5885530";
+      sha256 = "f0ff8ac63919216e4d72004aa5388b1056c496e212eaff64de862a174d89e62c";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/szl/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/szl/firefox-116.0.1.tar.bz2";
       locale = "szl";
       arch = "linux-i686";
-      sha256 = "f699ec97ef95958cfc65191a95b3296618e39eedec9078e8ca28a1a4618ea4d9";
+      sha256 = "6d2f69624c73a0cb76ddf5a37f10aefcacd0bfe7d06ae79cdc2d51f9897737a9";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/ta/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/ta/firefox-116.0.1.tar.bz2";
       locale = "ta";
       arch = "linux-i686";
-      sha256 = "eeb24dd7277660b0903124eb59e14fb69a3fa04f5d9030908de27bba137ff4a3";
+      sha256 = "2d0a6237ff9e6660f3f441fc414569c3df3fbe77c716fa2a548410e69f26825b";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/te/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/te/firefox-116.0.1.tar.bz2";
       locale = "te";
       arch = "linux-i686";
-      sha256 = "627a55d9a260edbd71b0753b5dd878a8018e377e26a7825b035fe1d1e041f152";
+      sha256 = "46c9632291557db4a4af386afbd75d30ba90bfe517ae1cbf4174eaae8958a2a3";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/tg/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/tg/firefox-116.0.1.tar.bz2";
       locale = "tg";
       arch = "linux-i686";
-      sha256 = "51036c3e0107e401db38830171b02ed38b490341426baa9b648689d3108a0e7a";
+      sha256 = "2b6a13662da37c60bf22c0becc9fde3f621be3280fac5019d45c278ff5962900";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/th/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/th/firefox-116.0.1.tar.bz2";
       locale = "th";
       arch = "linux-i686";
-      sha256 = "07f248626ba69c176c28d0b3cd8412d02590db4bad799b4eed6f89551b46bb50";
+      sha256 = "3bfc36919ad7a9b6103195a40f15d93c9293079a1a44880162a4cce218c5bfe6";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/tl/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/tl/firefox-116.0.1.tar.bz2";
       locale = "tl";
       arch = "linux-i686";
-      sha256 = "eae41e5cf45449ad4aa639869ad0ec7c5abe8aab6030bd3c914e19cf37c22904";
+      sha256 = "232a9667c31b3b6214c7efaf2593401efbb1a005917aef6e70d26d7d1011bd44";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/tr/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/tr/firefox-116.0.1.tar.bz2";
       locale = "tr";
       arch = "linux-i686";
-      sha256 = "0c3527d182e5033d7767400ac85fc97d1f13f3c858ca6302ef167158338fb0c9";
+      sha256 = "7560d7e375d2961b9ab479cc207f42d9ff83d4e219b3db10c83c2009a37529cf";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/trs/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/trs/firefox-116.0.1.tar.bz2";
       locale = "trs";
       arch = "linux-i686";
-      sha256 = "7c4cec572dabdceae08dde4f23dbe13d8fad56b32672219ce2e7cf2e04336b2f";
+      sha256 = "c2942ddcae7e5105dd7ea6ad9040459f359fb7efd832923099c2ef5f0e18d98b";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/uk/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/uk/firefox-116.0.1.tar.bz2";
       locale = "uk";
       arch = "linux-i686";
-      sha256 = "430c38e381d3dc120716cba77b561ef0707adc8547159719c285b216a0573770";
+      sha256 = "ddf674ff165e0fab71ea57b0a6ae0a1e8af31a2083ad1e61185d75f4567fdd34";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/ur/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/ur/firefox-116.0.1.tar.bz2";
       locale = "ur";
       arch = "linux-i686";
-      sha256 = "796f802b79e4a69581d2eedc0936e7921a8cd307c816075cd59db7b3b52b899c";
+      sha256 = "775586a3feb1b72dd09dc3cad673f6c5245acca267b53b115bb47752040564f2";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/uz/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/uz/firefox-116.0.1.tar.bz2";
       locale = "uz";
       arch = "linux-i686";
-      sha256 = "772260d25afca78633c06cbc931b4356d2dcb0528a95665aae533a9bc3c55833";
+      sha256 = "81be14a16eafa14b3fe25ac0c9e8ef61b65f0026cb8f95a72fdc785905e433a3";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/vi/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/vi/firefox-116.0.1.tar.bz2";
       locale = "vi";
       arch = "linux-i686";
-      sha256 = "5fd11545971f8aae762fb372a25f4b30d21f84acbeab1086d75f5696d96b10bf";
+      sha256 = "c5bbd9c5f73d38a60ace527a7ffc813bc5228672ebb9467458b853857511b8c8";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/xh/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/xh/firefox-116.0.1.tar.bz2";
       locale = "xh";
       arch = "linux-i686";
-      sha256 = "24fc569b9519e902cc570af9f74ff532a680cebc8abd1c151d8f8165c681dc92";
+      sha256 = "33920d34c6702861f3e04d45a4ec899ffa81d03bb4ed01434a3612684a7ed479";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/zh-CN/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/zh-CN/firefox-116.0.1.tar.bz2";
       locale = "zh-CN";
       arch = "linux-i686";
-      sha256 = "f0e7fcbf14e0a9f5281a5bdcc4f9fe82708b6211b09f1db22f036e770f0de713";
+      sha256 = "61f62369d57fd63a1db6743717d76d75d6f61c74688ffbd8c2fc04343606a3b3";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0/linux-i686/zh-TW/firefox-116.0.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/116.0.1/linux-i686/zh-TW/firefox-116.0.1.tar.bz2";
       locale = "zh-TW";
       arch = "linux-i686";
-      sha256 = "931c833b5cffc510b96eeeb356ad8599e0478d2b2b485dd553c4b6656bce23ab";
+      sha256 = "a5dc2305a95d58587ae9afb2a26770b663d078995fafabaf54e502fdd276dc8a";
     }
     ];
 }
diff --git a/pkgs/applications/networking/browsers/firefox/packages.nix b/pkgs/applications/networking/browsers/firefox/packages.nix
index 7b839cdfcb27..0229cc053a03 100644
--- a/pkgs/applications/networking/browsers/firefox/packages.nix
+++ b/pkgs/applications/networking/browsers/firefox/packages.nix
@@ -3,10 +3,10 @@
 {
   firefox = buildMozillaMach rec {
     pname = "firefox";
-    version = "116.0";
+    version = "116.0.1";
     src = fetchurl {
       url = "mirror://mozilla/firefox/releases/${version}/source/firefox-${version}.source.tar.xz";
-      sha512 = "4370c65a99bf8796524aca11ea8e99fa4f875176a5805ad49f35ae149080eb54be42e7eae84627e87e17b88b262649e48f3b30b317170ac7c208960200d1005d";
+      sha512 = "2f67a129ec3bcb47d66cbf29ab23c1c29bfbe752a4703cb0d95f4f3e5a48044901bb79fea94e35f8a9d4dfbfa71aa6721b2988770c1dc33b4412b993bb88da09";
     };
 
     meta = {
diff --git a/pkgs/applications/networking/cluster/terraform-providers/providers.json b/pkgs/applications/networking/cluster/terraform-providers/providers.json
index d2744906bdfa..189e62a95c94 100644
--- a/pkgs/applications/networking/cluster/terraform-providers/providers.json
+++ b/pkgs/applications/networking/cluster/terraform-providers/providers.json
@@ -1,10 +1,10 @@
 {
   "aci": {
-    "hash": "sha256-iHWb9dytaXs7ywkxi5aPetBV1YSgYC1rTMn9+EXl42U=",
+    "hash": "sha256-rJ4xiBLrwhYkVPFDo6vZkk+w3v07EuK5a2gn1cbEA6Q=",
     "homepage": "https://registry.terraform.io/providers/CiscoDevNet/aci",
     "owner": "CiscoDevNet",
     "repo": "terraform-provider-aci",
-    "rev": "v2.10.0",
+    "rev": "v2.10.1",
     "spdx": "MPL-2.0",
     "vendorHash": null
   },
@@ -146,11 +146,11 @@
     "vendorHash": null
   },
   "baiducloud": {
-    "hash": "sha256-4Lo4Y6KJiHl1M7GdEITS7Q/IBYJpPo9lZ1jbJ0w3sMw=",
+    "hash": "sha256-n+Rk2J7ZqQ93GQSvdLfnjKW2R3v7+iWj+P6EZQ5QxhA=",
     "homepage": "https://registry.terraform.io/providers/baidubce/baiducloud",
     "owner": "baidubce",
     "repo": "terraform-provider-baiducloud",
-    "rev": "v1.19.9",
+    "rev": "v1.19.10",
     "spdx": "MPL-2.0",
     "vendorHash": null
   },
@@ -182,11 +182,11 @@
     "vendorHash": "sha256-/dOiXO2aPkuZaFiwv/6AXJdIADgx8T7eOwvJfBBoqg8="
   },
   "buildkite": {
-    "hash": "sha256-3rGuE47CYbl1B+DAYUBiuGTC1sn85c5aeay+irdhTe0=",
+    "hash": "sha256-GRFthxNKWcdOdFL6gnI7Y3ehSzqt8ijzBe4eyRy0KcM=",
     "homepage": "https://registry.terraform.io/providers/buildkite/buildkite",
     "owner": "buildkite",
     "repo": "terraform-provider-buildkite",
-    "rev": "v0.22.0",
+    "rev": "v0.23.0",
     "spdx": "MIT",
     "vendorHash": "sha256-oVXrSI+DU6NgmVIPcS4He4mHVrkA2tMxFUpxMnv0bu4="
   },
@@ -390,11 +390,11 @@
     "vendorHash": "sha256-E1gzdES/YVxQq2J47E2zosvud2C/ViBeQ8+RfNHMBAg="
   },
   "fastly": {
-    "hash": "sha256-Fp2wj5UTl00ufDKobsIvf4f6SCug7NTuWFf2Rkp3RL0=",
+    "hash": "sha256-90mVwC90lkvNRvyt5aKBE3h0XZTVXvWVVG6qIP+4pOk=",
     "homepage": "https://registry.terraform.io/providers/fastly/fastly",
     "owner": "fastly",
     "repo": "terraform-provider-fastly",
-    "rev": "v5.2.2",
+    "rev": "v5.3.0",
     "spdx": "MPL-2.0",
     "vendorHash": null
   },
@@ -745,22 +745,22 @@
     "vendorHash": "sha256-QxbZv6YMa5/I4bTeQBNdmG3EKtLEmstnH7HMiZzFJrI="
   },
   "minio": {
-    "hash": "sha256-BsOSImEMgxjldAQ014M25Y/JuxxaJLRdOOOHNAtm/Bg=",
+    "hash": "sha256-skwM0rqhsqQaut0Vuh5Baf8bWzsLOFCjUDk9w2mgB1E=",
     "homepage": "https://registry.terraform.io/providers/aminueza/minio",
     "owner": "aminueza",
     "repo": "terraform-provider-minio",
-    "rev": "v1.17.1",
+    "rev": "v1.17.2",
     "spdx": "Apache-2.0",
-    "vendorHash": "sha256-Pr5YNDMVNccjQRC5WXUY+0pMTMbuxKqkqtd/Z/z0cXc="
+    "vendorHash": "sha256-4axdVO1VujG9qXtuNJHQqhANjciHIACMjuneqCj2omc="
   },
   "mongodbatlas": {
-    "hash": "sha256-lNWGGDGr0dp+4S1mnRnLl0n//5GtOqqSH4mWQxvzXEQ=",
+    "hash": "sha256-xFVCYeEcdQ/w+s99Ykd10liASIDJaA/eTfnMGT2hybU=",
     "homepage": "https://registry.terraform.io/providers/mongodb/mongodbatlas",
     "owner": "mongodb",
     "repo": "terraform-provider-mongodbatlas",
-    "rev": "v1.10.2",
+    "rev": "v1.11.0",
     "spdx": "MPL-2.0",
-    "vendorHash": "sha256-o8VrabFScEQyjfk4BLJGxq7LgZMWaQZ2cNAph37Grzo="
+    "vendorHash": "sha256-Ae3y/lwIYFi6p5gCBVgo1GuCu218JB3zKljexETWu0s="
   },
   "namecheap": {
     "hash": "sha256-cms8YUL+SjTeYyIOQibksi8ZHEBYq2JlgTEpOO1uMZE=",
@@ -1106,20 +1106,20 @@
     "vendorHash": "sha256-6UxBnQiogcizff5Rv4eadOeiG5JaXQphUWlfnqELvAI="
   },
   "talos": {
-    "hash": "sha256-bYDFtng6kASmBtQN+iewVOh6HPD57GDUuusiQSVfuBs=",
+    "hash": "sha256-OGpbql9jtiaaHazyBavh1NK5cBA+2tfxZvOJV+yy2wE=",
     "homepage": "https://registry.terraform.io/providers/siderolabs/talos",
     "owner": "siderolabs",
     "repo": "terraform-provider-talos",
-    "rev": "v0.2.0",
+    "rev": "v0.2.1",
     "spdx": "MPL-2.0",
-    "vendorHash": "sha256-GNSKSlaFBj2P+z40U+0uwPSOuQBy+9vOVFfPe8p0A24="
+    "vendorHash": "sha256-32ENfzBep97Wn0FvMIEuqxIAmxjTtw2UvDvYJTmJJNc="
   },
   "tencentcloud": {
-    "hash": "sha256-Pk+x9/acer3YWBEMZYZWar8oDTFLPc0QydgAHrJZBNI=",
+    "hash": "sha256-RipntxK8i/uyTolf6Z8DJDkNYMsEYcdDpDQfNnGORxQ=",
     "homepage": "https://registry.terraform.io/providers/tencentcloudstack/tencentcloud",
     "owner": "tencentcloudstack",
     "repo": "terraform-provider-tencentcloud",
-    "rev": "v1.81.18",
+    "rev": "v1.81.19",
     "spdx": "MPL-2.0",
     "vendorHash": null
   },
@@ -1261,11 +1261,11 @@
     "vendorHash": null
   },
   "wavefront": {
-    "hash": "sha256-DF9Q1cwzzLlF8+oJFF5HkOD0lfQhxsnIepl/fMCljcs=",
+    "hash": "sha256-ag4mu9CyG78X47QGMTQTK7+VsdCv0TBOCovVnM4OMsw=",
     "homepage": "https://registry.terraform.io/providers/vmware/wavefront",
     "owner": "vmware",
     "repo": "terraform-provider-wavefront",
-    "rev": "v4.2.0",
+    "rev": "v5.0.0",
     "spdx": "MPL-2.0",
     "vendorHash": "sha256-77pijBYzCQoaZgMRNRwZEAJVM51EMGezXXcrfn9ae1Q="
   },
diff --git a/pkgs/applications/networking/cluster/timoni/default.nix b/pkgs/applications/networking/cluster/timoni/default.nix
index 573e2cd78e4a..c0616c6ea395 100644
--- a/pkgs/applications/networking/cluster/timoni/default.nix
+++ b/pkgs/applications/networking/cluster/timoni/default.nix
@@ -6,16 +6,16 @@
 
 buildGoModule rec {
   pname = "timoni";
-  version = "0.11.0";
+  version = "0.11.1";
 
   src = fetchFromGitHub {
     owner = "stefanprodan";
     repo = "timoni";
     rev = "v${version}";
-    hash = "sha256-1l+PEG3ptlWmM48v9K7Rm090WF8cv+e2ezYFN2JRK/o=";
+    hash = "sha256-o5s/3c6fi6aYzKIBKq23U6FtzueDN0WVsG/wdCMEjDU=";
   };
 
-  vendorHash = "sha256-Mgo6Q3P8Piv5uLgyXDGpRI4CgbZn1DUcM7XhVZxl8EE=";
+  vendorHash = "sha256-rMLswgEWWaDupBHDXs/JATaaw4n5D+LjlM72eq8hPAM=";
 
   subPackages = [ "cmd/timoni" ];
   nativeBuildInputs = [ installShellFiles ];
diff --git a/pkgs/applications/science/molecular-dynamics/gromacs/default.nix b/pkgs/applications/science/molecular-dynamics/gromacs/default.nix
index aa24fa6a5d38..f6301ff6fce6 100644
--- a/pkgs/applications/science/molecular-dynamics/gromacs/default.nix
+++ b/pkgs/applications/science/molecular-dynamics/gromacs/default.nix
@@ -72,7 +72,7 @@ in stdenv.mkDerivation rec {
 
   meta = with lib; {
     homepage = "https://www.gromacs.org";
-    license = licenses.gpl2;
+    license = licenses.lgpl21Plus;
     description = "Molecular dynamics software package";
     longDescription = ''
       GROMACS is a versatile package to perform molecular dynamics,
@@ -91,7 +91,7 @@ in stdenv.mkDerivation rec {
       reference or manual for details), but there are also quite a
       few features that make it stand out from the competition.
 
-      See: https://www.gromacs.org/About_Gromacs for details.
+      See: https://www.gromacs.org/about.html for details.
     '';
     platforms = platforms.unix;
     maintainers = with maintainers; [ sheepforce markuskowa ];
diff --git a/pkgs/applications/terminal-emulators/foot/default.nix b/pkgs/applications/terminal-emulators/foot/default.nix
index c2d817b4d576..507270874113 100644
--- a/pkgs/applications/terminal-emulators/foot/default.nix
+++ b/pkgs/applications/terminal-emulators/foot/default.nix
@@ -219,5 +219,6 @@ stdenv.mkDerivation rec {
     # TERMINFO to a store path, but allows installing foot.terminfo
     # on remote systems for proper foot terminfo support.
     priority = (ncurses.meta.priority or 5) + 3 + 1;
+    mainProgram = "foot";
   };
 }
diff --git a/pkgs/applications/video/kooha/default.nix b/pkgs/applications/video/kooha/default.nix
index b1652da73c04..bda712cac113 100644
--- a/pkgs/applications/video/kooha/default.nix
+++ b/pkgs/applications/video/kooha/default.nix
@@ -73,5 +73,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Only;
     platforms = platforms.linux;
     maintainers = with maintainers; [ austinbutler ];
+    mainProgram = "kooha";
   };
 }
diff --git a/pkgs/applications/window-managers/hyprwm/hyprpaper/default.nix b/pkgs/applications/window-managers/hyprwm/hyprpaper/default.nix
index 11b03bdb3041..f329c0ea7fbd 100644
--- a/pkgs/applications/window-managers/hyprwm/hyprpaper/default.nix
+++ b/pkgs/applications/window-managers/hyprwm/hyprpaper/default.nix
@@ -60,5 +60,6 @@ stdenv.mkDerivation (finalAttrs: {
     maintainers = with maintainers; [ wozeparrot fufexan ];
     inherit (wayland.meta) platforms;
     broken = stdenv.isDarwin;
+    mainProgram = "hyprpaper";
   };
 })
diff --git a/pkgs/applications/window-managers/sway/default.nix b/pkgs/applications/window-managers/sway/default.nix
index f8efab159c28..6e11d842fe92 100644
--- a/pkgs/applications/window-managers/sway/default.nix
+++ b/pkgs/applications/window-managers/sway/default.nix
@@ -96,5 +96,6 @@ stdenv.mkDerivation (finalAttrs: {
     license     = licenses.mit;
     platforms   = platforms.linux;
     maintainers = with maintainers; [ primeos synthetica ];
+    mainProgram = "sway";
   };
 })
diff --git a/pkgs/development/libraries/ctranslate2/default.nix b/pkgs/development/libraries/ctranslate2/default.nix
index e512321c5051..a4ebfb5c3de1 100644
--- a/pkgs/development/libraries/ctranslate2/default.nix
+++ b/pkgs/development/libraries/ctranslate2/default.nix
@@ -17,13 +17,13 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "ctranslate2";
-  version = "3.17.1";
+  version = "3.18.0";
 
   src = fetchFromGitHub {
     owner = "OpenNMT";
     repo = "CTranslate2";
     rev = "v${version}";
-    hash = "sha256-aSYE8+vhCsgZf1gBqJFRK8cn91AxrRutJc3LzHQQHVc=";
+    hash = "sha256-ipCUiCyWubKTUB0jDOsRN+DSg3S84hbj8Xum/2NsrKc=";
     fetchSubmodules = true;
   };
 
diff --git a/pkgs/development/node-packages/aliases.nix b/pkgs/development/node-packages/aliases.nix
index 437865eb70e1..ef2f132a2f2f 100644
--- a/pkgs/development/node-packages/aliases.nix
+++ b/pkgs/development/node-packages/aliases.nix
@@ -43,12 +43,18 @@ mapAliases {
   "@githubnext/github-copilot-cli" = pkgs.github-copilot-cli; # Added 2023-05-02
   "@google/clasp" = pkgs.google-clasp; # Added 2023-05-07
   "@nestjs/cli" = pkgs.nest-cli; # Added 2023-05-06
+  antennas = pkgs.antennas; # added 2023-07-30
+  balanceofsatoshis = pkgs.balanceofsatoshis; # added 2023-07-31
   bibtex-tidy = pkgs.bibtex-tidy; # added 2023-07-30
   bitwarden-cli = pkgs.bitwarden-cli; # added 2023-07-25
+  castnow = pkgs.castnow; # added 2023-07-30
   eslint_d = pkgs.eslint_d; # Added 2023-05-26
   flood = pkgs.flood; # Added 2023-07-25
   gtop = pkgs.gtop; # added 2023-07-31
+  hueadm = pkgs.hueadm; # added 2023-07-31
+  karma = pkgs.karma-runner; # added 2023-07-29
   manta = pkgs.node-manta; # Added 2023-05-06
+  markdownlint-cli = pkgs.markdownlint-cli; # added 2023-07-29
   readability-cli = pkgs.readability-cli; # Added 2023-06-12
   reveal-md = pkgs.reveal-md; # added 2023-07-31
   thelounge = pkgs.thelounge; # Added 2023-05-22
diff --git a/pkgs/development/node-packages/main-programs.nix b/pkgs/development/node-packages/main-programs.nix
index 494a69e8a3c2..a406e28b45a9 100644
--- a/pkgs/development/node-packages/main-programs.nix
+++ b/pkgs/development/node-packages/main-programs.nix
@@ -30,7 +30,6 @@
   "@webassemblyjs/wasm-text-gen-1.11.1" = "wasmgen";
   "@webassemblyjs/wast-refmt-1.11.1" = "wast-refmt";
   aws-cdk = "cdk";
-  balanceofsatoshis = "bos";
   carbon-now-cli = "carbon-now";
   cdk8s-cli = "cdk8s";
   cdktf-cli = "cdktf";
@@ -57,13 +56,13 @@
   less = "lessc";
   localtunnel = "lt";
   lua-fmt = "luafmt";
-  markdownlint-cli = "markdownlint";
   near-cli = "near";
   neovim = "neovim-node-host";
   parcel-bundler = "parcel";
   parsoid = "parse.js";
   poor-mans-t-sql-formatter-cli = "sqlformat";
   postcss-cli = "postcss";
+  prettier = "prettier";
   purescript-psa = "psa";
   react-native-cli = "react-native";
   react-tools = "jsx";
@@ -71,6 +70,7 @@
   s3http = "s3http.js";
   svelte-language-server = "svelteserver";
   teck-programmer = "teck-firmware-upgrade";
+  typescript-language-server = "typescript-language-server";
   uglify-js = "uglifyjs";
   undollar = "$";
   vsc-leetcode-cli = "leetcode";
diff --git a/pkgs/development/node-packages/node-packages.json b/pkgs/development/node-packages/node-packages.json
index dd1fadae5603..16bde703ebba 100644
--- a/pkgs/development/node-packages/node-packages.json
+++ b/pkgs/development/node-packages/node-packages.json
@@ -29,7 +29,6 @@
 , {"@webassemblyjs/wast-refmt": "1.11.1"}
 , "alex"
 , "alloy"
-, "antennas"
 , "asar"
 , "audiosprite"
 , "autoprefixer"
@@ -37,14 +36,12 @@
 , "aws-azure-login"
 , "aws-cdk"
 , "awesome-lint"
-, "balanceofsatoshis"
 , "bash-language-server"
 , "bower"
 , "bower2nix"
 , "browserify"
 , "browser-sync"
 , "btc-rpc-explorer"
-, "castnow"
 , "carbon-now-cli"
 , "carto"
 , "cdk8s-cli"
@@ -171,7 +168,6 @@
 , "hsd"
 , "hs-airdrop"
 , "hs-client"
-, "hueadm"
 , "hyperpotamus"
 , "ijavascript"
 , "inliner"
@@ -196,7 +192,6 @@
 , "jsonplaceholder"
 , "kaput-cli"
 , "katex"
-, "karma"
 , "keyoxide"
 , "lcov-result-merger"
 , "leetcode-cli"
@@ -211,7 +206,6 @@
 , "lua-fmt"
 , "lv_font_conv"
 , "madoko"
-, "markdownlint-cli"
 , "markdownlint-cli2"
 , "markdown-link-check"
 , {"markdown-preview-nvim": "../../applications/editors/vim/plugins/markdown-preview-nvim"}
diff --git a/pkgs/development/node-packages/node-packages.nix b/pkgs/development/node-packages/node-packages.nix
index b2893f98e679..d5bb9cd33b46 100644
--- a/pkgs/development/node-packages/node-packages.nix
+++ b/pkgs/development/node-packages/node-packages.nix
@@ -91210,200 +91210,6 @@ in
     bypassCache = true;
     reconstructLock = true;
   };
-  antennas = nodeEnv.buildNodePackage {
-    name = "antennas";
-    packageName = "antennas";
-    version = "4.2.0";
-    src = fetchurl {
-      url = "https://registry.npmjs.org/antennas/-/antennas-4.2.0.tgz";
-      sha512 = "jnGXyVBWZ2X6Fd//dEWmcrcjzt60sFSEN+sJniDNvOMkBJ+NyoNmS1hVxG4LLfK/vZ/tOCXqniw8yq9b/QaC+w==";
-    };
-    dependencies = [
-      sources."accepts-1.3.8"
-      sources."ajv-6.12.6"
-      sources."ansi-regex-5.0.1"
-      sources."ansi-styles-3.2.1"
-      sources."any-promise-1.3.0"
-      sources."argparse-1.0.10"
-      sources."asn1-0.2.6"
-      sources."assert-plus-1.0.0"
-      sources."async-2.6.4"
-      sources."asynckit-0.4.0"
-      sources."aws-sign2-0.7.0"
-      sources."aws4-1.12.0"
-      sources."axios-0.24.0"
-      sources."axios-digest-0.3.0"
-      sources."bcrypt-pbkdf-1.0.2"
-      sources."bluebird-3.7.2"
-      sources."bytes-3.1.2"
-      sources."cache-content-type-1.0.1"
-      sources."caseless-0.12.0"
-      sources."chalk-2.4.2"
-      sources."cliui-8.0.1"
-      sources."co-4.6.0"
-      sources."color-convert-1.9.3"
-      sources."color-name-1.1.3"
-      sources."combined-stream-1.0.8"
-      sources."content-disposition-0.5.4"
-      sources."content-type-1.0.5"
-      sources."cookies-0.8.0"
-      sources."core-util-is-1.0.2"
-      sources."dashdash-1.14.1"
-      sources."debug-4.3.4"
-      sources."deep-equal-1.0.1"
-      sources."delayed-stream-1.0.0"
-      sources."delegates-1.0.0"
-      sources."depd-2.0.0"
-      sources."destroy-1.2.0"
-      sources."ecc-jsbn-0.1.2"
-      sources."ee-first-1.1.1"
-      sources."emoji-regex-8.0.0"
-      sources."encodeurl-1.0.2"
-      sources."escalade-3.1.1"
-      sources."escape-html-1.0.3"
-      sources."escape-string-regexp-1.0.5"
-      sources."esprima-4.0.1"
-      sources."extend-3.0.2"
-      sources."extsprintf-1.3.0"
-      sources."fast-deep-equal-3.1.3"
-      sources."fast-json-stable-stringify-2.1.0"
-      sources."follow-redirects-1.15.2"
-      sources."forever-agent-0.6.1"
-      sources."form-data-2.3.3"
-      sources."fresh-0.5.2"
-      sources."get-caller-file-2.0.5"
-      sources."getpass-0.1.7"
-      sources."har-schema-2.0.0"
-      sources."har-validator-5.1.5"
-      sources."has-flag-3.0.0"
-      sources."has-symbols-1.0.3"
-      sources."has-tostringtag-1.0.0"
-      sources."http-assert-1.5.0"
-      (sources."http-errors-1.8.1" // {
-        dependencies = [
-          sources."depd-1.1.2"
-        ];
-      })
-      sources."http-signature-1.2.0"
-      sources."humanize-number-0.0.2"
-      sources."inherits-2.0.4"
-      sources."ip-1.1.8"
-      sources."is-fullwidth-code-point-3.0.0"
-      sources."is-generator-function-1.0.10"
-      sources."is-typedarray-1.0.0"
-      sources."isarray-0.0.1"
-      sources."isstream-0.1.2"
-      sources."js-md5-0.7.3"
-      sources."js-sha256-0.9.0"
-      sources."js-sha512-0.8.0"
-      sources."js-yaml-3.14.1"
-      sources."jsbn-0.1.1"
-      sources."json-schema-0.4.0"
-      sources."json-schema-traverse-0.4.1"
-      sources."json-stringify-safe-5.0.1"
-      sources."jsprim-1.4.2"
-      sources."keygrip-1.1.0"
-      sources."koa-2.14.2"
-      sources."koa-compose-4.2.0"
-      sources."koa-convert-2.0.0"
-      sources."koa-logger-3.2.1"
-      sources."koa-request-1.0.0"
-      (sources."koa-router-7.4.0" // {
-        dependencies = [
-          sources."debug-3.2.7"
-          sources."koa-compose-3.2.1"
-        ];
-      })
-      (sources."koa-send-4.1.3" // {
-        dependencies = [
-          sources."debug-2.6.9"
-          sources."ms-2.0.0"
-        ];
-      })
-      (sources."koa-static-4.0.3" // {
-        dependencies = [
-          sources."debug-3.2.7"
-        ];
-      })
-      sources."lodash-4.17.21"
-      sources."media-typer-0.3.0"
-      sources."methods-1.1.2"
-      sources."mime-db-1.52.0"
-      sources."mime-types-2.1.35"
-      sources."ms-2.1.2"
-      sources."mz-2.7.0"
-      sources."negotiator-0.6.3"
-      (sources."node-ssdp-3.3.0" // {
-        dependencies = [
-          sources."debug-3.2.7"
-        ];
-      })
-      sources."oauth-sign-0.9.0"
-      sources."object-assign-4.1.1"
-      sources."on-finished-2.4.1"
-      sources."only-0.0.2"
-      sources."parseurl-1.3.3"
-      sources."passthrough-counter-1.0.0"
-      sources."path-is-absolute-1.0.1"
-      sources."path-to-regexp-1.8.0"
-      sources."performance-now-2.1.0"
-      sources."psl-1.9.0"
-      sources."punycode-2.3.0"
-      sources."qs-6.5.3"
-      sources."request-2.88.2"
-      sources."require-directory-2.1.1"
-      (sources."resolve-path-1.4.0" // {
-        dependencies = [
-          sources."depd-1.1.2"
-          sources."http-errors-1.6.3"
-          sources."inherits-2.0.3"
-          sources."setprototypeof-1.1.0"
-        ];
-      })
-      sources."safe-buffer-5.2.1"
-      sources."safer-buffer-2.1.2"
-      sources."setprototypeof-1.2.0"
-      sources."sprintf-js-1.0.3"
-      sources."sshpk-1.17.0"
-      sources."statuses-1.5.0"
-      sources."string-width-4.2.3"
-      sources."strip-ansi-6.0.1"
-      sources."supports-color-5.5.0"
-      sources."thenify-3.3.1"
-      sources."thenify-all-1.6.0"
-      sources."toidentifier-1.0.1"
-      sources."tough-cookie-2.5.0"
-      sources."tsscmp-1.0.6"
-      sources."tunnel-agent-0.6.0"
-      sources."tweetnacl-0.14.5"
-      sources."type-is-1.6.18"
-      sources."uri-js-4.4.1"
-      sources."urijs-1.19.11"
-      sources."uuid-3.4.0"
-      sources."vary-1.1.2"
-      sources."verror-1.10.0"
-      (sources."wrap-ansi-7.0.0" // {
-        dependencies = [
-          sources."ansi-styles-4.3.0"
-          sources."color-convert-2.0.1"
-          sources."color-name-1.1.4"
-        ];
-      })
-      sources."y18n-5.0.8"
-      sources."yargs-17.7.2"
-      sources."yargs-parser-21.1.1"
-      sources."ylru-1.3.2"
-    ];
-    buildInputs = globalBuildInputs;
-    meta = {
-      description = "HDHomeRun emulator for Plex DVR to connect to Tvheadend.";
-      homepage = "https://github.com/jfarseneau/antennas#readme";
-      license = "MIT";
-    };
-    production = true;
-    bypassCache = true;
-    reconstructLock = true;
-  };
   asar = nodeEnv.buildNodePackage {
     name = "asar";
     packageName = "asar";
@@ -92242,745 +92048,6 @@ in
     bypassCache = true;
     reconstructLock = true;
   };
-  balanceofsatoshis = nodeEnv.buildNodePackage {
-    name = "balanceofsatoshis";
-    packageName = "balanceofsatoshis";
-    version = "15.8.15";
-    src = fetchurl {
-      url = "https://registry.npmjs.org/balanceofsatoshis/-/balanceofsatoshis-15.8.15.tgz";
-      sha512 = "qrmkze/jcPAU9uj7cuxPpPC0DY7pjbZwHTiQuegUyDhfCnpjY1Y06DHh7MxHROsa7Ah/m8bOkbFmG4/a1+f93A==";
-    };
-    dependencies = [
-      sources."@alexbosworth/blockchain-1.5.0"
-      (sources."@alexbosworth/caporal-1.4.4" // {
-        dependencies = [
-          sources."colorette-1.4.0"
-        ];
-      })
-      sources."@alexbosworth/cli-table3-0.6.1"
-      sources."@alexbosworth/fiat-2.0.0"
-      sources."@alexbosworth/html2unicode-1.1.5"
-      sources."@alexbosworth/node-fetch-2.6.2"
-      (sources."@alexbosworth/prettyjson-1.2.2" // {
-        dependencies = [
-          sources."colors-1.1.2"
-        ];
-      })
-      (sources."@alexbosworth/saxophone-0.6.2" // {
-        dependencies = [
-          sources."readable-stream-3.6.0"
-          sources."safe-buffer-5.2.1"
-          sources."string_decoder-1.3.0"
-        ];
-      })
-      sources."@colors/colors-1.5.0"
-      sources."@dabh/diagnostics-2.0.3"
-      sources."@grammyjs/types-3.1.2"
-      sources."@grpc/grpc-js-1.8.17"
-      sources."@grpc/proto-loader-0.7.7"
-      sources."@handsontable/formulajs-2.0.2"
-      sources."@json2csv/formatters-7.0.1"
-      sources."@json2csv/plainjs-7.0.1"
-      sources."@mitmaro/errors-1.0.0"
-      sources."@mitmaro/http-authorization-header-1.0.0"
-      sources."@noble/hashes-1.3.1"
-      sources."@protobufjs/aspromise-1.1.2"
-      sources."@protobufjs/base64-1.1.2"
-      sources."@protobufjs/codegen-2.0.4"
-      sources."@protobufjs/eventemitter-1.1.0"
-      sources."@protobufjs/fetch-1.1.0"
-      sources."@protobufjs/float-1.0.2"
-      sources."@protobufjs/inquire-1.1.0"
-      sources."@protobufjs/path-1.1.2"
-      sources."@protobufjs/pool-1.1.0"
-      sources."@protobufjs/utf8-1.1.0"
-      sources."@streamparser/json-0.0.15"
-      sources."@types/body-parser-1.19.2"
-      sources."@types/caseless-0.12.2"
-      sources."@types/connect-3.4.35"
-      sources."@types/express-4.17.17"
-      sources."@types/express-serve-static-core-4.17.35"
-      sources."@types/http-errors-2.0.1"
-      sources."@types/long-4.0.2"
-      sources."@types/mime-1.3.2"
-      sources."@types/node-20.4.5"
-      sources."@types/qs-6.9.7"
-      sources."@types/range-parser-1.2.4"
-      sources."@types/request-2.48.8"
-      sources."@types/send-0.17.1"
-      sources."@types/serve-static-1.15.2"
-      sources."@types/tough-cookie-4.0.2"
-      sources."@types/triple-beam-1.3.2"
-      sources."@types/ws-8.5.5"
-      sources."abort-controller-3.0.0"
-      sources."accepts-1.3.8"
-      (sources."agent-base-7.1.0" // {
-        dependencies = [
-          sources."debug-4.3.4"
-          sources."ms-2.1.2"
-        ];
-      })
-      sources."ajv-8.12.0"
-      sources."ansi-0.3.1"
-      sources."ansi-escapes-1.4.0"
-      sources."ansi-regex-5.0.1"
-      sources."ansi-styles-2.2.1"
-      sources."are-we-there-yet-1.1.7"
-      sources."array-flatten-1.1.1"
-      sources."asciichart-1.5.25"
-      sources."astral-regex-2.0.0"
-      sources."async-3.2.4"
-      sources."asyncjs-util-1.2.12"
-      sources."asynckit-0.4.0"
-      sources."base-x-4.0.0"
-      sources."base64-js-1.5.1"
-      sources."basic-auth-2.0.1"
-      sources."bech32-2.0.0"
-      sources."bessel-1.0.2"
-      sources."bip174-2.1.0"
-      sources."bip65-1.0.3"
-      sources."bip66-1.1.5"
-      sources."bip68-1.0.4"
-      sources."bitcoin-ops-1.4.1"
-      sources."bitcoinjs-lib-6.1.3"
-      (sources."bl-4.1.0" // {
-        dependencies = [
-          sources."readable-stream-3.6.2"
-        ];
-      })
-      sources."bluebird-3.7.2"
-      sources."bn.js-5.2.1"
-      sources."body-parser-1.20.2"
-      sources."bolt01-2.0.0"
-      sources."bolt03-1.3.1"
-      sources."bolt07-1.8.4"
-      sources."bolt09-1.0.0"
-      sources."bs58-5.0.0"
-      sources."bs58check-3.0.1"
-      sources."buffer-5.7.1"
-      sources."buffer-from-1.1.2"
-      sources."bufferutil-4.0.7"
-      sources."bytes-3.1.2"
-      sources."call-bind-1.0.2"
-      sources."cbor-9.0.0"
-      (sources."chalk-1.1.3" // {
-        dependencies = [
-          sources."ansi-regex-2.1.1"
-          sources."strip-ansi-3.0.1"
-        ];
-      })
-      sources."chardet-0.7.0"
-      sources."cipher-base-1.0.4"
-      sources."cli-cursor-1.0.2"
-      sources."cli-spinners-2.9.0"
-      sources."cli-width-2.2.1"
-      sources."cliui-8.0.1"
-      sources."clone-1.0.4"
-      sources."code-point-at-1.1.0"
-      sources."color-3.2.1"
-      sources."color-convert-1.9.3"
-      sources."color-name-1.1.3"
-      sources."color-string-1.9.1"
-      sources."colorette-2.0.20"
-      sources."colors-1.4.0"
-      sources."colorspace-1.1.4"
-      sources."combined-stream-1.0.8"
-      sources."concat-stream-1.6.2"
-      (sources."content-disposition-0.5.4" // {
-        dependencies = [
-          sources."safe-buffer-5.2.1"
-        ];
-      })
-      sources."content-type-1.0.5"
-      sources."cookie-0.5.0"
-      sources."cookie-signature-1.0.6"
-      sources."core-util-is-1.0.3"
-      sources."cors-2.8.5"
-      sources."create-hash-1.2.0"
-      sources."crypto-js-4.1.1"
-      sources."csv-parse-5.4.0"
-      sources."debug-2.6.9"
-      sources."defaults-1.0.4"
-      sources."define-property-1.0.0"
-      sources."delayed-stream-1.0.0"
-      sources."delegates-1.0.0"
-      sources."depd-2.0.0"
-      sources."destroy-1.2.0"
-      sources."ecpair-2.1.0"
-      sources."ee-first-1.1.1"
-      sources."emoji-regex-8.0.0"
-      sources."enabled-2.0.0"
-      sources."encodeurl-1.0.2"
-      (sources."encoding-0.1.13" // {
-        dependencies = [
-          sources."iconv-lite-0.6.3"
-        ];
-      })
-      sources."escalade-3.1.1"
-      sources."escape-html-1.0.3"
-      sources."escape-string-regexp-1.0.5"
-      sources."etag-1.8.1"
-      sources."event-target-shim-5.0.1"
-      sources."exit-hook-1.1.1"
-      (sources."express-4.18.2" // {
-        dependencies = [
-          sources."body-parser-1.20.1"
-          sources."raw-body-2.5.1"
-          sources."safe-buffer-5.2.1"
-        ];
-      })
-      sources."extend-3.0.2"
-      sources."external-editor-1.1.1"
-      sources."fast-deep-equal-3.1.3"
-      sources."fast-levenshtein-2.0.6"
-      sources."fecha-4.2.3"
-      sources."figures-1.7.0"
-      sources."finalhandler-1.2.0"
-      sources."fn.name-1.1.0"
-      sources."form-data-2.5.1"
-      sources."forwarded-0.2.0"
-      sources."fresh-0.5.2"
-      sources."function-bind-1.1.1"
-      sources."gauge-1.2.7"
-      sources."get-caller-file-2.0.5"
-      sources."get-intrinsic-1.2.1"
-      (sources."goldengate-13.0.2" // {
-        dependencies = [
-          sources."ln-service-56.8.0"
-        ];
-      })
-      (sources."grammy-1.17.2" // {
-        dependencies = [
-          sources."debug-4.3.4"
-          sources."ms-2.1.2"
-        ];
-      })
-      sources."has-1.0.3"
-      (sources."has-ansi-2.0.0" // {
-        dependencies = [
-          sources."ansi-regex-2.1.1"
-        ];
-      })
-      sources."has-flag-4.0.0"
-      sources."has-proto-1.0.1"
-      sources."has-symbols-1.0.3"
-      sources."has-unicode-2.0.1"
-      (sources."hash-base-3.1.0" // {
-        dependencies = [
-          sources."readable-stream-3.6.2"
-          sources."safe-buffer-5.2.1"
-        ];
-      })
-      sources."hot-formula-parser-4.0.0"
-      sources."http-errors-2.0.0"
-      sources."iconv-lite-0.4.24"
-      sources."ieee754-1.2.1"
-      sources."import-lazy-4.0.0"
-      sources."inherits-2.0.4"
-      sources."ini-4.1.1"
-      (sources."inquirer-9.2.8" // {
-        dependencies = [
-          sources."ansi-escapes-4.3.2"
-          sources."ansi-styles-4.3.0"
-          sources."chalk-5.3.0"
-          sources."cli-cursor-3.1.0"
-          sources."cli-width-4.0.0"
-          sources."color-convert-2.0.1"
-          sources."color-name-1.1.4"
-          sources."escape-string-regexp-5.0.0"
-          sources."external-editor-3.1.0"
-          sources."figures-5.0.0"
-          sources."mute-stream-1.0.0"
-          sources."onetime-5.1.2"
-          sources."restore-cursor-3.1.0"
-          sources."run-async-3.0.0"
-          sources."tmp-0.0.33"
-          sources."type-fest-0.21.3"
-          sources."wrap-ansi-6.2.0"
-        ];
-      })
-      (sources."invoices-3.0.0" // {
-        dependencies = [
-          sources."tiny-secp256k1-2.2.2"
-        ];
-      })
-      sources."ip-2.0.0"
-      sources."ipaddr.js-1.9.1"
-      sources."is-accessor-descriptor-1.0.0"
-      sources."is-arrayish-0.3.2"
-      sources."is-buffer-1.1.6"
-      sources."is-data-descriptor-1.0.0"
-      sources."is-descriptor-1.0.2"
-      sources."is-fullwidth-code-point-3.0.0"
-      sources."is-interactive-1.0.0"
-      (sources."is-number-3.0.0" // {
-        dependencies = [
-          sources."kind-of-3.2.2"
-        ];
-      })
-      sources."is-stream-2.0.1"
-      sources."is-unicode-supported-1.3.0"
-      sources."isarray-1.0.0"
-      sources."json-schema-traverse-1.0.0"
-      sources."jstat-1.9.6"
-      sources."kind-of-6.0.3"
-      sources."kuler-2.0.0"
-      (sources."lightning-9.8.0" // {
-        dependencies = [
-          sources."@types/node-20.3.2"
-        ];
-      })
-      (sources."ln-accounting-7.0.2" // {
-        dependencies = [
-          sources."@grpc/grpc-js-1.8.13"
-          sources."@grpc/proto-loader-0.7.6"
-          sources."@types/node-18.15.0"
-          sources."@types/ws-8.5.4"
-          sources."base-x-3.0.9"
-          sources."bolt01-1.2.6"
-          sources."bolt07-1.8.3"
-          sources."bolt09-0.2.5"
-          sources."bs58-4.0.1"
-          sources."bs58check-2.1.2"
-          sources."cbor-8.1.0"
-          sources."cliui-7.0.4"
-          sources."colorette-2.0.19"
-          (sources."goldengate-12.0.5" // {
-            dependencies = [
-              sources."asyncjs-util-1.2.11"
-              sources."bitcoinjs-lib-6.1.0"
-              sources."ln-service-54.10.5"
-            ];
-          })
-          (sources."invoices-2.2.3" // {
-            dependencies = [
-              sources."bitcoinjs-lib-6.1.0"
-            ];
-          })
-          (sources."lightning-7.1.4" // {
-            dependencies = [
-              sources."@grpc/grpc-js-1.8.12"
-              sources."@grpc/proto-loader-0.7.5"
-              sources."asyncjs-util-1.2.11"
-              sources."bitcoinjs-lib-6.1.0"
-            ];
-          })
-          (sources."ln-service-56.8.0" // {
-            dependencies = [
-              sources."@grpc/grpc-js-1.8.17"
-              sources."@grpc/proto-loader-0.7.7"
-              sources."@types/node-20.3.2"
-              sources."@types/ws-8.5.5"
-              sources."bolt07-1.8.4"
-              sources."bolt09-1.0.0"
-              sources."cbor-9.0.0"
-              sources."cliui-8.0.1"
-              sources."invoices-3.0.0"
-              (sources."lightning-9.8.0" // {
-                dependencies = [
-                  sources."tiny-secp256k1-2.2.3"
-                ];
-              })
-              sources."psbt-3.0.0"
-              sources."tiny-secp256k1-2.2.2"
-              sources."type-fest-3.12.0"
-              sources."yargs-17.7.2"
-              sources."yargs-parser-21.1.1"
-            ];
-          })
-          (sources."ln-sync-4.3.2" // {
-            dependencies = [
-              sources."asyncjs-util-1.2.11"
-              sources."bitcoinjs-lib-6.1.0"
-              sources."ln-service-54.10.5"
-            ];
-          })
-          sources."p2tr-1.3.3"
-          (sources."psbt-2.7.2" // {
-            dependencies = [
-              sources."bitcoinjs-lib-6.1.0"
-            ];
-          })
-          sources."tiny-secp256k1-2.2.1"
-          sources."type-fest-3.6.1"
-          sources."yargs-16.2.0"
-          sources."yargs-parser-20.2.9"
-        ];
-      })
-      (sources."ln-service-56.9.0" // {
-        dependencies = [
-          sources."@grpc/grpc-js-1.8.18"
-          sources."@grpc/proto-loader-0.7.8"
-          sources."@types/node-20.4.2"
-          sources."lightning-9.9.0"
-          sources."type-fest-4.0.0"
-        ];
-      })
-      (sources."ln-sync-5.2.3" // {
-        dependencies = [
-          sources."ln-service-56.8.0"
-        ];
-      })
-      (sources."ln-telegram-4.6.1" // {
-        dependencies = [
-          sources."@alexbosworth/fiat-1.0.4"
-          sources."@grammyjs/types-2.12.1"
-          sources."@grpc/grpc-js-1.8.4"
-          sources."@grpc/proto-loader-0.7.4"
-          sources."@json2csv/formatters-6.1.3"
-          sources."@json2csv/plainjs-6.1.2"
-          sources."@streamparser/json-0.0.10"
-          sources."@types/express-4.17.15"
-          sources."@types/node-18.11.18"
-          sources."@types/ws-8.5.4"
-          sources."asyncjs-util-1.2.11"
-          sources."base-x-3.0.9"
-          sources."bitcoinjs-lib-6.1.0"
-          sources."body-parser-1.20.1"
-          sources."bolt01-1.2.6"
-          sources."bolt07-1.8.3"
-          sources."bolt09-0.2.5"
-          sources."bs58-4.0.1"
-          sources."bs58check-2.1.2"
-          sources."cbor-8.1.0"
-          sources."cliui-7.0.4"
-          sources."colorette-2.0.19"
-          sources."debug-4.3.4"
-          (sources."goldengate-12.0.2" // {
-            dependencies = [
-              sources."ln-sync-4.2.0"
-            ];
-          })
-          sources."grammy-1.13.1"
-          sources."invoices-2.2.3"
-          (sources."lightning-7.0.3" // {
-            dependencies = [
-              sources."@grpc/grpc-js-1.8.1"
-            ];
-          })
-          sources."ln-accounting-6.1.3"
-          sources."ln-service-54.9.0"
-          sources."ln-sync-4.3.0"
-          sources."ms-2.1.2"
-          sources."p2tr-1.3.3"
-          (sources."paid-services-4.3.0" // {
-            dependencies = [
-              sources."ln-sync-4.2.0"
-            ];
-          })
-          sources."psbt-2.7.2"
-          sources."raw-body-2.5.1"
-          sources."tiny-secp256k1-2.2.1"
-          sources."type-fest-3.5.1"
-          sources."utf-8-validate-5.0.10"
-          sources."ws-8.11.0"
-          sources."yargs-16.2.0"
-          sources."yargs-parser-20.2.9"
-        ];
-      })
-      sources."lodash-4.17.21"
-      sources."lodash.camelcase-4.3.0"
-      sources."lodash.difference-4.5.0"
-      sources."lodash.get-4.4.2"
-      sources."lodash.pad-4.5.1"
-      sources."lodash.padend-4.6.1"
-      sources."lodash.padstart-4.6.1"
-      sources."lodash.truncate-4.4.2"
-      sources."lodash.uniq-4.5.0"
-      (sources."log-symbols-4.1.0" // {
-        dependencies = [
-          sources."ansi-styles-4.3.0"
-          sources."chalk-4.1.2"
-          sources."color-convert-2.0.1"
-          sources."color-name-1.1.4"
-          sources."is-unicode-supported-0.1.0"
-          sources."supports-color-7.2.0"
-        ];
-      })
-      (sources."logform-2.5.1" // {
-        dependencies = [
-          sources."ms-2.1.3"
-        ];
-      })
-      sources."long-4.0.0"
-      sources."luxon-3.2.1"
-      sources."macaroon-3.0.4"
-      sources."md5.js-1.3.5"
-      sources."media-typer-0.3.0"
-      sources."merge-descriptors-1.0.1"
-      sources."methods-1.1.2"
-      sources."micromist-1.1.0"
-      sources."mime-1.6.0"
-      sources."mime-db-1.52.0"
-      sources."mime-types-2.1.35"
-      sources."mimic-fn-2.1.0"
-      sources."minimist-1.2.6"
-      sources."mkdirp-0.5.6"
-      sources."moment-2.29.4"
-      (sources."morgan-1.10.0" // {
-        dependencies = [
-          sources."on-finished-2.3.0"
-        ];
-      })
-      sources."ms-2.0.0"
-      sources."mute-stream-0.0.6"
-      sources."negotiator-0.6.3"
-      sources."node-fetch-2.6.12"
-      sources."node-gyp-build-4.6.0"
-      sources."nofilter-3.1.0"
-      sources."npmlog-2.0.4"
-      sources."number-is-nan-1.0.1"
-      sources."object-assign-4.1.1"
-      sources."object-inspect-1.12.3"
-      sources."on-finished-2.4.1"
-      sources."on-headers-1.0.2"
-      sources."one-time-1.0.0"
-      sources."onetime-1.1.0"
-      (sources."ora-5.4.1" // {
-        dependencies = [
-          sources."ansi-styles-4.3.0"
-          sources."chalk-4.1.2"
-          sources."cli-cursor-3.1.0"
-          sources."color-convert-2.0.1"
-          sources."color-name-1.1.4"
-          sources."is-unicode-supported-0.1.0"
-          sources."onetime-5.1.2"
-          sources."restore-cursor-3.1.0"
-          sources."supports-color-7.2.0"
-        ];
-      })
-      sources."os-shim-0.1.3"
-      sources."os-tmpdir-1.0.2"
-      sources."p2tr-2.0.0"
-      (sources."paid-services-5.0.4" // {
-        dependencies = [
-          sources."@alexbosworth/fiat-1.0.4"
-          sources."@grpc/grpc-js-1.8.13"
-          sources."@grpc/proto-loader-0.7.6"
-          sources."@types/node-18.15.0"
-          sources."@types/ws-8.5.4"
-          sources."asyncjs-util-1.2.11"
-          sources."base-x-3.0.9"
-          sources."bitcoinjs-lib-6.1.0"
-          sources."bolt01-1.2.6"
-          sources."bolt07-1.8.3"
-          sources."bolt09-0.2.5"
-          sources."bs58-4.0.1"
-          sources."bs58check-2.1.2"
-          sources."cbor-8.1.0"
-          sources."cliui-7.0.4"
-          sources."colorette-2.0.19"
-          (sources."goldengate-12.0.5" // {
-            dependencies = [
-              sources."ln-service-54.10.5"
-              sources."ln-sync-4.3.2"
-            ];
-          })
-          sources."invoices-2.2.3"
-          (sources."lightning-7.1.4" // {
-            dependencies = [
-              sources."@grpc/grpc-js-1.8.12"
-              sources."@grpc/proto-loader-0.7.5"
-            ];
-          })
-          (sources."ln-service-56.3.0" // {
-            dependencies = [
-              sources."@grpc/grpc-js-1.8.14"
-              sources."@types/node-18.16.3"
-              sources."lightning-9.3.0"
-              sources."type-fest-3.9.0"
-            ];
-          })
-          (sources."ln-sync-5.2.0" // {
-            dependencies = [
-              sources."colorette-2.0.20"
-            ];
-          })
-          sources."p2tr-1.3.3"
-          sources."psbt-2.7.2"
-          sources."tiny-secp256k1-2.2.1"
-          sources."type-fest-3.6.1"
-          sources."yargs-16.2.0"
-          sources."yargs-parser-20.2.9"
-        ];
-      })
-      sources."parseurl-1.3.3"
-      sources."path-to-regexp-0.1.7"
-      sources."pinkie-2.0.4"
-      sources."pinkie-promise-2.0.1"
-      (sources."probing-4.0.0" // {
-        dependencies = [
-          sources."@grpc/grpc-js-1.8.16"
-          sources."@types/node-20.3.1"
-          sources."base-x-3.0.9"
-          sources."bitcoinjs-lib-6.1.0"
-          sources."bolt09-0.2.5"
-          sources."bs58-4.0.1"
-          sources."bs58check-2.1.2"
-          (sources."invoices-2.2.3" // {
-            dependencies = [
-              sources."bolt07-1.8.3"
-            ];
-          })
-          (sources."lightning-9.7.1" // {
-            dependencies = [
-              sources."asyncjs-util-1.2.11"
-              sources."base-x-4.0.0"
-              sources."bitcoinjs-lib-6.1.3"
-              sources."bolt07-1.8.3"
-              sources."bs58-5.0.0"
-              sources."bs58check-3.0.1"
-              sources."tiny-secp256k1-2.2.2"
-            ];
-          })
-          (sources."ln-service-56.7.1" // {
-            dependencies = [
-              sources."bolt07-1.8.3"
-            ];
-          })
-          sources."psbt-2.7.2"
-          sources."tiny-secp256k1-2.2.1"
-        ];
-      })
-      sources."process-nextick-args-2.0.1"
-      (sources."protobufjs-7.2.4" // {
-        dependencies = [
-          sources."long-5.2.3"
-        ];
-      })
-      sources."proxy-addr-2.0.7"
-      sources."psbt-3.0.0"
-      sources."punycode-2.3.0"
-      sources."pushdata-bitcoin-1.0.1"
-      sources."qrcode-terminal-0.12.0"
-      sources."qs-6.11.0"
-      sources."randombytes-2.1.0"
-      sources."range-parser-1.2.1"
-      sources."raw-body-2.5.2"
-      sources."readable-stream-2.3.8"
-      sources."require-directory-2.1.1"
-      sources."require-from-string-2.0.2"
-      sources."restore-cursor-1.0.1"
-      sources."ripemd160-2.0.2"
-      sources."run-async-2.4.1"
-      sources."rx-4.1.0"
-      sources."rxjs-7.8.1"
-      sources."safe-buffer-5.1.2"
-      sources."safe-stable-stringify-2.4.3"
-      sources."safer-buffer-2.1.2"
-      sources."sanitize-filename-1.6.3"
-      (sources."send-0.18.0" // {
-        dependencies = [
-          sources."ms-2.1.3"
-        ];
-      })
-      sources."serve-static-1.15.0"
-      sources."setprototypeof-1.2.0"
-      sources."sha.js-2.4.11"
-      sources."side-channel-1.0.4"
-      sources."signal-exit-3.0.7"
-      sources."simple-swizzle-0.2.2"
-      sources."sjcl-1.0.8"
-      (sources."slice-ansi-4.0.0" // {
-        dependencies = [
-          sources."ansi-styles-4.3.0"
-          sources."color-convert-2.0.1"
-          sources."color-name-1.1.4"
-        ];
-      })
-      sources."smart-buffer-4.2.0"
-      sources."socks-2.7.1"
-      (sources."socks-proxy-agent-8.0.1" // {
-        dependencies = [
-          sources."debug-4.3.4"
-          sources."ms-2.1.2"
-        ];
-      })
-      sources."spawn-sync-1.0.15"
-      sources."stack-trace-0.0.10"
-      sources."statuses-2.0.1"
-      sources."string-width-4.2.3"
-      sources."string_decoder-1.1.1"
-      sources."strip-ansi-6.0.1"
-      sources."supports-color-2.0.0"
-      sources."table-6.8.1"
-      (sources."tabtab-2.2.2" // {
-        dependencies = [
-          sources."ansi-regex-2.1.1"
-          sources."inquirer-1.2.3"
-          sources."is-fullwidth-code-point-1.0.0"
-          sources."string-width-1.0.2"
-          sources."strip-ansi-3.0.1"
-        ];
-      })
-      sources."text-hex-1.0.0"
-      sources."through-2.3.8"
-      sources."tiny-emitter-2.1.0"
-      sources."tiny-secp256k1-2.2.3"
-      sources."tmp-0.0.29"
-      sources."toidentifier-1.0.1"
-      sources."tr46-0.0.3"
-      sources."triple-beam-1.4.1"
-      sources."truncate-utf8-bytes-1.0.2"
-      sources."tslib-2.6.1"
-      sources."tweetnacl-1.0.3"
-      sources."tweetnacl-util-0.15.1"
-      sources."type-fest-3.12.0"
-      sources."type-is-1.6.18"
-      sources."typedarray-0.0.6"
-      sources."typeforce-1.18.0"
-      sources."uint8array-tools-0.0.7"
-      sources."unpipe-1.0.0"
-      sources."uri-js-4.4.1"
-      sources."utf-8-validate-6.0.3"
-      sources."utf8-byte-length-1.0.4"
-      sources."util-deprecate-1.0.2"
-      sources."utils-merge-1.0.1"
-      sources."varuint-bitcoin-1.1.2"
-      sources."vary-1.1.2"
-      sources."wcwidth-1.0.1"
-      sources."webidl-conversions-3.0.1"
-      sources."whatwg-url-5.0.0"
-      (sources."wif-2.0.6" // {
-        dependencies = [
-          sources."base-x-3.0.9"
-          sources."bs58-4.0.1"
-          sources."bs58check-2.1.2"
-        ];
-      })
-      sources."window-size-1.1.1"
-      (sources."winston-3.7.2" // {
-        dependencies = [
-          sources."readable-stream-3.6.2"
-        ];
-      })
-      (sources."winston-transport-4.5.0" // {
-        dependencies = [
-          sources."readable-stream-3.6.2"
-        ];
-      })
-      (sources."wrap-ansi-7.0.0" // {
-        dependencies = [
-          sources."ansi-styles-4.3.0"
-          sources."color-convert-2.0.1"
-          sources."color-name-1.1.4"
-        ];
-      })
-      sources."ws-8.13.0"
-      sources."y18n-5.0.8"
-      sources."yargs-17.7.2"
-      sources."yargs-parser-21.1.1"
-    ];
-    buildInputs = globalBuildInputs;
-    meta = {
-      description = "Lightning balance CLI";
-      homepage = "https://github.com/alexbosworth/balanceofsatoshis#readme";
-      license = "MIT";
-    };
-    production = true;
-    bypassCache = true;
-    reconstructLock = true;
-  };
   bash-language-server = nodeEnv.buildNodePackage {
     name = "bash-language-server";
     packageName = "bash-language-server";
@@ -94422,432 +93489,6 @@ in
     bypassCache = true;
     reconstructLock = true;
   };
-  castnow = nodeEnv.buildNodePackage {
-    name = "castnow";
-    packageName = "castnow";
-    version = "0.6.0";
-    src = fetchurl {
-      url = "https://registry.npmjs.org/castnow/-/castnow-0.6.0.tgz";
-      sha512 = "VybZ8QYuJyJHt88TIi12nxsIO/89vmcM1Trna0bTq5O2uzz5SDBE2piU+x87B85V4woosyw9T45f39CZzYjxAw==";
-    };
-    dependencies = [
-      sources."@protobufjs/aspromise-1.1.2"
-      sources."@protobufjs/base64-1.1.2"
-      sources."@protobufjs/codegen-2.0.4"
-      sources."@protobufjs/eventemitter-1.1.0"
-      sources."@protobufjs/fetch-1.1.0"
-      sources."@protobufjs/float-1.0.2"
-      sources."@protobufjs/inquire-1.1.0"
-      sources."@protobufjs/path-1.1.2"
-      sources."@protobufjs/pool-1.1.0"
-      sources."@protobufjs/utf8-1.1.0"
-      sources."@types/long-4.0.2"
-      sources."@types/node-20.4.5"
-      sources."@xmldom/xmldom-0.8.10"
-      sources."addr-to-ip-port-1.5.4"
-      sources."airplay-js-0.2.16"
-      sources."ajv-6.12.6"
-      sources."ansi-regex-1.1.1"
-      sources."ansi-styles-2.2.1"
-      sources."append-0.1.1"
-      sources."array-find-0.1.1"
-      sources."array-find-index-1.0.2"
-      sources."array-loop-1.0.0"
-      sources."array-shuffle-1.0.1"
-      sources."asn1-0.2.6"
-      sources."assert-plus-1.0.0"
-      sources."asynckit-0.4.0"
-      sources."aws-sign2-0.7.0"
-      sources."aws4-1.12.0"
-      sources."balanced-match-1.0.2"
-      sources."base64-js-1.5.1"
-      sources."bcrypt-pbkdf-1.0.2"
-      sources."bencode-2.0.3"
-      sources."bep53-range-1.1.1"
-      sources."bitfield-0.1.0"
-      (sources."bittorrent-dht-6.4.2" // {
-        dependencies = [
-          sources."bencode-0.7.0"
-        ];
-      })
-      (sources."bittorrent-tracker-7.7.0" // {
-        dependencies = [
-          sources."bencode-0.8.0"
-        ];
-      })
-      sources."blob-to-buffer-1.2.9"
-      sources."bn.js-4.12.0"
-      sources."bncode-0.5.3"
-      sources."brace-expansion-1.1.11"
-      sources."buffer-alloc-1.2.0"
-      sources."buffer-alloc-unsafe-1.1.0"
-      sources."buffer-equal-0.0.1"
-      sources."buffer-equals-1.0.4"
-      sources."buffer-fill-1.0.0"
-      sources."buffer-from-1.1.2"
-      sources."camelcase-2.1.1"
-      sources."camelcase-keys-2.1.0"
-      sources."caseless-0.12.0"
-      (sources."castv2-0.1.10" // {
-        dependencies = [
-          sources."debug-4.3.4"
-        ];
-      })
-      sources."castv2-client-1.2.0"
-      sources."chalk-1.0.0"
-      sources."chrome-dgram-3.0.6"
-      sources."chrome-dns-1.0.1"
-      sources."chrome-net-3.3.4"
-      sources."chromecast-player-0.2.3"
-      sources."chromecast-scanner-0.5.0"
-      sources."cli-width-1.1.1"
-      sources."clivas-0.1.4"
-      sources."co-3.1.0"
-      sources."codepage-1.4.0"
-      sources."combined-stream-1.0.8"
-      sources."commander-11.0.0"
-      sources."compact2string-1.4.1"
-      sources."concat-map-0.0.1"
-      (sources."concat-stream-2.0.0" // {
-        dependencies = [
-          sources."readable-stream-3.6.2"
-          sources."string_decoder-1.3.0"
-        ];
-      })
-      sources."core-util-is-1.0.3"
-      sources."currently-unhandled-0.4.1"
-      sources."cyclist-0.1.1"
-      sources."dashdash-1.14.1"
-      sources."debounced-seeker-1.0.0"
-      (sources."debug-2.6.9" // {
-        dependencies = [
-          sources."ms-2.0.0"
-        ];
-      })
-      sources."decamelize-1.2.0"
-      sources."decompress-response-3.3.0"
-      sources."deep-extend-0.2.11"
-      sources."delayed-stream-1.0.0"
-      sources."diveSync-0.3.0"
-      sources."dns-js-0.2.1"
-      sources."ecc-jsbn-0.1.2"
-      (sources."end-of-stream-1.0.0" // {
-        dependencies = [
-          sources."once-1.3.3"
-        ];
-      })
-      sources."error-ex-1.3.2"
-      sources."escape-string-regexp-1.0.5"
-      sources."events-3.3.0"
-      sources."exit-on-epipe-1.0.1"
-      sources."extend-3.0.2"
-      sources."extsprintf-1.3.0"
-      sources."fast-deep-equal-3.1.3"
-      sources."fast-json-stable-stringify-2.1.0"
-      sources."fifo-0.1.4"
-      (sources."figures-1.7.0" // {
-        dependencies = [
-          sources."object-assign-4.1.1"
-        ];
-      })
-      sources."find-up-1.1.2"
-      sources."flatten-0.0.1"
-      sources."forever-agent-0.6.1"
-      sources."form-data-2.3.3"
-      (sources."fs-chunk-store-1.7.0" // {
-        dependencies = [
-          sources."mkdirp-0.5.6"
-          sources."thunky-1.1.0"
-        ];
-      })
-      sources."fs.realpath-1.0.0"
-      sources."function-bind-1.1.1"
-      sources."get-browser-rtc-1.1.0"
-      sources."get-stdin-4.0.1"
-      sources."getpass-0.1.7"
-      sources."glob-7.2.3"
-      sources."got-1.2.2"
-      sources."graceful-fs-4.2.11"
-      sources."har-schema-2.0.0"
-      sources."har-validator-5.1.5"
-      sources."has-1.0.3"
-      sources."has-ansi-1.0.3"
-      sources."hat-0.0.3"
-      sources."hosted-git-info-2.8.9"
-      sources."http-signature-1.2.0"
-      sources."immediate-chunk-store-1.0.8"
-      sources."indent-string-2.1.0"
-      sources."inflight-1.0.6"
-      sources."inherits-2.0.4"
-      sources."ini-1.1.0"
-      sources."inquirer-0.8.5"
-      sources."internal-ip-1.2.0"
-      sources."ip-1.1.8"
-      sources."ip-set-1.0.2"
-      sources."ipaddr.js-2.1.0"
-      sources."is-arrayish-0.2.1"
-      sources."is-core-module-2.12.1"
-      sources."is-finite-1.1.0"
-      sources."is-typedarray-1.0.0"
-      sources."is-utf8-0.2.1"
-      sources."isarray-0.0.1"
-      sources."isstream-0.1.2"
-      sources."jsbn-0.1.1"
-      sources."json-schema-0.4.0"
-      sources."json-schema-traverse-0.4.1"
-      sources."json-stringify-safe-5.0.1"
-      sources."jsprim-1.4.2"
-      sources."k-bucket-0.6.0"
-      (sources."k-rpc-3.7.0" // {
-        dependencies = [
-          sources."k-bucket-2.0.1"
-        ];
-      })
-      sources."k-rpc-socket-1.11.1"
-      sources."keypress-0.2.1"
-      sources."load-json-file-1.1.0"
-      sources."lodash-3.10.1"
-      sources."long-4.0.0"
-      sources."loud-rejection-1.6.0"
-      sources."lru-2.0.1"
-      sources."magnet-uri-5.4.0"
-      sources."map-obj-1.0.1"
-      (sources."mdns-js-1.0.3" // {
-        dependencies = [
-          sources."debug-3.1.0"
-          sources."ms-2.0.0"
-          sources."semver-5.4.1"
-        ];
-      })
-      (sources."meow-3.7.0" // {
-        dependencies = [
-          sources."object-assign-4.1.1"
-        ];
-      })
-      sources."mime-1.6.0"
-      sources."mime-db-1.52.0"
-      sources."mime-types-2.1.35"
-      sources."mimic-response-1.0.1"
-      sources."minimatch-3.1.2"
-      sources."minimist-1.2.8"
-      sources."mkdirp-0.3.5"
-      sources."mkdirp-classic-0.5.3"
-      sources."ms-2.1.2"
-      sources."multicast-dns-4.0.1"
-      sources."mutate.js-0.2.0"
-      sources."mute-stream-0.0.4"
-      sources."network-address-0.0.5"
-      sources."normalize-package-data-2.5.0"
-      sources."numeral-1.5.6"
-      sources."oauth-sign-0.9.0"
-      sources."object-assign-1.0.0"
-      sources."once-1.4.0"
-      sources."open-0.0.5"
-      (sources."optimist-0.6.1" // {
-        dependencies = [
-          sources."minimist-0.0.10"
-        ];
-      })
-      sources."options-0.0.6"
-      sources."pad-0.0.5"
-      sources."parse-json-2.2.0"
-      (sources."parse-torrent-5.9.1" // {
-        dependencies = [
-          sources."get-stdin-6.0.0"
-        ];
-      })
-      (sources."parse-torrent-file-2.1.4" // {
-        dependencies = [
-          sources."bencode-0.7.0"
-        ];
-      })
-      sources."path-exists-2.1.0"
-      sources."path-is-absolute-1.0.1"
-      sources."path-parse-1.0.7"
-      sources."path-type-1.1.0"
-      (sources."peer-wire-protocol-0.7.1" // {
-        dependencies = [
-          sources."bncode-0.2.3"
-        ];
-      })
-      sources."peer-wire-swarm-0.12.2"
-      sources."peerflix-0.34.0"
-      sources."performance-now-2.1.0"
-      sources."pify-2.3.0"
-      sources."pinkie-2.0.4"
-      sources."pinkie-promise-2.0.1"
-      (sources."playerui-1.3.0" // {
-        dependencies = [
-          sources."ansi-regex-0.2.1"
-          sources."ansi-styles-1.1.0"
-          sources."chalk-0.5.1"
-          sources."has-ansi-0.1.0"
-          sources."strip-ansi-0.3.0"
-          sources."supports-color-0.2.0"
-        ];
-      })
-      sources."plist-3.1.0"
-      sources."process-nextick-args-2.0.1"
-      sources."promiscuous-0.6.0"
-      sources."protobufjs-6.11.3"
-      sources."psl-1.9.0"
-      (sources."pump-0.3.5" // {
-        dependencies = [
-          sources."once-1.2.0"
-        ];
-      })
-      sources."punycode-2.3.0"
-      sources."qap-3.3.1"
-      sources."qs-6.5.3"
-      sources."query-string-1.0.1"
-      sources."queue-microtask-1.2.3"
-      sources."queue-tick-1.0.1"
-      sources."random-access-file-2.2.1"
-      sources."random-access-storage-1.4.3"
-      sources."random-iterate-1.0.1"
-      sources."randombytes-2.1.0"
-      sources."range-parser-1.2.1"
-      (sources."rc-0.4.0" // {
-        dependencies = [
-          sources."minimist-0.0.10"
-        ];
-      })
-      sources."re-emitter-1.1.4"
-      sources."read-pkg-1.1.0"
-      sources."read-pkg-up-1.0.1"
-      (sources."read-torrent-1.3.1" // {
-        dependencies = [
-          sources."magnet-uri-2.0.1"
-          (sources."parse-torrent-4.1.0" // {
-            dependencies = [
-              sources."magnet-uri-4.2.3"
-            ];
-          })
-          sources."thirty-two-0.0.2"
-        ];
-      })
-      sources."readable-stream-1.1.14"
-      sources."readline2-0.1.1"
-      sources."redent-1.0.0"
-      sources."repeating-2.0.1"
-      sources."request-2.88.2"
-      sources."resolve-1.22.3"
-      sources."rimraf-2.7.1"
-      sources."router-0.6.2"
-      sources."run-parallel-1.2.0"
-      sources."run-series-1.1.9"
-      sources."rusha-0.8.14"
-      sources."rx-2.5.3"
-      sources."safe-buffer-5.2.1"
-      sources."safer-buffer-2.1.2"
-      sources."sax-1.2.4"
-      sources."semver-5.7.2"
-      sources."signal-exit-3.0.7"
-      sources."simple-concat-1.0.1"
-      sources."simple-get-2.8.2"
-      (sources."simple-peer-6.4.4" // {
-        dependencies = [
-          sources."isarray-1.0.0"
-          sources."readable-stream-2.3.8"
-          sources."safe-buffer-5.1.2"
-          sources."string_decoder-1.1.1"
-        ];
-      })
-      sources."simple-sha1-2.1.2"
-      (sources."simple-websocket-4.3.1" // {
-        dependencies = [
-          sources."isarray-1.0.0"
-          sources."readable-stream-2.3.8"
-          sources."safe-buffer-5.1.2"
-          sources."string_decoder-1.1.1"
-          (sources."ws-2.3.1" // {
-            dependencies = [
-              sources."safe-buffer-5.0.1"
-            ];
-          })
-        ];
-      })
-      sources."single-line-log-0.4.1"
-      sources."spdx-correct-3.2.0"
-      sources."spdx-exceptions-2.3.0"
-      sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.13"
-      sources."speedometer-0.1.4"
-      sources."srt2vtt-1.3.1"
-      sources."sshpk-1.17.0"
-      sources."stream-transcoder-0.0.5"
-      sources."string2compact-1.3.2"
-      sources."string_decoder-0.10.31"
-      sources."strip-ansi-2.0.1"
-      sources."strip-bom-2.0.0"
-      sources."strip-indent-1.0.1"
-      sources."strip-json-comments-0.1.3"
-      sources."supports-color-1.3.1"
-      sources."supports-preserve-symlinks-flag-1.0.0"
-      sources."thirty-two-1.0.2"
-      sources."through-2.3.8"
-      sources."thunky-0.1.0"
-      sources."time-line-1.0.1"
-      sources."torrent-discovery-5.4.0"
-      sources."torrent-piece-1.1.2"
-      (sources."torrent-stream-1.2.1" // {
-        dependencies = [
-          sources."end-of-stream-0.1.5"
-          sources."magnet-uri-4.2.3"
-          sources."once-1.3.3"
-          sources."parse-torrent-4.1.0"
-          sources."thirty-two-0.0.2"
-        ];
-      })
-      sources."tough-cookie-2.5.0"
-      sources."trim-newlines-1.0.0"
-      sources."tunnel-agent-0.6.0"
-      sources."tweetnacl-0.14.5"
-      sources."typedarray-0.0.6"
-      sources."ultron-1.1.1"
-      sources."underscore-1.6.0"
-      sources."uniq-1.0.1"
-      sources."uri-js-4.4.1"
-      sources."utfx-1.0.1"
-      sources."util-deprecate-1.0.2"
-      sources."utp-0.0.7"
-      sources."uuid-3.4.0"
-      sources."validate-npm-package-license-3.0.4"
-      (sources."verror-1.10.0" // {
-        dependencies = [
-          sources."core-util-is-1.0.2"
-        ];
-      })
-      sources."voc-1.2.0"
-      sources."ware-1.3.0"
-      sources."windows-no-runnable-0.0.6"
-      sources."wordwrap-0.0.3"
-      sources."wrap-fn-0.1.5"
-      sources."wrappy-1.0.2"
-      (sources."ws-1.1.5" // {
-        dependencies = [
-          sources."ultron-1.0.2"
-        ];
-      })
-      (sources."xml2js-0.4.23" // {
-        dependencies = [
-          sources."xmlbuilder-11.0.1"
-        ];
-      })
-      sources."xmlbuilder-15.1.1"
-      sources."xspfr-0.3.1"
-      sources."xtend-4.0.2"
-    ];
-    buildInputs = globalBuildInputs;
-    meta = {
-      description = "commandline chromecast player";
-      homepage = "https://github.com/xat/castnow#readme";
-      license = "MIT";
-    };
-    production = true;
-    bypassCache = true;
-    reconstructLock = true;
-  };
   carbon-now-cli = nodeEnv.buildNodePackage {
     name = "carbon-now-cli";
     packageName = "carbon-now-cli";
@@ -112620,68 +111261,6 @@ in
     bypassCache = true;
     reconstructLock = true;
   };
-  hueadm = nodeEnv.buildNodePackage {
-    name = "hueadm";
-    packageName = "hueadm";
-    version = "1.2.1";
-    src = fetchurl {
-      url = "https://registry.npmjs.org/hueadm/-/hueadm-1.2.1.tgz";
-      sha512 = "5ZoQ6vz1oWxklwps0bjsSyv30jOQ7ZYC+H4W/UeYLOYNwR2oQH8pjze74F1iT4CAyx3jmXmAwZl1LxfNUWL1Lg==";
-    };
-    dependencies = [
-      sources."abort-controller-3.0.0"
-      sources."argparse-1.0.10"
-      sources."assert-plus-1.0.0"
-      sources."autocast-0.0.4"
-      sources."balanced-match-1.0.2"
-      sources."base64-js-1.5.1"
-      sources."brace-expansion-1.1.11"
-      sources."buffer-6.0.3"
-      sources."cmdln-4.4.0"
-      sources."color-convert-2.0.1"
-      sources."color-name-1.1.4"
-      sources."concat-map-0.0.1"
-      sources."core-util-is-1.0.2"
-      sources."css-color-names-1.0.1"
-      sources."dashdash-1.14.1"
-      sources."deepmerge-3.3.0"
-      sources."event-target-shim-5.0.1"
-      sources."events-3.3.0"
-      sources."extsprintf-1.4.1"
-      sources."fs.realpath-1.0.0"
-      sources."fuzzyset.js-0.0.1"
-      sources."glob-7.2.3"
-      sources."hue-sdk-0.1.0"
-      sources."ieee754-1.2.1"
-      sources."inflight-1.0.6"
-      sources."inherits-2.0.4"
-      sources."latest-0.2.0"
-      sources."lstream-0.0.4"
-      sources."minimatch-3.1.2"
-      sources."mired-0.0.0"
-      sources."npm-2.15.12"
-      sources."once-1.4.0"
-      sources."path-is-absolute-1.0.1"
-      sources."process-0.11.10"
-      sources."readable-stream-4.4.2"
-      sources."safe-buffer-5.2.1"
-      sources."sprintf-js-1.0.3"
-      sources."string_decoder-1.3.0"
-      sources."tabula-1.10.0"
-      sources."verror-1.10.1"
-      sources."wrappy-1.0.2"
-      sources."yamljs-0.3.0"
-    ];
-    buildInputs = globalBuildInputs;
-    meta = {
-      description = "A command line management interface to phillips hue";
-      homepage = "https://github.com/bahamas10/hueadm#readme";
-      license = "MIT";
-    };
-    production = true;
-    bypassCache = true;
-    reconstructLock = true;
-  };
   hyperpotamus = nodeEnv.buildNodePackage {
     name = "hyperpotamus";
     packageName = "hyperpotamus";
@@ -116782,185 +115361,6 @@ in
     bypassCache = true;
     reconstructLock = true;
   };
-  karma = nodeEnv.buildNodePackage {
-    name = "karma";
-    packageName = "karma";
-    version = "6.4.2";
-    src = fetchurl {
-      url = "https://registry.npmjs.org/karma/-/karma-6.4.2.tgz";
-      sha512 = "C6SU/53LB31BEgRg+omznBEMY4SjHU3ricV6zBcAe1EeILKkeScr+fZXtaI5WyDbkVowJxxAI6h73NcFPmXolQ==";
-    };
-    dependencies = [
-      sources."@colors/colors-1.5.0"
-      sources."@socket.io/component-emitter-3.1.0"
-      sources."@types/cookie-0.4.1"
-      sources."@types/cors-2.8.13"
-      sources."@types/node-20.4.5"
-      sources."accepts-1.3.8"
-      sources."ansi-regex-5.0.1"
-      sources."ansi-styles-4.3.0"
-      sources."anymatch-3.1.3"
-      sources."balanced-match-1.0.2"
-      sources."base64id-2.0.0"
-      sources."binary-extensions-2.2.0"
-      sources."body-parser-1.20.2"
-      sources."brace-expansion-1.1.11"
-      sources."braces-3.0.2"
-      sources."bufferutil-4.0.7"
-      sources."bytes-3.1.2"
-      sources."call-bind-1.0.2"
-      sources."chokidar-3.5.3"
-      sources."cliui-7.0.4"
-      sources."color-convert-2.0.1"
-      sources."color-name-1.1.4"
-      sources."concat-map-0.0.1"
-      sources."connect-3.7.0"
-      sources."content-type-1.0.5"
-      sources."cookie-0.4.2"
-      sources."cors-2.8.5"
-      sources."custom-event-1.0.1"
-      sources."date-format-4.0.14"
-      sources."debug-2.6.9"
-      sources."depd-2.0.0"
-      sources."destroy-1.2.0"
-      sources."di-0.0.1"
-      sources."dom-serialize-2.2.1"
-      sources."ee-first-1.1.1"
-      sources."emoji-regex-8.0.0"
-      sources."encodeurl-1.0.2"
-      (sources."engine.io-6.5.1" // {
-        dependencies = [
-          sources."debug-4.3.4"
-          sources."ms-2.1.2"
-        ];
-      })
-      sources."engine.io-parser-5.1.0"
-      sources."ent-2.2.0"
-      sources."escalade-3.1.1"
-      sources."escape-html-1.0.3"
-      sources."eventemitter3-4.0.7"
-      sources."extend-3.0.2"
-      sources."fill-range-7.0.1"
-      (sources."finalhandler-1.1.2" // {
-        dependencies = [
-          sources."on-finished-2.3.0"
-          sources."statuses-1.5.0"
-        ];
-      })
-      sources."flatted-3.2.7"
-      sources."follow-redirects-1.15.2"
-      sources."fs-extra-8.1.0"
-      sources."fs.realpath-1.0.0"
-      sources."fsevents-2.3.2"
-      sources."function-bind-1.1.1"
-      sources."get-caller-file-2.0.5"
-      sources."get-intrinsic-1.2.1"
-      sources."glob-7.2.3"
-      sources."glob-parent-5.1.2"
-      sources."graceful-fs-4.2.11"
-      sources."has-1.0.3"
-      sources."has-proto-1.0.1"
-      sources."has-symbols-1.0.3"
-      sources."http-errors-2.0.0"
-      sources."http-proxy-1.18.1"
-      sources."iconv-lite-0.4.24"
-      sources."inflight-1.0.6"
-      sources."inherits-2.0.4"
-      sources."is-binary-path-2.1.0"
-      sources."is-extglob-2.1.1"
-      sources."is-fullwidth-code-point-3.0.0"
-      sources."is-glob-4.0.3"
-      sources."is-number-7.0.0"
-      sources."isbinaryfile-4.0.10"
-      sources."jsonfile-4.0.0"
-      sources."lodash-4.17.21"
-      (sources."log4js-6.9.1" // {
-        dependencies = [
-          sources."debug-4.3.4"
-          sources."ms-2.1.2"
-        ];
-      })
-      sources."media-typer-0.3.0"
-      sources."mime-2.6.0"
-      sources."mime-db-1.52.0"
-      sources."mime-types-2.1.35"
-      sources."minimatch-3.1.2"
-      sources."minimist-1.2.8"
-      sources."mkdirp-0.5.6"
-      sources."ms-2.0.0"
-      sources."negotiator-0.6.3"
-      sources."node-gyp-build-4.6.0"
-      sources."normalize-path-3.0.0"
-      sources."object-assign-4.1.1"
-      sources."object-inspect-1.12.3"
-      sources."on-finished-2.4.1"
-      sources."once-1.4.0"
-      sources."parseurl-1.3.3"
-      sources."path-is-absolute-1.0.1"
-      sources."picomatch-2.3.1"
-      sources."qjobs-1.2.0"
-      sources."qs-6.11.0"
-      sources."range-parser-1.2.1"
-      sources."raw-body-2.5.2"
-      sources."readdirp-3.6.0"
-      sources."require-directory-2.1.1"
-      sources."requires-port-1.0.0"
-      sources."rfdc-1.3.0"
-      sources."rimraf-3.0.2"
-      sources."safer-buffer-2.1.2"
-      sources."setprototypeof-1.2.0"
-      sources."side-channel-1.0.4"
-      (sources."socket.io-4.7.1" // {
-        dependencies = [
-          sources."debug-4.3.4"
-          sources."ms-2.1.2"
-        ];
-      })
-      sources."socket.io-adapter-2.5.2"
-      (sources."socket.io-parser-4.2.4" // {
-        dependencies = [
-          sources."debug-4.3.4"
-          sources."ms-2.1.2"
-        ];
-      })
-      sources."source-map-0.6.1"
-      sources."statuses-2.0.1"
-      (sources."streamroller-3.1.5" // {
-        dependencies = [
-          sources."debug-4.3.4"
-          sources."ms-2.1.2"
-        ];
-      })
-      sources."string-width-4.2.3"
-      sources."strip-ansi-6.0.1"
-      sources."tmp-0.2.1"
-      sources."to-regex-range-5.0.1"
-      sources."toidentifier-1.0.1"
-      sources."type-is-1.6.18"
-      sources."ua-parser-js-0.7.35"
-      sources."universalify-0.1.2"
-      sources."unpipe-1.0.0"
-      sources."utf-8-validate-5.0.10"
-      sources."utils-merge-1.0.1"
-      sources."vary-1.1.2"
-      sources."void-elements-2.0.1"
-      sources."wrap-ansi-7.0.0"
-      sources."wrappy-1.0.2"
-      sources."ws-8.11.0"
-      sources."y18n-5.0.8"
-      sources."yargs-16.2.0"
-      sources."yargs-parser-20.2.9"
-    ];
-    buildInputs = globalBuildInputs;
-    meta = {
-      description = "Spectacular Test Runner for JavaScript.";
-      homepage = "https://karma-runner.github.io/";
-      license = "MIT";
-    };
-    production = true;
-    bypassCache = true;
-    reconstructLock = true;
-  };
   keyoxide = nodeEnv.buildNodePackage {
     name = "keyoxide";
     packageName = "keyoxide";
@@ -120097,91 +118497,6 @@ in
     bypassCache = true;
     reconstructLock = true;
   };
-  markdownlint-cli = nodeEnv.buildNodePackage {
-    name = "markdownlint-cli";
-    packageName = "markdownlint-cli";
-    version = "0.35.0";
-    src = fetchurl {
-      url = "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.35.0.tgz";
-      sha512 = "lVIIIV1MrUtjoocgDqXLxUCxlRbn7Ve8rsWppfwciUNwLlNS28AhNiyQ3PU7jjj4Qvj+rWTTvwkqg7AcdG988g==";
-    };
-    dependencies = [
-      sources."@isaacs/cliui-8.0.2"
-      sources."@pkgjs/parseargs-0.11.0"
-      sources."ansi-regex-5.0.1"
-      sources."ansi-styles-6.2.1"
-      sources."argparse-2.0.1"
-      sources."balanced-match-1.0.2"
-      sources."brace-expansion-2.0.1"
-      sources."color-convert-2.0.1"
-      sources."color-name-1.1.4"
-      sources."commander-11.0.0"
-      sources."cross-spawn-7.0.3"
-      sources."deep-extend-0.6.0"
-      sources."eastasianwidth-0.2.0"
-      sources."emoji-regex-9.2.2"
-      sources."entities-3.0.1"
-      sources."foreground-child-3.1.1"
-      sources."get-stdin-9.0.0"
-      sources."glob-10.2.7"
-      sources."ignore-5.2.4"
-      sources."ini-3.0.1"
-      sources."is-fullwidth-code-point-3.0.0"
-      sources."isexe-2.0.0"
-      sources."jackspeak-2.2.2"
-      sources."js-yaml-4.1.0"
-      sources."jsonc-parser-3.2.0"
-      sources."linkify-it-4.0.1"
-      sources."lru-cache-10.0.0"
-      sources."markdown-it-13.0.1"
-      sources."markdownlint-0.29.0"
-      sources."markdownlint-micromark-0.1.5"
-      sources."mdurl-1.0.1"
-      sources."minimatch-9.0.3"
-      sources."minimist-1.2.8"
-      sources."minipass-6.0.2"
-      sources."path-key-3.1.1"
-      sources."path-scurry-1.10.1"
-      sources."run-con-1.2.12"
-      sources."shebang-command-2.0.0"
-      sources."shebang-regex-3.0.0"
-      sources."signal-exit-4.1.0"
-      sources."string-width-5.1.2"
-      (sources."string-width-cjs-4.2.3" // {
-        dependencies = [
-          sources."emoji-regex-8.0.0"
-          sources."strip-ansi-6.0.1"
-        ];
-      })
-      (sources."strip-ansi-7.1.0" // {
-        dependencies = [
-          sources."ansi-regex-6.0.1"
-        ];
-      })
-      sources."strip-ansi-cjs-6.0.1"
-      sources."strip-json-comments-3.1.1"
-      sources."uc.micro-1.0.6"
-      sources."which-2.0.2"
-      sources."wrap-ansi-8.1.0"
-      (sources."wrap-ansi-cjs-7.0.0" // {
-        dependencies = [
-          sources."ansi-styles-4.3.0"
-          sources."emoji-regex-8.0.0"
-          sources."string-width-4.2.3"
-          sources."strip-ansi-6.0.1"
-        ];
-      })
-    ];
-    buildInputs = globalBuildInputs;
-    meta = {
-      description = "MarkdownLint Command Line Interface";
-      homepage = "https://github.com/igorshubovych/markdownlint-cli#readme";
-      license = "MIT";
-    };
-    production = true;
-    bypassCache = true;
-    reconstructLock = true;
-  };
   markdownlint-cli2 = nodeEnv.buildNodePackage {
     name = "markdownlint-cli2";
     packageName = "markdownlint-cli2";
diff --git a/pkgs/development/node-packages/overrides.nix b/pkgs/development/node-packages/overrides.nix
index 69e5d65baeea..c32ce3868047 100644
--- a/pkgs/development/node-packages/overrides.nix
+++ b/pkgs/development/node-packages/overrides.nix
@@ -83,16 +83,6 @@ final: prev: {
     meta = oldAttrs.meta // { platforms = lib.platforms.linux; };
   });
 
-  balanceofsatoshis = prev.balanceofsatoshis.override {
-    nativeBuildInputs = [ pkgs.installShellFiles ];
-    postInstall = ''
-      installShellCompletion --cmd bos\
-        --bash <($out/bin/bos completion bash)\
-        --zsh <($out/bin/bos completion zsh)\
-        --fish <($out/bin/bos completion fish)
-    '';
-  };
-
   bower2nix = prev.bower2nix.override {
     nativeBuildInputs = [ pkgs.buildPackages.makeWrapper ];
     postInstall = ''
@@ -122,15 +112,6 @@ final: prev: {
     meta = oldAttrs.meta // { broken = since "12"; };
   });
 
-  castnow = prev.castnow.override {
-    nativeBuildInputs = [ pkgs.makeWrapper ];
-
-    postInstall = ''
-      wrapProgram "$out/bin/castnow" \
-          --prefix PATH : ${pkgs.lib.makeBinPath [ pkgs.ffmpeg ]}
-    '';
-  };
-
   eask = prev."@emacs-eask/cli".override {
     name = "eask";
   };
diff --git a/pkgs/development/node-packages/remove-attr.py b/pkgs/development/node-packages/remove-attr.py
index 6ab93e64ffe0..2b13dcd5ee87 100755
--- a/pkgs/development/node-packages/remove-attr.py
+++ b/pkgs/development/node-packages/remove-attr.py
@@ -43,6 +43,25 @@ def remove(attr):
                 else:
                     sys.stdout.write(line)
 
+    with fileinput.input(os.path.join(os.path.dirname(__file__), 'main-programs.nix'), inplace=1) as main_programs:
+        safe_attr = re.escape(attr)
+        for line in main_programs:
+            if not re.fullmatch(rf'  "?{safe_attr}"? = ".*";\n', line):
+                sys.stdout.write(line)
+
+    with fileinput.input(os.path.join(os.path.dirname(__file__), 'overrides.nix'), inplace=1) as overrides:
+        safe_attr = re.escape(attr)
+        in_attr = False
+        for line in overrides:
+            if in_attr:
+                if re.fullmatch(r'  \}\)?;\n', line):
+                    in_attr = False
+            else:
+                if re.fullmatch(rf'  (?:{safe_attr}|"{safe_attr}") = .* \{{\n', line):
+                    in_attr = True
+                else:
+                    sys.stdout.write(line)
+
 
 if __name__ == '__main__':
     import argparse
diff --git a/pkgs/development/python-modules/adb-enhanced/default.nix b/pkgs/development/python-modules/adb-enhanced/default.nix
index 12726a6bac51..739d34014357 100644
--- a/pkgs/development/python-modules/adb-enhanced/default.nix
+++ b/pkgs/development/python-modules/adb-enhanced/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "adb-enhanced";
-  version = "2.5.21";
+  version = "2.5.22";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "ashishb";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-kisP2RXpQa5uc53M3wcqN+1xgE/MGa2dVYzHnr1dgX8=";
+    hash = "sha256-n1CME/swV+NsZdUfWwVY1qQeYzawwy+sm0mkRPQKm6A=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-mgmt-keyvault/default.nix b/pkgs/development/python-modules/azure-mgmt-keyvault/default.nix
index 772d60fd26b7..2f7d1486c102 100644
--- a/pkgs/development/python-modules/azure-mgmt-keyvault/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-keyvault/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-keyvault";
-  version = "10.2.2";
+  version = "10.2.3";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    hash = "sha256-LG6oMTZepgT87KdJrwCpc4ZYEclUsEAHUitZrxFCkL4=";
+    hash = "sha256-JDM6F0ToMpUeBlLULih17TLzCbrNdxrGrcq5oIfsybU=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/black/default.nix b/pkgs/development/python-modules/black/default.nix
index e97fce086cfd..6019db6c7d7e 100644
--- a/pkgs/development/python-modules/black/default.nix
+++ b/pkgs/development/python-modules/black/default.nix
@@ -108,6 +108,7 @@ buildPythonPackage rec {
     homepage = "https://github.com/psf/black";
     changelog = "https://github.com/psf/black/blob/${version}/CHANGES.md";
     license = licenses.mit;
+    mainProgram = "black";
     maintainers = with maintainers; [ sveitser autophagy ];
   };
 }
diff --git a/pkgs/development/python-modules/cdcs/default.nix b/pkgs/development/python-modules/cdcs/default.nix
index 4a3f89a3c831..511a3975d97f 100644
--- a/pkgs/development/python-modules/cdcs/default.nix
+++ b/pkgs/development/python-modules/cdcs/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "cdcs";
-  version = "0.2.1";
+  version = "0.2.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -22,9 +22,8 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "usnistgov";
     repo = "pycdcs";
-    # https://github.com/usnistgov/pycdcs/issues/1
-    rev = "3aeaeb4782054a220e916c189ffe440d113b571d";
-    hash = "sha256-OsabgO2B2PRhU3DVvkK+f9VLOMqctl4nyCETxLtzwNs=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-WiNjMMcpp5K+Re44ryB7LNzr2LnnYzLZ5b0iT7u1ZiA=";
   };
 
   nativeBuildInputs = [
@@ -51,6 +50,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Python client for performing REST calls to configurable data curation system (CDCS) databases";
     homepage = "https://github.com/usnistgov/pycdcs";
+    changelog = "https://github.com/usnistgov/pycdcs/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/dvc-data/default.nix b/pkgs/development/python-modules/dvc-data/default.nix
index 9dd9a154a8b3..3cb159e65e23 100644
--- a/pkgs/development/python-modules/dvc-data/default.nix
+++ b/pkgs/development/python-modules/dvc-data/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "dvc-data";
-  version = "2.9.1";
+  version = "2.11.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -24,7 +24,7 @@ buildPythonPackage rec {
     owner = "iterative";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-NJAemtzqpqgWRmsXfcw9gj7T10jARemUMehIxTI7+fQ=";
+    hash = "sha256-Nqxaw5gGlKZCwTquNY/6z4b8l762mnrhHyvrteVzdHE=";
   };
 
   SETUPTOOLS_SCM_PRETEND_VERSION = version;
diff --git a/pkgs/development/python-modules/dvclive/default.nix b/pkgs/development/python-modules/dvclive/default.nix
index cbd787a7c22e..a2d501bfa156 100644
--- a/pkgs/development/python-modules/dvclive/default.nix
+++ b/pkgs/development/python-modules/dvclive/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "dvclive";
-  version = "2.13.0";
+  version = "2.13.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "iterative";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-5tvwIa2kx5MlMZV6J+NqN9v/TjOeZC6wftO102/QbCk=";
+    hash = "sha256-g2pRr8a+Rp2zIoB+Mmrb99nfbhrEQKTmJ6lfOOqiCrs=";
   };
 
   SETUPTOOLS_SCM_PRETEND_VERSION = version;
diff --git a/pkgs/development/python-modules/emoji/default.nix b/pkgs/development/python-modules/emoji/default.nix
index 2034433c0923..b17305f144c8 100644
--- a/pkgs/development/python-modules/emoji/default.nix
+++ b/pkgs/development/python-modules/emoji/default.nix
@@ -7,7 +7,7 @@
 
 buildPythonPackage rec {
   pname = "emoji";
-  version = "2.6.0";
+  version = "2.7.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -16,7 +16,7 @@ buildPythonPackage rec {
     owner = "carpedm20";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-giR0feAzPnginmzV8lqs1mpDtdBl7dExg21MhaGeCSQ=";
+    hash = "sha256-HxEQqWG0a96PQ0bNQsIyTSEK0G21WojgoAyaWLMmjyE=";
   };
 
   nativeCheckInputs = [
diff --git a/pkgs/development/python-modules/flask-talisman/default.nix b/pkgs/development/python-modules/flask-talisman/default.nix
index 11488956bbd6..a719e453daba 100644
--- a/pkgs/development/python-modules/flask-talisman/default.nix
+++ b/pkgs/development/python-modules/flask-talisman/default.nix
@@ -8,11 +8,11 @@
 
 buildPythonPackage rec {
   pname = "flask-talisman";
-  version = "1.0.0";
+  version = "1.1.0";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-IF0958Xs+tZnyEEj9fvlgLH2jNmhsFjXNTzANI4Vsb8=";
+    hash = "sha256-xfSG9fVEIHKfhLPDhQzWP5bosDOpYpvuZsUk6jY3l/8=";
   };
 
   buildInputs = [
diff --git a/pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix b/pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix
index 5136c19576c4..7c4a0df032e2 100644
--- a/pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix
+++ b/pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix
@@ -14,14 +14,14 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-bigquery-datatransfer";
-  version = "3.11.2";
+  version = "3.12.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-aY5bjnb62/eQ1NmPVPhBXChg1pj0PD1dzrn4PtlKAoU=";
+    hash = "sha256-5jxcN69FPuAZ7xiBcBu5+aE+q4OU9OlM+i9bd6vMnJI=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/google-cloud-pubsub/default.nix b/pkgs/development/python-modules/google-cloud-pubsub/default.nix
index fc713b8f8a21..501f1b7e92ff 100644
--- a/pkgs/development/python-modules/google-cloud-pubsub/default.nix
+++ b/pkgs/development/python-modules/google-cloud-pubsub/default.nix
@@ -16,14 +16,14 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-pubsub";
-  version = "2.18.0";
+  version = "2.18.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-enDfQRHZy2lKJc7N0jKIJxWcUhOuHmMEyzq7OPN53Sk=";
+    hash = "sha256-SivzwE+CeFBPk0sr26/pJ/plDXxTl8djOgsw4QpRJ/M=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/google-cloud-resource-manager/default.nix b/pkgs/development/python-modules/google-cloud-resource-manager/default.nix
index aef2d2794267..5e47e53cd8fa 100644
--- a/pkgs/development/python-modules/google-cloud-resource-manager/default.nix
+++ b/pkgs/development/python-modules/google-cloud-resource-manager/default.nix
@@ -13,14 +13,14 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-resource-manager";
-  version = "1.10.2";
+  version = "1.10.3";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-mnvdA0etVTN2zGatMXxSI9GuBL3PdO3L/NEmBc/3tRA=";
+    hash = "sha256-+A786jbxDFqBiJr+k5EJJuOXi0sc7rgvVjovyGMHLRQ=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/google-cloud-secret-manager/default.nix b/pkgs/development/python-modules/google-cloud-secret-manager/default.nix
index c29c1e692f01..6791ad76a127 100644
--- a/pkgs/development/python-modules/google-cloud-secret-manager/default.nix
+++ b/pkgs/development/python-modules/google-cloud-secret-manager/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-secret-manager";
-  version = "2.16.2";
+  version = "2.16.3";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-WWUhCRw5uUomDYFHdkIcigCfZGOzkogAQe+oAoO1/Sk=";
+    hash = "sha256-bKtcvxkno0xYbkr5BDfuo9RP9LQbmoLshvz/CaWsJuo=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/google-cloud-spanner/default.nix b/pkgs/development/python-modules/google-cloud-spanner/default.nix
index c9f568fd816e..3e243e369fe5 100644
--- a/pkgs/development/python-modules/google-cloud-spanner/default.nix
+++ b/pkgs/development/python-modules/google-cloud-spanner/default.nix
@@ -17,14 +17,14 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-spanner";
-  version = "3.38.0";
+  version = "3.40.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-+JprkY2HU6RjkarQ74IemkD8lC3CW53x0kDwhrX/jRk=";
+    hash = "sha256-+dBve2hfb9paeIPlqY//VdXvnBq3tze4NiShNfrXgM0=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/google-cloud-tasks/default.nix b/pkgs/development/python-modules/google-cloud-tasks/default.nix
index 4d2a57a2d8da..fc00275aeeff 100644
--- a/pkgs/development/python-modules/google-cloud-tasks/default.nix
+++ b/pkgs/development/python-modules/google-cloud-tasks/default.nix
@@ -13,14 +13,14 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-tasks";
-  version = "2.13.2";
+  version = "2.14.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-VXYUs5PQ+bH97d/vOAxag4CAn8ROMvPZewF05e/k7PM=";
+    hash = "sha256-yhqD33ORp4WS3Mp1FYOyLJB00KctyN69tKRof/mViik=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/influxdb-client/default.nix b/pkgs/development/python-modules/influxdb-client/default.nix
index 7e858003d02f..699cd2945d73 100644
--- a/pkgs/development/python-modules/influxdb-client/default.nix
+++ b/pkgs/development/python-modules/influxdb-client/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "influxdb-client";
-  version = "1.36.1";
+  version = "1.37.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -25,7 +25,7 @@ buildPythonPackage rec {
     owner = "influxdata";
     repo = "influxdb-client-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-O10q/ResES3mE26LZQLgGPSLjhUCEOwZpm6vZj6H5mQ=";
+    hash = "sha256-paS+/miraJ9vRL1ZEAWJRSVd1hGvrYJe+0YD/F4sGDs=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/json-schema-for-humans/default.nix b/pkgs/development/python-modules/json-schema-for-humans/default.nix
index ee26c7a99f55..40a6fed91682 100644
--- a/pkgs/development/python-modules/json-schema-for-humans/default.nix
+++ b/pkgs/development/python-modules/json-schema-for-humans/default.nix
@@ -18,7 +18,7 @@
 
 buildPythonPackage rec {
   pname = "json-schema-for-humans";
-  version = "0.44.6";
+  version = "0.45.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -27,7 +27,7 @@ buildPythonPackage rec {
     owner = "coveooss";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-Sxk6n+ufTR0ZoGzLQWbriHYyXTCBz39Ls3UkfGr4kOw=";
+    hash = "sha256-9dX9+YwJdJpgU3cZkxk7+CgdRFgcVhrvU0amO8zHZhs=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/mrkd/default.nix b/pkgs/development/python-modules/mrkd/default.nix
deleted file mode 100644
index 0d97a91a16f3..000000000000
--- a/pkgs/development/python-modules/mrkd/default.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, jinja2
-, mistune
-, pygments
-, setuptools
-}:
-
-buildPythonPackage rec {
-  pname = "mrkd";
-  version = "0.2.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "456f8c1be99da268554b29c6b5383532e58119def5a65d85270bc6a0ecc26aaf";
-  };
-
-  propagatedBuildInputs = [ jinja2 mistune pygments setuptools ];
-
-  pythonImportsCheck = [ "mrkd" ];
-
-  meta = with lib; {
-    description = "Write man pages using Markdown, and convert them to Roff or HTML";
-    homepage = "https://github.com/refi64/mrkd";
-    license = licenses.bsd2;
-    # https://github.com/refi64/mrkd/pull/6
-    broken = versionAtLeast mistune.version "2";
-  };
-}
diff --git a/pkgs/development/python-modules/pex/default.nix b/pkgs/development/python-modules/pex/default.nix
index ec6a850eb826..cafca7c29e09 100644
--- a/pkgs/development/python-modules/pex/default.nix
+++ b/pkgs/development/python-modules/pex/default.nix
@@ -7,14 +7,14 @@
 
 buildPythonPackage rec {
   pname = "pex";
-  version = "2.1.137";
+  version = "2.1.141";
   format = "flit";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-ywzmz2R1fdW6TzTEYHq0hfeQnmwkzUecoozlIgXw7es=";
+    hash = "sha256-EsIurZNgWslUciz5Pc2hj2F4tAJ8hQydRWnVIWdryDc=";
   };
 
   nativeBuildInputs = [
@@ -33,6 +33,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/pantsbuild/pex";
     changelog = "https://github.com/pantsbuild/pex/releases/tag/v${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ copumpkin ];
+    maintainers = with maintainers; [ copumpkin phaer ];
   };
 }
diff --git a/pkgs/development/python-modules/trove-classifiers/default.nix b/pkgs/development/python-modules/trove-classifiers/default.nix
index 3454883c6025..911ab5a777b7 100644
--- a/pkgs/development/python-modules/trove-classifiers/default.nix
+++ b/pkgs/development/python-modules/trove-classifiers/default.nix
@@ -8,14 +8,14 @@
 
 buildPythonPackage rec {
   pname = "trove-classifiers";
-  version = "2023.5.24";
+  version = "2023.7.6";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-/VoVRig76UH0dUChNb3q6PsmE4CmogTZwYAS8qGwzq4=";
+    hash = "sha256-io4Wi1HSD+1gcEODHTdjK7UJGdHICmTg8Tk3RGkaiyI=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/yaramod/default.nix b/pkgs/development/python-modules/yaramod/default.nix
index c376c2ddbd6e..83f1f87c2c5d 100644
--- a/pkgs/development/python-modules/yaramod/default.nix
+++ b/pkgs/development/python-modules/yaramod/default.nix
@@ -20,7 +20,7 @@ let
 in
   buildPythonPackage rec {
     pname = "yaramod";
-    version = "3.20.0";
+    version = "3.20.1";
     format = "setuptools";
 
     disabled = pythonOlder "3.7";
@@ -29,7 +29,7 @@ in
       owner = "avast";
       repo = pname;
       rev = "refs/tags/v${version}";
-      hash = "sha256-b4jHveGQGwO1BjpS/WJrMMBGB0LVB6Q7oltq4azp+7o=";
+      hash = "sha256-je4BBJ34VcA8pkvIBXfqrHAhWF+DdakSqeFma3mHpWo=";
     };
 
     postPatch = ''
diff --git a/pkgs/development/tools/deadnix/default.nix b/pkgs/development/tools/deadnix/default.nix
index a2434a95008f..98bb9bc0544b 100644
--- a/pkgs/development/tools/deadnix/default.nix
+++ b/pkgs/development/tools/deadnix/default.nix
@@ -20,6 +20,7 @@ rustPlatform.buildRustPackage rec {
     description = "Find and remove unused code in .nix source files";
     homepage = "https://github.com/astro/deadnix";
     license = licenses.gpl3Only;
+    mainProgram = "deadnix";
     maintainers = with maintainers; [ astro ];
   };
 }
diff --git a/pkgs/development/tools/hclfmt/default.nix b/pkgs/development/tools/hclfmt/default.nix
index ce2baa4fe3d5..c479ef547b60 100644
--- a/pkgs/development/tools/hclfmt/default.nix
+++ b/pkgs/development/tools/hclfmt/default.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
     description = "a code formatter for the Hashicorp Configuration Language (HCL) format";
     homepage = "https://github.com/hashicorp/hcl/tree/main/cmd/hclfmt";
     license = licenses.mpl20;
+    mainProgram = "hclfmt";
     maintainers = with maintainers; [ zimbatm ];
   };
 }
diff --git a/pkgs/development/tools/jaq/default.nix b/pkgs/development/tools/jaq/default.nix
index 4ee02d0a514f..b176869aa084 100644
--- a/pkgs/development/tools/jaq/default.nix
+++ b/pkgs/development/tools/jaq/default.nix
@@ -28,5 +28,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/01mf02/jaq/releases/tag/${src.rev}";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda siraben ];
+    mainProgram = "jaq";
   };
 }
diff --git a/pkgs/development/tools/karma-runner/default.nix b/pkgs/development/tools/karma-runner/default.nix
new file mode 100644
index 000000000000..d05d0e7e3969
--- /dev/null
+++ b/pkgs/development/tools/karma-runner/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildNpmPackage
+, fetchFromGitHub
+}:
+
+buildNpmPackage rec {
+  pname = "karma";
+  version = "6.4.2";
+
+  src = fetchFromGitHub {
+    owner = "karma-runner";
+    repo = "karma";
+    rev = "v${version}";
+    hash = "sha256-v6IiLz65NS8GwM/FPqRxR5qcFDDu7EqloR0SIensdDI=";
+  };
+
+  patches = [
+    ./fix-package-lock.patch
+  ];
+
+  npmDepsHash = "sha256-nX4/96WdPEDZ6DASp+AOBbBbHyq+p2zIh2dZUbtmIPI=";
+
+  env.PUPPETEER_SKIP_CHROMIUM_DOWNLOAD = true;
+
+  meta = {
+    description = "Spectacular Test Runner for JavaScript";
+    homepage = "http://karma-runner.github.io/";
+    license = lib.licenses.mit;
+    mainProgram = "karma";
+    maintainers = with lib.maintainers; [ ];
+  };
+}
diff --git a/pkgs/development/tools/karma-runner/fix-package-lock.patch b/pkgs/development/tools/karma-runner/fix-package-lock.patch
new file mode 100644
index 000000000000..c1a835382513
--- /dev/null
+++ b/pkgs/development/tools/karma-runner/fix-package-lock.patch
@@ -0,0 +1,53 @@
+diff --git a/package-lock.json b/package-lock.json
+index 413cf4d1..1d03d9f5 100644
+--- a/package-lock.json
++++ b/package-lock.json
+@@ -5226,36 +5226,6 @@
+       "integrity": "sha512-ApcjaOdVTJ7y4r08xI5wIqpvwS48Q0PBG4DJROcEkH1f8MdAiNFyFxz3xoL0LWAVwjrwPYZdVHHxhRHcx/uGLA==",
+       "dev": true
+     },
+-    "karma": {
+-      "version": "file:",
+-      "dev": true,
+-      "requires": {
+-        "@colors/colors": "1.5.0",
+-        "body-parser": "^1.19.0",
+-        "braces": "^3.0.2",
+-        "chokidar": "^3.5.1",
+-        "connect": "^3.7.0",
+-        "di": "^0.0.1",
+-        "dom-serialize": "^2.2.1",
+-        "glob": "^7.1.7",
+-        "graceful-fs": "^4.2.6",
+-        "http-proxy": "^1.18.1",
+-        "isbinaryfile": "^4.0.8",
+-        "lodash": "^4.17.21",
+-        "log4js": "^6.4.1",
+-        "mime": "^2.5.2",
+-        "minimatch": "^3.0.4",
+-        "mkdirp": "^0.5.5",
+-        "qjobs": "^1.2.0",
+-        "range-parser": "^1.2.1",
+-        "rimraf": "^3.0.2",
+-        "socket.io": "^4.4.1",
+-        "source-map": "^0.6.1",
+-        "tmp": "^0.2.1",
+-        "ua-parser-js": "^0.7.30",
+-        "yargs": "^16.1.1"
+-      }
+-    },
+     "karma-browserify": {
+       "version": "7.0.0",
+       "resolved": "https://registry.npmjs.org/karma-browserify/-/karma-browserify-7.0.0.tgz",
+diff --git a/package.json b/package.json
+index 347d9e95..90f6d036 100644
+--- a/package.json
++++ b/package.json
+@@ -471,7 +471,6 @@
+     "eslint-plugin-standard": "^4.0.1",
+     "http2": "^3.3.6",
+     "jasmine-core": "^3.6.0",
+-    "karma": ".",
+     "karma-browserify": "^7.0.0",
+     "karma-browserstack-launcher": "^1.6.0",
+     "karma-chai": "^0.1.0",
diff --git a/pkgs/development/tools/ruff/default.nix b/pkgs/development/tools/ruff/default.nix
index 96ef5f4d3c7c..b6f7f6243104 100644
--- a/pkgs/development/tools/ruff/default.nix
+++ b/pkgs/development/tools/ruff/default.nix
@@ -65,6 +65,7 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/astral-sh/ruff";
     changelog = "https://github.com/astral-sh/ruff/releases/tag/v${version}";
     license = licenses.mit;
+    mainProgram = "ruff";
     maintainers = with maintainers; [ figsoda ];
   };
 }
diff --git a/pkgs/development/web/deno/default.nix b/pkgs/development/web/deno/default.nix
index 751e891a3227..85439eec63eb 100644
--- a/pkgs/development/web/deno/default.nix
+++ b/pkgs/development/web/deno/default.nix
@@ -11,15 +11,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "deno";
-  version = "1.35.2";
+  version = "1.36.0";
 
   src = fetchFromGitHub {
     owner = "denoland";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-KyFQtJO78F2CdOqEQOXRoEWtc1N0qp1QWATOC+2JTCg=";
+    hash = "sha256-PV0Q/OtO4AkY3NMwIQIwU0DCkFqXifJFuHb+Q3rIQLI=";
   };
-  cargoHash = "sha256-9Lxkhc0Edpthycwm27d+RZReXut2nUU9i5OZhcwE1YU=";
+
+  cargoHash = "sha256-w0Wr/mwn4Hdfxr7eBdZtpj3MbsMHDwAK2F7XaYEaMCk=";
 
   postPatch = ''
     # upstream uses lld on aarch64-darwin for faster builds
diff --git a/pkgs/development/web/deno/librusty_v8.nix b/pkgs/development/web/deno/librusty_v8.nix
index 50eea6d57b0c..6e9fc0a669fd 100644
--- a/pkgs/development/web/deno/librusty_v8.nix
+++ b/pkgs/development/web/deno/librusty_v8.nix
@@ -11,11 +11,11 @@ let
   };
 in
 fetch_librusty_v8 {
-  version = "0.74.1";
+  version = "0.74.3";
   shas = {
-    x86_64-linux = "sha256-RaqqMHhfNzzhwduEBuyu90doH4gYUYRToqf33Ef+F1Y=";
-    aarch64-linux = "sha256-WKEWmnLJVATwu8FXT1VhVHKcl14pl92sbE9T7rn4ooU=";
-    x86_64-darwin = "sha256-uwIVMiWitd/514NR/B041H75JcqLU+8GpiuQ3dOe0G8=";
-    aarch64-darwin = "sha256-qt9S+qaFSAafMOiLbJLknVzAm6wDglzodLh9Ep3Kdbc=";
+    x86_64-linux = "sha256-8pa8nqA6rbOSBVnp2Q8/IQqh/rfYQU57hMgwU9+iz4A=";
+    aarch64-linux = "sha256-3kXOV8rlCNbNBdXgOtd3S94qO+JIKyOByA4WGX+XVP0=";
+    x86_64-darwin = "sha256-iBBVKZiSoo08YEQ8J/Rt1/5b7a+2xjtuS6QL/Wod5nQ=";
+    aarch64-darwin = "sha256-Djnuc3l/jQKvBf1aej8LG5Ot2wPT0m5Zo1B24l1UHsM=";
   };
 }
diff --git a/pkgs/games/vintagestory/default.nix b/pkgs/games/vintagestory/default.nix
index 40b3e1077248..e7ab08384067 100644
--- a/pkgs/games/vintagestory/default.nix
+++ b/pkgs/games/vintagestory/default.nix
@@ -22,19 +22,19 @@
 
 stdenv.mkDerivation rec {
   pname = "vintagestory";
-  version = if experimental then "1.18.6" else "1.18.6";
+  version = if experimental then "1.18.8-rc.1" else "1.18.7";
 
   src =
     if experimental
     then
       (fetchurl {
-        url = "https://cdn.vintagestory.at/gamefiles/net7/vs_client_linux-x64_${version}.tar.gz";
-        sha256 = "sha256-h4TyMDFid3eB6oPJix92/tmS0v+Ox6CFSRyn/JRNbxg=";
+        url = "https://cdn.vintagestory.at/gamefiles/unstable/vs_client_linux-x64_${version}.tar.gz";
+        hash = "sha256-FxyAJTiLENTp5QxPKRgsiOhkMXz88CTn3QRvIHtOH+A=";
       })
     else
       (fetchurl {
         url = "https://cdn.vintagestory.at/gamefiles/stable/vs_archive_${version}.tar.gz";
-        sha256 = "sha256-Sa5R/Msg36pKRpZJXXJgM4lcCADJX9x81fMnTD3tjAI=";
+        hash = "sha256-geJoNxBxODXQeTExLdTOaH84asjo2yg2xFm8Pj0IMc0=";
       });
 
 
diff --git a/pkgs/os-specific/linux/firmware/linux-firmware/source.nix b/pkgs/os-specific/linux/firmware/linux-firmware/source.nix
index 7cd541402bd1..d0bc79eaa767 100644
--- a/pkgs/os-specific/linux/firmware/linux-firmware/source.nix
+++ b/pkgs/os-specific/linux/firmware/linux-firmware/source.nix
@@ -1,7 +1,7 @@
 # This file is autogenerated! Run ./update.sh to regenerate.
 {
-  version = "unstable-2023-07-24";
-  revision = "59fbffa9ec8e4b0b31d2d13e715cf6580ad0e99c";
-  sourceHash = "sha256-WyO/+fxQljfo6OXLC8/BomGmKtUQaJ1Lt9V5Fdv172g=";
-  outputHash = "sha256-wHWPSyqxP+MGmerbc2v/hclFFJ7qKCDsupK5GASjp8s=";
+  version = "20230804";
+  revision = "20230804";
+  sourceHash = "sha256-TejOQazlH0rBuFHkHooYjR5slpjoSF7TaXvCVUvzevs=";
+  outputHash = "sha256-lD31M1Vio/MJlfKeHGT21xBzQETwgdeiObxPq79SrvU=";
 }
diff --git a/pkgs/servers/antennas/default.nix b/pkgs/servers/antennas/default.nix
new file mode 100644
index 000000000000..c381cde64879
--- /dev/null
+++ b/pkgs/servers/antennas/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildNpmPackage
+, fetchFromGitHub
+}:
+
+buildNpmPackage rec {
+  pname = "antennas";
+  version = "4.2.0";
+
+  src = fetchFromGitHub {
+    owner = "jfarseneau";
+    repo = "antennas";
+    rev = "v${version}";
+    hash = "sha256-UQ+wvm7+x/evmtGwzCkUkrrDMCIZzUL4iSkLmYKJ3Mc=";
+  };
+
+  npmDepsHash = "sha256-D5ss7nCDY3ogZy64iFqLVKbmibAg7C/A+rEHJaE9c2U=";
+
+  dontNpmBuild = true;
+
+  doCheck = true;
+
+  checkPhase = ''
+    runHook preCheck
+
+    npm run test
+
+    runHook postCheck
+  '';
+
+  meta = {
+    description = "HDHomeRun emulator for Plex DVR to connect to Tvheadend";
+    homepage = "https://github.com/jfarseneau/antennas";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ bachp ];
+  };
+}
diff --git a/pkgs/shells/fish/default.nix b/pkgs/shells/fish/default.nix
index a6284298155c..4df95a9ca6fe 100644
--- a/pkgs/shells/fish/default.nix
+++ b/pkgs/shells/fish/default.nix
@@ -299,6 +299,7 @@ let
       license = licenses.gpl2;
       platforms = platforms.unix;
       maintainers = with maintainers; [ cole-h winter srapenne ];
+      mainProgram = "fish";
     };
 
     passthru = {
diff --git a/pkgs/test/texlive/default.nix b/pkgs/test/texlive/default.nix
index cb004dc3c976..0691dad661d7 100644
--- a/pkgs/test/texlive/default.nix
+++ b/pkgs/test/texlive/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, runCommand, fetchurl, file, texlive, writeShellScript, writeText }:
+{ lib, stdenv, buildEnv, runCommand, fetchurl, file, texlive, writeShellScript, writeText }:
 
 {
 
@@ -210,6 +210,16 @@
     mkdir "$out"
   '';
 
+  # verify that the restricted mode gets enabled when
+  # needed (detected by checking if it disallows --gscmd)
+  rpdfcrop = runCommand "texlive-test-rpdfcrop" {
+    nativeBuildInputs = [ (texlive.combine { inherit (texlive) scheme-infraonly pdfcrop; }) ];
+  } ''
+    ! (pdfcrop --gscmd echo $(command -v pdfcrop) 2>&1 || true) | grep 'restricted mode' >/dev/null
+    (rpdfcrop --gscmd echo $(command -v pdfcrop) 2>&1 || true) | grep 'restricted mode' >/dev/null
+    mkdir "$out"
+  '';
+
   # check that all binaries run successfully, in the following sense:
   # (1) run --version, -v, --help, -h successfully; or
   # (2) run --help, -h, or no argument with error code but show help text; or
@@ -218,58 +228,140 @@
   # compiled binaries or trivial shell wrappers
   binaries = let
       # TODO known broken binaries
-      broken = [ "albatross" "arara" "bbl2bib" "bib2gls" "bibdoiadd" "bibmradd" "bibzbladd" "citeproc" "convbkmk"
-        "convertgls2bib" "ctan-o-mat" "ctanify" "ctanupload" "dtxgen" "ebong" "epspdftk" "exceltex" "gsx" "htcontext"
-        "installfont-tl" "kanji-fontmap-creator" "ketcindy" "latex-git-log" "latex2nemeth" "ltxfileinfo" "match_parens"
-        "pdfannotextractor" "purifyeps" "pythontex" "svn-multi" "texexec" "texosquery" "texosquery-jre5"
-        "texosquery-jre8" "texplate" "tlcockpit" "tlmgr" "tlshell" "ulqda" "xhlatex" ];
+      broken = [
+        # *.inc files in source container rather than run
+        "texaccents"
+
+        # 'Error initialising QuantumRenderer: no suitable pipeline found'
+        "tlcockpit"
+
+        # 'tlmgr: config.guess script does not exist, goodbye'
+        "tlshell"
+      ] ++ lib.optional stdenv.isDarwin "epspdftk";  # wish shebang is a script, not a binary!
+
       # (1) binaries requiring -v
       shortVersion = [ "devnag" "diadia" "pmxchords" "ptex2pdf" "simpdftex" "ttf2afm" ];
       # (1) binaries requiring --help or -h
       help = [ "arlatex" "bundledoc" "cachepic" "checklistings" "dvipos" "extractres" "fig4latex" "fragmaster"
-        "kpsewhere" "mendex" "pn2pdf" "psbook" "psnup" "psresize" "simpdftex" "tex2xindy" "texluac" "texluajitc"
-        "urlbst" "yplan" ];
-      shortHelp = [ "adhocfilelist" "authorindex" "biburl2doi" "disdvi" "dvibook" "dviconcat" "getmapdl" "latex2man"
-        "lprsetup.sh" "pygmentex" ];
+        "kpsewhere" "latex-git-log" "ltxfileinfo" "mendex" "perltex" "pn2pdf" "psbook" "psnup" "psresize" "purifyeps"
+        "simpdftex" "tex2xindy" "texluac" "texluajitc" "urlbst" "yplan" ];
+      shortHelp = [ "adhocfilelist" "authorindex" "bbl2bib" "bibdoiadd" "bibmradd" "biburl2doi" "bibzbladd" "ctanupload"
+        "disdvi" "dvibook" "dviconcat" "getmapdl" "latex2man" "listings-ext.sh" "pygmentex" ];
       # (2) binaries that return non-zero exit code even if correctly asked for help
       ignoreExitCode = [ "authorindex" "dvibook" "dviconcat" "dvipos" "extractres" "fig4latex" "fragmaster" "latex2man"
-        "lprsetup.sh" "pdf2dsc" "psbook" "psnup" "psresize" "tex2xindy" "texluac" "texluajitc" ];
+        "latex-git-log" "listings-ext.sh" "psbook" "psnup" "psresize" "purifyeps" "tex2xindy"  "texluac"
+        "texluajitc" ];
       # (2) binaries that print help on no argument, returning non-zero exit code
       noArg = [ "a2ping" "bg5+latex" "bg5+pdflatex" "bg5latex" "bg5pdflatex" "cef5latex" "cef5pdflatex" "ceflatex"
-        "cefpdflatex" "cefslatex" "cefspdflatex" "chkdvifont" "dvi2fax" "dvipdf" "dvired" "dviselect"
-        "dvitodvi" "eps2eps" "epsffit" "findhyph" "gbklatex" "gbkpdflatex" "komkindex" "kpsepath" "listbib"
-        "listings-ext" "mag" "mathspic" "mf2pt1" "mk4ht" "mkt1font" "mkgrkindex" "musixflx" "pdf2ps" "pdftosrc"
-        "pdfxup" "pedigree" "pfb2pfa" "pfbtopfa" "pk2bm" "pphs" "prepmx" "ps2pk" "ps2pdf*" "ps2ps*" "psselect" "pstops"
-        "rubibtex" "rubikrotation" "sjislatex" "sjispdflatex" "srcredact" "t4ht" "tex4ht" "texdiff" "texdirflatten"
-        "texplate" "tie" "ttf2kotexfont" "ttfdump" "vlna" "vpl2ovp" "vpl2vpl" "yplan" ];
-      # (3) binary requiring a .tex file
-      tex = [ "de-macro" "e2pall" "makeindex" "pslatex" "rumakeindex" "tpic2pdftex" "wordcount" ];
+        "cefpdflatex" "cefslatex" "cefspdflatex" "chkdvifont" "dvi2fax" "dvired" "dviselect" "dvitodvi" "epsffit"
+        "findhyph" "gbklatex" "gbkpdflatex" "komkindex" "kpsepath" "listbib" "listings-ext" "mag" "mathspic" "mf2pt1"
+        "mk4ht" "mkt1font" "mkgrkindex" "musixflx" "pdf2ps" "pdftosrc" "pdfxup" "pedigree" "pfb2pfa" "pk2bm" "prepmx"
+        "ps2pk" "psselect" "pstops" "rubibtex" "rubikrotation" "sjislatex" "sjispdflatex" "srcredact" "t4ht" "tex4ht"
+        "texdiff" "texdirflatten" "texplate" "tie" "ttf2kotexfont" "ttfdump" "vlna" "vpl2ovp" "vpl2vpl" "yplan" ];
+      # (3) binaries requiring a .tex file
+      contextTest = [ "htcontext" ];
+      latexTest = [ "de-macro" "e2pall" "htlatex" "htxelatex" "makeindex" "pslatex" "rumakeindex" "tpic2pdftex"
+        "wordcount" "xhlatex" ];
+      texTest = [ "fontinst" "htmex" "httex" "httexi" "htxetex" ];
       # tricky binaries or scripts that are obviously working but are hard to test
       # (e.g. because they expect user input no matter the arguments)
       # (printafm comes from ghostscript, not texlive)
-      ignored = [ "dt2dv" "dv2dt" "dvi2tty" "dvidvi" "dvispc" "fontinst" "ht" "htlatex" "htmex" "httex" "httexi"
-        "htxelatex" "htxetex" "otp2ocp" "outocp" "pmxab" "printafm" ];
-      testTex = writeText "test.tex" ''
+      ignored = [
+        # compiled binaries
+        "dt2dv" "dv2dt" "dvi2tty" "dvidvi" "dvispc" "otp2ocp" "outocp" "pmxab"
+
+        # GUI scripts that accept no argument or crash without a graphics server; please test manualy
+        "epspdftk" "texdoctk" "xasy"
+
+        # requires Cinderella, not open source and not distributed via Nixpkgs
+        "ketcindy"
+      ];
+      # binaries that need a combined scheme and cannot work standalone
+      needScheme = [
+        # pfarrei: require working kpse to find lua module
+        "a5toa4"
+
+        # bibexport: requires kpsewhich
+        "bibexport"
+
+        # crossrefware: require bibtexperllibs under TEXMFROOT
+        "bbl2bib" "bibdoiadd" "bibmradd" "biburl2doi" "bibzbladd" "checkcites" "ltx2crossrefxml"
+
+        # require other texlive binaries in PATH
+        "allcm" "allec" "chkweb" "fontinst" "ht*" "installfont-tl" "kanji-config-updmap-sys" "kanji-config-updmap-user"
+        "kpse*" "latexfileversion" "mkocp" "mkofm" "mtxrunjit" "pdftex-quiet" "pslatex" "rumakeindex" "texconfig"
+        "texconfig-sys" "texexec" "texlinks" "texmfstart" "typeoutfileinfo" "wordcount" "xdvi" "xhlatex"
+
+        # misc luatex binaries searching for luatex in PATH
+        "citeproc-lua" "context" "contextjit" "ctanbib" "digestif" "epspdf" "l3build" "luafindfont" "luaotfload-tool"
+        "luatools" "make4ht" "pmxchords" "tex4ebook" "texdoc" "texlogsieve" "xindex"
+
+        # requires full TEXMFROOT (e.g. for config)
+        "mktexfmt" "mktexmf" "mktexpk" "mktextfm" "psnup" "psresize" "pstops" "tlmgr" "updmap" "webquiz"
+
+        # texlive-scripts: requires texlive.infra's TeXLive::TLUtils under TEXMFROOT
+        "fmtutil" "fmtutil-sys" "fmtutil-user"
+
+        # texlive-scripts: not used in nixpkgs, need updmap in PATH
+        "updmap-sys" "updmap-user"
+      ];
+
+      # simple test files
+      contextTestTex = writeText "context-test.tex" ''
+        \starttext
+          A simple test file.
+        \stoptext
+      '';
+      latexTestTex = writeText "latex-test.tex" ''
         \documentclass{article}
         \begin{document}
           A simple test file.
         \end{document}
       '';
+      texTestTex = writeText "tex-test.tex" ''
+        Hello.
+        \bye
+      '';
+
+      # link all binaries in single derivation
+      allPackages = with lib; concatLists (catAttrs "pkgs" (filter isAttrs (attrValues texlive)));
+      binPackages = lib.filter (p: p.tlType == "bin") allPackages;
+      binaries = buildEnv { name = "texlive-binaries"; paths = binPackages; };
     in
-    runCommand "texlive-test-binaries" { inherit testTex; }
+    runCommand "texlive-test-binaries"
+      {
+        inherit binaries contextTestTex latexTestTex texTestTex;
+        texliveScheme = texlive.combined.scheme-full;
+      }
       ''
+        loadables="$(command -v bash)"
+        loadables="''${loadables%/bin/bash}/lib/bash"
+        enable -f "$loadables/realpath" realpath
         mkdir -p "$out"
         export HOME="$(mktemp -d)"
         declare -i binCount=0 ignoredCount=0 brokenCount=0 failedCount=0
-        cp "$testTex" test.tex
+        cp "$contextTestTex" context-test.tex
+        cp "$latexTestTex" latex-test.tex
+        cp "$texTestTex" tex-test.tex
 
         testBin () {
+          path="$(realpath "$bin")"
+          path="''${path##*/}"
           if [[ -z "$ignoreExitCode" ]] ; then
-            "$bin" $args >"$out/$base.log" 2>&1
-            return $?
+            PATH="$path" "$bin" $args >"$out/$base.log" 2>&1
+            ret=$?
+            if [[ $ret == 0 ]] && grep -i 'command not found' "$out/$base.log" >/dev/null ; then
+              echo "command not found when running '$base''${args:+ $args}'"
+              return 1
+            fi
+            return $ret
           else
-            "$bin" $args >"$out/$base.log" 2>&1
+            PATH="$path" "$bin" $args >"$out/$base.log" 2>&1
             ret=$?
+            if [[ $ret == 0 ]] && grep -i 'command not found' "$out/$base.log" >/dev/null ; then
+              echo "command not found when running '$base''${args:+ $args}'"
+              return 1
+            fi
             if ! grep -Ei '(Example:|Options:|Syntax:|Usage:|improper command|SYNOPSIS)' "$out/$base.log" >/dev/null ; then
               echo "did not find usage info when running '$base''${args:+ $args}'"
               return $ret
@@ -277,7 +369,7 @@
           fi
         }
 
-        for bin in ${texlive.combined.scheme-full}/bin/* ; do
+        for bin in "$binaries"/bin/* ; do
           base="''${bin##*/}"
           args=
           ignoreExitCode=
@@ -295,10 +387,19 @@
               args=-h ;;
             ${lib.concatStringsSep "|" noArg})
               ;;
-            ${lib.concatStringsSep "|" tex})
-              args=test.tex ;;
+            ${lib.concatStringsSep "|" contextTest})
+              args=context-test.tex ;;
+            ${lib.concatStringsSep "|" latexTest})
+              args=latex-test.tex ;;
+            ${lib.concatStringsSep "|" texTest})
+              args=tex-test.tex ;;
             ${lib.concatStringsSep "|" shortVersion})
               args=-v ;;
+            ebong)
+              touch empty
+              args=empty ;;
+            ht)
+              args='latex latex-test.tex' ;;
             pdf2dsc)
               args='--help --help --help' ;;
             typeoutfileinfo)
@@ -312,16 +413,57 @@
               ignoreExitCode=1 ;;
           esac
 
+          case "$base" in
+            ${lib.concatStringsSep "|" needScheme})
+              bin="$texliveScheme/bin/$base"
+              if [[ ! -f "$bin" ]] ; then
+                ignoredCount=$((ignoredCount + 1))
+                continue
+              fi ;;
+          esac
+
           if testBin ; then : ; else # preserve exit code
             echo "failed '$base''${args:+ $args}' (exit code: $?)"
+            sed 's/^/  > /' < "$out/$base.log"
             failedCount=$((failedCount + 1))
           fi
         done
 
-        echo "tested $binCount binCount: $ignoredCount ignored, $brokenCount broken, $failedCount failed"
+        echo "tested $binCount binaries: $ignoredCount ignored, $brokenCount broken, $failedCount failed"
         [[ $failedCount = 0 ]]
       '';
 
+  # check that all scripts have a Nix shebang
+  shebangs = let
+      allPackages = with lib; concatLists (catAttrs "pkgs" (filter isAttrs (attrValues texlive)));
+      binPackages = lib.filter (p: p.tlType == "bin") allPackages;
+    in
+    runCommand "texlive-test-shebangs" { }
+      (''
+        echo "checking that all texlive scripts shebangs are in '$NIX_STORE'"
+        declare -i scriptCount=0 invalidCount=0
+      '' +
+      (lib.concatMapStrings
+        (pkg: ''
+          for bin in '${pkg.outPath}'/bin/* ; do
+            grep -I -q . "$bin" || continue  # ignore binary files
+            scriptCount=$((scriptCount + 1))
+            read -r cmdline < "$bin"
+            read -r interp <<< "$cmdline"
+            if [[ "$interp" != "#!$NIX_STORE"/* && "$interp" != "#! $NIX_STORE"/* ]] ; then
+              echo "error: non-nix shebang '$interp' in script '$bin'"
+              invalidCount=$((invalidCount + 1))
+            fi
+          done
+        '')
+        binPackages)
+      + ''
+        echo "checked $scriptCount scripts, found $invalidCount non-nix shebangs"
+        [[ $invalidCount -gt 0 ]] && exit 1
+        mkdir -p "$out"
+      ''
+      );
+
   # verify that the precomputed licensing information in default.nix
   # does indeed match the metadata of the individual packages.
   #
diff --git a/pkgs/tools/audio/playerctl/default.nix b/pkgs/tools/audio/playerctl/default.nix
index d9f408bf9eda..b28ab390e01c 100644
--- a/pkgs/tools/audio/playerctl/default.nix
+++ b/pkgs/tools/audio/playerctl/default.nix
@@ -23,5 +23,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.unix;
     maintainers = with maintainers; [ puffnfresh ];
     broken = stdenv.hostPlatform.isDarwin;
+    mainProgram = "playerctl";
   };
 }
diff --git a/pkgs/tools/backup/pgbackrest/default.nix b/pkgs/tools/backup/pgbackrest/default.nix
index fc86d5922eb7..3cf9ebecfff0 100644
--- a/pkgs/tools/backup/pgbackrest/default.nix
+++ b/pkgs/tools/backup/pgbackrest/default.nix
@@ -34,6 +34,7 @@ stdenv.mkDerivation rec {
     homepage = "https://pgbackrest.org/";
     changelog = "https://github.com/pgbackrest/pgbackrest/releases";
     license = licenses.mit;
+    mainProgram = "pgbackrest";
     maintainers = with maintainers; [ zaninime ];
   };
 }
diff --git a/pkgs/tools/misc/balanceofsatoshis/default.nix b/pkgs/tools/misc/balanceofsatoshis/default.nix
new file mode 100644
index 000000000000..b1b17e02366b
--- /dev/null
+++ b/pkgs/tools/misc/balanceofsatoshis/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, buildNpmPackage
+, fetchFromGitHub
+, installShellFiles
+, python3
+}:
+
+buildNpmPackage rec {
+  pname = "balanceofsatoshis";
+  version = "15.8.15";
+
+  src = fetchFromGitHub {
+    owner = "alexbosworth";
+    repo = "balanceofsatoshis";
+    rev = "v${version}";
+    hash = "sha256-8GWITeFn7ELUH7bxcNlmQvgperQutBwVUhp2yjeEWrM=";
+  };
+
+  npmDepsHash = "sha256-lTXv4pEjrzcOK68RO1K007r7dCbAyc45G8Oy8V3XLts=";
+
+  nativeBuildInputs = [
+    installShellFiles
+    python3
+  ];
+
+  dontNpmBuild = true;
+
+  npmFlags = [ "--ignore-scripts" ];
+
+  postInstall = ''
+    installShellCompletion --cmd bos \
+        --bash <($out/bin/bos completion bash) \
+        --zsh <($out/bin/bos completion zsh) \
+        --fish <($out/bin/bos completion fish)
+  '';
+
+  meta = {
+    changelog = "https://github.com/alexbosworth/balanceofsatoshis/blob/${src.rev}/CHANGELOG.md";
+    description = "Tool for working with the balance of your satoshis on LND";
+    homepage = "https://github.com/alexbosworth/balanceofsatoshis";
+    license = lib.licenses.mit;
+    mainProgram = "bos";
+    maintainers = with lib.maintainers; [ mmilata ];
+  };
+}
diff --git a/pkgs/tools/misc/hueadm/default.nix b/pkgs/tools/misc/hueadm/default.nix
new file mode 100644
index 000000000000..393f4baa955b
--- /dev/null
+++ b/pkgs/tools/misc/hueadm/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, buildNpmPackage
+, fetchFromGitHub
+}:
+
+buildNpmPackage rec {
+  pname = "hueadm";
+  version = "1.2.1";
+
+  src = fetchFromGitHub {
+    owner = "bahamas10";
+    repo = "hueadm";
+    rev = "v${version}";
+    hash = "sha256-QNjkfE8V/lUkYP8NAf11liKXILBk3wSNm3NSrgaH+nc=";
+  };
+
+  npmDepsHash = "sha256-EbwHbPe8QvT6ekH20q+ihGmwpAHykwkwoJ6vwAf0FlA=";
+
+  dontNpmBuild = true;
+
+  meta = {
+    description = "Command line management interface to Philips Hue";
+    homepage = "https://github.com/bahamas10/hueadm";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ infinisil ];
+  };
+}
diff --git a/pkgs/development/python-modules/lektor/default.nix b/pkgs/tools/misc/lektor/default.nix
index b483a05caabb..b9c6cd4a69de 100644
--- a/pkgs/development/python-modules/lektor/default.nix
+++ b/pkgs/tools/misc/lektor/default.nix
@@ -1,45 +1,18 @@
 { lib
-, babel
-, buildPythonPackage
-, click
-, exifread
 , fetchFromGitHub
 , fetchNpmDeps
-, filetype
-, flask
-, hatch-vcs
-, hatchling
-, importlib-metadata
-, inifile
-, jinja2
-, markupsafe
-, marshmallow
-, marshmallow-dataclass
-, mistune
 , nodejs
 , npmHooks
-, pillow
-, pip
-, pytest-click
-, pytest-mock
-, pytest-pylint
-, pytestCheckHook
-, python
-, pythonOlder
-, python-slugify
-, pytz
-, requests
-, watchfiles
-, werkzeug
+, python3
 }:
 
-buildPythonPackage rec {
+let
+  python = python3;
+in python.pkgs.buildPythonApplication rec {
   pname = "lektor";
   version = "3.4.0b8";
   format = "pyproject";
 
-  disabled = pythonOlder "3.7";
-
   src = fetchFromGitHub {
     owner = "lektor";
     repo = pname;
@@ -55,15 +28,15 @@ buildPythonPackage rec {
   npmRoot = "frontend";
 
   nativeBuildInputs = [
-    hatch-vcs
-    hatchling
+    python.pkgs.hatch-vcs
+    python.pkgs.hatchling
     nodejs
     npmHooks.npmConfigHook
   ];
 
   env.SETUPTOOLS_SCM_PRETEND_VERSION = version;
 
-  propagatedBuildInputs = [
+  propagatedBuildInputs = with python.pkgs; [
     babel
     click
     exifread
@@ -81,13 +54,9 @@ buildPythonPackage rec {
     requests
     watchfiles
     werkzeug
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    pytz
   ];
 
-  nativeCheckInputs = [
+  nativeCheckInputs = with python.pkgs; [
     pytest-click
     pytest-mock
     pytestCheckHook
@@ -114,6 +83,7 @@ buildPythonPackage rec {
     homepage = "https://www.getlektor.com/";
     changelog = "https://github.com/lektor/lektor/blob/v${version}/CHANGES.md";
     license = licenses.bsd0;
+    mainProgram = "lektor";
     maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/tools/misc/starship/default.nix b/pkgs/tools/misc/starship/default.nix
index fa88b633d219..b8f7e8cdbf36 100644
--- a/pkgs/tools/misc/starship/default.nix
+++ b/pkgs/tools/misc/starship/default.nix
@@ -52,5 +52,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://starship.rs";
     license = licenses.isc;
     maintainers = with maintainers; [ bbigras danth davidtwco Br1ght0ne Frostman marsam ];
+    mainProgram = "starship";
   };
 }
diff --git a/pkgs/tools/networking/castnow/default.nix b/pkgs/tools/networking/castnow/default.nix
new file mode 100644
index 000000000000..43a15a2c1c10
--- /dev/null
+++ b/pkgs/tools/networking/castnow/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, buildNpmPackage
+, fetchFromGitHub
+}:
+
+buildNpmPackage rec {
+  pname = "castnow";
+  version = "0.6.0";
+
+  src = fetchFromGitHub {
+    owner = "xat";
+    repo = "castnow";
+    rev = "v${version}";
+    hash = "sha256-vAjeDPH+Lu/vj3GhwytXqpbSkg5hKpXsMRNV+8TUeio=";
+  };
+
+  npmDepsHash = "sha256-1cLuti3JHpMHn1sno8gE8Ko+eoUWCqFUfIDIBAS+M34=";
+
+  dontNpmBuild = true;
+
+  meta = {
+    description = "Command-line Chromecast player";
+    homepage = "commandline chromecast player";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ ];
+  };
+}
diff --git a/pkgs/tools/networking/curl/default.nix b/pkgs/tools/networking/curl/default.nix
index fd5ad84abf69..30f00df912c4 100644
--- a/pkgs/tools/networking/curl/default.nix
+++ b/pkgs/tools/networking/curl/default.nix
@@ -196,5 +196,6 @@ stdenv.mkDerivation (finalAttrs: {
     # Fails to link against static brotli or gss
     broken = stdenv.hostPlatform.isStatic && (brotliSupport || gssSupport);
     pkgConfigModules = [ "libcurl" ];
+    mainProgram = "curl";
   };
 })
diff --git a/pkgs/tools/networking/socat/default.nix b/pkgs/tools/networking/socat/default.nix
index 00c0ad7bd131..c34aa7ab4c22 100644
--- a/pkgs/tools/networking/socat/default.nix
+++ b/pkgs/tools/networking/socat/default.nix
@@ -41,5 +41,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.unix;
     license = with licenses; [ gpl2Only ];
     maintainers = with maintainers; [ eelco ];
+    mainProgram = "socat";
   };
 }
diff --git a/pkgs/tools/nix/statix/default.nix b/pkgs/tools/nix/statix/default.nix
index e4e3cb857503..1ae3a8525a8f 100644
--- a/pkgs/tools/nix/statix/default.nix
+++ b/pkgs/tools/nix/statix/default.nix
@@ -25,6 +25,7 @@ rustPlatform.buildRustPackage rec {
     description = "Lints and suggestions for the nix programming language";
     homepage = "https://github.com/nerdypepper/statix";
     license = licenses.mit;
+    mainProgram = "statix";
     maintainers = with maintainers; [ figsoda nerdypepper ];
   };
 }
diff --git a/pkgs/tools/security/exploitdb/default.nix b/pkgs/tools/security/exploitdb/default.nix
index 00f93f5e9778..251b585d7ac7 100644
--- a/pkgs/tools/security/exploitdb/default.nix
+++ b/pkgs/tools/security/exploitdb/default.nix
@@ -6,13 +6,13 @@
 
 stdenv.mkDerivation rec {
   pname = "exploitdb";
-  version = "2023-08-01";
+  version = "2023-08-03";
 
   src = fetchFromGitLab {
     owner = "exploit-database";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-s0D7NMgU2cApeZWqAFGtLk8DdkGNVLh2kY/xNK7W7c0=";
+    hash = "sha256-mS77s3wBVGRxGrPxjOCi5QN82N2N4pIPrxz5JczaIBc=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/tools/security/grype/default.nix b/pkgs/tools/security/grype/default.nix
index 3b096f8869d0..cb21ecb119c7 100644
--- a/pkgs/tools/security/grype/default.nix
+++ b/pkgs/tools/security/grype/default.nix
@@ -7,13 +7,13 @@
 
 buildGoModule rec {
   pname = "grype";
-  version = "0.65.0";
+  version = "0.65.1";
 
   src = fetchFromGitHub {
     owner = "anchore";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-Dqjdl0fco3t8/jVt9/7pwXzoKapctU3T+ixkKTQ6sAE=";
+    hash = "sha256-hmjg1W1E1pdrHxPA7qbEJP0R1mEiV0P54+y+RXxKH4c=";
     # populate values that require us to use git. By doing this in postFetch we
     # can delete .git afterwards and maintain better reproducibility of the src.
     leaveDotGit = true;
diff --git a/pkgs/tools/security/yubikey-touch-detector/default.nix b/pkgs/tools/security/yubikey-touch-detector/default.nix
index 9e66a5ffd5a8..26402caa812b 100644
--- a/pkgs/tools/security/yubikey-touch-detector/default.nix
+++ b/pkgs/tools/security/yubikey-touch-detector/default.nix
@@ -49,5 +49,6 @@ buildGoModule rec {
     maintainers = with maintainers; [ sumnerevans ];
     license = with licenses; [ bsd2 isc ];
     platforms = platforms.linux;
+    mainProgram = "yubikey-touch-detector";
   };
 }
diff --git a/pkgs/tools/text/markdownlint-cli/default.nix b/pkgs/tools/text/markdownlint-cli/default.nix
new file mode 100644
index 000000000000..6916999cb42e
--- /dev/null
+++ b/pkgs/tools/text/markdownlint-cli/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildNpmPackage
+, fetchFromGitHub
+}:
+
+buildNpmPackage rec {
+  pname = "markdownlint-cli";
+  version = "0.35.0";
+
+  src = fetchFromGitHub {
+    owner = "igorshubovych";
+    repo = "markdownlint-cli";
+    rev = "v${version}";
+    hash = "sha256-PkvgZn7cQafKO7p5i1fYYZrWjNcFuX700r223qUMN5I=";
+  };
+
+  npmDepsHash = "sha256-hh8T2MRjUJQVibd+cY7vkJvBgNDueWuluGE3HxWOCU8=";
+
+  dontNpmBuild = true;
+
+  meta = {
+    description = "Command line interface for MarkdownLint";
+    homepage = "https://github.com/igorshubovych/markdownlint-cli";
+    license = lib.licenses.mit;
+    mainProgram = "markdownlint";
+    maintainers = with lib.maintainers; [ ambroisie ];
+  };
+}
diff --git a/pkgs/tools/text/mrkd/default.nix b/pkgs/tools/text/mrkd/default.nix
new file mode 100644
index 000000000000..b43b6cfdf6ab
--- /dev/null
+++ b/pkgs/tools/text/mrkd/default.nix
@@ -0,0 +1,52 @@
+{ lib
+, python3
+, fetchPypi
+}:
+
+let
+  python = python3.override {
+    packageOverrides = self: super: {
+      # https://github.com/refi64/mrkd/pull/6
+      mistune = super.mistune.overridePythonAttrs (old: rec {
+        version = "0.8.4";
+        src = fetchPypi {
+          inherit (old) pname;
+          inherit version;
+          hash = "sha256-WaNCnbU8ULXGvMigf4hIywDX3IvbQxpKtBkg0gHUdW4=";
+        };
+        meta = old.meta // {
+          knownVulnerabilities = [
+            "CVE-2022-34749"
+          ];
+        };
+      });
+    };
+  };
+in python.pkgs.buildPythonApplication rec {
+  pname = "mrkd";
+  version = "0.2.0";
+
+  format = "setuptools";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "456f8c1be99da268554b29c6b5383532e58119def5a65d85270bc6a0ecc26aaf";
+  };
+
+  propagatedBuildInputs = with python.pkgs; [
+    jinja2
+    mistune
+    pygments
+    setuptools
+  ];
+
+  pythonImportsCheck = [ "mrkd" ];
+
+  meta = with lib; {
+    description = "Write man pages using Markdown, and convert them to Roff or HTML";
+    homepage = "https://github.com/refi64/mrkd";
+    license = licenses.bsd2;
+    mainProgram = "mrkd";
+    maintainers = with maintainers; [ prusnak ];
+  };
+}
diff --git a/pkgs/tools/typesetting/tex/texlive/UPGRADING.md b/pkgs/tools/typesetting/tex/texlive/UPGRADING.md
index c9d4a81a2c39..302fac3020a6 100644
--- a/pkgs/tools/typesetting/tex/texlive/UPGRADING.md
+++ b/pkgs/tools/typesetting/tex/texlive/UPGRADING.md
@@ -98,3 +98,34 @@ a message like
 
 Please make sure to follow the [CONTRIBUTING](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md)
 guidelines.
+
+## Reviewing the bin containers
+
+Most `tlType == "bin"` containers consist of links to scripts distributed in
+`$TEXMFDIST/scripts` with a number of patches applied within `default.nix`.
+
+At each upgrade, please run the tests `tests.texlive.shebangs` to verify that
+all shebangs have been patched and in case add the relevant interpreters, and
+use `tests.texlive.binaries` to check if basic execution of all binaries works.
+
+Please review manually all binaries in the `broken` and `ignored` lists of
+`tests.texlive.binaries` at least once for major TeX Live release.
+
+Since the tests cannot catch all runtime dependencies, you should grep the
+`$TEXMFDIST/scripts` folder for common cases, for instance (where `$scripts`
+points to the relevant folder of `scheme-full`):
+- Calls to `exec $interpreter`
+  ```
+  grep -IRS 'exec ' "$TEXMFDIST/scripts" | cut -d: -f2 | sort -u | less -S
+  ```
+- Calls to Ghostscripts (see `needsGhostscript` in `combine.nix`)
+  ```
+  grep -IR '\([^a-zA-Z]\|^\)gs\( \|$\|"\)' "$TEXMFDIST"/scripts
+  grep -IR 'rungs' "$TEXMFDIST"
+  ```
+
+As a general rule, if a runtime dependency as above is essential for the core
+functionality of the package, then it should be made available in the bin
+containers (by patching `PATH`), or in `texlive.combine` (as we do for
+Ghostscript). Non-essential runtime dependencies should be ignored if they
+increase the closure substantially.
diff --git a/pkgs/tools/typesetting/tex/texlive/bin.nix b/pkgs/tools/typesetting/tex/texlive/bin.nix
index b48886e10096..21e916f66429 100644
--- a/pkgs/tools/typesetting/tex/texlive/bin.nix
+++ b/pkgs/tools/typesetting/tex/texlive/bin.nix
@@ -5,7 +5,7 @@
 , perl, perlPackages, python3Packages, pkg-config
 , libpaper, graphite2, zziplib, harfbuzz, potrace, gmp, mpfr
 , brotli, cairo, pixman, xorg, clisp, biber, woff2, xxHash
-, makeWrapper, shortenPerlShebang, useFixedHashes
+, makeWrapper, shortenPerlShebang, useFixedHashes, asymptote
 }:
 
 # Useful resource covering build options:
@@ -387,38 +387,6 @@ dvipng = stdenv.mkDerivation {
   enableParallelBuilding = true;
 };
 
-
-latexindent = perlPackages.buildPerlPackage rec {
-  pname = "latexindent";
-  inherit (src) version;
-
-  src = assertFixedHash pname (lib.head (builtins.filter (p: p.tlType == "run") texlive.latexindent.pkgs));
-
-  outputs = [ "out" ];
-
-  nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang;
-  propagatedBuildInputs = with perlPackages; [ FileHomeDir LogDispatch LogLog4perl UnicodeLineBreak YAMLTiny ];
-
-  postPatch = ''
-    substituteInPlace scripts/latexindent/LatexIndent/GetYamlSettings.pm \
-      --replace '$FindBin::RealBin/defaultSettings.yaml' ${src}/scripts/latexindent/defaultSettings.yaml
-  '';
-
-  # Dirty hack to apply perlFlags, but do no build
-  preConfigure = ''
-    touch Makefile.PL
-  '';
-  dontBuild = true;
-  installPhase = ''
-    install -D ./scripts/latexindent/latexindent.pl "$out"/bin/latexindent
-    mkdir -p "$out"/${perl.libPrefix}
-    cp -r ./scripts/latexindent/LatexIndent "$out"/${perl.libPrefix}/
-  '' + lib.optionalString stdenv.isDarwin ''
-    shortenPerlShebang "$out"/bin/latexindent
-  '';
-};
-
-
 pygmentex = python3Packages.buildPythonApplication rec {
   pname = "pygmentex";
   inherit (src) version;
@@ -456,27 +424,7 @@ pygmentex = python3Packages.buildPythonApplication rec {
   };
 };
 
-
-texlinks = stdenv.mkDerivation rec {
-  name = "texlinks";
-
-  src = assertFixedHash name (lib.head (builtins.filter (p: p.tlType == "run") texlive.texlive-scripts-extra.pkgs));
-
-  dontBuild = true;
-  doCheck = false;
-
-  installPhase = ''
-    runHook preInstall
-
-    # Patch texlinks.sh back to 2015 version;
-    # otherwise some bin/ links break, e.g. xe(la)tex.
-    patch --verbose -R scripts/texlive-extra/texlinks.sh < '${./texlinks.diff}'
-    install -Dm555 scripts/texlive-extra/texlinks.sh "$out"/bin/texlinks
-
-    runHook postInstall
-  '';
-};
-
+inherit asymptote;
 
 inherit biber;
 bibtexu = bibtex8;
diff --git a/pkgs/tools/typesetting/tex/texlive/combine.nix b/pkgs/tools/typesetting/tex/texlive/combine.nix
index 38a26721abfd..8d4c2998d6d4 100644
--- a/pkgs/tools/typesetting/tex/texlive/combine.nix
+++ b/pkgs/tools/typesetting/tex/texlive/combine.nix
@@ -1,39 +1,26 @@
 params: with params;
 # combine =
 args@{
-  pkgFilter ? (pkg: pkg.tlType == "run" || pkg.tlType == "bin" || pkg.pname == "core")
+  pkgFilter ? (pkg: pkg.tlType == "run" || pkg.tlType == "bin" || pkg.pname == "core"
+                    || pkg.hasManpages or false)
 , extraName ? "combined"
 , extraVersion ? ""
 , ...
 }:
 let
-  pkgSet = removeAttrs args [ "pkgFilter" "extraName" "extraVersion" ] // {
-    # include a fake "core" package
-    core.pkgs = [
-      (bin.core.out // { pname = "core"; tlType = "bin"; })
-      (bin.core.doc // { pname = "core"; tlType = "doc"; })
-    ];
-  };
+  pkgSet = removeAttrs args [ "pkgFilter" "extraName" "extraVersion" ];
   pkgList = rec {
     combined = combinePkgs (lib.attrValues pkgSet);
     all = lib.filter pkgFilter combined;
     splitBin = builtins.partition (p: p.tlType == "bin") all;
-    bin = splitBin.right
-      ++ lib.optional
-          (lib.any (p: p.tlType == "run" && p.pname == "pdfcrop") splitBin.wrong)
-          (lib.getBin ghostscript);
+    bin = splitBin.right;
     nonbin = splitBin.wrong;
     tlpkg = lib.filter (pkg: pkg.tlType == "tlpkg") combined;
-
-    # extra interpreters needed for shebangs, based on 2015 schemes "medium" and "tetex"
-    # (omitted tk needed in pname == "epspdf", bin/epspdftk)
-    pkgNeedsPython = pkg: pkg.tlType == "run" && lib.elem pkg.pname
-      [ "de-macro" "pythontex" "dviasm" "texliveonfly" ];
-    pkgNeedsRuby = pkg: pkg.tlType == "run" && pkg.pname == "match-parens";
-    extraInputs =
-      lib.optional (lib.any pkgNeedsPython splitBin.wrong) python3
-      ++ lib.optional (lib.any pkgNeedsRuby splitBin.wrong) ruby;
   };
+  # list generated by inspecting `grep -IR '\([^a-zA-Z]\|^\)gs\( \|$\|"\)' "$TEXMFDIST"/scripts`
+  # and `grep -IR rungs "$TEXMFDIST"`
+  # and ignoring luatex, perl, and shell scripts (those must be patched using postFixup)
+  needsGhostscript = lib.any (p: lib.elem p.pname [ "context" "dvipdfmx" "latex-papersize" "lyluatex" ]) pkgList.bin;
 
   name = "texlive-${extraName}-${bin.texliveYear}${extraVersion}";
 
@@ -43,11 +30,11 @@ let
     # remove fake derivations (without 'outPath') to avoid undesired build dependencies
     paths = lib.catAttrs "outPath" pkgList.nonbin;
 
-    nativeBuildInputs = [ perl bin.core.out ];
+    nativeBuildInputs = [ (lib.last tl.texlive-scripts.pkgs) ];
 
     postBuild = # generate ls-R database
     ''
-      perl "$out/scripts/texlive/mktexlsr.pl" --sort "$out"
+      mktexlsr --sort "$out"
     '';
   }).overrideAttrs (_: { allowSubstitutes = true; });
 
@@ -94,11 +81,17 @@ in (buildEnv {
     "/share/texmf-var/scripts"
     "/share/texmf-var/tex/generic/config"
     "/share/texmf-var/web2c"
+    "/share/texmf-config"
     "/bin" # ensure these are writeable directories
   ];
 
-  nativeBuildInputs = [ makeWrapper libfaketime perl bin.texlinks ];
-  buildInputs = pkgList.extraInputs;
+  nativeBuildInputs = [
+    makeWrapper
+    libfaketime
+    (lib.last tl.texlive-scripts.pkgs) # fmtutil, mktexlsr, updmap
+    (lib.last tl.texlive-scripts-extra.pkgs) # texlinks
+    perl
+  ];
 
   passthru = {
     # This is set primarily to help find-tarballs.nix to do its job
@@ -107,7 +100,9 @@ in (buildEnv {
     fonts = "${texmfroot}/texmf-dist/fonts";
   };
 
-  postBuild = ''
+  postBuild =
+    # environment variables (note: only export the ones that are used in the wrappers)
+  ''
     TEXMFROOT="${texmfroot}"
     TEXMFDIST="${texmfdist}"
     export PATH="$out/bin:$PATH"
@@ -115,6 +110,35 @@ in (buildEnv {
     TEXMFSYSVAR="$out/share/texmf-var"
     export TEXMFCNF="$TEXMFSYSVAR/web2c"
   '' +
+    # wrap executables with required env vars as early as possible
+    # 1. we want texlive.combine to use the wrapped binaries, to catch bugs
+    # 2. we do not want to wrap links generated by texlinks
+  ''
+    enable -f '${bash}/lib/bash/realpath' realpath
+    declare -i wrapCount=0
+    for link in "$out"/bin/*; do
+      target="$(realpath "$link")"
+      if [[ "''${target##*/}" != "''${link##*/}" ]] ; then
+        # detected alias with different basename, use immediate target of $link to preserve $0
+        # relevant for mktexfmt, repstopdf, ...
+        target="$(readlink "$link")"
+      fi
+
+      rm "$link"
+      makeWrapper "$target" "$link" \
+        --inherit-argv0 \
+        --prefix PATH : "${
+          # very common dependencies that are not detected by tests.texlive.binaries
+          lib.makeBinPath ([ coreutils gawk gnugrep gnused ] ++ lib.optional needsGhostscript ghostscript)}:$out/bin" \
+        --set-default TEXMFCNF "$TEXMFCNF" \
+        --set-default FONTCONFIG_FILE "${
+          # necessary for XeTeX to find the fonts distributed with texlive
+          makeFontsConf { fontDirectories = [ "${texmfroot}/texmf-dist/fonts" ]; }
+        }"
+      wrapCount=$((wrapCount + 1))
+    done
+    echo "wrapped $wrapCount binaries and scripts"
+  '' +
     # patch texmf-dist  -> $TEXMFDIST
     # patch texmf-local -> $out/share/texmf-local
     # patch texmf.cnf   -> $TEXMFSYSVAR/web2c/texmf.cnf
@@ -153,7 +177,7 @@ in (buildEnv {
   (let
     hyphens = lib.filter (p: p.hasHyphens or false && p.tlType == "run") pkgList.splitBin.wrong;
     hyphenPNames = map (p: p.pname) hyphens;
-    formats = lib.filter (p: p.hasFormats or false && p.tlType == "run") pkgList.splitBin.wrong;
+    formats = lib.filter (p: p ? formats && p.tlType == "run") pkgList.splitBin.wrong;
     formatPNames = map (p: p.pname) formats;
     # sed expression that prints the lines in /start/,/end/ except for /end/
     section = start: end: "/${start}/,/${end}/{ /${start}/p; /${end}/!p; };\n";
@@ -199,54 +223,11 @@ in (buildEnv {
     [[ -e "$TEXMFDIST"/web2c/fmtutil.cnf ]] && sed -E -f '${fmtutilSed}' "$TEXMFDIST"/web2c/fmtutil.cnf > "$TEXMFCNF"/fmtutil.cnf
 
     # make new files visible to kpathsea
-    perl "$TEXMFDIST"/scripts/texlive/mktexlsr.pl --sort "$TEXMFSYSVAR"
+    mktexlsr --sort "$TEXMFSYSVAR"
   '') +
-
-  # function to wrap created executables with required env vars
+    # generate format links (reads fmtutil.cnf to know which ones) *after* the wrappers have been generated
   ''
-    wrapBin() {
-    for link in "$out"/bin/*; do
-      [ -L "$link" -a -x "$link" ] || continue # if not link, assume OK
-      local target=$(readlink "$link")
-
-      # skip simple local symlinks; mktexfmt in particular
-      echo "$target" | grep / > /dev/null || continue;
-
-      echo -n "Wrapping '$link'"
-      rm "$link"
-      makeWrapper "$target" "$link" \
-        --prefix PATH : "${gnused}/bin:${gnugrep}/bin:${coreutils}/bin:$out/bin:${perl}/bin" \
-        --set-default TEXMFCNF "$TEXMFCNF" \
-        --set-default FONTCONFIG_FILE "${
-          # neccessary for XeTeX to find the fonts distributed with texlive
-          makeFontsConf { fontDirectories = [ "${texmfroot}/texmf-dist/fonts" ]; }
-        }"
-
-      # avoid using non-nix shebang in $target by calling interpreter
-      if [[ "$(head -c 2 "$target")" = "#!" ]]; then
-        local cmdline="$(head -n 1 "$target" | sed 's/^\#\! *//;s/ *$//')"
-        local relative=`basename "$cmdline" | sed 's/^env //' `
-        local newInterp=`echo "$relative" | cut -d\  -f1`
-        local params=`echo "$relative" | cut -d\  -f2- -s`
-        local newPath="$(type -P "$newInterp")"
-        if [[ -z "$newPath" ]]; then
-          echo " Warning: unknown shebang '$cmdline' in '$target'"
-          continue
-        fi
-        echo " and patching shebang '$cmdline'"
-        sed "s|^exec |exec $newPath $params |" -i "$link"
-
-      elif head -n 1 "$target" | grep -q 'exec perl'; then
-        # see #24343 for details of the problem
-        echo " and patching weird perl shebang"
-        sed "s|^exec |exec '${perl}/bin/perl' -w |" -i "$link"
-
-      else
-        sed 's|^exec |exec -a "$0" |' -i "$link"
-        echo
-      fi
-    done
-    }
+    texlinks --quiet "$out/bin"
   '' +
   # texlive postactions (see TeXLive::TLUtils::_do_postaction_script)
   (lib.concatMapStrings (pkg: ''
@@ -259,20 +240,8 @@ in (buildEnv {
     echo "postaction install script for ${pkg.pname}: ''${postInterp:+$postInterp }$postaction install $TEXMFROOT"
     $postInterp "$TEXMFROOT/$postaction" install "$TEXMFROOT"
   '') (lib.filter (pkg: pkg ? postactionScript) pkgList.tlpkg)) +
-  # texlive post-install actions
-  ''
-    ln -sf "$TEXMFDIST"/scripts/texlive/updmap.pl "$out"/bin/updmap
-    ln -sf "$TEXMFDIST"/scripts/texlive/fmtutil.pl "$out"/bin/fmtutil
-  '' +
-    # now hack to preserve "$0" for mktexfmt
-  ''
-    cp "$TEXMFDIST"/scripts/texlive/fmtutil.pl "$TEXMFSYSVAR"/scripts/mktexfmt
-    ln -sf "$TEXMFSYSVAR"/scripts/mktexfmt "$out"/bin/mktexfmt
-  '' +
     # generate formats
   ''
-    texlinks "$out/bin" && wrapBin
-
     # many formats still ignore SOURCE_DATE_EPOCH even when FORCE_SOURCE_DATE=1
     # libfaketime fixes non-determinism related to timestamps ignoring FORCE_SOURCE_DATE
     # we cannot fix further randomness caused by luatex; for further details, see
@@ -282,41 +251,20 @@ in (buildEnv {
     substitute "$TEXMFDIST"/scripts/texlive/fmtutil.pl fmtutil \
       --replace 'my $cmdline = "$eng -ini ' 'my $cmdline = "faketime -f '"'"'\@1980-01-01 00:00:00 x0.001'"'"' $eng -ini '
     FORCE_SOURCE_DATE=1 TZ= perl fmtutil --sys --all | grep '^fmtutil' # too verbose
-    #texlinks "$out/bin" && wrapBin # do we need to regenerate format links?
 
     # Disable unavailable map files
-    echo y | updmap --sys --syncwithtrees --force
+    echo y | updmap --sys --syncwithtrees --force 2>&1 | grep '^\(updmap\|  /\)'
     # Regenerate the map files (this is optional)
-    updmap --sys --force
+    updmap --sys --force 2>&1 | grep '^\(updmap\|  /\)'
 
     # sort entries to improve reproducibility
     [[ -f "$TEXMFSYSCONFIG"/web2c/updmap.cfg ]] && sort -o "$TEXMFSYSCONFIG"/web2c/updmap.cfg "$TEXMFSYSCONFIG"/web2c/updmap.cfg
 
-    perl "$TEXMFDIST"/scripts/texlive/mktexlsr.pl --sort "$TEXMFSYSCONFIG" "$TEXMFSYSVAR" # to make sure
-  '' +
-    # install (wrappers for) scripts, based on a list from upstream texlive
-  ''
-    source '${bin.core.out}/share/texmf-dist/scripts/texlive/scripts.lst'
-    for s in $texmf_scripts; do
-      [[ -x "$TEXMFDIST/scripts/$s" ]] || continue
-      tName="$(basename $s | sed 's/\.[a-z]\+$//')" # remove extension
-      [[ ! -e "$out/bin/$tName" ]] || continue
-      ln -sv "$(realpath "$TEXMFDIST/scripts/$s")" "$out/bin/$tName" # wrapped below
-    done
+    mktexlsr --sort "$TEXMFSYSCONFIG" "$TEXMFSYSVAR" # to make sure (of what?)
   '' +
-    # A hacky way to provide repstopdf
-    #  * Copy is done to have a correct "$0" so that epstopdf enables the restricted mode
-    #  * ./bin/repstopdf needs to be a symlink to be processed by wrapBin
-  ''
-    if [[ -e "$out"/bin/epstopdf ]]; then
-      cp "$out"/bin/epstopdf "$TEXMFSYSVAR"/scripts/repstopdf
-      ln -s "$TEXMFSYSVAR"/scripts/repstopdf "$out"/bin/repstopdf
-    fi
-  '' +
-    # finish up the wrappers
+    # remove *-sys scripts since /nix/store is readonly
   ''
     rm "$out"/bin/*-sys
-    wrapBin
   '' +
   # TODO: a context trigger https://www.preining.info/blog/2015/06/debian-tex-live-2015-the-new-layout/
     # http://wiki.contextgarden.net/ConTeXt_Standalone#Unix-like_platforms_.28Linux.2FMacOS_X.2FFreeBSD.2FSolaris.29
@@ -332,8 +280,7 @@ in (buildEnv {
         --replace 'uuid=osuuid(),' 'uuid="242be807-d17e-4792-8e39-aa93326fc871",'
       FORCE_SOURCE_DATE=1 TZ= faketime -f '@1980-01-01 00:00:00 x0.001' luatex --luaonly mtxrun.lua --generate
     fi
-  ''
-    + bin.cleanBrokenLinks +
+  '' +
   # Get rid of all log files. They are not needed, but take up space
   # and render the build unreproducible by their embedded timestamps
   # and other non-deterministic diagnostics.
diff --git a/pkgs/tools/typesetting/tex/texlive/default.nix b/pkgs/tools/typesetting/tex/texlive/default.nix
index f5696eba4f94..8dff1469a90d 100644
--- a/pkgs/tools/typesetting/tex/texlive/default.nix
+++ b/pkgs/tools/typesetting/tex/texlive/default.nix
@@ -4,8 +4,10 @@
 */
 { stdenv, lib, fetchurl, runCommand, writeText, buildEnv
 , callPackage, ghostscript_headless, harfbuzz
-, makeWrapper, python3, ruby, perl, gnused, gnugrep, coreutils
-, libfaketime, makeFontsConf
+, makeWrapper
+, python3, ruby, perl, tk, jdk, bash, snobol4
+, coreutils, findutils, gawk, getopt, gnugrep, gnumake, gnused, gzip, ncurses, zip
+, libfaketime, asymptote, makeFontsConf
 , useFixedHashes ? true
 , recurseIntoAttrs
 }:
@@ -22,7 +24,7 @@ let
   # function for creating a working environment from a set of TL packages
   combine = import ./combine.nix {
     inherit bin combinePkgs buildEnv lib makeWrapper writeText runCommand
-      stdenv python3 ruby perl gnused gnugrep coreutils libfaketime makeFontsConf;
+      stdenv perl libfaketime makeFontsConf bash tl coreutils gawk gnugrep gnused;
     ghostscript = ghostscript_headless;
   };
 
@@ -32,24 +34,340 @@ let
 
   # the set of TeX Live packages, collections, and schemes; using upstream naming
   tl = let
-    orig = removeAttrs tlpdb [ "00texlive.config" ];
+    # most format -> engine links are generated by texlinks according to fmtutil.cnf at combine time
+    # so we remove them from binfiles, and add back the ones texlinks purposefully ignore (e.g. mptopdf)
+    removeFormatLinks = lib.mapAttrs (_: attrs:
+      if (attrs ? formats && attrs ? binfiles)
+      then let formatLinks = lib.catAttrs "name" (lib.filter (f: f.name != f.engine) attrs.formats);
+               binNotFormats = lib.subtractLists formatLinks attrs.binfiles;
+           in if binNotFormats != [] then attrs // { binfiles = binNotFormats; } else removeAttrs attrs [ "binfiles" ]
+      else attrs);
+
+    orig = removeFormatLinks (removeAttrs tlpdb [ "00texlive.config" ]);
+
+    overridden = lib.recursiveUpdate orig rec {
+      #### overrides of texlive.tlpdb
+
+      #### nonstandard script folders
+      context.scriptsFolder = "context/stubs/unix";
+      cyrillic-bin.scriptsFolder = "texlive-extra";
+      fontinst.scriptsFolder = "texlive-extra";
+      mptopdf.scriptsFolder = "context/perl";
+      pdftex.scriptsFolder = "simpdftex";
+      "texlive.infra".scriptsFolder = "texlive";
+      texlive-scripts.scriptsFolder = "texlive";
+      texlive-scripts-extra.scriptsFolder = "texlive-extra";
+      xetex.scriptsFolder = "texlive-extra";
+
+      #### interpreters not detected by looking at the script extensions
+      ctanbib.extraBuildInputs = [ bin.luatex ];
+      de-macro.extraBuildInputs = [ python3 ];
+      match_parens.extraBuildInputs = [ ruby ];
+      optexcount.extraBuildInputs = [ python3 ];
+      pdfbook2.extraBuildInputs = [ python3 ];
+      texlogsieve.extraBuildInputs = [ bin.luatex ];
+
+      #### perl packages
+      crossrefware.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ LWP URI ])) ];
+      ctan-o-mat.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ LWP LWPProtocolHttps ])) ];
+      ctanify.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ FileCopyRecursive ])) ];
+      ctanupload.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ HTMLFormatter WWWMechanize ])) ];
+      exceltex.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ SpreadsheetParseExcel ])) ];
+      latex-git-log.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ IPCSystemSimple ])) ];
+      latexindent.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ FileHomeDir LogDispatch LogLog4perl UnicodeLineBreak YAMLTiny ])) ];
+      pax.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ FileWhich ])) ];
+      ptex-fontmaps.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ Tk ])) ];
+      purifyeps.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ FileWhich ])) ];
+      svn-multi.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ TimeDate ])) ];
+      texdoctk.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ Tk ])) ];
+      ulqda.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ DigestSHA1 ])) ];
+
+      #### python packages
+      pythontex.extraBuildInputs = [ (python3.withPackages (ps: with ps; [ pygments ])) ];
+
+      #### other runtime PATH dependencies
+      a2ping.extraBuildInputs = [ ghostscript_headless ];
+      bibexport.extraBuildInputs = [ gnugrep ];
+      checklistings.extraBuildInputs = [ coreutils ];
+      cjk-gs-integrate.extraBuildInputs = [ ghostscript_headless ];
+      context.extraBuildInputs = [ coreutils ruby ];
+      cyrillic-bin.extraBuildInputs = [ coreutils gnused ];
+      dtxgen.extraBuildInputs = [ coreutils getopt gnumake zip ];
+      dviljk.extraBuildInputs = [ coreutils ];
+      epspdf.extraBuildInputs = [ ghostscript_headless ];
+      epstopdf.extraBuildInputs = [ ghostscript_headless ];
+      fragmaster.extraBuildInputs = [ ghostscript_headless ];
+      installfont.extraBuildInputs = [ coreutils getopt gnused ];
+      latexfileversion.extraBuildInputs = [ coreutils gnugrep gnused ];
+      listings-ext.extraBuildInputs = [ coreutils getopt ];
+      ltxfileinfo.extraBuildInputs = [ coreutils getopt gnused ];
+      ltximg.extraBuildInputs = [ ghostscript_headless ];
+      luaotfload.extraBuildInputs = [ ncurses ];
+      makeindex.extraBuildInputs = [ coreutils gnused ];
+      pagelayout.extraBuildInputs = [ gnused ncurses ];
+      pdfcrop.extraBuildInputs = [ ghostscript_headless ];
+      pdftex.extraBuildInputs = [ coreutils ghostscript_headless gnused ];
+      pdftex-quiet.extraBuildInputs = [ coreutils ];
+      pdfxup.extraBuildInputs = [ coreutils ghostscript_headless ];
+      pkfix-helper.extraBuildInputs = [ ghostscript_headless ];
+      ps2eps.extraBuildInputs = [ ghostscript_headless ];
+      pst2pdf.extraBuildInputs = [ ghostscript_headless ];
+      tex4ht.extraBuildInputs = [ ruby ];
+      texlive-scripts.extraBuildInputs = [ gnused ];
+      texlive-scripts-extra.extraBuildInputs = [ coreutils findutils ghostscript_headless gnused ];
+      thumbpdf.extraBuildInputs = [ ghostscript_headless ];
+      tpic2pdftex.extraBuildInputs = [ gawk ];
+      wordcount.extraBuildInputs = [ coreutils gnugrep ];
+      xdvi.extraBuildInputs = [ coreutils gnugrep ];
+      xindy.extraBuildInputs = [ gzip ];
+
+      #### adjustments to binaries
+      # TODO patch the scripts from bin.* directly in bin.* instead of here
+
+      # TODO we do not build binaries for the following packages (yet!)
+      biber-ms.binfiles = [];
+      xpdfopen.binfiles = [];
+
+      # mptopdf is a format link, but not generated by texlinks
+      # so we add it back to binfiles to generate it from mkPkgBin
+      mptopdf.binfiles = (orig.mptopdf.binfiles or []) ++ [ "mptopdf" ];
+
+      # mktexlsr distributed by texlive.infra has implicit dependencies (e.g. kpsestat)
+      # the perl one hidden in texlive-scripts is better behaved
+      "texlive.infra".binfiles = lib.remove "mktexlsr" orig."texlive.infra".binfiles;
+
+      # remove man, add mktexlsr
+      texlive-scripts.binfiles = (lib.remove "man" orig.texlive-scripts.binfiles) ++ [ "mktexlsr" ];
+
+      # upmendex is "TODO" in bin.nix
+      uptex.binfiles = lib.remove "upmendex" orig.uptex.binfiles;
+
+      # teckit_compile seems to be missing from bin.core{,-big}
+      # TODO find it!
+      xetex.binfiles = lib.remove "teckit_compile" orig.xetex.binfiles;
+
+      # xindy is broken on some platforms unfortunately
+      xindy.binfiles = if bin ? xindy
+        then lib.subtractLists [ "xindy.mem" "xindy.run" ] orig.xindy.binfiles
+        else [];
+
+      #### additional symlinks
+      cluttex.binlinks = {
+        cllualatex = "cluttex";
+        clxelatex = "cluttex";
+      };
 
-    overridden = lib.recursiveUpdate orig {
-      # overrides of texlive.tlpdb
+      epstopdf.binlinks.repstopdf = "epstopdf";
+      pdfcrop.binlinks.rpdfcrop = "pdfcrop";
 
-      # only *.po for tlmgr
-      texlive-msg-translations.hasTlpkg = false;
+      ptex.binlinks = {
+        pdvitomp = bin.metapost + "/bin/pdvitomp";
+        pmpost = bin.metapost + "/bin/pmpost";
+        r-pmpost = bin.metapost + "/bin/r-pmpost";
+      };
 
-      # it seems to need it to transform fonts
-      xdvi.deps = (orig.xdvi.deps or []) ++  [ "metafont" ];
+      texdef.binlinks = {
+        latexdef = "texdef";
+      };
 
-      # TODO: remove when updating to texlive-2023, metadata has been corrected in the TeX catalogue
-      # tlpdb lists license as "unknown", but the README says lppl13: http://mirrors.ctan.org/language/arabic/arabi-add/README
-      arabi-add.license = [  "lppl13c" ];
+      texlive-scripts.binlinks = {
+        mktexfmt = "fmtutil";
+        texhash = "mktexlsr";
+      };
 
-      # TODO: remove this when updating to texlive-2023, npp-for-context is no longer in texlive
-      # tlpdb lists license as "noinfo", but it's gpl3: https://github.com/luigiScarso/context-npp
-      npp-for-context.license = [  "gpl3Only" ];
+      texlive-scripts-extra.binlinks = {
+        allec = "allcm";
+        kpsepath = "kpsetool";
+        kpsexpand = "kpsetool";
+      };
+
+      # metapost binaries are in bin.metapost instead of bin.core
+      uptex.binlinks = {
+        r-upmpost = bin.metapost + "/bin/r-upmpost";
+        updvitomp = bin.metapost + "/bin/updvitomp";
+        upmpost = bin.metapost + "/bin/upmpost";
+      };
+
+      #### add PATH dependencies without wrappers
+      # TODO deduplicate this code
+      a2ping.postFixup = ''
+        sed -i '6i$ENV{PATH}='"'"'${lib.makeBinPath a2ping.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/a2ping
+      '';
+
+      bibexport.postFixup = ''
+        sed -i '2iPATH="${lib.makeBinPath bibexport.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/bibexport
+      '';
+
+      checklistings.postFixup = ''
+        sed -i '2iPATH="${lib.makeBinPath checklistings.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/checklistings
+      '';
+
+      cjk-gs-integrate.postFixup = ''
+        sed -i '2i$ENV{PATH}='"'"'${lib.makeBinPath cjk-gs-integrate.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/cjk-gs-integrate
+      '';
+
+      context.postFixup = ''
+        sed -i '2iPATH="${lib.makeBinPath [ coreutils ]}''${PATH:+:$PATH}"' "$out"/bin/{contextjit,mtxrunjit}
+        sed -i '2iPATH="${lib.makeBinPath [ ruby ]}''${PATH:+:$PATH}"' "$out"/bin/texexec
+      '';
+
+      cyrillic-bin.postFixup = ''
+        sed -i '2iPATH="${lib.makeBinPath cyrillic-bin.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/rumakeindex
+      '';
+
+      dtxgen.postFixup = ''
+        sed -i '2iPATH="${lib.makeBinPath dtxgen.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/dtxgen
+      '';
+
+      dviljk.postFixup = ''
+        sed -i '2iPATH="${lib.makeBinPath dviljk.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/dvihp
+      '';
+
+      epstopdf.postFixup = ''
+        sed -i '2i$ENV{PATH}='"'"'${lib.makeBinPath epstopdf.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/epstopdf
+      '';
+
+      fragmaster.postFixup = ''
+        sed -i '2i$ENV{PATH}='"'"'${lib.makeBinPath fragmaster.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/fragmaster
+      '';
+
+      installfont.postFixup = ''
+        sed -i '2iPATH="${lib.makeBinPath installfont.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/installfont-tl
+      '';
+
+      latexfileversion.postFixup = ''
+        sed -i '2iPATH="${lib.makeBinPath latexfileversion.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/latexfileversion
+      '';
+
+      listings-ext.postFixup = ''
+        sed -i '2iPATH="${lib.makeBinPath listings-ext.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/listings-ext.sh
+      '';
+
+      ltxfileinfo.postFixup = ''
+        sed -i '2iPATH="${lib.makeBinPath ltxfileinfo.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/ltxfileinfo
+      '';
+
+      ltximg.postFixup = ''
+        sed -i '2i$ENV{PATH}='"'"'${lib.makeBinPath ltximg.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/ltximg
+      '';
+
+      luaotfload.postFixup = ''
+        sed -i '2ios.setenv("PATH","${lib.makeBinPath luaotfload.extraBuildInputs}" .. (os.getenv("PATH") and ":" .. os.getenv("PATH") or ""))' "$out"/bin/luaotfload-tool
+      '';
+
+      makeindex.postFixup = ''
+        sed -i '2iPATH="${lib.makeBinPath makeindex.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/mkindex
+      '';
+
+      pagelayout.postFixup = ''
+        sed -i '2iPATH="${lib.makeBinPath [ gnused ]}''${PATH:+:$PATH}"' "$out"/bin/pagelayoutapi
+        sed -i '2iPATH="${lib.makeBinPath [ ncurses ]}''${PATH:+:$PATH}"' "$out"/bin/textestvis
+      '';
+
+      pdfcrop.postFixup = ''
+        sed -i '2i$ENV{PATH}='"'"'${lib.makeBinPath pdfcrop.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/pdfcrop
+      '';
+
+      pdftex.postFixup = ''
+        sed -i -e '2iPATH="${lib.makeBinPath [ coreutils gnused ]}''${PATH:+:$PATH}"' \
+          -e 's!^distillerpath="/usr/local/bin"$!distillerpath="${lib.makeBinPath [ ghostscript_headless ]}"!' \
+          "$out"/bin/simpdftex
+      '';
+
+      pdftex-quiet.postFixup = ''
+        sed -i '2iPATH="${lib.makeBinPath pdftex-quiet.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/pdftex-quiet
+      '';
+
+      pdfxup.postFixup = ''
+        sed -i '2iPATH="${lib.makeBinPath pdfxup.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/pdfxup
+      '';
+
+      pkfix-helper.postFixup = ''
+        sed -i '2i$ENV{PATH}='"'"'${lib.makeBinPath pkfix-helper.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/pkfix-helper
+      '';
+
+      ps2eps.postFixup = ''
+        sed -i '2i$ENV{PATH}='"'"'${lib.makeBinPath ps2eps.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/ps2eps
+      '';
+
+      pst2pdf.postFixup = ''
+        sed -i '2i$ENV{PATH}='"'"'${lib.makeBinPath pst2pdf.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/pst2pdf
+      '';
+
+      tex4ht.postFixup = ''
+        sed -i -e '2iPATH="${lib.makeBinPath tex4ht.extraBuildInputs}''${PATH:+:$PATH}"' -e 's/\\rubyCall//g;' "$out"/bin/htcontext
+      '';
+
+      texlive-scripts.postFixup = ''
+        sed -i '2iPATH="${lib.makeBinPath texlive-scripts.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/{fmtutil-user,mktexmf,mktexpk,mktextfm,updmap-user}
+      '';
+
+      thumbpdf.postFixup = ''
+        sed -i '2i$ENV{PATH}='"'"'${lib.makeBinPath thumbpdf.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/thumbpdf
+      '';
+
+      tpic2pdftex.postFixup = ''
+        sed -i '2iPATH="${lib.makeBinPath tpic2pdftex.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/tpic2pdftex
+      '';
+
+      wordcount.postFixup = ''
+        sed -i '2iPATH="${lib.makeBinPath wordcount.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/wordcount
+      '';
+
+      # TODO patch in bin.xdvi
+      xdvi.postFixup = ''
+        sed -i '2iPATH="${lib.makeBinPath xdvi.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/xdvi
+      '';
+
+      xindy.postFixup = ''
+        sed -i '2i$ENV{PATH}='"'"'${lib.makeBinPath xindy.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/{texindy,xindy}
+      '';
+
+      #### other script fixes
+      # misc tab and python3 fixes
+      ebong.postFixup = ''
+        sed -Ei 's/import sre/import re/; s/file\(/open(/g; s/\t/        /g; s/print +(.*)$/print(\1)/g' "$out"/bin/ebong
+      '';
+
+      # find files in script directory, not binary directory
+      # add runtime dependencies to PATH
+      epspdf.postFixup = ''
+        sed -i '2ios.setenv("PATH","${lib.makeBinPath epspdf.extraBuildInputs}" .. (os.getenv("PATH") and ":" .. os.getenv("PATH") or ""))' "$out"/bin/epspdf
+        substituteInPlace "$out"/bin/epspdftk --replace '[info script]' "\"$scriptsFolder/epspdftk.tcl\""
+      '';
+
+      # find files in script directory, not in binary directory
+      latexindent.postFixup = ''
+        substituteInPlace "$out"/bin/latexindent --replace 'use FindBin;' "BEGIN { \$0 = '$scriptsFolder' . '/latexindent.pl'; }; use FindBin;"
+      '';
+
+      # make tlmgr believe it can use kpsewhich to evaluate TEXMFROOT
+      "texlive.infra".postFixup = ''
+        substituteInPlace "$out"/bin/tlmgr \
+          --replace 'if (-r "$bindir/$kpsewhichname")' 'if (1)'
+      '';
+
+      # Patch texlinks.sh back to 2015 version;
+      # otherwise some bin/ links break, e.g. xe(la)tex.
+      # add runtime dependencies to PATH
+      texlive-scripts-extra.postFixup = ''
+        patch -R "$out"/bin/texlinks < '${./texlinks.diff}'
+        sed -i '2iPATH="${lib.makeBinPath [ coreutils ]}''${PATH:+:$PATH}"' "$out"/bin/{allcm,dvired,mkocp,ps2frag}
+        sed -i '2iPATH="${lib.makeBinPath [ coreutils findutils ]}''${PATH:+:$PATH}"' "$out"/bin/allneeded
+        sed -i '2iPATH="${lib.makeBinPath [ coreutils ghostscript_headless ]}''${PATH:+:$PATH}"' "$out"/bin/dvi2fax
+        sed -i '2iPATH="${lib.makeBinPath [ gnused ]}''${PATH:+:$PATH}"' "$out"/bin/{kpsetool,texconfig,texconfig-sys}
+        sed -i '2iPATH="${lib.makeBinPath [ coreutils gnused ]}''${PATH:+:$PATH}"' "$out"/bin/texconfig-dialog
+      '';
+
+      # patch interpreter
+      texosquery.postFixup = ''
+        substituteInPlace "$out"/bin/* --replace java "$interpJava"
+      '';
+
+      #### dependency changes
+
+      # it seems to need it to transform fonts
+      xdvi.deps = (orig.xdvi.deps or []) ++  [ "metafont" ];
 
       # remove dependency-heavy packages from the basic collections
       collection-basic.deps = lib.subtractLists [ "metafont" "xdvi" ] orig.collection-basic.deps;
@@ -58,6 +376,15 @@ let
       collection-metapost.deps = orig.collection-metapost.deps ++ [ "metafont" ];
       collection-plaingeneric.deps = orig.collection-plaingeneric.deps ++ [ "xdvi" ];
 
+      #### misc
+
+      # tlpdb lists license as "unknown", but the README says lppl13: http://mirrors.ctan.org/language/arabic/arabi-add/README
+      arabi-add.license = [  "lppl13c" ];
+
+      # TODO: remove this when updating to texlive-2023, npp-for-context is no longer in texlive
+      # tlpdb lists license as "noinfo", but it's gpl3: https://github.com/luigiScarso/context-npp
+      npp-for-context.license = [  "gpl3Only" ];
+
       texdoc = {
         extraRevision = ".tlpdb${toString tlpdbVersion.revision}";
         extraVersion = "-tlpdb-${toString tlpdbVersion.revision}";
@@ -91,27 +418,27 @@ let
         pkg = attrs // {
           sha512 = attrs.sha512.${if tlType == "tlpkg" then "run" else tlType};
           inherit pname tlType version;
+        } // lib.optionalAttrs (attrs.hasManpages or false) {
+          hasManpages = true;
         };
         in mkPkg pkg;
-    in {
-      # TL pkg contains lists of packages: runtime files, docs, sources, tlpkg, binaries
-      pkgs =
-        # tarball of a collection/scheme itself only contains a tlobj file
-        [( if (attrs.hasRunfiles or false) then mkPkgV "run"
+      run = if (attrs.hasRunfiles or false) then mkPkgV "run"
             # the fake derivations are used for filtering of hyphenation patterns and formats
-          else {
+          else ({
             inherit pname version;
             tlType = "run";
-            hasFormats = attrs.hasFormats or false;
             hasHyphens = attrs.hasHyphens or false;
             tlDeps = map (n: tl.${n}) (attrs.deps or []);
-          }
-        )]
+          } // lib.optionalAttrs (attrs ? formats) { inherit (attrs) formats; });
+    in {
+      # TL pkg contains lists of packages: runtime files, docs, sources, tlpkg, binaries
+      pkgs =
+        # tarball of a collection/scheme itself only contains a tlobj file
+        [ run ]
         ++ lib.optional (attrs.sha512 ? doc) (mkPkgV "doc")
         ++ lib.optional (attrs.sha512 ? source) (mkPkgV "source")
         ++ lib.optional (attrs.hasTlpkg or false) (mkPkgV "tlpkg")
-        ++ lib.optional (bin ? ${pname})
-            ( bin.${pname} // { tlType = "bin"; } );
+        ++ lib.optional (attrs ? binfiles && attrs.binfiles != []) (mkPkgBin pname version run attrs);
     };
 
   version = {
@@ -167,8 +494,46 @@ let
   # name + version for the derivation
   mkTLName = { tlType, version, extraVersion ? "", ... }@attrs: mkURLName attrs + (lib.optionalString (tlType == "tlpkg") ".tlpkg") + "-${version}${extraVersion}";
 
+  # build tlType == "bin" containers based on `binfiles` in TLPDB
+  # see UPGRADING.md for how to keep the list of shebangs up to date
+  mkPkgBin = let extToInput = {
+      jar = jdk;
+      lua = bin.luatex;
+      py = python3;
+      rb = ruby;
+      sno = snobol4;
+      tcl = tk;
+      texlua = bin.luatex;
+      tlu = bin.luatex;
+    }; in pname: version: run:
+    { binfiles, scriptsFolder ? pname, postFixup ? "", scriptExts ? [], extraBuildInputs ? [], binlinks ? {}, ... }@args:
+    runCommand "texlive-${pname}.bin-${version}"
+      {
+        # metadata for texlive.combine
+        passthru = {
+          inherit pname version;
+          tlType = "bin";
+        };
+        # shebang interpreters
+        buildInputs = extraBuildInputs ++ [ bash perl ] ++ (lib.attrVals scriptExts extToInput);
+        # absolute scripts folder
+        scriptsFolder = lib.optionalString (run ? outPath) (run.outPath + "/scripts/" + scriptsFolder);
+        # binaries info
+        inherit binfiles;
+        binlinks = builtins.attrNames binlinks;
+        bintargets = builtins.attrValues binlinks;
+        binfolders = [ (lib.getBin bin.core) ] ++ lib.optional (bin ? ${pname}) (lib.getBin bin.${pname});
+        # build scripts
+        patchScripts = ./patch-scripts.sed;
+        makeBinContainers = ./make-bin-containers.sh;
+      }
+      ''
+        . "$makeBinContainers"
+        ${postFixup}
+      '';
+
   # create a derivation that contains an unpacked upstream TL package
-  mkPkg = { pname, tlType, revision, version, sha512, extraRevision ? "", postUnpack ? "", stripPrefix ? 1, ... }@args:
+  mkPkg = { pname, tlType, revision, version, sha512, extraRevision ? "", postUnpack ? "", stripPrefix ? 1, hasManpages ? false, ... }@args:
     let
       # the basename used by upstream (without ".tar.xz" suffix)
       urlName = mkURLName args;
@@ -191,11 +556,12 @@ let
           } // lib.optionalAttrs (tlType == "run" && args ? deps) {
             tlDeps = map (n: tl.${n}) args.deps;
           } // lib.optionalAttrs (tlType == "run") {
-            hasFormats = args.hasFormats or false;
             hasHyphens = args.hasHyphens or false;
           } // lib.optionalAttrs (tlType == "tlpkg" && args ? postactionScript) {
             postactionScript = args.postactionScript;
-          };
+          }
+          // lib.optionalAttrs (tlType == "run" && args ? formats) { inherit (args) formats; }
+          // lib.optionalAttrs (tlType == "doc" && hasManpages) { hasManpages = true; };
         } // lib.optionalAttrs (fixedHash != null) {
           outputHash = fixedHash;
           outputHashAlgo = "sha256";
@@ -250,7 +616,10 @@ in
       xz = tlpdbxz;
     };
 
-    bin = assert assertions; bin;
+    bin = assert assertions; bin // {
+      # for backward compatibility
+      latexindent = lib.findFirst (p: p.tlType == "bin") tl.latexindent.pkgs;
+    };
     combine = assert assertions; combine;
 
     # Pre-defined combined packages for TeX Live schemes,
diff --git a/pkgs/tools/typesetting/tex/texlive/fixed-hashes.nix b/pkgs/tools/typesetting/tex/texlive/fixed-hashes.nix
index a2ef174c2853..5b704a1870a0 100644
--- a/pkgs/tools/typesetting/tex/texlive/fixed-hashes.nix
+++ b/pkgs/tools/typesetting/tex/texlive/fixed-hashes.nix
@@ -8629,6 +8629,7 @@
 "texlive-fr.doc.r63071"="120jahzjmak3shjhiy81gv6nk3c1hv4rrxyi1mmzi1xklxjlhl4b";
 "texlive-it.doc.r58653"="0vmwn6n8bxpzcfrzic5qg5k2vklbm6rhl9861zxsli0rd9396qn6";
 "texlive-ja.doc.r62817"="1h2rv13ip3bgmfz8q64abqx3ajla9mc02a50xz1nzmng0rmgz04r";
+"texlive-msg-translations.tlpkg.r65889"="03bshv5xacw01ssbpd5wmz4ryym3dc27l8mwyh652i8gd2lg0scm";
 "texlive-pl.doc.r62841"="19qab4nd9z87v9dpx7gh2a87rw8k4x6kqzg5yc7wqmf46pfjmpcw";
 "texlive-ru.doc.r58426"="0c77yyfj87fajran8jppj0x8krk6b5195iscpn8z2n94spz2fcc9";
 "texlive-scripts.r66570"="0hl1vjr4hr7q7s2pvizicmabb185df5rl84cjsz0ki7vai5mh7pq";
diff --git a/pkgs/tools/typesetting/tex/texlive/make-bin-containers.sh b/pkgs/tools/typesetting/tex/texlive/make-bin-containers.sh
new file mode 100644
index 000000000000..c293970ac7f9
--- /dev/null
+++ b/pkgs/tools/typesetting/tex/texlive/make-bin-containers.sh
@@ -0,0 +1,62 @@
+# load realpath
+loadables="$(command -v bash)"
+loadables="${loadables%/bin/bash}/lib/bash"
+enable -f "$loadables/realpath" realpath
+mkdir -p "$out/bin"
+
+# find interpreters
+export interpPerl="$(PATH="$HOST_PATH" command -v perl)"
+export interpJava="$(PATH="$HOST_PATH" command -v java || :)"
+export interpWish="$(PATH="$HOST_PATH" command -v wish || :)"
+
+# prepare sed script
+substituteAll "$patchScripts" patch-scripts.sed
+
+for binname in $binfiles ; do
+  # binlinks to be created last, after the other binaries are in place
+  if [[ " $binlinks " == *" $binname "* ]] ; then
+    continue
+  fi
+
+  output="$out/bin/$binname"
+
+  # look for existing binary from bin.core or bin.${pname}
+  for folder in $binfolders ; do
+    target="$folder"/bin/"$binname"
+    if [[ -f "$target" && -x "$target" ]] ; then
+      ln -s "$(realpath "$target")" "$output"
+      continue 2
+    fi
+  done
+
+  # look for scripts
+  # the explicit list of extensions avoid non-scripts such as $binname.cmd, $binname.jar, $binname.pm
+  # the order is relevant: $binname.sh is preferred to other $binname.*
+  if [[ -n "$scriptsFolder" ]] ; then
+    for script in "$scriptsFolder/$binname"{,.sh,.lua,.pl,.py,.rb,.sno,.tcl,.texlua,.tlu}; do
+      if [[ -f "$script" ]] ; then
+        sed -f patch-scripts.sed \
+          -e 's/^scriptname=`basename "\$0"`$/'"scriptname='$(basename "$binname")'/" \
+          -e 's/^scriptname=`basename "\$0" .sh`$'"/scriptname='$(basename "$binname" .sh)'/" \
+          "$script" > "$output"
+        chmod +x "$output"
+        continue 2
+      fi
+    done
+  fi
+
+  echo "error: could not find source for 'bin/$binname'" >&2
+  exit 1
+done
+
+# patch shebangs
+patchShebangs "$out/bin"
+
+# generate links
+# we canonicalise the source to avoid symlink chains, and to check that it exists
+cd "$out"/bin
+for alias in $binlinks ; do
+  target="${bintargets%% *}"
+  bintargets="${bintargets#* }"
+  ln -s "$(realpath "$target")" "$out/bin/$alias"
+done
diff --git a/pkgs/tools/typesetting/tex/texlive/patch-scripts.sed b/pkgs/tools/typesetting/tex/texlive/patch-scripts.sed
new file mode 100644
index 000000000000..c08d765ebd71
--- /dev/null
+++ b/pkgs/tools/typesetting/tex/texlive/patch-scripts.sed
@@ -0,0 +1,57 @@
+1{
+  /python/{
+    N;
+    # add script folder to path, unless we interfere with a docstring
+    /\nr"""/b skip-python-path-patch
+    s!\n!\nimport sys; sys.path.insert(0,'@scriptsFolder@')\n!
+    :skip-python-path-patch
+  }
+
+  /^#!.*perl/{
+    # add script folder to @INC
+    s!$! -I@scriptsFolder@!
+  }
+
+  /^eval/{
+    # most likely the weird perl shebang
+    N
+    /^eval '(exit \$?0)' && eval 'exec perl -S \$0 \${1+"\$@"}' && eval 'exec perl -S \$0 \$argv:q'\n *if 0;$/{
+      x; s/.*/patching weird perl shebang/; w /dev/stderr
+      x; s|^.*$|#!@interpPerl@ -I@scriptsFolder@|
+    }
+  }
+}
+
+# patch 'exec interpreter'
+/exec java /{
+  x; s/.*/patching exec java/; w /dev/stderr
+  x; s|exec java |exec '@interpJava@' |g
+  /exec ''/{
+    x; s/^.*$/error: java missing from PATH/; w /dev/stderr
+    q 1
+  }
+}
+
+/exec perl /{
+  x; s/.*/patching exec perl/; w /dev/stderr
+  x; s|exec perl |exec @interpPerl@ -I@scriptsFolder@ |g
+  /exec ''/{
+    x; s/^.*$/error: perl missing from PATH/; w /dev/stderr
+    q 1
+  }
+}
+
+/exec wish /{
+  x; s/.*/patching exec wish/; w /dev/stderr
+  x; s|exec wish |exec '@interpWish@' |g
+  /exec ''/{
+    x; s/^.*$/error: wish missing from PATH/; w /dev/stderr
+    q 1
+  }
+}
+
+# make jar wrappers work without kpsewhich
+s!^jarpath=`kpsewhich --progname=[^ ]* --format=texmfscripts \([^ ]*\)`$!jarpath=@scriptsFolder@/\1!g
+
+# replace CYGWIN grep test with bash builtin
+s!echo "$kernel" | grep CYGWIN >/dev/null;![[ "$kernel" == *CYGWIN* ]]!g
diff --git a/pkgs/tools/typesetting/tex/texlive/tl2nix.sed b/pkgs/tools/typesetting/tex/texlive/tl2nix.sed
index 022ec5c8589b..7c8520707a93 100644
--- a/pkgs/tools/typesetting/tex/texlive/tl2nix.sed
+++ b/pkgs/tools/typesetting/tex/texlive/tl2nix.sed
@@ -81,6 +81,20 @@ $a}
   }
 
   # detect presence of notable files
+  /^docfiles /{
+    s/^.*$//  # ignore the first line
+
+    # read all files
+    :next-doc
+      N
+      s/\n / /   # remove newline
+      t next-doc # loop if the previous lines matched
+
+    / (texmf-dist|RELOC)\/doc\/man\//i\  hasManpages = true;
+
+    D # restart cycle
+  }
+
   /^runfiles /{
     s/^.*$//  # ignore the first line
 
@@ -89,9 +103,25 @@ $a}
       N
       s/\n / /    # remove newline
       t next-file # loop if previous line matched
+    s/\n/ \n/     # add space before last newline for accurate matching below
 
     / (RELOC|texmf-dist)\//i\  hasRunfiles = true;
     / tlpkg\//i\  hasTlpkg = true;
+
+    # extract script extensions
+    / texmf-dist\/scripts\/.*\.(jar|lua|py|rb|sno|tcl|texlua|tlu) /{
+      i\  scriptExts = [
+        / texmf-dist\/scripts\/.*\.jar /i\    "jar"
+        / texmf-dist\/scripts\/.*\.lua /i\    "lua"
+        / texmf-dist\/scripts\/.*\.py /i\    "py"
+        / texmf-dist\/scripts\/.*\.rb /i\    "rb"
+        / texmf-dist\/scripts\/.*\.sno /i\    "sno"
+        / texmf-dist\/scripts\/.*\.tcl /i\    "tcl"
+        / texmf-dist\/scripts\/.*\.texlua /i\    "texlua"
+        / texmf-dist\/scripts\/.*\.tlu /i\    "tlu"
+      i\  ];
+    }
+
     D # restart cycle from the current line
   }
 
@@ -101,8 +131,50 @@ $a}
   # extract hyphenation patterns and formats
   # (this may create duplicate lines, use uniq to remove them)
   /^execute\sAddHyphen/i\  hasHyphens = true;
-  /^execute\sAddFormat/i\  hasFormats = true;
+
+  # extract format details
+  /^execute\sAddFormat\s/{
+    # open a list
+    i\  formats = [
+
+    # create one attribute set per format
+    # note that format names are not unique
+
+    # plain keys: name, engine, patterns
+    # optionally double quoted key: options
+    # boolean key: mode (enabled/disabled)
+    # comma-separated lists: fmttriggers, patterns
+    :next-fmt
+      s/(^|\n)execute\sAddFormat/    {/
+      s/\s+options="([^"]+)"/\n      options = "\1";/
+      s/\s+(name|engine|options)=([^ \t\n]+)/\n      \1 = "\2";/g
+      s/\s+mode=enabled//
+      s/\s+mode=disabled/\n      enabled = false;/
+      s/\s+(fmttriggers|patterns)=([^ \t\n]+)/\n      \1 = [ "\2" ];/g
+      s/$/\n    }/
+
+      :split-triggers
+        s/"([^,]+),([^"]+)" ]/"\1" "\2" ]/;
+        t split-triggers   # repeat until there are no commas
+
+      p
+      s/^.*$// # clear pattern space
+      N
+      /^\nexecute\sAddFormat\s/b next-fmt
+
+    # close the list
+    i\  ];
+    D # restart cycle from the current line
+  }
 
   # close attrmap
   /^$/i};
 }
+
+# add list of binaries from one of the architecture-specific packages
+/^name ([^.]+|texlive\.infra)\.x86_64-linux$/,/^$/{
+  s/^name ([0-9].*|texlive\.infra)\.x86_64-linux$/"\1".binfiles = [/p
+  s/^name (.*)\.x86_64-linux$/\1.binfiles = [/p
+  s!^ bin/x86_64-linux/(.+)$!  "\1"!p
+  /^$/i];
+}
diff --git a/pkgs/tools/typesetting/tex/texlive/tlpdb.nix b/pkgs/tools/typesetting/tex/texlive/tlpdb.nix
index eb36837b8186..876591606081 100644
--- a/pkgs/tools/typesetting/tex/texlive/tlpdb.nix
+++ b/pkgs/tools/typesetting/tex/texlive/tlpdb.nix
@@ -36,10 +36,14 @@ a2ping = {
   revision = 52964;
   sha512.run = "4008c18f93a7d378c8da20bad7c1fdf19c3e6befccdcc804326168854fcd35bb89fe414b30a26dbddeaf81a11c0d404bf5b5459bd3d8adce49dc30279e3bd420";
   sha512.doc = "7a7b6474819b2715c131485472963b463163378d4ae4ac586f17a130b3327c6dda1f4132f4f2379388a8a493fb2374abfff6b7ad87513cbe9d04993572692aeb";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "gpl1Only" ];
   version = "2.84p";
 };
+a2ping.binfiles = [
+  "a2ping"
+];
 a4wide = {
   revision = 20943;
   stripPrefix = 0;
@@ -216,6 +220,11 @@ accfonts = {
   license = [ "gpl1Only" ];
   version = "0.25";
 };
+accfonts.binfiles = [
+  "mkt1font"
+  "vpl2ovp"
+  "vpl2vpl"
+];
 accsupp = {
   revision = 53052;
   stripPrefix = 0;
@@ -384,6 +393,9 @@ adhocfilelist = {
   hasRunfiles = true;
   license = [ "lppl13c" ];
 };
+adhocfilelist.binfiles = [
+  "adhocfilelist"
+];
 adigraph = {
   revision = 49862;
   stripPrefix = 0;
@@ -484,8 +496,12 @@ afm2pl = {
   revision = 54074;
   sha512.run = "e539a12013dae7b30a83f615fe9f01678a25136a72ce754101aeb6bc8f1d287e006648f3050573ab211eeb00e5ac8082857b15e388d0da4886929a57d018fed2";
   sha512.doc = "771e72385110bfaf133865ceaf9cb85a94dc1037f7390b027b21a9117aaeb00e88f67b191229fbbb61f417ccecd6556335ba1d2ba46a0a65079929a0ccbfb1a7";
+  hasManpages = true;
   hasRunfiles = true;
 };
+afm2pl.binfiles = [
+  "afm2pl"
+];
 afparticle = {
   revision = 35900;
   stripPrefix = 0;
@@ -570,11 +586,18 @@ albatross = {
   revision = 65647;
   sha512.run = "3ca4c3ff3fdbb1b865e62fa96e984f94761bbce1de24cf09d7e5bdee3b4361c6536cfbd2119aeb6aa5df842228004cb78a27e2aa9e5e957cff59ef82b9fb459e";
   sha512.doc = "dfc9cb6a72ec80fe5f240a8c50c8c98167d069cf13e3502ba281991deadccd094e369a2ef2ae6b089064de77d937c45ad3a3dc70c06fe6fc5e39190b7d652189";
+  hasManpages = true;
   sha512.source = "93b72dbb855302d42faed5be48e2e4f11ba7b91212a296eac0cda3f13c0eb89e857decff834f7cf05b9164d2ee2ef8eb6174f077026b285dded75e10c1086a2e";
   hasRunfiles = true;
+  scriptExts = [
+    "jar"
+  ];
   license = [ "bsd3" ];
   version = "0.5.0";
 };
+albatross.binfiles = [
+  "albatross"
+];
 alchemist = {
   revision = 66557;
   stripPrefix = 0;
@@ -602,11 +625,22 @@ aleph = {
     "latex"
     "plain"
   ];
-  hasFormats = true;
+  formats = [
+    {
+      name = "aleph";
+      engine = "aleph";
+      options = "*aleph.ini";
+      fmttriggers = [ "cm" "hyphen-base" "knuth-lib" "plain" ];
+    }
+  ];
   sha512.run = "222d0c7045ddfdde5f0ca0ebe20a029c32fd0d4f35326c5ead6bf4ebbcadc86a2a2ff609bca3a6c3a04a09828c50c885f49ef9da0e6e548c18c2633400865c7f";
   sha512.doc = "77d2daaacfa99d7f4ed5b70706751936bed5ae00ac67490e428d900b5fee3d78797d2324039743cbf0cb06a3a03dba17643d67d9057d020a95a536c860d5e78e";
+  hasManpages = true;
   license = [ "gpl1Only" ];
 };
+aleph.binfiles = [
+  "aleph"
+];
 alertmessage = {
   revision = 38055;
   stripPrefix = 0;
@@ -926,13 +960,24 @@ amstex = {
     "plain"
     "tex"
   ];
-  hasFormats = true;
+  formats = [
+    {
+      name = "amstex";
+      engine = "pdftex";
+      options = "-translate-file=cp227.tcx *amstex.ini";
+      fmttriggers = [ "amsfonts" "cm" "hyphen-base" "knuth-lib" "plain" ];
+    }
+  ];
   sha512.run = "d92156cc5a01152776378c8809993b2ccbc9e917125d2ecfd2a06482401008385928e279a8832f328f7a8f4f3eeb746f9725e4986e4eb2f478c20a432ea8698e";
   sha512.doc = "ba87f3c3858ad7d86de6bcc03e50c5407e83f9de4bd3b3c63e3ce612fc5f933fba0d10bbad88525bae0a1f489adbd02643687f650874409962ee5b29447e14e8";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "lppl13c" ];
   version = "2.01";
 };
+amstex.binfiles = [
+  "amstex"
+];
 amsthdoc-it = {
   revision = 45662;
   stripPrefix = 0;
@@ -1319,11 +1364,18 @@ arara = {
   revision = 63760;
   sha512.run = "b30ab2023cea6e606301146c06b34711b4c40b771721724bef178a5df7a1bf3e22ce97675131ee7370acae3b6416d49b28f12d0c02eb7e34885e2609f8dc5ca8";
   sha512.doc = "0c0b799f6e4f43c6d123f66b6a84e35607b2c10d6241c445376d29a466154634c559cb6282f4e3f66c273342c764b56604e00bc1ee12b4452ef78ab7620aaaf2";
+  hasManpages = true;
   sha512.source = "6cc31f1368d8588d9a7bca3717171c43786ab6ed7a1b3ed159d700324ec42bf588234483a4e56f7322726c30156900086a901f081cfa7010f79cc393a449fe13";
   hasRunfiles = true;
+  scriptExts = [
+    "jar"
+  ];
   license = [ "bsd3" ];
   version = "7.0.4";
 };
+arara.binfiles = [
+  "arara"
+];
 archaeologie = {
   revision = 57090;
   stripPrefix = 0;
@@ -1654,6 +1706,7 @@ asymptote = {
   revision = 66119;
   sha512.run = "4f97d0d87d1f29985c83c99629fc52e8e18f6eabf95d77aa888429187b49ed9525661d9c06b46a9b2295b03df412778ede1490fa9cd8ec680c3209a4ca6d0be0";
   sha512.doc = "940297c3d69de7e01caa09ff44483f7334aba14705bdcdc83661ca9be2210133e094f99a8355b4b88d076355bb4f13f64c21700bff57f452dd5dbc8d2fddb432";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "lgpl3" ];
   version = "2.85";
@@ -1679,6 +1732,10 @@ asymptote-manual-zh-cn = {
   sha512.doc = "0f82e25773a14b0f81b34354f16931834d0496b2c6636c498c6af686f46e7ff93a274739a1a4c189433c9df1ae91ca010f0887081c81f2ac9006a105c7fd4ac9";
   license = [ "lgpl2" ];
 };
+asymptote.binfiles = [
+  "asy"
+  "xasy"
+];
 asypictureb = {
   revision = 33490;
   stripPrefix = 0;
@@ -1741,11 +1798,15 @@ attachfile2 = {
   revision = 57959;
   sha512.run = "57ef4d0c2de0cb854bb91b14a55921851a4abdd60221589f0655afc64a01d4bc672380fd572e0d451b6bac7ffd66f407b4ffab5f0fa1092dc8fcd809c81b23bc";
   sha512.doc = "3033a58688a822f74712d072be3251c58b96e9e370859effc8a4ff7f8b9db98906c471a6472b7b9ab4b0d9725a9b53918e8b65d5bdbbed56e737addbe582737f";
+  hasManpages = true;
   sha512.source = "abd6284061c0f936df92479cd18c0440d654a8f6ca1d610f8763fc1af6668b3eb3d4efc2f4ff33a5b9192844083e55605fbeee2fe1bcaca8079fabf498a702fe";
   hasRunfiles = true;
   license = [ "lppl13c" ];
   version = "2.11";
 };
+attachfile2.binfiles = [
+  "pdfatfi"
+];
 atveryend = {
   revision = 53108;
   stripPrefix = 0;
@@ -1832,6 +1893,9 @@ authorindex = {
   hasRunfiles = true;
   license = [ "lppl13c" ];
 };
+authorindex.binfiles = [
+  "authorindex"
+];
 auto-pst-pdf = {
   revision = 56596;
   stripPrefix = 0;
@@ -1937,8 +2001,13 @@ autosp = {
   revision = 58211;
   sha512.run = "67587e8b456257be9b924a5bb8c8f4def22fa9aa9678663975ef74e346dc186ae7848a9dc043733cf1244f254750ef4f34204575f62195d4b966ed8336781bce";
   sha512.doc = "2905669b9e2b61749cb7b1eaa02be889c4e8d8adbd78b126e7ee6d894f24f623c888a24abac1d163f3332c5cfa9cd1f64d0de95200350b88a7f47faeacb841a6";
+  hasManpages = true;
   license = [ "gpl2Plus" ];
 };
+autosp.binfiles = [
+  "autosp"
+  "tex2aspc"
+];
 auxhook = {
   revision = 53173;
   stripPrefix = 0;
@@ -1989,11 +2058,15 @@ axodraw2 = {
   revision = 58155;
   sha512.run = "bc9923a9614ef9d7bece20e682729347dc942470a927b40736d6868f02867408b5fba51b117edd8745f96df23b9c1e93792d321291db13b7fdfdae0ee32bb7fd";
   sha512.doc = "927e42358d543f46ccabb8184e35b6f0a5848783ce9eea09e6c780fc83955d5f37b998254153b1954cf1a59be6cfe573a6c79c2c328ab2a22a6e5f6764a50fa1";
+  hasManpages = true;
   sha512.source = "3c2fbbff234836ffe40edb7f38c77c5986cca7fc68b3dd7672bb4f1ce9327a12fa8c51d38461d914cd6466bac8b2b578a151d09d4e84dd903530f7a545d707d9";
   hasRunfiles = true;
   license = [ "gpl3Plus" ];
   version = "2.1.1c";
 };
+axodraw2.binfiles = [
+  "axohelp"
+];
 b1encoding = {
   revision = 21271;
   stripPrefix = 0;
@@ -3435,11 +3508,19 @@ bib2gls = {
   ];
   sha512.run = "009e393b3083a3260642cb36dc463c714689d1b32d07885c9d20092e4f7386d05118c452e6f97001120f70558a69aa58d757ae0998cefe10e164bb172e432fbf";
   sha512.doc = "2a22e662fa0c41581a3c9d9496f97854ea2faa0d01970ab0cc0542048d0ebdcfcbf7ddc7fcf519510d99300eb6634f1c7688874cf02cf6052962d903c5810887";
+  hasManpages = true;
   sha512.source = "da69973053fda82589612813834134837cf9680f4257a6336aed08213df0ff4c34dbef3c7edb833c7987549599cc48ae82dec36bac96dda003e3de3d1422bc6d";
   hasRunfiles = true;
+  scriptExts = [
+    "jar"
+  ];
   license = [ "gpl3Plus" ];
   version = "3.2";
 };
+bib2gls.binfiles = [
+  "bib2gls"
+  "convertgls2bib"
+];
 bibarts = {
   revision = 64579;
   stripPrefix = 0;
@@ -3458,11 +3539,15 @@ bibcop = {
   ];
   sha512.run = "a035642f1b1827f0b6b4d15b4115054b9ab3ff49d7d369f3e304cab5964a707b23865b837c6b156b913e33fe8ae5589941e6ff284ee0b62454a9eb8ec77f3442";
   sha512.doc = "93abe6f0a97138237d7546d132385069f8ff8a638a31cf9be23619b812fa578af808e6f9ce04c06778a4559b1eef98b7d24a0ce5ce6eb5ca9680fc2ddbf7c4b8";
+  hasManpages = true;
   sha512.source = "42a5b9a9f058afa6a1460a3a7c6f7dc9ded6abbd8915529f8366d2df9c2871727bc766a407d2dbbb6716420da7115af5bc2795b343c974f2bf0e1d673d8e96f3";
   hasRunfiles = true;
   license = [ "mit" ];
   version = "0.0.9";
 };
+bibcop.binfiles = [
+  "bibcop"
+];
 biber = {
   revision = 66456;
   sha512.run = "09e6751c129a0fe21ed251d191fb0e0e4a1b7896e03b925a024f19eb8c7526b9134e9fd5fef7a02e525dadc589976a8744b249a9486b5367303b6f830e0d3eb2";
@@ -3479,6 +3564,12 @@ biber-ms = {
   license = [ "artistic2" ];
   version = "4.0-1";
 };
+biber-ms.binfiles = [
+  "biber-ms"
+];
+biber.binfiles = [
+  "biber"
+];
 bibexport = {
   revision = 50677;
   sha512.run = "75f9cb374e0aee1b049e977e3ee1a855ae8f908a6c6191589ce9d9fc28a8358fedf93faa416b1020e157a8ec7a3980673d00e052a100c88724e86050ea5eb487";
@@ -3488,6 +3579,9 @@ bibexport = {
   license = [ "lppl13c" ];
   version = "3.03";
 };
+bibexport.binfiles = [
+  "bibexport"
+];
 bibhtml = {
   revision = 31607;
   stripPrefix = 0;
@@ -4182,18 +4276,26 @@ bibtex = {
   ];
   sha512.run = "fadbb6ca18794e52b40a7083db41c5f1d42e47ce93daed7a551bf8e263f8aac8302578f23fe915c3706e4e3603cbdc9cafc55b07c895542a60eb1670ce07d628";
   sha512.doc = "6e1433e40fd604e391be05b9b68449cb6804488a42aac802d8960407930f99ae4450b77afe1baae4fe9b4d20b48c359472cf6c1e0a67d6f0a4a87cbffaaf1d8c";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "knuth" ];
   version = "0.99d";
 };
+bibtex.binfiles = [
+  "bibtex"
+];
 bibtex8 = {
   revision = 64491;
   sha512.run = "ca2af96d3d11d27a4ff01297ca91f5b829f0ebc67ceedd358acb5e89842cd86776864a0d948c85f9364b5542476bfd8e0cdc189853637e77b0b66ef8de453130";
   sha512.doc = "31de3b7bbef0733347ab71f2c893df1cdc163a0d2ce4d47fc1f49a86e7bef225653cc704f4e6b9f8cdfe245cff5295ea45daf7995e863cdac930984ca64de84e";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "gpl1Only" ];
   version = "3.72";
 };
+bibtex8.binfiles = [
+  "bibtex8"
+];
 bibtexperllibs = {
   revision = 57137;
   stripPrefix = 0;
@@ -4207,9 +4309,13 @@ bibtexu = {
   revision = 64491;
   sha512.run = "8f629b95c9a12cdaa6be4fca3e6ee0d69f7c54a988ef778737de505446fac17aa9baa6d0bf08ea6dcf33d68202acc9223df91df0cd46696802e7ed238d4ef717";
   sha512.doc = "18934f3f91e19dddd6940110c4d1a17072a7640a6a56133535f8ad8ff7d3e6d3a3ba7d8b4e82906f65c1de17fea4911ea78ea96c0b9e0b561be488c3da6d8f67";
+  hasManpages = true;
   license = [ "gpl1Only" ];
   version = "3.72";
 };
+bibtexu.binfiles = [
+  "bibtexu"
+];
 bibtopic = {
   revision = 15878;
   stripPrefix = 0;
@@ -5018,10 +5124,15 @@ bundledoc = {
   revision = 64620;
   sha512.run = "8f1e4428993dda804a2bd6b11504996e6cbef869b98a64d576f0edd97a47b1f2301b34ed234ecf1cc902c74dcb31064a96cb69018ac514fd91eb3e5c1b6df5ad";
   sha512.doc = "d74b1ec9473c4616642911fb918553350c5c65ae2cd5171d3513d6fdd5b5b774a516c54a5ce09a8fb966a9de6c5e372b773f7e8ade9f14fa2b1a646112638679";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "lppl13c" ];
   version = "3.4";
 };
+bundledoc.binfiles = [
+  "arlatex"
+  "bundledoc"
+];
 burmese = {
   revision = 25185;
   stripPrefix = 0;
@@ -5290,9 +5401,15 @@ cachepic = {
   sha512.run = "a0405befc4ed9217cedc4abc78c355b869bb803fa4be32245198ba4aa8151884ace023b3465db3b4757c923d0425fd1d186e25facd7c29d05d5072668a9f0e3d";
   sha512.doc = "93108475f74b2356cea79a8403729df7c24e95871680b0b53f9316a7b158aa973ce108632a121198459352968bfdfd79f265d4aa301ecd00ce55cf56db5f976c";
   hasRunfiles = true;
+  scriptExts = [
+    "tlu"
+  ];
   license = [ "lppl13c" ];
   version = "1.0";
 };
+cachepic.binfiles = [
+  "cachepic"
+];
 caladea = {
   revision = 64549;
   stripPrefix = 0;
@@ -5934,9 +6051,15 @@ checkcites = {
   sha512.run = "c28a2785348bdc7cf8e30d3339f301a355b6a9e513d143d34f2b2535a69a32f7cf8a8ae9c26b42c6db32d00021a10ca135891a22b0547c219f31c6c9720d8ca5";
   sha512.doc = "a394ea5f70f48e7dc7c9d75de33bbf788904a5e1d8e3aefb5dd3bfd5207ee512b1a84ab4bc03bddfa15dedf962f330931d9e80593542e5a180fdda8a8aaf87c2";
   hasRunfiles = true;
+  scriptExts = [
+    "lua"
+  ];
   license = [ "lppl13c" ];
   version = "2.6";
 };
+checkcites.binfiles = [
+  "checkcites"
+];
 checkend = {
   revision = 51475;
   stripPrefix = 0;
@@ -5955,6 +6078,9 @@ checklistings = {
   license = [ "lppl12" ];
   version = "1.0";
 };
+checklistings.binfiles = [
+  "checklistings"
+];
 chem-journal = {
   revision = 15878;
   stripPrefix = 0;
@@ -6274,18 +6400,28 @@ chklref = {
   revision = 52649;
   sha512.run = "12f5e950ae439d0efd3f625572e8b81d993485a1efd71dc04c078cb1dc9b76650de3c424d7a6c60ebc5ccb5d29f37ed04c477ea1306acf4c5f4fccbd95e18985";
   sha512.doc = "5aeb13824c1781feefe94215f3efce15c212e0d38f9e0d5fb393e96c2159ba43f165c600cd64ee9d8c42c0a4f0db6c2e462ee85a93993965bad0420b6b662ef6";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "gpl3" ];
   version = "3.1.2";
 };
+chklref.binfiles = [
+  "chklref"
+];
 chktex = {
   revision = 64797;
   sha512.run = "7c28847e87e788d0f50c07c1c3140962a70173d2a36997720f3066755740744060ecd03272662aff563de39102052e91a4582a4bb63e35f918ad8f517dff55e6";
   sha512.doc = "28df4bed075d66d9f25bcbe332731f1d5f0bb0f7f92bd2f3618c84adf788d0f429bd0c6e75381ebf7bbeac98409d94f85d17ebd752f9e4af707d9e3373d45f97";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "gpl2Plus" ];
   version = "1.7.8";
 };
+chktex.binfiles = [
+  "chktex"
+  "chkweb"
+  "deweb"
+];
 chletter = {
   revision = 20060;
   stripPrefix = 0;
@@ -6443,10 +6579,17 @@ citation-style-language = {
   ];
   sha512.run = "4260ef2c25c7350e01a0bb7b7372a63da723c81a473ecad7346962c49ce35b68d5385863bf3ad742bd4da79720d4d240293f65677e01cdc41993509a5999cd21";
   sha512.doc = "19c2336b57d8da88dcf22a92e54872a0d9548d5b2f9433ef155534c29f935988056240064ee863fa4a86caaa93dd0e4873725342c698bddabcbc90b771fb8d60";
+  hasManpages = true;
   hasRunfiles = true;
+  scriptExts = [
+    "lua"
+  ];
   license = [ "mit" "cc-by-sa-30" ];
   version = "0.3.0";
 };
+citation-style-language.binfiles = [
+  "citeproc-lua"
+];
 cite = {
   revision = 36428;
   stripPrefix = 0;
@@ -6519,6 +6662,9 @@ cjk-gs-integrate = {
   license = [ "gpl3" ];
   version = "20210625.0";
 };
+cjk-gs-integrate.binfiles = [
+  "cjk-gs-integrate"
+];
 cjk-ko = {
   revision = 63561;
   stripPrefix = 0;
@@ -6545,10 +6691,34 @@ cjkutils = {
   revision = 60833;
   sha512.run = "36b0d0ef4bae2a9e5f2238c5c9aa125eabfca509462b65a159f66cbafc690939e16760a86e7e7dcce22ffda2f301c039059cdff1af8ed862017f18552e13e728";
   sha512.doc = "636e6486f9661061d22d248b0b7a8debdb81cd08c56b449067782568fcc7db58922f7c9d40fbc992bdd008908f22a6733af4a8115d85c0572556d01e925c5587";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "gpl2" ];
   version = "4.8.5";
 };
+cjkutils.binfiles = [
+  "bg5+latex"
+  "bg5+pdflatex"
+  "bg5conv"
+  "bg5latex"
+  "bg5pdflatex"
+  "cef5conv"
+  "cef5latex"
+  "cef5pdflatex"
+  "cefconv"
+  "ceflatex"
+  "cefpdflatex"
+  "cefsconv"
+  "cefslatex"
+  "cefspdflatex"
+  "extconv"
+  "gbklatex"
+  "gbkpdflatex"
+  "hbf2gf"
+  "sjisconv"
+  "sjislatex"
+  "sjispdflatex"
+];
 clara = {
   revision = 54512;
   stripPrefix = 0;
@@ -6667,11 +6837,15 @@ clojure-pamphlet = {
   revision = 60981;
   sha512.run = "67047118c74e1d19426d99bd3a716d6076d977156f1e686bbd991d6b1cba464897f662e950c86218910b485300d40a5cb80d8d43868fb7920cc99a6d7f1c5735";
   sha512.doc = "02ab33398a87a47c76fd34df9eccde47b60b028b3a659294968b35beaead85908d958ccd94b8f706f6f2173c9af3d7f7382c510134dabde4bfab9be20f85998d";
+  hasManpages = true;
   sha512.source = "5848f7ace83c5bbf5017f7a760fdc464e848511717f5fcca5e17f95421429a5608c590fcbc1e7a0d49bb5996def552f16515edfbfa5a2673fef962529141e5a2";
   hasRunfiles = true;
   license = [ "gpl3Plus" ];
   version = "1.3";
 };
+clojure-pamphlet.binfiles = [
+  "pamphletangler"
+];
 cloze = {
   revision = 55763;
   stripPrefix = 0;
@@ -6723,9 +6897,17 @@ cluttex = {
   sha512.run = "35c8ec3711963131bb50fe67ef95705a1d40a6dfd831a33d863bde16f16e66086e204725154d0deaed13e94fdc28dd59497561673542151c1574f7fe87f516f9";
   sha512.doc = "c8e395e087f9ca511db96b96dee3de4a51fdfc9374ddaf40703db0980724000f1987298dc8253d0c5a8d7c97e46cc2a8165b7cad6560fa560213cd5ce85205de";
   hasRunfiles = true;
+  scriptExts = [
+    "lua"
+  ];
   license = [ "gpl3Plus" ];
   version = "0.5.1";
 };
+cluttex.binfiles = [
+  "cllualatex"
+  "cluttex"
+  "clxelatex"
+];
 cm = {
   revision = 57963;
   stripPrefix = 0;
@@ -12073,10 +12255,60 @@ context = {
     "stmaryrd"
     "xetex"
   ];
-  hasFormats = true;
+  formats = [
+    {
+      name = "cont-en";
+      engine = "pdftex";
+      patterns = [ "cont-usr.tex" ];
+      options = "-8bit *cont-en.mkii";
+    }
+    {
+      name = "cont-en";
+      engine = "xetex";
+      patterns = [ "cont-usr.tex" ];
+      options = "-8bit *cont-en.mkii";
+    }
+    {
+      name = "cont-fr";
+      enabled = false;
+      engine = "pdftex";
+      patterns = [ "cont-usr.tex" ];
+      options = "-8bit *cont-fr.mkii";
+      fmttriggers = [ "context" ];
+    }
+    {
+      name = "cont-it";
+      enabled = false;
+      engine = "pdftex";
+      patterns = [ "cont-usr.tex" ];
+      options = "-8bit *cont-it.mkii";
+      fmttriggers = [ "context" ];
+    }
+    {
+      name = "cont-nl";
+      enabled = false;
+      engine = "pdftex";
+      patterns = [ "cont-usr.tex" ];
+      options = "-8bit *cont-nl.mkii";
+      fmttriggers = [ "context" ];
+    }
+    {
+      name = "cont-ro";
+      enabled = false;
+      engine = "pdftex";
+      patterns = [ "cont-usr.tex" ];
+      options = "-8bit *cont-ro.mkii";
+      fmttriggers = [ "context" ];
+    }
+  ];
   sha512.run = "61fcc778837ecff88bb0e80e39e2acb3ee64e2c26e4069f7634e5dc6c74dc93caab78e4b0088ed58f494d6dcd3a5084bc55cd471baaeb292dc208cf2a241bf69";
   sha512.doc = "ee4458cd6d45a41652ae24b3b82bea5cfa2d8b9c14cf4ba1357f9f07d6572f8ba83e350b74659c471ebf5068f33f5c5762a11669ab2a4f5adb3db41f392956dd";
+  hasManpages = true;
   hasRunfiles = true;
+  scriptExts = [
+    "lua"
+    "rb"
+  ];
   license = [ "free" ];
 };
 context-account = {
@@ -12455,6 +12687,15 @@ context-visualcounter = {
   hasRunfiles = true;
   license = [ "bsd2" ];
 };
+context.binfiles = [
+  "context"
+  "contextjit"
+  "luatools"
+  "mtxrun"
+  "mtxrunjit"
+  "texexec"
+  "texmfstart"
+];
 continue = {
   revision = 49449;
   stripPrefix = 0;
@@ -12499,9 +12740,15 @@ convbkmk = {
   sha512.run = "01bb9621459bac7eecc99b1d9aa59de420ba805b2e0ecdb2a89f5c86fa4a3021d957b4ddc69617ea406e77865d68e40c657979c488fc51f4676d084cfe6181cd";
   sha512.doc = "937d436cb9387eac601883ced516fa40f60e606bb4bae0be62e1ded2a31754a1d00461a34ad533cce1cc48f4d11e880233eaac128d80841e0b22f18801e86506";
   hasRunfiles = true;
+  scriptExts = [
+    "rb"
+  ];
   license = [ "mit" ];
   version = "0.30";
 };
+convbkmk.binfiles = [
+  "convbkmk"
+];
 cooking = {
   revision = 15878;
   stripPrefix = 0;
@@ -12868,9 +13115,18 @@ crossrefware = {
   revision = 64754;
   sha512.run = "7e8836c9c1cec51676a01e3e631cd3a0155f081909415e8ae2a4143b5eb611c5c843a0c700af98dc983ace1f9e3492da5a42bd54e74757ca68da7f106f7eb6b5";
   sha512.doc = "7b7212f8a4b6f75d93ec573f9d7544f09df2e73e0b2a32e2f22866378f0d69e0b035511ee5cbc7eee4114b5540b3783d613aafd7508a41aa336195e49b070a78";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "gpl1Only" ];
 };
+crossrefware.binfiles = [
+  "bbl2bib"
+  "bibdoiadd"
+  "bibmradd"
+  "biburl2doi"
+  "bibzbladd"
+  "ltx2crossrefxml"
+];
 crossword = {
   revision = 64375;
   stripPrefix = 0;
@@ -12969,13 +13225,31 @@ cslatex = {
     "tex-ini-files"
     "unicode-data"
   ];
-  hasFormats = true;
+  formats = [
+    {
+      name = "cslatex";
+      engine = "pdftex";
+      options = "-etex cslatex.ini";
+      fmttriggers = [ "atbegshi" "atveryend" "cm" "csplain" "everyshi" "firstaid" "hyphen-base" "l3kernel" "l3packages" "latex-fonts" "latex" "unicode-data" ];
+    }
+    {
+      name = "pdfcslatex";
+      engine = "pdftex";
+      options = "-etex cslatex.ini";
+      fmttriggers = [ "atbegshi" "atveryend" "cm" "csplain" "everyshi" "firstaid" "hyphen-base" "l3kernel" "l3packages" "latex-fonts" "latex" "unicode-data" "tex-ini-files" ];
+    }
+  ];
   sha512.run = "a65516275b53ce0e2487193b537759da447137898915f577c66893d6408c664b7cb830941dac2e80b2922c1597719cc879f66d3378216bfa2dc190e1bf502675";
   sha512.doc = "d1be033b7355bb3431193a9a39bdd1e269c7f3a97333c2b753ffdf795ad45a366893267a13472463805ed428760de680aae3377b25ef39bf5522a0186f80f899";
+  hasManpages = true;
   sha512.source = "def618478c9d3b500aafdf47ea5e9432412b9ae5029417b85fe38f2c506d691cc001b9c4492bceb7ff276a15612bf17b13dc2fecd2158ad940e97c6ca2d03bb7";
   hasRunfiles = true;
   license = [ "gpl1Only" ];
 };
+cslatex.binfiles = [
+  "cslatex"
+  "pdfcslatex"
+];
 csplain = {
   revision = 62771;
   deps = [
@@ -12990,12 +13264,48 @@ csplain = {
     "tex"
     "tex-ini-files"
   ];
-  hasFormats = true;
+  formats = [
+    {
+      name = "csplain";
+      engine = "pdftex";
+      options = "-etex -enc csplain-utf8.ini";
+      fmttriggers = [ "cm" "cs" "hyphen-base" "plain" "enctex" "hyph-utf8" ];
+    }
+    {
+      name = "luacsplain";
+      engine = "luatex";
+      options = "-etex csplain.ini";
+      fmttriggers = [ "cm" "cs" "hyphen-base" "plain" "tex-ini-files" "luatex" "luatex85" ];
+    }
+    {
+      name = "pdfcsplain";
+      engine = "luatex";
+      options = "-etex csplain.ini";
+      fmttriggers = [ "cm" "cs" "hyphen-base" "plain" "tex-ini-files" "luatex" "luatex85" ];
+    }
+    {
+      name = "pdfcsplain";
+      engine = "pdftex";
+      options = "-etex -enc csplain-utf8.ini";
+      fmttriggers = [ "cm" "cs" "hyphen-base" "plain" "enctex" "hyph-utf8" "tex-ini-files" ];
+    }
+    {
+      name = "pdfcsplain";
+      engine = "xetex";
+      options = "-etex csplain.ini";
+      fmttriggers = [ "cm" "cs" "hyphen-base" "plain" ];
+    }
+  ];
   sha512.run = "c4dbe1721fc2281cba7e426f6c75d35671cfeddf77a947f147a33c651090bc90528583445736bc2933c2d3986424e1b3ac4984e93cfae5f0ad1cfe41902f63cb";
   hasRunfiles = true;
   license = [ "free" ];
   version = "Mar._2022";
 };
+csplain.binfiles = [
+  "csplain"
+  "luacsplain"
+  "pdfcsplain"
+];
 csquotes = {
   revision = 64389;
   stripPrefix = 0;
@@ -13084,10 +13394,14 @@ ctan-o-mat = {
   revision = 51578;
   sha512.run = "a995dfc6d79ba77fe673aa501f28eaf9f057c34501fa032423569317e5a4eed048c3375d806eafacedefec02e91bcb587fa6bfb8c0ff980395bb877b2ce88c4c";
   sha512.doc = "423efc3f2f850c5a9bcbe787edb8155ef76e56ce5e3a1ba3332bb465b8239616bd1fcff2e8a58db6f5ce9d5191ae3209a5451f746250a3b081fe9b35d024eebd";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "bsd3" ];
   version = "1.2";
 };
+ctan-o-mat.binfiles = [
+  "ctan-o-mat"
+];
 ctan_chk = {
   revision = 36304;
   stripPrefix = 0;
@@ -13100,18 +13414,26 @@ ctanbib = {
   revision = 66069;
   sha512.run = "5cb965c9b387d5c733204663f5f6496e4ff8033ece3f6063513bb8890516e8e96b4d307ce830ac51f15796ac467e3db0e27eea668f14b4da8b3446623b6767fa";
   sha512.doc = "e161bc466807c7697cb7232874c0d7daf14d82677d25a081085dce91461826d2aace842f599cd27cc0f6491d31028d3253e8d9dbf237f9e97444dda80490e5ba";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "lppl13c" ];
   version = "0.2b";
 };
+ctanbib.binfiles = [
+  "ctanbib"
+];
 ctanify = {
   revision = 44129;
   sha512.run = "6774b151bb0fb052d41d8447c7e8d378d7f31b0a5aea5f2f00b93669b8c2f629f479ae21d40480fd62f468d866cbe0c6f0dedd8a0248f8d83cd1039131849439";
   sha512.doc = "f9b636cb41b126809d808c167410a37052b1c6c385fe4eb8df3b819c0cf2cac2c7c1c74d7ea15d2916c1cbc563e078845e451000e3a08cd9a8e0696a342b22ac";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "lppl13c" ];
   version = "1.9.1";
 };
+ctanify.binfiles = [
+  "ctanify"
+];
 ctanupload = {
   revision = 26313;
   sha512.run = "4464bdfbf72318b24abcd88e1c25dae5925a96e867c694f3f02a594ed7b8b24cffdcdb345f0054e200a6af63f88b591ff84058af0adfb4a1b3feff2a057d9d72";
@@ -13120,6 +13442,9 @@ ctanupload = {
   license = [ "gpl3" ];
   version = "1.2c";
 };
+ctanupload.binfiles = [
+  "ctanupload"
+];
 ctex = {
   revision = 66119;
   stripPrefix = 0;
@@ -13192,9 +13517,13 @@ ctie = {
   ];
   sha512.run = "c1c69127e1157c15086beb269e1925feaf63eebbc45baec018ce97196a2fc42638bb3107a4c1d065e98a08e490d238d2bffe1827f27f9015ffa5be88be53d6bf";
   sha512.doc = "494a3e6569a77b434f66a56f1fa44d4651dc23e7cdcacb101043ed55cc6e32551f148e67976b67b88507da2fe05a0b006c810fb737f9364d47cb010438c7b39e";
+  hasManpages = true;
   license = [ "gpl1Only" ];
   version = "1.1";
 };
+ctie.binfiles = [
+  "ctie"
+];
 cuisine = {
   revision = 34453;
   stripPrefix = 0;
@@ -13340,6 +13669,7 @@ cweb = {
   revision = 65081;
   sha512.run = "a3c7600debbae6ee9af48efc27cb69eb84fb338985ddcbaceffd969e18673d0943d080a3c9fd83a3edda8b93a0d70e2b4bcced158c903477c29620decc1587f0";
   sha512.doc = "6f0ced7413dd513cdbde98a2c9e4f3841e8469084938e921a186b0f0a571ed859548921e710deb1c1634063068807aba15209cb0d07f891564d42dc751784e45";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "knuth" ];
 };
@@ -13357,6 +13687,14 @@ cweb-old = {
   sha512.run = "efb1c9b65f7c628905d2dac1373da96346b6b6c78f15e8c0c8055e86c1a52b09bdb5f78fb06106e350d10a8daa378eb45f5fe788c6c3d8b23f0b47c3db6f256a";
   hasRunfiles = true;
 };
+cweb.binfiles = [
+  "ctangle"
+  "ctwill"
+  "ctwill-refsort"
+  "ctwill-twinx"
+  "cweave"
+  "twill"
+];
 cyber = {
   revision = 46776;
   stripPrefix = 0;
@@ -13403,8 +13741,13 @@ cyrillic-bin = {
   revision = 62517;
   sha512.run = "30d3bdb0f92a0006613dee654714818b6961207029982d62b9933829b3d044bea0b2d9a30d0007dac23c08358a7ada2df9ac25ee92398cb32d47e9c29c503c67";
   sha512.doc = "91da42251e165d17507b37eb48b35e157c75b06fa8822c9717fafd5e7aadc60bfeb084dc30a5ec32df22ae4e69c03c3f00e8a243d187881212ffe62c96b6235b";
+  hasManpages = true;
   hasRunfiles = true;
 };
+cyrillic-bin.binfiles = [
+  "rubibtex"
+  "rumakeindex"
+];
 cyrplain = {
   revision = 45692;
   stripPrefix = 0;
@@ -14045,6 +14388,9 @@ de-macro = {
   license = [ "free" ];
   version = "1.4.1";
 };
+de-macro.binfiles = [
+  "de-macro"
+];
 debate = {
   revision = 64846;
   stripPrefix = 0;
@@ -14201,8 +14547,12 @@ detex = {
   revision = 62387;
   sha512.run = "27c94ef578afaf7fa3ca232f4a4a0e5167c69cf24a2c005c1d5a06830332b6a4aca8d0eb4450026d498e371d5c142bb71cd41de199b77f5963d88d612208e0ad";
   sha512.doc = "f3339f5d93f073bdc2b6052f38c314a1f4284c60a5adc7813ee2cf7d5f609ce8c68b60cb2a0fc9571e26796ba2fc2660da137120751fb465ed723a800aac2cc8";
+  hasManpages = true;
   license = [ "free" ];
 };
+detex.binfiles = [
+  "detex"
+];
 dhua = {
   revision = 24035;
   stripPrefix = 0;
@@ -14226,9 +14576,15 @@ diadia = {
   sha512.run = "55a246d4e3ab86d6300210d830ce464a935bb83c9ffd29b5387f0a56f5c82d4c5a71cf107f78ffe0cde07f17897e2f949acf1fe70da9da7c7992b330a07b1c68";
   sha512.doc = "e7487bb47fbe8aee714304150c00866780782a9ad32bf6ccbb02799aeb251345ce1cf042e8b4d7b4011083a3be2fe3b16b78f25a4a4206d173ac1384716592ab";
   hasRunfiles = true;
+  scriptExts = [
+    "lua"
+  ];
   license = [ "lppl13c" ];
   version = "1.1";
 };
+diadia.binfiles = [
+  "diadia"
+];
 diagbox = {
   revision = 54080;
   stripPrefix = 0;
@@ -14311,9 +14667,15 @@ digestif = {
   sha512.run = "098d625749cee42f965d21ef5ec2843211db36fd0f4cced882ed15f32a20a2d70bf292b01e6797e7ca097adfadf2fd40d3c5eef6c694da39e8302770cfb784d3";
   sha512.doc = "fabc6d0ea5a1e55b7ecd6430b2373c15e413c985485331bd7bd5bca437947a76ac7d8ac6ed2ea3d6afe687284aef673b0e302a1c9925737c6e1d95cecf2ea8cb";
   hasRunfiles = true;
+  scriptExts = [
+    "texlua"
+  ];
   license = [ "gpl3Plus" "lppl13c" "fdl13Only" ];
   version = "0.5.1";
 };
+digestif.binfiles = [
+  "digestif"
+];
 digiconfigs = {
   revision = 15878;
   stripPrefix = 0;
@@ -14597,11 +14959,15 @@ dosepsbin = {
   revision = 29752;
   sha512.run = "7f31d47d60b0bf151cd6e6516e29a8414c6344657c133e726e6e8dfe23818995b10b9a2898b1801c4bcb9219969a8af1d2725b75df514ffb119730b3e49008f1";
   sha512.doc = "b9edce9984698db8e50f9183f89b025cfa89dca8a8725054af80f379c88ff1d2b02cef8f3d5f37ee5b8585a59d1a4d0f0ee0e541a7784f3f3f4e382d78e6a47e";
+  hasManpages = true;
   sha512.source = "d5739533a9d10e584ed7de4ec033b4a31be5681fd06fd9a2268f924d4434df902fc1f346ac2636f4ba7b7dcc6b5804a80b5431f7055fe8eccfeeea09915ad2e7";
   hasRunfiles = true;
   license = [ "artistic1-cl8" ];
   version = "1.2";
 };
+dosepsbin.binfiles = [
+  "dosepsbin"
+];
 dot2texi = {
   revision = 26237;
   stripPrefix = 0;
@@ -14897,9 +15263,14 @@ dtl = {
   revision = 62387;
   sha512.run = "c2b7f3ab778c01979b158c335e4bff7bbb677fe8c5bc3202a5f43c747119dbc4a7e348c5fbb0bf2a487a49430939fae6abc855392da92ba65441b87e08585189";
   sha512.doc = "476723cb714863405daaa5fdc35557ffe7cb1149735272cfec2f14473ee65b93da90648abf73b4cf09799b1595569513f3735a07173b50eb6db405d526d40660";
+  hasManpages = true;
   license = [ "publicDomain" ];
   version = "0.6.1";
 };
+dtl.binfiles = [
+  "dt2dv"
+  "dv2dt"
+];
 dtxdescribe = {
   revision = 65445;
   stripPrefix = 0;
@@ -14926,6 +15297,9 @@ dtxgen = {
   license = [ "gpl1Only" ];
   version = "1.08";
 };
+dtxgen.binfiles = [
+  "dtxgen"
+];
 dtxtut = {
   revision = 38375;
   stripPrefix = 0;
@@ -15012,29 +15386,49 @@ dvi2tty = {
   revision = 62387;
   sha512.run = "1dd9556f0b16e6111c1d93ec18fcc850a92b94298587ebda093d27d2abfb0e2adfb30afa64f8cb2d6e651711f4818ff8a6e8d85007c30e0130278ce1ed6fcaa3";
   sha512.doc = "396fefcb10e6f44b841ed0afb6604d9ffede1ec9f4bb180ddbe09cf3d2f9eb3989658d8976e3e3d446c186933f22d5579cc2ead2047fa56dc066b2aa65bb3670";
+  hasManpages = true;
   license = [ "gpl2" ];
   version = "6.0.0";
 };
+dvi2tty.binfiles = [
+  "disdvi"
+  "dvi2tty"
+];
 dviasm = {
   revision = 64430;
   sha512.run = "bfdc888c7a69d103d9c4548ca0465223a4e16be51a5c36f4c7a9d1064a553f60e6fb5d197a6be72e2be076c5012d7d3c7f871e217777d0be0c0e4669c1602a6c";
   sha512.doc = "c1be5541992450e6519c1768ea21d342c5e41fb4da6547828c89c79bd8abf77634ae76c3e5c06b608172234d117f5d5839600031dc4fb0cbbaa493d0bb1154ac";
+  hasManpages = true;
   hasRunfiles = true;
+  scriptExts = [
+    "py"
+  ];
   license = [ "gpl3Plus" ];
 };
+dviasm.binfiles = [
+  "dviasm"
+];
 dvicopy = {
   revision = 62387;
   sha512.run = "9932e2c5c2c3c0ddf4c874b81441d8ca740b851da75644bfe20d0a4bde8d8bd062829423680bc95b6b53c83ed05bcd3148330d273c1cd1c3ab93dc95ca2265ea";
   sha512.doc = "e081e3971664c8322568481d87b5723bce54320c796f928dfd1f20f7e65eddaa2d9dad65ff2775ac6d5cccbc36a1ac72e3f33198c20008698fdbcad713638dd5";
+  hasManpages = true;
   license = [ "gpl1Only" ];
   version = "1.5";
 };
+dvicopy.binfiles = [
+  "dvicopy"
+];
 dvidvi = {
   revision = 52851;
   sha512.run = "d4589c7c034308547b4970104f6396ef24a15be22e034ac2f4f04a1004915c8d477e64e2c4b61927f43313b90b063602a4bcd45afb1bc33ee395e0b7caef202b";
   sha512.doc = "865f4e96bc8ff13005350800014ede4c95671db1c45f35e37b153637c23834d34054e3aac1b6033c6a219f9f123563b1d0cc3093c901f67dba7e33e65ba81646";
+  hasManpages = true;
   license = [ "free" ];
 };
+dvidvi.binfiles = [
+  "dvidvi"
+];
 dviincl = {
   revision = 29349;
   stripPrefix = 0;
@@ -15052,17 +15446,34 @@ dviinfox = {
   license = [ "mit" ];
   version = "1.06";
 };
+dviinfox.binfiles = [
+  "dviinfox"
+];
 dviljk = {
   revision = 52851;
   sha512.run = "7f0fff6f850f22788981370dfe9759f8d1ac803f75e6355c582eca83ca3940f64e3c32c32881234e25d8bda59e47a4f236751c9464dc41f93c67c16cc55082ef";
   sha512.doc = "82d28f1adfc368582a5b1d05e2e73ba99bd05d51f9daa972f5ca753905341ee1d61b9e15d402b3017bfdd78bd64c7c222794bbf76073517f96ea1b9d7a58cea6";
+  hasManpages = true;
   license = [ "gpl1Only" ];
 };
+dviljk.binfiles = [
+  "dvihp"
+  "dvilj"
+  "dvilj2p"
+  "dvilj4"
+  "dvilj4l"
+  "dvilj6"
+];
 dviout-util = {
   revision = 52851;
   sha512.run = "a9445602ac5a3663920f8c7d428e833b0451c3e80203be57cc6fbdda5db5f7c89da75cf58e74d56c4ab9cd817fc9f080a056ebd045828a0d5b034108cda61bc5";
   sha512.doc = "61f86a23314334d7faa4f1ae0760aea6c5e5f77754a6a9b1d5952f09e3e15d3dead73a9f72ccfe9b9d7a022654f8d2e1e6e3051dc12bff574b6f053cdbc9b598";
+  hasManpages = true;
 };
+dviout-util.binfiles = [
+  "chkdvifont"
+  "dvispc"
+];
 dvipdfmx = {
   revision = 61101;
   deps = [
@@ -15071,29 +15482,52 @@ dvipdfmx = {
   postactionScript = "tlpkg/tlpostcode/dvipdfmx.pl";
   sha512.run = "6dd78f4b5cabb51c3bd9988fa46bf90a5a79b3d3293257a4c563a8a76a5a03eb167ce3ec0d4ce6ed05412a551eb201f2379a50a97ac5355ebe833f7b34cee4b4";
   sha512.doc = "00dce9b36eefd1788bbe455b2e5104efd9afc8bd891aeafb2cd9bdee406eeb25ab520e42e614e9d2363eb6a7273232bc3c4805bacd82a22099c5ffc438e852cb";
+  hasManpages = true;
   hasRunfiles = true;
   hasTlpkg = true;
   license = [ "gpl1Only" ];
 };
+dvipdfmx.binfiles = [
+  "dvipdfm"
+  "dvipdfmx"
+  "dvipdft"
+  "ebb"
+  "extractbb"
+  "xdvipdfmx"
+];
 dvipng = {
   revision = 62517;
   sha512.run = "d24be610a63a9df22ebe6f53891519ab77900611d1159dec5e97b27160f3552b4cbce42b575a036125d2b15910a72cb5e3793a3409c5d0f4b1df0c2433e828f8";
   sha512.doc = "976ff6c9628fe85adca2287f04d76f2c1605f243e28b4d32cb1ef9a90d30dcae0d202e6d5156914c204fd42b0a66460755a89f7dbdeb9ec1ccf6010cfe8daf78";
+  hasManpages = true;
   license = [ "lgpl3" ];
   version = "1.17";
 };
+dvipng.binfiles = [
+  "dvigif"
+  "dvipng"
+];
 dvipos = {
   revision = 52851;
   sha512.run = "152cc45942bb1d241008ea0924f1e96e2329d6fd4228be42dc6dcb9eb28081bcb3d80e407e9fdf0560e93d095fd07351cf073f14d4a4c25eb984613fd9189826";
   sha512.doc = "2bf3fd5bbd7b6e1fb8a263dd0e3deef358bead727df5de280342376225fd7366ff470b9c2fca8f763890d1047fe2c7a5b138ade1b5fcab383c8113e10f245199";
+  hasManpages = true;
 };
+dvipos.binfiles = [
+  "dvipos"
+];
 dvips = {
   revision = 62387;
   sha512.run = "a680a4685d3cbb429ad9dada0d48098f7755253ad1d7c808731f0f4fb4c37971cb937a9fa68bcecd892de93cc35a8086b742c86338460585c2912f36d00ade67";
   sha512.doc = "a6acb780a45663fb21976622d7b6c3ea8d4adf1fe405ee97cd7c4cf09fa49b59069ba72b2aa14b53d3ba631b37c5cbd979929adaa274a0bec8b1272d85e1cd43";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "free" ];
 };
+dvips.binfiles = [
+  "afm2tfm"
+  "dvips"
+];
 dvipsconfig = {
   revision = 13293;
   stripPrefix = 0;
@@ -15106,9 +15540,13 @@ dvisvgm = {
   revision = 66534;
   sha512.run = "503ca116be0a87f2606c9e898a591dedaa7a078713e30673eae5dc748fa4c4f13ce8c81852c959e84c3c45766daa565222db59a66315b0238e716e762e19eb31";
   sha512.doc = "faa5efd79a8cf665cc502825ea185e1abe8ce5e466b5bf485f90fc2a21a1df564ce7f9c91e6db42e67acbe78bbeb683dd9a94231044503c8082f68c33d9f8ec0";
+  hasManpages = true;
   license = [ "gpl3Plus" ];
   version = "3.0.4";
 };
+dvisvgm.binfiles = [
+  "dvisvgm"
+];
 dynamicnumber = {
   revision = 38726;
   stripPrefix = 0;
@@ -15296,8 +15734,14 @@ ebong = {
   sha512.run = "2553e46f91021de4fc9eda99ff45f8efe9b20b0663912b4339b22247d1bf7125f9be398661fe24fa2e3fae6a220025d47b05f4680601f7b4842d1111a6128d8c";
   sha512.doc = "22d20c89883c6cbb95f3fbc3da3f4c5526c9c22b15ec35828bb03a1edf068573de0b35187a893c8356b50fd59c93ce4231f02ac4f15de4071e6ced73b9e44a57";
   hasRunfiles = true;
+  scriptExts = [
+    "py"
+  ];
   license = [ "publicDomain" ];
 };
+ebong.binfiles = [
+  "ebong"
+];
 ebook = {
   revision = 29466;
   stripPrefix = 0;
@@ -16154,14 +16598,26 @@ eplain = {
     "tex-ini-files"
     "unicode-data"
   ];
-  hasFormats = true;
+  formats = [
+    {
+      name = "eplain";
+      engine = "pdftex";
+      patterns = [ "language.dat" ];
+      options = "-translate-file=cp227.tcx *eplain.ini";
+      fmttriggers = [ "atbegshi" "atveryend" "babel" "cm" "everyshi" "firstaid" "hyphen-base" "l3backend" "l3kernel" "l3packages" "latex" "latex-fonts" "tex-ini-files" "unicode-data" "dehyph" "hyph-utf8" "knuth-lib" "plain" ];
+    }
+  ];
   sha512.run = "fda8158ae2bdc96187b6e6ace2a94be3e0f68201adbc02553b48a3848481352ac10ddd72babcbc2835e089ce751ade7dfa6cfd1c642c94155c2861db865f5c29";
   sha512.doc = "60902b2422d2f5d7570a19daf7f586df7882505d7c156539699a0aa47a0f3bde5688dcbdc92c8a6a9878f11392bc9b9f147626aad230eecd2740d56f104928ed";
+  hasManpages = true;
   sha512.source = "015de2eeeaec99bd15882a190f9ef3f2112520f8c591c7e6d2351c52d8690b024750adea426bcf95f438aaa20c97dd321881ac7212ff181e148337b57f6d386c";
   hasRunfiles = true;
   license = [ "gpl2Plus" ];
   version = "3.13";
 };
+eplain.binfiles = [
+  "eplain"
+];
 epsdice = {
   revision = 15878;
   stripPrefix = 0;
@@ -16211,9 +16667,17 @@ epspdf = {
   sha512.run = "f155834a9636991c8ae752f61f70bdf22ab3172270c85aebb05462cf26e44f6e81fb83842c8515bfa54e632a3beab8bb91cccf2b5eef459d77738443c77df56d";
   sha512.doc = "5d06f8a4ef295e0fac8cd1dc73ff98e266dcf4394ed76223c92d20758fa8195ef5bea9bde49b1a247acfdf67aa7717092f978b55fc4fbc8665922487d57985d6";
   hasRunfiles = true;
+  scriptExts = [
+    "tcl"
+    "tlu"
+  ];
   license = [ "gpl2" ];
   version = "0.6.5.1";
 };
+epspdf.binfiles = [
+  "epspdf"
+  "epspdftk"
+];
 epspdfconversion = {
   revision = 18703;
   stripPrefix = 0;
@@ -16227,6 +16691,7 @@ epstopdf = {
   revision = 66465;
   sha512.run = "7640431f06879ebf5f557ec298f57dbedfa8f19d332cd05302bc09b69a0eb676f89597fab7f2d7d6358d023bcd3888e6007944f3cf66a07c6a852fe5b064c800";
   sha512.doc = "eb66e71ad2ef95d603f48bc70a997fe17579e57c9e0114dc33dfa30207f3babc28989f59f8cab2299ec03d1b3665cecf53e3e07750539906d4a2c374c3424d49";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "free" ];
   version = "2.31";
@@ -16241,6 +16706,10 @@ epstopdf-pkg = {
   license = [ "lppl13c" ];
   version = "2.11";
 };
+epstopdf.binfiles = [
+  "epstopdf"
+  "repstopdf"
+];
 eq-pin2corr = {
   revision = 59477;
   stripPrefix = 0;
@@ -16545,6 +17014,7 @@ etex = {
   stripPrefix = 0;
   sha512.run = "662338c145e84577ee49bd7d1941ade688d07ab8382faec25d6f45891953554e85ab4d531164e58db97071a7950c31b36f9eec8700ad4b43dffef30217f0fd89";
   sha512.doc = "d7c7cb6c0a8c2056be906761c7f0173c7ec28aa4e910d9546aa75aea79f8a2aedef06d708710135d3f557586990fefd73086b4f11b8b7642a1cbaedde91b1b8b";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "knuth" ];
 };
@@ -16897,6 +17367,9 @@ exceltex = {
   license = [ "gpl1Only" ];
   version = "0.5.1";
 };
+exceltex.binfiles = [
+  "exceltex"
+];
 excludeonly = {
   revision = 17262;
   stripPrefix = 0;
@@ -17576,6 +18049,9 @@ fig4latex = {
   license = [ "gpl3" ];
   version = "0.2";
 };
+fig4latex.binfiles = [
+  "fig4latex"
+];
 figbas = {
   revision = 28943;
   stripPrefix = 0;
@@ -17697,10 +18173,14 @@ findhyph = {
   revision = 47444;
   sha512.run = "aea6305dc0d9b31367638078a7958933468e761ef4cf47a1c44d9fd5ab2e25f7af22273c4631946a90edc9b51947c2e56b3d4b74c8c59f0a79250c2edf5bc137";
   sha512.doc = "97f3fa22fe490d21bc9e5ce5ea0b23ff25ab9afd9c5dbf6e8d78b24fd306ddc132c5ba7ca7ea7e3d7aaeb48993c7968b0c02ae0b765416a939d84b53171f4179";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "gpl2" ];
   version = "3.4";
 };
+findhyph.binfiles = [
+  "findhyph"
+];
 fink = {
   revision = 24329;
   stripPrefix = 0;
@@ -18258,11 +18738,15 @@ fontinst = {
   revision = 62517;
   sha512.run = "c3668f79f4b926090188386044fd68b0f13913168cdcb2aa23ccfd3aead488dec03e79133669bac3d2b719fdd2d5ef735fd46cbb27fd26fe560368f9e0cda05d";
   sha512.doc = "23c569bdd6f12dd4cd0b5673ed9efde2c7c7988d86bf2f89409bc22c80f64ea80ca6824745b50ea3ef30f70e4bd7c8d7005a9e05e511c1e917a12630f4b4bdb2";
+  hasManpages = true;
   sha512.source = "1645dfe5c6cd0efc8d8af966eb7363176ee7a44646b5860a3c137dd70c7e130340887e8690913d03be84eb1d84134c4ec2add713e4583a0feeefe4a1c4554402";
   hasRunfiles = true;
   license = [ "lppl13c" ];
   version = "1.933";
 };
+fontinst.binfiles = [
+  "fontinst"
+];
 fontinstallationguide = {
   revision = 59755;
   stripPrefix = 0;
@@ -18291,9 +18775,15 @@ fontools = {
   revision = 65706;
   sha512.run = "a4cd3009c98502534f3c54d40fb22d788bcdfd474ba6bfc1b7010aa4d3471f468cd54a5d5c292d5afe685f9e4d99c023b8f78f302792dd1b381418042d96f47c";
   sha512.doc = "0506f6e9d0e0ae4fe4bb15303e2abde50a076899e4330a7d68f875abeaacff999cbab779bb368da5c717370e7cf885333c1479d6e795da4e387edd4656c30933";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "gpl2" ];
 };
+fontools.binfiles = [
+  "afm2afm"
+  "autoinst"
+  "ot2kpx"
+];
 fonts-churchslavonic = {
   revision = 56350;
   stripPrefix = 0;
@@ -18364,8 +18854,15 @@ fontware = {
   revision = 62387;
   sha512.run = "6103b16df1b465b08ebec98236b04a858ab1db6f7721c324d6776d5367c4a7ea5642869fff828147860b3858569abd4658174d03c3f23317c5ed28b53cf8cd75";
   sha512.doc = "c4caeb1ed2e50915e4ae76fe7b5fb53a4a7c55b9184e5a6c83a6912fa3d37f47627863bf76ca92578441d87055c82204bc09a3a8a96568edeef25e80c4cdac25";
+  hasManpages = true;
   license = [ "knuth" ];
 };
+fontware.binfiles = [
+  "pltotf"
+  "tftopl"
+  "vftovp"
+  "vptovf"
+];
 fontwrap = {
   revision = 15878;
   stripPrefix = 0;
@@ -18608,6 +19105,9 @@ fragmaster = {
   license = [ "gpl1Only" ];
   version = "1.6";
 };
+fragmaster.binfiles = [
+  "fragmaster"
+];
 fragments = {
   revision = 15878;
   stripPrefix = 0;
@@ -19209,9 +19709,15 @@ getmap = {
   sha512.run = "e5287152442820e20087b45c50a750af621e71e2175cd6790231d81e1f338e50aa75f29d9fbc31c2e5802229c8f15c4e0c7769d0513f1d1b0bafc96a8a3b120f";
   sha512.doc = "bb55c60ec958182aaaa6dfc292a06fbad8a0ebdcb56a6799f1358ad2009bcb72b06611672219c5e9bd6d7cb4db76c4fa030be5e06f9bb38d04fa6744f8bca330";
   hasRunfiles = true;
+  scriptExts = [
+    "lua"
+  ];
   license = [ "lppl13c" ];
   version = "1.11";
 };
+getmap.binfiles = [
+  "getmapdl"
+];
 getoptk = {
   revision = 23567;
   stripPrefix = 0;
@@ -19407,10 +19913,14 @@ git-latexdiff = {
   revision = 54732;
   sha512.run = "74077b3dd1a91a734af6d668b309f804dc58a282393d88d8d5d74a5e6fc73c197e49b462369f829cc7151e20aaf8085c0587428ed61ce7957a1ef173d92c5481";
   sha512.doc = "bfda354f808c1f94dfac207d1526409a160b89292e44541930dac34383e3ffec9ce63d04db041ea5ac529e1e01fdc80c4c64cd43e8cdc14aac974094732d6fe8";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "bsd2" ];
   version = "1.6.0";
 };
+git-latexdiff.binfiles = [
+  "git-latexdiff"
+];
 gitfile-info = {
   revision = 51928;
   stripPrefix = 0;
@@ -19516,8 +20026,12 @@ glossaries = {
   ];
   sha512.run = "a805158d4c2741c4efc707bfe417032903630d3f235c7431a3767e47592d8b9be2d64f6a14f21a0c7a3f4b37cbcba90d501c0ab1a551fe16357745960f362a1b";
   sha512.doc = "24e43bacdaf3d3680b49460849f2d4eb652f2e2103558edecff0cb78d261d0275e5f416c7fe83857fbe09f7016643849ee5f030e4b3db167f469960d7791489b";
+  hasManpages = true;
   sha512.source = "5240de5d2c942ec2eba38e76073f230265ce74dda641622acc8aad4c5856c1e8a749d01829ac39fc4b83479d9d24346270507c0f4bc5b957b7f4f3d07c4e898e";
   hasRunfiles = true;
+  scriptExts = [
+    "lua"
+  ];
   license = [ "lppl13c" ];
   version = "4.52";
 };
@@ -19691,6 +20205,10 @@ glossaries-spanish = {
   license = [ "lppl13c" ];
   version = "1.0";
 };
+glossaries.binfiles = [
+  "makeglossaries"
+  "makeglossaries-lite"
+];
 glyphlist = {
   revision = 54074;
   stripPrefix = 0;
@@ -20086,9 +20604,15 @@ gregoriotex = {
   sha512.doc = "67f018fe0eb9568b0ecc6977de8eb8fc1b0b9503372e2f674a97723c537d8a8fb4f48d48b95ee8979e4d4490d3725cf4a1411ab9d7da2ea14f72d0dad0fddd95";
   sha512.source = "0ae6211b33a256f1b10a2b167f3f5886f712688ae73baf13f698af37f69f83a9be754efbc6b0d5b3a1cdf11e7d459a98986b27c27b6318cba8fbb3e48d7f682a";
   hasRunfiles = true;
+  scriptExts = [
+    "lua"
+  ];
   license = [ "gpl3" ];
   version = "6.0.0";
 };
+gregoriotex.binfiles = [
+  "gregorio"
+];
 grfext = {
   revision = 53024;
   stripPrefix = 0;
@@ -20208,10 +20732,14 @@ gsftopk = {
   revision = 52851;
   sha512.run = "cb9aebd7428d10b627d80ea40d297f3e6de006859c7dd713478ff193458494f90017ecd0737376ac1f47638b059e02e8a46ea53a7c56b8561af75f770e214413";
   sha512.doc = "0a597e2908438fc00fc2bafa7ec635a82b70aad9d7f7e86851a654c0b72b719b8c550be0c20ecf6c8d96627863a48e6a387156ad2c7e71d1e296dd4937d60805";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "gpl1Only" ];
   version = "1.19.2";
 };
+gsftopk.binfiles = [
+  "gsftopk"
+];
 gtl = {
   revision = 49527;
   stripPrefix = 0;
@@ -20979,12 +21507,35 @@ hitex = {
     "tex-ini-files"
     "unicode-data"
   ];
-  hasFormats = true;
+  formats = [
+    {
+      name = "hilatex";
+      enabled = false;
+      engine = "hitex";
+      patterns = [ "language.dat" ];
+      options = "-etex -ltx hilatex.ini";
+      fmttriggers = [ "atbegshi" "atveryend" "babel" "cm" "everyshi" "firstaid" "hyphen-base" "l3backend" "l3kernel" "l3packages" "latex" "latex-fonts" "tex-ini-files" "unicode-data" ];
+    }
+    {
+      name = "hitex";
+      engine = "hitex";
+      patterns = [ "language.def" ];
+      options = "-etex -ltx hitex.ini";
+      fmttriggers = [ "cm" "hyphen-base" "etex" "knuth-lib" "plain" ];
+    }
+  ];
   sha512.run = "5a88c0f4d7bddc0161ce24bbe17884a93469f9ffb56ea6a2dcd3045cb97e5c9d09941e44e365483bc5126e1c9c6970ad151e19573d93b1472534333a507f1c63";
   sha512.doc = "3016748caa430c75689e27459c002abc8f68d4aa1c2d0be04b1f82981c44f7a3fd748f900aab5e4c37b16a56f884d5c0cf7d42323288c74cb51b72c19e0b08aa";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "x11" ];
 };
+hitex.binfiles = [
+  "hilatex"
+  "hishrink"
+  "histretch"
+  "hitex"
+];
 hithesis = {
   revision = 64005;
   stripPrefix = 0;
@@ -21410,11 +21961,15 @@ hyperxmp = {
   revision = 65979;
   sha512.run = "b2520a486ed2451f20b3414b29ccd209c427bfce22d248ba8e9e7b1f0c13e276b35853ed28b5d578e60d7234a1f6755f00023cc3f4bad968e0f22019aa547007";
   sha512.doc = "ce7269f6c014def7c967fd8782c3ba2e6bcbb2540e9dfaeccc63917d865ea0cc131c28ad2fcd7aff507b560d1dd7f05d4c3ee2cb9e483ba8f6f64e0bbc0dc619";
+  hasManpages = true;
   sha512.source = "c97193eda5c7e02f743ccb0dbc7915c6cff7c29facbc1e098b70987aa3a9b35123fd71bdc1d0b5fbf2f0d249dd48a6ace45b73c82351e1b4cf874420aea74871";
   hasRunfiles = true;
   license = [ "lppl13c" ];
   version = "5.11";
 };
+hyperxmp.binfiles = [
+  "hyperxmp-add-bytecount"
+];
 hyph-utf8 = {
   revision = 61719;
   stripPrefix = 0;
@@ -22726,6 +23281,9 @@ installfont = {
   license = [ "lppl13c" ];
   version = "1.7";
 };
+installfont.binfiles = [
+  "installfont-tl"
+];
 intcalc = {
   revision = 53168;
   stripPrefix = 0;
@@ -23118,14 +23676,34 @@ jadetex = {
     "wasysym"
     "zapfding"
   ];
-  hasFormats = true;
+  formats = [
+    {
+      name = "jadetex";
+      engine = "pdftex";
+      patterns = [ "language.dat" ];
+      options = "*jadetex.ini";
+      fmttriggers = [ "atbegshi" "atveryend" "babel" "cm" "everyshi" "firstaid" "hyphen-base" "l3backend" "l3kernel" "l3packages" "latex" "latex-fonts" "tex-ini-files" "unicode-data" "amsfonts" "auxhook" "bigintcalc" "bitset" "colortbl" "cyrillic" "dehyph" "ec" "etexcmds" "fancyhdr" "gettitlestring" "graphics" "graphics-cfg" "graphics-def" "hycolor" "hyperref" "hyph-utf8" "iftex" "infwarerr" "intcalc" "kvdefinekeys" "kvoptions" "kvsetkeys" "latex" "latexconfig" "letltxmacro" "ltxcmds" "marvosym" "passivetex" "pdfescape" "pdftexcmds" "psnfss" "refcount" "rerunfilecheck" "stmaryrd" "symbol" "tipa" "tools" "ulem" "uniquecounter" "url" "wasysym" "zapfding" ];
+    }
+    {
+      name = "pdfjadetex";
+      engine = "pdftex";
+      patterns = [ "language.dat" ];
+      options = "*pdfjadetex.ini";
+      fmttriggers = [ "atbegshi" "atveryend" "babel" "cm" "everyshi" "firstaid" "hyphen-base" "l3backend" "l3kernel" "l3packages" "latex" "latex-fonts" "tex-ini-files" "unicode-data" "amsfonts" "auxhook" "bigintcalc" "bitset" "colortbl" "cyrillic" "dehyph" "ec" "etexcmds" "fancyhdr" "gettitlestring" "graphics" "graphics-cfg" "graphics-def" "hycolor" "hyperref" "hyph-utf8" "iftex" "infwarerr" "intcalc" "kvdefinekeys" "kvoptions" "kvsetkeys" "latex" "latexconfig" "letltxmacro" "ltxcmds" "marvosym" "passivetex" "pdfescape" "pdftexcmds" "psnfss" "refcount" "rerunfilecheck" "stmaryrd" "symbol" "tipa" "tools" "ulem" "uniquecounter" "url" "wasysym" "zapfding" ];
+    }
+  ];
   sha512.run = "75b9c8be4f87b51798826f5ea070ff9877e8bfa2fbee5112972e9e0fc81a76dcb7081c2fe9eed645f53a38dd85443dfdb394004b2970c2ff5a91b32dc1cab909";
   sha512.doc = "f70f85a12d730fc9dfb29da57a6f95239c10aa8ba7b9453ae884cae81399609fb99ccac3bfbc41f0c5f360ef80bd3f78b2f8479a826412bf573e9c5336d7e8ca";
+  hasManpages = true;
   sha512.source = "180798c7f61cfd56cef3b98f25dec39b4062b636297e60bfdf96c925f295a256e19fd25bdb8f18794db31d586234cf7c4d22989cd901d51bdaf6c3b8002e73ae";
   hasRunfiles = true;
   license = [ "free" ];
   version = "3.13";
 };
+jadetex.binfiles = [
+  "jadetex"
+  "pdfjadetex"
+];
 jamtimes = {
   revision = 20408;
   stripPrefix = 0;
@@ -23178,6 +23756,9 @@ jfmutil = {
   license = [ "mit" ];
   version = "1.3.3";
 };
+jfmutil.binfiles = [
+  "jfmutil"
+];
 jieeetran = {
   revision = 65642;
   stripPrefix = 0;
@@ -23614,9 +24195,15 @@ ketcindy = {
   sha512.run = "da33a0bdc989fcb6f4521d23e5d44bae70d608ed8ac10f05d6962a252e99bbd80380afa2cbe9e02b9c652b044dfff79218f951144da6ce55f8a53033c11ff346";
   sha512.doc = "1704411b3e7c41b6318ff6f8da56007dbf1bec67bb495d25364d6274d9b8acf234430081c22bab6ad13ffd0ea47586e6e24c9f27da8a97a309e2128ec74f89e9";
   hasRunfiles = true;
+  scriptExts = [
+    "jar"
+  ];
   license = [ "gpl3Plus" ];
   version = "20191225.0";
 };
+ketcindy.binfiles = [
+  "ketcindy"
+];
 keycommand = {
   revision = 18042;
   stripPrefix = 0;
@@ -23902,13 +24489,25 @@ kotex-utils = {
   license = [ "lppl13c" ];
   version = "2.1.0";
 };
+kotex-utils.binfiles = [
+  "jamo-normalize"
+  "komkindex"
+  "ttf2kotexfont"
+];
 kpathsea = {
   revision = 65309;
   sha512.run = "8a9f0dd49470bec5ba0f963a0385bea45141d6b805682bd65e95291b02158b9d2cedd5bd43592de7c447fe87f04efa00e4d1aa191a490147adcb57ec3922b5db";
   sha512.doc = "51500943de0184fd9794dbf6af80aed2fc7bbaf2a7949facb1840ad0e32344d217aa4d58ee76e3934aec891858f789b3847b9027cb2bd75e5962be98ddd9d02f";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "lgpl21" ];
 };
+kpathsea.binfiles = [
+  "kpseaccess"
+  "kpsereadlink"
+  "kpsestat"
+  "kpsewhich"
+];
 kpfonts = {
   revision = 65583;
   stripPrefix = 0;
@@ -24090,10 +24689,17 @@ l3build = {
   ];
   sha512.run = "448eb99216ab32847ca682083ec700ef04851f3a680b67b6e2abcb7eb5e0b1d705260776f23073e5e8c43ff0dac9bfe343a6d271aaa5b99392c0603538f23bac";
   sha512.doc = "a1b2a775a1b12937afe34c4843aa6374f6e2bfe3e29004bb2b05f16d81f440921503c6373f7a44f5c72fa1185c7d0e7d06a7a2c5113986fc6b35d66b4b6d6f49";
+  hasManpages = true;
   sha512.source = "35f6b8a5c72b5e4d7e019ec7d4954fef929f3958dc0667f554728034c28f2aab63df3c82f5d2101502906534ee02f51a6fbc1e88b49f8da8c017355c9cd7fdb2";
   hasRunfiles = true;
+  scriptExts = [
+    "lua"
+  ];
   license = [ "lppl13c" ];
 };
+l3build.binfiles = [
+  "l3build"
+];
 l3experimental = {
   revision = 65621;
   stripPrefix = 0;
@@ -24181,8 +24787,12 @@ lacheck = {
   revision = 54070;
   sha512.run = "30241d13ac35054017c6240ad066ae84b11c26757fa895ffdc1444b0825e50a2a89864ca85d710882be4105127c4df203ad4a403504a6c309b796c9b9ee5b589";
   sha512.doc = "a1ef923bfe1c3496651052b4a8b6978665b75f43b7dbeb254fb61657050427aedc8415218f988a7e727849dd0001b67ed023ecd252bac2445b0965a58800187c";
+  hasManpages = true;
   license = [ "gpl1Only" ];
 };
+lacheck.binfiles = [
+  "lacheck"
+];
 ladder = {
   revision = 44394;
   stripPrefix = 0;
@@ -24345,9 +24955,39 @@ latex-bin = {
     "tex-ini-files"
     "unicode-data"
   ];
-  hasFormats = true;
+  formats = [
+    {
+      name = "dvilualatex";
+      engine = "luatex";
+      patterns = [ "language.dat" "language.dat.lua" ];
+      options = "dvilualatex.ini";
+      fmttriggers = [ "atbegshi" "atveryend" "babel" "cm" "everyshi" "firstaid" "hyphen-base" "l3backend" "l3kernel" "l3packages" "latex" "latex-fonts" "tex-ini-files" "unicode-data" "latex" "lm" "luaotfload" ];
+    }
+    {
+      name = "latex";
+      engine = "pdftex";
+      patterns = [ "language.dat" ];
+      options = "-translate-file=cp227.tcx *latex.ini";
+      fmttriggers = [ "atbegshi" "atveryend" "babel" "cm" "everyshi" "firstaid" "hyphen-base" "l3backend" "l3kernel" "l3packages" "latex" "latex-fonts" "tex-ini-files" "unicode-data" "latex" "dehyph" "hyph-utf8" "latexconfig" ];
+    }
+    {
+      name = "lualatex";
+      engine = "luahbtex";
+      patterns = [ "language.dat" "language.dat.lua" ];
+      options = "lualatex.ini";
+      fmttriggers = [ "atbegshi" "atveryend" "babel" "cm" "everyshi" "firstaid" "hyphen-base" "l3backend" "l3kernel" "l3packages" "latex" "latex-fonts" "tex-ini-files" "unicode-data" "latex" "lm" "luaotfload" ];
+    }
+    {
+      name = "pdflatex";
+      engine = "pdftex";
+      patterns = [ "language.dat" ];
+      options = "-translate-file=cp227.tcx *pdflatex.ini";
+      fmttriggers = [ "atbegshi" "atveryend" "babel" "cm" "everyshi" "firstaid" "hyphen-base" "l3backend" "l3kernel" "l3packages" "latex" "latex-fonts" "tex-ini-files" "unicode-data" "latex" "dehyph" "hyph-utf8" "latexconfig" ];
+    }
+  ];
   sha512.run = "91b6749a7fc520500812c203a1acb0701e7984e5e309eaf0c4815bc7ea0b507f3eeaaae3a6ad715ee53f018b8e38c695c4ff9567f26222cd2c52ba24e1a03c1f";
   sha512.doc = "30f9001ed8236f01555f8a21ff8286ea409d75583876f8ba795e1a819dea14cb3f2b3dff31e0258cf5deb75ae2fd9201e33260ef1f32c2ce53fb86bfa4e59f83";
+  hasManpages = true;
 };
 latex-bin-dev = {
   revision = 62387;
@@ -24378,10 +25018,52 @@ latex-bin-dev = {
     "tex-ini-files"
     "unicode-data"
   ];
-  hasFormats = true;
+  formats = [
+    {
+      name = "dvilualatex-dev";
+      engine = "luatex";
+      patterns = [ "language.dat" "language.dat.lua" ];
+      options = "dvilualatex.ini";
+      fmttriggers = [ "atbegshi" "atveryend" "babel" "cm" "everyshi" "firstaid" "hyphen-base" "l3backend" "l3kernel" "l3packages" "latex" "latex-fonts" "tex-ini-files" "unicode-data" "latex-base-dev" "latex-firstaid-dev" "lm" "luaotfload" ];
+    }
+    {
+      name = "latex-dev";
+      engine = "pdftex";
+      patterns = [ "language.dat" ];
+      options = "-translate-file=cp227.tcx *latex.ini";
+      fmttriggers = [ "atbegshi" "atveryend" "babel" "cm" "everyshi" "firstaid" "hyphen-base" "l3backend" "l3kernel" "l3packages" "latex" "latex-fonts" "tex-ini-files" "unicode-data" "latex-base-dev" "latex-firstaid-dev" "dehyph" "hyph-utf8" "latexconfig" "pdftex" ];
+    }
+    {
+      name = "lualatex-dev";
+      engine = "luahbtex";
+      patterns = [ "language.dat" "language.dat.lua" ];
+      options = "lualatex.ini";
+      fmttriggers = [ "atbegshi" "atveryend" "babel" "cm" "everyshi" "firstaid" "hyphen-base" "l3backend" "l3kernel" "l3packages" "latex" "latex-fonts" "tex-ini-files" "unicode-data" "latex-base-dev" "latex-firstaid-dev" "lm" "luaotfload" ];
+    }
+    {
+      name = "pdflatex-dev";
+      engine = "pdftex";
+      patterns = [ "language.dat" ];
+      options = "-translate-file=cp227.tcx *pdflatex.ini";
+      fmttriggers = [ "atbegshi" "atveryend" "babel" "cm" "everyshi" "firstaid" "hyphen-base" "l3backend" "l3kernel" "l3packages" "latex" "latex-fonts" "tex-ini-files" "unicode-data" "latex-base-dev" "latex-firstaid-dev" "dehyph" "hyph-utf8" "latexconfig" "pdftex" ];
+    }
+  ];
   sha512.run = "dade40731ce41c6a0304cb7472255f2d6c8b1fed45b619282aa747b3ebbdfd707da18947f06c8896d72605b324ffa58c3c7195bd90629531ef1fb54a91f1310c";
   sha512.doc = "7434698038dd90f10c51743e238cfcf0d85da2067d458f399e557b855c7ae6fd4e013ef4272e710eb9695d3e4f8757acae95c41a9e704a393202aafc11218754";
-};
+  hasManpages = true;
+};
+latex-bin-dev.binfiles = [
+  "dvilualatex-dev"
+  "latex-dev"
+  "lualatex-dev"
+  "pdflatex-dev"
+];
+latex-bin.binfiles = [
+  "dvilualatex"
+  "latex"
+  "lualatex"
+  "pdflatex"
+];
 latex-brochure = {
   revision = 40612;
   stripPrefix = 0;
@@ -24434,10 +25116,14 @@ latex-git-log = {
   revision = 54010;
   sha512.run = "15994c6eb9ba1b194df270c68a3d74ab3db11974875ce192559182b2dbfa9b308d598056a3145f2cc2f6718865a5b140ccb95dea22a9e23edee527e5b86362ff";
   sha512.doc = "52bc94324c64caac9a5b25b49c9ea01b8560433d640646ee70830d27637482cf50da95bbb86db93006f2be4ab9f5f79fa144e4b631d62c05f0a11ab45e639cbf";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "gpl3Plus" ];
   version = "1.0.0";
 };
+latex-git-log.binfiles = [
+  "latex-git-log"
+];
 latex-graphics-companion = {
   revision = 29235;
   stripPrefix = 0;
@@ -24508,9 +25194,15 @@ latex-papersize = {
   sha512.run = "00010f764235c6d9e4d6667c8c8b9f0ec6ae4b65afb53109f8179e0429d4b3787bd6b0985cd511f770cd74512483d1077e0f42136fe7ce1871984b372f2f2e54";
   sha512.doc = "8ebddd884e3e533d06332f2d6f8657ed54c9c376b3de68c7e7652f3b2835ec6601f5326ea70dc830b645440f0bd9ba2281e4f71a847946bb595771c6a950c0a6";
   hasRunfiles = true;
+  scriptExts = [
+    "py"
+  ];
   license = [ "asl20" ];
   version = "1.63";
 };
+latex-papersize.binfiles = [
+  "latex-papersize"
+];
 latex-refsheet = {
   revision = 45076;
   stripPrefix = 0;
@@ -24586,18 +25278,28 @@ latex2man = {
   revision = 64477;
   sha512.run = "2617f6e8059f30c0098ea896cff69f585ea2ddbd3bbbd8066e7296dd833d3a246b8fefc0af71a92abf7e2051c754c0e3e6098175a4b181780563416bc9146b95";
   sha512.doc = "390666cc56ad70342c9a24ca593fe65b3760674a882ed8bba383d193f2578285727a085f823afc03fa0dbc9966612caf9a29222fd2a9f39214f01aa268acdc50";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "lppl1" ];
   version = "1.29";
 };
+latex2man.binfiles = [
+  "latex2man"
+];
 latex2nemeth = {
   revision = 65269;
   sha512.run = "f2669a9e58857094c922b968f337e2cb2cf475b07811d53c61a8e0b4dc8bcc41d95186940361676bc62c0f235edb4fe7a7c0d5ee0f6d74c541d1108960e18e7e";
   sha512.doc = "7fa7ae1c628e29549fc3cb2c98164e27f60cc0bcbf14e26b7a325aee313a5f41c3144d5adf2993c20999016f4798dcd436d96c637c4258ace0efc3bda4a54a43";
   hasRunfiles = true;
+  scriptExts = [
+    "jar"
+  ];
   license = [ "gpl3" ];
   version = "1.1.3";
 };
+latex2nemeth.binfiles = [
+  "latex2nemeth"
+];
 latex4musicians = {
   revision = 49759;
   stripPrefix = 0;
@@ -24710,10 +25412,16 @@ latexdiff = {
   revision = 64980;
   sha512.run = "ae7179b5a9d410302d750233b6b22d29382406f3222129155c98b1f2ddc23d22ca7abe1683fd013c7302fe8e21e82a376499ae33d83c15a01fa2720696e5b718";
   sha512.doc = "2f484db22ec12886a4d76fabde3a65a982d3e659f524120b377221f91c7ad5973ad6023aa3226dd35baa687c86ec8dd8e736553d1604690d87e68d3cf7be84f8";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "gpl3" ];
   version = "1.3.3";
 };
+latexdiff.binfiles = [
+  "latexdiff"
+  "latexdiff-vc"
+  "latexrevise"
+];
 latexfileinfo-pkgs = {
   revision = 26760;
   stripPrefix = 0;
@@ -24732,6 +25440,9 @@ latexfileversion = {
   license = [ "lppl13c" ];
   version = "0.3";
 };
+latexfileversion.binfiles = [
+  "latexfileversion"
+];
 latexgit = {
   revision = 54811;
   stripPrefix = 0;
@@ -24749,14 +25460,21 @@ latexindent = {
   license = [ "gpl3" ];
   version = "3.20.3";
 };
+latexindent.binfiles = [
+  "latexindent"
+];
 latexmk = {
   revision = 65485;
   sha512.run = "c00227344e815dd558173662022045e2d6d2bf626235aa2b12e637da5ecfe069b4bf74d243eda7d33d0fb9d7c98e67fc33b2a6735d87bae17f22f5e81b1f2710";
   sha512.doc = "4daa3f455c7396aaff4c7ad0322787621fb91f247cf8da95dd65aebc4d09f114ef226b65c701807b6f4d66777026be2d65ff10745d96832658139f33b315069b";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "gpl2" ];
   version = "4.79";
 };
+latexmk.binfiles = [
+  "latexmk"
+];
 latexmp = {
   revision = 55643;
   stripPrefix = 0;
@@ -24774,6 +25492,9 @@ latexpand = {
   license = [ "bsd3" ];
   version = "1.7.2";
 };
+latexpand.binfiles = [
+  "latexpand"
+];
 latino-sine-flexione = {
   revision = 53485;
   stripPrefix = 0;
@@ -24848,8 +25569,22 @@ lcdftypetools = {
   ];
   sha512.run = "3f3cc8f7cce233eb36315b21db408847a267ff393d6d4118de61c4b03ec408f3f29b2d41fdcf84995bfbf5d07bcb25984d7ffc76458d4f2dc12fdb6dfb85e23f";
   sha512.doc = "5a1dd1e2fd79351afc65d6786b24aebd9681a2b9e92755b44a836b47da5ceb1817f085483f306991a113dc0c26edfcd84839dec93bb46a003034536f31b31e5f";
+  hasManpages = true;
   license = [ "gpl1Only" ];
 };
+lcdftypetools.binfiles = [
+  "cfftot1"
+  "mmafm"
+  "mmpfb"
+  "otfinfo"
+  "otftotfm"
+  "t1dotlessj"
+  "t1lint"
+  "t1rawafm"
+  "t1reencode"
+  "t1testpage"
+  "ttftotype42"
+];
 lcg = {
   revision = 31474;
   stripPrefix = 0;
@@ -25292,10 +26027,17 @@ light-latex-make = {
   revision = 66474;
   sha512.run = "e069afa8933cf7389014409342159462d2f04fed07cb9857bbaa828ae7752e89a2c21bf9814cee4d0a7763045986761f41cd92fd0bdf1b697815a37212832a16";
   sha512.doc = "53b2edb93b66c7addbbb4c8bb98ad7a9da4ca38ad33ccd8d5df38281bcb86ab6ea16aeb3babc3d0d18f8e355d5c678caf82f7bf3eaebd927a669e04274e4d5ab";
+  hasManpages = true;
   hasRunfiles = true;
+  scriptExts = [
+    "lua"
+  ];
   license = [ "mit" ];
   version = "1.2.0";
 };
+light-latex-make.binfiles = [
+  "llmk"
+];
 ligtype = {
   revision = 63577;
   stripPrefix = 0;
@@ -25311,9 +26053,17 @@ lilyglyphs = {
   sha512.doc = "4d9ac765c6a4b2b736d08569eeb6d0d8b168fe96563526264f2485d3d27a944a3e81c6144cd8f1d8cb5162d425b436fc688172db18b09610b3088df4ce868a27";
   sha512.source = "e0a1db8b5c4e57374ea19a7f8da3f4a89a2947869eba3f57411a9e815d645f4cb4200832276e3d3c869e2b3a8e3018e8e0f20f942f2396395b7739d7e9b23951";
   hasRunfiles = true;
+  scriptExts = [
+    "py"
+  ];
   license = [ "lppl13c" ];
   version = "0.2.4";
 };
+lilyglyphs.binfiles = [
+  "lily-glyph-commands"
+  "lily-image-commands"
+  "lily-rebuild-pdfs"
+];
 limap = {
   revision = 44863;
   stripPrefix = 0;
@@ -25442,6 +26192,9 @@ listbib = {
   license = [ "gpl1Only" ];
   version = "2.2";
 };
+listbib.binfiles = [
+  "listbib"
+];
 listing = {
   revision = 17373;
   stripPrefix = 0;
@@ -25470,6 +26223,9 @@ listings-ext = {
   license = [ "lppl12" ];
   version = "67";
 };
+listings-ext.binfiles = [
+  "listings-ext.sh"
+];
 listingsutf8 = {
   revision = 53097;
   stripPrefix = 0;
@@ -25701,13 +26457,23 @@ lollipop = {
     "cm"
     "hyphen-base"
   ];
-  hasFormats = true;
+  formats = [
+    {
+      name = "lollipop";
+      engine = "tex";
+      options = "lollipop.ini";
+      fmttriggers = [ "cm" "hyphen-base" ];
+    }
+  ];
   sha512.run = "81557b83acfa4ad42dfa6fb1a65ea42bc33885da444ee23bc3c67a899df7b3ac2c19a1607305b5ec10b503980365c5d29ac3598339fc186a05417ea5bca60a78";
   sha512.doc = "206dee2be733e3ac04b5b259862b60fb3641fc44ea182da601ca54a010ff8e42f254dd01c03be7bcdd2a6258110c567a596ee82b4eb74d04ca8ed70e50cd6a86";
   hasRunfiles = true;
   license = [ "gpl3" ];
   version = "1.07";
 };
+lollipop.binfiles = [
+  "lollipop"
+];
 longdivision = {
   revision = 59979;
   stripPrefix = 0;
@@ -26117,6 +26883,9 @@ ltxfileinfo = {
   license = [ "gpl1Only" ];
   version = "2.04";
 };
+ltxfileinfo.binfiles = [
+  "ltxfileinfo"
+];
 ltxguidex = {
   revision = 50992;
   stripPrefix = 0;
@@ -26130,10 +26899,14 @@ ltximg = {
   revision = 59335;
   sha512.run = "0c91f46da529823a96ef441ec88d6d3c077a8bd5997bc291f55012e0d227cc24f00081f846ae127a364cba26498a74f2769d401e6d5fe0057afdb2a76a875f4a";
   sha512.doc = "05f9639a0224c779276a3b7f19450c93e255c70680fd54292e1ad41b3c89aa15dc187d58a73475ed9a8f7279faa0f3a0ec15042e75a52c70d78416ec46255b44";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "gpl3Plus" ];
   version = "2.1";
 };
+ltximg.binfiles = [
+  "ltximg"
+];
 ltxkeys = {
   revision = 28332;
   stripPrefix = 0;
@@ -26334,10 +27107,17 @@ luafindfont = {
   revision = 64936;
   sha512.run = "a73bfe0aa1b6a907224cc98f2d5f6344249f79010ad5552c66286eb7c103d5c69851a452cb6eebf39ebd5b6e8e64062efb125bea1c6586ef5117f994a97244bd";
   sha512.doc = "e7196d9a2e69b5a6d5582d7ddc00ac480b16228b424cb9d568ef1ff6fbef48e5926776d5f22fa0eb5c4b09b6b29a283416206f64cf324356b35d66228bbbd3ea";
+  hasManpages = true;
   hasRunfiles = true;
+  scriptExts = [
+    "lua"
+  ];
   license = [ "lppl13c" ];
   version = "0.11";
 };
+luafindfont.binfiles = [
+  "luafindfont"
+];
 luagcd = {
   revision = 65396;
   stripPrefix = 0;
@@ -26360,10 +27140,22 @@ luahbtex = {
     "tex-ini-files"
     "unicode-data"
   ];
-  hasFormats = true;
+  formats = [
+    {
+      name = "luahbtex";
+      engine = "luahbtex";
+      patterns = [ "language.def" "language.dat.lua" ];
+      options = "luatex.ini";
+      fmttriggers = [ "cm" "etex" "hyphen-base" "knuth-lib" "plain" "tex-ini-files" "unicode-data" "hyph-utf8" "luatex" ];
+    }
+  ];
   sha512.run = "daafa6e417e7c366dde221488b91708f8c1302cf6db849b91a82bd74619f0b91e16430680aabeb27e43d1469262c9f799cd0bd6547635ac6ad54ef8e2dae5703";
   sha512.doc = "5d2915af80990896181a70c24dd3c51748fbaa6f3f9b96b67b1b40bc8ab36d39293e8f76c0f3dabdaffb252423eec61375b6f5aa859a1310236f7d39d6f2fcf3";
+  hasManpages = true;
 };
+luahbtex.binfiles = [
+  "luahbtex"
+];
 luahyphenrules = {
   revision = 56200;
   stripPrefix = 0;
@@ -26423,10 +27215,32 @@ luajittex = {
     "tex-ini-files"
     "unicode-data"
   ];
-  hasFormats = true;
+  formats = [
+    {
+      name = "luajithbtex";
+      engine = "luajithbtex";
+      options = "luatex.ini";
+      patterns = [ "language.def" "language.dat.lua" ];
+      fmttriggers = [ "cm" "etex" "hyphen-base" "knuth-lib" "plain" "tex-ini-files" "unicode-data" "hyph-utf8" "luatex" ];
+    }
+    {
+      name = "luajittex";
+      engine = "luajittex";
+      options = "luatex.ini";
+      patterns = [ "language.def" "language.dat.lua" ];
+      fmttriggers = [ "cm" "etex" "hyphen-base" "knuth-lib" "plain" "tex-ini-files" "unicode-data" "hyph-utf8" "luatex" ];
+    }
+  ];
   sha512.run = "f7503044bf237ca6d6e33a3a067bba0d73dfecfee7e77b5ebd4f3d6417dd24f7aa263cb08e7ffb86708574ecda31d5c7d89b42d2ad2179119393b99129f8077d";
   sha512.doc = "3924029e274913999cf54e2f3a4d3ef85dbfbb4ee93a629b8eeb77c796557c3086eb447fa74d2d7a6f33a17f433f38ceb033f7e1633e240bbb135b4239b588f7";
-};
+  hasManpages = true;
+};
+luajittex.binfiles = [
+  "luajithbtex"
+  "luajittex"
+  "texluajit"
+  "texluajitc"
+];
 luakeys = {
   revision = 65533;
   stripPrefix = 0;
@@ -26561,11 +27375,18 @@ luaotfload = {
   ];
   sha512.run = "70f27796fdfe61e0337239a2962052eb2896478358fca0f271287db06a1d2de2f83cd7394d0ec6c281e9a5779ec396e2993f53b8b045ed7a09cb17f100a4a477";
   sha512.doc = "9e1c223ec2589f32640aefd2692d031b8ba324da30a814eea98768443eeb76d92d2700c320e6f96006e54635d31a655cae0a27c76931e7640748889ead4fbfb4";
+  hasManpages = true;
   sha512.source = "3ed04272b887f434bfe2dd166974889318597e22c57109647946f2b255efca2fb6d1ecc1f02485a1bf387e77956c64a9f42c4af237b29f9fc7a38400d8cfbef1";
   hasRunfiles = true;
+  scriptExts = [
+    "lua"
+  ];
   license = [ "gpl2" ];
   version = "3.23";
 };
+luaotfload.binfiles = [
+  "luaotfload-tool"
+];
 luapackageloader = {
   revision = 54779;
   stripPrefix = 0;
@@ -26644,12 +27465,34 @@ luatex = {
     "tex-ini-files"
     "unicode-data"
   ];
-  hasFormats = true;
+  formats = [
+    {
+      name = "dviluatex";
+      engine = "luatex";
+      options = "dviluatex.ini";
+      patterns = [ "language.def" "language.dat.lua" ];
+      fmttriggers = [ "cm" "etex" "hyphen-base" "knuth-lib" "plain" "tex-ini-files" "unicode-data" "hyph-utf8" ];
+    }
+    {
+      name = "luatex";
+      engine = "luatex";
+      options = "luatex.ini";
+      patterns = [ "language.def" "language.dat.lua" ];
+      fmttriggers = [ "cm" "etex" "hyphen-base" "knuth-lib" "plain" "tex-ini-files" "unicode-data" "hyph-utf8" ];
+    }
+  ];
   sha512.run = "3bac06a5349e13d48ffebee9e78e271d8ea64d0e1b55df018ee1fab2533fbde3d9e9f99b64c3dbd3026c24b61bf6b867684489a73202cfdeb620558522c53b7f";
   sha512.doc = "ed7298a561425d7e5776ac6555716b2b57f0d16584a871de94c5c341f0d8023bbb341b2deb78dc313e9aaff18659b49f24c41063a5719a43b67e5b074fc0d3b5";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "gpl2Plus" ];
 };
+luatex.binfiles = [
+  "dviluatex"
+  "luatex"
+  "texlua"
+  "texluac"
+];
 luatex85 = {
   revision = 41456;
   stripPrefix = 0;
@@ -26756,9 +27599,15 @@ lwarp = {
   sha512.doc = "4e25b1cd6286c5ad70153993a0660db10e43bdae2099a66544fda73a6820404351352df5ba6889634d3b000257408cdc15945130a496a58ed52260734308cd57";
   sha512.source = "756b877b4bd41fea4f11dbb8951ec232ca6b97a3ed5ff197467ab38150cac04c788dfc5b390506d611fc47e749cb78c03fb3db73e191f380b2eed1cc00534426";
   hasRunfiles = true;
+  scriptExts = [
+    "lua"
+  ];
   license = [ "lppl13c" ];
   version = "0.911";
 };
+lwarp.binfiles = [
+  "lwarpmk"
+];
 lxfonts = {
   revision = 32354;
   stripPrefix = 0;
@@ -26790,10 +27639,18 @@ m-tx = {
   revision = 64182;
   sha512.run = "b56bc4432bcd340f3e92f5043c38bde7f14b5f2d32b9433fa21c73c20f7ebb981714175aa6f4f871636efb62a52cd24aa639e87a320039313b16db1b027ee2f5";
   sha512.doc = "316fbc2b37b903cae8da6bb9f44b8afad0e3e577c6fd84664e1724ffe318bbdbf9609dcadd5cde6a14cc5acbc134f69bd7a87dd90d9da7d4442a5f913b8132f5";
+  hasManpages = true;
   hasRunfiles = true;
+  scriptExts = [
+    "lua"
+  ];
   license = [ "mit" ];
   version = "0.63d";
 };
+m-tx.binfiles = [
+  "m-tx"
+  "prepmx"
+];
 macrolist = {
   revision = 60139;
   stripPrefix = 0;
@@ -26907,9 +27764,15 @@ make4ht = {
   sha512.run = "c6da836e4cd40bb987d2e15b3cbcc2a650284fc0bbc0c5220ac9b5e03b3ba9177986e013b68e401a951cb7982cd0a359d3ae2819c1ff516b4c6e88dacfe728c9";
   sha512.doc = "9a802d3a26656f066457d07118bea52c0859d77bd02c6599e572538c54461f577d6ceed5845ef339811bbbf36560c69528cc76b29550e209f021163a2f57c639";
   hasRunfiles = true;
+  scriptExts = [
+    "lua"
+  ];
   license = [ "lppl13c" ];
   version = "0.3m";
 };
+make4ht.binfiles = [
+  "make4ht"
+];
 makebarcode = {
   revision = 15878;
   stripPrefix = 0;
@@ -26983,6 +27846,9 @@ makedtx = {
   license = [ "lppl13c" ];
   version = "1.2";
 };
+makedtx.binfiles = [
+  "makedtx"
+];
 makeglos = {
   revision = 15878;
   stripPrefix = 0;
@@ -26995,9 +27861,14 @@ makeindex = {
   revision = 62517;
   sha512.run = "5967ba4123fd4c708ce841d29211fdb66c28518f4b418903be0ddf2a49964f706af96b250eec814c547e0703460c1273ce72a7acf3ea9fe28cc1c7073af29d3c";
   sha512.doc = "40b9ee1ebf7dba9a4bb4bb3077cdb1e88b07f276a9d0ae9c2817bd76a2f742ec9237d1b6d9658694fc5fc4e8f82591194862637bd83ea8e106c0541591d343ee";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "free" ];
 };
+makeindex.binfiles = [
+  "makeindex"
+  "mkindex"
+];
 makelabels = {
   revision = 60255;
   stripPrefix = 0;
@@ -27205,6 +28076,9 @@ match_parens = {
   license = [ "gpl1Only" ];
   version = "1.43";
 };
+match_parens.binfiles = [
+  "match_parens"
+];
 math-into-latex-4 = {
   revision = 44131;
   stripPrefix = 0;
@@ -27399,10 +28273,14 @@ mathspic = {
   revision = 31957;
   sha512.run = "e556960f07a003e877ce678110e724ef94d34aabc0ae52c59ec2ae487fc7d3e5de169844baaefd61e467e98a7a9718d94d881c3f0d43855e133040bdbddb6a62";
   sha512.doc = "1702071f4c26097e241ba161258a51461405954105c8a7f2d92a552d6397ef69af029652ba5528df999c569fae32955d1b194b0f7c4475b3fc870656b473386a";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "lppl13c" ];
   version = "1.13";
 };
+mathspic.binfiles = [
+  "mathspic"
+];
 mathtools = {
   revision = 63767;
   stripPrefix = 0;
@@ -27760,9 +28638,17 @@ metafont = {
     "kpathsea"
     "modes"
   ];
-  hasFormats = true;
+  formats = [
+    {
+      name = "mf";
+      engine = "mf-nowin";
+      options = "-translate-file=cp227.tcx mf.ini";
+      fmttriggers = [ "modes" ];
+    }
+  ];
   sha512.run = "4e287680b7b14497133165a45ed668dd326e587a305475d90f4b545aa1973a0e6001fef2e3a9afa5fd2f343497d109f4670fcc0f4c0263b20624dbbad1f21bd3";
   sha512.doc = "07e574fce34949b71ea0b156c394db80bdd9c9a3018afbdadf786fa431674b6fd0c2f79e8f9a72c872b17b2dbedb755c0ce3def552740a99e63d65e28fc3d2b0";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "knuth" ];
   version = "2.71828182";
@@ -27774,6 +28660,11 @@ metafont-beginners = {
   sha512.doc = "4fb7148b0668845447fd38411df0288972312a56897b1d5bce69a7e57ae632aacd12c273a911045204705a5534ac1d1c290af08a7057bd62184a59eb7146feb6";
   license = [ "publicDomain" ];
 };
+metafont.binfiles = [
+  "inimf"
+  "mf"
+  "mf-nowin"
+];
 metago = {
   revision = 15878;
   stripPrefix = 0;
@@ -27837,6 +28728,7 @@ metapost = {
   ];
   sha512.run = "d807a22bd0f3358d1986a477834c19b2fce636e4ea96f52f745220a165726505849ac4a1048bd4be49cf9e42e098a55df2a4c9b4d267dddbe2fb093ba3029d6d";
   sha512.doc = "384730c3f784bb026bb29ee69dc95d179c53636c405e1a037477269e9a3a95d8c296729d7bb54037ca4a76e5ef00eff4876c4538203e400db8c4f0850c48b259";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "lgpl2" ];
 };
@@ -27855,6 +28747,12 @@ metapost-examples = {
   sha512.doc = "2a3aec80b511864878e07ff973e17ed4fe1aec692c7e6983b57dde586aa19500cdd373687b0e081dc80c8584f116f0fa3de7ed4f09ba232eee8adce5e998c954";
   license = [ "free" ];
 };
+metapost.binfiles = [
+  "dvitomp"
+  "mfplain"
+  "mpost"
+  "r-mpost"
+];
 metastr = {
   revision = 56246;
   stripPrefix = 0;
@@ -27936,7 +28834,29 @@ mex = {
     "tex-ini-files"
     "utf8mex"
   ];
-  hasFormats = true;
+  formats = [
+    {
+      name = "mex";
+      engine = "pdftex";
+      patterns = [ "mexconf.tex" ];
+      options = "-translate-file=cp227.tcx *mex.ini";
+      fmttriggers = [ "hyph-utf8" "hyphen-base" "hyphen-polish" "knuth-lib" "pl" "plain" "tex-ini-files" ];
+    }
+    {
+      name = "pdfmex";
+      engine = "pdftex";
+      patterns = [ "mexconf.tex" ];
+      options = "-translate-file=cp227.tcx *pdfmex.ini";
+      fmttriggers = [ "hyph-utf8" "hyphen-base" "hyphen-polish" "knuth-lib" "pl" "plain" "tex-ini-files" ];
+    }
+    {
+      name = "utf8mex";
+      engine = "pdftex";
+      patterns = [ "mexconf.tex" ];
+      options = "-enc *utf8mex.ini";
+      fmttriggers = [ "hyph-utf8" "hyphen-base" "hyphen-polish" "knuth-lib" "pl" "plain" "tex-ini-files" "enctex" "utf8mex" ];
+    }
+  ];
   sha512.run = "a79d6a1ecb15f7962826773d7eab4b1ffd86a5c15f8076f096fecf63df1bd661449eb7d14251a57a1eb2bede030ddf93aac170fc3c59ae0a124da6cef69e55be";
   sha512.doc = "091f2825376718d8c2190555af7ef54d0ae5202425d57b986fba861df2f8604301df5a121ccfcfcdc91032d07dcda8289fb8de5d81c487b93b0e202a2a5a658e";
   sha512.source = "6f20a7e4f80670f7dfe5b2cfe3357a5d16b0f627b5e9e95c2d7d46598e00b989d5ae8c797589c56c594b7d3610f5f79cad42f3bb64a628be968e4e9e5d541e98";
@@ -27944,6 +28864,11 @@ mex = {
   license = [ "knuth" ];
   version = "1.05a";
 };
+mex.binfiles = [
+  "mex"
+  "pdfmex"
+  "utf8mex"
+];
 mf2pt1 = {
   revision = 61217;
   sha512.run = "ca93a3ae439f9cd8029720bd1d90fbe75a403e7ab4ebcbe1ba1e5a7a28aa9269197f90a4aee849fea59d734d5dc38f04eedc140ff1be64fd805a10ab5510a2f5";
@@ -27952,6 +28877,9 @@ mf2pt1 = {
   license = [ "lppl13c" ];
   version = "2.7";
 };
+mf2pt1.binfiles = [
+  "mf2pt1"
+];
 mfirstuc = {
   revision = 64743;
   stripPrefix = 0;
@@ -27987,10 +28915,27 @@ mflua = {
     "luatex"
     "metafont"
   ];
-  hasFormats = true;
+  formats = [
+    {
+      name = "mflua";
+      engine = "mflua-nowin";
+      options = "mf.ini";
+      fmttriggers = [ "luatex" "metafont" ];
+      enabled = false;
+    }
+  ];
   sha512.run = "fa735fa117e7bd433339efbb709caa5fc25007088500dd5e4f6999cc417d188fd43435f74d526186880ac857f9bfc52e1fb7f1055974cea959e28536150b1a19";
   hasRunfiles = true;
+  scriptExts = [
+    "lua"
+  ];
 };
+mflua.binfiles = [
+  "mflua"
+  "mflua-nowin"
+  "mfluajit"
+  "mfluajit-nowin"
+];
 mfnfss = {
   revision = 46036;
   stripPrefix = 0;
@@ -28034,9 +28979,18 @@ mfware = {
   revision = 62387;
   sha512.run = "4ed72f1fdd64298b0ae67af00c3ba64bc6ee0a4851ab09c674adf5824972ef183d2913f5bda7d0756be403cbb14817e67913274e350bed81201fbf7af5b2ec97";
   sha512.doc = "a4715a988208eb7ae2b252fa9e6d9e7dcd55cf86cd66d55d42d13cfe9acbfea8dee03ce0312944ed5075f7b6a48aaa25a7134831b7798c60af13cfc648955951";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "publicDomain" ];
 };
+mfware.binfiles = [
+  "gftodvi"
+  "gftopk"
+  "gftype"
+  "mft"
+  "pktogf"
+  "pktype"
+];
 mgltex = {
   revision = 63255;
   stripPrefix = 0;
@@ -28367,15 +29321,22 @@ mkgrkindex = {
   license = [ "free" ];
   version = "2.0";
 };
+mkgrkindex.binfiles = [
+  "mkgrkindex"
+];
 mkjobtexmf = {
   revision = 29725;
   sha512.run = "c0dffdb276141b78bd2c47e6d2bfddcd13c1800d3a0806a05ca1fba72a91621364b827801430bc757601e07f2a5130366ade49d7ac1df27901fbec29827739c3";
   sha512.doc = "3ef5c333cedd5104b63c1457fff2eee40aea7d1f1b187d34ce4cfccd5b6bd38809b7686dc7b41a147fbee2ae0e951470f3ae574bd3c10a5f9b6fb76b686ce4f5";
+  hasManpages = true;
   sha512.source = "7f9de9bafb890d12ef2f07d3b8596dc31c4bb97079f826c9efd4f318383f64d8250099a937d8d692fecf703e626b42f942962f4d906e705cf4b0155e354bff0f";
   hasRunfiles = true;
   license = [ "artistic1-cl8" ];
   version = "0.8";
 };
+mkjobtexmf.binfiles = [
+  "mkjobtexmf"
+];
 mkpattern = {
   revision = 15878;
   stripPrefix = 0;
@@ -28393,6 +29354,9 @@ mkpic = {
   license = [ "gpl1Only" ];
   version = "1.02";
 };
+mkpic.binfiles = [
+  "mkpic"
+];
 mla-paper = {
   revision = 54080;
   stripPrefix = 0;
@@ -28463,13 +29427,31 @@ mltex = {
     "tex-ini-files"
     "unicode-data"
   ];
-  hasFormats = true;
+  formats = [
+    {
+      name = "mllatex";
+      engine = "pdftex";
+      patterns = [ "language.dat" ];
+      options = "-translate-file=cp227.tcx -mltex *mllatex.ini";
+      fmttriggers = [ "atbegshi" "atveryend" "babel" "cm" "everyshi" "firstaid" "hyphen-base" "l3backend" "l3kernel" "l3packages" "latex" "latex-fonts" "tex-ini-files" "unicode-data" "dehyph" "hyph-utf8" "latex" "latexconfig" ];
+    }
+    {
+      name = "mltex";
+      engine = "pdftex";
+      options = "-translate-file=cp227.tcx -mltex mltex.ini";
+      fmttriggers = [ "cm" "hyphen-base" "knuth-lib" "plain" ];
+    }
+  ];
   sha512.run = "e04f33b83474e58c4725abbba21ae56659920ad2929faba7f25b47befeeb7e207e36888e1dbf7260ecc95c126e1732f6f5dced3d277db7c3889f2b08590b04dc";
   sha512.doc = "e9d5a1cfdc6183bf99ef369b447c73e9ec5926952a80a75708db4fc6343ffc1a10d599276c13f295005f7c8c56e2e35ad9edc9dee3ee06928fa8c7b267d82bbf";
   hasRunfiles = true;
   license = [ "knuth" ];
   version = "2.2";
 };
+mltex.binfiles = [
+  "mllatex"
+  "mltex"
+];
 mluexercise = {
   revision = 56927;
   stripPrefix = 0;
@@ -28836,11 +29818,22 @@ mptopdf = {
   deps = [
     "plain"
   ];
-  hasFormats = true;
+  formats = [
+    {
+      name = "mptopdf";
+      engine = "pdftex";
+      options = "-translate-file=cp227.tcx mptopdf.tex";
+      fmttriggers = [ "plain" ];
+    }
+  ];
   sha512.run = "1d488a0254f5fc2197d3e8e66de4b0c38abefd477cedac511098612e7200ba90f9d81715273e5e24b731638b91d69ec4b86f0ef1b65ebbd115e9d09c6f2772ab";
   sha512.doc = "ad89851e9f944f18ce1226d6c753a14aad0abe9012b4fc97d5328005e2f758a351db1ddd5ea590694396cab8852b6f77adc5ac77bf1de5277ab224d9470e513e";
+  hasManpages = true;
   hasRunfiles = true;
 };
+mptopdf.binfiles = [
+  "mptopdf"
+];
 mptrees = {
   revision = 60929;
   stripPrefix = 0;
@@ -28982,6 +29975,9 @@ multibibliography = {
   license = [ "lppl13c" ];
   version = "1.03";
 };
+multibibliography.binfiles = [
+  "multibibliography"
+];
 multicap = {
   revision = 15878;
   stripPrefix = 0;
@@ -29135,8 +30131,12 @@ musixtex = {
   revision = 65519;
   sha512.run = "85ff6dae443655c320990517debd59c2d3b3cf79ae795fd27836704af1ead716da34521e254a201ee8cad90ba0b5d1c559157567adf3e7142aa5446e91af0147";
   sha512.doc = "cae619ff0b16f557537ce3d28fd8df938d9297aeb37ed47713934e3a6ee41e4d8007e4e798b03221df6e958db93e2a765b9854576381eaacc924433e4efaa362";
+  hasManpages = true;
   sha512.source = "e81c23471fa26ef887aa5e16eefd562c5f133619557e734c7b36de2dcb9b1746c04263e7f3c300ccd90e85cdbfb4146496448a31909403631510645d28e39608";
   hasRunfiles = true;
+  scriptExts = [
+    "lua"
+  ];
   license = [ "gpl2Plus" ];
   version = "1.36";
 };
@@ -29148,6 +30148,10 @@ musixtex-fonts = {
   hasRunfiles = true;
   license = [ "gpl1Only" ];
 };
+musixtex.binfiles = [
+  "musixflx"
+  "musixtex"
+];
 musixtnt = {
   revision = 40307;
   deps = [
@@ -29155,9 +30159,13 @@ musixtnt = {
   ];
   sha512.run = "eab6332d626f199e46dcd03ea546abbc4446b41c4b0354c066790ebfde154c6fa90f861dcff77206318b58a31565d884576899629520e78b3285bac673d1f4bf";
   sha512.doc = "2da473ad2425064747187da005e01d6844731c536b75095828a85d358ffb1344331ef483c0cebe79b346b4fa96a358a1e416cce7d7cfcce6b1242cf3c0a3645e";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "gpl2" ];
 };
+musixtnt.binfiles = [
+  "msxlint"
+];
 musuos = {
   revision = 24857;
   stripPrefix = 0;
@@ -30536,8 +31544,24 @@ omegaware = {
   revision = 62517;
   sha512.run = "08c491924b039476930473310611a6d2c0b5af7d0f2253a28558081cca254e6aa080727dc90456b4a011732353ca027569d7b8d8ab3ecdfb011ccc9f80e9ba68";
   sha512.doc = "6d8331109f114612d637234164e9d3d8ade9e23bba200c1ef8bbd585ff4c3e9d7f58df3ddd021990ab26a5024001fd94f7fdb3e1e329e4f91dac069fc1f6ba32";
+  hasManpages = true;
   license = [ "gpl1Only" ];
 };
+omegaware.binfiles = [
+  "odvicopy"
+  "odvitype"
+  "ofm2opl"
+  "omfonts"
+  "opl2ofm"
+  "otangle"
+  "otp2ocp"
+  "outocp"
+  "ovf2ovp"
+  "ovp2ovf"
+  "wofm2opl"
+  "wopl2ofm"
+  "wovf2ovp"
+];
 onedown = {
   revision = 59010;
   stripPrefix = 0;
@@ -30627,13 +31651,24 @@ optex = {
     "rsfs"
     "unicode-data"
   ];
-  hasFormats = true;
+  formats = [
+    {
+      name = "optex";
+      engine = "luatex";
+      options = "optex.ini";
+      fmttriggers = [ "amsfonts" "cm" "ec" "hyphen-base" "lm" "rsfs" "unicode-data" ];
+    }
+  ];
   sha512.run = "6bf9c1fa24209cc10b624d630010c18225a7034e9f146f557b5ae7e522260094767a4e81c1b8b4d9b01a3acf560a4fd8991796b386e01483e6908b7357efaa6f";
   sha512.doc = "31dc2e58e6aa17460f2cd26001fd94e0e11b0b9522a3d0c182ca9048909c0262d97f6fc25baa74af6ff82bda8798d9df49374bfba1787852186c5c7b8d2a3a68";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "publicDomain" ];
   version = "1.11";
 };
+optex.binfiles = [
+  "optex"
+];
 optexcount = {
   revision = 59817;
   sha512.run = "88a35391d3deb37dd6466e903f3cdd7d134eb9fb8c0a9ab548ca2eeee86687544e1b499248c2d0a7aa3b801d9604913e763128309f88f768d0dafb8ac1fd6998";
@@ -30643,6 +31678,9 @@ optexcount = {
   license = [ "mit" ];
   version = "1.1";
 };
+optexcount.binfiles = [
+  "optexcount"
+];
 optidef = {
   revision = 50941;
   stripPrefix = 0;
@@ -30926,10 +31964,15 @@ pagelayout = {
   revision = 66399;
   sha512.run = "062652a39fb6aed7efcc700f4a47a94d2d7307be4c79a700ddbd7a40247eb3dfb0373611469a6e624f8d24e355dca539ad822d7b41d81cad6475ceaba06ab2c1";
   sha512.doc = "4f2d2790ea9ac43457b07b510eb95d91c5f17b36cf65953ae4de4fd0f483fdf7dcfe9f76c4e186ba3d55fe48c396d220a5a6e05b3306444dc16ed0339ce70abe";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "lppl13c" ];
   version = "1.0.4";
 };
+pagelayout.binfiles = [
+  "pagelayoutapi"
+  "textestvis"
+];
 pagella-otf = {
   revision = 64705;
   stripPrefix = 0;
@@ -31222,9 +32265,13 @@ patgen = {
   ];
   sha512.run = "e4b04bdc28d75de619307567716d2c29b41286a82cdafd6eca45df36baf67588cee94c4c320abadee4e3103fac8b33ba9367114875e56f198665388fc93e341d";
   sha512.doc = "dcf16fddb0085e8a8984047ff9e500c8b7fdd7d6b24b4f6154f464e05fe137b807c13d910881fda96e617cf80780ed1e75ccfe0fda2477b1d9b95990baf5f279";
+  hasManpages = true;
   license = [ "publicDomain" ];
   version = "2.4";
 };
+patgen.binfiles = [
+  "patgen"
+];
 patgen2-tutorial = {
   revision = 58841;
   stripPrefix = 0;
@@ -31268,8 +32315,14 @@ pax = {
   sha512.doc = "a2e0e7129e98efc8a44184d445118220e16f8149166c2093b7c44a936885845c0d49d37a7588f32e2c06fc834f808b0e4a1b15808a32183bf9e457a9a1c19ba7";
   sha512.source = "3920502e3ef59332129792eb87b771bac81ec3061d6cf35d77fcf785fdc88434824592b6f0d5b74041d372977e17b85d9253e7280a5ce9bc361ce56857397dd1";
   hasRunfiles = true;
+  scriptExts = [
+    "jar"
+  ];
   license = [ "lppl13c" "gpl1Only" ];
 };
+pax.binfiles = [
+  "pdfannotextractor"
+];
 pb-diagram = {
   revision = 15878;
   stripPrefix = 0;
@@ -31356,10 +32409,14 @@ pdfbook2 = {
   revision = 53521;
   sha512.run = "dd87268e3856eb26b37f025ac62f24cd5e680e92e727588d36878de9df799f49254ef2259c29de15db11d5888ada83110a39aaa3116aa6f6aa290d3e64f1231f";
   sha512.doc = "3048de4be891e270e8efe9f9d85524aff948c9483da25f491669a7181967dc281f42b984c9ee46464bc563c42a4f171589066f67818a291a136e1f49d40912ef";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "gpl3" ];
   version = "1.4";
 };
+pdfbook2.binfiles = [
+  "pdfbook2"
+];
 pdfcol = {
   revision = 64469;
   stripPrefix = 0;
@@ -31416,6 +32473,10 @@ pdfcrop = {
   license = [ "lppl13c" ];
   version = "1.40";
 };
+pdfcrop.binfiles = [
+  "pdfcrop"
+  "rpdfcrop"
+];
 pdfescape = {
   revision = 53082;
   stripPrefix = 0;
@@ -31439,10 +32500,14 @@ pdfjam = {
   revision = 56991;
   sha512.run = "1b1084859a811861e60e27186d67d267d3740152331f50fdbe67ce7226a76b4db24d79b674e6511d2f3de9a711da3369c565d781614f5d0c1a8021bc1ac18827";
   sha512.doc = "a29c09a2e843188135265aaec690e09cd08fe29076a0378b308ec0e48aa7936ba0edfa7d6ad3ac808ec334bb5c2793a32d8ef625f4ad9b3fea40d4db567cae56";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "gpl2Plus" ];
   version = "3.03";
 };
+pdfjam.binfiles = [
+  "pdfjam"
+];
 pdflatexpicscale = {
   revision = 46617;
   sha512.run = "d36dcc4d70156d52bcaf668d620c8eee5db8914473f943412ea5ad5c8bde673a6715fd5a69d13e502a5d4fe0b1e0e55099432c4e0e5e02bd5f6155ca5804c3f3";
@@ -31451,6 +32516,9 @@ pdflatexpicscale = {
   license = [ "lppl13c" ];
   version = "0.32";
 };
+pdflatexpicscale.binfiles = [
+  "pdflatexpicscale"
+];
 pdflscape = {
   revision = 64851;
   stripPrefix = 0;
@@ -31600,9 +32668,32 @@ pdftex = {
     "plain"
     "tex-ini-files"
   ];
-  hasFormats = true;
+  formats = [
+    {
+      name = "etex";
+      engine = "pdftex";
+      patterns = [ "language.def" ];
+      options = "-translate-file=cp227.tcx *etex.ini";
+      fmttriggers = [ "cm" "dehyph" "etex" "hyph-utf8" "hyphen-base" "knuth-lib" "plain" ];
+    }
+    {
+      name = "pdfetex";
+      engine = "pdftex";
+      patterns = [ "language.def" ];
+      options = "-translate-file=cp227.tcx *pdfetex.ini";
+      fmttriggers = [ "cm" "dehyph" "etex" "hyph-utf8" "hyphen-base" "knuth-lib" "plain" "tex-ini-files" ];
+    }
+    {
+      name = "pdftex";
+      engine = "pdftex";
+      patterns = [ "language.def" ];
+      options = "-translate-file=cp227.tcx *pdfetex.ini";
+      fmttriggers = [ "cm" "dehyph" "etex" "hyph-utf8" "hyphen-base" "knuth-lib" "plain" "tex-ini-files" ];
+    }
+  ];
   sha512.run = "a7b4d8672355fc3edaa1fa0b31ea4009c7dfe33d779c82dd5c2182c1b136f745c9b3fae6089b14458f0ac5d5491f0070c9232eca0fbdc27320ccd87d2f34f50f";
   sha512.doc = "021dcbddbe4759731e9411be407a5e2f0c66b04fe22fc5331420f0dad295d3d28109352a962f6d83966ee7b7236bc1bb5aa2455074c19e032f01af415437efb9";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "gpl1Only" ];
 };
@@ -31614,6 +32705,15 @@ pdftex-quiet = {
   license = [ "gpl3" ];
   version = "1.1.0";
 };
+pdftex-quiet.binfiles = [
+  "pdftex-quiet"
+];
+pdftex.binfiles = [
+  "etex"
+  "pdfetex"
+  "pdftex"
+  "simpdftex"
+];
 pdftexcmds = {
   revision = 55777;
   stripPrefix = 0;
@@ -31628,7 +32728,11 @@ pdftosrc = {
   revision = 62387;
   sha512.run = "c86b7123c88bc5c50a8ca4c6e435eccf04cb5d2e2d2b2a25922dfd69cc2eac3eb09c0bfef8fe0444a49f13035cc6a475de54e2b4ced603841f466b2c07568434";
   sha512.doc = "347ff9fe5424657b152afe0cc15ded0b2a81911934c3adac249c75f32f21ab72970bd285ae29447b7189d4df0399ff0dc3d084dba42896d17c5fbbc33cebf7e6";
+  hasManpages = true;
 };
+pdftosrc.binfiles = [
+  "pdftosrc"
+];
 pdftricks = {
   revision = 15878;
   stripPrefix = 0;
@@ -31668,10 +32772,14 @@ pdfxup = {
   revision = 59001;
   sha512.run = "f5b7623c1ecd132bb3646af5953245bc7378901bd5ded2e910487770cd79bb3d248cad426aafd18dd12a28bdd46be0f89b81dc95959f06688fb6a7a8f96dd11b";
   sha512.doc = "23db38fd8ebbd04bf6fed3b2814360cb6d0b736db1540d0298e9ab6edd449894c420078adae11d97998fa1fceb8e7083adacc0048337afbf4b6fbb253c8ed21f";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "lppl13c" ];
   version = "2.10";
 };
+pdfxup.binfiles = [
+  "pdfxup"
+];
 pecha = {
   revision = 15878;
   stripPrefix = 0;
@@ -31685,11 +32793,15 @@ pedigree-perl = {
   revision = 64227;
   sha512.run = "4aca97c3d231e3c68a8372d6d8c970aa681fef3d1b7061fbea1648a188c03e06221bf83d2ed0678390780e9a3c2edfe425ea0050172e837ef1a1a62369c41909";
   sha512.doc = "b0b251fcf40185b017835a7a47e32736ce0d49c56be134bf93619dffedae4ecf44d36050e4515fa681c8c37707a933d8faece2943b4eddb58dab6ba3a2df113d";
+  hasManpages = true;
   sha512.source = "febf928301eddf00aa84ede679712a3e58520368f7ecd488e9d696b82dc6ed5afc403d88b344071b4291391528a4552620c4882ba2d2e6ee518fc3a8733a2f41";
   hasRunfiles = true;
   license = [ "gpl2" ];
   version = "2.1";
 };
+pedigree-perl.binfiles = [
+  "pedigree"
+];
 penlight = {
   revision = 64811;
   stripPrefix = 0;
@@ -31729,11 +32841,15 @@ perltex = {
   revision = 52162;
   sha512.run = "af7cd6b065f2405a514d20cb386b34399742a42286002ab3e0f795b64dcb434ae97470ce9cbf25cb27a9b124ebe56844b47c7cf89e1f83a4bd35f1bfcc98163a";
   sha512.doc = "d39c93f4bf3da08266bb0f10b06582db2bf96bee73faafdb191af3770c7c24abde407774f21d3c97b1f2453a8a9bd24576acaf0606796d7439334b8b1e42ac7d";
+  hasManpages = true;
   sha512.source = "99a8e27c23a7056496c56e734fefa1e921a002d7b86c153b3a209f7c3d7c415dac05e77b0ce5bc8685bd622243d6ed53be4a7f570a3ed487c3d55baa5b5af06e";
   hasRunfiles = true;
   license = [ "lppl13c" ];
   version = "2.2";
 };
+perltex.binfiles = [
+  "perltex"
+];
 permute = {
   revision = 15878;
   stripPrefix = 0;
@@ -31768,15 +32884,25 @@ petri-nets = {
   hasRunfiles = true;
   license = [ "gpl1Only" ];
 };
+petri-nets.binfiles = [
+  "pn2pdf"
+];
 pfarrei = {
   revision = 31934;
   sha512.run = "f6046dc96672b60ed272dd6fe23a4a51032f039d3aeaff3f8b5e2407c99fe1f43c568a03564a7c20212a97bbfa4ecbd0dcb7f5f44593e1485c8e5d9197467a6c";
   sha512.doc = "d50ff4603d51eb72d1d12e7f5b1440fa3d7abb1ab74fdf441d7e4a474df91247a1ccad504a14438bc0c3c6354c8f8674f180b5d9d826ff09a8749db3cf0d08c4";
   sha512.source = "1e4008782161066066fc4cb1b029a36f6a18eb0d5d52f11a2a70d04d4778de6ed1a80ea1fef5d8cc86c2e13b8cbcb1cf8ce43e58ff4431b16ca23c3fdafb9884";
   hasRunfiles = true;
+  scriptExts = [
+    "tlu"
+  ];
   license = [ "lppl13c" ];
   version = "r36";
 };
+pfarrei.binfiles = [
+  "a5toa4"
+  "pfarrei"
+];
 pfdicons = {
   revision = 60089;
   stripPrefix = 0;
@@ -32357,10 +33483,17 @@ pkfix-helper = {
   revision = 56061;
   sha512.run = "e5151d85d2db65f41b69320ad92611adcc8d211719aa06f39488ba75972f6bd4eda3a9ebd9f13e8889eb84451a640bbdbfd8862c95620304917cca3dcff4a194";
   sha512.doc = "50103799bbfc18a728b6510f9cd3d9aa4cbafaebb1e68f2f3280b3a57efbdbf75ff68f36e72b4442e49bbb04801795250fb3e2d0728968e30c1e70fc5b7d15d0";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "lppl13c" ];
   version = "1.6";
 };
+pkfix-helper.binfiles = [
+  "pkfix-helper"
+];
+pkfix.binfiles = [
+  "pkfix"
+];
 pkgloader = {
   revision = 47486;
   stripPrefix = 0;
@@ -32505,9 +33638,25 @@ platex = {
     "tex-ini-files"
     "unicode-data"
   ];
-  hasFormats = true;
+  formats = [
+    {
+      name = "platex";
+      engine = "eptex";
+      options = "*platex.ini";
+      patterns = [ "language.dat" ];
+      fmttriggers = [ "atbegshi" "atveryend" "babel" "cm" "everyshi" "firstaid" "hyphen-base" "l3backend" "l3kernel" "l3packages" "latex" "latex-fonts" "tex-ini-files" "unicode-data" "ptex-fonts" "latex" ];
+    }
+    {
+      name = "platex-dev";
+      engine = "eptex";
+      options = "*platex.ini";
+      patterns = [ "language.dat" ];
+      fmttriggers = [ "atbegshi" "atveryend" "babel" "cm" "everyshi" "firstaid" "hyphen-base" "l3backend" "l3kernel" "l3packages" "latex" "latex-fonts" "tex-ini-files" "unicode-data" "ptex-fonts" "l3kernel" "latex-base-dev" "latex-firstaid-dev" ];
+    }
+  ];
   sha512.run = "f5fbb5629bd73cdd7eb69917526528b10c905f603ff2a5c2cf77445f7250777e34d3a374e6f26ff4fd8fa2a362033cd6bfa11493501cd8120c47a351bc611f51";
   sha512.doc = "2b3751cff2502ddb862774f58919ac98f9a233f02ceba6f2756de3659ac4555831d4af03276798cab9b02ad0152f4a9f0c313ad3ad9af58f429ea54d23fd131f";
+  hasManpages = true;
   sha512.source = "e78fad3ef13b2289e88b0844528c0ecd25f1052e2aa443f79a7b25aa72a7645ad576a20e4dcd16412abf68fbf50cb5f4763dc18410813371d9b984afadea9fc6";
   hasRunfiles = true;
   license = [ "bsd3" ];
@@ -32520,6 +33669,10 @@ platex-tools = {
   hasRunfiles = true;
   license = [ "bsd3" ];
 };
+platex.binfiles = [
+  "platex"
+  "platex-dev"
+];
 platexcheat = {
   revision = 49557;
   stripPrefix = 0;
@@ -32660,18 +33813,30 @@ pmx = {
   revision = 66119;
   sha512.run = "90a0d9a2782885f90c361fe99a5c20e761eabde7b79140f8c8cca25bb6e731a8bf16988328166aeddc80c37a45cf9d6ff71e177f85338dab6953276462625346";
   sha512.doc = "15600a9b81fdc4e7be4581cc035b6b75bc08d6858003d092382637304393946e1b38d8d693e4b62f86707b29c37a1dc9ad0665ae69f16cc8ee672bd2f537f650";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "gpl2" ];
   version = "3.00";
 };
+pmx.binfiles = [
+  "pmxab"
+  "scor2prt"
+];
 pmxchords = {
   revision = 39249;
   sha512.run = "0a8f4a88834eb22d3f11ca567f37189af7834370530c6dbca4d83482e94cfb48b128bc1290e7f3ee718bffb4df445a300ddf5081805f88002f53bcf8b434bb3c";
   sha512.doc = "d4075306620fa1ce037a37b9d2646d197348f6482e1286ff6fd99641a8b441b3d830a1420dbf6c025b8d11af78363b717a1acc7ea6b9e2954aa4f11ef04452ad";
+  hasManpages = true;
   hasRunfiles = true;
+  scriptExts = [
+    "lua"
+  ];
   license = [ "gpl2" ];
   version = "2.0.2";
 };
+pmxchords.binfiles = [
+  "pmxchords"
+];
 pnas2009 = {
   revision = 16287;
   stripPrefix = 0;
@@ -32959,6 +34124,7 @@ prerex = {
   stripPrefix = 0;
   sha512.run = "4238f65f9ef42d218f092bc436fbbe95ddcbcee44a9032b74020a989696db3ce1481460162171f5feeb16f7507a41643443429afb8000d5bea0d7bf16e8dee96";
   sha512.doc = "af17b95e20638fecfe6d431cc320b6d3207dd739779636206899d7bf39c26018718521dabf76adab33db28f975e99d2b2dcd9b13a164dc24927d2017e947bdba";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "gpl2" "lppl13c" ];
 };
@@ -33247,16 +34413,28 @@ ps2eps = {
   revision = 62856;
   sha512.run = "c43ba33d29d5b23ece2add44310b89036d5c4725ad76da1ed6e17bb93d0e7d103549f4a7e7807f89cdffcb19a95e0df2fe7851989b8a3b691aacfebfd41044ae";
   sha512.doc = "0194c8634c5d31cf441fb3d7fa171d85358db9831c03cc77bac37272ddfed81d8296e9b05eb4daa7c8012f3bad1a01625aeacb2232989969551e01a92912c409";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "gpl1Only" ];
   version = "1.70";
 };
+ps2eps.binfiles = [
+  "bbox"
+  "ps2eps"
+];
 ps2pk = {
   revision = 52851;
   sha512.run = "4b3ead8d2708a182d0c158dd8ae5077fb2f4a94c7f6fff52a66d6479d4c05de3d742e4c960ab79b63084435bef491866c38e01d77c41ae3d630c7a32450d0a11";
   sha512.doc = "c5b22a86807378fd7d6d83e8802780567a2473e87875bee4c827a48ff470911855bc4a1db4f439fbda1baf71f714086b96e6e78ee059590fb6ebb45c58abca4f";
+  hasManpages = true;
   license = [ "free" ];
 };
+ps2pk.binfiles = [
+  "mag"
+  "pfb2pfa"
+  "pk2bm"
+  "ps2pk"
+];
 psbao = {
   revision = 55013;
   stripPrefix = 0;
@@ -33971,6 +35149,9 @@ pst-pdf = {
   license = [ "lppl12" ];
   version = "1.2f";
 };
+pst-pdf.binfiles = [
+  "ps4pdf"
+];
 pst-pdgr = {
   revision = 45875;
   stripPrefix = 0;
@@ -34267,6 +35448,9 @@ pst2pdf = {
   license = [ "gpl2" ];
   version = "0.20";
 };
+pst2pdf.binfiles = [
+  "pst2pdf"
+];
 pstool = {
   revision = 46393;
   stripPrefix = 0;
@@ -34314,10 +35498,22 @@ psutils = {
   revision = 61719;
   sha512.run = "1489c9cd3ae9e1063367301f038cd52f0fd7f5b2d548ea78c06a2bff56100aa613cd01026ce601527b6a32f88b6ed1df96f9c8c6a591d16a63dccdc8e32d6969";
   sha512.doc = "8b4814c2a769b1ea8831aa945352f31125267aeebedd8dc8abf6381928707799bcb1eb29214930152046bab63b1a56179ea035ae6568595fd5ac83bbbd22f588";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "free" ];
   version = "p17";
 };
+psutils.binfiles = [
+  "epsffit"
+  "extractres"
+  "includeres"
+  "psbook"
+  "psjoin"
+  "psnup"
+  "psresize"
+  "psselect"
+  "pstops"
+];
 ptex = {
   revision = 62464;
   deps = [
@@ -34329,9 +35525,24 @@ ptex = {
     "ptex-base"
     "ptex-fonts"
   ];
-  hasFormats = true;
+  formats = [
+    {
+      name = "eptex";
+      engine = "eptex";
+      options = "*eptex.ini";
+      patterns = [ "language.def" ];
+      fmttriggers = [ "cm" "hyphen-base" "knuth-lib" "plain" "ptex-base" "ptex-fonts" "etex" ];
+    }
+    {
+      name = "ptex";
+      engine = "ptex";
+      options = "ptex.ini";
+      fmttriggers = [ "cm" "hyphen-base" "knuth-lib" "plain" "ptex-base" "ptex-fonts" ];
+    }
+  ];
   sha512.run = "6e2e40d86740a24550cb4f55630db81bdc777daf87533cb23b4fe041439d00e10cbb7b5fab92e33828c87945e710ea3579d76a8e0fdae0b8ba069b5eb33968c3";
   sha512.doc = "96aed9e990d013c7f5310a5ec86a1f7465d0de8503009669a5e10ccf4d3ed8767bf1408cfb04cfa8876e02640bc4a3b07249c331cc6190e391cb4a5b8aeafa35";
+  hasManpages = true;
   license = [ "bsd3" ];
 };
 ptex-base = {
@@ -34353,6 +35564,12 @@ ptex-fontmaps = {
   license = [ "publicDomain" "gpl3" ];
   version = "20210625.0";
 };
+ptex-fontmaps.binfiles = [
+  "kanji-config-updmap"
+  "kanji-config-updmap-sys"
+  "kanji-config-updmap-user"
+  "kanji-fontmap-creator"
+];
 ptex-fonts = {
   revision = 64330;
   stripPrefix = 0;
@@ -34368,6 +35585,19 @@ ptex-manual = {
   sha512.doc = "f84a8a047c4387ee45214b6bc98cf2710cdd3497e5a6066fed518b754fa4dbcbe1602cdedaa0f48638f37801f7f7801ad40f288a2e5b8e03cb36848d3992a7d7";
   license = [ "bsd3" ];
 };
+ptex.binfiles = [
+  "eptex"
+  "makejvf"
+  "mendex"
+  "pbibtex"
+  "pdvitomp"
+  "pdvitype"
+  "pmpost"
+  "ppltotf"
+  "ptex"
+  "ptftopl"
+  "r-pmpost"
+];
 ptex2pdf = {
   revision = 64072;
   postactionScript = "tlpkg/tlpostcode/ptex2pdf-tlpost.pl";
@@ -34375,9 +35605,15 @@ ptex2pdf = {
   sha512.doc = "f193b44004b487d93f025b34b72a17cbaf4111b1a6e1ceb4ac1b69c6c07aa4dce46cde510cbd01fb71fb08c06f7bbb415a4a8051de5861f1f586b756060f386f";
   hasRunfiles = true;
   hasTlpkg = true;
+  scriptExts = [
+    "lua"
+  ];
   license = [ "gpl2" ];
   version = "20200520.0";
 };
+ptex2pdf.binfiles = [
+  "ptex2pdf"
+];
 ptext = {
   revision = 30171;
   stripPrefix = 0;
@@ -34436,10 +35672,14 @@ purifyeps = {
   revision = 29725;
   sha512.run = "79d99ef7ebc462c7c65d03f23cc85b9f136df2b0c9d647fc0672584fa57bfb7447f6db0e6d6b11bfc738cfe8c8658f45fe0b4059ff00f355e4b21d44f0d4102a";
   sha512.doc = "3f9fadfb35596835b250cab98b0d1e3c6d537cfac5878e0b9788aeb5cc7ef455ce3d44f7d0f03e9002796a162d374f6aa8f9bce5bd4c3f0e8937040de0b82a8d";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "lppl13c" ];
   version = "1.1";
 };
+purifyeps.binfiles = [
+  "purifyeps"
+];
 puyotikz = {
   revision = 57254;
   stripPrefix = 0;
@@ -34582,9 +35822,15 @@ pygmentex = {
   sha512.run = "097a1eec7e6a969b0c2aef3915d8231d7e6b6c234abe79caa7f7325df22f4976d1bcf2b111c87c9b457250a2c89b5b0a29afd7deb81ee309753901768fb3fd08";
   sha512.doc = "050bf2576a7305eda104ac928cb332e6fd1437e1852726442694fb7ec88ebe7fb9e7e54987a13b76aa103afcc446019a57b8e011f4e638469ea34a9788a8e7cf";
   hasRunfiles = true;
+  scriptExts = [
+    "py"
+  ];
   license = [ "lppl13c" ];
   version = "0.11";
 };
+pygmentex.binfiles = [
+  "pygmentex"
+];
 pyluatex = {
   revision = 65855;
   stripPrefix = 0;
@@ -34632,9 +35878,16 @@ pythontex = {
   sha512.doc = "3ec2fe0f095384734575c2c9fd1bc9d485b628485c8ee75cd8fb9ebd6d1f56edbec6f378c7c9e1d5ba9c10c4bbcc3934ddb957dc47a258ac81ca89b5ce3a2e92";
   sha512.source = "8a3cf562716df588d4ada0273c3340b73e16a01524e02a9c83c4ca781b8dd1763a1deb9e303635878721831e0d57b780c0666b694629106650f639061d2f32f4";
   hasRunfiles = true;
+  scriptExts = [
+    "py"
+  ];
   license = [ "lppl13c" ];
   version = "0.18";
 };
+pythontex.binfiles = [
+  "depythontex"
+  "pythontex"
+];
 qcircuit = {
   revision = 48400;
   stripPrefix = 0;
@@ -35686,11 +36939,15 @@ rubik = {
   revision = 46791;
   sha512.run = "67931287ea126947b5b2d567ba355d44ce094b2b527288ce32329de4a73434be9a43cd520e6c24ef570a46a16c0edcf12212f46228ee1bcd2b8a8be7f9db3a7c";
   sha512.doc = "33d5c8210600cb4ce7b1313d1046f6644f0a6648f7ee9676d4d628d042f6501b5e92f2b56a31fbad6f637dc93a460a568be9e1335bd52bcea825f5772b2a9d51";
+  hasManpages = true;
   sha512.source = "3159acbc71a007877c046f6c075bf271e031feb00cda04c1818e4490396c3fb0651f160c7a98d8d3391efccae6a5b1dfde2155c6bde1c463e1c7416107b4ab90";
   hasRunfiles = true;
   license = [ "lppl13c" ];
   version = "5.0";
 };
+rubik.binfiles = [
+  "rubikrotation"
+];
 ruhyphen = {
   revision = 21081;
   stripPrefix = 0;
@@ -36700,8 +37957,15 @@ seetexk = {
   revision = 57972;
   sha512.run = "1f217550f7455a82dd1771556045e10a39138eebddc90f4d38a274d56d9072501d94476c6045012f3c5cda43aea71924268fd222895079b225d893df3b78fa97";
   sha512.doc = "1b36ac131e25541123a7d18e9a5e3cb1fccab04ffca1b0d1e5a036a26de99fb05e6745d43cac6dc76a295eac5503f90eafdb2b40f96c88836123b5b599a47e2e";
+  hasManpages = true;
   license = [ "free" ];
 };
+seetexk.binfiles = [
+  "dvibook"
+  "dviconcat"
+  "dviselect"
+  "dvitodvi"
+];
 selectp = {
   revision = 20185;
   stripPrefix = 0;
@@ -37917,10 +39181,17 @@ spix = {
   revision = 65050;
   sha512.run = "e0447cedced73a9544b837c555f3d42995b5fa5e23ba737b6794e11e7fa391969c2156ae89d6e7e18140dae0e0c9b0f2d5d6036c4fda3d236790abb21fc8d9ed";
   sha512.doc = "b783636e01e976f3a0020d6e5b8c87918277fb0caae09057e68b2e216e504618f0b784b1214fdf99fde79cae5a6169c585bacf093de149a99534ef7069e6cb2a";
+  hasManpages = true;
   hasRunfiles = true;
+  scriptExts = [
+    "py"
+  ];
   license = [ "gpl3Plus" ];
   version = "1.3.0";
 };
+spix.binfiles = [
+  "spix"
+];
 splines = {
   revision = 15878;
   stripPrefix = 0;
@@ -37945,11 +39216,18 @@ splitindex = {
   revision = 39766;
   sha512.run = "858033eadfa82b4e40a388356f64002370a5f4fc2c95565eae90c68373f708a3c9827fc4e0ba8094659382aba4e5925cba86632733b15d85ea6a82f73ace8737";
   sha512.doc = "c8dd92e955fcccf71b412d9750fff7b6f214e929ddf194a6496a79a146f4837af3d773ed3f2303546727cc4a8fb9d5366dd75b64d3877e6121ce20315f71997a";
+  hasManpages = true;
   sha512.source = "8aa928bdf6f2e8fb6274c1fe8d0b4567d03a1c6ffbd078726bf6a36ff1bdab981d5150cf0250602a64d2a0a9be92695fdd399c04d041b7a9579a7d3a71910151";
   hasRunfiles = true;
+  scriptExts = [
+    "tlu"
+  ];
   license = [ "lppl13c" ];
   version = "1.2c";
 };
+splitindex.binfiles = [
+  "splitindex"
+];
 spot = {
   revision = 22408;
   stripPrefix = 0;
@@ -38029,10 +39307,14 @@ srcredact = {
   revision = 38710;
   sha512.run = "9e11ed88fbbfc0130f43fdecd8fb0b3eecbdf50eb33bdca57bd34c860cdfe84dcd560371efba4cb261e65aaf4577306f478d1c43ed89152e7e21fd627eb7328d";
   sha512.doc = "dba9916acf75e800af1e581b4276e82bfe4c421a500a400773354766b37849568c1f19752a75983374ca41f793903f9776423888215f00376db1e0f5f3b3dbbc";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "gpl2" ];
   version = "1.0";
 };
+srcredact.binfiles = [
+  "srcredact"
+];
 srdp-mathematik = {
   revision = 65293;
   stripPrefix = 0;
@@ -38427,10 +39709,14 @@ sty2dtx = {
   revision = 64967;
   sha512.run = "f95ad4f6260657ce329c10ae1306e5ec50965c2766c3c28f5a6dd77f4884637c36ecfae28b7853dfaf4e2e5bc256713abe4c8b3525e194fed1eccdd1ea24e1ac";
   sha512.doc = "1bc66506350b07341c8c4b858c6b1c637d9f0bf48323714ee7dedd701faf20e3cadb318f56bfb1a05f4fcaf84cdd6e9db18299801a69e0359937d7852ac6a824";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "gpl3" ];
   version = "2.4";
 };
+sty2dtx.binfiles = [
+  "sty2dtx"
+];
 styledcmd = {
   revision = 65262;
   stripPrefix = 0;
@@ -38704,6 +39990,9 @@ svn-multi = {
   license = [ "lppl13c" ];
   version = "2.4d";
 };
+svn-multi.binfiles = [
+  "svn-multi"
+];
 svn-prov = {
   revision = 64967;
   stripPrefix = 0;
@@ -38814,7 +40103,11 @@ synctex = {
   revision = 54074;
   sha512.run = "1cc1900df90ceebc6865ce7c4a4befc86d1aa5aeb0f19808526a6cb369d7bd2ecf3c4789817da937e84fdf1fa3c921660e64e3e8a8e215d4f6dd97b2371743c5";
   sha512.doc = "37b7f0e3b86494715763c0d230a076aeec1f41ad658432099871d26b933cd8d0e8e831064cbe462a31a30260004c6dfe9b6b4d555d281d909615910470a2b1ef";
+  hasManpages = true;
 };
+synctex.binfiles = [
+  "synctex"
+];
 synproof = {
   revision = 15878;
   stripPrefix = 0;
@@ -38882,8 +40175,17 @@ t1utils = {
   revision = 57972;
   sha512.run = "9065b22ec60747b603c758c3bae67ff06759ebf97c979028ac940a1b773e3a20f5f249a4a61b7564038dcda3c72ef635315e64a3b8692501cc8f6c30ff7fa989";
   sha512.doc = "34eacd2f14282108ba41d49cc68c066e12383c4873c9cb8a2389300f9c5685b3f3d7d0626e33008d28c229f8311daf2404b2bfa164fa550184f1e856163ab386";
+  hasManpages = true;
   license = [ "publicDomain" ];
 };
+t1utils.binfiles = [
+  "t1ascii"
+  "t1asm"
+  "t1binary"
+  "t1disasm"
+  "t1mac"
+  "t1unmac"
+];
 t2 = {
   revision = 47870;
   stripPrefix = 0;
@@ -39442,9 +40744,17 @@ tex = {
     "kpathsea"
     "plain"
   ];
-  hasFormats = true;
+  formats = [
+    {
+      name = "tex";
+      engine = "tex";
+      options = "tex.ini";
+      fmttriggers = [ "cm" "hyphen-base" "knuth-lib" "plain" ];
+    }
+  ];
   sha512.run = "7d177346a2df7e7dbd2fce3635a8860c0deee30271beeba585091f8027c796678a3dc9cda2952a073c9ca02e26cd656a3bdcabe4661c23e81af350a987d7e4aa";
   sha512.doc = "e545796c64bbce0680d12b9d77ca64b008c369f90639ad9c3e7b7b219ceb85fcf24fa7eccaff65639bb9fe7159c2b2dd124866acd2ad78d860ff4e872a341d23";
+  hasManpages = true;
   license = [ "knuth" ];
   version = "3.141592653";
 };
@@ -39557,6 +40867,10 @@ tex-vpat = {
   license = [ "cc-by-30" ];
   version = "2.1_June_2022";
 };
+tex.binfiles = [
+  "initex"
+  "tex"
+];
 tex4ebook = {
   revision = 66333;
   deps = [
@@ -39566,26 +40880,57 @@ tex4ebook = {
   sha512.run = "5ed55a074d557cc433780b838fa0a53a3bd8428a192ddc1bfd71c306a110041663ceb0d6931b580e150ebd7f5f07145796ebd12bfd7d1c986e7feb74803dc104";
   sha512.doc = "964824dc432799c57af3d69dae35b35e1f327dd57d245a6c392d434033bc627d8c93682c1bbbb1b099f71acde25c10f7cca2d3b72cca02e3f9c8d94de0dff807";
   hasRunfiles = true;
+  scriptExts = [
+    "lua"
+  ];
   license = [ "lppl13c" ];
   version = "0.3i";
 };
+tex4ebook.binfiles = [
+  "tex4ebook"
+];
 tex4ht = {
   revision = 66531;
   sha512.run = "44ed16da1e774edb33b68c478ba8fa70eb33b03094c87cfd2c17068786c93bf4c083e85046158aef30353824d1458f0c5646ee71446f22ed991145827fad5f4a";
   sha512.doc = "7c831eccdb5d303b756799bb28fa962593eec8a12e5ee1c763b7c614bab29d27fc507ebd86637e920581a4dd3a89d9e7acdb0aba2798b24048b9b0bacdcd1dd7";
   sha512.source = "777422dea0615764a824f70ec7a85d4fbc824c25587935bfdf514420c2e0c61243dee2a84861b2290cec1fb444f64bd9754ce6334fb47c9ab3142d8e083fed75";
   hasRunfiles = true;
-  license = [ "lppl13c" ];
-};
+  scriptExts = [
+    "jar"
+    "lua"
+  ];
+  license = [ "lppl13c" ];
+};
+tex4ht.binfiles = [
+  "ht"
+  "htcontext"
+  "htlatex"
+  "htmex"
+  "httex"
+  "httexi"
+  "htxelatex"
+  "htxetex"
+  "mk4ht"
+  "t4ht"
+  "tex4ht"
+  "xhlatex"
+];
 texaccents = {
   revision = 64447;
   sha512.run = "5a2a79c9faddebd523939cb3cf42236b1d2c441a036cd7fc6f6f62422e5142cdbc0a45ddaa9e642266c41c9fe5b723fc440d0372639cffd399a89d489bd11b66";
   sha512.doc = "87bc11f186513adbf32c15af2f1c1253dd72802fb2008b76b9d7d67fc0a039aab0d2424fb853b6bd8e968cd4e9c1cd93bff786fa07e84593fbda99191b053eaa";
+  hasManpages = true;
   sha512.source = "8bf5d4957008833d54f87eff9feb14f60694ea02e7e9fd2cd5c5d2e2db3f6de3a33784121208ffab516763fbf578125399cbd6f39750e6bb0162a65c2fc44f24";
   hasRunfiles = true;
+  scriptExts = [
+    "sno"
+  ];
   license = [ "mit" ];
   version = "1.0.1";
 };
+texaccents.binfiles = [
+  "texaccents"
+];
 texapi = {
   revision = 54080;
   stripPrefix = 0;
@@ -39610,6 +40955,9 @@ texcount = {
   license = [ "lppl13c" ];
   version = "3.1.1";
 };
+texcount.binfiles = [
+  "texcount"
+];
 texdate = {
   revision = 49362;
   stripPrefix = 0;
@@ -39629,14 +40977,22 @@ texdef = {
   license = [ "gpl3" ];
   version = "1.9";
 };
+texdef.binfiles = [
+  "latexdef"
+  "texdef"
+];
 texdiff = {
   revision = 29752;
   sha512.run = "26fa84b3090d641efb186947ce4d1d89c30a2c224cfc8fa759da3ba7ec9cc113c0ed4afc1c3d0fa5f9d0a88af4f9b3001d57651df6b5be6e0234fb78ec4f252a";
   sha512.doc = "d458fa8db6433b4c7fbd23a16f9be53c2c822e396e7f50844cfa6acdd2a08acf8efdd0bd946c8fdc09ca8aa28d1eb25708d3719184634abced92ea5c94d9a948";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "artistic1-cl8" ];
   version = "0.4";
 };
+texdiff.binfiles = [
+  "texdiff"
+];
 texdimens = {
   revision = 61070;
   stripPrefix = 0;
@@ -39650,10 +41006,14 @@ texdirflatten = {
   revision = 55064;
   sha512.run = "3cd6cf4d9ff3a1a3daef0bd5a998417696f6645cb54679e99e5424ebbe3926c45acad7b999ee4371392a7ba13fe3f2899438ce66efca7829c7aa1eaef84aa6e5";
   sha512.doc = "1114dce13ac47c4352e968f42e89582b62b2702bc25ce3a9a4fd766b3bd63607e11eab52d19bc9f809b2b67cd92153c4f591632cfc72dcaf1c0a1b1cfb416b11";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "artistic1-cl8" ];
   version = "1.3";
 };
+texdirflatten.binfiles = [
+  "texdirflatten"
+];
 texdoc = {
   revision = 66228;
   deps = [
@@ -39661,10 +41021,17 @@ texdoc = {
   ];
   sha512.run = "3d10ce6a38e3b676bc7495714962b527e2c78d5844b184eade200ad55cf07b44945203019315f1d6e2ef825c8093f0fc60abdf67efd641ce3777c32f0680c10f";
   sha512.doc = "85e16d57fd1f89364caf38a714756a31c4a89dfdc0313e11641593df2227a7a17df861ef34d109a5737ce463ca1016653635499186d9f99a1e75d9225e2c66d2";
+  hasManpages = true;
   hasRunfiles = true;
+  scriptExts = [
+    "tlu"
+  ];
   license = [ "gpl1Only" ];
   version = "4.0.1";
 };
+texdoc.binfiles = [
+  "texdoc"
+];
 texdoctk = {
   revision = 62186;
   deps = [
@@ -39672,10 +41039,14 @@ texdoctk = {
   ];
   sha512.run = "f3300a088f5ecedfe66ca277f793d3565b5b0f111721a0d73a788d65b72f09d0103a11edda13679fb9e919f11ce9ed3662717c18e46be99a83b744a1f7ec88fe";
   sha512.doc = "fb403dc17ad839ea64bcf6da84e59288a8745b5eb731051d7df8593138aa5d3b6891d56f52bdbe5c9a41e590f1f36db390e7e7a825d9aaf00d4fbc01c8dc16ba";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "gpl1Only" ];
   version = "0.6.0";
 };
+texdoctk.binfiles = [
+  "texdoctk"
+];
 texdraw = {
   revision = 64477;
   stripPrefix = 0;
@@ -39689,10 +41060,14 @@ texfot = {
   revision = 65545;
   sha512.run = "e7553ab1e2368f1ee54cebe94ef1cc6675a6dd6f76f1bb94b1d79a742ddbbfb30215c97b7aa08165ec0e94b4468491d6cbbe6e1d8d77c24e37f3ec46104cc12f";
   sha512.doc = "07cbd86a5f4731257804a8a62fab247a5a091fbdb51b5f618b42200c06ac8293e809ba19fc98f844dbfe6321e733aae5671b5a8318892608687a454cac15bd10";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "publicDomain" ];
   version = "1.48";
 };
+texfot.binfiles = [
+  "texfot"
+];
 texilikechaps = {
   revision = 28553;
   stripPrefix = 0;
@@ -39789,15 +41164,56 @@ texlive-scripts = {
   ];
   sha512.run = "3dbb2007ae7b80862265d6196f77a9d796f02f6914871f4dad094f8419040fe7064daf6ecf5dd611b5764dd4148d034a97d82aa22671199e8a3dc79373859c67";
   sha512.doc = "6976ba00c8ee50664aaa1f762231f297f01548a94d6a632b386845e7fa43b20b63342d58874e87869a73a9c23bba358f762f5cc3814690f870c6216679471a89";
+  hasManpages = true;
   hasRunfiles = true;
   hasTlpkg = true;
+  scriptExts = [
+    "lua"
+    "tcl"
+  ];
 };
 texlive-scripts-extra = {
   revision = 62517;
   sha512.run = "46ac37826d3c60de6c9260bf83d6275d49a35cbde88fb03481a050f92e87b698e9a94b2e520a74edc0417419f5a2dee53000a529b9c81ea6f6244a83480e56e7";
   sha512.doc = "22cf59bf4dafc7ad9425086bc0aaedb2bf5f7d8aa6ea9c65abde2d523be37665b9c9bee4acb399857eae03613e7241ca1d6099f43cab77a95c10eced8813ad80";
-  hasRunfiles = true;
-};
+  hasManpages = true;
+  hasRunfiles = true;
+};
+texlive-scripts-extra.binfiles = [
+  "allcm"
+  "allec"
+  "allneeded"
+  "dvi2fax"
+  "dvired"
+  "e2pall"
+  "kpsepath"
+  "kpsetool"
+  "kpsewhere"
+  "kpsexpand"
+  "mkocp"
+  "mkofm"
+  "ps2frag"
+  "pslatex"
+  "texconfig"
+  "texconfig-dialog"
+  "texconfig-sys"
+  "texlinks"
+];
+texlive-scripts.binfiles = [
+  "fmtutil"
+  "fmtutil-sys"
+  "fmtutil-user"
+  "man"
+  "mktexfmt"
+  "mktexmf"
+  "mktexpk"
+  "mktextfm"
+  "rungs"
+  "texhash"
+  "updmap"
+  "updmap-sys"
+  "updmap-user"
+];
 texlive-sr = {
   revision = 54594;
   stripPrefix = 0;
@@ -39814,16 +41230,27 @@ texlive-zh-cn = {
   revision = 63645;
   sha512.run = "cbc7e70f3b4d451a51f06ed640b37ce28b8ea32f0dad75b32e54856e1051934d32125f2428b074a69503fb24c943c5eded58d77168d606891ea8209bbf852c65";
   sha512.doc = "37f37bfd17988a8897312581efcf05aff76af6fd2c30867c65e0a4445ddc1f7fb90bb86984999d5fc942159bccf5c2a188e5b552702405405c902c97ae4828ff";
+  hasManpages = true;
   hasRunfiles = true;
   hasTlpkg = true;
 };
+"texlive.infra".binfiles = [
+  "mktexlsr"
+  "tlmgr"
+];
 texliveonfly = {
   revision = 55777;
   sha512.run = "63353a768b700ea11982e9552046dfd1dc3d844883f03099833cabe2af5ccddecebd7ef737fbcd256c90304174165a4d283d4912f8311508e61c723d751619a7";
   sha512.doc = "46d57a6ebd68a56d55ccddc68006693fcbad8ed8f809243a3ffac7adb82da58cbc28239b57556d5d8d6388ea034b6571557588ff9365d4891145d5cc3fabfaea";
   hasRunfiles = true;
+  scriptExts = [
+    "py"
+  ];
   license = [ "gpl3" ];
 };
+texliveonfly.binfiles = [
+  "texliveonfly"
+];
 texloganalyser = {
   revision = 54526;
   sha512.run = "85f491af4a3867283d56bc2d98ebcf491e622008b3a70bb2cae03b9deb38170e1c73088d109445fac11fcce6e10aac57f42f03066580a79c978dd19af1f74caa";
@@ -39832,14 +41259,21 @@ texloganalyser = {
   license = [ "bsd3" ];
   version = "0.11";
 };
+texloganalyser.binfiles = [
+  "texloganalyser"
+];
 texlogfilter = {
   revision = 62792;
   sha512.run = "8012a0cca2e408c60a5ead5d59af92ba4befffe184f298ba16f6b57f1487d1e4cb22301a88d61748c8db0fca444bf861e01dbae5335aabaeb2c25e3f94f1ff8d";
   sha512.doc = "76fbce938945ebfd6bfb78022219fe217b7e6f0ae3c298e1bd9d0c570bfff1100d34034475f2577a9676e01a5bf64428664bb5cce4fd65c7d0cd350c9f156d5f";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "lppl13c" ];
   version = "1.1";
 };
+texlogfilter.binfiles = [
+  "texlogfilter"
+];
 texlogos = {
   revision = 19083;
   stripPrefix = 0;
@@ -39852,10 +41286,14 @@ texlogsieve = {
   revision = 64301;
   sha512.run = "8017144da38d3e7b011b1620b4165e62159cb2975a418b350bf8a5d87e8d519166fb87b916a96ef6ec203df12834e72a31e21c41a84e113e8ebe620bd5eb8860";
   sha512.doc = "7a744ba4bdbcda04c1adf53c07acb5d20799268f31aebf2234203251ac56a96ad6cd0574d1c25c983eec0d7191dcb49bc9f11dbb2aa6aedccf31c7499400fd9f";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "gpl3Plus" ];
   version = "1.3.1";
 };
+texlogsieve.binfiles = [
+  "texlogsieve"
+];
 texmate = {
   revision = 15878;
   stripPrefix = 0;
@@ -39900,18 +41338,32 @@ texosquery = {
   sha512.doc = "51bc4e5a9f62b4526198b380fa69dd2d79ff69ccf0915aef4269d890fed057c4130ccca65e0c279e58ebfb72347d627b186534138f9c4bc8d395677c73a2a0fc";
   sha512.source = "5ed0dddadb7e8f406635d7a2cc309a030826607a76b4520b1f47a07affb603d96577118ba1fb5b9797322aa49a68616acbbcdde39bc8538c54c5d2fa1aebe510";
   hasRunfiles = true;
+  scriptExts = [
+    "jar"
+  ];
   license = [ "lppl13c" ];
   version = "1.7";
 };
+texosquery.binfiles = [
+  "texosquery"
+  "texosquery-jre5"
+  "texosquery-jre8"
+];
 texplate = {
   revision = 61719;
   sha512.run = "5b19c1f2d5bdaacb1c842e78b1980ecb3f4fc548873e6a36fc9c5a70c3e3649b812819cc0d3bf68622acf31ac6c687cc4ba657ce2a4682bd13faba4070b0a1d7";
   sha512.doc = "e28f0f3476e710fcec772206138a2f423ea6f9df903bfd4c4a278453f217752b7f4ffd7e68f10821ee36a9251a14e6226887ed5aa7a5fb53e5deb7a1685a04e8";
   sha512.source = "658467f513fc37799df279d636f5927477c51cf0adfbff2ea1597bc8bbd4d9edc3f5f22e2f09d9049a6015a6825bde043ae10e8b55ef78ba8dbbfb04604de0b5";
   hasRunfiles = true;
+  scriptExts = [
+    "jar"
+  ];
   license = [ "bsd3" ];
   version = "1.0.4";
 };
+texplate.binfiles = [
+  "texplate"
+];
 texpower = {
   revision = 29349;
   stripPrefix = 0;
@@ -39952,13 +41404,24 @@ texsis = {
     "plain"
     "tex"
   ];
-  hasFormats = true;
+  formats = [
+    {
+      name = "texsis";
+      engine = "pdftex";
+      options = "-translate-file=cp227.tcx texsis.ini";
+      fmttriggers = [ "cm" "hyphen-base" "knuth-lib" "plain" ];
+    }
+  ];
   sha512.run = "7309726b33eadf8290e596aab50bb1af95600a067338b352c1ac092643a8c6d4142180d0146abbbb828a38fb08fdd9ae03da6572e6c221afcd151a51430a423e";
   sha512.doc = "2a4979a10514ccd589b331ff34a677a4e22adbeea73d6112c9a14392b3ee75a8cdb292b008b160792b3d00b812834afa7e0211db860c41f1beb69bbc900fdb90";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "lppl13c" ];
   version = "2.18";
 };
+texsis.binfiles = [
+  "texsis"
+];
 texsurgery = {
   revision = 59885;
   stripPrefix = 0;
@@ -40083,8 +41546,13 @@ texware = {
   revision = 62387;
   sha512.run = "fd6b433f0774441ad8cda525f45a7ec18076b69f9c666c6b4ab13190f9140b288a2d4b838dbb8065e260d77fd2220f10b37f349805ad266a4b6b5c3041f5f5b7";
   sha512.doc = "1699ff3feb1b0023938ccbe77856311efc40ab90d7288fe611a040e76c04f5ac38ba4cf75ca9e0d3638a017287e6abe4971a1ec450f6b74d90aea0b59909c4a8";
+  hasManpages = true;
   license = [ "publicDomain" ];
 };
+texware.binfiles = [
+  "dvitype"
+  "pooltype"
+];
 texworks = {
   revision = 54074;
   sha512.run = "4867a2f6ca333fc42d774154179f438970d392857b0f631f58211b7174c4b56c7fe9c43cac534cac1828d3edf18069fa781d4760ca472a99b5abfe4c7a6f72c9";
@@ -40323,10 +41791,14 @@ thumbpdf = {
   revision = 62518;
   sha512.run = "74d1b32b1a48825c423d4346258f6f1eea60d2054ed38b3d9d4e207a3375e35b6e80d87706bc2d265f62606a449a0a665c8698f4e1615b39df98f6f54b309fff";
   sha512.doc = "26f698eef73b85181abbd155e8ec8f6057f7ec0c5ed1448a256e4fc2e41cffc77474fe4c3695d611e8993bbb1afdf238e3db3a90bc2b7af145535f726af027ed";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "lppl13c" ];
   version = "3.17";
 };
+thumbpdf.binfiles = [
+  "thumbpdf"
+];
 thumbs = {
   revision = 33134;
   stripPrefix = 0;
@@ -40390,9 +41862,13 @@ tie = {
   ];
   sha512.run = "96cab708d9faec3f451302c6141655b79524d3497d9bded141235a2fcfbb27bb2d65fd096e559cc01b01f4ab28b97f5851ba9e202c313240ef1af07c4676085f";
   sha512.doc = "519a15cde0a8b52250bdf61926ce44ea9267ff9f75f57f3ee9b390ce1aa6f7bc2a6bc2f30222d41a7606721ed28cbbd44348cb44229fba1c7126196291667917";
+  hasManpages = true;
   license = [ "free" ];
   version = "2.4";
 };
+tie.binfiles = [
+  "tie"
+];
 tikz-3dplot = {
   revision = 25087;
   stripPrefix = 0;
@@ -40861,10 +42337,14 @@ tikztosvg = {
   revision = 60289;
   sha512.run = "0957b87c9a06771afab350de769e3fa9f97ec0aa09e4e740d0f916992948a65740a96446a0f8ac144273e94f228db2c6c0ddb22bd01ea9f0f66abe5adfe0125c";
   sha512.doc = "3d90c0963c570a115390603bcd5f39a224a155faea8ac6eec511b9689ab98383386d3d6e92076129e0f704d69bd18da52cf2f89f5db024a4d5c34a75c1edf279";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "gpl3" ];
   version = "0.3.0";
 };
+tikztosvg.binfiles = [
+  "tikztosvg"
+];
 tikzviolinplots = {
   revision = 65687;
   stripPrefix = 0;
@@ -41134,11 +42614,18 @@ tlcockpit = {
   revision = 54857;
   sha512.run = "50817d4c68d4e302cf0f4075ff9321bde2fd26336923efd2fb39bf097090b617a2a67ce75d1a14d562939514acb17b2a356bc388f72049dbe52a868ff3d63ffd";
   sha512.doc = "d40cec8456db0d9fdd55b76c84b40565a8b16d7639084eaa5dbc61c3bd2ebd73fdde6f40b11007835be242a9103cdc5ecbbecb6082ad650663968db18cc1b04d";
+  hasManpages = true;
   sha512.source = "01a9038bab5226f57922215e6dac5acf69ba2bae866f72df1d2d4a3a6252fef78e18d1e7b2a8baf327bd4b89262abe6750b0dd1166f47868e797e50b205322a2";
   hasRunfiles = true;
+  scriptExts = [
+    "jar"
+  ];
   license = [ "gpl3Plus" ];
   version = "1.2";
 };
+tlcockpit.binfiles = [
+  "tlcockpit"
+];
 tlmgr-intro-zh-cn = {
   revision = 59100;
   stripPrefix = 0;
@@ -41159,7 +42646,13 @@ tlshell = {
   sha512.doc = "73962fa94f7ca3a78b6149a44b72c39096fb54263660ccb6c0bcc024023dfef665c5132b9cb78953c92ec8b7d161581294e32b0ab26c9e0e2e9eadc16aa9ff72";
   hasRunfiles = true;
   hasTlpkg = true;
+  scriptExts = [
+    "tcl"
+  ];
 };
+tlshell.binfiles = [
+  "tlshell"
+];
 to-be-determined = {
   revision = 64882;
   stripPrefix = 0;
@@ -41357,8 +42850,12 @@ tpic2pdftex = {
   revision = 52851;
   sha512.run = "fa8689bd257b6336badb8e5a742d5c5f12d9088b33b43bdc41474feda62358c754db05735fa471baa307907bcd61f68e8d061e66c400198d6a1dc165f39d2226";
   sha512.doc = "f24f8508279ded0689bb9dda8c653cfbd903c46782744fcb8d004f50a771ca74b86549c86abc765a408f2be67334048390e407be9446faa476a02ce9c27d5547";
+  hasManpages = true;
   license = [ "gpl1Only" ];
 };
+tpic2pdftex.binfiles = [
+  "tpic2pdftex"
+];
 tpslifonts = {
   revision = 42428;
   stripPrefix = 0;
@@ -41641,8 +43138,15 @@ ttfutils = {
   revision = 62517;
   sha512.run = "63686a2f8b014fca1c40ef36d9a95b443addd7b99e8151115ec99a8117188643970d9a8889983ad84f50d4d70cf7a4716947c3cc5b07fd55ff0ef53a97a273a2";
   sha512.doc = "7a6417bdd98ca495914f7cd3c61162e9cc505aa700060a3de9098610d27d4b5a812fe333d9c8ecab6316d8c4b51d1e63d78327ff3fb7bf9d51344bd5fd030814";
+  hasManpages = true;
   hasRunfiles = true;
 };
+ttfutils.binfiles = [
+  "ttf2afm"
+  "ttf2pk"
+  "ttf2tfm"
+  "ttfdump"
+];
 tucv = {
   revision = 20680;
   stripPrefix = 0;
@@ -41900,6 +43404,9 @@ typeoutfileinfo = {
   license = [ "lppl13c" ];
   version = "0.31";
 };
+typeoutfileinfo.binfiles = [
+  "typeoutfileinfo"
+];
 typewriter = {
   revision = 46641;
   stripPrefix = 0;
@@ -42186,6 +43693,9 @@ ulqda = {
   license = [ "lppl13c" ];
   version = "1.1";
 };
+ulqda.binfiles = [
+  "ulqda"
+];
 ulthese = {
   revision = 60217;
   stripPrefix = 0;
@@ -42661,13 +44171,33 @@ uplatex = {
     "uptex"
     "uptex-fonts"
   ];
-  hasFormats = true;
+  formats = [
+    {
+      name = "uplatex";
+      engine = "euptex";
+      options = "*uplatex.ini";
+      patterns = [ "language.dat" ];
+      fmttriggers = [ "atbegshi" "atveryend" "babel" "cm" "everyshi" "firstaid" "hyphen-base" "l3backend" "l3kernel" "l3packages" "latex" "latex-fonts" "tex-ini-files" "unicode-data" "uptex-fonts" "platex" "latex" ];
+    }
+    {
+      name = "uplatex-dev";
+      engine = "euptex";
+      options = "*uplatex.ini";
+      patterns = [ "language.dat" ];
+      fmttriggers = [ "atbegshi" "atveryend" "babel" "cm" "everyshi" "firstaid" "hyphen-base" "l3backend" "l3kernel" "l3packages" "latex" "latex-fonts" "tex-ini-files" "unicode-data" "uptex-fonts" "platex" "l3kernel" "latex-base-dev" "latex-firstaid-dev" ];
+    }
+  ];
   sha512.run = "aa49098049ae86a286ccd14a3a25060104ade1ecfa1f31d44c36398dc1d9130e78ee2f3dfbda067c5cda54275a5ace7fdfa66ff8a4e30ab2cfef32c52d4c8781";
   sha512.doc = "373eaf7028b4528b1e7d1be399d0bc05b477fdb8a429f845d0bc7d767bbc7ff6a991174c8eff0e346a5b4c0a3dbee24b633df97656dcc1a1c5e5f80487f73a64";
+  hasManpages = true;
   sha512.source = "bcc1d990342f27296c842a0cc1e35e1f456e7d70f44ac3db691939675ee787f48e87ce03e0a0625d69524c7e47e0893ff2b1eb678a9b74a63bb3d644cb8bb172";
   hasRunfiles = true;
   license = [ "bsd3" ];
 };
+uplatex.binfiles = [
+  "uplatex"
+  "uplatex-dev"
+];
 upmethodology = {
   revision = 64613;
   stripPrefix = 0;
@@ -42708,9 +44238,24 @@ uptex = {
     "uptex-base"
     "uptex-fonts"
   ];
-  hasFormats = true;
+  formats = [
+    {
+      name = "euptex";
+      engine = "euptex";
+      options = "*euptex.ini";
+      patterns = [ "language.def" ];
+      fmttriggers = [ "cm" "hyphen-base" "knuth-lib" "plain" "uptex-base" "uptex-fonts" "etex" "ptex-base" ];
+    }
+    {
+      name = "uptex";
+      engine = "uptex";
+      options = "uptex.ini";
+      fmttriggers = [ "cm" "hyphen-base" "knuth-lib" "plain" "uptex-base" "uptex-fonts" ];
+    }
+  ];
   sha512.run = "9255b1ec06d2b1e214dda666b5f37df20ce98095a3726e2e114082cd0ebb13f9f4e0d46b8cfd28da528a6ab68896fd62a0593e02b5072e6c3196937b098bd626";
   sha512.doc = "2a9d880635afb3c848893c371d3aca7796e6aafb11949047a21e9f0df73d06b69d3cc84cfe28438f0424722b41b795be913e79cc01b16dacd5370ec5d1e9ac5b";
+  hasManpages = true;
   license = [ "free" ];
 };
 uptex-base = {
@@ -42729,6 +44274,19 @@ uptex-fonts = {
   hasRunfiles = true;
   license = [ "bsd3" ];
 };
+uptex.binfiles = [
+  "euptex"
+  "r-upmpost"
+  "upbibtex"
+  "updvitomp"
+  "updvitype"
+  "upmendex"
+  "upmpost"
+  "uppltotf"
+  "uptex"
+  "uptftopl"
+  "wovp2ovf"
+];
 upzhkinsoku = {
   revision = 47354;
   stripPrefix = 0;
@@ -42775,6 +44333,9 @@ urlbst = {
   license = [ "gpl2" "lppl13c" ];
   version = "0.9.1";
 };
+urlbst.binfiles = [
+  "urlbst"
+];
 urwchancal = {
   revision = 21701;
   stripPrefix = 0;
@@ -43045,10 +44606,14 @@ velthuis = {
   ];
   sha512.run = "451023c09755f3aa884128a6ddd5e70a6820724de66f8923deea812a8e28c337676de95aa98a06a96013502fa24e9855b24977603c675820b1d5a0a056fe4cab";
   sha512.doc = "e17270b0e427e3ff02b1d43e578815ec37c0046a20ceb898a357041f9184044162077d9fc64f66d955d774637a8d2ec59d31b624dd743113c972d0854075df10";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "gpl1Only" ];
   version = "2.17.1";
 };
+velthuis.binfiles = [
+  "devnag"
+];
 venn = {
   revision = 15878;
   stripPrefix = 0;
@@ -43242,7 +44807,11 @@ vlna = {
   revision = 54074;
   sha512.run = "ce37751f6cbd088e8faffb0c2ddb6d8bec9c0d1f0fa3a4ab0a3e5f2517e6f54fb6903f441cf72398284801c9b9f00d684d6a6555e2588ae72679050734fff8c9";
   sha512.doc = "f46c2e29da8f4edbe544d41b05ac3ba13cb5e3c09d299ce5ccb85207703c99569df94640c651a1afbcafcaf4669bb73157945f8dfc1d2b43ce5c0c7970c35544";
+  hasManpages = true;
 };
+vlna.binfiles = [
+  "vlna"
+];
 vmargin = {
   revision = 15878;
   stripPrefix = 0;
@@ -43298,6 +44867,9 @@ vpe = {
   license = [ "lppl13c" ];
   version = "0.2";
 };
+vpe.binfiles = [
+  "vpe"
+];
 vruler = {
   revision = 21598;
   stripPrefix = 0;
@@ -43428,9 +45000,14 @@ web = {
   ];
   sha512.run = "edac6079f0de1904e008c2a5fd7ee697f32c5324e3b9a7a4d8997b97ef214bfa1a787c84ecd4bcccd38e88c58b9729b4c5684ab58bbfcc97ce159dc5c2b5b312";
   sha512.doc = "50ae800de53cecfa6f656ba41d35d7c486e4cfe4b2ed42dd26dc60ecaa9a0b80c178dead765a7076fcc6141e8a2158e9b0854ceecc2cbf7b2e85c23cf22a7da3";
+  hasManpages = true;
   license = [ "knuth" ];
   version = "4.5";
 };
+web.binfiles = [
+  "tangle"
+  "weave"
+];
 webguide = {
   revision = 25813;
   stripPrefix = 0;
@@ -43442,10 +45019,17 @@ webquiz = {
   revision = 58808;
   sha512.run = "04ce66027089c2be815380a10540e6c12040d33a33b1de9c6a98985e82a65e87f58a19b6cbf2b0ad7bc8e0a1e500bd21a80e2adbe3ff395ec4be1ecdd5b5adf0";
   sha512.doc = "58faed1d21c5f0abe004d5aff0ef6f754012722dace25948e236c940f3e9f3a49d4f661d6692afa0bbd0a654424017e84611c32cdd99a0ef60e510c4b2fa01e9";
+  hasManpages = true;
   hasRunfiles = true;
+  scriptExts = [
+    "py"
+  ];
   license = [ "gpl3Plus" ];
   version = "5.2";
 };
+webquiz.binfiles = [
+  "webquiz"
+];
 wheelchart = {
   revision = 64373;
   stripPrefix = 0;
@@ -43545,6 +45129,9 @@ wordcount = {
   license = [ "lppl13c" ];
   version = "1.7";
 };
+wordcount.binfiles = [
+  "wordcount"
+];
 wordlike = {
   revision = 15878;
   stripPrefix = 0;
@@ -43805,9 +45392,14 @@ xdvi = {
   revision = 62387;
   sha512.run = "57024e05928f45e253e236d7e8c6b9cef07359c1cabc10b3f6ac13a9b98dc04530517d8d66b20cefaeced793fbc57a5373c226fb3d26186ba3bb7eaadb0f4ef2";
   sha512.doc = "0fd1bc1ba7bb022f03334fa6c6bc6aed779179a7c486211c3016b0880efa2b13859eb7cea78e8bfc0069192f93313d37a4966fd7e233bccfb1d010d3e413cfd9";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "free" ];
 };
+xdvi.binfiles = [
+  "xdvi"
+  "xdvi-xaw"
+];
 xebaposter = {
   revision = 63513;
   stripPrefix = 0;
@@ -43898,9 +45490,20 @@ xelatex-dev = {
     "unicode-data"
     "xetex"
   ];
-  hasFormats = true;
+  formats = [
+    {
+      name = "xelatex-dev";
+      engine = "xetex";
+      patterns = [ "language.dat" ];
+      options = "-etex xelatex.ini";
+      fmttriggers = [ "atbegshi" "atveryend" "babel" "cm" "everyshi" "firstaid" "hyphen-base" "l3backend" "l3kernel" "l3packages" "latex" "latex-fonts" "tex-ini-files" "unicode-data" "latex-base-dev" "latex-firstaid-dev" "lm" ];
+    }
+  ];
   sha512.run = "088c917758f727ba08b8571d302c93f0b14fc15ca6dcb0ef7a89df4ba144c508d8d42265cc6b1915707329b64aa1d1030ed0b5513987fbd4437d0a58a232b5db";
 };
+xelatex-dev.binfiles = [
+  "xelatex-dev"
+];
 xellipsis = {
   revision = 47546;
   stripPrefix = 0;
@@ -43973,10 +45576,26 @@ xetex = {
     "unicode-data"
     "xetexconfig"
   ];
-  hasFormats = true;
+  formats = [
+    {
+      name = "xelatex";
+      engine = "xetex";
+      patterns = [ "language.dat" ];
+      options = "-etex xelatex.ini";
+      fmttriggers = [ "atbegshi" "atveryend" "babel" "cm" "everyshi" "firstaid" "hyphen-base" "l3backend" "l3kernel" "l3packages" "latex" "latex-fonts" "tex-ini-files" "unicode-data" "lm" ];
+    }
+    {
+      name = "xetex";
+      engine = "xetex";
+      patterns = [ "language.def" ];
+      options = "-etex xetex.ini";
+      fmttriggers = [ "cm" "hyphen-base" "tex-ini-files" "unicode-data" "etex" "plain" ];
+    }
+  ];
   postactionScript = "tlpkg/tlpostcode/xetex.pl";
   sha512.run = "e9f0aebda0a7fb36e2cbce4dd49e965335438c4ebf2d41eb8e19eabe29617239dd67e7e3433a8c75fd40f072a2c6753a7d0762afd34fca4130929e51888aaabf";
   sha512.doc = "31f03ee1ae00bc7883109ab7b7374feedc384d86b491873e90797658eae12299dd60b95edc1c86f1faa61a0b7a952cca23993e991863b37e49c27afd6c21c034";
+  hasManpages = true;
   hasRunfiles = true;
   hasTlpkg = true;
   license = [ "x11" ];
@@ -44016,6 +45635,13 @@ xetex-tibetan = {
   license = [ "lppl13c" ];
   version = "0.1";
 };
+xetex.binfiles = [
+  "teckit_compile"
+  "xelatex"
+  "xelatex-unsafe"
+  "xetex"
+  "xetex-unsafe"
+];
 xetexconfig = {
   revision = 45845;
   stripPrefix = 0;
@@ -44124,13 +45750,20 @@ xindex = {
   sha512.run = "c88e7d602c741db871ab6ec5895fee5455b954c4487d57be812b172369c5d973a8fad4b9fdcb60179562d04ba4105ecfc1228ae7d414a7d90df9a9723306de07";
   sha512.doc = "3d36e5f8811c6df621717a7077bb49bec137a5bbc3c6593078644811d915c720d41c2e1a6e5be6e3af95ddc64879582061f7aba6113e2b3a1ee5d7b3f63064d0";
   hasRunfiles = true;
+  scriptExts = [
+    "lua"
+  ];
   license = [ "lppl13c" ];
   version = "0.47";
 };
+xindex.binfiles = [
+  "xindex"
+];
 xindy = {
   revision = 59894;
   sha512.run = "0abfc9c3d4f4418fa63845df092e074762f215b334f76016814988f5243bbb184768256792779c65f277fa6a48c41d762c33be6c5cf25ba292efcf9f0554abf8";
   sha512.doc = "3fed723b6115fd7e05b84c010ded501fcd8440af72353b2b7ccb6df39082515b5de33951821c8546b65ba2462695971695caf2ce88fed67c9bd766db9d13e859";
+  hasManpages = true;
   hasRunfiles = true;
   license = [ "gpl1Only" ];
   version = "2.5.1";
@@ -44143,6 +45776,13 @@ xindy-persian = {
   license = [ "lppl13c" ];
   version = "0.8";
 };
+xindy.binfiles = [
+  "tex2xindy"
+  "texindy"
+  "xindy"
+  "xindy.mem"
+  "xindy.run"
+];
 xint = {
   revision = 63562;
   stripPrefix = 0;
@@ -44235,8 +45875,12 @@ xml2pmx = {
   revision = 57972;
   sha512.run = "9545fb5ca0e95788afab79d8a29336f337619adbcac68472bb5de6af6c54187f19bda655232175223168891c064f6fadc67c4ab8f5a0256e2c55e1a65c5e6f6b";
   sha512.doc = "973960f65159f5107caa7e9a041dca75f0171fc61f94794c7b7560eb9b6898534974fb8b360a28dfa3a01d422b71618bcaf8aba2ed25ae4d4b9f67d24ab730be";
+  hasManpages = true;
   license = [ "gpl3Plus" ];
 };
+xml2pmx.binfiles = [
+  "xml2pmx"
+];
 xmltex = {
   revision = 62145;
   deps = [
@@ -44261,13 +45905,32 @@ xmltex = {
     "unicode-data"
     "xmltexconfig"
   ];
-  hasFormats = true;
+  formats = [
+    {
+      name = "pdfxmltex";
+      engine = "pdftex";
+      patterns = [ "language.dat" ];
+      options = "*pdfxmltex.ini";
+      fmttriggers = [ "atbegshi" "atveryend" "babel" "cm" "everyshi" "firstaid" "hyphen-base" "l3backend" "l3kernel" "l3packages" "latex" "latex-fonts" "tex-ini-files" "unicode-data" "dehyph" "hyph-utf8" "latex" "latexconfig" "tex-ini-files" "xmltexconfig" ];
+    }
+    {
+      name = "xmltex";
+      engine = "pdftex";
+      patterns = [ "language.dat" ];
+      options = "*xmltex.ini";
+      fmttriggers = [ "atbegshi" "atveryend" "babel" "cm" "everyshi" "firstaid" "hyphen-base" "l3backend" "l3kernel" "l3packages" "latex" "latex-fonts" "tex-ini-files" "unicode-data" "dehyph" "hyph-utf8" "latex" "latexconfig" "tex-ini-files" "xmltexconfig" ];
+    }
+  ];
   sha512.run = "ee01abb25b18e99f18bc78357be04fb1405473e90fbdf74ed875e2910812550c44fcc7aee960b2bdc53fcd7d78e9aa706e46929da65d5cb78d9ca43ba475d675";
   sha512.doc = "d87c6d1f4c472b436104b0746d48a463977dc7eb520de3d7a53f48bc1c8e5682a23d604bbe2ebda1b5029d4a6dd33c2d2bf8b917ad4f54d2c7472874fdfe8509";
   hasRunfiles = true;
   license = [ "lppl13c" ];
   version = "0.8";
 };
+xmltex.binfiles = [
+  "pdfxmltex"
+  "xmltex"
+];
 xmltexconfig = {
   revision = 45845;
   stripPrefix = 0;
@@ -44326,9 +45989,14 @@ xpdfopen = {
   revision = 53998;
   sha512.run = "fe873bb22b94a26720e37671e283e0085619c2129a4568399544ac0df1e5c443a9476590ca7ef76a21409589eb2416a14165b8a48a6182f3773a3009cb7c1a47";
   sha512.doc = "bb4be8fe1b4590e74a7573baa1d699895fb62f6b30b05c9c81655001c75ffb43a6d7f92deca337072690ce3297d4ab06f1aca389524c5d5d500a9fce4abd8404";
+  hasManpages = true;
   license = [ "publicDomain" ];
   version = "0.86";
 };
+xpdfopen.binfiles = [
+  "pdfclose"
+  "pdfopen"
+];
 xpeek = {
   revision = 61719;
   stripPrefix = 0;
@@ -44756,6 +46424,9 @@ yplan = {
   hasRunfiles = true;
   license = [ "lppl13c" ];
 };
+yplan.binfiles = [
+  "yplan"
+];
 yquant = {
   revision = 65944;
   stripPrefix = 0;
diff --git a/pkgs/tools/wayland/wtype/default.nix b/pkgs/tools/wayland/wtype/default.nix
index 5928b9dd489d..f9461ef7613b 100644
--- a/pkgs/tools/wayland/wtype/default.nix
+++ b/pkgs/tools/wayland/wtype/default.nix
@@ -31,5 +31,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     platforms = platforms.linux;
     maintainers = with maintainers; [ justinlovinger ];
+    mainProgram = "wtype";
   };
 }
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 23af6b6182af..288098666707 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -1806,6 +1806,8 @@ with pkgs;
 
   kubevirt = callPackage ../tools/virtualization/kubevirt { };
 
+  lektor = callPackage ../tools/misc/lektor { };
+
   licenseclassifier = callPackage ../development/tools/misc/licenseclassifier { };
 
   license-cli = callPackage ../tools/misc/license-cli { };
@@ -1816,6 +1818,8 @@ with pkgs;
 
   linux-router-without-wifi = linux-router.override { useWifiDependencies = false; };
 
+  markdownlint-cli = callPackage ../tools/text/markdownlint-cli { };
+
   mbidled = callPackage ../tools/networking/mbidled { };
 
   metapixel = callPackage ../tools/graphics/metapixel { };
@@ -3358,7 +3362,7 @@ with pkgs;
     httpServer = true;
   };
 
-  antennas = nodePackages.antennas;
+  antennas = callPackage ../servers/antennas { };
 
   apg = callPackage ../tools/security/apg { };
 
@@ -3455,7 +3459,7 @@ with pkgs;
 
   calls = callPackage ../applications/networking/calls { };
 
-  inherit (nodePackages) castnow;
+  castnow = callPackage ../tools/networking/castnow { };
 
   castty = callPackage ../tools/misc/castty { };
 
@@ -5883,7 +5887,7 @@ with pkgs;
 
   mq-cli = callPackage ../tools/system/mq-cli { };
 
-  mrkd = with python3Packages; toPythonApplication mrkd;
+  mrkd = callPackage ../tools/text/mrkd { };
 
   naproche = callPackage ../applications/science/logic/naproche { };
 
@@ -18188,6 +18192,8 @@ with pkgs;
 
   espup = callPackage ../development/tools/espup { };
 
+  karma-runner = callPackage ../development/tools/karma-runner { };
+
   phpunit = callPackage ../development/tools/misc/phpunit { };
 
   teller = callPackage ../development/tools/teller { };
@@ -32118,7 +32124,7 @@ with pkgs;
 
   hue-cli = callPackage ../tools/networking/hue-cli { };
 
-  inherit (nodePackages) hueadm;
+  hueadm = callPackage ../tools/misc/hueadm { };
 
   hugin = callPackage ../applications/graphics/hugin {
     wxGTK = wxGTK32;
@@ -36590,7 +36596,7 @@ with pkgs;
 
   aperture = callPackage ../applications/blockchains/aperture { };
 
-  balanceofsatoshis = nodePackages.balanceofsatoshis;
+  balanceofsatoshis = callPackage ../tools/misc/balanceofsatoshis { };
 
   bitcoin  = libsForQt5.callPackage ../applications/blockchains/bitcoin {
     stdenv = if stdenv.isDarwin then darwin.apple_sdk_11_0.stdenv else stdenv;
diff --git a/pkgs/top-level/python-aliases.nix b/pkgs/top-level/python-aliases.nix
index 63addfa58a03..467d1c1a4df4 100644
--- a/pkgs/top-level/python-aliases.nix
+++ b/pkgs/top-level/python-aliases.nix
@@ -186,6 +186,7 @@ mapAliases ({
   Keras = keras; # added 2021-11-25
   ldap = python-ldap; # added 2022-09-16
   lammps-cython = throw "lammps-cython no longer builds and is unmaintained"; # added 2021-07-04
+  lektor = throw "lektor has been promoted to a top-level attribute"; # added 2023-08-01
   logilab_astng = throw "logilab-astng has not been released since 2013 and is unmaintained"; # added 2022-11-29
   logilab_common = logilab-common; # added 2022-11-21
   loo-py = loopy; # added 2022-05-03
@@ -204,6 +205,7 @@ mapAliases ({
   mistune_0_8 = throw "mistune_0_8 was removed because it was outdated and insecure"; # added 2022-08-12
   mistune_2_0 = mistune; # added 2022-08-12
   mox = throw "mox was removed because it is unmaintained"; # added 2023-02-21
+  mrkd = throw "mrkd has been promoted to a top-level attribute"; # added 2023-08-01
   mutmut = throw "mutmut has been promoted to a top-level attribute"; # added 2022-10-02
   net2grid = gridnet; # add 2022-04-22
   nose-cover3 = throw "nose-cover3 has been removed, it was using setuptools 2to3 translation feature, which has been removed in setuptools 58"; # added 2022-02-16
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index e3fc86e21bb2..1324c28692a0 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -5807,8 +5807,6 @@ self: super: with self; {
     igraph-c = pkgs.igraph;
   };
 
-  lektor = callPackage ../development/python-modules/lektor { };
-
   leveldb = callPackage ../development/python-modules/leveldb { };
 
   levenshtein = callPackage ../development/python-modules/levenshtein { };
@@ -6706,8 +6704,6 @@ self: super: with self; {
 
   mrjob = callPackage ../development/python-modules/mrjob { };
 
-  mrkd = callPackage ../development/python-modules/mrkd { };
-
   ms-active-directory = callPackage ../development/python-modules/ms-active-directory { };
 
   ms-cv = callPackage ../development/python-modules/ms-cv { };