Skip to content

Commit

Permalink
use built-in pandoc for quarto
Browse files Browse the repository at this point in the history
  • Loading branch information
olynch committed Dec 1, 2023
1 parent 0e678c4 commit e7d2600
Show file tree
Hide file tree
Showing 3 changed files with 103 additions and 2 deletions.
9 changes: 7 additions & 2 deletions fhs.nix
Original file line number Diff line number Diff line change
Expand Up @@ -114,8 +114,13 @@ let
linuxPackages.nvidia_x11
];


quartoPackages = pkgs:
with pkgs; [ quarto ];
let
quarto = pkgs.callPackage ./quarto.nix {
rWrapper = null;
};
in [ quarto ];

condaPackages = pkgs:
with pkgs;
Expand All @@ -133,7 +138,7 @@ let
(standardPackages pkgs)
++ optionals enableGraphical (graphicalPackages pkgs)
++ optionals enableJulia [(pkgs.callPackage ./julia.nix { juliaVersion=juliaVersion; })]
++ optionals enableQuarto (quartoPackages pkgs);
++ optionals enableQuarto (quartoPackages pkgs)
++ optionals enableConda (condaPackages pkgs)
++ optionals enableNVIDIA (nvidiaPackages pkgs)
++ optionals enablePython (pythonPackages pkgs);
Expand Down
8 changes: 8 additions & 0 deletions fix-deno-path.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
--- a/bin/quarto
+++ b/bin/quarto
@@ -125,4 +125,4 @@ fi
# Be sure to include any already defined QUARTO_DENO_OPTIONS
QUARTO_DENO_OPTIONS="--unstable --no-config --cached-only --allow-read --allow-write --allow-run --allow-env --allow-net --allow-ffi ${QUARTO_DENO_OPTIONS}"

-"${QUARTO_DENO}" ${QUARTO_ACTION} ${QUARTO_DENO_OPTIONS} ${QUARTO_DENO_EXTRA_OPTIONS} "${QUARTO_IMPORT_ARGMAP}" "${QUARTO_TARGET}" "$@"
+deno ${QUARTO_ACTION} ${QUARTO_DENO_OPTIONS} ${QUARTO_DENO_EXTRA_OPTIONS} "${QUARTO_IMPORT_ARGMAP}" "${QUARTO_TARGET}" "$@"
88 changes: 88 additions & 0 deletions quarto.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
{ stdenv
, lib
, esbuild
, deno
, fetchurl
, dart-sass
, rWrapper
, rPackages
, extraRPackages ? []
, makeWrapper
, runCommand
, python3
, quarto
, extraPythonPackages ? ps: with ps; []
, sysctl
}:

stdenv.mkDerivation (final: {
pname = "quarto";
version = "1.3.450";
src = fetchurl {
url = "https://github.com/quarto-dev/quarto-cli/releases/download/v${final.version}/quarto-${final.version}-linux-amd64.tar.gz";
sha256 = "sha256-bcj7SzEGfQxsw9P8WkcLrKurPupzwpgIGtxoE3KVwAU=";
};

nativeBuildInputs = [
makeWrapper
];

patches = [
./fix-deno-path.patch
];

postPatch = ''
# Compat for Deno >=1.26
substituteInPlace bin/quarto.js \
--replace 'Deno.setRaw(stdin.rid, ' 'Deno.stdin.setRaw(' \
--replace 'Deno.setRaw(Deno.stdin.rid, ' 'Deno.stdin.setRaw('
'';

dontStrip = true;

preFixup = ''
wrapProgram $out/bin/quarto \
--prefix PATH : ${lib.makeBinPath [ deno ]} \
--prefix QUARTO_ESBUILD : ${esbuild}/bin/esbuild \
--prefix QUARTO_DART_SASS : ${dart-sass}/bin/dart-sass \
${lib.optionalString (rWrapper != null) "--prefix QUARTO_R : ${rWrapper.override { packages = [ rPackages.rmarkdown ] ++ extraRPackages; }}/bin/R"} \
${lib.optionalString (python3 != null) "--prefix QUARTO_PYTHON : ${python3.withPackages (ps: with ps; [ jupyter ipython ] ++ (extraPythonPackages ps))}/bin/python3"}
'';

installPhase = ''
runHook preInstall
mkdir -p $out/bin $out/share
rm -r bin/tools
mv bin/* $out/bin
mv share/* $out/share
runHook postInstall
'';

passthru.tests = {
quarto-check = runCommand "quarto-check" {
nativeBuildInputs = lib.optionals stdenv.isDarwin [ sysctl ];
} ''
export HOME="$(mktemp -d)"
${quarto}/bin/quarto check
touch $out
'';
};

meta = with lib; {
description = "Open-source scientific and technical publishing system built on Pandoc";
longDescription = ''
Quarto is an open-source scientific and technical publishing system built on Pandoc.
Quarto documents are authored using markdown, an easy to write plain text format.
'';
homepage = "https://quarto.org/";
changelog = "https://github.com/quarto-dev/quarto-cli/releases/tag/v${version}";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ minijackson mrtarantoga ];
platforms = platforms.all;
sourceProvenance = with sourceTypes; [ binaryNativeCode binaryBytecode ];
};
})

0 comments on commit e7d2600

Please sign in to comment.