From aa06f12b2940a9a43d4a10ea4350d038a815deab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Madeleine=20Sydney=20=C5=9Alaga?= Date: Wed, 17 Sep 2025 19:47:39 -0600 Subject: [PATCH] feat(quiver): init --- pkgs/quiver/default.nix | 57 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 pkgs/quiver/default.nix diff --git a/pkgs/quiver/default.nix b/pkgs/quiver/default.nix new file mode 100644 index 0000000..4a1d906 --- /dev/null +++ b/pkgs/quiver/default.nix @@ -0,0 +1,57 @@ +{ stdenv, fetchNpmDeps, fetchFromGitHub, fetchzip, fetchurl, lib, imagemagick, nodejs_20 }: + +let + vendoredKatex = fetchzip { + url = "https://github.com/KaTeX/KaTeX/releases/download/v0.16.9/katex.zip"; + hash = "sha256-Nca52SW4Q0P5/fllDFQEaOQyak7ojCs0ShlqJ1mWZOM="; + }; + vendoredWorkbox = fetchurl { + url = "https://storage.googleapis.com/workbox-cdn/releases/7.0.0/workbox-window.prod.mjs"; + hash = "sha256-YR3m/DqqF+yahPQAk/2k0yRmdoYtQNBEHsL6fQTDmlc="; + }; + vendoredWorkboxMap = fetchurl { + url = "https://storage.googleapis.com/workbox-cdn/releases/7.0.0/workbox-window.prod.mjs.map"; + hash = "sha256-tUBiVoiKi3OCT+wctUYl0FVnT7StsGBDx7EzculcF5I="; + }; + rev = "9872f3f9265f92643387239e76042c8d3ffeb410"; +in stdenv.mkDerivation (final: { + pname = "quiver"; + version = lib.substring 0 7 rev; + inherit vendoredKatex vendoredWorkbox vendoredWorkboxMap; + src = fetchFromGitHub { + owner = "varkor"; + repo = "quiver"; + inherit rev; + hash = "sha256-wSyCzUSLUL5nzUe5E4RdWv44WGd4C9WO6udkKY9cyBs="; + }; + npmDeps = fetchNpmDeps { + src = "${final.src}/service-worker"; + hash = "sha256-xlww7Yfle58Qdwn/IcA6E6Fy7ZvH/ltKdlk6hvcC4UM="; + }; + preBuild = '' + cp -r $vendoredKatex src/KaTeX + mkdir src/Workbox + cp $vendoredWorkbox src/Workbox/workbox-window.prod.mjs + cp $vendoredWorkboxMap src/Workbox/workbox-window.prod.mjs.map + ''; + buildPhase = '' + runHook preBuild + pushd service-worker + npm install --cache $npmDeps + node build.js + popd + runHook postBuild + ''; + installPhase = '' + runHook preInstall + mkdir -p $out/opt + cp -r src $out/opt/quiver + runHook postInstall + ''; + nativeBuildInputs = [ + imagemagick + ]; + buildInputs = [ + nodejs_20 + ]; +})