about summary refs log tree commit diff
path: root/nixpkgs/pkgs/tools/text
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2021-04-09 18:28:16 +0000
committerAlyssa Ross <hi@alyssa.is>2021-04-12 18:46:15 +0000
commitfd2e737e0678ee7d8081baef05b305146a2c0034 (patch)
treeac3e9b27576a0382335532d126f9a66d486bc638 /nixpkgs/pkgs/tools/text
parentcc207d720b6aa836e256c1ee9842bc739e630a8a (diff)
parent9e377a6ce42dccd9b624ae4ce8f978dc892ba0e2 (diff)
downloadnixlib-fd2e737e0678ee7d8081baef05b305146a2c0034.tar
nixlib-fd2e737e0678ee7d8081baef05b305146a2c0034.tar.gz
nixlib-fd2e737e0678ee7d8081baef05b305146a2c0034.tar.bz2
nixlib-fd2e737e0678ee7d8081baef05b305146a2c0034.tar.lz
nixlib-fd2e737e0678ee7d8081baef05b305146a2c0034.tar.xz
nixlib-fd2e737e0678ee7d8081baef05b305146a2c0034.tar.zst
nixlib-fd2e737e0678ee7d8081baef05b305146a2c0034.zip
Merge remote-tracking branch 'nixpkgs/nixos-unstable'
Diffstat (limited to 'nixpkgs/pkgs/tools/text')
-rw-r--r--nixpkgs/pkgs/tools/text/asciigraph/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/text/boxes/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/cconv/default.nix11
-rw-r--r--nixpkgs/pkgs/tools/text/csvkit/default.nix9
-rw-r--r--nixpkgs/pkgs/tools/text/dadadodo/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/text/dfmt/default.nix27
-rw-r--r--nixpkgs/pkgs/tools/text/dirdiff/default.nix59
-rw-r--r--nixpkgs/pkgs/tools/text/dirdiff/dirdiff-2.1-vars.patch32
-rw-r--r--nixpkgs/pkgs/tools/text/dos2unix/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/text/fanficfare/default.nix3
-rw-r--r--nixpkgs/pkgs/tools/text/frangipanni/default.nix22
-rw-r--r--nixpkgs/pkgs/tools/text/fst/0001-cargo-lockfile.patch935
-rw-r--r--nixpkgs/pkgs/tools/text/fst/default.nix45
-rw-r--r--nixpkgs/pkgs/tools/text/gpt2tc/0001-add-python-shebang.patch10
-rw-r--r--nixpkgs/pkgs/tools/text/gpt2tc/0002-fix-download-url.patch11
-rw-r--r--nixpkgs/pkgs/tools/text/gpt2tc/default.nix47
-rw-r--r--nixpkgs/pkgs/tools/text/html-tidy/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/text/icdiff/default.nix18
-rw-r--r--nixpkgs/pkgs/tools/text/jsawk/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/text/kramdown-rfc2629/Gemfile.lock4
-rw-r--r--nixpkgs/pkgs/tools/text/kramdown-rfc2629/gemset.nix16
-rw-r--r--nixpkgs/pkgs/tools/text/l2md/default.nix32
-rw-r--r--nixpkgs/pkgs/tools/text/ledger2beancount/default.nix19
-rw-r--r--nixpkgs/pkgs/tools/text/m2r/default.nix32
-rw-r--r--nixpkgs/pkgs/tools/text/mark/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/text/markdown-pp/default.nix12
-rw-r--r--nixpkgs/pkgs/tools/text/mdbook/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/text/miller/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/text/mpage/default.nix5
-rw-r--r--nixpkgs/pkgs/tools/text/nawk/default.nix24
-rw-r--r--nixpkgs/pkgs/tools/text/numdiff/default.nix7
-rw-r--r--nixpkgs/pkgs/tools/text/podiff/default.nix8
-rw-r--r--nixpkgs/pkgs/tools/text/poedit/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/popfile/default.nix3
-rw-r--r--nixpkgs/pkgs/tools/text/reckon/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/ripgrep/default.nix17
-rw-r--r--nixpkgs/pkgs/tools/text/rst2html5/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/text/shfmt/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/text/silver-searcher/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/text/snippetpixie/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/text/source-highlight/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/tab/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/text/ugrep/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/text/uni2ascii/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/unoconv/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/unrtf/default.nix16
-rw-r--r--nixpkgs/pkgs/tools/text/vale/default.nix8
-rw-r--r--nixpkgs/pkgs/tools/text/wdiff/default.nix5
-rw-r--r--nixpkgs/pkgs/tools/text/xml/basex/default.nix3
-rw-r--r--nixpkgs/pkgs/tools/text/xml/xmldiff/default.nix41
-rw-r--r--nixpkgs/pkgs/tools/text/yaml-merge/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/text/zimreader/default.nix38
-rw-r--r--nixpkgs/pkgs/tools/text/zimwriterfs/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/text/zstxtns-utils/default.nix39
54 files changed, 1494 insertions, 145 deletions
diff --git a/nixpkgs/pkgs/tools/text/asciigraph/default.nix b/nixpkgs/pkgs/tools/text/asciigraph/default.nix
index 79d8c9079c79..27c2a1ff28ec 100644
--- a/nixpkgs/pkgs/tools/text/asciigraph/default.nix
+++ b/nixpkgs/pkgs/tools/text/asciigraph/default.nix
@@ -2,7 +2,7 @@
 
 buildGoPackage rec {
   pname = "asciigraph";
-  version = "0.5.1";
+  version = "0.5.2";
 
   goPackagePath = "github.com/guptarohit/asciigraph";
 
@@ -10,7 +10,7 @@ buildGoPackage rec {
     owner = "guptarohit";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0aqf64b5d5lf9scvxdx5f3p0vvx5s59mrvr6hcjljg1prksah9ns";
+    sha256 = "sha256-iVgJtxt0B6nMA3bieZ1CmZucwLMb5av6Wn5BMDRWfcI=";
   };
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/tools/text/boxes/default.nix b/nixpkgs/pkgs/tools/text/boxes/default.nix
index 3c58eda65018..f39349b2fbf0 100644
--- a/nixpkgs/pkgs/tools/text/boxes/default.nix
+++ b/nixpkgs/pkgs/tools/text/boxes/default.nix
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
                 "GLOBALCONF=${placeholder "out"}/share/boxes/boxes-config"
   '';
 
-  makeFlags = lib.optionals stdenv.isDarwin [ "CC=cc" ];
+  makeFlags = [ "CC=${stdenv.cc.targetPrefix}cc" ];
 
   installPhase = ''
     install -Dm755 -t $out/bin src/boxes
diff --git a/nixpkgs/pkgs/tools/text/cconv/default.nix b/nixpkgs/pkgs/tools/text/cconv/default.nix
index 9c5796c0b1d8..e918d620c678 100644
--- a/nixpkgs/pkgs/tools/text/cconv/default.nix
+++ b/nixpkgs/pkgs/tools/text/cconv/default.nix
@@ -1,8 +1,8 @@
-{ lib, stdenv, fetchurl, autoreconfHook }:
-let version = "0.6.3"; in
-  stdenv.mkDerivation {
+{ lib, stdenv, fetchurl, autoreconfHook, libiconv }:
+
+stdenv.mkDerivation rec {
   pname = "cconv";
-  inherit version;
+  version = "0.6.3";
 
   src = fetchurl {
     url = "https://github.com/xiaoyjy/cconv/archive/v${version}.tar.gz";
@@ -10,12 +10,13 @@ let version = "0.6.3"; in
   };
 
   nativeBuildInputs = [ autoreconfHook ];
+  buildInputs = [ libiconv ];
 
   meta = with lib; {
     description = "A iconv based simplified-traditional chinese conversion tool";
     homepage = "https://github.com/xiaoyjy/cconv";
     license = licenses.mit;
-    platforms = platforms.linux;
+    platforms = platforms.all;
     maintainers = [ maintainers.redfish64 ];
   };
 }
diff --git a/nixpkgs/pkgs/tools/text/csvkit/default.nix b/nixpkgs/pkgs/tools/text/csvkit/default.nix
index 05e0cf119bf1..56f5bae3123d 100644
--- a/nixpkgs/pkgs/tools/text/csvkit/default.nix
+++ b/nixpkgs/pkgs/tools/text/csvkit/default.nix
@@ -11,7 +11,7 @@ python3.pkgs.buildPythonApplication rec {
 
   patches = [
     # Fixes a failing dbf related test. Won't be needed on 1.0.6 or later.
-    (fetchpatch{
+    (fetchpatch {
       url = "https://github.com/wireservice/csvkit/commit/5f22e664121b13d9ff005a9206873a8f97431dca.patch";
       sha256 = "1kg00z65x7l6dnm5nfsr5krs8m7mv23hhb1inkaqf5m5fpkpnvv7";
     })
@@ -23,13 +23,16 @@ python3.pkgs.buildPythonApplication rec {
     agate-dbf
     agate-sql
     six
-    setuptools  # `csvsql` requires pkg_resources https://github.com/NixOS/nixpkgs/issues/93594
+    setuptools
   ];
 
   checkInputs = with python3.pkgs; [
-    nose pytestCheckHook
+    nose
+    pytestCheckHook
   ];
 
+  pythonImportsCheck = [ "csvkit" ];
+
   meta = with lib; {
     description = "A suite of command-line tools for converting to and working with CSV";
     maintainers = with maintainers; [ vrthra ];
diff --git a/nixpkgs/pkgs/tools/text/dadadodo/default.nix b/nixpkgs/pkgs/tools/text/dadadodo/default.nix
index 85e57546d933..a70a7efda72e 100644
--- a/nixpkgs/pkgs/tools/text/dadadodo/default.nix
+++ b/nixpkgs/pkgs/tools/text/dadadodo/default.nix
@@ -9,6 +9,8 @@ stdenv.mkDerivation rec {
     sha256 = "1pzwp3mim58afjrc92yx65mmgr1c834s1v6z4f4gyihwjn8bn3if";
   };
 
+  makeFlags = [ "CC=${stdenv.cc.targetPrefix}cc" ];
+
   installPhase = ''
     mkdir -p $out/bin
     cp dadadodo $out/bin
@@ -20,6 +22,6 @@ stdenv.mkDerivation rec {
     description = "Markov chain-based text generator";
     homepage = "http://www.jwz.org/dadadodo";
     maintainers = with maintainers; [ pSub ];
-    platforms = with platforms; linux;
+    platforms = platforms.all;
   };
 }
diff --git a/nixpkgs/pkgs/tools/text/dfmt/default.nix b/nixpkgs/pkgs/tools/text/dfmt/default.nix
new file mode 100644
index 000000000000..16702bb69663
--- /dev/null
+++ b/nixpkgs/pkgs/tools/text/dfmt/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, python3
+}:
+
+let
+  inherit (python3.pkgs)
+    buildPythonApplication
+    fetchPypi
+    pythonOlder;
+in
+buildPythonApplication rec {
+  pname = "dfmt";
+  version = "1.2.0";
+  disabled = pythonOlder "3.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "7af6360ca8d556f1cfe82b97f03b8d1ea5a9d6de1fa3018290c844b6566d9d6e";
+  };
+
+  meta = with lib; {
+    description = "Format paragraphs, comments and doc strings";
+    homepage = "https://github.com/dmerejkowsky/dfmt";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ cole-h ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/text/dirdiff/default.nix b/nixpkgs/pkgs/tools/text/dirdiff/default.nix
new file mode 100644
index 000000000000..b49df59b29e1
--- /dev/null
+++ b/nixpkgs/pkgs/tools/text/dirdiff/default.nix
@@ -0,0 +1,59 @@
+{ copyDesktopItems, fetchurl, lib, makeDesktopItem, stdenv, tcl, tk }:
+
+stdenv.mkDerivation rec {
+  pname = "dirdiff";
+  version = "2.1";
+
+  src = fetchurl {
+    url = "https://www.samba.org/ftp/paulus/${pname}-${version}.tar.gz";
+    sha256 = "0lljd8av68j70733yshzzhxjr1lm0vgmbqsm8f02g03qsma3cdyb";
+  };
+
+  nativeBuildInputs = [ copyDesktopItems ];
+  buildInputs = [ tcl tk ];
+
+  # Some light path patching.
+  patches = [ ./dirdiff-2.1-vars.patch ];
+  postPatch = ''
+    for file in dirdiff Makefile; do
+      substituteInPlace "$file" \
+          --subst-var out \
+          --subst-var-by tcl ${tcl} \
+          --subst-var-by tk ${tk}
+    done
+  '';
+
+  # If we don't create the directories ourselves, then 'make install' creates
+  # files named 'bin' and 'lib'.
+  preInstall = ''
+    mkdir -p $out/bin $out/lib
+  '';
+
+  installFlags = [
+    "BINDIR=${placeholder "out"}/bin"
+    "LIBDIR=${placeholder "out"}/lib"
+  ];
+
+  desktopItems = [
+    (makeDesktopItem {
+      name = "dirdiff";
+      exec = "dirdiff";
+      desktopName = "Dirdiff";
+      genericName = "Directory Diff Viewer";
+      comment = "Diff and merge directory trees";
+      categories = "Development;";
+    })
+  ];
+
+  meta = with lib; {
+    description = "Graphical directory tree diff and merge tool";
+    longDescription = ''
+      Dirdiff is a graphical tool for displaying the differences between
+      directory trees and for merging changes from one tree into another.
+    '';
+    homepage = "https://www.samba.org/ftp/paulus/";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ khumba ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/text/dirdiff/dirdiff-2.1-vars.patch b/nixpkgs/pkgs/tools/text/dirdiff/dirdiff-2.1-vars.patch
new file mode 100644
index 000000000000..4e7aa025754a
--- /dev/null
+++ b/nixpkgs/pkgs/tools/text/dirdiff/dirdiff-2.1-vars.patch
@@ -0,0 +1,32 @@
+diff '--color=auto' -ru dirdiff-2.1/dirdiff dirdiff-2.1-patched/dirdiff
+--- dirdiff-2.1/dirdiff	2005-04-20 03:09:53.000000000 -0700
++++ dirdiff-2.1-patched/dirdiff	2021-02-14 22:54:09.837692023 -0800
+@@ -1,6 +1,6 @@
+ #!/bin/sh
+ # Tcl ignores the next line \
+-exec wish "$0" -- "${1+$@}"
++exec @tk@/bin/wish "$0" -- "${1+$@}"
+ 
+ # Copyright (C) 1999-2004 Paul Mackerras.  All rights reserved.
+ # This program is free software; it may be used, copied, modified
+@@ -17,7 +17,7 @@
+ set TclExe [info nameofexecutable]
+ set compound_ok [expr {$tcl_version >= 8.4}]
+ 
+-set nofilecmp [catch {load libfilecmp.so.0.0}]
++set nofilecmp [catch {load @out@/lib/libfilecmp.so.0.0}]
+ set rcsflag {}
+ set diffbflag {}
+ set diffBflag {}
+diff '--color=auto' -ru dirdiff-2.1/Makefile dirdiff-2.1-patched/Makefile
+--- dirdiff-2.1/Makefile	2005-04-19 03:22:01.000000000 -0700
++++ dirdiff-2.1-patched/Makefile	2021-02-14 22:54:58.575400923 -0800
+@@ -7,7 +7,7 @@
+ INSTALL=install
+ 
+ # You may need to change the -I arguments depending on your system
+-CFLAGS=-O3 -I/usr/include/tcl8.3/ -I/usr/include/tcl
++CFLAGS=-O3 -I@tcl@/include
+ 
+ all:	libfilecmp.so.0.0
+ 
diff --git a/nixpkgs/pkgs/tools/text/dos2unix/default.nix b/nixpkgs/pkgs/tools/text/dos2unix/default.nix
index e2e07e9e4884..f694b91762c5 100644
--- a/nixpkgs/pkgs/tools/text/dos2unix/default.nix
+++ b/nixpkgs/pkgs/tools/text/dos2unix/default.nix
@@ -18,5 +18,6 @@ stdenv.mkDerivation rec {
     changelog = "https://sourceforge.net/p/dos2unix/dos2unix/ci/dos2unix-${version}/tree/dos2unix/NEWS.txt?format=raw";
     license = licenses.bsd2;
     maintainers = with maintainers; [ c0bw3b ];
+    platforms = platforms.all;
   };
 }
diff --git a/nixpkgs/pkgs/tools/text/fanficfare/default.nix b/nixpkgs/pkgs/tools/text/fanficfare/default.nix
index e1db7d3d39c0..5fb70f63dc31 100644
--- a/nixpkgs/pkgs/tools/text/fanficfare/default.nix
+++ b/nixpkgs/pkgs/tools/text/fanficfare/default.nix
@@ -22,8 +22,7 @@ python3Packages.buildPythonApplication rec {
     description = "Tool for making eBooks from fanfiction web sites";
     homepage = "https://github.com/JimmXinu/FanFicFare";
     license = licenses.gpl3;
-    platforms = platforms.linux;
+    platforms = platforms.unix;
     maintainers = with maintainers; [ dwarfmaster ];
-    inherit version;
   };
 }
diff --git a/nixpkgs/pkgs/tools/text/frangipanni/default.nix b/nixpkgs/pkgs/tools/text/frangipanni/default.nix
new file mode 100644
index 000000000000..1f0dcfa94172
--- /dev/null
+++ b/nixpkgs/pkgs/tools/text/frangipanni/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "frangipanni";
+  version = "0.4.0";
+
+  src = fetchFromGitHub {
+    owner = "birchb1024";
+    repo = "frangipanni";
+    rev = "v${version}";
+    sha256 = "sha256-NgRDXrAsfnj1cqO+2AN8nSuxS9KGNIl+pJkCADmDOqY=";
+  };
+
+  vendorSha256 = "sha256-TSN5M/UCTtfoTf1hDCfrJMCFdSwL/NVXssgt4aefom8=";
+
+  meta = with lib; {
+    description = "Convert lines of text into a tree structure";
+    homepage = "https://github.com/birchb1024/frangipanni";
+    license = licenses.mit;
+    maintainers = with maintainers; [ siraben ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/text/fst/0001-cargo-lockfile.patch b/nixpkgs/pkgs/tools/text/fst/0001-cargo-lockfile.patch
new file mode 100644
index 000000000000..c8c56ffdb622
--- /dev/null
+++ b/nixpkgs/pkgs/tools/text/fst/0001-cargo-lockfile.patch
@@ -0,0 +1,935 @@
+From 84797e8fb8ead8822ebfd251b47c72433555860e Mon Sep 17 00:00:00 2001
+From: "Robert T. McGibbon" <rmcgibbo@gmail.com>
+Date: Fri, 5 Mar 2021 16:59:41 -0500
+Subject: [PATCH 1/1] Create cargo lock file for 0.4.5
+
+---
+ Cargo.lock | 916 +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 916 insertions(+)
+ create mode 100644 Cargo.lock
+
+diff --git a/Cargo.lock b/Cargo.lock
+new file mode 100644
+index 0000000..136677d
+--- /dev/null
++++ b/Cargo.lock
+@@ -0,0 +1,916 @@
++# This file is automatically @generated by Cargo.
++# It is not intended for manual editing.
++[[package]]
++name = "anyhow"
++version = "1.0.38"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "afddf7f520a80dbf76e6f50a35bca42a2331ef227a28b3b6dc5c2e2338d114b1"
++
++[[package]]
++name = "atty"
++version = "0.2.14"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
++dependencies = [
++ "hermit-abi",
++ "libc",
++ "winapi",
++]
++
++[[package]]
++name = "autocfg"
++version = "1.0.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a"
++
++[[package]]
++name = "bit-set"
++version = "0.5.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6e11e16035ea35e4e5997b393eacbf6f63983188f7a2ad25bfb13465f5ad59de"
++dependencies = [
++ "bit-vec",
++]
++
++[[package]]
++name = "bit-vec"
++version = "0.6.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb"
++
++[[package]]
++name = "bitflags"
++version = "1.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
++
++[[package]]
++name = "bstr"
++version = "0.2.15"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a40b47ad93e1a5404e6c18dec46b628214fee441c70f4ab5d6942142cc268a3d"
++dependencies = [
++ "lazy_static",
++ "memchr",
++ "regex-automata",
++ "serde",
++]
++
++[[package]]
++name = "bumpalo"
++version = "3.6.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "63396b8a4b9de3f4fdfb320ab6080762242f66a8ef174c49d8e19b674db4cdbe"
++
++[[package]]
++name = "byteorder"
++version = "1.4.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ae44d1a3d5a19df61dd0c8beb138458ac2a53a7ac09eba97d55592540004306b"
++
++[[package]]
++name = "cast"
++version = "0.2.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4b9434b9a5aa1450faa3f9cb14ea0e8c53bb5d2b3c1bfd1ab4fc03e9f33fbfb0"
++dependencies = [
++ "rustc_version",
++]
++
++[[package]]
++name = "cfg-if"
++version = "0.1.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
++
++[[package]]
++name = "cfg-if"
++version = "1.0.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
++
++[[package]]
++name = "clap"
++version = "2.33.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002"
++dependencies = [
++ "bitflags",
++ "textwrap",
++ "unicode-width",
++]
++
++[[package]]
++name = "criterion"
++version = "0.3.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ab327ed7354547cc2ef43cbe20ef68b988e70b4b593cbd66a2a61733123a3d23"
++dependencies = [
++ "atty",
++ "cast",
++ "clap",
++ "criterion-plot",
++ "csv",
++ "itertools 0.10.0",
++ "lazy_static",
++ "num-traits",
++ "oorandom",
++ "plotters",
++ "rayon",
++ "regex",
++ "serde",
++ "serde_cbor",
++ "serde_derive",
++ "serde_json",
++ "tinytemplate",
++ "walkdir",
++]
++
++[[package]]
++name = "criterion-plot"
++version = "0.4.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e022feadec601fba1649cfa83586381a4ad31c6bf3a9ab7d408118b05dd9889d"
++dependencies = [
++ "cast",
++ "itertools 0.9.0",
++]
++
++[[package]]
++name = "crossbeam-channel"
++version = "0.4.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87"
++dependencies = [
++ "crossbeam-utils 0.7.2",
++ "maybe-uninit",
++]
++
++[[package]]
++name = "crossbeam-channel"
++version = "0.5.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "dca26ee1f8d361640700bde38b2c37d8c22b3ce2d360e1fc1c74ea4b0aa7d775"
++dependencies = [
++ "cfg-if 1.0.0",
++ "crossbeam-utils 0.8.3",
++]
++
++[[package]]
++name = "crossbeam-deque"
++version = "0.8.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9"
++dependencies = [
++ "cfg-if 1.0.0",
++ "crossbeam-epoch",
++ "crossbeam-utils 0.8.3",
++]
++
++[[package]]
++name = "crossbeam-epoch"
++version = "0.9.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2584f639eb95fea8c798496315b297cf81b9b58b6d30ab066a75455333cf4b12"
++dependencies = [
++ "cfg-if 1.0.0",
++ "crossbeam-utils 0.8.3",
++ "lazy_static",
++ "memoffset",
++ "scopeguard",
++]
++
++[[package]]
++name = "crossbeam-utils"
++version = "0.7.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8"
++dependencies = [
++ "autocfg",
++ "cfg-if 0.1.10",
++ "lazy_static",
++]
++
++[[package]]
++name = "crossbeam-utils"
++version = "0.8.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e7e9d99fa91428effe99c5c6d4634cdeba32b8cf784fc428a2a687f61a952c49"
++dependencies = [
++ "autocfg",
++ "cfg-if 1.0.0",
++ "lazy_static",
++]
++
++[[package]]
++name = "csv"
++version = "1.1.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f9d58633299b24b515ac72a3f869f8b91306a3cec616a602843a383acd6f9e97"
++dependencies = [
++ "bstr",
++ "csv-core",
++ "itoa",
++ "ryu",
++ "serde",
++]
++
++[[package]]
++name = "csv-core"
++version = "0.1.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90"
++dependencies = [
++ "memchr",
++]
++
++[[package]]
++name = "doc-comment"
++version = "0.3.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10"
++
++[[package]]
++name = "either"
++version = "1.6.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
++
++[[package]]
++name = "fnv"
++version = "1.0.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
++
++[[package]]
++name = "fst"
++version = "0.4.5"
++dependencies = [
++ "doc-comment",
++ "fnv",
++ "memmap",
++ "quickcheck",
++ "rand 0.7.3",
++ "utf8-ranges",
++]
++
++[[package]]
++name = "fst"
++version = "0.4.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d79238883cf0307100b90aba4a755d8051a3182305dfe7f649a1e9dc0517006f"
++dependencies = [
++ "utf8-ranges",
++]
++
++[[package]]
++name = "fst-bench"
++version = "0.0.1"
++dependencies = [
++ "criterion",
++ "fnv",
++ "fst 0.4.5",
++]
++
++[[package]]
++name = "fst-bin"
++version = "0.4.1"
++dependencies = [
++ "anyhow",
++ "bit-set",
++ "bstr",
++ "clap",
++ "crossbeam-channel 0.4.4",
++ "csv",
++ "fst 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "memmap",
++ "num_cpus",
++ "regex-automata",
++ "serde",
++ "tempfile",
++]
++
++[[package]]
++name = "getrandom"
++version = "0.1.16"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
++dependencies = [
++ "cfg-if 1.0.0",
++ "libc",
++ "wasi 0.9.0+wasi-snapshot-preview1",
++]
++
++[[package]]
++name = "getrandom"
++version = "0.2.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8"
++dependencies = [
++ "cfg-if 1.0.0",
++ "libc",
++ "wasi 0.10.2+wasi-snapshot-preview1",
++]
++
++[[package]]
++name = "half"
++version = "1.7.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "62aca2aba2d62b4a7f5b33f3712cb1b0692779a56fb510499d5c0aa594daeaf3"
++
++[[package]]
++name = "hermit-abi"
++version = "0.1.18"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c"
++dependencies = [
++ "libc",
++]
++
++[[package]]
++name = "itertools"
++version = "0.9.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
++dependencies = [
++ "either",
++]
++
++[[package]]
++name = "itertools"
++version = "0.10.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "37d572918e350e82412fe766d24b15e6682fb2ed2bbe018280caa810397cb319"
++dependencies = [
++ "either",
++]
++
++[[package]]
++name = "itoa"
++version = "0.4.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736"
++
++[[package]]
++name = "js-sys"
++version = "0.3.48"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "dc9f84f9b115ce7843d60706df1422a916680bfdfcbdb0447c5614ff9d7e4d78"
++dependencies = [
++ "wasm-bindgen",
++]
++
++[[package]]
++name = "lazy_static"
++version = "1.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
++
++[[package]]
++name = "libc"
++version = "0.2.88"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "03b07a082330a35e43f63177cc01689da34fbffa0105e1246cf0311472cac73a"
++
++[[package]]
++name = "log"
++version = "0.4.14"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710"
++dependencies = [
++ "cfg-if 1.0.0",
++]
++
++[[package]]
++name = "maybe-uninit"
++version = "2.0.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00"
++
++[[package]]
++name = "memchr"
++version = "2.3.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525"
++
++[[package]]
++name = "memmap"
++version = "0.7.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b"
++dependencies = [
++ "libc",
++ "winapi",
++]
++
++[[package]]
++name = "memoffset"
++version = "0.6.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "157b4208e3059a8f9e78d559edc658e13df41410cb3ae03979c83130067fdd87"
++dependencies = [
++ "autocfg",
++]
++
++[[package]]
++name = "num-traits"
++version = "0.2.14"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290"
++dependencies = [
++ "autocfg",
++]
++
++[[package]]
++name = "num_cpus"
++version = "1.13.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3"
++dependencies = [
++ "hermit-abi",
++ "libc",
++]
++
++[[package]]
++name = "oorandom"
++version = "11.1.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
++
++[[package]]
++name = "plotters"
++version = "0.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "45ca0ae5f169d0917a7c7f5a9c1a3d3d9598f18f529dd2b8373ed988efea307a"
++dependencies = [
++ "num-traits",
++ "plotters-backend",
++ "plotters-svg",
++ "wasm-bindgen",
++ "web-sys",
++]
++
++[[package]]
++name = "plotters-backend"
++version = "0.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b07fffcddc1cb3a1de753caa4e4df03b79922ba43cf882acc1bdd7e8df9f4590"
++
++[[package]]
++name = "plotters-svg"
++version = "0.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b38a02e23bd9604b842a812063aec4ef702b57989c37b655254bb61c471ad211"
++dependencies = [
++ "plotters-backend",
++]
++
++[[package]]
++name = "ppv-lite86"
++version = "0.2.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857"
++
++[[package]]
++name = "proc-macro2"
++version = "1.0.24"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71"
++dependencies = [
++ "unicode-xid",
++]
++
++[[package]]
++name = "quickcheck"
++version = "0.9.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a44883e74aa97ad63db83c4bf8ca490f02b2fc02f92575e720c8551e843c945f"
++dependencies = [
++ "rand 0.7.3",
++ "rand_core 0.5.1",
++]
++
++[[package]]
++name = "quote"
++version = "1.0.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7"
++dependencies = [
++ "proc-macro2",
++]
++
++[[package]]
++name = "rand"
++version = "0.7.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
++dependencies = [
++ "getrandom 0.1.16",
++ "libc",
++ "rand_chacha 0.2.2",
++ "rand_core 0.5.1",
++ "rand_hc 0.2.0",
++]
++
++[[package]]
++name = "rand"
++version = "0.8.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e"
++dependencies = [
++ "libc",
++ "rand_chacha 0.3.0",
++ "rand_core 0.6.2",
++ "rand_hc 0.3.0",
++]
++
++[[package]]
++name = "rand_chacha"
++version = "0.2.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
++dependencies = [
++ "ppv-lite86",
++ "rand_core 0.5.1",
++]
++
++[[package]]
++name = "rand_chacha"
++version = "0.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d"
++dependencies = [
++ "ppv-lite86",
++ "rand_core 0.6.2",
++]
++
++[[package]]
++name = "rand_core"
++version = "0.5.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
++dependencies = [
++ "getrandom 0.1.16",
++]
++
++[[package]]
++name = "rand_core"
++version = "0.6.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7"
++dependencies = [
++ "getrandom 0.2.2",
++]
++
++[[package]]
++name = "rand_hc"
++version = "0.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
++dependencies = [
++ "rand_core 0.5.1",
++]
++
++[[package]]
++name = "rand_hc"
++version = "0.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73"
++dependencies = [
++ "rand_core 0.6.2",
++]
++
++[[package]]
++name = "rayon"
++version = "1.5.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674"
++dependencies = [
++ "autocfg",
++ "crossbeam-deque",
++ "either",
++ "rayon-core",
++]
++
++[[package]]
++name = "rayon-core"
++version = "1.9.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a"
++dependencies = [
++ "crossbeam-channel 0.5.0",
++ "crossbeam-deque",
++ "crossbeam-utils 0.8.3",
++ "lazy_static",
++ "num_cpus",
++]
++
++[[package]]
++name = "redox_syscall"
++version = "0.2.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "94341e4e44e24f6b591b59e47a8a027df12e008d73fd5672dbea9cc22f4507d9"
++dependencies = [
++ "bitflags",
++]
++
++[[package]]
++name = "regex"
++version = "1.4.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d9251239e129e16308e70d853559389de218ac275b515068abc96829d05b948a"
++dependencies = [
++ "regex-syntax",
++]
++
++[[package]]
++name = "regex-automata"
++version = "0.1.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ae1ded71d66a4a97f5e961fd0cb25a5f366a42a41570d16a763a69c092c26ae4"
++dependencies = [
++ "byteorder",
++ "fst 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "regex-syntax",
++]
++
++[[package]]
++name = "regex-syntax"
++version = "0.6.22"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b5eb417147ba9860a96cfe72a0b93bf88fee1744b5636ec99ab20c1aa9376581"
++
++[[package]]
++name = "remove_dir_all"
++version = "0.5.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
++dependencies = [
++ "winapi",
++]
++
++[[package]]
++name = "rustc_version"
++version = "0.2.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
++dependencies = [
++ "semver",
++]
++
++[[package]]
++name = "ryu"
++version = "1.0.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e"
++
++[[package]]
++name = "same-file"
++version = "1.0.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
++dependencies = [
++ "winapi-util",
++]
++
++[[package]]
++name = "scopeguard"
++version = "1.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
++
++[[package]]
++name = "semver"
++version = "0.9.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
++dependencies = [
++ "semver-parser",
++]
++
++[[package]]
++name = "semver-parser"
++version = "0.7.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
++
++[[package]]
++name = "serde"
++version = "1.0.123"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "92d5161132722baa40d802cc70b15262b98258453e85e5d1d365c757c73869ae"
++dependencies = [
++ "serde_derive",
++]
++
++[[package]]
++name = "serde_cbor"
++version = "0.11.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1e18acfa2f90e8b735b2836ab8d538de304cbb6729a7360729ea5a895d15a622"
++dependencies = [
++ "half",
++ "serde",
++]
++
++[[package]]
++name = "serde_derive"
++version = "1.0.123"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9391c295d64fc0abb2c556bad848f33cb8296276b1ad2677d1ae1ace4f258f31"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn",
++]
++
++[[package]]
++name = "serde_json"
++version = "1.0.64"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79"
++dependencies = [
++ "itoa",
++ "ryu",
++ "serde",
++]
++
++[[package]]
++name = "syn"
++version = "1.0.61"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ed22b90a0e734a23a7610f4283ac9e5acfb96cbb30dfefa540d66f866f1c09c5"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "unicode-xid",
++]
++
++[[package]]
++name = "tempfile"
++version = "3.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22"
++dependencies = [
++ "cfg-if 1.0.0",
++ "libc",
++ "rand 0.8.3",
++ "redox_syscall",
++ "remove_dir_all",
++ "winapi",
++]
++
++[[package]]
++name = "textwrap"
++version = "0.11.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
++dependencies = [
++ "unicode-width",
++]
++
++[[package]]
++name = "tinytemplate"
++version = "1.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
++dependencies = [
++ "serde",
++ "serde_json",
++]
++
++[[package]]
++name = "unicode-width"
++version = "0.1.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3"
++
++[[package]]
++name = "unicode-xid"
++version = "0.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564"
++
++[[package]]
++name = "utf8-ranges"
++version = "1.0.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b4ae116fef2b7fea257ed6440d3cfcff7f190865f170cdad00bb6465bf18ecba"
++
++[[package]]
++name = "walkdir"
++version = "2.3.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "777182bc735b6424e1a57516d35ed72cb8019d85c8c9bf536dccb3445c1a2f7d"
++dependencies = [
++ "same-file",
++ "winapi",
++ "winapi-util",
++]
++
++[[package]]
++name = "wasi"
++version = "0.9.0+wasi-snapshot-preview1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
++
++[[package]]
++name = "wasi"
++version = "0.10.2+wasi-snapshot-preview1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6"
++
++[[package]]
++name = "wasm-bindgen"
++version = "0.2.71"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7ee1280240b7c461d6a0071313e08f34a60b0365f14260362e5a2b17d1d31aa7"
++dependencies = [
++ "cfg-if 1.0.0",
++ "wasm-bindgen-macro",
++]
++
++[[package]]
++name = "wasm-bindgen-backend"
++version = "0.2.71"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5b7d8b6942b8bb3a9b0e73fc79b98095a27de6fa247615e59d096754a3bc2aa8"
++dependencies = [
++ "bumpalo",
++ "lazy_static",
++ "log",
++ "proc-macro2",
++ "quote",
++ "syn",
++ "wasm-bindgen-shared",
++]
++
++[[package]]
++name = "wasm-bindgen-macro"
++version = "0.2.71"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e5ac38da8ef716661f0f36c0d8320b89028efe10c7c0afde65baffb496ce0d3b"
++dependencies = [
++ "quote",
++ "wasm-bindgen-macro-support",
++]
++
++[[package]]
++name = "wasm-bindgen-macro-support"
++version = "0.2.71"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cc053ec74d454df287b9374ee8abb36ffd5acb95ba87da3ba5b7d3fe20eb401e"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn",
++ "wasm-bindgen-backend",
++ "wasm-bindgen-shared",
++]
++
++[[package]]
++name = "wasm-bindgen-shared"
++version = "0.2.71"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7d6f8ec44822dd71f5f221a5847fb34acd9060535c1211b70a05844c0f6383b1"
++
++[[package]]
++name = "web-sys"
++version = "0.3.48"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ec600b26223b2948cedfde2a0aa6756dcf1fef616f43d7b3097aaf53a6c4d92b"
++dependencies = [
++ "js-sys",
++ "wasm-bindgen",
++]
++
++[[package]]
++name = "winapi"
++version = "0.3.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
++dependencies = [
++ "winapi-i686-pc-windows-gnu",
++ "winapi-x86_64-pc-windows-gnu",
++]
++
++[[package]]
++name = "winapi-i686-pc-windows-gnu"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
++
++[[package]]
++name = "winapi-util"
++version = "0.1.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
++dependencies = [
++ "winapi",
++]
++
++[[package]]
++name = "winapi-x86_64-pc-windows-gnu"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+-- 
+2.29.2
+
diff --git a/nixpkgs/pkgs/tools/text/fst/default.nix b/nixpkgs/pkgs/tools/text/fst/default.nix
new file mode 100644
index 000000000000..738fd69dc64d
--- /dev/null
+++ b/nixpkgs/pkgs/tools/text/fst/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, rustPlatform
+, libiconv
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "fst";
+  version = "0.4.5";
+
+  src = fetchFromGitHub {
+    owner = "BurntSushi";
+    repo = pname;
+    rev = version;
+    sha256 = "01qdj7zzgwb1zqcznfmnks3dnl6hnf8ib0sm0sgimsbcvajmhab3";
+  };
+
+  cargoPatches = [
+    # Add Cargo.lock lockfile, which upstream does not include
+    ./0001-cargo-lockfile.patch
+  ];
+
+  cargoBuildFlags = [ "--workspace" ];
+  cargoSha256 = "0svn2gzipslz939396rcydqx3i1x07l7acas7fhql12n59n2yrxw";
+
+  buildInputs = lib.optionals stdenv.isDarwin [ libiconv ];
+
+  doInstallCheck = true;
+  installCheckPhase = ''
+    csv="$(mktemp)"
+    fst="$(mktemp)"
+    printf "abc,1\nabcd,1" > "$csv"
+    $out/bin/fst map "$csv" "$fst" --force
+    $out/bin/fst fuzzy "$fst" 'abc'
+    $out/bin/fst --help > /dev/null
+  '';
+
+  meta = with lib; {
+    description = "Represent large sets and maps compactly with finite state transducers";
+    homepage = "https://github.com/BurntSushi/fst";
+    license = with licenses; [ unlicense /* or */ mit ];
+    maintainers = with maintainers; [ rmcgibbo ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/text/gpt2tc/0001-add-python-shebang.patch b/nixpkgs/pkgs/tools/text/gpt2tc/0001-add-python-shebang.patch
new file mode 100644
index 000000000000..b47b444009ac
--- /dev/null
+++ b/nixpkgs/pkgs/tools/text/gpt2tc/0001-add-python-shebang.patch
@@ -0,0 +1,10 @@
+diff --git a/gpt2convert.py b/gpt2convert.py
+index 34ca909..6e6cac5 100644
+--- a/gpt2convert.py
++++ b/gpt2convert.py
+@@ -1,3 +1,5 @@
++#!/usr/bin/env python3
++
+ import sys
+ import tensorflow as tf
+ import numpy as np
diff --git a/nixpkgs/pkgs/tools/text/gpt2tc/0002-fix-download-url.patch b/nixpkgs/pkgs/tools/text/gpt2tc/0002-fix-download-url.patch
new file mode 100644
index 000000000000..fd8f93834e52
--- /dev/null
+++ b/nixpkgs/pkgs/tools/text/gpt2tc/0002-fix-download-url.patch
@@ -0,0 +1,11 @@
+diff --git a/download_model.sh b/download_model.sh
+index 9cb401f..ad1dc62 100755
+--- a/download_model.sh
++++ b/download_model.sh
+@@ -13,5 +13,5 @@ mkdir -p models/$model
+ for filename in checkpoint encoder.json hparams.json model.ckpt.data-00000-of-00001 model.ckpt.index model.ckpt.meta vocab.bpe; do
+   fetch=$model/$filename
+   echo "Fetching $fetch"
+-  curl --output models/$fetch https://storage.googleapis.com/gpt-2/models/$fetch
++  curl --output models/$fetch https://openaipublic.blob.core.windows.net/gpt-2/models/$fetch
+ done
diff --git a/nixpkgs/pkgs/tools/text/gpt2tc/default.nix b/nixpkgs/pkgs/tools/text/gpt2tc/default.nix
new file mode 100644
index 000000000000..eb79d9009f34
--- /dev/null
+++ b/nixpkgs/pkgs/tools/text/gpt2tc/default.nix
@@ -0,0 +1,47 @@
+{ lib, stdenv, fetchurl, autoPatchelfHook, python3 }:
+
+stdenv.mkDerivation rec {
+  pname = "gpt2tc";
+  version = "2020-12-30";
+
+  src = fetchurl {
+    url = "https://bellard.org/nncp/gpt2tc-${version}.tar.gz";
+    hash = "sha256-KFcl7E6iGx50JaJI1jwzKAdkrkbNngPbrEA/ZSyG+uY=";
+  };
+
+  patches = [
+    # Add a shebang to the python script so that nix detects it as such and
+    # wraps it properly. Otherwise, it runs in shell and freezes the system.
+    ./0001-add-python-shebang.patch
+
+    # Update the source URL for the models because the old one is down.
+    ./0002-fix-download-url.patch
+  ];
+
+  nativeBuildInputs = [ autoPatchelfHook ];
+
+  buildInputs = [
+    (python3.withPackages (p: with p; [ numpy tensorflow ]))
+  ];
+
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m755 -t $out/bin gpt2tc
+    install -T -m755 download_model.sh $out/bin/gpt2-download-model
+    install -T -m755 gpt2convert.py $out/bin/gpt2-convert
+    install -D -m644 -t $out/share/gpt2tc readme.txt gpt2vocab.txt Changelog
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Text completion and compression using GPT-2";
+    homepage = "https://bellard.org/nncp/gpt2tc.html";
+    license = licenses.unfree;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ anna328p ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/text/html-tidy/default.nix b/nixpkgs/pkgs/tools/text/html-tidy/default.nix
index 15ee4c756480..6caa3d34a0c9 100644
--- a/nixpkgs/pkgs/tools/text/html-tidy/default.nix
+++ b/nixpkgs/pkgs/tools/text/html-tidy/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "html-tidy";
-  version = "5.6.0";
+  version = "5.7.28";
 
   src = fetchFromGitHub {
     owner = "htacg";
     repo = "tidy-html5";
     rev = version;
-    sha256 = "0w175c5d1babq0w1zzdzw9gl6iqbgyq58v8587s7srp05y3hwy9k";
+    sha256 = "sha256-Tny53PtaQWAMAEjqw4tKnmGURfZhhwFQNCJr9jjWZQY=";
   };
 
   nativeBuildInputs = [ cmake libxslt/*manpage*/ ];
diff --git a/nixpkgs/pkgs/tools/text/icdiff/default.nix b/nixpkgs/pkgs/tools/text/icdiff/default.nix
index 3ead56298cf6..c051560151a9 100644
--- a/nixpkgs/pkgs/tools/text/icdiff/default.nix
+++ b/nixpkgs/pkgs/tools/text/icdiff/default.nix
@@ -1,6 +1,6 @@
-{ lib, fetchFromGitHub, pythonPackages }:
+{ lib, fetchFromGitHub, python3Packages, bash, git, less }:
 
-pythonPackages.buildPythonApplication rec {
+python3Packages.buildPythonApplication rec {
   pname = "icdiff";
   version = "1.9.5";
 
@@ -11,6 +11,20 @@ pythonPackages.buildPythonApplication rec {
     sha256 = "080v8h09pv8qwplin4kwfm0kmqjwdqjfxbpcdrv16sv4hwfwl5qd";
   };
 
+  checkInputs = [
+    bash
+    git
+    less
+  ];
+
+  # error: could not lock config file /homeless-shelter/.gitconfig: No such file or directory
+  doCheck = false;
+
+  checkPhase = ''
+    patchShebangs test.sh
+    ./test.sh ${python3Packages.python.interpreter}
+  '';
+
   meta = with lib; {
     homepage = "https://www.jefftk.com/icdiff";
     description = "Side-by-side highlighted command line diffs";
diff --git a/nixpkgs/pkgs/tools/text/jsawk/default.nix b/nixpkgs/pkgs/tools/text/jsawk/default.nix
index e700d7c486e5..4efaf56ccf69 100644
--- a/nixpkgs/pkgs/tools/text/jsawk/default.nix
+++ b/nixpkgs/pkgs/tools/text/jsawk/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchFromGitHub, makeWrapper, spidermonkey_38 }:
+{ lib, stdenv, fetchFromGitHub, makeWrapper, spidermonkey_78 }:
 
 stdenv.mkDerivation {
   pname = "jsawk";
@@ -10,12 +10,12 @@ stdenv.mkDerivation {
     sha256 = "0z3vdr3c8nvdrrxkjv9b4xg47mdb2hsknxpimw6shgwbigihapyr";
   };
   dontBuild = true;
-  buildInputs = [ makeWrapper ];
+  nativeBuildInputs = [ makeWrapper ];
   installPhase = ''
     mkdir -p $out/bin
     cp $src/jsawk $out/bin/
     wrapProgram $out/bin/jsawk \
-      --prefix PATH : "${spidermonkey_38}/bin"
+      --prefix PATH : "${spidermonkey_78}/bin"
   '';
 
   meta = {
diff --git a/nixpkgs/pkgs/tools/text/kramdown-rfc2629/Gemfile.lock b/nixpkgs/pkgs/tools/text/kramdown-rfc2629/Gemfile.lock
index b50dc2fdbca0..feab5cddf995 100644
--- a/nixpkgs/pkgs/tools/text/kramdown-rfc2629/Gemfile.lock
+++ b/nixpkgs/pkgs/tools/text/kramdown-rfc2629/Gemfile.lock
@@ -2,9 +2,11 @@ GEM
   remote: https://rubygems.org/
   specs:
     certified (1.0.0)
+    json_pure (2.5.1)
     kramdown (1.17.0)
-    kramdown-rfc2629 (1.2.13)
+    kramdown-rfc2629 (1.3.37)
       certified (~> 1.0)
+      json_pure (~> 2.0)
       kramdown (~> 1.17.0)
 
 PLATFORMS
diff --git a/nixpkgs/pkgs/tools/text/kramdown-rfc2629/gemset.nix b/nixpkgs/pkgs/tools/text/kramdown-rfc2629/gemset.nix
index bf0cf130c424..f0b6c39a3599 100644
--- a/nixpkgs/pkgs/tools/text/kramdown-rfc2629/gemset.nix
+++ b/nixpkgs/pkgs/tools/text/kramdown-rfc2629/gemset.nix
@@ -9,6 +9,16 @@
     };
     version = "1.0.0";
   };
+  json_pure = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "030hmc268wchqsccbjk41hvbyg99krpa72i3q0y3wwqzfh8hi736";
+      type = "gem";
+    };
+    version = "2.5.1";
+  };
   kramdown = {
     groups = ["default"];
     platforms = [];
@@ -20,14 +30,14 @@
     version = "1.17.0";
   };
   kramdown-rfc2629 = {
-    dependencies = ["certified" "kramdown"];
+    dependencies = ["certified" "json_pure" "kramdown"];
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0s53m46qlcdakik0czvx0p41mk46l9l36331cps8gpf364wf3l9d";
+      sha256 = "16m08q5bgib3i54bb9p3inrxb1xksiybs9zj1rnncq492gcqqv4j";
       type = "gem";
     };
-    version = "1.2.13";
+    version = "1.3.37";
   };
 }
diff --git a/nixpkgs/pkgs/tools/text/l2md/default.nix b/nixpkgs/pkgs/tools/text/l2md/default.nix
new file mode 100644
index 000000000000..e443cc42a2ec
--- /dev/null
+++ b/nixpkgs/pkgs/tools/text/l2md/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenv, fetchgit, libgit2 }:
+
+stdenv.mkDerivation rec {
+  pname = "l2md";
+  version = "unstable-2020-07-31";
+
+  src = fetchgit {
+    url = "https://git.kernel.org/pub/scm/linux/kernel/git/dborkman/l2md.git";
+    rev = "2b9fae141fc2129940e0337732a35a3fc1c33455";
+    sha256 = "PNNoD3a+rJwKH6wbOkvVU1IW4+xF7+zQaLFAlyLlYOI=";
+  };
+
+  buildInputs = [ libgit2 ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp l2md $out/bin
+  '';
+
+  meta = with lib; {
+    description = "Convert public-inbox archives to maildir messages";
+    longDescription = ''
+      Quick and dirty hack to import lore.kernel.org list archives via git,
+      to export them in maildir format or through a pipe, and to keep them
+      periodically synced.
+    '';
+    homepage = "https://git.kernel.org/pub/scm/linux/kernel/git/dborkman/l2md.git";
+    license = licenses.gpl2Only;
+    maintainers = with maintainers; [ yoctocell ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/text/ledger2beancount/default.nix b/nixpkgs/pkgs/tools/text/ledger2beancount/default.nix
index fe2078222d2e..b3f48085d1db 100644
--- a/nixpkgs/pkgs/tools/text/ledger2beancount/default.nix
+++ b/nixpkgs/pkgs/tools/text/ledger2beancount/default.nix
@@ -4,21 +4,26 @@ with lib;
 
 let
   perlDeps = with perlPackages; [
-    ConfigOnion DateCalc
-    FileBaseDir YAMLLibYAML
-    GetoptLongDescriptive DateTimeFormatStrptime
+    DateCalc
+    DateTimeFormatStrptime
+    enum
+    FileBaseDir
+    GetoptLongDescriptive
+    ListMoreUtils
+    RegexpCommon
     StringInterpolate
+    YAMLLibYAML
   ];
 
 in stdenv.mkDerivation rec {
   pname = "ledger2beancount";
-  version = "2.1";
+  version = "2.5";
 
   src = fetchFromGitHub {
-    owner = "zacchiro";
+    owner = "beancount";
     repo = "ledger2beancount";
     rev = version;
-    sha256 = "0w88jb1x0w02jwwf6ipx3cxr89kzffrrdqws3556zrvvs01bh84j";
+    sha256 = "0kimp8l9ax37grfv5r5iw0g0xnrpkak022fl10y3i7kc4nyi1s99";
   };
 
   phases = [
@@ -50,7 +55,7 @@ in stdenv.mkDerivation rec {
 
       Conversion is based on (concrete) syntax, so that information that is not meaningful for accounting reasons but still valuable (e.g., comments, formatting, etc.) can be preserved.
     '';
-    homepage = "https://github.com/zacchiro/ledger2beancount";
+    homepage = "https://github.com/beancount/ledger2beancount";
     license = licenses.gpl3Plus;
     platforms = platforms.all;
     maintainers = with maintainers; [ pablovsky ];
diff --git a/nixpkgs/pkgs/tools/text/m2r/default.nix b/nixpkgs/pkgs/tools/text/m2r/default.nix
new file mode 100644
index 000000000000..f6dda712d0b9
--- /dev/null
+++ b/nixpkgs/pkgs/tools/text/m2r/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonApplication
+, fetchFromGitHub
+, docutils
+, mistune
+, pygments
+}:
+
+buildPythonApplication rec {
+  pname = "m2r";
+  version = "0.2.1";
+
+  src = fetchFromGitHub {
+    owner = "miyakogi";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-JNLPEXMoiISh4RnKP+Afj9/PJp9Lrx9UYHsfuGAL7uI=";
+  };
+
+  buildInputs = [
+    docutils
+    mistune
+    pygments
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/miyakogi/m2r";
+    description = "Markdown-to-RestructuredText converter";
+    license = licenses.mit;
+    maintainers = with maintainers; [ AndersonTorres ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/text/mark/default.nix b/nixpkgs/pkgs/tools/text/mark/default.nix
index dbfb85fc5831..0cccb644f9e3 100644
--- a/nixpkgs/pkgs/tools/text/mark/default.nix
+++ b/nixpkgs/pkgs/tools/text/mark/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "mark";
-  version = "5.2";
+  version = "5.5";
 
   src = fetchFromGitHub {
     owner  = "kovetskiy";
     repo   = "mark";
     rev    = version;
-    sha256 = "sha256-bjDQwtIsY+Dvv270DACvyU+MNPyI7EZcob6F/aebVac=";
+    sha256 = "sha256-+mDUT9zkawa6Ad1uptc34RGK3bhU6WowwUZdwKbOnj4=";
   };
 
-  vendorSha256 = "sha256-l6zHsis2fais5HQJQdfsSC0sPdcF4BeWoUznpl3Fh1g=";
+  vendorSha256 = "sha256-nneQ0B7PyHAqiOzrmWqSssZM8B3np4VFUJLBqUvkjZE=";
 
   buildFlagsArray = [ "-ldflags=-s -w -X main.version=${version}" ];
 
diff --git a/nixpkgs/pkgs/tools/text/markdown-pp/default.nix b/nixpkgs/pkgs/tools/text/markdown-pp/default.nix
index 50ef560f6c3f..c6e937eab275 100644
--- a/nixpkgs/pkgs/tools/text/markdown-pp/default.nix
+++ b/nixpkgs/pkgs/tools/text/markdown-pp/default.nix
@@ -1,13 +1,15 @@
-{ fetchFromGitHub, pythonPackages, lib }:
+{ lib
+, fetchFromGitHub
+, python3
+}:
 
-with pythonPackages;
-buildPythonApplication rec {
+python3.pkgs.buildPythonApplication rec {
   pname = "MarkdownPP";
   version = "1.5.1";
-  propagatedBuildInputs = [ pillow watchdog ];
+  propagatedBuildInputs = with python3.pkgs; [ pillow watchdog ];
   checkPhase = ''
     cd test
-    PATH=$out/bin:$PATH ${python}/bin/${python.executable} test.py
+    PATH=$out/bin:$PATH ${python3}/bin/${python3.executable} test.py
   '';
   src = fetchFromGitHub {
     owner = "jreese";
diff --git a/nixpkgs/pkgs/tools/text/mdbook/default.nix b/nixpkgs/pkgs/tools/text/mdbook/default.nix
index 98fb6e69be51..838cdf075bd9 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.6";
+  version = "0.4.7";
 
   src = fetchFromGitHub {
     owner = "rust-lang-nursery";
     repo = "mdBook";
     rev = "v${version}";
-    sha256 = "sha256-cS2fME3X8bFmEz6czoL+2ZFbflJP58+lIeC5SVleCNg=";
+    sha256 = "sha256-51S4I1YIbdgXkhuT7KnhJe71nGCQmr9JmuGtp7Bcxqo=";
   };
 
-  cargoSha256 = "sha256-iuJyprLp6HofcdH0NgNK2Vl+1FtdAvZPcltPUb5B2XU=";
+  cargoSha256 = "sha256-2kBJcImytsSd7Q0kj1bsP/NXxyy2Pr8gHb8iNf6h3/4=";
 
   buildInputs = lib.optionals stdenv.isDarwin [ CoreServices ];
 
diff --git a/nixpkgs/pkgs/tools/text/miller/default.nix b/nixpkgs/pkgs/tools/text/miller/default.nix
index 9cc31be7ed49..670c0612b391 100644
--- a/nixpkgs/pkgs/tools/text/miller/default.nix
+++ b/nixpkgs/pkgs/tools/text/miller/default.nix
@@ -3,13 +3,13 @@
 stdenv.mkDerivation rec {
   pname = "miller";
 
-  version = "5.10.0";
+  version = "5.10.2";
 
   src = fetchFromGitHub {
     owner = "johnkerl";
     repo = "miller";
     rev = "v${version}";
-    sha256 = "02jqbxnchljyqnmlbxjaf5zpdi03gxapfy38dfikl5j4f7yyxvjs";
+    sha256 = "sha256-NI57U3FpUfQ6ouBEYrzzG+9kpL58BD4HoAuRAFJMO9k=";
   };
 
   nativeBuildInputs = [ autoreconfHook flex libtool ];
diff --git a/nixpkgs/pkgs/tools/text/mpage/default.nix b/nixpkgs/pkgs/tools/text/mpage/default.nix
index 9bde7f388dcf..99cfec97a70b 100644
--- a/nixpkgs/pkgs/tools/text/mpage/default.nix
+++ b/nixpkgs/pkgs/tools/text/mpage/default.nix
@@ -7,8 +7,9 @@ stdenv.mkDerivation rec {
     sha256 = "1zn37r5xrvjgjbw2bdkc0r7s6q8b1krmcryzj0yf0dyxbx79rasi";
   };
 
-  patchPhase = ''
+  postPatch = ''
     sed -i "Makefile" -e "s|^ *PREFIX *=.*$|PREFIX = $out|g"
+    substituteInPlace Makefile --replace 'gcc' '${stdenv.cc.targetPrefix}cc'
   '';
 
   meta = {
@@ -24,6 +25,6 @@ stdenv.mkDerivation rec {
 
     license = "liberal";  # a non-copyleft license, see `Copyright' file
     homepage = "http://www.mesa.nl/pub/mpage/";
-    platforms = lib.platforms.linux;
+    platforms = lib.platforms.all;
   };
 }
diff --git a/nixpkgs/pkgs/tools/text/nawk/default.nix b/nixpkgs/pkgs/tools/text/nawk/default.nix
index 3c16421bd973..580d30a58330 100644
--- a/nixpkgs/pkgs/tools/text/nawk/default.nix
+++ b/nixpkgs/pkgs/tools/text/nawk/default.nix
@@ -1,26 +1,28 @@
-{ lib, stdenv, fetchFromGitHub, yacc }:
+{ lib, stdenv, fetchFromGitHub, bison, buildPackages }:
 
 stdenv.mkDerivation rec {
   pname = "nawk";
-  version = "20180827";
+  version = "unstable-2021-02-15";
 
   src = fetchFromGitHub {
     owner = "onetrueawk";
     repo = "awk";
-    rev = version;
-    sha256 = "0qcsxhcwg6g3c0zxmbipqa8d8d5n8zxrq0hymb8yavsaz103fcl6";
+    rev = "c0f4e97e4561ff42544e92512bbaf3d7d1f6a671";
+    sha256 = "kQCvItpSJnDJMDvlB8ruY+i0KdjmAphRDqCKw8f0m/8=";
   };
 
-  nativeBuildInputs = [ yacc ];
-
-  patchPhase = ''
-    substituteInPlace ./makefile \
-    --replace "YACC = yacc -d -S" ""
-  '';
+  depsBuildBuild = [ buildPackages.stdenv.cc ];
+  nativeBuildInputs = [ bison ];
+  makeFlags = [
+    "CC=${stdenv.cc.targetPrefix}cc"
+    "HOSTCC=${if stdenv.buildPlatform.isDarwin then "clang" else "cc"}"
+  ];
 
   installPhase = ''
+    runHook preInstall
     install -Dm755 a.out "$out/bin/nawk"
     install -Dm644 awk.1 "$out/share/man/man1/nawk.1"
+    runHook postInstall
   '';
 
   meta = {
@@ -33,6 +35,6 @@ stdenv.mkDerivation rec {
     homepage = "https://www.cs.princeton.edu/~bwk/btl.mirror/";
     license = lib.licenses.mit;
     maintainers = [ lib.maintainers.konimex ];
-    platforms = lib.platforms.linux;
+    platforms = lib.platforms.all;
   };
 }
diff --git a/nixpkgs/pkgs/tools/text/numdiff/default.nix b/nixpkgs/pkgs/tools/text/numdiff/default.nix
index db27c1bfd0c0..317d29003cd3 100644
--- a/nixpkgs/pkgs/tools/text/numdiff/default.nix
+++ b/nixpkgs/pkgs/tools/text/numdiff/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl }:
+{ lib, stdenv, fetchurl, libintl }:
 
 
 stdenv.mkDerivation rec {
@@ -9,6 +9,9 @@ stdenv.mkDerivation rec {
     url = "mirror://savannah/numdiff/numdiff-${version}.tar.gz";
     sha256 = "1vzmjh8mhwwysn4x4m2vif7q2k8i19x8azq7pzmkwwj4g48lla47";
   };
+
+  buildInputs = [ libintl ];
+
   meta = with lib; {
     description = ''
       A little program that can be used to compare putatively similar files
@@ -18,6 +21,6 @@ stdenv.mkDerivation rec {
     homepage = "https://www.nongnu.org/numdiff/";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [];
-    platforms = platforms.gnu ++ platforms.linux;
+    platforms = platforms.unix;
   };
 }
diff --git a/nixpkgs/pkgs/tools/text/podiff/default.nix b/nixpkgs/pkgs/tools/text/podiff/default.nix
index b44003a9f0df..2078c75f1362 100644
--- a/nixpkgs/pkgs/tools/text/podiff/default.nix
+++ b/nixpkgs/pkgs/tools/text/podiff/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation {
   pname = "podiff";
-  version = "1.2";
+  version = "1.3";
 
   src = fetchurl {
-    url = "ftp://download.gnu.org.ua/pub/release/podiff/podiff-1.2.tar.gz";
-    sha256 = "1l2b4hh53xlx28riigwarzkhxpv1pcz059xj1ka33ccvxc6c20k9";
+    url = "ftp://download.gnu.org.ua/pub/release/podiff/podiff-1.3.tar.gz";
+    sha256 = "sha256-7fpix+GkXsfpRgnkHtk1iXF6ILHri7BtUhNPK6sDQFA=";
   };
 
   patchPhase = ''
@@ -20,6 +20,6 @@ stdenv.mkDerivation {
     homepage = "http://puszcza.gnu.org.ua/software/podiff";
     license = licenses.gpl3Plus;
     maintainers = [ maintainers.goibhniu ];
-    platforms = platforms.linux;
+    platforms = platforms.unix;
   };
 }
diff --git a/nixpkgs/pkgs/tools/text/poedit/default.nix b/nixpkgs/pkgs/tools/text/poedit/default.nix
index 63d0c05e543b..185b2a41c46a 100644
--- a/nixpkgs/pkgs/tools/text/poedit/default.nix
+++ b/nixpkgs/pkgs/tools/text/poedit/default.nix
@@ -41,6 +41,6 @@ stdenv.mkDerivation rec {
     homepage = "https://www.poedit.net/";
     license = licenses.mit;
     platforms = platforms.unix;
-    maintainers = with maintainers; [ domenkozar ];
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/tools/text/popfile/default.nix b/nixpkgs/pkgs/tools/text/popfile/default.nix
index ef945235a904..e2f5952077f3 100644
--- a/nixpkgs/pkgs/tools/text/popfile/default.nix
+++ b/nixpkgs/pkgs/tools/text/popfile/default.nix
@@ -12,7 +12,8 @@ stdenv.mkDerivation rec {
     stripRoot = false;
   };
 
-  buildInputs = [ makeWrapper ] ++ (with perlPackages; [
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = (with perlPackages; [
     ## These are all taken from the popfile documentation as applicable to Linux
     ## http://getpopfile.org/docs/howtos:allplatformsrequireperl
     perl
diff --git a/nixpkgs/pkgs/tools/text/reckon/default.nix b/nixpkgs/pkgs/tools/text/reckon/default.nix
index bbefa94637db..b37928fc7c5b 100644
--- a/nixpkgs/pkgs/tools/text/reckon/default.nix
+++ b/nixpkgs/pkgs/tools/text/reckon/default.nix
@@ -6,7 +6,7 @@ stdenv.mkDerivation rec {
 
   phases = [ "installPhase" ];
 
-  buildInputs = [ makeWrapper ];
+  nativeBuildInputs = [ makeWrapper ];
 
   installPhase = let
     env = bundlerEnv {
diff --git a/nixpkgs/pkgs/tools/text/ripgrep/default.nix b/nixpkgs/pkgs/tools/text/ripgrep/default.nix
index 61e534fa732b..8c9eef9cc3dd 100644
--- a/nixpkgs/pkgs/tools/text/ripgrep/default.nix
+++ b/nixpkgs/pkgs/tools/text/ripgrep/default.nix
@@ -1,9 +1,9 @@
 { lib, stdenv
-, nixosTests
 , fetchFromGitHub
 , rustPlatform
 , asciidoctor
 , installShellFiles
+, pkg-config
 , Security
 , withPCRE2 ? true
 , pcre2 ? null
@@ -24,9 +24,10 @@ rustPlatform.buildRustPackage rec {
 
   cargoBuildFlags = lib.optional withPCRE2 "--features pcre2";
 
-  nativeBuildInputs = [ asciidoctor installShellFiles ];
+  nativeBuildInputs = [ asciidoctor installShellFiles ]
+    ++ lib.optional withPCRE2 pkg-config;
   buildInputs = (lib.optional withPCRE2 pcre2)
-  ++ (lib.optional stdenv.isDarwin Security);
+    ++ (lib.optional stdenv.isDarwin Security);
 
   preFixup = ''
     installManPage $releaseDir/build/ripgrep-*/out/rg.1
@@ -35,7 +36,15 @@ rustPlatform.buildRustPackage rec {
     installShellCompletion --zsh complete/_rg
   '';
 
-  passthru.tests = { inherit (nixosTests) ripgrep; };
+  doInstallCheck = true;
+  installCheckPhase = ''
+    file="$(mktemp)"
+    echo "abc\nbcd\ncde" > "$file"
+    $out/bin/rg -N 'bcd' "$file"
+    $out/bin/rg -N 'cd' "$file"
+  '' + lib.optionalString withPCRE2 ''
+    echo '(a(aa)aa)' | $out/bin/rg -P '\((a*|(?R))*\)'
+  '';
 
   meta = with lib; {
     description = "A utility that combines the usability of The Silver Searcher with the raw speed of grep";
diff --git a/nixpkgs/pkgs/tools/text/rst2html5/default.nix b/nixpkgs/pkgs/tools/text/rst2html5/default.nix
index 6f484bed8bcf..c9e8b0469869 100644
--- a/nixpkgs/pkgs/tools/text/rst2html5/default.nix
+++ b/nixpkgs/pkgs/tools/text/rst2html5/default.nix
@@ -3,12 +3,12 @@
 let
   pname = "rst2html5";
   version = "1.10.6";
-in python3Packages.buildPythonPackage {
-  inherit pname version;
   format = "wheel";
+in python3Packages.buildPythonPackage {
+  inherit pname version format;
 
   src = python3Packages.fetchPypi {
-    inherit pname version;
+    inherit pname version format;
     sha256 = "sha256-jmToDFLQODqgTycBp2J8LyoJ1Zxho9w1VdhFMzvDFkg=";
   };
 
diff --git a/nixpkgs/pkgs/tools/text/shfmt/default.nix b/nixpkgs/pkgs/tools/text/shfmt/default.nix
index cb5bb8a28e81..c6ab5ff9c734 100644
--- a/nixpkgs/pkgs/tools/text/shfmt/default.nix
+++ b/nixpkgs/pkgs/tools/text/shfmt/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "shfmt";
-  version = "3.2.2";
+  version = "3.2.4";
 
   src = fetchFromGitHub {
     owner = "mvdan";
     repo = "sh";
     rev = "v${version}";
-    sha256 = "sha256-ZeyHidw8iHboo/LHTR9E3Sqj8euaRvDaYbPQMdecsrk=";
+    sha256 = "sha256-BkvsCIcm3qnfECNhY3DIPnBRih6D7rOHOQu9oc0YDZA=";
   };
 
   vendorSha256 = "1ma7nvyn6ylbi8bd7x900i94pzs877kfy9xh0nf1bbify1vcpd29";
@@ -32,6 +32,6 @@ buildGoModule rec {
       You can feed it standard input, any number of files or any number of directories to recurse into.
     '';
     license = licenses.bsd3;
-    maintainers = with maintainers; [ zowoq ];
+    maintainers = with maintainers; [ zowoq SuperSandro2000 ];
   };
 }
diff --git a/nixpkgs/pkgs/tools/text/silver-searcher/default.nix b/nixpkgs/pkgs/tools/text/silver-searcher/default.nix
index 177c556a337d..8cd67b99263c 100644
--- a/nixpkgs/pkgs/tools/text/silver-searcher/default.nix
+++ b/nixpkgs/pkgs/tools/text/silver-searcher/default.nix
@@ -1,4 +1,4 @@
-{lib, stdenv, fetchFromGitHub, autoreconfHook, pkg-config, pcre, zlib, lzma}:
+{lib, stdenv, fetchFromGitHub, autoreconfHook, pkg-config, pcre, zlib, xz}:
 
 stdenv.mkDerivation rec {
   pname = "silver-searcher";
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
   NIX_LDFLAGS = lib.optionalString stdenv.isLinux "-lgcc_s";
 
   nativeBuildInputs = [ autoreconfHook pkg-config ];
-  buildInputs = [ pcre zlib lzma ];
+  buildInputs = [ pcre zlib xz ];
 
   meta = with lib; {
     homepage = "https://github.com/ggreer/the_silver_searcher/";
diff --git a/nixpkgs/pkgs/tools/text/snippetpixie/default.nix b/nixpkgs/pkgs/tools/text/snippetpixie/default.nix
index bfbfd8993163..935f593177bb 100644
--- a/nixpkgs/pkgs/tools/text/snippetpixie/default.nix
+++ b/nixpkgs/pkgs/tools/text/snippetpixie/default.nix
@@ -24,13 +24,13 @@
 
 stdenv.mkDerivation rec {
   pname = "snippetpixie";
-  version = "1.5.0";
+  version = "1.5.1";
 
   src = fetchFromGitHub {
     owner = "bytepixie";
     repo = pname;
     rev = version;
-    sha256 = "1cb76kzw34yr1r135lyd75ddm9v99m7i3lyirm353cdch8qspfmv";
+    sha256 = "047ghk0zfmcsnbr4h2h5ar7g1sw2mnk8r2887v81dh3vf767rqg2";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/tools/text/source-highlight/default.nix b/nixpkgs/pkgs/tools/text/source-highlight/default.nix
index c8eb43a51c9d..6e1a7b24b594 100644
--- a/nixpkgs/pkgs/tools/text/source-highlight/default.nix
+++ b/nixpkgs/pkgs/tools/text/source-highlight/default.nix
@@ -23,6 +23,8 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = false;
 
+  outputs = [ "out" "doc" "dev" ];
+
   meta = with lib; {
     description = "Source code renderer with syntax highlighting";
     longDescription = ''
diff --git a/nixpkgs/pkgs/tools/text/tab/default.nix b/nixpkgs/pkgs/tools/text/tab/default.nix
index a0539d4d372b..096e0b04c695 100644
--- a/nixpkgs/pkgs/tools/text/tab/default.nix
+++ b/nixpkgs/pkgs/tools/text/tab/default.nix
@@ -1,14 +1,14 @@
 { lib, stdenv, fetchFromBitbucket, python3 }:
 
 stdenv.mkDerivation rec {
-  version = "7.2";
+  version = "8.0";
   pname = "tab";
 
   src = fetchFromBitbucket {
     owner = "tkatchev";
     repo = pname;
     rev = version;
-    sha256 = "1bm15lw0vp901dj2vsqx6yixmn7ls3brrzh1w6zgd1ksjzlm5aax";
+    sha256 = "sha256-RcDvghTiqIdH79khwDIo8PhvmcObmix8WBrHToLwcw4=";
   };
 
   checkInputs = [ python3 ];
diff --git a/nixpkgs/pkgs/tools/text/ugrep/default.nix b/nixpkgs/pkgs/tools/text/ugrep/default.nix
index 83cb0e463880..5806723a043e 100644
--- a/nixpkgs/pkgs/tools/text/ugrep/default.nix
+++ b/nixpkgs/pkgs/tools/text/ugrep/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "ugrep";
-  version = "3.1.0";
+  version = "3.1.7";
 
   src = fetchFromGitHub {
     owner = "Genivia";
     repo = pname;
     rev = "v${version}";
-    sha256 = "08pq759f2vvdbig64y3k9kicvgr2d5x8ara7b182dcm3slbpib3l";
+    sha256 = "sha256-nCpU4GBJ/4c/70hgVKfO1995XCyDRLVUeczsqnlkkFM=";
   };
 
   buildInputs = [ boost bzip2 lz4 pcre2 xz zlib ];
diff --git a/nixpkgs/pkgs/tools/text/uni2ascii/default.nix b/nixpkgs/pkgs/tools/text/uni2ascii/default.nix
index 19c95dcec637..e2bda04d13f1 100644
--- a/nixpkgs/pkgs/tools/text/uni2ascii/default.nix
+++ b/nixpkgs/pkgs/tools/text/uni2ascii/default.nix
@@ -34,6 +34,6 @@ stdenv.mkDerivation rec {
     similar ASCII characters, e.g. by stripping diacritics.
     '';
     maintainers = with lib.maintainers; [ goibhniu ];
-    platforms = lib.platforms.linux;
+    platforms = lib.platforms.all;
   };
 }
diff --git a/nixpkgs/pkgs/tools/text/unoconv/default.nix b/nixpkgs/pkgs/tools/text/unoconv/default.nix
index 59bd19085911..4516eba5095f 100644
--- a/nixpkgs/pkgs/tools/text/unoconv/default.nix
+++ b/nixpkgs/pkgs/tools/text/unoconv/default.nix
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
     sha256 = "1akx64686in8j8arl6vsgp2n3bv770q48pfv283c6fz6wf9p8fvr";
   };
 
-  buildInputs = [ asciidoc makeWrapper ];
+  nativeBuildInputs = [ asciidoc makeWrapper ];
 
   preBuild = ''
     makeFlags=prefix="$out"
diff --git a/nixpkgs/pkgs/tools/text/unrtf/default.nix b/nixpkgs/pkgs/tools/text/unrtf/default.nix
index 57ffe95988d0..3357404a7d3c 100644
--- a/nixpkgs/pkgs/tools/text/unrtf/default.nix
+++ b/nixpkgs/pkgs/tools/text/unrtf/default.nix
@@ -1,22 +1,14 @@
-{ lib, stdenv, fetchurl, fetchpatch, autoconf, automake, libiconv }:
+{ lib, stdenv, fetchurl, autoconf, automake, libiconv }:
 
 stdenv.mkDerivation rec {
   pname = "unrtf";
-  version = "0.21.9";
+  version = "0.21.10";
 
   src = fetchurl {
-    url = "https://www.gnu.org/software/unrtf/${pname}-${version}.tar.gz";
-    sha256 = "1pcdzf2h1prn393dkvg93v80vh38q0v817xnbwrlwxbdz4k7i8r2";
+    url = "https://ftp.gnu.org/gnu/${pname}/${pname}-${version}.tar.gz";
+    sha256 = "1bil6z4niydz9gqm2j861dkxmqnpc8m7hvidsjbzz7x63whj17xl";
   };
 
-  patches = [
-    (fetchpatch {
-      name = "CVE-2016-10091-0001-convert.c-Use-safe-buffer-size-and-snprintf.patch";
-      url = "https://bugs.debian.org/cgi-bin/bugreport.cgi?att=1;bug=849705;filename=0001-convert.c-Use-safe-buffer-size-and-snprintf.patch;msg=20";
-      sha256 = "0s0fjvm3zdm9967sijlipfrwjs0h23n2n8fa6f40xxp8y5qq5a0b";
-    })
-  ];
-
   nativeBuildInputs = [ autoconf automake ];
 
   buildInputs = [ libiconv ];
diff --git a/nixpkgs/pkgs/tools/text/vale/default.nix b/nixpkgs/pkgs/tools/text/vale/default.nix
index 59f5e7c0c0f8..0de5ea5377cd 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.9.1";
+  version = "2.10.2";
 
   subPackages = [ "cmd/vale" ];
   outputs = [ "out" "data" ];
@@ -11,10 +11,10 @@ buildGoModule rec {
     owner  = "errata-ai";
     repo   = "vale";
     rev    = "v${version}";
-    sha256 = "sha256-ItkWmBq1mBVZfHcnqDp8koEAWBH3k9Et2bFA2mNYjVY=";
+    sha256 = "0cpq2pv6d67fdnm2qbb7p9amk0as8bm4knkywak8fsqadxfadx80";
   };
 
-  vendorSha256 = null;
+  vendorSha256 = "14zimsl0f7sxqqka00krix3q2mxdcpk8n2zh7bz8awjwzn4kg8m3";
 
   postInstall = ''
     mkdir -p $data/share/vale
@@ -24,7 +24,7 @@ buildGoModule rec {
   buildFlagsArray = [ "-ldflags=-s -w -X main.version=${version}" ];
 
   meta = with lib; {
-    homepage = "https://errata-ai.gitbook.io/vale/";
+    homepage = "https://docs.errata.ai/vale/about";
     description = "A syntax-aware linter for prose built with speed and extensibility in mind";
     license = licenses.mit;
     maintainers = [ maintainers.marsam ];
diff --git a/nixpkgs/pkgs/tools/text/wdiff/default.nix b/nixpkgs/pkgs/tools/text/wdiff/default.nix
index 4d0f87354ad3..510cf18369e6 100644
--- a/nixpkgs/pkgs/tools/text/wdiff/default.nix
+++ b/nixpkgs/pkgs/tools/text/wdiff/default.nix
@@ -9,10 +9,15 @@ stdenv.mkDerivation rec {
     sha256 = "0sxgg0ms5lhi4aqqvz1rj4s77yi9wymfm3l3gbjfd1qchy66kzrl";
   };
 
+  # for makeinfo
+  nativeBuildInputs = [ texinfo ];
+
   buildInputs = [ texinfo ];
 
   checkInputs = [ which ];
 
+  strictDeps = true;
+
   meta = with lib; {
     homepage = "https://www.gnu.org/software/wdiff/";
     description = "Comparing files on a word by word basis";
diff --git a/nixpkgs/pkgs/tools/text/xml/basex/default.nix b/nixpkgs/pkgs/tools/text/xml/basex/default.nix
index 9256abf3cbdb..30482196322f 100644
--- a/nixpkgs/pkgs/tools/text/xml/basex/default.nix
+++ b/nixpkgs/pkgs/tools/text/xml/basex/default.nix
@@ -9,7 +9,8 @@ stdenv.mkDerivation rec {
     hash = "sha256-IZhRg2JcYQXQKU/lYZpLLcsSdjZZO+toY5yvk+RKUCY=";
   };
 
-  buildInputs = [ unzip jre ];
+  nativeBuildInputs = [ unzip ];
+  buildInputs = [ jre ];
 
   desktopItem = makeDesktopItem {
     name = "basex";
diff --git a/nixpkgs/pkgs/tools/text/xml/xmldiff/default.nix b/nixpkgs/pkgs/tools/text/xml/xmldiff/default.nix
new file mode 100644
index 000000000000..5814435e111b
--- /dev/null
+++ b/nixpkgs/pkgs/tools/text/xml/xmldiff/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildPythonApplication
+, fetchFromGitHub
+, lxml
+, six
+}:
+
+buildPythonApplication rec {
+  pname = "xmldiff";
+  version = "2.4";
+
+  src = fetchFromGitHub {
+    owner = "Shoobx";
+    repo = pname;
+    rev = version;
+    hash = "sha256-xqudHYfwOce2C0pcFzId0JDIIC6R5bllmVKsH+CvTdE=";
+  };
+
+  buildInputs = [
+    lxml
+    six
+  ];
+
+  meta = with lib; {
+    homepage = "https://xmldiff.readthedocs.io/en/stable/";
+    description = "A library and command line utility for diffing xml";
+    longDescription = ''
+      xmldiff is a library and a command-line utility for making diffs out of
+      XML. This may seem like something that doesn't need a dedicated utility,
+      but change detection in hierarchical data is very different from change
+      detection in flat data. XML type formats are also not only used for
+      computer readable data, it is also often used as a format for hierarchical
+      data that can be rendered into human readable formats. A traditional diff
+      on such a format would tell you line by line the differences, but this
+      would not be be readable by a human. xmldiff provides tools to make human
+      readable diffs in those situations.
+    '';
+    license = licenses.mit;
+    maintainers = with maintainers; [ AndersonTorres ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/text/yaml-merge/default.nix b/nixpkgs/pkgs/tools/text/yaml-merge/default.nix
index d36522edb874..7c4ecc49df5d 100644
--- a/nixpkgs/pkgs/tools/text/yaml-merge/default.nix
+++ b/nixpkgs/pkgs/tools/text/yaml-merge/default.nix
@@ -22,7 +22,7 @@ stdenv.mkDerivation {
     description = "Merge YAML data files";
     homepage = "https://github.com/abbradar/yaml-merge";
     license = licenses.bsd2;
-    platforms = platforms.linux;
+    platforms = platforms.unix;
     maintainers = with maintainers; [ abbradar ];
   };
 }
diff --git a/nixpkgs/pkgs/tools/text/zimreader/default.nix b/nixpkgs/pkgs/tools/text/zimreader/default.nix
deleted file mode 100644
index 64e6bf60e35d..000000000000
--- a/nixpkgs/pkgs/tools/text/zimreader/default.nix
+++ /dev/null
@@ -1,38 +0,0 @@
-{ lib, stdenv, fetchFromGitHub, fetchpatch, automake, autoconf, libtool
-, zimlib, cxxtools, tntnet
-}:
-
-stdenv.mkDerivation {
-  name = "zimreader-0.92";
-
-  src = fetchFromGitHub {
-    owner = "wikimedia";
-    repo = "openzim";
-    rev = "r1.3"; # there multiple tools with different version in the repo
-    sha256 = "0x529137rxy6ld64xqa6xmn93121ripxvkf3sc7hv3wg6km182sw";
-  };
-
-  patchFlags = [ "-p2" ];
-  patches = [
-    (fetchpatch {
-      name = "zimreader_tntnet221.patch";
-      url = "https://github.com/wikimedia/openzim/compare/r1.3...juliendehos:3ee5f11eaa811284d340451e6f466529c00f6ef2.patch";
-      sha256 = "0rc5n20svyyndqh7hsynjyblfraphgi0f6khw6f5jq89w9i1j1hd";
-    })
-  ];
-
-  enableParallelBuilding = true;
-  buildInputs = [ automake autoconf libtool zimlib cxxtools tntnet ];
-  setSourceRoot = ''
-    sourceRoot=$(echo */zimreader)
-  '';
-  preConfigure = "./autogen.sh";
-
-  meta = {
-    description = "A tool to serve ZIM files using HTTP";
-    homepage = "http://git.wikimedia.org/log/openzim";
-    license = lib.licenses.gpl2;
-    maintainers = with lib.maintainers; [ robbinch juliendehos ];
-    platforms = [ "x86_64-linux" ];
-  };
-}
diff --git a/nixpkgs/pkgs/tools/text/zimwriterfs/default.nix b/nixpkgs/pkgs/tools/text/zimwriterfs/default.nix
index c2600ec46f60..9a7e495df2b8 100644
--- a/nixpkgs/pkgs/tools/text/zimwriterfs/default.nix
+++ b/nixpkgs/pkgs/tools/text/zimwriterfs/default.nix
@@ -9,7 +9,7 @@
 , file
 , icu
 , gumbo
-, lzma
+, xz
 , xapian
 , zimlib
 , zlib
@@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [ automake autoconf libtool pkg-config ];
-  buildInputs = [ file icu gumbo lzma zimlib zlib xapian ];
+  buildInputs = [ file icu gumbo xz zimlib zlib xapian ];
   setSourceRoot = ''
     sourceRoot=$(echo */zimwriterfs)
   '';
diff --git a/nixpkgs/pkgs/tools/text/zstxtns-utils/default.nix b/nixpkgs/pkgs/tools/text/zstxtns-utils/default.nix
new file mode 100644
index 000000000000..362f2fca84d9
--- /dev/null
+++ b/nixpkgs/pkgs/tools/text/zstxtns-utils/default.nix
@@ -0,0 +1,39 @@
+{ coreutils
+, fetchurl
+, gnugrep
+, lib
+, makeWrapper
+, moreutils
+, stdenvNoCC
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "zstxtns-utils";
+  version = "0.0.3";
+
+  src = fetchurl {
+    url = "https://ytrizja.de/distfiles/zstxtns-utils-${version}.tar.gz";
+    sha256 = "I/Gm7vHUr29NClYWQ1kwu8HrNZpdLXfE/nutTNoqcdU=";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    runHook preInstall
+    install -D -t $out/bin zstxtns-merge zstxtns-unmerge
+    runHook postInstall
+  '';
+
+  postInstall = ''
+    wrapProgram $out/bin/zstxtns-merge --set PATH "${lib.makeBinPath [coreutils gnugrep moreutils]}"
+    wrapProgram $out/bin/zstxtns-unmerge --set PATH "${lib.makeBinPath [coreutils gnugrep]}"
+  '';
+
+  meta = with lib; {
+    description = "utilities to deal with text based name service databases";
+    homepage = "https://ytrizja.de/";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ zseri ];
+    platforms = platforms.all;
+  };
+}