diff --git a/pkgs/development/ocaml-modules/tw/default.nix b/pkgs/development/ocaml-modules/tw/default.nix new file mode 100644 index 000000000000..55f73dbe105c --- /dev/null +++ b/pkgs/development/ocaml-modules/tw/default.nix @@ -0,0 +1,55 @@ +{ + buildDunePackage, + cascade, + cmdliner, + fetchFromGitHub, + fmt, + lib, + ocaml, +}: + +buildDunePackage (finalAttrs: { + pname = "tw"; + version = "0-unstable-2026-06-23"; + minimalOCamlVersion = "5.2"; + __structuredAttrs = true; + + src = fetchFromGitHub { + owner = "samoht"; + repo = "tw"; + rev = "594d35df46ec2afcfe97632923331badf2940b93"; + hash = "sha256-vCRq0FCBIxc/AQg+R2Hig7nqwJGxgy2jedLbAsKaIoA="; + }; + + propagatedBuildInputs = [ cascade ]; + buildInputs = [ + cmdliner + fmt + ]; + + # Disabling tests because they check for byte-for-byte identical + # output with tailwindcss, so they are tied to a specific + # tailwindcss version, and would prevent independent upgrades of tw + # and tailwindcss. + doCheck = false; + + outputs = [ + "bin" + "lib" + "out" + ]; + + installPhase = '' + runHook preInstall + dune install --prefix=$bin --libdir=$lib/lib/ocaml/${ocaml.version}/site-lib + runHook postInstall + ''; + + meta = { + description = "Type-safe Tailwind CSS v4 in OCaml"; + homepage = "https://github.com/samoht/tw"; + mainProgram = "tw"; + license = lib.licenses.isc; + maintainers = [ lib.maintainers.vog ]; + }; +}) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 5b1e4c87fc3a..287d06540253 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1213,6 +1213,8 @@ with pkgs; ) ); + tw = ocamlPackages.tw.bin; + wrapRetroArch = retroarch-bare.wrapper; # Aliases kept here because they are easier to use diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix index 4f5e425673bf..974759c5491b 100644 --- a/pkgs/top-level/ocaml-packages.nix +++ b/pkgs/top-level/ocaml-packages.nix @@ -2191,6 +2191,8 @@ let tuntap = callPackage ../development/ocaml-modules/tuntap { }; + tw = callPackage ../development/ocaml-modules/tw { }; + twt = callPackage ../development/ocaml-modules/twt { }; type_eq = callPackage ../development/ocaml-modules/type_eq { };