1{ stdenv
2, lib
3, pandoc
4, esbuild
5, deno
6, fetchurl
7, nodePackages
8, rWrapper
9, rPackages
10, extraRPackages ? []
11, makeWrapper
12, python3
13, extraPythonPackages ? ps: with ps; []
14}:
15
16stdenv.mkDerivation rec {
17 pname = "quarto";
18 version = "1.2.475";
19 src = fetchurl {
20 url = "https://github.com/quarto-dev/quarto-cli/releases/download/v${version}/quarto-${version}-linux-amd64.tar.gz";
21 sha256 = "sha256-oyKjDlTKt2fIzirOqgNRrpuM7buNCG5mmgIztPa28rY=";
22 };
23
24 nativeBuildInputs = [
25 makeWrapper
26 ];
27
28 patches = [
29 ./fix-deno-path.patch
30 ];
31
32 postPatch = ''
33 # Compat for Deno >=1.26
34 substituteInPlace bin/quarto.js \
35 --replace 'Deno.setRaw(stdin.rid, ' 'Deno.stdin.setRaw(' \
36 --replace 'Deno.setRaw(Deno.stdin.rid, ' 'Deno.stdin.setRaw('
37 '';
38
39 dontStrip = true;
40
41 preFixup = ''
42 wrapProgram $out/bin/quarto \
43 --prefix PATH : ${lib.makeBinPath [ deno ]} \
44 --prefix QUARTO_PANDOC : ${pandoc}/bin/pandoc \
45 --prefix QUARTO_ESBUILD : ${esbuild}/bin/esbuild \
46 --prefix QUARTO_DART_SASS : ${nodePackages.sass}/bin/sass \
47 --prefix QUARTO_R : ${rWrapper.override { packages = [ rPackages.rmarkdown ] ++ extraRPackages; }}/bin/R \
48 --prefix QUARTO_PYTHON : ${python3.withPackages (ps: with ps; [ jupyter ipython ] ++ (extraPythonPackages ps))}/bin/python3
49 '';
50
51 installPhase = ''
52 runHook preInstall
53
54 mkdir -p $out/bin $out/share
55
56 rm -r bin/tools
57
58 mv bin/* $out/bin
59 mv share/* $out/share
60
61 runHook preInstall
62 '';
63
64 meta = with lib; {
65 description = "Open-source scientific and technical publishing system built on Pandoc";
66 longDescription = ''
67 Quarto is an open-source scientific and technical publishing system built on Pandoc.
68 Quarto documents are authored using markdown, an easy to write plain text format.
69 '';
70 homepage = "https://quarto.org/";
71 changelog = "https://github.com/quarto-dev/quarto-cli/releases/tag/v${version}";
72 license = licenses.gpl2Plus;
73 maintainers = with maintainers; [ mrtarantoga ];
74 platforms = [ "x86_64-linux" ];
75 sourceProvenance = with sourceTypes; [ binaryNativeCode binaryBytecode ];
76 };
77}