mirror of
https://github.com/ilyakooo0/nixpkgs.git
synced 2024-10-20 04:02:40 +03:00
79 lines
1.8 KiB
Nix
79 lines
1.8 KiB
Nix
{ 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
|