Merge pull request #154785 from tfc/pandoc-drawio-filter

pandoc-drawio-filter: init at 1.0
This commit is contained in:
Robert Hensing 2022-01-13 18:07:46 +01:00 committed by GitHub
commit 5473929d36
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 80 additions and 0 deletions

View file

@ -0,0 +1,78 @@
{ buildPythonApplication
, drawio
, fetchFromGitHub
, lib
, pandoc
, pandocfilters
, runCommand
, runtimeShell
, texlive
, writeScriptBin
, xvfb-run
}:
let
version = "1.1";
src = fetchFromGitHub {
owner = "tfc";
repo = "pandoc-drawio-filter";
rev = version;
sha256 = "sha256-2XJSAfxqEmmamWIAM3vZqi0mZjUUugmR3zWw8Imjadk=";
};
wrappedDrawio = writeScriptBin "drawio" ''
#!${runtimeShell}
# Electron really wants a configuration directory to not die with:
# "Error: Failed to get 'appData' path"
# so we give it some temp dir as XDG_CONFIG_HOME
tmpdir=$(mktemp -d)
function cleanup {
rm -rf "$tmpdir"
}
trap cleanup EXIT
# Drawio needs to run in a virtual X session, because Electron
# refuses to work and dies with an unhelpful error message otherwise:
# "The futex facility returned an unexpected error code."
XDG_CONFIG_HOME="$tmpdir" ${xvfb-run}/bin/xvfb-run ${drawio}/bin/drawio $@
'';
pandoc-drawio-filter = buildPythonApplication {
pname = "pandoc-drawio-filter";
inherit src version;
propagatedBuildInputs = [
wrappedDrawio
pandocfilters
];
passthru.tests.example-doc =
let
env = {
nativeBuildInputs = [
pandoc
pandoc-drawio-filter
texlive.combined.scheme-tetex
];
};
in
runCommand "$pandoc-drawio-filter-example-doc.pdf" env ''
cp -r ${src}/example/* .
pandoc -F pandoc-drawio example.md -T pdf -o $out
'';
meta = with lib; {
homepage = "https://github.com/tfc/pandoc-drawio-filter";
description = "Pandoc filter which converts draw.io diagrams to PDF";
license = licenses.mit;
maintainers = with maintainers; [ tfc ];
};
};
in
pandoc-drawio-filter

View file

@ -8102,6 +8102,8 @@ with pkgs;
pandoc-imagine = python3Packages.callPackage ../tools/misc/pandoc-imagine { };
pandoc-drawio-filter = python3Packages.callPackage ../tools/misc/pandoc-drawio-filter { };
pandoc-plantuml-filter = python3Packages.callPackage ../tools/misc/pandoc-plantuml-filter { };
patray = callPackage ../tools/audio/patray { };