From 84be33e6de9a2fc67e62219485a0315809dc6a8d Mon Sep 17 00:00:00 2001 From: phanirithvij Date: Thu, 4 Jun 2026 11:04:25 +0530 Subject: [PATCH 1/3] texlyre: init at 0.8.0 Co-Authored-By: blokyk Co-Authored-By: eljamm Signed-off-by: phanirithvij --- pkgs/by-name/te/texlyre/package.nix | 90 +++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 pkgs/by-name/te/texlyre/package.nix diff --git a/pkgs/by-name/te/texlyre/package.nix b/pkgs/by-name/te/texlyre/package.nix new file mode 100644 index 000000000000..19a77b0f8cfe --- /dev/null +++ b/pkgs/by-name/te/texlyre/package.nix @@ -0,0 +1,90 @@ +{ + lib, + xsel, + serve, + fetchzip, + makeWrapper, + buildNpmPackage, + fetchFromGitHub, + + baseUrl ? "/", +}: + +buildNpmPackage (finalAttrs: { + pname = "texlyre"; + version = "0.8.0"; + + src = fetchFromGitHub { + owner = "TeXlyre"; + repo = "texlyre"; + tag = "v${finalAttrs.version}"; + hash = "sha256-aBGhTJS/UDcWOhzP4HtIQO5ZjNGXTj3oPLje65HIhe4="; + }; + + npmDepsHash = "sha256-davqKXgSwjPM0QQ/moo5sjh7e9wVXjH30SrFC4opmuQ="; + + postPatch = '' + sed -i 's/"version": ".*"/"version": "${finalAttrs.version}"/' package.json + + substituteInPlace texlyre.config.ts \ + --replace-fail "baseUrl: '/texlyre/'" "baseUrl: '${baseUrl}'" + + # disable downloading assets + substituteInPlace scripts/setup-assets.cjs \ + --replace-fail "await downloadCoreAssets();" "" + ''; + + nativeBuildInputs = [ makeWrapper ]; + + __structuredAttrs = true; + + preBuild = '' + # put core assets in place + mkdir -p public/core + cp -r ${finalAttrs.passthru.drawioEmbed}/drawio-embed public/core/drawio-embed + cp -r ${finalAttrs.passthru.busytexAssets} public/core/busytex + + npm run generate:configs + ''; + + doCheck = true; + checkPhase = '' + runHook preCheck + npm run test:check + runHook postCheck + ''; + + installPhase = '' + runHook preInstall + mv dist $out + runHook postInstall + ''; + + postFixup = '' + makeWrapper ${lib.getExe serve} $out/bin/texlyre \ + --prefix PATH : ${lib.makeBinPath [ xsel ]} \ + --chdir $out + ''; + + passthru = { + drawioEmbed = fetchzip { + url = "https://github.com/TeXlyre/drawio-embed-mirror/archive/refs/tags/v29.7.9.zip"; + hash = "sha256-mj+i+6n14Koo9TYaygrCgFg0OLfBZnnL6rE3PkJGa9w="; + }; + busytexAssets = fetchzip { + url = "https://github.com/TeXlyre/texlyre-busytex/releases/download/assets-v1.1.1/busytex-assets.tar.gz"; + hash = "sha256-CLhLYLNXsJflX6o642EEJu+hxwoy3zkzfAOShiZGVPg="; + stripRoot = false; + }; + }; + + meta = { + changelog = "https://github.com/TeXlyre/texlyre/releases/tag/${finalAttrs.src.rev}"; + description = "Local-first LaTeX & Typst web editor with real-time collaboration & offline support"; + homepage = "https://github.com/TeXlyre/texlyre"; + license = lib.licenses.agpl3Only; + platforms = lib.platforms.all; + mainProgram = "texlyre"; + teams = with lib.teams; [ ngi ]; + }; +}) From 4fc02ef545c31a0fbf595b3ca9fcea1acf5ca377 Mon Sep 17 00:00:00 2001 From: phanirithvij Date: Tue, 9 Jun 2026 19:13:54 +0530 Subject: [PATCH 2/3] texlyre: add updateScript Signed-off-by: phanirithvij --- pkgs/by-name/te/texlyre/package.nix | 35 +++++++++++++++++++++-------- pkgs/by-name/te/texlyre/update.sh | 19 ++++++++++++++++ 2 files changed, 45 insertions(+), 9 deletions(-) create mode 100755 pkgs/by-name/te/texlyre/update.sh diff --git a/pkgs/by-name/te/texlyre/package.nix b/pkgs/by-name/te/texlyre/package.nix index 19a77b0f8cfe..988c29c8cbd2 100644 --- a/pkgs/by-name/te/texlyre/package.nix +++ b/pkgs/by-name/te/texlyre/package.nix @@ -3,6 +3,7 @@ xsel, serve, fetchzip, + stdenvNoCC, makeWrapper, buildNpmPackage, fetchFromGitHub, @@ -67,15 +68,31 @@ buildNpmPackage (finalAttrs: { ''; passthru = { - drawioEmbed = fetchzip { - url = "https://github.com/TeXlyre/drawio-embed-mirror/archive/refs/tags/v29.7.9.zip"; - hash = "sha256-mj+i+6n14Koo9TYaygrCgFg0OLfBZnnL6rE3PkJGa9w="; - }; - busytexAssets = fetchzip { - url = "https://github.com/TeXlyre/texlyre-busytex/releases/download/assets-v1.1.1/busytex-assets.tar.gz"; - hash = "sha256-CLhLYLNXsJflX6o642EEJu+hxwoy3zkzfAOShiZGVPg="; - stripRoot = false; - }; + updateScript = ./update.sh; + drawioEmbed = stdenvNoCC.mkDerivation (finalAttrs: { + pname = "drawio-embed"; + version = "29.7.9"; + src = fetchFromGitHub { + owner = "TeXlyre"; + repo = "drawio-embed-mirror"; + tag = "v${finalAttrs.version}"; + hash = "sha256-mj+i+6n14Koo9TYaygrCgFg0OLfBZnnL6rE3PkJGa9w="; + }; + dontBuild = true; + installPhase = "cp -a . $out"; + }); + busytexAssets = stdenvNoCC.mkDerivation (finalAttrs: { + pname = "busytex-assets"; + version = "1.1.1"; + src = fetchFromGitHub { + owner = "TeXlyre"; + repo = "texlyre-busytex"; + tag = "assets-v${finalAttrs.version}"; + hash = "sha256-vlLoJw5EX6x3nTQvBC8hntDa5QKtY46eJSxJLJzs4EE="; + }; + dontBuild = true; + installPhase = "cp -a . $out"; + }); }; meta = { diff --git a/pkgs/by-name/te/texlyre/update.sh b/pkgs/by-name/te/texlyre/update.sh new file mode 100755 index 000000000000..047ce9fde425 --- /dev/null +++ b/pkgs/by-name/te/texlyre/update.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p nix-update jq gitMinimal + +set -euo pipefail + +nix-update texlyre + +PKG_DIR=$(realpath "$(dirname "$0")") +NIXPKGS_ROOT="$(git rev-parse --show-toplevel)" +SRC_DIR=$(nix-build -E "(import \"$NIXPKGS_ROOT\" {}).texlyre.src" --no-out-link) +ASSETS_SCRIPT="$SRC_DIR/scripts/download-core-assets.cjs" + +DRAWIO_VERSION=$(grep -A 2 "name: 'drawio-embed'" "$ASSETS_SCRIPT" | grep "version:" | cut -d "'" -f 2 | sed 's/^v//') +BUSYTEX_VERSION=$(grep -A 2 "name: 'texlyre-busytex'" "$ASSETS_SCRIPT" | grep "version:" | cut -d "'" -f 2 | sed 's/^v//') + +echo "Updating: drawio-embed=$DRAWIO_VERSION, busytex=$BUSYTEX_VERSION" + +nix-update texlyre.passthru.drawioEmbed --version "$DRAWIO_VERSION" +nix-update texlyre.passthru.busytexAssets --version "$BUSYTEX_VERSION" From 116e5bbb44f57b942c0fa1a36a834e757b472273 Mon Sep 17 00:00:00 2001 From: phanirithvij Date: Mon, 29 Jun 2026 00:21:02 +0530 Subject: [PATCH 3/3] texlyre: 0.8.0 -> 0.9.0 Signed-off-by: phanirithvij --- pkgs/by-name/te/texlyre/package.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkgs/by-name/te/texlyre/package.nix b/pkgs/by-name/te/texlyre/package.nix index 988c29c8cbd2..85754754ff66 100644 --- a/pkgs/by-name/te/texlyre/package.nix +++ b/pkgs/by-name/te/texlyre/package.nix @@ -13,16 +13,16 @@ buildNpmPackage (finalAttrs: { pname = "texlyre"; - version = "0.8.0"; + version = "0.9.0"; src = fetchFromGitHub { owner = "TeXlyre"; repo = "texlyre"; tag = "v${finalAttrs.version}"; - hash = "sha256-aBGhTJS/UDcWOhzP4HtIQO5ZjNGXTj3oPLje65HIhe4="; + hash = "sha256-sUyQYtTuE5bNEqxDw9DYT0KRiww7PmGnQ7CYt60EbSc="; }; - npmDepsHash = "sha256-davqKXgSwjPM0QQ/moo5sjh7e9wVXjH30SrFC4opmuQ="; + npmDepsHash = "sha256-bOhK7kQWY3QYri9S+WoD8VyZXTGK5gcK/ixpGeeP4hg="; postPatch = '' sed -i 's/"version": ".*"/"version": "${finalAttrs.version}"/' package.json @@ -71,12 +71,12 @@ buildNpmPackage (finalAttrs: { updateScript = ./update.sh; drawioEmbed = stdenvNoCC.mkDerivation (finalAttrs: { pname = "drawio-embed"; - version = "29.7.9"; + version = "30.2.2"; src = fetchFromGitHub { owner = "TeXlyre"; repo = "drawio-embed-mirror"; tag = "v${finalAttrs.version}"; - hash = "sha256-mj+i+6n14Koo9TYaygrCgFg0OLfBZnnL6rE3PkJGa9w="; + hash = "sha256-bdOhviJl0P/+GSJKaHMbGoPf+uEhoX5GeyY6bGBOpCg="; }; dontBuild = true; installPhase = "cp -a . $out";