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/chars/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/text/coloursum/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/text/cringify/default.nix34
-rw-r--r--nixpkgs/pkgs/tools/text/csvdiff/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/text/difftastic/Cargo.lock30
-rw-r--r--nixpkgs/pkgs/tools/text/difftastic/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/text/dt/default.nix43
-rw-r--r--nixpkgs/pkgs/tools/text/frogmouth/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/text/groff/0001-Fix-cross-compilation-by-looking-for-ar.patch46
-rw-r--r--nixpkgs/pkgs/tools/text/groff/default.nix28
-rw-r--r--nixpkgs/pkgs/tools/text/groff/site.tmac6
-rw-r--r--nixpkgs/pkgs/tools/text/gtree/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/text/hottext/default.nix40
-rw-r--r--nixpkgs/pkgs/tools/text/igrep/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/text/invoice2data/default.nix24
-rw-r--r--nixpkgs/pkgs/tools/text/mdbook-admonish/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/text/mdbook-emojicodes/default.nix9
-rw-r--r--nixpkgs/pkgs/tools/text/mdbook-i18n-helpers/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/text/mdbook-katex/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/text/mdbook-open-on-gh/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/text/mdbook-toc/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/text/mdbook/default.nix8
-rw-r--r--nixpkgs/pkgs/tools/text/mmdoc/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/text/morsel/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/text/mw/default.nix37
-rw-r--r--nixpkgs/pkgs/tools/text/nltk_data/default.nix50
-rw-r--r--nixpkgs/pkgs/tools/text/repgrep/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/text/riffdiff/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/text/rsbkb/default.nix20
-rw-r--r--nixpkgs/pkgs/tools/text/sad/default.nix9
-rw-r--r--nixpkgs/pkgs/tools/text/shfmt/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/text/textpieces/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/u2ps/default.nix32
-rw-r--r--nixpkgs/pkgs/tools/text/ugrep/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/text/uwc/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/text/vale/default.nix4
36 files changed, 316 insertions, 205 deletions
diff --git a/nixpkgs/pkgs/tools/text/chars/default.nix b/nixpkgs/pkgs/tools/text/chars/default.nix
index 78caf67bc434..74083feb68f5 100644
--- a/nixpkgs/pkgs/tools/text/chars/default.nix
+++ b/nixpkgs/pkgs/tools/text/chars/default.nix
@@ -6,16 +6,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "chars";
-  version = "0.6.0";
+  version = "0.7.0";
 
   src = fetchFromGitHub {
     owner = "antifuchs";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-aswosSXAh0wkO4N/y/H54dufMDrloWjpjrSWHvHR1rc=";
+    sha256 = "sha256-mBtwdPzIc6RgEFTyReStFlhS4UhhRWjBTKT6gD3tzpQ=";
   };
 
-  cargoSha256 = "sha256-CqPmasdpXWjCn65G2Ua0h3v+TVP0QPFAdtKOFyoYW/0=";
+  cargoHash = "sha256-wqyExG4haco6jg1zpbouz3xMR7sjiVIAC16PnDU2tc8=";
 
   buildInputs = lib.optionals stdenv.isDarwin [ Security ];
 
diff --git a/nixpkgs/pkgs/tools/text/coloursum/default.nix b/nixpkgs/pkgs/tools/text/coloursum/default.nix
index 8391b75a67bc..93ebf6c309e4 100644
--- a/nixpkgs/pkgs/tools/text/coloursum/default.nix
+++ b/nixpkgs/pkgs/tools/text/coloursum/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "coloursum";
-  version = "0.2.0";
+  version = "0.3.0";
 
   src = fetchFromGitHub {
     owner = "ticky";
     repo = "coloursum";
     rev = "v${version}";
-    sha256 = "1piz0l7qdcvjzfykm6rzqc8s1daxp3cj3923v9cmm41bc2v0p5q0";
+    hash = "sha256-zA2JhSnlFccSY01WMGsgF4AmrF/3BRUCcSMfoEbEPgA=";
   };
 
-  cargoSha256 = "08l01ivmln9gwabwa1p0gk454qyxlcpnlxx840vys476f4pw7vvf";
+  cargoHash = "sha256-dhcTpff4h37MHNbLoYUZiolSclSGcFrMJ3kKLCZAVAw=";
 
   buildInputs = lib.optional stdenv.isDarwin Security;
 
