diff --git a/pkgs/applications/office/libreoffice/default.nix b/pkgs/applications/office/libreoffice/default.nix index 7da7a6bf7342..89af45814bff 100644 --- a/pkgs/applications/office/libreoffice/default.nix +++ b/pkgs/applications/office/libreoffice/default.nix @@ -269,7 +269,7 @@ in stdenv.mkDerivation rec { nativeBuildInputs = [ wrapGAppsHook ]; passthru = { - inherit srcs; + inherit srcs jdk; }; requiredSystemFeatures = [ "big-parallel" ]; diff --git a/pkgs/applications/office/libreoffice/still.nix b/pkgs/applications/office/libreoffice/still.nix index 866b8e923378..d1e80724aaf3 100644 --- a/pkgs/applications/office/libreoffice/still.nix +++ b/pkgs/applications/office/libreoffice/still.nix @@ -261,7 +261,7 @@ in stdenv.mkDerivation rec { nativeBuildInputs = [ wrapGAppsHook ]; passthru = { - inherit srcs; + inherit srcs jdk; }; requiredSystemFeatures = [ "big-parallel" ]; diff --git a/pkgs/applications/office/libreoffice/wrapper.nix b/pkgs/applications/office/libreoffice/wrapper.nix new file mode 100644 index 000000000000..8566bd76e1e2 --- /dev/null +++ b/pkgs/applications/office/libreoffice/wrapper.nix @@ -0,0 +1,16 @@ +{ libreoffice, runCommand, dbus, bash }: +let + jdk = libreoffice.jdk; +in +(runCommand "${libreoffice.name}" { + inherit dbus libreoffice jdk bash; +} '' + mkdir -p "$out/bin" + ln -s "${libreoffice}/share" "$out/share" + substituteAll "${./wrapper.sh}" "$out/bin/soffice" + chmod a+x "$out/bin/soffice" + + for i in $(ls "${libreoffice}/bin/"); do + test "$i" = "soffice" || ln -s soffice "$out/bin/$(basename "$i")" + done +'') // { inherit libreoffice dbus; } diff --git a/pkgs/applications/office/libreoffice/wrapper.sh b/pkgs/applications/office/libreoffice/wrapper.sh new file mode 100644 index 000000000000..591b42515063 --- /dev/null +++ b/pkgs/applications/office/libreoffice/wrapper.sh @@ -0,0 +1,27 @@ +#!@bash@/bin/bash +export JAVA_HOME="${JAVA_HOME:-@jdk@}" +export SAL_USE_VCLPLUGIN="${SAL_USE_VCLPLUGIN:-gen}" + +if uname | grep Linux > /dev/null && + ! ( test -n "$DBUS_SESSION_BUS_ADDRESS" && + test -n "$DBUS_SYSTEM_BUS_ADDRESS" ); then + dbus_tmp_dir="/run/user/$(id -u)/libreoffice-dbus" + mkdir "$dbus_tmp_dir" + dbus_socket_dir="$(mktemp -d -p "$dbus_tmp_dir")" + cat "@dbus@/share/dbus-1/system.conf" | + grep -v '[<]user[>]messagebus' > "$dbus_socket_dir/system.conf" + if test -z "$DBUS_SESSION_BUS_ADDRESS"; then + "@dbus@"/bin/dbus-daemon --nopidfile --nofork --config-file "@dbus@"/share/dbus-1/session.conf --address "unix:path=$dbus_socket_dir/session" >&2 & + export DBUS_SESSION_BUS_ADDRESS="unix:path=$dbus_socket_dir/session" + fi + if test -z "$DBUS_SYSTEM_BUS_ADDRESS"; then + "@dbus@"/bin/dbus-daemon --nopidfile --nofork --config-file "$dbus_socket_dir/system.conf" --address "unix:path=$dbus_socket_dir/system" >&2 & + export DBUS_SYSTEM_BUS_ADDRESS="unix:path=$dbus_socket_dir/system" + fi +fi + +"@libreoffice@/bin/$(basename "$0")" "$@" +code="$?" + +test -n "$dbus_socket_dir" && rm -rf "$dbus_socket_dir" +exit "$code" diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 546e4514a17f..0b4215a31ff4 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -16458,51 +16458,52 @@ with pkgs; libreoffice = hiPrio libreoffice-still; - libreoffice-fresh = lowPrio (callPackage ../applications/office/libreoffice { - inherit (perlPackages) ArchiveZip CompressZlib; - inherit (gnome2) GConf ORBit2 gnome_vfs; - inherit (gnome3) defaultIconTheme; - zip = zip.override { enableNLS = false; }; - bluez5 = bluez5_28; - fontsConf = makeFontsConf { - fontDirectories = [ - carlito dejavu_fonts - freefont_ttf xorg.fontmiscmisc - liberation_ttf_v1_binary - liberation_ttf_v2_binary - ]; - }; - clucene_core = clucene_core_2; - lcms = lcms2; - harfbuzz = harfbuzz.override { - withIcu = true; withGraphite2 = true; - }; - # checking whether g++ supports C++14 or C++11... configure: error: no - stdenv = overrideCC stdenv gcc5; - }); - - libreoffice-still = lowPrio (callPackage ../applications/office/libreoffice/still.nix { - inherit (perlPackages) ArchiveZip CompressZlib; - inherit (gnome2) GConf ORBit2 gnome_vfs; - inherit (gnome3) defaultIconTheme; - zip = zip.override { enableNLS = false; }; - bluez5 = bluez5_28; - poppler = poppler_0_61; - fontsConf = makeFontsConf { - fontDirectories = [ - freefont_ttf xorg.fontmiscmisc - ]; - }; - clucene_core = clucene_core_2; - lcms = lcms2; - harfbuzz = harfbuzz.override { - withIcu = true; withGraphite2 = true; - }; - icu = icu58; - # checking whether g++ supports C++14 or C++11... configure: error: no - stdenv = overrideCC stdenv gcc5; - }); + libreoffice-fresh = lowPrio (callPackage ../applications/office/libreoffice/wrapper.nix + { libreoffice = callPackage ../applications/office/libreoffice { + inherit (perlPackages) ArchiveZip CompressZlib; + inherit (gnome2) GConf ORBit2 gnome_vfs; + inherit (gnome3) defaultIconTheme; + zip = zip.override { enableNLS = false; }; + bluez5 = bluez5_28; + fontsConf = makeFontsConf { + fontDirectories = [ + carlito dejavu_fonts + freefont_ttf xorg.fontmiscmisc + liberation_ttf_v1_binary + liberation_ttf_v2_binary + ]; + }; + clucene_core = clucene_core_2; + lcms = lcms2; + harfbuzz = harfbuzz.override { + withIcu = true; withGraphite2 = true; + }; + # checking whether g++ supports C++14 or C++11... configure: error: no + stdenv = overrideCC stdenv gcc5; + };}); + libreoffice-still = lowPrio (callPackage ../applications/office/libreoffice/wrapper.nix + { libreoffice = callPackage ../applications/office/libreoffice/still.nix { + inherit (perlPackages) ArchiveZip CompressZlib; + inherit (gnome2) GConf ORBit2 gnome_vfs; + inherit (gnome3) defaultIconTheme; + zip = zip.override { enableNLS = false; }; + bluez5 = bluez5_28; + poppler = poppler_0_61; + fontsConf = makeFontsConf { + fontDirectories = [ + freefont_ttf xorg.fontmiscmisc + ]; + }; + clucene_core = clucene_core_2; + lcms = lcms2; + harfbuzz = harfbuzz.override { + withIcu = true; withGraphite2 = true; + }; + icu = icu58; + # checking whether g++ supports C++14 or C++11... configure: error: no + stdenv = overrideCC stdenv gcc5; + };}); liferea = callPackage ../applications/networking/newsreaders/liferea { inherit (gnome3) libpeas gsettings-desktop-schemas dconf;