about summary refs log tree commit diff
path: root/nixpkgs/pkgs/tools/text
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/tools/text')
-rw-r--r--nixpkgs/pkgs/tools/text/a2ps/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/align/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/amber/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/anew/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/angle-grinder/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/text/ansifilter/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/ascii/default.nix25
-rw-r--r--nixpkgs/pkgs/tools/text/autocorrect/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/bashblog/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/boxes/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/cconv/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/choose/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/chroma/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/clima/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/cmigemo/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/comrak/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/convertlit/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/crowdin-cli/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/text/csvdiff/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/csview/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/d2/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/diffsitter/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/difftastic/Cargo.lock501
-rw-r--r--nixpkgs/pkgs/tools/text/difftastic/default.nix23
-rw-r--r--nixpkgs/pkgs/tools/text/diffutils/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/text/epub2txt2/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/text/fanficfare/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/text/fastmod/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/frawk/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/frogmouth/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/gawk/default.nix5
-rw-r--r--nixpkgs/pkgs/tools/text/glogg/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/gnugrep/default.nix5
-rw-r--r--nixpkgs/pkgs/tools/text/gnused/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/text/goawk/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/grin/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/groff/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/gucci/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/hck/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/hcledit/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/highlight/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/text/html-tidy/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/html2text/default.nix31
-rw-r--r--nixpkgs/pkgs/tools/text/ispell/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/jen/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/jotdown/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/jumanpp/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/kdiff3/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/text/languagetool/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/link-grammar/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/mark/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/markdownlint-cli/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/text/markdownlint-cli2/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/mdbook-admonish/default.nix8
-rw-r--r--nixpkgs/pkgs/tools/text/mdbook-footnote/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/mdbook-graphviz/default.nix8
-rw-r--r--nixpkgs/pkgs/tools/text/mdbook-i18n-helpers/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/text/mdbook-katex/default.nix8
-rw-r--r--nixpkgs/pkgs/tools/text/mdbook-linkcheck/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/mdbook-mermaid/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/mdbook-pdf/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/mdbook-toc/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/opencc/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/paperoni/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/percollate/default.nix10
-rw-r--r--nixpkgs/pkgs/tools/text/pinyin-tool/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/platinum-searcher/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/pn/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/pomsky/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/popfile/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/proselint/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/rare-regex/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/text/repgrep/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/replace/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/rgxg/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/riffdiff/default.nix8
-rw-r--r--nixpkgs/pkgs/tools/text/ripgrep/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/rnr/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/rsbkb/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/text/runiq/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/sad/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/text/scraper/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/seehecht/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/sgml/openjade/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/sgml/opensp/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/sgrep/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/shab/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/shfmt/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/shocco/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/sift/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/silver-searcher/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/teip/default.nix7
-rw-r--r--nixpkgs/pkgs/tools/text/termbook/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/tesh/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/textpieces/default.nix86
-rw-r--r--nixpkgs/pkgs/tools/text/tidy-viewer/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/tml/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/unrtf/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/untex/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/vale/default.nix8
-rw-r--r--nixpkgs/pkgs/tools/text/vale/styles.nix24
-rw-r--r--nixpkgs/pkgs/tools/text/validator-nu/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/text/vgrep/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/text/wrap/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/xidel/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/xml/jing-trang/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/xml/rxp/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/xml/xmlformat/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/xml/xmlstarlet/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/xsv/default.nix2
110 files changed, 454 insertions, 538 deletions
diff --git a/nixpkgs/pkgs/tools/text/a2ps/default.nix b/nixpkgs/pkgs/tools/text/a2ps/default.nix
index c275ee7d967c..78d4c4dcad9f 100644
--- a/nixpkgs/pkgs/tools/text/a2ps/default.nix
+++ b/nixpkgs/pkgs/tools/text/a2ps/default.nix
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
   strictDeps = true;
 
   meta = with lib; {
-    description = "An Anything to PostScript converter and pretty-printer";
+    description = "Anything to PostScript converter and pretty-printer";
     longDescription = ''
       GNU a2ps converts files into PostScript for printing or viewing. It uses a nice default format,
       usually two pages on each physical page, borders surrounding pages, headers with useful information
diff --git a/nixpkgs/pkgs/tools/text/align/default.nix b/nixpkgs/pkgs/tools/text/align/default.nix
index 844b03b2c8c1..fa97b97ad261 100644
--- a/nixpkgs/pkgs/tools/text/align/default.nix
+++ b/nixpkgs/pkgs/tools/text/align/default.nix
@@ -15,7 +15,7 @@ buildGoModule rec {
 
   meta = with lib; {
     homepage = "https://github.com/Guitarbum722/align";
-    description = "A general purpose application and library for aligning text";
+    description = "General purpose application and library for aligning text";
     mainProgram = "align";
     maintainers = with maintainers; [ hrhino ];
     license = licenses.mit;
diff --git a/nixpkgs/pkgs/tools/text/amber/default.nix b/nixpkgs/pkgs/tools/text/amber/default.nix
index e4158b4bfc2d..0b81281fad1a 100644
--- a/nixpkgs/pkgs/tools/text/amber/default.nix
+++ b/nixpkgs/pkgs/tools/text/amber/default.nix
@@ -18,7 +18,7 @@ rustPlatform.buildRustPackage rec {
   buildInputs = lib.optionals stdenv.isDarwin [ libiconv Security ];
 
   meta = with lib; {
-    description = "A code search-and-replace tool";
+    description = "Code search-and-replace tool";
     homepage = "https://github.com/dalance/amber";
     license = with licenses; [ mit ];
     maintainers = [ maintainers.bdesham ];
diff --git a/nixpkgs/pkgs/tools/text/anew/default.nix b/nixpkgs/pkgs/tools/text/anew/default.nix
index 58b6059a252c..35c7d872f3d8 100644
--- a/nixpkgs/pkgs/tools/text/anew/default.nix
+++ b/nixpkgs/pkgs/tools/text/anew/default.nix
@@ -19,7 +19,7 @@ buildGoModule rec {
   ldflags = [ "-s" "-w" ];
 
   meta = with lib; {
-    description = "A tool for adding new lines to files, skipping duplicates";
+    description = "Tool for adding new lines to files, skipping duplicates";
     mainProgram = "anew";
     homepage = "https://github.com/tomnomnom/anew";
     license = licenses.mit;
diff --git a/nixpkgs/pkgs/tools/text/angle-grinder/default.nix b/nixpkgs/pkgs/tools/text/angle-grinder/default.nix
index dd34316803e1..322cd12463c8 100644
--- a/nixpkgs/pkgs/tools/text/angle-grinder/default.nix
+++ b/nixpkgs/pkgs/tools/text/angle-grinder/default.nix
@@ -5,16 +5,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "angle-grinder";
-  version = "0.19.2";
+  version = "0.19.4";
 
   src = fetchFromGitHub {
     owner = "rcoh";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-/OYIG4s0hH/bkAPxt/x5qHopDIoMN9AJLQ8Sx8USgsM=";
+    sha256 = "sha256-1SZho04qJcNi84ZkDmxoVkLx9VJX04QINZQ6ZEoCq+c=";
   };
 
-  cargoHash = "sha256-pOW2jFQxaf2zQWL5+URvHVeCAvSI0u8iALPO5fCoqmI=";
+  cargoHash = "sha256-+l0+zaZSPOk4gJLHZ9LFFbYlZ5vkS68Jg2dWPHSkzKw=";
 
   meta = with lib; {
     description = "Slice and dice logs on the command line";
diff --git a/nixpkgs/pkgs/tools/text/ansifilter/default.nix b/nixpkgs/pkgs/tools/text/ansifilter/default.nix
index e2fd695d41ec..686b8c9f4171 100644
--- a/nixpkgs/pkgs/tools/text/ansifilter/default.nix
+++ b/nixpkgs/pkgs/tools/text/ansifilter/default.nix
@@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
       Tool to remove ANSI or convert them to another format
       (HTML, TeX, LaTeX, RTF, Pango or BBCode)
     '';
-    homepage = "http://www.andre-simon.de/doku/ansifilter/en/ansifilter.php";
+    homepage = "http://www.andre-simon.de/doku/ansifilter/en/ansifilter.html";
     license = licenses.gpl3;
     maintainers = [ maintainers.Adjective-Object ];
     platforms = platforms.linux ++ platforms.darwin;
diff --git a/nixpkgs/pkgs/tools/text/ascii/default.nix b/nixpkgs/pkgs/tools/text/ascii/default.nix
index ad9884faa17d..6a280bc516f9 100644
--- a/nixpkgs/pkgs/tools/text/ascii/default.nix
+++ b/nixpkgs/pkgs/tools/text/ascii/default.nix
@@ -1,14 +1,20 @@
-{ lib, stdenv, fetchurl }:
+{ lib, stdenv, fetchFromGitLab, gitUpdater, asciidoctor }:
 
-stdenv.mkDerivation rec {
+stdenv.mkDerivation (finalAttrs: {
   pname = "ascii";
-  version = "3.20";
+  version = "3.30";
 
-  src = fetchurl {
-    url = "http://www.catb.org/~esr/ascii/${pname}-${version}.tar.gz";
-    sha256 = "sha256-nm5X6mDUGagDoCTOY2YlTvtxYma4Tu3VjNmA2rzBFnQ=";
+  src = fetchFromGitLab {
+    owner = "esr";
+    repo = "ascii";
+    rev = "refs/tags/${finalAttrs.version}";
+    hash = "sha256-TE9YR5Va9tXaf2ZyNxz7d8lZRTgnD4Lz7FyqRDl1HNY=";
   };
 
+  nativeBuildInputs = [
+    asciidoctor
+  ];
+
   prePatch = ''
     sed -i -e "s|^PREFIX = .*|PREFIX = $out|" Makefile
   '';
@@ -17,12 +23,15 @@ stdenv.mkDerivation rec {
     mkdir -vp "$out/bin" "$out/share/man/man1"
   '';
 
+  passthru.updateScript = gitUpdater { };
+
   meta = with lib; {
     description = "Interactive ASCII name and synonym chart";
     mainProgram = "ascii";
     homepage = "http://www.catb.org/~esr/ascii/";
-    license = licenses.bsd3;
+    changelog = "https://gitlab.com/esr/ascii/-/blob/${finalAttrs.version}/NEWS.adoc";
+    license = licenses.bsd2;
     platforms = platforms.all;
     maintainers = [ maintainers.bjornfor ];
   };
-}
+})
diff --git a/nixpkgs/pkgs/tools/text/autocorrect/default.nix b/nixpkgs/pkgs/tools/text/autocorrect/default.nix
index 2e51672363f4..19e69a468ffd 100644
--- a/nixpkgs/pkgs/tools/text/autocorrect/default.nix
+++ b/nixpkgs/pkgs/tools/text/autocorrect/default.nix
@@ -27,7 +27,7 @@ rustPlatform.buildRustPackage rec {
   passthru.updateScript = ./update.sh;
 
   meta = with lib; {
-    description = "A linter and formatter for help you improve copywriting, to correct spaces, punctuations between CJK (Chinese, Japanese, Korean)";
+    description = "Linter and formatter for help you improve copywriting, to correct spaces, punctuations between CJK (Chinese, Japanese, Korean)";
     mainProgram = "autocorrect";
     homepage = "https://huacnlee.github.io/autocorrect";
     changelog = "https://github.com/huacnlee/autocorrect/releases/tag/v${version}";
diff --git a/nixpkgs/pkgs/tools/text/bashblog/default.nix b/nixpkgs/pkgs/tools/text/bashblog/default.nix
index 0159e20de99a..54e5d6f748e0 100644
--- a/nixpkgs/pkgs/tools/text/bashblog/default.nix
+++ b/nixpkgs/pkgs/tools/text/bashblog/default.nix
@@ -53,7 +53,7 @@ in stdenv.mkDerivation {
   '';
 
   meta = with lib; {
-    description = "A single Bash script to create blogs";
+    description = "Single Bash script to create blogs";
     mainProgram = "bashblog";
     homepage = "https://github.com/cfenollosa/bashblog";
     license = licenses.gpl3Only;
diff --git a/nixpkgs/pkgs/tools/text/boxes/default.nix b/nixpkgs/pkgs/tools/text/boxes/default.nix
index 2f1f450ada15..68e5b9c7ddca 100644
--- a/nixpkgs/pkgs/tools/text/boxes/default.nix
+++ b/nixpkgs/pkgs/tools/text/boxes/default.nix
@@ -36,7 +36,7 @@ gccStdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A command line program which draws, removes, and repairs ASCII art boxes";
+    description = "Command line program which draws, removes, and repairs ASCII art boxes";
     mainProgram = "boxes";
     homepage = "https://boxes.thomasjensen.com";
     license = licenses.gpl2Plus;
diff --git a/nixpkgs/pkgs/tools/text/cconv/default.nix b/nixpkgs/pkgs/tools/text/cconv/default.nix
index 86aaf2d5f7c6..872db0a44970 100644
--- a/nixpkgs/pkgs/tools/text/cconv/default.nix
+++ b/nixpkgs/pkgs/tools/text/cconv/default.nix
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
   buildInputs = [ libiconv ];
 
   meta = with lib; {
-    description = "A iconv based simplified-traditional chinese conversion tool";
+    description = "Iconv based simplified-traditional chinese conversion tool";
     mainProgram = "cconv";
     homepage = "https://github.com/xiaoyjy/cconv";
     license = licenses.mit;
diff --git a/nixpkgs/pkgs/tools/text/choose/default.nix b/nixpkgs/pkgs/tools/text/choose/default.nix
index b765a40f5496..c3afeb492280 100644
--- a/nixpkgs/pkgs/tools/text/choose/default.nix
+++ b/nixpkgs/pkgs/tools/text/choose/default.nix
@@ -17,7 +17,7 @@ rustPlatform.buildRustPackage rec {
   cargoSha256 = "sha256-0INC0LFzlnFnt5pCiU4xePxU8a6GiU1L8bg7zcuFl2k=";
 
   meta = with lib; {
-    description = "A human-friendly and fast alternative to cut and (sometimes) awk";
+    description = "Human-friendly and fast alternative to cut and (sometimes) awk";
     mainProgram = "choose";
     homepage = "https://github.com/theryangeary/choose";
     license = licenses.gpl3;
diff --git a/nixpkgs/pkgs/tools/text/chroma/default.nix b/nixpkgs/pkgs/tools/text/chroma/default.nix
index 2b59831529db..e577451af165 100644
--- a/nixpkgs/pkgs/tools/text/chroma/default.nix
+++ b/nixpkgs/pkgs/tools/text/chroma/default.nix
@@ -30,7 +30,7 @@ buildGoModule rec {
 
   meta = with lib; {
     homepage = "https://github.com/alecthomas/chroma";
-    description = "A general purpose syntax highlighter in pure Go";
+    description = "General purpose syntax highlighter in pure Go";
     license = licenses.mit;
     maintainers = [ maintainers.sternenseemann ];
     mainProgram = "chroma";
diff --git a/nixpkgs/pkgs/tools/text/clima/default.nix b/nixpkgs/pkgs/tools/text/clima/default.nix
index cfa39590a714..65483e115269 100644
--- a/nixpkgs/pkgs/tools/text/clima/default.nix
+++ b/nixpkgs/pkgs/tools/text/clima/default.nix
@@ -23,7 +23,7 @@ rustPlatform.buildRustPackage rec {
   ];
 
   meta = with lib; {
-    description = "A minimal viewer for Termimad";
+    description = "Minimal viewer for Termimad";
     homepage = "https://github.com/Canop/clima";
     changelog = "https://github.com/Canop/clima/releases/tag/${src.rev}";
     license = licenses.mit;
diff --git a/nixpkgs/pkgs/tools/text/cmigemo/default.nix b/nixpkgs/pkgs/tools/text/cmigemo/default.nix
index 09810f1e0836..20cee369e73f 100644
--- a/nixpkgs/pkgs/tools/text/cmigemo/default.nix
+++ b/nixpkgs/pkgs/tools/text/cmigemo/default.nix
@@ -29,7 +29,7 @@ stdenv.mkDerivation {
   installTargets = [ (if stdenv.isDarwin then "osx-install" else "gcc-install") ];
 
   meta = with lib; {
-    description = "A tool that supports Japanese incremental search with Romaji";
+    description = "Tool that supports Japanese incremental search with Romaji";
     mainProgram = "cmigemo";
     homepage = "https://www.kaoriya.net/software/cmigemo";
     license = licenses.mit;
diff --git a/nixpkgs/pkgs/tools/text/comrak/default.nix b/nixpkgs/pkgs/tools/text/comrak/default.nix
index f850302a9af8..05eee8cc8136 100644
--- a/nixpkgs/pkgs/tools/text/comrak/default.nix
+++ b/nixpkgs/pkgs/tools/text/comrak/default.nix
@@ -14,7 +14,7 @@ rustPlatform.buildRustPackage rec {
   cargoHash = "sha256-rbGl7jQABZu4aMpzlv49uMuKmw7U+9zLS6pAJIJajR8=";
 
   meta = with lib; {
-    description = "A CommonMark-compatible GitHub Flavored Markdown parser and formatter";
+    description = "CommonMark-compatible GitHub Flavored Markdown parser and formatter";
     mainProgram = "comrak";
     homepage = "https://github.com/kivikakk/comrak";
     changelog = "https://github.com/kivikakk/comrak/blob/${version}/changelog.txt";
diff --git a/nixpkgs/pkgs/tools/text/convertlit/default.nix b/nixpkgs/pkgs/tools/text/convertlit/default.nix
index 751b969e4469..417007fbd3ba 100644
--- a/nixpkgs/pkgs/tools/text/convertlit/default.nix
+++ b/nixpkgs/pkgs/tools/text/convertlit/default.nix
@@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     homepage = "http://www.convertlit.com/";
-    description = "A tool for converting Microsoft Reader ebooks to more open formats";
+    description = "Tool for converting Microsoft Reader ebooks to more open formats";
     mainProgram = "clit";
     license = lib.licenses.gpl2Plus;
     platforms = lib.platforms.linux;
diff --git a/nixpkgs/pkgs/tools/text/crowdin-cli/default.nix b/nixpkgs/pkgs/tools/text/crowdin-cli/default.nix
index 763c2e3b0fbe..d5685a9c56c7 100644
--- a/nixpkgs/pkgs/tools/text/crowdin-cli/default.nix
+++ b/nixpkgs/pkgs/tools/text/crowdin-cli/default.nix
@@ -14,11 +14,11 @@
 
 stdenv.mkDerivation rec {
   pname = "crowdin-cli";
-  version = "3.19.4";
+  version = "4.0.0";
 
   src = fetchurl {
     url = "https://github.com/crowdin/${pname}/releases/download/${version}/${pname}.zip";
-    hash = "sha256-SD4D9wW+Tdr3mD91SJKm5K3gktH0ywQBRh0d1TMeLDs=";
+    hash = "sha256-7KyQUnl2O/raQLcP5VsMCX3084Mn6HFfxjJmksAkWBc=";
   };
 
   nativeBuildInputs = [ installShellFiles makeWrapper unzip ];
@@ -43,7 +43,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     mainProgram = "crowdin";
     homepage = "https://github.com/crowdin/crowdin-cli/";
-    description = "A command-line client for the Crowdin API";
+    description = "Command-line client for the Crowdin API";
     sourceProvenance = with sourceTypes; [ binaryBytecode ];
     license = licenses.mit;
     maintainers = with maintainers; [ DamienCassou ];
diff --git a/nixpkgs/pkgs/tools/text/csvdiff/default.nix b/nixpkgs/pkgs/tools/text/csvdiff/default.nix
index b7e68a709122..90faa060bed0 100644
--- a/nixpkgs/pkgs/tools/text/csvdiff/default.nix
+++ b/nixpkgs/pkgs/tools/text/csvdiff/default.nix
@@ -18,7 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     homepage = "https://aswinkarthik.github.io/csvdiff/";
-    description = "A fast diff tool for comparing csv files";
+    description = "Fast diff tool for comparing csv files";
     mainProgram = "csvdiff";
     license = licenses.mit;
     maintainers = with maintainers; [ turion ];
diff --git a/nixpkgs/pkgs/tools/text/csview/default.nix b/nixpkgs/pkgs/tools/text/csview/default.nix
index 747847a1bee2..1aa63333d89c 100644
--- a/nixpkgs/pkgs/tools/text/csview/default.nix
+++ b/nixpkgs/pkgs/tools/text/csview/default.nix
@@ -14,7 +14,7 @@ rustPlatform.buildRustPackage rec {
   cargoHash = "sha256-/pswnb2vNtw8zSoWuC7oZPJ4yxVuy1c4ES1NUHhnG6I=";
 
   meta = with lib; {
-    description = "A high performance csv viewer with cjk/emoji support";
+    description = "High performance csv viewer with cjk/emoji support";
     mainProgram = "csview";
     homepage = "https://github.com/wfxr/csview";
     license = with licenses; [ mit /* or */ asl20 ];
diff --git a/nixpkgs/pkgs/tools/text/d2/default.nix b/nixpkgs/pkgs/tools/text/d2/default.nix
index d5cef467f507..8a6641102269 100644
--- a/nixpkgs/pkgs/tools/text/d2/default.nix
+++ b/nixpkgs/pkgs/tools/text/d2/default.nix
@@ -47,7 +47,7 @@ buildGoModule rec {
   };
 
   meta = with lib; {
-    description = "A modern diagram scripting language that turns text to diagrams";
+    description = "Modern diagram scripting language that turns text to diagrams";
     homepage = "https://d2lang.com";
     license = licenses.mpl20;
     maintainers = with maintainers; [ dit7ya kashw2 ];
diff --git a/nixpkgs/pkgs/tools/text/diffsitter/default.nix b/nixpkgs/pkgs/tools/text/diffsitter/default.nix
index 8e0a6bbc3d15..e13ad3bff23b 100644
--- a/nixpkgs/pkgs/tools/text/diffsitter/default.nix
+++ b/nixpkgs/pkgs/tools/text/diffsitter/default.nix
@@ -73,7 +73,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/afnanenayet/diffsitter";
-    description = "A tree-sitter based AST difftool to get meaningful semantic diffs";
+    description = "Tree-sitter based AST difftool to get meaningful semantic diffs";
     license = licenses.mit;
     maintainers = with maintainers; [ bbigras ];
   };
diff --git a/nixpkgs/pkgs/tools/text/difftastic/Cargo.lock b/nixpkgs/pkgs/tools/text/difftastic/Cargo.lock
index 425b396c8b40..b9d4208b8e38 100644
--- a/nixpkgs/pkgs/tools/text/difftastic/Cargo.lock
+++ b/nixpkgs/pkgs/tools/text/difftastic/Cargo.lock
@@ -4,9 +4,9 @@ version = 3
 
 [[package]]
 name = "ahash"
-version = "0.8.9"
+version = "0.8.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d713b3834d76b85304d4d525563c1276e2e30dc97cc67bfb4585a4a29fc2c89f"
+checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
 dependencies = [
  "cfg-if",
  "once_cell",
@@ -16,9 +16,9 @@ dependencies = [
 
 [[package]]
 name = "aho-corasick"
-version = "1.1.2"
+version = "1.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
 dependencies = [
  "memchr",
 ]
@@ -31,11 +31,11 @@ checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5"
 
 [[package]]
 name = "assert_cmd"
-version = "2.0.5"
+version = "2.0.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d5c2ca00549910ec251e3bd15f87aeeb206c9456b9a77b43ff6c97c54042a472"
+checksum = "9834fcc22e0874394a010230586367d4a3e9f11b560f469262678547e1d2575e"
 dependencies = [
- "bstr 0.2.17",
+ "bstr",
  "doc-comment",
  "predicates",
  "predicates-core",
@@ -68,28 +68,18 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
 
 [[package]]
 name = "bitflags"
-version = "2.4.2"
+version = "2.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf"
+checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
 
 [[package]]
 name = "bstr"
-version = "0.2.17"
+version = "1.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223"
-dependencies = [
- "lazy_static",
- "memchr",
- "regex-automata 0.1.10",
-]
-
-[[package]]
-name = "bstr"
-version = "1.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6798148dccfbff0fae41c7574d2fa8f1ef3492fba0face179de5d8d447d67b05"
+checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706"
 dependencies = [
  "memchr",
+ "regex-automata 0.4.6",
  "serde",
 ]
 
@@ -100,19 +90,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
 
 [[package]]
-name = "bytecount"
-version = "0.6.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72feb31ffc86498dacdbd0fcebb56138e7177a8cc5cea4516031d15ae85a742e"
-
-[[package]]
 name = "cc"
-version = "1.0.83"
+version = "1.0.90"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
-dependencies = [
- "libc",
-]
+checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5"
 
 [[package]]
 name = "cfg-if"
@@ -129,7 +110,7 @@ dependencies = [
  "atty",
  "bitflags 1.3.2",
  "clap_lex",
- "indexmap",
+ "indexmap 1.9.3",
  "once_cell",
  "strsim",
  "termcolor",
@@ -148,18 +129,18 @@ dependencies = [
 
 [[package]]
 name = "const_format"
-version = "0.2.23"
+version = "0.2.32"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0936ffe6d0c8d6a51b3b0a73b2acbe925d786f346cf45bfddc8341d79fb7dc8a"
+checksum = "e3a214c7af3d04997541b18d432afaff4c455e79e2029079647e72fc2bd27673"
 dependencies = [
  "const_format_proc_macros",
 ]
 
 [[package]]
 name = "const_format_proc_macros"
-version = "0.2.22"
+version = "0.2.32"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ef196d5d972878a48da7decb7686eded338b4858fbabeed513d63a7c98b2b82d"
+checksum = "c7f6ff08fd20f4f299298a28e2dfa8a8ba1036e6cd2460ac1de7b425d76f2500"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -167,49 +148,29 @@ dependencies = [
 ]
 
 [[package]]
-name = "crossbeam-channel"
-version = "0.5.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200"
-dependencies = [
- "cfg-if",
- "crossbeam-utils",
-]
-
-[[package]]
 name = "crossbeam-deque"
-version = "0.8.1"
+version = "0.8.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e"
+checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d"
 dependencies = [
- "cfg-if",
  "crossbeam-epoch",
  "crossbeam-utils",
 ]
 
 [[package]]
 name = "crossbeam-epoch"
-version = "0.9.8"
+version = "0.9.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c"
+checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
 dependencies = [
- "autocfg",
- "cfg-if",
  "crossbeam-utils",
- "lazy_static",
- "memoffset",
- "scopeguard",
 ]
 
 [[package]]
 name = "crossbeam-utils"
-version = "0.8.8"
+version = "0.8.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38"
-dependencies = [
- "cfg-if",
- "lazy_static",
-]
+checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345"
 
 [[package]]
 name = "crossterm"
@@ -217,7 +178,7 @@ version = "0.27.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "crossterm_winapi",
  "libc",
  "mio",
@@ -237,20 +198,10 @@ dependencies = [
 ]
 
 [[package]]
-name = "ctor"
-version = "0.1.22"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f877be4f7c9f246b183111634f75baa039715e3f46ce860677d3b19a69fb229c"
-dependencies = [
- "quote",
- "syn 1.0.95",
-]
-
-[[package]]
 name = "diff"
-version = "0.1.12"
+version = "0.1.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0e25ea47919b1560c4e3b7fe0aaab9becf5b84a10325ddf7db0f0ba5e1026499"
+checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8"
 
 [[package]]
 name = "difflib"
@@ -260,7 +211,7 @@ checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8"
 
 [[package]]
 name = "difftastic"
-version = "0.56.1"
+version = "0.58.0"
 dependencies = [
  "assert_cmd",
  "bumpalo",
@@ -270,6 +221,7 @@ dependencies = [
  "crossterm",
  "glob",
  "hashbrown 0.14.3",
+ "home",
  "humansize",
  "ignore",
  "itertools 0.11.0",
@@ -289,6 +241,7 @@ dependencies = [
  "rustc-hash",
  "serde",
  "serde_json",
+ "smallvec",
  "strsim",
  "strum",
  "tree-sitter",
@@ -307,15 +260,15 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10"
 
 [[package]]
 name = "either"
-version = "1.6.1"
+version = "1.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
+checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a"
 
 [[package]]
 name = "env_logger"
-version = "0.10.0"
+version = "0.10.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0"
+checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580"
 dependencies = [
  "humantime",
  "is-terminal",
@@ -325,20 +278,26 @@ dependencies = [
 ]
 
 [[package]]
+name = "equivalent"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+
+[[package]]
 name = "errno"
-version = "0.3.5"
+version = "0.3.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860"
+checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245"
 dependencies = [
  "libc",
- "windows-sys",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
 name = "fixedbitset"
-version = "0.4.1"
+version = "0.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "279fb028e20b3c4c320317955b77c5e0c9701f05a1d309905d6fc702cdc5053e"
+checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
 
 [[package]]
 name = "float-cmp"
@@ -363,22 +322,22 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
 
 [[package]]
 name = "globset"
-version = "0.4.13"
+version = "0.4.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "759c97c1e17c55525b57192c06a267cda0ac5210b222d6b82189a2338fa1c13d"
+checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1"
 dependencies = [
  "aho-corasick",
- "bstr 1.6.0",
- "fnv",
+ "bstr",
  "log",
- "regex",
+ "regex-automata 0.4.6",
+ "regex-syntax 0.8.2",
 ]
 
 [[package]]
 name = "hashbrown"
-version = "0.11.2"
+version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e"
+checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
 
 [[package]]
 name = "hashbrown"
@@ -407,9 +366,18 @@ dependencies = [
 
 [[package]]
 name = "hermit-abi"
-version = "0.3.3"
+version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7"
+checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
+
+[[package]]
+name = "home"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb"
+dependencies = [
+ "windows-sys 0.48.0",
+]
 
 [[package]]
 name = "humansize"
@@ -446,12 +414,22 @@ dependencies = [
 
 [[package]]
 name = "indexmap"
-version = "1.7.0"
+version = "1.9.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5"
+checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
 dependencies = [
  "autocfg",
- "hashbrown 0.11.2",
+ "hashbrown 0.12.3",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
+dependencies = [
+ "equivalent",
+ "hashbrown 0.14.3",
 ]
 
 [[package]]
@@ -460,28 +438,27 @@ version = "1.0.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2"
 dependencies = [
- "hermit-abi 0.3.3",
+ "hermit-abi 0.3.9",
  "libc",
- "windows-sys",
+ "windows-sys 0.48.0",
 ]
 
 [[package]]
 name = "is-terminal"
-version = "0.4.7"
+version = "0.4.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f"
+checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b"
 dependencies = [
- "hermit-abi 0.3.3",
- "io-lifetimes",
- "rustix",
- "windows-sys",
+ "hermit-abi 0.3.9",
+ "libc",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
 name = "itertools"
-version = "0.10.3"
+version = "0.10.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3"
+checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
 dependencies = [
  "either",
 ]
@@ -497,9 +474,9 @@ dependencies = [
 
 [[package]]
 name = "itoa"
-version = "1.0.9"
+version = "1.0.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
+checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
 
 [[package]]
 name = "lazy_static"
@@ -509,15 +486,15 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
 
 [[package]]
 name = "libc"
-version = "0.2.149"
+version = "0.2.153"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b"
+checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
 
 [[package]]
 name = "libm"
-version = "0.2.7"
+version = "0.2.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4"
+checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058"
 
 [[package]]
 name = "libmimalloc-sys"
@@ -552,12 +529,9 @@ dependencies = [
 
 [[package]]
 name = "log"
-version = "0.4.17"
+version = "0.4.21"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
-dependencies = [
- "cfg-if",
-]
+checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
 
 [[package]]
 name = "memchr"
@@ -566,15 +540,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
 
 [[package]]
-name = "memoffset"
-version = "0.6.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
-dependencies = [
- "autocfg",
-]
-
-[[package]]
 name = "mimalloc"
 version = "0.1.28"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -591,21 +556,21 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
 
 [[package]]
 name = "mio"
-version = "0.8.10"
+version = "0.8.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09"
+checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
 dependencies = [
  "libc",
  "log",
  "wasi",
- "windows-sys",
+ "windows-sys 0.48.0",
 ]
 
 [[package]]
 name = "nom"
-version = "7.1.1"
+version = "7.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36"
+checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
 dependencies = [
  "memchr",
  "minimal-lexical",
@@ -619,24 +584,14 @@ checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be"
 
 [[package]]
 name = "num-traits"
-version = "0.2.15"
+version = "0.2.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
 dependencies = [
  "autocfg",
 ]
 
 [[package]]
-name = "num_cpus"
-version = "1.13.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1"
-dependencies = [
- "hermit-abi 0.1.19",
- "libc",
-]
-
-[[package]]
 name = "once_cell"
 version = "1.19.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -644,18 +599,9 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
 
 [[package]]
 name = "os_str_bytes"
-version = "6.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "029d8d0b2f198229de29dca79676f2738ff952edf3fde542eb8bf94d8c21b435"
-
-[[package]]
-name = "output_vt100"
-version = "0.1.3"
+version = "6.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "628223faebab4e3e40667ee0b2336d34a5b960ff60ea743ddfdbcf7770bcfb66"
-dependencies = [
- "winapi",
-]
+checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1"
 
 [[package]]
 name = "owo-colors"
@@ -683,17 +629,17 @@ dependencies = [
  "libc",
  "redox_syscall",
  "smallvec",
- "windows-targets",
+ "windows-targets 0.48.5",
 ]
 
 [[package]]
 name = "petgraph"
-version = "0.6.1"
+version = "0.6.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "51b305cc4569dd4e8765bab46261f67ef5d4d11a4b6e745100ee5dad8948b46c"
+checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9"
 dependencies = [
  "fixedbitset",
- "indexmap",
+ "indexmap 2.2.6",
 ]
 
 [[package]]
@@ -704,7 +650,7 @@ checksum = "a5aab5be6e4732b473071984b3164dbbfb7a3674d30ea5ff44410b6bcd960c3c"
 dependencies = [
  "difflib",
  "float-cmp",
- "itertools 0.10.3",
+ "itertools 0.10.5",
  "normalize-line-endings",
  "predicates-core",
  "regex",
@@ -712,15 +658,15 @@ dependencies = [
 
 [[package]]
 name = "predicates-core"
-version = "1.0.3"
+version = "1.0.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da1c2388b1513e1b605fcec39a95e0a9e8ef088f71443ef37099fa9ae6673fcb"
+checksum = "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174"
 
 [[package]]
 name = "predicates-tree"
-version = "1.0.5"
+version = "1.0.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4d86de6de25020a36c6d3643a86d9a6a9f552107c0559c60ea03551b5e16c032"
+checksum = "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf"
 dependencies = [
  "predicates-core",
  "termtree",
@@ -728,13 +674,11 @@ dependencies = [
 
 [[package]]
 name = "pretty_assertions"
-version = "1.3.0"
+version = "1.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a25e9bcb20aa780fd0bb16b72403a9064d6b3f22f026946029acb941a50af755"
+checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66"
 dependencies = [
- "ctor",
  "diff",
- "output_vt100",
  "yansi",
 ]
 
@@ -750,9 +694,9 @@ dependencies = [
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.78"
+version = "1.0.79"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae"
+checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e"
 dependencies = [
  "unicode-ident",
 ]
@@ -774,9 +718,9 @@ checksum = "59ffec9df464013295b499298811e6a3de31bf8128092135826517db12dee601"
 
 [[package]]
 name = "rayon"
-version = "1.7.0"
+version = "1.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
+checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
 dependencies = [
  "either",
  "rayon-core",
@@ -784,14 +728,12 @@ dependencies = [
 
 [[package]]
 name = "rayon-core"
-version = "1.11.0"
+version = "1.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
+checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
 dependencies = [
- "crossbeam-channel",
  "crossbeam-deque",
  "crossbeam-utils",
- "num_cpus",
 ]
 
 [[package]]
@@ -812,24 +754,29 @@ dependencies = [
  "aho-corasick",
  "memchr",
  "regex-automata 0.3.9",
- "regex-syntax",
+ "regex-syntax 0.7.5",
 ]
 
 [[package]]
 name = "regex-automata"
-version = "0.1.10"
+version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
+checksum = "59b23e92ee4318893fa3fe3e6fb365258efbfe6ac6ab30f090cdcbb7aa37efa9"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax 0.7.5",
+]
 
 [[package]]
 name = "regex-automata"
-version = "0.3.9"
+version = "0.4.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "59b23e92ee4318893fa3fe3e6fb365258efbfe6ac6ab30f090cdcbb7aa37efa9"
+checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea"
 dependencies = [
  "aho-corasick",
  "memchr",
- "regex-syntax",
+ "regex-syntax 0.8.2",
 ]
 
 [[package]]
@@ -839,6 +786,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da"
 
 [[package]]
+name = "regex-syntax"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
+
+[[package]]
 name = "rustc-hash"
 version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -855,20 +808,20 @@ dependencies = [
  "io-lifetimes",
  "libc",
  "linux-raw-sys",
- "windows-sys",
+ "windows-sys 0.48.0",
 ]
 
 [[package]]
 name = "rustversion"
-version = "1.0.12"
+version = "1.0.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06"
+checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4"
 
 [[package]]
 name = "ryu"
-version = "1.0.15"
+version = "1.0.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
+checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1"
 
 [[package]]
 name = "same-file"
@@ -881,35 +834,35 @@ dependencies = [
 
 [[package]]
 name = "scopeguard"
-version = "1.1.0"
+version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
 
 [[package]]
 name = "serde"
-version = "1.0.176"
+version = "1.0.197"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76dc28c9523c5d70816e393136b86d48909cfb27cecaa902d338c19ed47164dc"
+checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2"
 dependencies = [
  "serde_derive",
 ]
 
 [[package]]
 name = "serde_derive"
-version = "1.0.176"
+version = "1.0.197"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4e7b8c5dc823e3b90651ff1d3808419cd14e5ad76de04feaf37da114e7a306f"
+checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.49",
+ "syn",
 ]
 
 [[package]]
 name = "serde_json"
-version = "1.0.104"
+version = "1.0.114"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c"
+checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0"
 dependencies = [
  "itoa",
  "ryu",
@@ -948,9 +901,9 @@ dependencies = [
 
 [[package]]
 name = "smallvec"
-version = "1.13.1"
+version = "1.13.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
 
 [[package]]
 name = "strsim"
@@ -969,33 +922,22 @@ dependencies = [
 
 [[package]]
 name = "strum_macros"
-version = "0.25.1"
+version = "0.25.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6069ca09d878a33f883cc06aaa9718ede171841d3832450354410b718b097232"
+checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0"
 dependencies = [
  "heck",
  "proc-macro2",
  "quote",
  "rustversion",
- "syn 2.0.49",
-]
-
-[[package]]
-name = "syn"
-version = "1.0.95"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fbaf6116ab8924f39d52792136fb74fd60a80194cf1b1c6ffa6453eef1c3f942"
-dependencies = [
- "proc-macro2",
- "quote",
- "unicode-ident",
+ "syn",
 ]
 
 [[package]]
 name = "syn"
-version = "2.0.49"
+version = "2.0.55"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "915aea9e586f80826ee59f8453c1101f9d1c4b3964cd2460185ee8e299ada496"
+checksum = "002a1b3dbf967edfafc32655d0f377ab0bb7b994aa1d32c8cc7e9b8bf3ebb8f0"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1004,9 +946,9 @@ dependencies = [
 
 [[package]]
 name = "termcolor"
-version = "1.1.3"
+version = "1.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
+checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
 dependencies = [
  "winapi-util",
 ]
@@ -1018,14 +960,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8e6bf6f19e9f8ed8d4048dc22981458ebcf406d67e94cd422e5ecd73d63b3237"
 dependencies = [
  "rustix",
- "windows-sys",
+ "windows-sys 0.48.0",
 ]
 
 [[package]]
 name = "termtree"
-version = "0.2.4"
+version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "507e9898683b6c43a9aa55b64259b721b52ba226e0f3779137e50ad114a4c90b"
+checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76"
 
 [[package]]
 name = "textwrap"
@@ -1038,9 +980,9 @@ dependencies = [
 
 [[package]]
 name = "thread_local"
-version = "1.1.7"
+version = "1.1.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152"
+checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
 dependencies = [
  "cfg-if",
  "once_cell",
@@ -1058,12 +1000,13 @@ dependencies = [
 
 [[package]]
 name = "tree_magic_mini"
-version = "3.0.2"
-source = "git+https://github.com/Wilfred/tree_magic?branch=fix-panic-for-empty-strings#13dd6dda15c7062bd8f7dd5bc9bb5b16ce9ee613"
+version = "3.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77ee137597cdb361b55a4746983e4ac1b35ab6024396a419944ad473bb915265"
 dependencies = [
- "bytecount",
  "fnv",
- "lazy_static",
+ "home",
+ "memchr",
  "nom",
  "once_cell",
  "petgraph",
@@ -1077,21 +1020,21 @@ checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a"
 
 [[package]]
 name = "unicode-ident"
-version = "1.0.0"
+version = "1.0.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d22af068fba1eb5edcb4aea19d382b2a3deb4c8f9d475c589b6ada9e0fd493ee"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
 
 [[package]]
 name = "unicode-width"
-version = "0.1.9"
+version = "0.1.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
+checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
 
 [[package]]
 name = "unicode-xid"
-version = "0.2.3"
+version = "0.2.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04"
+checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
 
 [[package]]
 name = "version_check"
@@ -1110,9 +1053,9 @@ dependencies = [
 
 [[package]]
 name = "walkdir"
-version = "2.3.3"
+version = "2.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
+checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
 dependencies = [
  "same-file",
  "winapi-util",
@@ -1142,9 +1085,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
 
 [[package]]
 name = "winapi-util"
-version = "0.1.5"
+version = "0.1.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
 dependencies = [
  "winapi",
 ]
@@ -1161,7 +1104,16 @@ version = "0.48.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
 dependencies = [
- "windows-targets",
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets 0.52.4",
 ]
 
 [[package]]
@@ -1170,13 +1122,28 @@ version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
 dependencies = [
- "windows_aarch64_gnullvm",
- "windows_aarch64_msvc",
- "windows_i686_gnu",
- "windows_i686_msvc",
- "windows_x86_64_gnu",
- "windows_x86_64_gnullvm",
- "windows_x86_64_msvc",
+ "windows_aarch64_gnullvm 0.48.5",
+ "windows_aarch64_msvc 0.48.5",
+ "windows_i686_gnu 0.48.5",
+ "windows_i686_msvc 0.48.5",
+ "windows_x86_64_gnu 0.48.5",
+ "windows_x86_64_gnullvm 0.48.5",
+ "windows_x86_64_msvc 0.48.5",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b"
+dependencies = [
+ "windows_aarch64_gnullvm 0.52.4",
+ "windows_aarch64_msvc 0.52.4",
+ "windows_i686_gnu 0.52.4",
+ "windows_i686_msvc 0.52.4",
+ "windows_x86_64_gnu 0.52.4",
+ "windows_x86_64_gnullvm 0.52.4",
+ "windows_x86_64_msvc 0.52.4",
 ]
 
 [[package]]
@@ -1186,42 +1153,84 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
 
 [[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9"
+
+[[package]]
 name = "windows_aarch64_msvc"
 version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
 
 [[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675"
+
+[[package]]
 name = "windows_i686_gnu"
 version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
 
 [[package]]
+name = "windows_i686_gnu"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3"
+
+[[package]]
 name = "windows_i686_msvc"
 version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
 
 [[package]]
+name = "windows_i686_msvc"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02"
+
+[[package]]
 name = "windows_x86_64_gnu"
 version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
 
 [[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03"
+
+[[package]]
 name = "windows_x86_64_gnullvm"
 version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
 
 [[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177"
+
+[[package]]
 name = "windows_x86_64_msvc"
 version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
 
 [[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8"
+
+[[package]]
 name = "wu-diff"
 version = "0.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1250,5 +1259,5 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.49",
+ "syn",
 ]
diff --git a/nixpkgs/pkgs/tools/text/difftastic/default.nix b/nixpkgs/pkgs/tools/text/difftastic/default.nix
index 01f62462fdd8..5b14aa322582 100644
--- a/nixpkgs/pkgs/tools/text/difftastic/default.nix
+++ b/nixpkgs/pkgs/tools/text/difftastic/default.nix
@@ -4,34 +4,29 @@
 , fetchFromGitHub
 , testers
 , difftastic
-, stdenv
 }:
 
 let
   mimallocPatch = fetchpatch {
-    name = "fix-build-on-older-macos-releases.patch";
+    # fixes compilation error on x86_64-darwin
+    # remove after update to libmimalloc-sys >= 0.1.29
+    # (fixed in mimalloc >= 1.7.6 which is included with libmimalloc-sys >= 0.1.29)
     url = "https://github.com/microsoft/mimalloc/commit/40e0507a5959ee218f308d33aec212c3ebeef3bb.patch";
-    sha256 = "sha256-DK0LqsVXXiEVQSQCxZ5jyZMg0UJJx9a/WxzCroYSHZc=";
+    hash = "sha256-DK0LqsVXXiEVQSQCxZ5jyZMg0UJJx9a/WxzCroYSHZc=";
   };
 in
-
 rustPlatform.buildRustPackage rec {
   pname = "difftastic";
-  version = "0.56.1";
+  version = "0.58.0";
 
   src = fetchFromGitHub {
     owner = "wilfred";
     repo = pname;
     rev = version;
-    hash = "sha256-XQzsLowHtgXIKfUWx1Sj1D0F8scb7fNp33Cwfh5XvJI=";
+    hash = "sha256-PTc8/NhWsLcKJj+9ebV/YaWEmyOWKJCYUjmVbr4z2SY=";
   };
 
-  cargoLock = {
-    lockFile = ./Cargo.lock;
-    outputHashes = {
-      "tree_magic_mini-3.0.2" = "sha256-iIX/DeDbquObDPOx/pctVFN4R8GSkD9bPNkNgOLdUJs=";
-    };
-  };
+  cargoLock.lockFile = ./Cargo.lock;
 
   # skip flaky tests
   checkFlags = [
@@ -46,11 +41,11 @@ rustPlatform.buildRustPackage rec {
   passthru.tests.version = testers.testVersion { package = difftastic; };
 
   meta = with lib; {
-    description = "A syntax-aware diff";
+    description = "Syntax-aware diff";
     homepage = "https://github.com/Wilfred/difftastic";
     changelog = "https://github.com/Wilfred/difftastic/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ethancedwards8 figsoda ];
+    maintainers = with maintainers; [ ethancedwards8 figsoda matthiasbeyer ];
     mainProgram = "difft";
   };
 }
diff --git a/nixpkgs/pkgs/tools/text/diffutils/default.nix b/nixpkgs/pkgs/tools/text/diffutils/default.nix
index 8c4a160d4b1e..6c1bc8bf01f1 100644
--- a/nixpkgs/pkgs/tools/text/diffutils/default.nix
+++ b/nixpkgs/pkgs/tools/text/diffutils/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, xz, coreutils ? null }:
+{ lib, stdenv, fetchurl, updateAutotoolsGnuConfigScriptsHook, xz, coreutils ? null }:
 
 # Note: this package is used for bootstrapping fetchurl, and thus
 # cannot use fetchpatch! All mutable patches (generated by GitHub or
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
 
   outputs = [ "out" "info" ];
 
-  nativeBuildInputs = [ (lib.getBin xz) ];
+  nativeBuildInputs = [ updateAutotoolsGnuConfigScriptsHook (lib.getBin xz) ];
   /* If no explicit coreutils is given, use the one from stdenv. */
   buildInputs = [ coreutils ];
 
diff --git a/nixpkgs/pkgs/tools/text/epub2txt2/default.nix b/nixpkgs/pkgs/tools/text/epub2txt2/default.nix
index 80a3ebde7454..8ccc01d57b5b 100644
--- a/nixpkgs/pkgs/tools/text/epub2txt2/default.nix
+++ b/nixpkgs/pkgs/tools/text/epub2txt2/default.nix
@@ -2,19 +2,19 @@
 
 stdenv.mkDerivation rec {
   pname = "epub2txt2";
-  version = "2.06";
+  version = "2.07";
 
   src = fetchFromGitHub {
     owner = "kevinboone";
     repo = pname;
     rev = "refs/tags/v${version}";
-    sha256 = "sha256-zzcig5XNh9TqUHginsfoC47WrKavqi6k6ezir+OOMJk=";
+    sha256 = "sha256-/P81ZXhB0wyRx2bb/CO7+kTTNspYKoGUpBGLb8Yfb5I=";
   };
 
   makeFlags = [ "CC:=$(CC)" "PREFIX:=$(out)" ];
 
   meta = {
-    description = "A simple command-line utility for Linux, for extracting text from EPUB documents";
+    description = "Simple command-line utility for Linux, for extracting text from EPUB documents";
     homepage = "https://github.com/kevinboone/epub2txt2";
     license = lib.licenses.gpl3Only;
     platforms = lib.platforms.unix;
diff --git a/nixpkgs/pkgs/tools/text/fanficfare/default.nix b/nixpkgs/pkgs/tools/text/fanficfare/default.nix
index f4cf0f68b45b..9aee49e391d9 100644
--- a/nixpkgs/pkgs/tools/text/fanficfare/default.nix
+++ b/nixpkgs/pkgs/tools/text/fanficfare/default.nix
@@ -1,13 +1,13 @@
 { lib, python3Packages, fetchPypi }:
 
 python3Packages.buildPythonApplication rec {
-  pname = "FanFicFare";
-  version = "4.33.0";
+  pname = "fanficfare";
+  version = "4.35.0";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-1s3YeI4deej+lkDXtFzfBOtATY+jx+KB7JAnLUDZK8w=";
+    hash = "sha256-hPBURlsrr/7c26YFZo5UT7PTs8s+D8BXxjU/uposHjQ=";
   };
 
   nativeBuildInputs = with python3Packages; [
diff --git a/nixpkgs/pkgs/tools/text/fastmod/default.nix b/nixpkgs/pkgs/tools/text/fastmod/default.nix
index 53d68a7723a6..e7b2f3b107c9 100644
--- a/nixpkgs/pkgs/tools/text/fastmod/default.nix
+++ b/nixpkgs/pkgs/tools/text/fastmod/default.nix
@@ -21,7 +21,7 @@ rustPlatform.buildRustPackage rec {
   buildInputs = lib.optionals stdenv.isDarwin [ libiconv Security ];
 
   meta = with lib; {
-    description = "A utility that makes sweeping changes to large, shared code bases";
+    description = "Utility that makes sweeping changes to large, shared code bases";
     mainProgram = "fastmod";
     homepage = "https://github.com/facebookincubator/fastmod";
     license = licenses.asl20;
diff --git a/nixpkgs/pkgs/tools/text/frawk/default.nix b/nixpkgs/pkgs/tools/text/frawk/default.nix
index 46f73ebd0b9c..2b9f2e0beaa8 100644
--- a/nixpkgs/pkgs/tools/text/frawk/default.nix
+++ b/nixpkgs/pkgs/tools/text/frawk/default.nix
@@ -35,7 +35,7 @@ rustPlatform.buildRustPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A small programming language for writing short programs processing textual data";
+    description = "Small programming language for writing short programs processing textual data";
     mainProgram = "frawk";
     homepage = "https://github.com/ezrosent/frawk";
     changelog = "https://github.com/ezrosent/frawk/releases/tag/v${version}";
diff --git a/nixpkgs/pkgs/tools/text/frogmouth/default.nix b/nixpkgs/pkgs/tools/text/frogmouth/default.nix
index e7c9916c1339..b2551b6387d6 100644
--- a/nixpkgs/pkgs/tools/text/frogmouth/default.nix
+++ b/nixpkgs/pkgs/tools/text/frogmouth/default.nix
@@ -35,7 +35,7 @@ python3.pkgs.buildPythonApplication rec {
   pythonImportsCheck = [ "frogmouth" ];
 
   meta = with lib; {
-    description = "A Markdown browser for your terminal";
+    description = "Markdown browser for your terminal";
     mainProgram = "frogmouth";
     homepage = "https://github.com/Textualize/frogmouth";
     changelog = "https://github.com/Textualize/frogmouth/blob/${src.rev}/ChangeLog.md";
diff --git a/nixpkgs/pkgs/tools/text/gawk/default.nix b/nixpkgs/pkgs/tools/text/gawk/default.nix
index d85880e82e15..8857fa29d1c6 100644
--- a/nixpkgs/pkgs/tools/text/gawk/default.nix
+++ b/nixpkgs/pkgs/tools/text/gawk/default.nix
@@ -1,4 +1,5 @@
 { lib, stdenv, fetchurl
+, runtimeShellPackage
 # TODO: links -lsigsegv but loses the reference for some reason
 , withSigsegv ? (false && stdenv.hostPlatform.system != "x86_64-cygwin"), libsigsegv
 , interactive ? false, readline
@@ -39,7 +40,9 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ autoreconfHook ]
     ++ lib.optional (doCheck && stdenv.isLinux) glibcLocales;
 
-  buildInputs = lib.optional withSigsegv libsigsegv
+  buildInputs = [
+    runtimeShellPackage
+  ] ++ lib.optional withSigsegv libsigsegv
     ++ lib.optional interactive readline
     ++ lib.optional stdenv.isDarwin locale;
 
diff --git a/nixpkgs/pkgs/tools/text/glogg/default.nix b/nixpkgs/pkgs/tools/text/glogg/default.nix
index a83baf4aa761..7a6562aab143 100644
--- a/nixpkgs/pkgs/tools/text/glogg/default.nix
+++ b/nixpkgs/pkgs/tools/text/glogg/default.nix
@@ -28,7 +28,7 @@ mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "The fast, smart log explorer";
+    description = "Fast, smart log explorer";
     mainProgram = "glogg";
     longDescription = ''
       A multi-platform GUI application to browse and search through long or complex log files. It is designed with programmers and system administrators in mind. glogg can be seen as a graphical, interactive combination of grep and less.
diff --git a/nixpkgs/pkgs/tools/text/gnugrep/default.nix b/nixpkgs/pkgs/tools/text/gnugrep/default.nix
index 5df81274c6a5..7298fe881bea 100644
--- a/nixpkgs/pkgs/tools/text/gnugrep/default.nix
+++ b/nixpkgs/pkgs/tools/text/gnugrep/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, glibcLocales, fetchurl, pcre2, libiconv, perl }:
+{ lib, stdenv, updateAutotoolsGnuConfigScriptsHook, glibcLocales, fetchurl, pcre2, libiconv, perl, runtimeShellPackage }:
 
 # Note: this package is used for bootstrapping fetchurl, and thus
 # cannot use fetchpatch! All mutable patches (generated by GitHub or
@@ -26,7 +26,8 @@ stdenv.mkDerivation {
   nativeCheckInputs = [ perl glibcLocales ];
   outputs = [ "out" "info" ]; # the man pages are rather small
 
-  buildInputs = [ pcre2 libiconv ];
+  nativeBuildInputs = [ updateAutotoolsGnuConfigScriptsHook ];
+  buildInputs = [ pcre2 libiconv runtimeShellPackage ];
 
   # cygwin: FAIL: multibyte-white-space
   # freebsd: FAIL mb-non-UTF8-performance
diff --git a/nixpkgs/pkgs/tools/text/gnused/default.nix b/nixpkgs/pkgs/tools/text/gnused/default.nix
index f493e4f358d6..bc736f418725 100644
--- a/nixpkgs/pkgs/tools/text/gnused/default.nix
+++ b/nixpkgs/pkgs/tools/text/gnused/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, perl }:
+{ lib, stdenv, fetchurl, updateAutotoolsGnuConfigScriptsHook, perl }:
 
 stdenv.mkDerivation rec {
   pname = "gnused";
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
 
   outputs = [ "out" "info" ];
 
-  nativeBuildInputs = [ perl ];
+  nativeBuildInputs = [ updateAutotoolsGnuConfigScriptsHook perl ];
   preConfigure = "patchShebangs ./build-aux/help2man";
 
   # Prevents attempts of running 'help2man' on cross-built binaries.
diff --git a/nixpkgs/pkgs/tools/text/goawk/default.nix b/nixpkgs/pkgs/tools/text/goawk/default.nix
index 4d84d133775e..70c9fb8d5531 100644
--- a/nixpkgs/pkgs/tools/text/goawk/default.nix
+++ b/nixpkgs/pkgs/tools/text/goawk/default.nix
@@ -34,7 +34,7 @@ buildGoModule rec {
   doCheck = (stdenv.system != "aarch64-darwin");
 
   meta = with lib; {
-    description = "A POSIX-compliant AWK interpreter written in Go";
+    description = "POSIX-compliant AWK interpreter written in Go";
     homepage = "https://benhoyt.com/writings/goawk/";
     license = licenses.mit;
     mainProgram = "goawk";
diff --git a/nixpkgs/pkgs/tools/text/grin/default.nix b/nixpkgs/pkgs/tools/text/grin/default.nix
index 3e3763d9ef71..5217451a984b 100644
--- a/nixpkgs/pkgs/tools/text/grin/default.nix
+++ b/nixpkgs/pkgs/tools/text/grin/default.nix
@@ -27,7 +27,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = {
     homepage = "https://github.com/matthew-brett/grin";
-    description = "A grep program configured the way I like it";
+    description = "Grep program configured the way I like it";
     platforms = lib.platforms.all;
     maintainers = [ lib.maintainers.sjagoe ];
   };
diff --git a/nixpkgs/pkgs/tools/text/groff/default.nix b/nixpkgs/pkgs/tools/text/groff/default.nix
index df06292c4f3e..6e10144bb587 100644
--- a/nixpkgs/pkgs/tools/text/groff/default.nix
+++ b/nixpkgs/pkgs/tools/text/groff/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, fetchpatch, perl
+{ lib, stdenv, fetchurl, perl
 , enableGhostscript ? false
 , ghostscript, gawk, libX11, libXaw, libXt, libXmu # for postscript and html output
 , enableHtml ? false, psutils, netpbm # for html output
diff --git a/nixpkgs/pkgs/tools/text/gucci/default.nix b/nixpkgs/pkgs/tools/text/gucci/default.nix
index 2f448450661b..c4e0ef81503d 100644
--- a/nixpkgs/pkgs/tools/text/gucci/default.nix
+++ b/nixpkgs/pkgs/tools/text/gucci/default.nix
@@ -29,7 +29,7 @@ buildGoModule rec {
   ];
 
   meta = with lib; {
-    description = "A simple CLI templating tool written in golang";
+    description = "Simple CLI templating tool written in golang";
     mainProgram = "gucci";
     homepage = "https://github.com/noqcks/gucci";
     license = licenses.mit;
diff --git a/nixpkgs/pkgs/tools/text/hck/default.nix b/nixpkgs/pkgs/tools/text/hck/default.nix
index fe8aa63c0cff..1a8238059e4f 100644
--- a/nixpkgs/pkgs/tools/text/hck/default.nix
+++ b/nixpkgs/pkgs/tools/text/hck/default.nix
@@ -20,7 +20,7 @@ rustPlatform.buildRustPackage rec {
   nativeBuildInputs = [ cmake ];
 
   meta = with lib; {
-    description = "A close to drop in replacement for cut that can use a regex delimiter instead of a fixed string";
+    description = "Close to drop in replacement for cut that can use a regex delimiter instead of a fixed string";
     homepage = "https://github.com/sstadick/hck";
     changelog = "https://github.com/sstadick/hck/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ mit /* or */ unlicense ];
diff --git a/nixpkgs/pkgs/tools/text/hcledit/default.nix b/nixpkgs/pkgs/tools/text/hcledit/default.nix
index 1d0d4fd6464a..86c1e226fd0e 100644
--- a/nixpkgs/pkgs/tools/text/hcledit/default.nix
+++ b/nixpkgs/pkgs/tools/text/hcledit/default.nix
@@ -17,7 +17,7 @@ buildGoModule rec {
   vendorHash = "sha256-huDM8kPA6vQcoJTxiWzVFZKHrTKw1ip32hMZJYZM0og=";
 
   meta = with lib; {
-    description = "A command line editor for HCL";
+    description = "Command line editor for HCL";
     mainProgram = "hcledit";
     homepage = "https://github.com/minamijoyo/hcledit";
     license = licenses.mit;
diff --git a/nixpkgs/pkgs/tools/text/highlight/default.nix b/nixpkgs/pkgs/tools/text/highlight/default.nix
index d26d4fcc8423..312c84921499 100644
--- a/nixpkgs/pkgs/tools/text/highlight/default.nix
+++ b/nixpkgs/pkgs/tools/text/highlight/default.nix
@@ -3,13 +3,13 @@
 let
   self = stdenv.mkDerivation rec {
     pname = "highlight";
-    version = "4.11";
+    version = "4.12";
 
     src = fetchFromGitLab {
       owner = "saalen";
       repo = "highlight";
       rev = "v${version}";
-      sha256 = "sha256-8QWcpSYkzw62XFyIqisM2x1AOqzVUPUYgs5bPA4liSw=";
+      sha256 = "sha256-TFMU9owxBGrrbatk7Jj9xP8OEJNjXnjbwnW6Xq34awI=";
     };
 
     enableParallelBuilding = true;
diff --git a/nixpkgs/pkgs/tools/text/html-tidy/default.nix b/nixpkgs/pkgs/tools/text/html-tidy/default.nix
index 1f9c04b7c9db..16e6035cef89 100644
--- a/nixpkgs/pkgs/tools/text/html-tidy/default.nix
+++ b/nixpkgs/pkgs/tools/text/html-tidy/default.nix
@@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
   # https://github.com/htacg/tidy-html5/issues/326#issuecomment-160322107
 
   meta = with lib; {
-    description = "A HTML validator and `tidier'";
+    description = "HTML validator and `tidier'";
     longDescription = ''
       HTML Tidy is a command-line tool and C library that can be
       used to validate and fix HTML data.
diff --git a/nixpkgs/pkgs/tools/text/html2text/default.nix b/nixpkgs/pkgs/tools/text/html2text/default.nix
index 4bcf02b5c848..247ee8e814df 100644
--- a/nixpkgs/pkgs/tools/text/html2text/default.nix
+++ b/nixpkgs/pkgs/tools/text/html2text/default.nix
@@ -1,35 +1,24 @@
-{ lib, stdenv, fetchurl }:
+{ lib, stdenv, fetchFromGitLab, autoreconfHook, libiconv }:
 
 stdenv.mkDerivation rec {
   pname = "html2text";
-  version = "1.3.2a";
+  version = "2.2.3";
 
-  src = fetchurl {
-    url = "http://www.mbayer.de/html2text/downloads/html2text-${version}.tar.gz";
-    sha256 = "000b39d5d910b867ff7e087177b470a1e26e2819920dcffd5991c33f6d480392";
+  src = fetchFromGitLab {
+    owner = "grobian";
+    repo = "html2text";
+    rev = "v${version}";
+    hash = "sha256-7Ch51nJ5BeRqs4PEIPnjCGk+Nm2ydgJQCtkcpihXun8=";
   };
 
-  preConfigure = ''
-    substituteInPlace configure \
-        --replace /bin/echo echo \
-        --replace CXX=unknown ':'
-  '' + lib.optionalString stdenv.cc.isClang ''
-    substituteInPlace HTMLParser.C \
-      --replace "register " ""
-  '';
+  nativeBuildInputs = [ autoreconfHook ];
 
-  # the --prefix has no effect
-  installPhase = ''
-    mkdir -p $out/bin $out/man/man{1,5}
-    cp html2text $out/bin
-    cp html2text.1.gz $out/man/man1
-    cp html2textrc.5.gz $out/man/man5
-  '';
+  buildInputs = lib.optional stdenv.isDarwin libiconv;
 
   meta = {
     description = "Convert HTML to plain text";
     mainProgram = "html2text";
-    homepage = "http://www.mbayer.de/html2text/";
+    homepage = "https://gitlab.com/grobian/html2text";
     license = lib.licenses.gpl2Plus;
     platforms = lib.platforms.unix;
     maintainers = [ lib.maintainers.eikek ];
diff --git a/nixpkgs/pkgs/tools/text/ispell/default.nix b/nixpkgs/pkgs/tools/text/ispell/default.nix
index 2f7b25d5fa25..3dea94d0912b 100644
--- a/nixpkgs/pkgs/tools/text/ispell/default.nix
+++ b/nixpkgs/pkgs/tools/text/ispell/default.nix
@@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "An interactive spell-checking program for Unix";
+    description = "Interactive spell-checking program for Unix";
     homepage = "https://www.cs.hmc.edu/~geoff/ispell.html";
     license = licenses.free;
     platforms = platforms.unix;
diff --git a/nixpkgs/pkgs/tools/text/jen/default.nix b/nixpkgs/pkgs/tools/text/jen/default.nix
index 0ed0548c0d50..cfd8298c3725 100644
--- a/nixpkgs/pkgs/tools/text/jen/default.nix
+++ b/nixpkgs/pkgs/tools/text/jen/default.nix
@@ -21,7 +21,7 @@ rustPlatform.buildRustPackage rec {
   ];
 
   meta = with lib; {
-    description = "A simple CLI generation tool for creating large datasets";
+    description = "Simple CLI generation tool for creating large datasets";
     mainProgram = "jen";
     homepage = "https://github.com/whitfin/jen";
     license = licenses.mit;
diff --git a/nixpkgs/pkgs/tools/text/jotdown/default.nix b/nixpkgs/pkgs/tools/text/jotdown/default.nix
index 769b5e296887..c3b61b4f739b 100644
--- a/nixpkgs/pkgs/tools/text/jotdown/default.nix
+++ b/nixpkgs/pkgs/tools/text/jotdown/default.nix
@@ -17,7 +17,7 @@ rustPlatform.buildRustPackage rec {
   cargoHash = "sha256-bkMJ7ApM+GsshwIFuYsH19CnU6ebq0GfwQvVp9QD46A=";
 
   meta = with lib; {
-    description = "A minimal Djot CLI";
+    description = "Minimal Djot CLI";
     mainProgram = "jotdown";
     homepage = "https://github.com/hellux/jotdown";
     changelog = "https://github.com/hellux/jotdown/blob/${src.rev}/CHANGELOG.md";
diff --git a/nixpkgs/pkgs/tools/text/jumanpp/default.nix b/nixpkgs/pkgs/tools/text/jumanpp/default.nix
index af141c873b3b..382b2f319c14 100644
--- a/nixpkgs/pkgs/tools/text/jumanpp/default.nix
+++ b/nixpkgs/pkgs/tools/text/jumanpp/default.nix
@@ -35,7 +35,7 @@ stdenv.mkDerivation rec {
     ++ lib.optional stdenv.isDarwin libiconv;
 
   meta = with lib; {
-    description = "A Japanese morphological analyser using a recurrent neural network language model (RNNLM)";
+    description = "Japanese morphological analyser using a recurrent neural network language model (RNNLM)";
     mainProgram = "jumanpp";
     longDescription = ''
       JUMAN++ is a new morphological analyser that considers semantic
diff --git a/nixpkgs/pkgs/tools/text/kdiff3/default.nix b/nixpkgs/pkgs/tools/text/kdiff3/default.nix
index c22814372314..456b2c568d82 100644
--- a/nixpkgs/pkgs/tools/text/kdiff3/default.nix
+++ b/nixpkgs/pkgs/tools/text/kdiff3/default.nix
@@ -14,11 +14,11 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "kdiff3";
-  version = "1.11.0";
+  version = "1.11.1";
 
   src = fetchurl {
     url = "mirror://kde/stable/kdiff3/kdiff3-${finalAttrs.version}.tar.xz";
-    hash = "sha256-O/N5VMoZo2Xze1WLV0yPvTZnGcCH17gheI0++tDESFE=";
+    hash = "sha256-MPFKWrbg1VEWgpF42CdlTDDoQhwE/pcA085npTCEYpg=";
   };
 
   nativeBuildInputs = [ extra-cmake-modules kdoctools wrapQtAppsHook ];
diff --git a/nixpkgs/pkgs/tools/text/languagetool/default.nix b/nixpkgs/pkgs/tools/text/languagetool/default.nix
index 58525bdeae4c..df634c510c8a 100644
--- a/nixpkgs/pkgs/tools/text/languagetool/default.nix
+++ b/nixpkgs/pkgs/tools/text/languagetool/default.nix
@@ -36,6 +36,6 @@ stdenv.mkDerivation rec {
     license = licenses.lgpl21Plus;
     maintainers = with maintainers; [ edwtjo ];
     platforms = jre.meta.platforms;
-    description = "A proofreading program for English, French German, Polish, and more";
+    description = "Proofreading program for English, French German, Polish, and more";
   };
 }
diff --git a/nixpkgs/pkgs/tools/text/link-grammar/default.nix b/nixpkgs/pkgs/tools/text/link-grammar/default.nix
index 0406c41d1a88..68d38d7505d4 100644
--- a/nixpkgs/pkgs/tools/text/link-grammar/default.nix
+++ b/nixpkgs/pkgs/tools/text/link-grammar/default.nix
@@ -54,7 +54,7 @@ link-grammar = stdenv.mkDerivation rec {
   };
 
   meta = with lib; {
-    description = "A Grammar Checking library";
+    description = "Grammar Checking library";
     homepage = "https://www.abisource.com/projects/link-grammar/";
     changelog = "https://github.com/opencog/link-grammar/blob/link-grammar-${version}/ChangeLog";
     license = licenses.lgpl21Only;
diff --git a/nixpkgs/pkgs/tools/text/mark/default.nix b/nixpkgs/pkgs/tools/text/mark/default.nix
index ca42b2687edc..8aaa5c09b670 100644
--- a/nixpkgs/pkgs/tools/text/mark/default.nix
+++ b/nixpkgs/pkgs/tools/text/mark/default.nix
@@ -16,7 +16,7 @@ buildGoModule rec {
   ldflags = [ "-s" "-w" "-X main.version=${version}" ];
 
   meta = with lib; {
-    description = "A tool for syncing your markdown documentation with Atlassian Confluence pages";
+    description = "Tool for syncing your markdown documentation with Atlassian Confluence pages";
     mainProgram = "mark";
     homepage = "https://github.com/kovetskiy/mark";
     license = licenses.asl20;
diff --git a/nixpkgs/pkgs/tools/text/markdownlint-cli/default.nix b/nixpkgs/pkgs/tools/text/markdownlint-cli/default.nix
index 736c59d2c5cf..12b19d3a7165 100644
--- a/nixpkgs/pkgs/tools/text/markdownlint-cli/default.nix
+++ b/nixpkgs/pkgs/tools/text/markdownlint-cli/default.nix
@@ -5,16 +5,16 @@
 
 buildNpmPackage rec {
   pname = "markdownlint-cli";
-  version = "0.40.0";
+  version = "0.41.0";
 
   src = fetchFromGitHub {
     owner = "igorshubovych";
     repo = "markdownlint-cli";
     rev = "v${version}";
-    hash = "sha256-h9h1qJ6xKQRRNSr3PsMeuMMyzfJbq49BluKvhJK86v4=";
+    hash = "sha256-qRbfOxMCm5pUAi0KHookOOnKaTShBUkTkrqZX4QGezk=";
   };
 
-  npmDepsHash = "sha256-Ez83Q/zXF61L0hoEb+i4h8oyelrHfgHueAW2mqhCjMQ=";
+  npmDepsHash = "sha256-UwyjaEKYA81J0DR2yFqYVp4e7l3Jol/R8hgaijNpBaU=";
 
   dontNpmBuild = true;
 
diff --git a/nixpkgs/pkgs/tools/text/markdownlint-cli2/default.nix b/nixpkgs/pkgs/tools/text/markdownlint-cli2/default.nix
index 86e1338a09ef..7ffacaa08db7 100644
--- a/nixpkgs/pkgs/tools/text/markdownlint-cli2/default.nix
+++ b/nixpkgs/pkgs/tools/text/markdownlint-cli2/default.nix
@@ -24,7 +24,7 @@ buildNpmPackage rec {
 
   meta = {
     changelog = "https://github.com/DavidAnson/markdownlint-cli2/blob/${src.rev}/CHANGELOG.md";
-    description = "A fast, flexible, configuration-based command-line interface for linting Markdown/CommonMark files with the markdownlint library";
+    description = "Fast, flexible, configuration-based command-line interface for linting Markdown/CommonMark files with the markdownlint library";
     homepage = "https://github.com/DavidAnson/markdownlint-cli2";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ natsukium ];
diff --git a/nixpkgs/pkgs/tools/text/mdbook-admonish/default.nix b/nixpkgs/pkgs/tools/text/mdbook-admonish/default.nix
index 381bf8e6b1ad..f579315cd908 100644
--- a/nixpkgs/pkgs/tools/text/mdbook-admonish/default.nix
+++ b/nixpkgs/pkgs/tools/text/mdbook-admonish/default.nix
@@ -2,21 +2,21 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "mdbook-admonish";
-  version = "1.15.0";
+  version = "1.17.1";
 
   src = fetchFromGitHub {
     owner = "tommilligan";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-31lYwvlpjeg0ZysusMY/PClEPB1tgroE9EvL4yX+2s0=";
+    hash = "sha256-Jj3mbsH/rFrUTWcgT4+KQJ2Bae58STHBB+7oZwbrhLk=";
   };
 
-  cargoHash = "sha256-Cqxgwf121waOsXUGqQJ+GgUqVWK+5kYUl8SL8MtuExs=";
+  cargoHash = "sha256-a2JGpIvI65djxyB1LZFWgIQmhsLPLhiYkyvqKwysgQo=";
 
   buildInputs = lib.optionals stdenv.isDarwin [ CoreServices ];
 
   meta = with lib; {
-    description = "A preprocessor for mdbook to add Material Design admonishments";
+    description = "Preprocessor for mdbook to add Material Design admonishments";
     mainProgram = "mdbook-admonish";
     license = licenses.mit;
     maintainers = with maintainers; [ jmgilman Frostman matthiasbeyer ];
diff --git a/nixpkgs/pkgs/tools/text/mdbook-footnote/default.nix b/nixpkgs/pkgs/tools/text/mdbook-footnote/default.nix
index 01777669c4af..7beeb3e33c63 100644
--- a/nixpkgs/pkgs/tools/text/mdbook-footnote/default.nix
+++ b/nixpkgs/pkgs/tools/text/mdbook-footnote/default.nix
@@ -20,7 +20,7 @@ rustPlatform.buildRustPackage rec {
   buildInputs = lib.optionals stdenv.isDarwin [ CoreServices ];
 
   meta = with lib; {
-    description = "A preprocessor for mdbook to support the inclusion of automatically numbered footnotes";
+    description = "Preprocessor for mdbook to support the inclusion of automatically numbered footnotes";
     mainProgram = "mdbook-footnote";
     homepage = "https://github.com/daviddrysdale/mdbook-footnote";
     license = licenses.asl20;
diff --git a/nixpkgs/pkgs/tools/text/mdbook-graphviz/default.nix b/nixpkgs/pkgs/tools/text/mdbook-graphviz/default.nix
index 43171c92dc96..9dc9f1df0e02 100644
--- a/nixpkgs/pkgs/tools/text/mdbook-graphviz/default.nix
+++ b/nixpkgs/pkgs/tools/text/mdbook-graphviz/default.nix
@@ -2,23 +2,23 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "mdbook-graphviz";
-  version = "0.1.7";
+  version = "0.2.0";
 
   src = fetchFromGitHub {
     owner = "dylanowen";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-FuAjuU4IXXuas+ubSuTMrZiYTGcZCuLTCSTJXtY2nlw=";
+    hash = "sha256-myASia/nkZmAf00lZ357Sh3YV73pCBrZAIRhSzFkZa0=";
   };
 
-  cargoHash = "sha256-d4s9wmjqMHjev1Y4nAobFnCc5NTdklXcs7XTRXFMEjU=";
+  cargoHash = "sha256-UB/l+rcVHkrHv/fybDy/UjrJbVksWgt9JRQC118/kGM=";
 
   buildInputs = lib.optionals stdenv.isDarwin [ CoreServices ];
 
   nativeCheckInputs = [ graphviz ];
 
   meta = with lib; {
-    description = "A preprocessor for mdbook, rendering Graphviz graphs to HTML at build time";
+    description = "Preprocessor for mdbook, rendering Graphviz graphs to HTML at build time";
     mainProgram = "mdbook-graphviz";
     homepage = "https://github.com/dylanowen/mdbook-graphviz";
     changelog = "https://github.com/dylanowen/mdbook-graphviz/releases/tag/v${version}";
diff --git a/nixpkgs/pkgs/tools/text/mdbook-i18n-helpers/default.nix b/nixpkgs/pkgs/tools/text/mdbook-i18n-helpers/default.nix
index e38da146b1fa..f9343e163798 100644
--- a/nixpkgs/pkgs/tools/text/mdbook-i18n-helpers/default.nix
+++ b/nixpkgs/pkgs/tools/text/mdbook-i18n-helpers/default.nix
@@ -5,17 +5,17 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "mdbook-i18n-helpers";
-  version = "0.3.2";
+  version = "0.3.4";
 
   src = fetchFromGitHub {
     owner = "google";
     repo = "mdbook-i18n-helpers";
     # TODO fix once upstream uses semver for tags again
     rev = "refs/tags/mdbook-i18n-helpers-${version}";
-    hash = "sha256-+lXIqq8T6jUkvxzvUnvRDmJg6BnT6rNK67kTm3krR0E=";
+    hash = "sha256-nIavOBWPyCmCLwPcDbjjG1sa71HObGnhms9sSCAR2iA=";
   };
 
-  cargoHash = "sha256-xQwag3mlcLKI2ERhp+Sug8FZ6LMxnG4P1JaZNtrzdk8=";
+  cargoHash = "sha256-bBUgsZHvJPwsdM3DjhaoAvIkPXQ6gzPOdfcE5rAnMQk=";
 
   meta = with lib; {
     description = "Helpers for a mdbook i18n workflow based on Gettext";
diff --git a/nixpkgs/pkgs/tools/text/mdbook-katex/default.nix b/nixpkgs/pkgs/tools/text/mdbook-katex/default.nix
index f914dedaf6aa..b6c2a1ec1d30 100644
--- a/nixpkgs/pkgs/tools/text/mdbook-katex/default.nix
+++ b/nixpkgs/pkgs/tools/text/mdbook-katex/default.nix
@@ -2,19 +2,19 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "mdbook-katex";
-  version = "0.8.1";
+  version = "0.9.0";
 
   src = fetchCrate {
     inherit pname version;
-    hash = "sha256-mVgI2lvT4w5+Tpq3Sx7j86LHFnuwI4bAAAqrUkiF1B4=";
+    hash = "sha256-OTMPf/ZlUtqKz8Lb0uFOhad33N6SaCIZ86I2ajZ19fU=";
   };
 
-  cargoHash = "sha256-ps31HGsAqWJBTP7HNLjfTz610ihDlvfAvlRHqZR01No=";
+  cargoHash = "sha256-U8uDcNkEyz7zAqCTthY5SVGshsJRKRaoBLOpBpQ9sho=";
 
   buildInputs = lib.optionals stdenv.isDarwin [ CoreServices ];
 
   meta = with lib; {
-    description = "A preprocessor for mdbook, rendering LaTeX equations to HTML at build time";
+    description = "Preprocessor for mdbook, rendering LaTeX equations to HTML at build time";
     mainProgram = "mdbook-katex";
     homepage = "https://github.com/lzanini/${pname}";
     license = [ licenses.mit ];
diff --git a/nixpkgs/pkgs/tools/text/mdbook-linkcheck/default.nix b/nixpkgs/pkgs/tools/text/mdbook-linkcheck/default.nix
index b8d19d01e763..878b93b055de 100644
--- a/nixpkgs/pkgs/tools/text/mdbook-linkcheck/default.nix
+++ b/nixpkgs/pkgs/tools/text/mdbook-linkcheck/default.nix
@@ -25,7 +25,7 @@ rustPlatform.buildRustPackage rec {
   passthru.tests.version = testers.testVersion { package = mdbook-linkcheck; };
 
   meta = with lib; {
-    description = "A backend for `mdbook` which will check your links for you";
+    description = "Backend for `mdbook` which will check your links for you";
     mainProgram = "mdbook-linkcheck";
     homepage = "https://github.com/Michael-F-Bryan/mdbook-linkcheck";
     license = licenses.mit;
diff --git a/nixpkgs/pkgs/tools/text/mdbook-mermaid/default.nix b/nixpkgs/pkgs/tools/text/mdbook-mermaid/default.nix
index 2dafb13d508c..52211b273710 100644
--- a/nixpkgs/pkgs/tools/text/mdbook-mermaid/default.nix
+++ b/nixpkgs/pkgs/tools/text/mdbook-mermaid/default.nix
@@ -23,7 +23,7 @@ rustPlatform.buildRustPackage rec {
   ];
 
   meta = with lib; {
-    description = "A preprocessor for mdbook to add mermaid.js support";
+    description = "Preprocessor for mdbook to add mermaid.js support";
     mainProgram = "mdbook-mermaid";
     homepage = "https://github.com/badboy/mdbook-mermaid";
     changelog = "https://github.com/badboy/mdbook-mermaid/blob/v${version}/CHANGELOG.md";
diff --git a/nixpkgs/pkgs/tools/text/mdbook-pdf/default.nix b/nixpkgs/pkgs/tools/text/mdbook-pdf/default.nix
index 0b3b0bfbc860..472f5e3b8629 100644
--- a/nixpkgs/pkgs/tools/text/mdbook-pdf/default.nix
+++ b/nixpkgs/pkgs/tools/text/mdbook-pdf/default.nix
@@ -43,7 +43,7 @@ rustPlatform.buildRustPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A backend for mdBook written in Rust for generating PDF";
+    description = "Backend for mdBook written in Rust for generating PDF";
     mainProgram = "mdbook-pdf";
     homepage = "https://github.com/HollowMan6/mdbook-pdf";
     changelog = "https://github.com/HollowMan6/mdbook-pdf/releases/tag/v${version}";
diff --git a/nixpkgs/pkgs/tools/text/mdbook-toc/default.nix b/nixpkgs/pkgs/tools/text/mdbook-toc/default.nix
index 3ee6fb6e814f..a9c3855964b5 100644
--- a/nixpkgs/pkgs/tools/text/mdbook-toc/default.nix
+++ b/nixpkgs/pkgs/tools/text/mdbook-toc/default.nix
@@ -16,7 +16,7 @@ rustPlatform.buildRustPackage rec {
   buildInputs = lib.optionals stdenv.isDarwin [ CoreServices ];
 
   meta = with lib; {
-    description = "A preprocessor for mdbook to add inline Table of Contents support";
+    description = "Preprocessor for mdbook to add inline Table of Contents support";
     mainProgram = "mdbook-toc";
     homepage = "https://github.com/badboy/mdbook-toc";
     license = [ licenses.mpl20 ];
diff --git a/nixpkgs/pkgs/tools/text/opencc/default.nix b/nixpkgs/pkgs/tools/text/opencc/default.nix
index 5cc859474118..bc4630b87178 100644
--- a/nixpkgs/pkgs/tools/text/opencc/default.nix
+++ b/nixpkgs/pkgs/tools/text/opencc/default.nix
@@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/BYVoid/OpenCC";
     license = licenses.asl20;
-    description = "A project for conversion between Traditional and Simplified Chinese";
+    description = "Project for conversion between Traditional and Simplified Chinese";
     longDescription = ''
       Open Chinese Convert (OpenCC) is an opensource project for conversion between
       Traditional Chinese and Simplified Chinese, supporting character-level conversion,
diff --git a/nixpkgs/pkgs/tools/text/paperoni/default.nix b/nixpkgs/pkgs/tools/text/paperoni/default.nix
index 9e188c6d5508..1ceb29f1265a 100644
--- a/nixpkgs/pkgs/tools/text/paperoni/default.nix
+++ b/nixpkgs/pkgs/tools/text/paperoni/default.nix
@@ -42,7 +42,7 @@ rustPlatform.buildRustPackage rec {
   '';
 
   meta = with lib; {
-    description = "An article extractor in Rust";
+    description = "Article extractor in Rust";
     mainProgram = "paperoni";
     homepage = "https://github.com/hipstermojo/paperoni";
     changelog = "https://github.com/hipstermojo/paperoni/releases/tag/${src.rev}";
diff --git a/nixpkgs/pkgs/tools/text/percollate/default.nix b/nixpkgs/pkgs/tools/text/percollate/default.nix
index ea55446aac6e..09c749a1680b 100644
--- a/nixpkgs/pkgs/tools/text/percollate/default.nix
+++ b/nixpkgs/pkgs/tools/text/percollate/default.nix
@@ -2,21 +2,21 @@
 
 buildNpmPackage rec {
   pname = "percollate";
-  version = "4.0.5";
+  version = "4.2.1";
 
   src = fetchFromGitHub {
     owner = "danburzo";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-St9a22Af2QV3gOR80LmDMeq0x9tf/ZJz9Z4IgeeM80I=";
+    hash = "sha256-vGBGw9dUOSvSqM4WN53bb2LRduLjR6fW99C0ScdMVXk=";
   };
 
-  npmDepsHash = "sha256-WHOv5N893G35bMC03aGb2m7rQz5xIRd9hPldbRku+RY=";
+  npmDepsHash = "sha256-Qne4XjUmJS5e6x380CFY3Kd7/5coXHMxniMfqYIHQcQ=";
 
   dontNpmBuild = true;
 
   # Dev dependencies include an unnecessary Java dependency (epubchecker)
-  # https://github.com/danburzo/percollate/blob/v4.0.5/package.json#L40
+  # https://github.com/danburzo/percollate/blob/v4.2.1/package.json#L40
   npmInstallFlags = [ "--omit=dev" ];
 
   nativeBuildInputs = [ makeWrapper ];
@@ -35,7 +35,7 @@ buildNpmPackage rec {
   '';
 
   meta = with lib; {
-    description = "A command-line tool to turn web pages into readable PDF, EPUB, HTML, or Markdown docs";
+    description = "Command-line tool to turn web pages into readable PDF, EPUB, HTML, or Markdown docs";
     homepage = "https://github.com/danburzo/percollate";
     license = licenses.mit;
     maintainers = [ maintainers.austinbutler ];
diff --git a/nixpkgs/pkgs/tools/text/pinyin-tool/default.nix b/nixpkgs/pkgs/tools/text/pinyin-tool/default.nix
index 40ca31fe53a7..9d434d1aa98f 100644
--- a/nixpkgs/pkgs/tools/text/pinyin-tool/default.nix
+++ b/nixpkgs/pkgs/tools/text/pinyin-tool/default.nix
@@ -16,7 +16,7 @@ rustPlatform.buildRustPackage rec {
   buildInputs = lib.optionals stdenv.isDarwin [ Security ];
 
   meta = with lib; {
-    description = "A simple command line tool for converting Chinese characters to space-separate pinyin words";
+    description = "Simple command line tool for converting Chinese characters to space-separate pinyin words";
     mainProgram = "pinyin-tool";
     homepage = "https://github.com/briankung/pinyin-tool";
     license = licenses.mit;
diff --git a/nixpkgs/pkgs/tools/text/platinum-searcher/default.nix b/nixpkgs/pkgs/tools/text/platinum-searcher/default.nix
index d0128fcfd0e4..92386af9cb34 100644
--- a/nixpkgs/pkgs/tools/text/platinum-searcher/default.nix
+++ b/nixpkgs/pkgs/tools/text/platinum-searcher/default.nix
@@ -25,7 +25,7 @@ buildGoModule rec {
 
   meta = with lib; {
     homepage = "https://github.com/monochromegane/the_platinum_searcher";
-    description = "A code search tool similar to ack and the_silver_searcher(ag)";
+    description = "Code search tool similar to ack and the_silver_searcher(ag)";
     mainProgram = "pt";
     license = licenses.mit;
   };
diff --git a/nixpkgs/pkgs/tools/text/pn/default.nix b/nixpkgs/pkgs/tools/text/pn/default.nix
index a228f093c346..ddb6e6ea1f88 100644
--- a/nixpkgs/pkgs/tools/text/pn/default.nix
+++ b/nixpkgs/pkgs/tools/text/pn/default.nix
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
   buildInputs = [ libphonenumber icu protobuf ];
 
   meta = with lib; {
-    description = "A libphonenumber command-line wrapper";
+    description = "Libphonenumber command-line wrapper";
     mainProgram = "pn";
     homepage = "https://github.com/Orange-OpenSource/pn";
     license = licenses.asl20;
diff --git a/nixpkgs/pkgs/tools/text/pomsky/default.nix b/nixpkgs/pkgs/tools/text/pomsky/default.nix
index 65b67b58fa40..d86b138861bf 100644
--- a/nixpkgs/pkgs/tools/text/pomsky/default.nix
+++ b/nixpkgs/pkgs/tools/text/pomsky/default.nix
@@ -35,7 +35,7 @@ rustPlatform.buildRustPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A portable, modern regular expression language";
+    description = "Portable, modern regular expression language";
     mainProgram = "pomsky";
     homepage = "https://pomsky-lang.org";
     changelog = "https://github.com/pomsky-lang/pomsky/blob/v${version}/CHANGELOG.md";
diff --git a/nixpkgs/pkgs/tools/text/popfile/default.nix b/nixpkgs/pkgs/tools/text/popfile/default.nix
index 2ab51fa24a30..b902a75bb476 100644
--- a/nixpkgs/pkgs/tools/text/popfile/default.nix
+++ b/nixpkgs/pkgs/tools/text/popfile/default.nix
@@ -48,7 +48,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = {
-    description = "An email classification system that automatically sorts messages and fights spam";
+    description = "Email classification system that automatically sorts messages and fights spam";
     homepage = "https://getpopfile.org/";
     license = lib.licenses.gpl2Only;
 
diff --git a/nixpkgs/pkgs/tools/text/proselint/default.nix b/nixpkgs/pkgs/tools/text/proselint/default.nix
index 2f62484d980a..904eb2c5363f 100644
--- a/nixpkgs/pkgs/tools/text/proselint/default.nix
+++ b/nixpkgs/pkgs/tools/text/proselint/default.nix
@@ -14,7 +14,7 @@ buildPythonApplication rec {
   propagatedBuildInputs = [ click future six ];
 
   meta = with lib; {
-    description = "A linter for prose";
+    description = "Linter for prose";
     mainProgram = "proselint";
     homepage = "http://proselint.com";
     license = licenses.bsd3;
diff --git a/nixpkgs/pkgs/tools/text/rare-regex/default.nix b/nixpkgs/pkgs/tools/text/rare-regex/default.nix
index 6dbd062ef61c..b565ed8aded2 100644
--- a/nixpkgs/pkgs/tools/text/rare-regex/default.nix
+++ b/nixpkgs/pkgs/tools/text/rare-regex/default.nix
@@ -10,13 +10,13 @@
 
 buildGoModule rec {
   pname = "rare";
-  version = "0.3.3";
+  version = "0.3.4";
 
   src = fetchFromGitHub {
     owner = "zix99";
     repo = "rare";
     rev = version;
-    hash = "sha256-83iHYWMdLOzWDu/WW2TN8D2gUe2Y74aGBUjfHIa9ki8=";
+    hash = "sha256-T27RBIrIXlhFBjzNgN6B49qgTHcek8MajXlbRC5DTMs=";
   };
 
   vendorHash = "sha256-wUOtxNjL/4MosACCzPTWKWrnMZhxINfN1ppkRsqDh9M=";
@@ -43,7 +43,7 @@ buildGoModule rec {
   };
 
   meta = with lib; {
-    description = "A fast text scanner/regex extractor and realtime summarizer";
+    description = "Fast text scanner/regex extractor and realtime summarizer";
     homepage = "https://rare.zdyn.net";
     changelog = "https://github.com/zix99/rare/releases/tag/${src.rev}";
     license = licenses.gpl3Plus;
diff --git a/nixpkgs/pkgs/tools/text/repgrep/default.nix b/nixpkgs/pkgs/tools/text/repgrep/default.nix
index 607aa230569b..1fb6156dfc4e 100644
--- a/nixpkgs/pkgs/tools/text/repgrep/default.nix
+++ b/nixpkgs/pkgs/tools/text/repgrep/default.nix
@@ -43,7 +43,7 @@ rustPlatform.buildRustPackage rec {
   '';
 
   meta = with lib; {
-    description = "An interactive replacer for ripgrep that makes it easy to find and replace across files on the command line";
+    description = "Interactive replacer for ripgrep that makes it easy to find and replace across files on the command line";
     homepage = "https://github.com/acheronfail/repgrep";
     changelog = "https://github.com/acheronfail/repgrep/blob/${src.rev}/CHANGELOG.md";
     license = with licenses; [ mit asl20 unlicense ];
diff --git a/nixpkgs/pkgs/tools/text/replace/default.nix b/nixpkgs/pkgs/tools/text/replace/default.nix
index 62b83636b37c..61c6a65322d1 100644
--- a/nixpkgs/pkgs/tools/text/replace/default.nix
+++ b/nixpkgs/pkgs/tools/text/replace/default.nix
@@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
   patches = [./malloc.patch];
 
   meta = {
-    description = "A tool to replace verbatim strings";
+    description = "Tool to replace verbatim strings";
     homepage = "https://replace.richardlloyd.org.uk/";
     mainProgram = "replace-literal";
     platforms = lib.platforms.unix;
diff --git a/nixpkgs/pkgs/tools/text/rgxg/default.nix b/nixpkgs/pkgs/tools/text/rgxg/default.nix
index f2f4870d8adf..4cc1722392ec 100644
--- a/nixpkgs/pkgs/tools/text/rgxg/default.nix
+++ b/nixpkgs/pkgs/tools/text/rgxg/default.nix
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
   };
 
   meta = with lib; {
-    description = "A C library and a command-line tool to generate (extended) regular expressions";
+    description = "C library and a command-line tool to generate (extended) regular expressions";
     mainProgram = "rgxg";
     license = licenses.zlib;
     maintainers = with maintainers; [ hloeffler ];
diff --git a/nixpkgs/pkgs/tools/text/riffdiff/default.nix b/nixpkgs/pkgs/tools/text/riffdiff/default.nix
index cd7008f0d5b0..aadb6f26354b 100644
--- a/nixpkgs/pkgs/tools/text/riffdiff/default.nix
+++ b/nixpkgs/pkgs/tools/text/riffdiff/default.nix
@@ -2,19 +2,19 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "riffdiff";
-  version = "3.1.3";
+  version = "3.2.0";
 
   src = fetchFromGitHub {
     owner = "walles";
     repo = "riff";
     rev = version;
-    hash = "sha256-wBLVH4Yrvj3rU5tRaxV8BBWkR2xLMxjkwjJ4rf1hHXk=";
+    hash = "sha256-CMH+6/YGepl6SJLytfDEu7NLvPA/HHY/sDm2LTi0R8w=";
   };
 
-  cargoHash = "sha256-4qskpcDE9l+7KjcVRou4GcdG7aF8stKXK12WBy81UBw=";
+  cargoHash = "sha256-w3oDpJMsfV9mIWI44YgOsNZH2vahSRCSJnYpFWBx/eU=";
 
   meta = with lib; {
-    description = "A diff filter highlighting which line parts have changed";
+    description = "Diff filter highlighting which line parts have changed";
     homepage = "https://github.com/walles/riff";
     license = licenses.mit;
     maintainers = with maintainers; [ johnpyp ];
diff --git a/nixpkgs/pkgs/tools/text/ripgrep/default.nix b/nixpkgs/pkgs/tools/text/ripgrep/default.nix
index 427625a0000f..35e56b7fb3a4 100644
--- a/nixpkgs/pkgs/tools/text/ripgrep/default.nix
+++ b/nixpkgs/pkgs/tools/text/ripgrep/default.nix
@@ -53,7 +53,7 @@ in rustPlatform.buildRustPackage rec {
   '';
 
   meta = with lib; {
-    description = "A utility that combines the usability of The Silver Searcher with the raw speed of grep";
+    description = "Utility that combines the usability of The Silver Searcher with the raw speed of grep";
     homepage = "https://github.com/BurntSushi/ripgrep";
     changelog = "https://github.com/BurntSushi/ripgrep/releases/tag/${version}";
     license = with licenses; [ unlicense /* or */ mit ];
diff --git a/nixpkgs/pkgs/tools/text/rnr/default.nix b/nixpkgs/pkgs/tools/text/rnr/default.nix
index b2d38832a4d5..fbc4f1b382f8 100644
--- a/nixpkgs/pkgs/tools/text/rnr/default.nix
+++ b/nixpkgs/pkgs/tools/text/rnr/default.nix
@@ -14,7 +14,7 @@ rustPlatform.buildRustPackage rec {
   cargoSha256 = "sha256-+oDRNBQ03MknhcTpZFKt0ipJY43LPOKbGF014rrs6dw=";
 
   meta = with lib; {
-    description = "A command-line tool to batch rename files and directories";
+    description = "Command-line tool to batch rename files and directories";
     mainProgram = "rnr";
     homepage = "https://github.com/ismaelgv/rnr";
     changelog = "https://github.com/ismaelgv/rnr/blob/v${version}/CHANGELOG.md";
diff --git a/nixpkgs/pkgs/tools/text/rsbkb/default.nix b/nixpkgs/pkgs/tools/text/rsbkb/default.nix
index 32b8f4387b4e..c107739d704b 100644
--- a/nixpkgs/pkgs/tools/text/rsbkb/default.nix
+++ b/nixpkgs/pkgs/tools/text/rsbkb/default.nix
@@ -6,16 +6,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "rsbkb";
-  version = "1.3";
+  version = "1.4";
 
   src = fetchFromGitHub {
     owner = "trou";
     repo = "rsbkb";
     rev = "release-${version}";
-    hash = "sha256-SGV7ovaOVnOFlCSyxKrd4Tg8Ak71BzvLgEvCneHhx0w=";
+    hash = "sha256-c5+Q/y2tZfhXQIAs1W67/xfB+qz1Xn33tKXRGDAi3qs=";
   };
 
-  cargoHash = "sha256-UC9i1rPdQ4YLQoMQYXyL0j6EUhMwyKuD+vk4z5XLLAk=";
+  cargoHash = "sha256-kGxYH3frBcmvBCFeF2oxAS4FALcmnRyCH1fi0NF0wSo=";
 
   # Setup symlinks for all the utilities,
   # busybox style
diff --git a/nixpkgs/pkgs/tools/text/runiq/default.nix b/nixpkgs/pkgs/tools/text/runiq/default.nix
index 52386bb0f24a..330c4cdbf930 100644
--- a/nixpkgs/pkgs/tools/text/runiq/default.nix
+++ b/nixpkgs/pkgs/tools/text/runiq/default.nix
@@ -16,7 +16,7 @@ rustPlatform.buildRustPackage rec {
   ];
 
   meta = with lib; {
-    description = "An efficient way to filter duplicate lines from input, à la uniq";
+    description = "Efficient way to filter duplicate lines from input, à la uniq";
     mainProgram = "runiq";
     homepage = "https://github.com/whitfin/runiq";
     license = licenses.mit;
diff --git a/nixpkgs/pkgs/tools/text/sad/default.nix b/nixpkgs/pkgs/tools/text/sad/default.nix
index d0c6e430e726..a3fba1a8d088 100644
--- a/nixpkgs/pkgs/tools/text/sad/default.nix
+++ b/nixpkgs/pkgs/tools/text/sad/default.nix
@@ -7,16 +7,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "sad";
-  version = "0.4.28";
+  version = "0.4.29";
 
   src = fetchFromGitHub {
     owner = "ms-jpq";
     repo = "sad";
     rev = "refs/tags/v${version}";
-    hash = "sha256-9zsNYUYUQ3RmJQN7uf+YQjywr7rRAIx5zz6EYkbN8/o=";
+    hash = "sha256-TLVUvz/phAy+ljIsdv4GVSFHTAZ5ywQs32WHsu9g9Fc=";
   };
 
-  cargoHash = "sha256-OSVG1sFSLKkVsgI0I2mYTszcPGlfOL1Md/aCpMf6Eow=";
+  cargoHash = "sha256-4XmTxeKbdC4HRownFlEc4GrSVimKkQg/yNI0us7gzQI=";
 
   nativeBuildInputs = [ python3 ];
 
diff --git a/nixpkgs/pkgs/tools/text/scraper/default.nix b/nixpkgs/pkgs/tools/text/scraper/default.nix
index 42b8c91effe0..0c4afcad4f87 100644
--- a/nixpkgs/pkgs/tools/text/scraper/default.nix
+++ b/nixpkgs/pkgs/tools/text/scraper/default.nix
@@ -18,7 +18,7 @@ rustPlatform.buildRustPackage rec {
   '';
 
   meta = with lib; {
-    description = "A tool to query HTML files with CSS selectors";
+    description = "Tool to query HTML files with CSS selectors";
     mainProgram = "scraper";
     homepage = "https://github.com/causal-agent/scraper";
     changelog = "https://github.com/causal-agent/scraper/releases/tag/v${version}";
diff --git a/nixpkgs/pkgs/tools/text/seehecht/default.nix b/nixpkgs/pkgs/tools/text/seehecht/default.nix
index 55c02a8c90c6..9a7b1f936a99 100644
--- a/nixpkgs/pkgs/tools/text/seehecht/default.nix
+++ b/nixpkgs/pkgs/tools/text/seehecht/default.nix
@@ -19,7 +19,7 @@ rustPlatform.buildRustPackage rec {
   '';
 
   meta = with lib; {
-    description = "A tool to quickly open a markdown document with already filled out frontmatter";
+    description = "Tool to quickly open a markdown document with already filled out frontmatter";
     license = licenses.lgpl3Only;
     platforms = platforms.all;
     maintainers = with maintainers; [ annaaurora ];
diff --git a/nixpkgs/pkgs/tools/text/sgml/openjade/default.nix b/nixpkgs/pkgs/tools/text/sgml/openjade/default.nix
index 87bc8e7a8aed..60fa161d20c5 100644
--- a/nixpkgs/pkgs/tools/text/sgml/openjade/default.nix
+++ b/nixpkgs/pkgs/tools/text/sgml/openjade/default.nix
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
   ];
 
   meta = {
-    description = "An implementation of DSSSL, an ISO standard for formatting SGML (and XML) documents";
+    description = "Implementation of DSSSL, an ISO standard for formatting SGML (and XML) documents";
     mainProgram = "openjade";
     license = lib.licenses.mit;
     homepage = "https://openjade.sourceforge.net/";
diff --git a/nixpkgs/pkgs/tools/text/sgml/opensp/default.nix b/nixpkgs/pkgs/tools/text/sgml/opensp/default.nix
index 27f5dc4e9d9b..a51bd7925164 100644
--- a/nixpkgs/pkgs/tools/text/sgml/opensp/default.nix
+++ b/nixpkgs/pkgs/tools/text/sgml/opensp/default.nix
@@ -53,7 +53,7 @@ stdenv.mkDerivation rec {
   doCheck = false; # fails
 
   meta = with lib; {
-    description = "A suite of SGML/XML processing tools";
+    description = "Suite of SGML/XML processing tools";
     license = licenses.mit;
     homepage = "https://openjade.sourceforge.net/";
     platforms = platforms.unix;
diff --git a/nixpkgs/pkgs/tools/text/sgrep/default.nix b/nixpkgs/pkgs/tools/text/sgrep/default.nix
index 3e82ce9afc60..4b7476e55f6d 100644
--- a/nixpkgs/pkgs/tools/text/sgrep/default.nix
+++ b/nixpkgs/pkgs/tools/text/sgrep/default.nix
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     homepage = "https://www.cs.helsinki.fi/u/jjaakkol/sgrep.html";
-    description = "A grep for structured text formats such as XML";
+    description = "Grep for structured text formats such as XML";
     mainProgram = "sgrep";
     longDescription = ''
       sgrep (structured grep) is a tool for searching and indexing text,
diff --git a/nixpkgs/pkgs/tools/text/shab/default.nix b/nixpkgs/pkgs/tools/text/shab/default.nix
index 733ba4f80cf5..bbc60921903d 100644
--- a/nixpkgs/pkgs/tools/text/shab/default.nix
+++ b/nixpkgs/pkgs/tools/text/shab/default.nix
@@ -40,7 +40,7 @@ let
     };
 
     meta = with lib; {
-      description = "The bash templating language";
+      description = "Bash templating language";
       mainProgram = "shab";
       homepage = "https://github.com/zimbatm/shab";
       license = licenses.unlicense;
diff --git a/nixpkgs/pkgs/tools/text/shfmt/default.nix b/nixpkgs/pkgs/tools/text/shfmt/default.nix
index 8c5da3097b4b..b2437a01c993 100644
--- a/nixpkgs/pkgs/tools/text/shfmt/default.nix
+++ b/nixpkgs/pkgs/tools/text/shfmt/default.nix
@@ -26,7 +26,7 @@ buildGoModule rec {
 
   meta = with lib; {
     homepage = "https://github.com/mvdan/sh";
-    description = "A shell parser and formatter";
+    description = "Shell parser and formatter";
     longDescription = ''
       shfmt formats shell programs. It can use tabs or any number of spaces to indent.
       You can feed it standard input, any number of files or any number of directories to recurse into.
diff --git a/nixpkgs/pkgs/tools/text/shocco/default.nix b/nixpkgs/pkgs/tools/text/shocco/default.nix
index 75f218f213e6..6fc11f6ef0ba 100644
--- a/nixpkgs/pkgs/tools/text/shocco/default.nix
+++ b/nixpkgs/pkgs/tools/text/shocco/default.nix
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
   buildInputs = [ perlPackages.TextMarkdown python3.pkgs.pygments ];
 
   meta = with lib; {
-    description = "A quick-and-dirty, literate-programming-style documentation generator for / in POSIX shell";
+    description = "Quick-and-dirty, literate-programming-style documentation generator for / in POSIX shell";
     mainProgram = "shocco";
     homepage = "https://rtomayko.github.io/shocco/";
     license = licenses.mit;
diff --git a/nixpkgs/pkgs/tools/text/sift/default.nix b/nixpkgs/pkgs/tools/text/sift/default.nix
index 1aecb3ac8909..04ca7f0c2136 100644
--- a/nixpkgs/pkgs/tools/text/sift/default.nix
+++ b/nixpkgs/pkgs/tools/text/sift/default.nix
@@ -30,7 +30,7 @@ buildGoModule rec {
   '';
 
   meta = with lib; {
-    description = "A fast and powerful alternative to grep";
+    description = "Fast and powerful alternative to grep";
     mainProgram = "sift";
     homepage = "https://sift-tool.org";
     maintainers = with maintainers; [ viraptor ];
diff --git a/nixpkgs/pkgs/tools/text/silver-searcher/default.nix b/nixpkgs/pkgs/tools/text/silver-searcher/default.nix
index 94c5c8cf02fc..568b49371f69 100644
--- a/nixpkgs/pkgs/tools/text/silver-searcher/default.nix
+++ b/nixpkgs/pkgs/tools/text/silver-searcher/default.nix
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     homepage = "https://github.com/ggreer/the_silver_searcher/";
-    description = "A code-searching tool similar to ack, but faster";
+    description = "Code-searching tool similar to ack, but faster";
     maintainers = with maintainers; [ madjar ];
     mainProgram = "ag";
     platforms = platforms.all;
diff --git a/nixpkgs/pkgs/tools/text/teip/default.nix b/nixpkgs/pkgs/tools/text/teip/default.nix
index caa665fc3c93..90a41a8cf38d 100644
--- a/nixpkgs/pkgs/tools/text/teip/default.nix
+++ b/nixpkgs/pkgs/tools/text/teip/default.nix
@@ -23,11 +23,6 @@ rustPlatform.buildRustPackage rec {
 
   nativeCheckInputs = [ perl ];
 
-  # Cargo.lock is outdated
-  preConfigure = ''
-    cargo update --offline
-  '';
-
   # tests are locale sensitive
   preCheck = ''
     export LANG=${if stdenv.isDarwin then "en_US.UTF-8" else "C.UTF-8"}
@@ -42,7 +37,7 @@ rustPlatform.buildRustPackage rec {
   '';
 
   meta = with lib; {
-    description = "A tool to bypass a partial range of standard input to any command";
+    description = "Tool to bypass a partial range of standard input to any command";
     mainProgram = "teip";
     homepage = "https://github.com/greymd/teip";
     changelog = "https://github.com/greymd/teip/releases/tag/v${version}";
diff --git a/nixpkgs/pkgs/tools/text/termbook/default.nix b/nixpkgs/pkgs/tools/text/termbook/default.nix
index a68f0ce416f4..d16dc05cba53 100644
--- a/nixpkgs/pkgs/tools/text/termbook/default.nix
+++ b/nixpkgs/pkgs/tools/text/termbook/default.nix
@@ -51,7 +51,7 @@ rustPlatform.buildRustPackage rec {
   '';
 
   meta = with lib; {
-    description = "A runner for `mdbooks` to keep your documentation tested";
+    description = "Runner for `mdbooks` to keep your documentation tested";
     mainProgram = "termbook";
     homepage = "https://github.com/Byron/termbook/";
     changelog = "https://github.com/Byron/termbook/blob/${src.rev}/CHANGELOG.md";
diff --git a/nixpkgs/pkgs/tools/text/tesh/default.nix b/nixpkgs/pkgs/tools/text/tesh/default.nix
index abff7771add2..d4d2c1e0ed71 100644
--- a/nixpkgs/pkgs/tools/text/tesh/default.nix
+++ b/nixpkgs/pkgs/tools/text/tesh/default.nix
@@ -1,4 +1,4 @@
-{ python3Packages, fetchFromGitHub, fetchpatch }:
+{ python3Packages, fetchFromGitHub }:
 
 let
   version = "0.3.2";
diff --git a/nixpkgs/pkgs/tools/text/textpieces/default.nix b/nixpkgs/pkgs/tools/text/textpieces/default.nix
deleted file mode 100644
index 90f05fc8f1dc..000000000000
--- a/nixpkgs/pkgs/tools/text/textpieces/default.nix
+++ /dev/null
@@ -1,86 +0,0 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, fetchpatch
-, python3
-, meson
-, ninja
-, pkg-config
-, vala
-, glib
-, gtk4
-, libgee
-, libadwaita
-, libportal-gtk4
-, json-glib
-, blueprint-compiler
-, gtksourceview5
-, gobject-introspection
-, wrapGAppsHook4
-, appstream-glib
-, desktop-file-utils
-}:
-
-let
-  pythonEnv = python3.withPackages (ps: with ps; [ pyyaml ]);
-in
-stdenv.mkDerivation (finalAttrs: {
-  pname = "textpieces";
-  version = "3.4.1";
-
-  src = fetchFromGitHub {
-    owner = "liferooter";
-    repo = "textpieces";
-    rev = "v${finalAttrs.version}";
-    hash = "sha256-3ZUHzt3oXYgsnJVDf83JUDhcF+0DLgFfOMtpKI/FTcE=";
-  };
-
-  nativeBuildInputs = [
-    meson
-    ninja
-    pkg-config
-    pythonEnv
-    vala
-    blueprint-compiler
-    wrapGAppsHook4
-    appstream-glib
-    desktop-file-utils
-    gobject-introspection
-  ];
-
-  buildInputs = [
-    glib
-    gtk4
-    libadwaita
-    libportal-gtk4
-    libgee
-    json-glib
-    gtksourceview5
-  ];
-
-  runtimeDependencies = [
-    pythonEnv
-  ];
-
-  patches = [
-  (fetchpatch {
-    url = "https://github.com/liferooter/textpieces/commit/26348782b9fddc5f2ffb9497cf18ec8ce9592960.patch";
-    hash = "sha256-w86PCeDhoyMPm63GCBa2Ax8KfCdlxtmGeUrmt1ZSz1k=";
-  })
-  ];
-
-  postPatch = ''
-    chmod +x build-aux/meson/postinstall.py
-    patchShebangs build-aux/meson/postinstall.py
-    patchShebangs scripts/
-  '';
-
-  meta = with lib; {
-    description = "Quick text processing";
-    longDescription = "A small tool for quick text transformations such as checksums, encoding, decoding and so on.";
-    homepage = "https://github.com/liferooter/textpieces";
-    license = licenses.gpl3Plus;
-    platforms = platforms.linux;
-    maintainers = with maintainers; [ zendo ];
-  };
-})
diff --git a/nixpkgs/pkgs/tools/text/tidy-viewer/default.nix b/nixpkgs/pkgs/tools/text/tidy-viewer/default.nix
index cbeb97214893..b2d55ee27615 100644
--- a/nixpkgs/pkgs/tools/text/tidy-viewer/default.nix
+++ b/nixpkgs/pkgs/tools/text/tidy-viewer/default.nix
@@ -20,7 +20,7 @@ rustPlatform.buildRustPackage rec {
   ];
 
   meta = with lib; {
-    description = "A cross-platform CLI csv pretty printer that uses column styling to maximize viewer enjoyment";
+    description = "Cross-platform CLI csv pretty printer that uses column styling to maximize viewer enjoyment";
     mainProgram = "tidy-viewer";
     homepage = "https://github.com/alexhallam/tv";
     changelog = "https://github.com/alexhallam/tv/blob/${version}/CHANGELOG.md";
diff --git a/nixpkgs/pkgs/tools/text/tml/default.nix b/nixpkgs/pkgs/tools/text/tml/default.nix
index 0dc3cba1dbd1..244b2d10adc1 100644
--- a/nixpkgs/pkgs/tools/text/tml/default.nix
+++ b/nixpkgs/pkgs/tools/text/tml/default.nix
@@ -19,7 +19,7 @@ buildGoModule rec {
   ldflags = [ "-s" "-w" ];
 
   meta = with lib; {
-    description = "A tiny markup language for terminal output";
+    description = "Tiny markup language for terminal output";
     mainProgram = "tml";
     homepage = "https://github.com/liamg/tml";
     changelog = "https://github.com/liamg/tml/releases/tag/v${version}";
diff --git a/nixpkgs/pkgs/tools/text/unrtf/default.nix b/nixpkgs/pkgs/tools/text/unrtf/default.nix
index 4395c0f6e941..5e6766e4db94 100644
--- a/nixpkgs/pkgs/tools/text/unrtf/default.nix
+++ b/nixpkgs/pkgs/tools/text/unrtf/default.nix
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
   outputs = [ "out" "man" ];
 
   meta = with lib; {
-    description = "A converter from Rich Text Format to other formats";
+    description = "Converter from Rich Text Format to other formats";
     mainProgram = "unrtf";
     longDescription = ''
       UnRTF converts documents in Rich Text Format to other
diff --git a/nixpkgs/pkgs/tools/text/untex/default.nix b/nixpkgs/pkgs/tools/text/untex/default.nix
index c6f833049650..cb4c0e4fcb9e 100644
--- a/nixpkgs/pkgs/tools/text/untex/default.nix
+++ b/nixpkgs/pkgs/tools/text/untex/default.nix
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A utility which removes LaTeX commands from input";
+    description = "Utility which removes LaTeX commands from input";
     mainProgram = "untex";
     homepage = "https://www.ctan.org/pkg/untex";
     license = licenses.gpl1Only;
diff --git a/nixpkgs/pkgs/tools/text/vale/default.nix b/nixpkgs/pkgs/tools/text/vale/default.nix
index d42703ce0a76..2dfb2f00f662 100644
--- a/nixpkgs/pkgs/tools/text/vale/default.nix
+++ b/nixpkgs/pkgs/tools/text/vale/default.nix
@@ -10,7 +10,7 @@
 
 buildGoModule rec {
   pname = "vale";
-  version = "3.4.2";
+  version = "3.6.0";
 
   subPackages = [ "cmd/vale" ];
 
@@ -18,10 +18,10 @@ buildGoModule rec {
     owner = "errata-ai";
     repo = "vale";
     rev = "v${version}";
-    hash = "sha256-9923mmZZmg08Zq+Vbt4zus0UvmsTJ/r1ddVdeOB7yJU=";
+    hash = "sha256-Xkea1o0ywRKIg0cMJuxQehHbgVF0SSC9VRa53FQEong=";
   };
 
-  vendorHash = "sha256-4GtMKhxGkNwF6ydFE708SbzBm9mwCDKtINljTQXwz2c=";
+  vendorHash = "sha256-OLlViQKLTark9yknnjJFiEThFtxNNjue5LUp1P/anKU=";
 
   ldflags = [ "-s" "-w" "-X main.version=${version}" ];
 
@@ -42,7 +42,7 @@ buildGoModule rec {
   };
 
   meta = with lib; {
-    description = "A syntax-aware linter for prose built with speed and extensibility in mind";
+    description = "Syntax-aware linter for prose built with speed and extensibility in mind";
     longDescription = ''
       Vale in Nixpkgs offers the helper `.withStyles` allow you to install it
       predefined styles:
diff --git a/nixpkgs/pkgs/tools/text/vale/styles.nix b/nixpkgs/pkgs/tools/text/vale/styles.nix
index 54764f77ff47..6022d38497a9 100644
--- a/nixpkgs/pkgs/tools/text/vale/styles.nix
+++ b/nixpkgs/pkgs/tools/text/vale/styles.nix
@@ -32,15 +32,15 @@ in
 {
   alex = buildStyle rec {
     name = "alex";
-    version = "0.2.1";
+    version = "0.2.2";
     src = fetchFromGitHub {
       owner = "errata-ai";
       repo = "alex";
       rev = "v${version}";
-      hash = "sha256-xNF7se2FwKgNe5KYx/zvGWpIwBsBADYGH4JV1lUww+Q=";
+      hash = "sha256-mfeMa+KlkqwyS+h+oo5p5+P2bsmZ0BOph2nbQiaoNqM=";
     };
     meta = {
-      description = "A Vale-compatible implementation of the guidelines enforced by the alex linter";
+      description = "Vale-compatible implementation of the guidelines enforced by the alex linter";
       homepage = "https://github.com/errata-ai/alex";
       license = lib.licenses.mit;
     };
@@ -56,7 +56,7 @@ in
       hash = "sha256-jSmfUgzlIbDVh2zLtnTNpM/z6dHMp358F9adLZ5+qcw=";
     };
     meta = {
-      description = "A Vale-compatible implementation of the Google Developer Documentation Style Guide";
+      description = "Vale-compatible implementation of the Google Developer Documentation Style Guide";
       homepage = "https://github.com/errata-ai/Google";
       license = lib.licenses.mit;
     };
@@ -72,7 +72,7 @@ in
       hash = "sha256-zRz5ThOg5RLTZj3dYPe0PDvOF5DjO31lduSpi2Us87U=";
     };
     meta = {
-      description = "A Vale-compatible implementation of the Joblint linter";
+      description = "Vale-compatible implementation of the Joblint linter";
       homepage = "https://github.com/errata-ai/Joblint";
       license = lib.licenses.mit;
     };
@@ -88,7 +88,7 @@ in
       hash = "sha256-4j05bIGAVEy6untUqtrUxdLKlhyOcJsbcsow8OxRp1A=";
     };
     meta = {
-      description = "A Vale-compatible implementation of the Microsoft Writing Style Guide";
+      description = "Vale-compatible implementation of the Microsoft Writing Style Guide";
       homepage = "https://github.com/errata-ai/Microsoft";
       license = lib.licenses.mit;
     };
@@ -96,15 +96,15 @@ in
 
   proselint = buildStyle rec {
     name = "proselint";
-    version = "0.3.3";
+    version = "0.3.4";
     src = fetchFromGitHub {
       owner = "errata-ai";
       repo = "proselint";
       rev = "v${version}";
-      hash = "sha256-faeWr1bRhnKsycJY89WqnRv8qIowUmz3EQvDyjtl63w=";
+      hash = "sha256-ryKJDX1JrvDWVKLC5qQGctweDf74yuwEXxl/IqumM4s=";
     };
     meta = {
-      description = "A Vale-compatible implementation of Python's proselint linter";
+      description = "Vale-compatible implementation of Python's proselint linter";
       homepage = "https://github.com/errata-ai/proselint";
       license = lib.licenses.bsd3;
     };
@@ -128,15 +128,15 @@ in
 
   write-good = buildStyle rec {
     name = "write-good";
-    version = "0.4.0";
+    version = "0.4.1";
     src = fetchFromGitHub {
       owner = "errata-ai";
       repo = "write-good";
       rev = "v${version}";
-      hash = "sha256-KQzY6MeHV/owPVmUAfzGUO0HmFPkD7wdQqOvBkipwP8=";
+      hash = "sha256-W/eHlXklAVlAnY8nLPi/SIKsg8UUnH8UkH99BDo5yKk=";
     };
     meta = {
-      description = "A Vale-compatible implementation of the write-good linter";
+      description = "Vale-compatible implementation of the write-good linter";
       homepage = "https://github.com/errata-ai/write-good";
       license = lib.licenses.mit;
     };
diff --git a/nixpkgs/pkgs/tools/text/validator-nu/default.nix b/nixpkgs/pkgs/tools/text/validator-nu/default.nix
index 56c227b46da4..d52c87e4186b 100644
--- a/nixpkgs/pkgs/tools/text/validator-nu/default.nix
+++ b/nixpkgs/pkgs/tools/text/validator-nu/default.nix
@@ -78,6 +78,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ andersk ivan ];
     mainProgram = "vnu";
+    platforms = lib.platforms.all;
     sourceProvenance = with lib.sourceTypes; [ binaryBytecode fromSource ];
   };
 })
diff --git a/nixpkgs/pkgs/tools/text/vgrep/default.nix b/nixpkgs/pkgs/tools/text/vgrep/default.nix
index 942188730387..9f2f906e9355 100644
--- a/nixpkgs/pkgs/tools/text/vgrep/default.nix
+++ b/nixpkgs/pkgs/tools/text/vgrep/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "vgrep";
-  version = "2.7.0";
+  version = "2.8.0";
 
   src = fetchFromGitHub {
     owner = "vrothberg";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-+KZNNkTuZyF02YDZX3u1KdhOcZ3+Ud6aDGL/sGUN1hI=";
+    hash = "sha256-OQjuNRuzFluZLssM+q+WpoRncdJMj6Sl/A+mUZA7UpI=";
   };
 
   vendorHash = null;
diff --git a/nixpkgs/pkgs/tools/text/wrap/default.nix b/nixpkgs/pkgs/tools/text/wrap/default.nix
index 4eebcf60437b..959c78608db1 100644
--- a/nixpkgs/pkgs/tools/text/wrap/default.nix
+++ b/nixpkgs/pkgs/tools/text/wrap/default.nix
@@ -33,7 +33,7 @@ buildGoModule rec {
   '';
 
   meta = with lib; {
-    description = "A Fountain export tool with some extras";
+    description = "Fountain export tool with some extras";
     homepage = "https://github.com/Wraparound/wrap";
     license = licenses.gpl3Only;
     maintainers = [ maintainers.austinbutler ];
diff --git a/nixpkgs/pkgs/tools/text/xidel/default.nix b/nixpkgs/pkgs/tools/text/xidel/default.nix
index d7fefa2d495d..6a55a5d9e8b1 100644
--- a/nixpkgs/pkgs/tools/text/xidel/default.nix
+++ b/nixpkgs/pkgs/tools/text/xidel/default.nix
@@ -90,7 +90,7 @@ in stdenv.mkDerivation rec {
     mainProgram = "xidel";
     homepage = "https://www.videlibri.de/xidel.html";
     license = licenses.gpl3Plus;
-    platforms = platforms.linux;
+    platforms = platforms.all;
     maintainers = [ maintainers.bjornfor ];
   };
 }
diff --git a/nixpkgs/pkgs/tools/text/xml/jing-trang/default.nix b/nixpkgs/pkgs/tools/text/xml/jing-trang/default.nix
index f13a82faf295..1de721fb0b0e 100644
--- a/nixpkgs/pkgs/tools/text/xml/jing-trang/default.nix
+++ b/nixpkgs/pkgs/tools/text/xml/jing-trang/default.nix
@@ -41,7 +41,7 @@ stdenv.mkDerivation rec {
   checkPhase = "ant test";
 
   meta = with lib; {
-    description = "A RELAX NG validator in Java";
+    description = "RELAX NG validator in Java";
     # The homepage is www.thaiopensource.com, but it links to googlecode.com
     # for downloads and call it the "project site".
     homepage = "https://www.thaiopensource.com/relaxng/trang.html";
diff --git a/nixpkgs/pkgs/tools/text/xml/rxp/default.nix b/nixpkgs/pkgs/tools/text/xml/rxp/default.nix
index b45c89af1c03..fe93607d27f2 100644
--- a/nixpkgs/pkgs/tools/text/xml/rxp/default.nix
+++ b/nixpkgs/pkgs/tools/text/xml/rxp/default.nix
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     license = lib.licenses.gpl2Plus;
-    description = "A validating XML parser written in C";
+    description = "Validating XML parser written in C";
     homepage = "https://www.cogsci.ed.ac.uk/~richard/rxp.html";
     platforms = lib.platforms.unix;
     mainProgram = "rxp";
diff --git a/nixpkgs/pkgs/tools/text/xml/xmlformat/default.nix b/nixpkgs/pkgs/tools/text/xml/xmlformat/default.nix
index ea0e90502dc2..514d691c6a32 100644
--- a/nixpkgs/pkgs/tools/text/xml/xmlformat/default.nix
+++ b/nixpkgs/pkgs/tools/text/xml/xmlformat/default.nix
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = {
-    description = "a configurable formatter (or 'pretty-printer') for XML documents";
+    description = "Configurable formatter (or 'pretty-printer') for XML documents";
     mainProgram = "xmlformat";
     homepage = "http://www.kitebird.com/software/xmlformat/";
     license = lib.licenses.bsd3;
diff --git a/nixpkgs/pkgs/tools/text/xml/xmlstarlet/default.nix b/nixpkgs/pkgs/tools/text/xml/xmlstarlet/default.nix
index b5eb08199fc6..b3ee37d894b1 100644
--- a/nixpkgs/pkgs/tools/text/xml/xmlstarlet/default.nix
+++ b/nixpkgs/pkgs/tools/text/xml/xmlstarlet/default.nix
@@ -40,7 +40,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = {
-    description = "A command line tool for manipulating and querying XML data";
+    description = "Command line tool for manipulating and querying XML data";
     homepage = "https://xmlstar.sourceforge.net/";
     license = lib.licenses.mit;
     mainProgram = "xmlstarlet";
diff --git a/nixpkgs/pkgs/tools/text/xsv/default.nix b/nixpkgs/pkgs/tools/text/xsv/default.nix
index 3e617a621e33..bf5a7ed6b805 100644
--- a/nixpkgs/pkgs/tools/text/xsv/default.nix
+++ b/nixpkgs/pkgs/tools/text/xsv/default.nix
@@ -16,7 +16,7 @@ rustPlatform.buildRustPackage rec {
   buildInputs = lib.optional stdenv.isDarwin Security;
 
   meta = with lib; {
-    description = "A fast CSV toolkit written in Rust";
+    description = "Fast CSV toolkit written in Rust";
     mainProgram = "xsv";
     homepage = "https://github.com/BurntSushi/xsv";
     license = with licenses; [ unlicense /* or */ mit ];