diff --git a/pkgs/by-name/he/headlessDisplayHook/headless-display-hook.sh b/pkgs/by-name/he/headlessDisplayHook/headless-display-hook.sh new file mode 100644 index 0000000000000..618911b20bd70 --- /dev/null +++ b/pkgs/by-name/he/headlessDisplayHook/headless-display-hook.sh @@ -0,0 +1,10 @@ +appendToVar prePhases setupHeadlessDisplay + +setupHeadlessDisplay() { + export FONTCONFIG_FILE=@fontconfig_file@ + export XDG_RUNTIME_DIR=$(mktemp -d) + export XDG_CACHE_HOME=$(mktemp -d) + export LD_LIBRARY_PATH="@ld_library_path@:${LD_LIBRARY_PATH:-}" + Xvfb :99 -screen 0 800x600x24 >/dev/null 2>&1 & + export DISPLAY=:99 +} diff --git a/pkgs/by-name/he/headlessDisplayHook/package.nix b/pkgs/by-name/he/headlessDisplayHook/package.nix new file mode 100644 index 0000000000000..5b46fea0f6c44 --- /dev/null +++ b/pkgs/by-name/he/headlessDisplayHook/package.nix @@ -0,0 +1,23 @@ +{ + lib, + stdenv, + makeSetupHook, + xvfb, + makeFontsConf, + dejavu_fonts, + mesa, +}: +if stdenv.hostPlatform.isLinux then + makeSetupHook { + name = "headlessDisplayHook"; + propagatedBuildInputs = [ + xvfb + mesa.llvmpipeHook + ]; + substitutions = { + fontconfig_file = makeFontsConf { fontDirectories = [ dejavu_fonts ]; }; + ld_library_path = lib.makeLibraryPath [ mesa ]; + }; + } ./headless-display-hook.sh +else + null diff --git a/pkgs/desktops/lomiri/qml/lomiri-ui-toolkit/default.nix b/pkgs/desktops/lomiri/qml/lomiri-ui-toolkit/default.nix index 4866d7aee8db1..38cc6ddaf021e 100644 --- a/pkgs/desktops/lomiri/qml/lomiri-ui-toolkit/default.nix +++ b/pkgs/desktops/lomiri/qml/lomiri-ui-toolkit/default.nix @@ -10,7 +10,6 @@ gdb, glib, lttng-ust, - mesa, perl, pkg-config, python3, @@ -27,7 +26,7 @@ suru-icon-theme, validatePkgConfig, wrapQtAppsHook, - xvfb-run, + headlessDisplayHook, }: let @@ -148,8 +147,7 @@ stdenv.mkDerivation (finalAttrs: { dbus-test-runner dpkg # `dpkg-architecture -qDEB_HOST_ARCH` response decides how tests are run gdb - mesa.llvmpipeHook # ShapeMaterial needs an OpenGL context: https://gitlab.com/ubports/development/core/lomiri-ui-toolkit/-/issues/35 - xvfb-run + headlessDisplayHook ]; qmakeFlags = [ @@ -178,7 +176,7 @@ stdenv.mkDerivation (finalAttrs: { export QT_PLUGIN_PATH=${qtPluginPaths} export XDG_DATA_DIRS=${suru-icon-theme}/share - tests/xvfb.sh make check ''${enableParallelChecking:+-j''${NIX_BUILD_CORES}} + make check ''${enableParallelChecking:+-j''${NIX_BUILD_CORES}} runHook postCheck '';