summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorMichael Raskin <7c6f434c@mail.ru>2018-03-27 19:18:49 +0200
committerMichael Raskin <7c6f434c@mail.ru>2018-03-27 19:30:09 +0200
commit95a819c0026a7a3c0dd2099e1c53fea95430c505 (patch)
tree823e77228812c6400616c48aa5140310cfbeafff /pkgs
parent7f2305c431f04178d9935ffad41956e7e542ac5c (diff)
downloadnixpkgs-95a819c0026a7a3c0dd2099e1c53fea95430c505.tar
nixpkgs-95a819c0026a7a3c0dd2099e1c53fea95430c505.tar.gz
nixpkgs-95a819c0026a7a3c0dd2099e1c53fea95430c505.tar.bz2
nixpkgs-95a819c0026a7a3c0dd2099e1c53fea95430c505.tar.lz
nixpkgs-95a819c0026a7a3c0dd2099e1c53fea95430c505.tar.xz
nixpkgs-95a819c0026a7a3c0dd2099e1c53fea95430c505.tar.zst
nixpkgs-95a819c0026a7a3c0dd2099e1c53fea95430c505.zip
libreoffice: wrap to set JAVA_HOME, SAL_USE_VCLPLUGIN and DBus session if not set
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/applications/office/libreoffice/default.nix2
-rw-r--r--pkgs/applications/office/libreoffice/still.nix2
-rw-r--r--pkgs/applications/office/libreoffice/wrapper.nix16
-rw-r--r--pkgs/applications/office/libreoffice/wrapper.sh27
-rw-r--r--pkgs/top-level/all-packages.nix91
5 files changed, 91 insertions, 47 deletions
diff --git a/pkgs/applications/office/libreoffice/default.nix b/pkgs/applications/office/libreoffice/default.nix
index 7da7a6bf734..89af45814bf 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 866b8e92337..d1e80724aaf 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 00000000000..8566bd76e1e
--- /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 00000000000..591b4251506
--- /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 546e4514a17..0b4215a31ff 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;