diff --git a/pkgs/tools/text/to-html/default.nix b/pkgs/tools/text/to-html/default.nix
new file mode 100644
index 000000000000..0b49fd8be2b1
--- /dev/null
+++ b/pkgs/tools/text/to-html/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, fetchFromGitHub
+, rustPlatform
+}:
+
+rustPlatform.buildRustPackage rec {
+ version = "0.1.4";
+ pname = "to-html";
+
+ src = fetchFromGitHub {
+ owner = "Aloso";
+ repo = "to-html";
+ rev = "v${version}";
+ hash = "sha256-zkTBjsMFhRz7lVRh8i+XkaJ/qWmTAMPnkH5aDhbHf8U=";
+ };
+
+ cargoHash = "sha256-hXc+lB3DKnRZkp1U5wW/vPKSZ0c1UknQCAxDfE7Eubg=";
+
+ # Requires external resources
+ doCheck = false;
+
+ meta = {
+ description = "Terminal wrapper for rendering a terminal on a website by converting ANSI escape sequences to HTML.";
+ homepage = "https://github.com/Aloso/to-html";
+ changelog = "https://github.com/Aloso/to-html/blob/${src.rev}/CHANGELOG.md";
+ license = lib.licenses.mit;
+ platforms = lib.platforms.all;
+ maintainers = with lib.maintainers; [ icewind1991 ];
+ };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index afdd88e13b17..780b655cd1fa 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -13591,6 +13591,8 @@ with pkgs;
tncattach = callPackage ../applications/radio/tncattach { };
+ to-html = callPackage ../tools/text/to-html { };
+
toilet = callPackage ../tools/misc/toilet { };
tokei = callPackage ../development/tools/misc/tokei {