diff --git a/pkgs/applications/graphics/drawio/headless.nix b/pkgs/applications/graphics/drawio/headless.nix new file mode 100644 index 00000000000..c70511fa652 --- /dev/null +++ b/pkgs/applications/graphics/drawio/headless.nix @@ -0,0 +1,36 @@ +{ lib, writeTextFile, runtimeShell, drawio, xvfb-run }: + +writeTextFile { + name = "${drawio.pname}-headless-${drawio.version}"; + + executable = true; + destination = "/bin/drawio"; + text = '' + #!${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 $@ + ''; + + meta = with lib; { + description = "xvfb wrapper around drawio"; + longDescription = '' + A wrapper around drawio for running in headless environments. + Runs drawio under xvfb-run, with configuration going to a temporary + directory. + ''; + maintainers = with maintainers; [ qyliss tfc ]; + }; +} diff --git a/pkgs/tools/misc/pandoc-drawio-filter/default.nix b/pkgs/tools/misc/pandoc-drawio-filter/default.nix index 1279296143c..73dd658dfb1 100644 --- a/pkgs/tools/misc/pandoc-drawio-filter/default.nix +++ b/pkgs/tools/misc/pandoc-drawio-filter/default.nix @@ -1,5 +1,5 @@ { buildPythonApplication -, drawio +, drawio-headless , fetchFromGitHub , lib , pandoc @@ -21,32 +21,13 @@ let 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 + drawio-headless pandocfilters ]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index cec2a41cd0d..19e61fdaf88 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -25860,6 +25860,7 @@ with pkgs; drawing = callPackage ../applications/graphics/drawing { }; drawio = callPackage ../applications/graphics/drawio {}; + drawio-headless = callPackage ../applications/graphics/drawio/headless.nix { }; drawpile = libsForQt5.callPackage ../applications/graphics/drawpile { }; drawpile-server-headless = libsForQt5.callPackage ../applications/graphics/drawpile {