diff --git a/nixpkgs/pkgs/tools/text/cringify/default.nix b/nixpkgs/pkgs/tools/text/cringify/default.nix
new file mode 100644
index 000000000000..6230f6575c3f
--- /dev/null
+++ b/nixpkgs/pkgs/tools/text/cringify/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, rustPlatform
+, fetchFromGitHub
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "cringify";
+  version = "0.1.1";
+
+  src = fetchFromGitHub {
+    owner = "sansyrox";
+    repo = "cringify";
+    rev = "dd753818f8dd4b343be9370d2c29a6be070ad791";
+    hash = "sha256-6hSgOk9DzDfGtZX1vt6AQsKSLdPdqy2Mz3UtK6d2AuA=";
+  };
+
+  cargoHash = "sha256-w6lqPyUCaXZBQ1EmMyj0sVnEHugMD6JugIIK0rEa19Y=";
+
+  postPatch = ''
+    # Upstream forgot to update the version value
+    substituteInPlace src/main.rs --replace '0.1.0' ${version}
+  '';
+
+  # No tests are present in the repository
+  doCheck = false;
+
+  meta = {
+    description = "Annoy your friends with the cringified text";
+    homepage = "https://github.com/sansyrox/cringify";
+    license = lib.licenses.mit;
+    mainProgram = "cringify";
+    maintainers = with lib.maintainers; [ tomasajt ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/text/csvdiff/default.nix b/nixpkgs/pkgs/tools/text/csvdiff/default.nix
index f85d725d6ca4..236993b2dd25 100644
--- a/nixpkgs/pkgs/tools/text/csvdiff/default.nix
+++ b/nixpkgs/pkgs/tools/text/csvdiff/default.nix
@@ -11,10 +11,10 @@ buildGoModule rec {
     owner = "aswinkarthik";
     repo = "csvdiff";
     rev = "v${version}";
-    sha256 = "0cd1ikxsypjqisfnmr7zix3g7x8p892w77086465chyd39gpk97b";
+    hash = "sha256-66R5XxrNQ1YMMQicw0VCF/XzRo//5Gqdjlher/uMoTE=";
   };
 
-  vendorSha256 = "1612s4kc0r8zw5y2n6agwdx9kwhxkdrjzagn4g22lzmjq02a64xf";
+  vendorHash = "sha256-rhOjBMCyfirEI/apL3ObHfKZeuNPGSt84R9lwCbRIpg=";
 
   meta = with lib; {
     homepage = "https://aswinkarthik.github.io/csvdiff/";
diff --git a/nixpkgs/pkgs/tools/text/difftastic/Cargo.lock b/nixpkgs/pkgs/tools/text/difftastic/Cargo.lock
index 25e3c8e41fe2..1d0974afe898 100644
--- a/nixpkgs/pkgs/tools/text/difftastic/Cargo.lock
+++ b/nixpkgs/pkgs/tools/text/difftastic/Cargo.lock
@@ -142,9 +142,9 @@ dependencies = [
 
 [[package]]
 name = "crossbeam-channel"
-version = "0.5.4"
+version = "0.5.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53"
+checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200"
 dependencies = [
  "cfg-if",
  "crossbeam-utils",
@@ -234,7 +234,7 @@ checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8"
 
 [[package]]
 name = "difftastic"
-version = "0.49.0"
+version = "0.50.0"
 dependencies = [
  "assert_cmd",
  "bumpalo",
@@ -244,6 +244,7 @@ dependencies = [
  "crossterm",
  "glob",
  "hashbrown 0.12.3",
+ "humansize",
  "itertools",
  "lazy_static",
  "libc",
@@ -363,6 +364,15 @@ dependencies = [
 ]
 
 [[package]]
+name = "humansize"
+version = "2.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6cb51c9a029ddc91b07a787f1d86b53ccfa49b0e86688c946ebe8d3555685dd7"
+dependencies = [
+ "libm",
+]
+
+[[package]]
 name = "humantime"
 version = "1.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -403,6 +413,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79"
 
 [[package]]
+name = "libm"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4"
+
+[[package]]
 name = "libmimalloc-sys"
 version = "0.1.24"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -651,9 +667,9 @@ checksum = "59ffec9df464013295b499298811e6a3de31bf8128092135826517db12dee601"
 
 [[package]]
 name = "rayon"
-version = "1.6.1"
+version = "1.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6db3a213adf02b3bcfd2d3846bb41cb22857d131789e01df434fb7e7bc0759b7"
+checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
 dependencies = [
  "either",
  "rayon-core",
@@ -661,9 +677,9 @@ dependencies = [
 
 [[package]]
 name = "rayon-core"
-version = "1.10.1"
+version = "1.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cac410af5d00ab6884528b4ab69d1e8e146e8d471201800fa1b4524126de6ad3"
+checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
 dependencies = [
  "crossbeam-channel",
  "crossbeam-deque",
diff --git a/nixpkgs/pkgs/tools/text/difftastic/default.nix b/nixpkgs/pkgs/tools/text/difftastic/default.nix
index 3842fb6b1473..520afe5a3024 100644
--- a/nixpkgs/pkgs/tools/text/difftastic/default.nix
+++ b/nixpkgs/pkgs/tools/text/difftastic/default.nix
@@ -16,13 +16,13 @@ in
 
 rustPlatform.buildRustPackage rec {
   pname = "difftastic";
-  version = "0.49.0";
+  version = "0.50.0";
 
   src = fetchFromGitHub {
     owner = "wilfred";
     repo = pname;
     rev = version;
-    hash = "sha256-jFBvMRkuAaQAi/28BBf/9cm6FcNMOYS5M69YoSXsX4Q=";
+    hash = "sha256-CC06Bryn5VNEsW4Wwbo+ubifizCWgpWUE1FsAozZcdg=";
   };
 
   cargoLock = {
diff --git a/nixpkgs/pkgs/tools/text/dt/default.nix b/nixpkgs/pkgs/tools/text/dt/default.nix
new file mode 100644
index 000000000000..be5a00f3613f
--- /dev/null
+++ b/nixpkgs/pkgs/tools/text/dt/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, testers
+, zig_0_11
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "dt";
+  version = "1.2.3";
+
+  src = fetchFromGitHub {
+    owner = "so-dang-cool";
+    repo = "dt";
+    rev = "v${finalAttrs.version}";
+    hash = "sha256-C6sG8iqXs64x2AWCxKGFPyoXC1Fn4p2eSLWwJAQ8CSc=";
+  };
+
+  nativeBuildInputs = [ zig_0_11.hook ];
+
+  passthru.tests.version = testers.testVersion { package = finalAttrs.finalPackage; };
+
+  meta = {
+    homepage = "https://dt.plumbing";
+    description = "Duct tape for your unix pipes";
+    longDescription = ''
+      dt is a utility and programming language. The utility is intended for
+      ergonomic in-the-shell execution. The language is straightforward (in
+      the most literal sense) with a minimal syntax that allows for
+      high-level, higher-order programming.
+
+      It's meant to supplement (not replace!) other tools like awk, sed,
+      xargs, and shell built-ins. Something like the Perl one-liners popular
+      yesteryear, but hopefully easier to read and reason through.
+
+      In short, dt is intended to be generally useful, with zero pretense of
+      elegance.
+    '';
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ booniepepper ];
+    mainProgram = "dt";
+  };
+})
diff --git a/nixpkgs/pkgs/tools/text/frogmouth/default.nix b/nixpkgs/pkgs/tools/text/frogmouth/default.nix
index 1fadb827d03c..8e0194005308 100644
--- a/nixpkgs/pkgs/tools/text/frogmouth/default.nix
+++ b/nixpkgs/pkgs/tools/text/frogmouth/default.nix
@@ -5,14 +5,14 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "frogmouth";
-  version = "0.8.0";
+  version = "0.9.0";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "Textualize";
     repo = "frogmouth";
     rev = "v${version}";
-    hash = "sha256-GVXzYPYvqgWRFOZW+dfYVI6Dhk9yUmuJ7V8wtM0VjR0=";
+    hash = "sha256-TMCeIwMEoNDQV9iue4XrdYQMmwofXDvdMMLTZKILQ9Q=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/tools/text/groff/0001-Fix-cross-compilation-by-looking-for-ar.patch b/nixpkgs/pkgs/tools/text/groff/0001-Fix-cross-compilation-by-looking-for-ar.patch
deleted file mode 100644
index 671293cda5b1..000000000000
--- a/nixpkgs/pkgs/tools/text/groff/0001-Fix-cross-compilation-by-looking-for-ar.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 1454525f70b43a6957b7c9e1870e997368787da3 Mon Sep 17 00:00:00 2001
-From: Samuel Dionne-Riel <samuel@dionne-riel.com>
-Date: Fri, 8 Nov 2019 21:59:21 -0500
-Subject: [PATCH] Fix cross-compilation by looking for `ar`.
-
----
- Makefile.am  | 2 +-
- configure.ac | 2 ++
- 2 files changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/Makefile.am b/Makefile.am
-index d18c49b8..b1b53338 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -494,7 +494,7 @@ CCC=@CXX@
- # INSTALL_INFO
- # LN_S
- 
--AR=ar
-+AR=@AR@
- ETAGS=etags
- ETAGSFLAGS=
- # Flag that tells etags to assume C++.
-diff --git a/configure.ac b/configure.ac
-index 28e75f17..2449b9f5 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -37,6 +37,7 @@ AC_CONFIG_AUX_DIR([build-aux])
- 
- AC_CONFIG_HEADERS([src/include/config.h:src/include/config.hin])
- AC_CONFIG_SRCDIR([src/roff/groff/groff.cpp])
-+AC_CONFIG_MACRO_DIR([m4])
- 
- AC_USE_SYSTEM_EXTENSIONS
- 
-@@ -72,6 +73,7 @@ GROFF_DOC_CHECK
- GROFF_MAKEINFO
- GROFF_TEXI2DVI
- AC_PROG_RANLIB
-+AC_CHECK_TOOL([AR], [ar], [ar])
- GROFF_INSTALL_SH
- GROFF_INSTALL_INFO
- AC_PROG_INSTALL
--- 
-2.23.0
-
diff --git a/nixpkgs/pkgs/tools/text/groff/default.nix b/nixpkgs/pkgs/tools/text/groff/default.nix
index ae250f2efeea..df06292c4f3e 100644
--- a/nixpkgs/pkgs/tools/text/groff/default.nix
+++ b/nixpkgs/pkgs/tools/text/groff/default.nix
@@ -14,30 +14,16 @@
 
 stdenv.mkDerivation rec {
   pname = "groff";
-  version = "1.22.4";
+  version = "1.23.0";
 
   src = fetchurl {
     url = "mirror://gnu/groff/${pname}-${version}.tar.gz";
-    sha256 = "14q2mldnr1vx0l9lqp9v2f6iww24gj28iyh4j2211hyynx67p3p7";
+    hash = "sha256-a5dX9ZK3UYtJAutq9+VFcL3Mujeocf3bLTCuOGNRHBM=";
   };
 
   outputs = [ "out" "man" "doc" "info" "perl" ];
 
-  # Parallel build is failing for missing depends. Known upstream as:
-  #   https://savannah.gnu.org/bugs/?62084
-  #   fixed, planned release: 1.23.0
-  enableParallelBuilding = false;
-
-  patches = [
-    ./0001-Fix-cross-compilation-by-looking-for-ar.patch
-  ]
-  ++ lib.optionals (stdenv.cc.isClang && lib.versionAtLeast stdenv.cc.version "9") [
-    # https://trac.macports.org/ticket/59783
-    (fetchpatch {
-      url = "https://raw.githubusercontent.com/openembedded/openembedded-core/ce265cf467f1c3e5ba2edbfbef2170df1a727a52/meta/recipes-extended/groff/files/0001-Include-config.h.patch";
-      sha256 = "1b0mg31xkpxkzlx696nr08rcc7ndpaxdplvysy0hw5099c4n1wyf";
-    })
-  ];
+  enableParallelBuilding = true;
 
   postPatch = ''
     # BASH_PROG gets replaced with a path to the build bash which doesn't get automatically patched by patchShebangs
@@ -53,8 +39,7 @@ stdenv.mkDerivation rec {
       --replace "pnmcrop" "${lib.getBin netpbm}/bin/pnmcrop" \
       --replace "pngtopnm" "${lib.getBin netpbm}/bin/pngtopnm" \
       --replace "@PNMTOPS_NOSETPAGE@" "${lib.getBin netpbm}/bin/pnmtops -nosetpage"
-    substituteInPlace contrib/groffer/roff2.pl \
-      --replace "'gs'" "'${lib.getBin ghostscript}/bin/gs'"
+  '' + lib.optionalString (enableGhostscript || enableHtml) ''
     substituteInPlace contrib/pdfmark/pdfroff.sh \
       --replace '$GROFF_GHOSTSCRIPT_INTERPRETER' "${lib.getBin ghostscript}/bin/gs" \
       --replace '$GROFF_AWK_INTERPRETER' "${lib.getBin gawk}/bin/gawk"
@@ -119,11 +104,6 @@ stdenv.mkDerivation rec {
     substituteInPlace $perl/bin/gpinyin \
       --replace $out/lib/groff/gpinyin $perl/lib/groff/gpinyin
 
-    moveToOutput bin/groffer $perl
-    moveToOutput lib/groff/groffer $perl
-    substituteInPlace $perl/bin/groffer \
-      --replace $out/lib/groff/groffer $perl/lib/groff/groffer
-
     moveToOutput bin/grog $perl
     moveToOutput lib/groff/grog $perl
     substituteInPlace $perl/bin/grog \
diff --git a/nixpkgs/pkgs/tools/text/groff/site.tmac b/nixpkgs/pkgs/tools/text/groff/site.tmac
index 776a7abb1da7..07923f120009 100644
--- a/nixpkgs/pkgs/tools/text/groff/site.tmac
+++ b/nixpkgs/pkgs/tools/text/groff/site.tmac
@@ -9,11 +9,5 @@
 .    char \' \N'39'
 .  \}
 .
-.  \" Shut off SGR by default (groff colors)
-.  \" Require GROFF_SGR envvar defined to turn it on
-.  if '\V[GROFF_SGR]'' \
-.    output x X tty: sgr 0
-.\}
-.
 .ds doc-default-operating-system Nixpkgs
 .ds doc-volume-operating-system Nixpkgs
diff --git a/nixpkgs/pkgs/tools/text/gtree/default.nix b/nixpkgs/pkgs/tools/text/gtree/default.nix
index 11571a8e8c8c..db51febfdc4d 100644
--- a/nixpkgs/pkgs/tools/text/gtree/default.nix
+++ b/nixpkgs/pkgs/tools/text/gtree/default.nix
@@ -7,13 +7,13 @@
 
 buildGoModule rec {
   pname = "gtree";
-  version = "1.9.4";
+  version = "1.9.5";
 
   src = fetchFromGitHub {
     owner = "ddddddO";
     repo = "gtree";
     rev = "v${version}";
-    hash = "sha256-uTU8HKDNvoLGan5OtZxujtEJvAzEhi0L/Z2AgdrDAfU=";
+    hash = "sha256-qbAus0RgocbkC9eOmoiAOoyZw58LPDZlJgoRA/SzhQI=";
   };
 
   vendorHash = "sha256-QxcDa499XV43p8fstENOtfe3iZ176R5/Ub5iovXlYIM=";
diff --git a/nixpkgs/pkgs/tools/text/hottext/default.nix b/nixpkgs/pkgs/tools/text/hottext/default.nix
deleted file mode 100644
index f6c70013b4ce..000000000000
--- a/nixpkgs/pkgs/tools/text/hottext/default.nix
+++ /dev/null
@@ -1,40 +0,0 @@
-{ lib, nimPackages, fetchurl, gentium, makeDesktopItem }:
-
-nimPackages.buildNimPackage rec {
-  pname = "hottext";
-  version = "1.4";
-
-  nimBinOnly = true;
-
-  src = fetchurl {
-    url = "https://git.sr.ht/~ehmry/hottext/archive/v${version}.tar.gz";
-    sha256 = "sha256-hIUofi81zowSMbt1lUsxCnVzfJGN3FEiTtN8CEFpwzY=";
-  };
-
-  buildInputs = with nimPackages; [
-    pixie
-    sdl2
-  ];
-
-  HOTTEXT_FONT_PATH = "${gentium}/share/fonts/truetype/GentiumPlus-Regular.ttf";
-
-  desktopItem = makeDesktopItem {
-    categories = [ "Utility" ];
-    comment = meta.description;
-    desktopName = pname;
-    exec = pname;
-    name = pname;
-  };
-
-  postInstall = ''
-    cp -r $desktopItem/* $out
-  '';
-
-  meta = with lib; {
-    broken = true; # Needs to be updated to latest Pixie API.
-    description = "Simple RSVP speed-reading utility";
-    license = licenses.unlicense;
-    homepage = "https://git.sr.ht/~ehmry/hottext";
-    maintainers = with maintainers; [ ehmry ];
-  };
-}
diff --git a/nixpkgs/pkgs/tools/text/igrep/default.nix b/nixpkgs/pkgs/tools/text/igrep/default.nix
index 1e17cda75d5f..34f9202cfa05 100644
--- a/nixpkgs/pkgs/tools/text/igrep/default.nix
+++ b/nixpkgs/pkgs/tools/text/igrep/default.nix
@@ -9,16 +9,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "igrep";
-  version = "1.1.0";
+  version = "1.2.0";
 
   src = fetchFromGitHub {
     owner = "konradsz";
     repo = "igrep";
     rev = "v${version}";
-    sha256 = "sha256-g6DY3+HwBNQ+jxByXyTJK5CjAaC48FpmsDf1qGGO/Lk=";
+    sha256 = "sha256-L5mHuglU0CvTi02pbR8xfezBoH8L/DS+7jgvYvb4yro=";
   };
 
-  cargoHash = "sha256-7cSUIwWyWPxFDuRWplidbI93zbBV84T7e4Q//Uwj6N4=";
+  cargoHash = "sha256-k63tu5Ffus4z0yd8vQ79q4+tokWAXD05Pvv9JByfnDg=";
 
   buildInputs = lib.optionals stdenv.isDarwin [ Security ];
 
diff --git a/nixpkgs/pkgs/tools/text/invoice2data/default.nix b/nixpkgs/pkgs/tools/text/invoice2data/default.nix
index acb4e373e809..fd5ead9e0c35 100644
--- a/nixpkgs/pkgs/tools/text/invoice2data/default.nix
+++ b/nixpkgs/pkgs/tools/text/invoice2data/default.nix
@@ -1,5 +1,6 @@
 { lib
 , fetchFromGitHub
+, fetchpatch
 , ghostscript
 , imagemagick
 , poppler_utils
@@ -16,26 +17,29 @@ python3.pkgs.buildPythonApplication rec {
     owner = "invoice-x";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-ss2h8cg0sga+lzJyQHckrZB/Eb63Oj3FkqmGqWCzCQ8=";
+    hash = "sha256-ss2h8cg0sga+lzJyQHckrZB/Eb63Oj3FkqmGqWCzCQ8=";
   };
 
-  buildInputs = with python3.pkgs; [ setuptools-git ];
+  patches = [
+    # https://github.com/invoice-x/invoice2data/pull/522
+    (fetchpatch {
+      name = "clean-up-build-dependencies.patch";
+      url = "https://github.com/invoice-x/invoice2data/commit/ccea3857c7c8295ca51dc24de6cde78774ea7e64.patch";
+      hash = "sha256-BhqPW4hWG/EaR3qBv5a68dcvIMrCCT74GdDHr0Mss5Q=";
+    })
+  ];
+
+  nativeBuildInputs = with python3.pkgs; [
+    setuptools-git
+  ];
 
   propagatedBuildInputs = with python3.pkgs; [
-    chardet
     dateparser
     pdfminer-six
     pillow
     pyyaml
-    setuptools
-    unidecode
   ];
 
-  postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace "pytest-runner" ""
-  '';
-
   makeWrapperArgs = ["--prefix" "PATH" ":" (lib.makeBinPath [
     ghostscript
     imagemagick
diff --git a/nixpkgs/pkgs/tools/text/mdbook-admonish/default.nix b/nixpkgs/pkgs/tools/text/mdbook-admonish/default.nix
index 1da9b14747d0..5ba3fe700a74 100644
--- a/nixpkgs/pkgs/tools/text/mdbook-admonish/default.nix
+++ b/nixpkgs/pkgs/tools/text/mdbook-admonish/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "mdbook-admonish";
-  version = "1.9.0";
+  version = "1.10.2";
 
   src = fetchFromGitHub {
     owner = "tommilligan";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-B0WfOvt037U56G9C7vfAVP4CElodszEUj8h/UD+qv4I=";
+    hash = "sha256-2c1wSij2MDRdrqxN+cmnFO0z6mH/fgeg9E3cm+8ssww=";
   };
 
-  cargoHash = "sha256-EmNy7YjltUgPgAp/L/VjCVG2pu//o7Bq7v+B3vO5ipM=";
+  cargoHash = "sha256-UXH0SstMVprgezyr3I/6rv2uCMdDUUSIsQ3MJ49tdoI=";
 
   buildInputs = lib.optionals stdenv.isDarwin [ CoreServices ];
 
diff --git a/nixpkgs/pkgs/tools/text/mdbook-emojicodes/default.nix b/nixpkgs/pkgs/tools/text/mdbook-emojicodes/default.nix
index 01ce8fb3e9db..63bf0dc6daf1 100644
--- a/nixpkgs/pkgs/tools/text/mdbook-emojicodes/default.nix
+++ b/nixpkgs/pkgs/tools/text/mdbook-emojicodes/default.nix
@@ -7,16 +7,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "mdbook-emojicodes";
-  version = "0.1.3";
+  version = "0.2.2";
 
   src = fetchFromGitHub {
     owner = "blyxyas";
     repo = "mdbook-emojicodes";
-    rev = "${version}.1";
-    hash = "sha256-SWT01R/+FuzkkOUd/2wpRo0HIaPEtzDelTSh7ewo9gQ=";
+    rev = "${version}";
+    hash = "sha256-wj3WVDDJmRh1g4E1iqxqmu6QNNVi9pOqZDnnDX3AnFo=";
   };
 
-  cargoHash = "sha256-z9UKBBCr8R1I9k48JsEBnVokQDfaj9lt+qfIUvJ/5lE=";
+  cargoHash = "sha256-Ia7GdMadx1Jb1BB040eRmyIpK98CsN3yjruUxUNh3co=";
 
   buildInputs = lib.optionals stdenv.isDarwin [
     darwin.apple_sdk.frameworks.CoreFoundation
@@ -25,6 +25,7 @@ rustPlatform.buildRustPackage rec {
   meta = with lib; {
     description = "MDBook preprocessor for converting emojicodes (e.g. `: cat :`) into emojis 🐱";
     homepage = "https://github.com/blyxyas/mdbook-emojicodes";
+    changelog = "https://github.com/blyxyas/mdbook-emojicodes/releases/tag/${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ blaggacao ];
   };
diff --git a/nixpkgs/pkgs/tools/text/mdbook-i18n-helpers/default.nix b/nixpkgs/pkgs/tools/text/mdbook-i18n-helpers/default.nix
index 30b19076f94e..4231f1ee65a3 100644
--- a/nixpkgs/pkgs/tools/text/mdbook-i18n-helpers/default.nix
+++ b/nixpkgs/pkgs/tools/text/mdbook-i18n-helpers/default.nix
@@ -5,16 +5,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "mdbook-i18n-helpers";
-  version = "0.1.0";
+  version = "0.2.0";
 
   src = fetchFromGitHub {
     owner = "google";
     repo = "mdbook-i18n-helpers";
     rev = "refs/tags/${version}";
-    hash = "sha256-3J7uHjHOpK2ympCZxtKieJamYepRQiBGIFo6HAQMGJ0=";
+    hash = "sha256-j5nbAgbCuz8urvdYPTTtGDnWwY/FxKNnwbeSTcuyIKw=";
   };
 
-  cargoHash = "sha256-cAuKQm0RZx3VRmLIL3WShsOlZMd6szI7cd9A0A4o8x8=";
+  cargoHash = "sha256-lDHq4KRYIeCddhFGQDWOx9olcOASjOke/h22Qm4wv6Q=";
 
   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 be83e0f98468..35f43ee46703 100644
--- a/nixpkgs/pkgs/tools/text/mdbook-katex/default.nix
+++ b/nixpkgs/pkgs/tools/text/mdbook-katex/default.nix
@@ -2,14 +2,14 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "mdbook-katex";
-  version = "0.5.6";
+  version = "0.5.7";
 
   src = fetchCrate {
     inherit pname version;
-    hash = "sha256-aG7mXMDogGfAHwz+itJthl7sJ4o+Oz5RnrTHNstrh28=";
+    hash = "sha256-yOZTvCuxb2dqH06xgvS2+Vz9Vev0mI/ZEzdL8JPMu8s=";
   };
 
-  cargoHash = "sha256-LE9NalzCTYvcj7WwQKVc7HkbyUj9zQIA2RfK8uxNfOk=";
+  cargoHash = "sha256-zjBPOEv8jCn48QbK512O3PfLLeozr8ZHkZcfRQSQnvY=";
 
   buildInputs = lib.optionals stdenv.isDarwin [ CoreServices ];
 
diff --git a/nixpkgs/pkgs/tools/text/mdbook-open-on-gh/default.nix b/nixpkgs/pkgs/tools/text/mdbook-open-on-gh/default.nix
index 29c6e54ee5f6..a570d6805928 100644
--- a/nixpkgs/pkgs/tools/text/mdbook-open-on-gh/default.nix
+++ b/nixpkgs/pkgs/tools/text/mdbook-open-on-gh/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "mdbook-open-on-gh";
-  version = "2.3.3";
+  version = "2.4.1";
 
   src = fetchFromGitHub {
     owner = "badboy";
     repo = pname;
     rev = version;
-    hash = "sha256-K7SkfUxav/r8icrpdfnpFTSZdYV9qUEvYZ2dGSbaP0w=";
+    hash = "sha256-d+8/7lli6iyzAWHIi0ahwPBwGhXrQrCKQisD2+jPHQ0=";
   };
 
-  cargoHash = "sha256-Uvg0h0s3xtv/bVjqWLldvM/R5HQ6yoHdnBXvpUp/E3A=";
+  cargoHash = "sha256-WbPYrjDMJEwle+Pev5nr9ZhnycbXUjdrx8XAqQ0OpaM=";
 
   meta = with lib; {
     description = "mdbook preprocessor to add a open-on-github link on every page";
diff --git a/nixpkgs/pkgs/tools/text/mdbook-toc/default.nix b/nixpkgs/pkgs/tools/text/mdbook-toc/default.nix
index 3fc144ff84e6..52e8070e0794 100644
--- a/nixpkgs/pkgs/tools/text/mdbook-toc/default.nix
+++ b/nixpkgs/pkgs/tools/text/mdbook-toc/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "mdbook-toc";
-  version = "0.13.0";
+  version = "0.14.1";
 
   src = fetchFromGitHub {
     owner = "badboy";
     repo = pname;
     rev = version;
-    sha256 = "sha256-Z3ZspXD7M3VVi70+dRz7NhO6msw5htmPRX6VzhA9NPY=";
+    sha256 = "sha256-F0dIqtDEOVUXlWhmXKPOaJTEuA3Tl3h0vaEu7VsBo7s=";
   };
 
-  cargoHash = "sha256-5EC9xfjSg0sIkZ2fIkX3SrwL0wzBfpIObFQpkMRj6oM=";
+  cargoHash = "sha256-gbBX6Hj+271BA9FWmkZdyR0tMP2Lny7UgW0o+kZe9bU=";
 
   buildInputs = lib.optionals stdenv.isDarwin [ CoreServices ];
 
diff --git a/nixpkgs/pkgs/tools/text/mdbook/default.nix b/nixpkgs/pkgs/tools/text/mdbook/default.nix
index 084980ebda29..80afa9533084 100644
--- a/nixpkgs/pkgs/tools/text/mdbook/default.nix
+++ b/nixpkgs/pkgs/tools/text/mdbook/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "mdbook";
-  version = "0.4.32";
+  version = "0.4.34";
 
   src = fetchFromGitHub {
     owner = "rust-lang";
     repo = "mdBook";
     rev = "refs/tags/v${version}";
-    sha256 = "sha256-+Cb4ZFkJu6z2x/HqQkVqb2J0tFuj78TAmzhp2VPiai0=";
+    sha256 = "sha256-QkgsFnX6J0ZgXCzGE/dTNLxdXLhCFwLsZCvmZ4SU4Zs=";
   };
 
-  cargoHash = "sha256-Jj5AWapZUzd/ZZQvvlSWOv2dX4AhJyHKEncIPdLL7cA=";
+  cargoHash = "sha256-Dhblzn7NytYeY76RmvI8cNjChnCSnTPadxPKyU5QT1Q=";
 
   buildInputs = lib.optionals stdenv.isDarwin [ CoreServices ];
 
@@ -26,6 +26,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/rust-lang/mdBook";
     changelog = "https://github.com/rust-lang/mdBook/blob/v${version}/CHANGELOG.md";
     license = [ licenses.mpl20 ];
-    maintainers = with maintainers; [ havvy Frostman ];
+    maintainers = with maintainers; [ havvy Frostman matthiasbeyer ];
   };
 }
diff --git a/nixpkgs/pkgs/tools/text/mmdoc/default.nix b/nixpkgs/pkgs/tools/text/mmdoc/default.nix
index 470e14988947..a570d0b9558e 100644
--- a/nixpkgs/pkgs/tools/text/mmdoc/default.nix
+++ b/nixpkgs/pkgs/tools/text/mmdoc/default.nix
@@ -12,13 +12,13 @@
 
 stdenv.mkDerivation rec {
   pname = "mmdoc";
-  version = "0.14.0";
+  version = "0.15.0";
 
   src = fetchFromGitHub {
     owner = "ryantm";
     repo = "mmdoc";
     rev = version;
-    hash = "sha256-1e6TS4TjshicUdT7wuvLsDpotr2LUxbn15r+eNXMo2M=";
+    hash = "sha256-xOi91BSQh+AN13V6YyAzOe7kUsyPAvUKWTJ+PUPlPJQ=";
   };
 
   nativeBuildInputs = [ ninja meson pkg-config xxd ];
diff --git a/nixpkgs/pkgs/tools/text/morsel/default.nix b/nixpkgs/pkgs/tools/text/morsel/default.nix
index dc0fa9ef9b29..b761b03e83d0 100644
--- a/nixpkgs/pkgs/tools/text/morsel/default.nix
+++ b/nixpkgs/pkgs/tools/text/morsel/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "morsel";
-  version = "0.1.0";
+  version = "0.1.1";
 
   src = fetchFromGitHub {
     owner = "SamLee514";
     repo = "morsel";
     rev = "v${version}";
-    sha256 = "sha256-m4bCni/9rMTPhZSogpd5+ARrW11TPHSvQpdz3wUr9H4=";
+    hash = "sha256-bb+88GIyd92kHJAs25mJ9vmq0Ha2q0fdHnpTXhX2BFE=";
   };
 
-  cargoSha256 = "sha256-2xR2/013ocDKWS1oWitpAbSDPRwEJJqFcCIm6ZQpCoc=";
+  cargoHash = "sha256-XRl71n+rV6MTQMz957K5/25SX9HvYVW6qAuHTdfRLLs=";
 
   meta = with lib; {
     description = "Command line tool to translate morse code input to text in real time";
diff --git a/nixpkgs/pkgs/tools/text/mw/default.nix b/nixpkgs/pkgs/tools/text/mw/default.nix
new file mode 100644
index 000000000000..c85b01828037
--- /dev/null
+++ b/nixpkgs/pkgs/tools/text/mw/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, buildNpmPackage
+}:
+
+buildNpmPackage rec {
+  pname = "mw";
+  version = "unstable-2023-08-04";
+
+  src = fetchFromGitHub {
+    owner = "mark-when";
+    repo = "mw";
+    rev = "a8676da1c7812a051456fabcb980c52a72f6e75e";
+    hash = "sha256-i95WuTH8qY+0PYQA9kOykQL+4d4oB2Hlvg9sfGtDeCo=";
+  };
+
+  npmDepsHash = "sha256-D1hTaoM4j81qrrLMoKJ7OxJTfRoht3/yqgJs95EFxY4=";
+
+  # correctly substitute the usage message
+  postPatch = ''
+    substituteInPlace src/index.ts  --replace \
+    '.usage("$0' '.usage("mw'
+  '';
+
+  meta = {
+    changelog = "https://github.com/mark-when/mw/blob/${src.rev}/CHANGELOG.md";
+    description = "Markwhen CLI";
+    homepage = "https://github.com/mark-when/mw";
+    license = lib.licenses.mit;
+    longDescription = ''
+      Markwhen is an interactive text-to-timeline tool. Write markdown-ish text and it gets converted into a nice looking cascading timeline.
+    '';
+    mainProgram = "mw";
+    maintainers = with lib.maintainers; [ dit7ya ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/text/nltk_data/default.nix b/nixpkgs/pkgs/tools/text/nltk_data/default.nix
new file mode 100644
index 000000000000..1e2d803a21ce
--- /dev/null
+++ b/nixpkgs/pkgs/tools/text/nltk_data/default.nix
@@ -0,0 +1,50 @@
+{ lib, newScope, fetchFromGitHub, unzip, stdenvNoCC }:
+let
+  base = {
+    version = "unstable-2023-02-02";
+    nativeBuildInputs = [ unzip ];
+    dontBuild = true;
+    meta = with lib; {
+      description = "NLTK Data";
+      homepage = "https://github.com/nltk/nltk_data";
+      license = licenses.asl20;
+      platforms = platforms.all;
+      maintainers = with maintainers; [ happysalada ];
+    };
+  };
+  makeNltkDataPackage = {pname, location, hash}:
+    let
+      src = fetchFromGitHub {
+        owner = "nltk";
+        repo = "nltk_data";
+        rev = "5db857e6f7df11eabb5e5665836db9ec8df07e28";
+        inherit hash;
+        sparseCheckout = [ "${location}/${pname}.zip" ];
+      };
+    in
+    stdenvNoCC.mkDerivation (base // {
+      inherit pname src;
+      version = base.version;
+      installPhase = ''
+        runHook preInstall
+
+        mkdir -p $out
+        unzip ${src}/${location}/${pname}.zip
+        cp -R ${pname}/ $out/
+
+        runHook postInstall
+      '';
+    });
+in
+lib.makeScope newScope (self: {
+  punkt = makeNltkDataPackage ({
+    pname = "punkt";
+    location = "packages/tokenizers";
+    hash = "sha256-rMkgn3xzmSJNv8//kqbPF2Xq3Gf16lgA1Wx8FPYbaQo=";
+  });
+  averaged_perceptron_tagger = makeNltkDataPackage ({
+    pname = "averaged_perceptron_tagger";
+    location = "packages/taggers";
+    hash = "sha256-ilTs4HWPUoHxQb4kWEy3wJ6QsE/98+EQya44gtV2inw=";
+  });
+})
diff --git a/nixpkgs/pkgs/tools/text/repgrep/default.nix b/nixpkgs/pkgs/tools/text/repgrep/default.nix
index 5bce7d2f2b92..cefc0fba0349 100644
--- a/nixpkgs/pkgs/tools/text/repgrep/default.nix
+++ b/nixpkgs/pkgs/tools/text/repgrep/default.nix
@@ -9,16 +9,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "repgrep";
-  version = "0.14.2";
+  version = "0.14.3";
 
   src = fetchFromGitHub {
     owner = "acheronfail";
     repo = "repgrep";
     rev = version;
-    hash = "sha256-sclBzv3F3M3oARRm0cNg/ABomzfgbDp0cFOXkRYjGEY=";
+    hash = "sha256-33b0dZJY/lnVJGMfAg/faD6PPJIFZsvMZOmKAqCZw8k=";
   };
 
-  cargoHash = "sha256-o6pF32sNiDuCjsBaa5beZyFCv1PoqALZOhAb0GF0XyQ=";
+  cargoHash = "sha256-UMMTdWJ0/M8lN4abTJEVUGtoNp/g49DyW+OASg3TKfg=";
 
   nativeBuildInputs = [
     asciidoctor
diff --git a/nixpkgs/pkgs/tools/text/riffdiff/default.nix b/nixpkgs/pkgs/tools/text/riffdiff/default.nix
index 7511f69c70c8..f78ddaf9c829 100644
--- a/nixpkgs/pkgs/tools/text/riffdiff/default.nix
+++ b/nixpkgs/pkgs/tools/text/riffdiff/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "riffdiff";
-  version = "2.23.3";
+  version = "2.25.0";
 
   src = fetchFromGitHub {
     owner = "walles";
     repo = "riff";
     rev = version;
-    hash = "sha256-5C2Q9moFo39zeLK0PkY6S74I/MI8TVpD3tRAaX4TMT4=";
+    hash = "sha256-/V9xp5ew+oL3AIBsgDaAa6LE5Ko/ae7VW47QATtqG1I=";
   };
 
-  cargoHash = "sha256-xHdlU9YXvEvfspDntLLgWr/knAfjMmiWK9JCV9wtIIE=";
+  cargoHash = "sha256-pWMsmQ4JqlHgdP5TUgwZ6fwdEjKrilI5Rla6XLjaBF8=";
 
   meta = with lib; {
     description = "A diff filter highlighting which line parts have changed";
diff --git a/nixpkgs/pkgs/tools/text/rsbkb/default.nix b/nixpkgs/pkgs/tools/text/rsbkb/default.nix
index 19ec2bcf7b14..fd02babac0b0 100644
--- a/nixpkgs/pkgs/tools/text/rsbkb/default.nix
+++ b/nixpkgs/pkgs/tools/text/rsbkb/default.nix
@@ -1,29 +1,29 @@
-{ lib,
-  fetchFromGitHub,
-  rustPlatform,
-  enableAppletSymlinks ? true,
+{ lib
+, fetchFromGitHub
+, rustPlatform
+, enableAppletSymlinks ? true
 }:
 
 rustPlatform.buildRustPackage rec {
   pname = "rsbkb";
-  version = "1.1";
+  version = "1.2";
 
   src = fetchFromGitHub {
     owner = "trou";
     repo = "rsbkb";
     rev = "release-${version}";
-    hash = "sha256-SqjeH0eOo+upSfPWh2IW75p1VHMqmzAbCchDrXhvMxs=";
+    hash = "sha256-Y6YTjEbefNUPcl6rNYWVZLGZYTUPr5pvfLabS+zDWqA=";
   };
-  cargoSha256 = "N3Xlw2JzTjqWLiVNCZaomsWQl330kGVlwdz4Gf05TGU=";
+
+  cargoHash = "sha256-RMX+ZdPaqtqRJvhHFJJrPZnBGwQwZSCXNg1oNo+v2+8=";
 
   # Setup symlinks for all the utilities,
   # busybox style
-  postInstall = lib.optionalString enableAppletSymlinks
-    ''
+  postInstall = lib.optionalString enableAppletSymlinks ''
     cd $out/bin || exit 1
     path="$(realpath --canonicalize-missing ./rsbkb)"
     for i in $(./rsbkb list) ; do ln -s $path $i ; done
-    '';
+  '';
 
   meta = with lib; {
     description = "Command line tools to encode/decode things";
diff --git a/nixpkgs/pkgs/tools/text/sad/default.nix b/nixpkgs/pkgs/tools/text/sad/default.nix
index 9225fd98b86c..da4ff0804b11 100644
--- a/nixpkgs/pkgs/tools/text/sad/default.nix
+++ b/nixpkgs/pkgs/tools/text/sad/default.nix
@@ -1,20 +1,23 @@
 { lib
 , fetchFromGitHub
 , rustPlatform
+, python3
 }:
 
 rustPlatform.buildRustPackage rec {
   pname = "sad";
-  version = "0.4.22";
+  version = "0.4.23";
 
   src = fetchFromGitHub {
     owner = "ms-jpq";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-v1fXEC+bV561cewH17x+1anhfXstGBOHG5rHvhYIvLo=";
+    hash = "sha256-LNMc+3pXx7VyNq0dws+s13ZA3+f8aJzgbAxzI71NKx0=";
   };
 
-  cargoSha256 = "sha256-krQTa9R3hmMVKLoBgnbCw+aSQu9HUXfA3XflB8AZv6w=";
+  cargoHash = "sha256-UjXJmH4UI5Vey2rBy57CI1r13bpGYhIozEoOoyoRDLQ=";
+
+  nativeBuildInputs = [ python3 ];
 
   # fix for compilation on aarch64
   # see https://github.com/NixOS/nixpkgs/issues/145726
diff --git a/nixpkgs/pkgs/tools/text/shfmt/default.nix b/nixpkgs/pkgs/tools/text/shfmt/default.nix
index 3f672f23500f..eeeae662efc5 100644
--- a/nixpkgs/pkgs/tools/text/shfmt/default.nix
+++ b/nixpkgs/pkgs/tools/text/shfmt/default.nix
@@ -33,5 +33,6 @@ buildGoModule rec {
     '';
     license = licenses.bsd3;
     maintainers = with maintainers; [ zowoq SuperSandro2000 ];
+    mainProgram = "shfmt";
   };
 }
diff --git a/nixpkgs/pkgs/tools/text/textpieces/default.nix b/nixpkgs/pkgs/tools/text/textpieces/default.nix
index d9bd7a07b828..9cea993710a8 100644
--- a/nixpkgs/pkgs/tools/text/textpieces/default.nix
+++ b/nixpkgs/pkgs/tools/text/textpieces/default.nix
@@ -44,6 +44,7 @@ stdenv.mkDerivation (finalAttrs: {
     wrapGAppsHook4
     appstream-glib
     desktop-file-utils
+    gobject-introspection
   ];
 
   buildInputs = [
@@ -54,7 +55,6 @@ stdenv.mkDerivation (finalAttrs: {
     libgee
     json-glib
     gtksourceview5
-    gobject-introspection
   ];
 
   runtimeDependencies = [
diff --git a/nixpkgs/pkgs/tools/text/u2ps/default.nix b/nixpkgs/pkgs/tools/text/u2ps/default.nix
new file mode 100644
index 000000000000..95d46db42ed2
--- /dev/null
+++ b/nixpkgs/pkgs/tools/text/u2ps/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, ghostscript_headless
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "u2ps";
+  version = "1.2";
+
+  src = fetchFromGitHub {
+    owner = "arsv";
+    repo = "u2ps";
+    rev = finalAttrs.version;
+    hash = "sha256-sa0CL47PwYVDykxzF8KeWhz7HXAX6jZ0AcfecD+aFyg=";
+  };
+
+  buildInputs = [ ghostscript_headless ];
+
+  meta = with lib; {
+    description = "Unicode text to postscript converter";
+    homepage = "https://github.com/arsv/u2ps";
+    license = licenses.gpl3Plus;
+    longDescription = ''
+      U2ps is a text to postscript converter similar to a2ps,
+      with emphasis on Unicode support.
+    '';
+    mainProgram = "u2ps";
+    maintainers = [ maintainers.athas ];
+    platforms = platforms.unix;
+  };
+})
diff --git a/nixpkgs/pkgs/tools/text/ugrep/default.nix b/nixpkgs/pkgs/tools/text/ugrep/default.nix
index 9ec13678f2d1..354cdc350833 100644
--- a/nixpkgs/pkgs/tools/text/ugrep/default.nix
+++ b/nixpkgs/pkgs/tools/text/ugrep/default.nix
@@ -7,17 +7,18 @@
 , pcre2
 , xz
 , zlib
+, zstd
 }:
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "ugrep";
-  version = "3.12.3";
+  version = "4.0.0";
 
   src = fetchFromGitHub {
     owner = "Genivia";
     repo = "ugrep";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-KP8SpeHGOdIKnA+xavdkoj3XRU572RZtFH0DaW28m+k=";
+    hash = "sha256-kRpHJl/ouYgvwFMk6uO4XobyT2kTCH9kLfeF70IqMuc=";
   };
 
   buildInputs = [
@@ -27,6 +28,7 @@ stdenv.mkDerivation (finalAttrs: {
     pcre2
     xz
     zlib
+    zstd
   ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/tools/text/uwc/default.nix b/nixpkgs/pkgs/tools/text/uwc/default.nix
index 14fe74723a3b..dc34ecfacff2 100644
--- a/nixpkgs/pkgs/tools/text/uwc/default.nix
+++ b/nixpkgs/pkgs/tools/text/uwc/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "uwc";
-  version = "1.0.4";
+  version = "1.0.5";
 
   src = fetchFromGitLab {
     owner = "dead10ck";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1ywqq9hrrm3frvd2sswknxygjlxi195kcy7g7phwq63j7hkyrn50";
+    hash = "sha256-x2mijB1GkxdraFroG1+PiBzWKPjsaAeoDt0HFL2v93I=";
   };
 
-  cargoSha256 = "04pslga3ff766cpb73n6ivzmqfa0hm19gcla8iyv6p59ddsajh3q";
+  cargoHash = "sha256-0IvOaQaXfdEz5tlXh5gTbnZG9QZSWDVHGOqYq8aWOIc=";
 
   doCheck = true;
 
diff --git a/nixpkgs/pkgs/tools/text/vale/default.nix b/nixpkgs/pkgs/tools/text/vale/default.nix
index 4fc1c8c52f61..48508f2e7186 100644
--- a/nixpkgs/pkgs/tools/text/vale/default.nix
+++ b/nixpkgs/pkgs/tools/text/vale/default.nix
@@ -2,7 +2,7 @@
 
 buildGoModule rec {
   pname = "vale";
-  version = "2.28.1";
+  version = "2.28.2";
 
   subPackages = [ "cmd/vale" ];
   outputs = [ "out" "data" ];
@@ -11,7 +11,7 @@ buildGoModule rec {
     owner = "errata-ai";
     repo = "vale";
     rev = "v${version}";
-    hash = "sha256-40JCZo7wxI2ysquW/r+LEcC+TUdmBEHak8b3AcmNq4c=";
+    hash = "sha256-T5CV7IlyZUfl3qUIUaLaisnFJ5fQ0de0KGQvuINx7TY=";
   };
 
   vendorHash = "sha256-KB1mRWDYejc38tUv316MiGfmq2riNnpEMIUpjgfSasU=";