summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfin444 <fin444@users.noreply.github.com>2023-08-01 15:53:25 -0700
committergithub-actions[bot] <github-actions[bot]@users.noreply.github.com>2023-09-10 19:19:39 +0000
commit6efbc43d925915c52adf589525881a8ca3368e94 (patch)
tree4b91fca07efcbe69468ebffe75b608f07bff52c7
parentMerge pull request #254413 from NixOS/backport-254411-to-release-23.05 (diff)
downloadnixpkgs-6efbc43d925915c52adf589525881a8ca3368e94.tar.gz
onlyoffice-bin_latest: 7.2.0 -> 7.4.1
7.3+ is broken on wlroots, so separated into onlyoffice-bin (7.2.0) and onlyoffice-bin_latest wrapped with buildFHSEnv due to direct use of /usr/bin/curl to download plugins add new mesa (libgbm) dependency (cherry picked from commit 7301bb04eec8043a3617155821484806ce3bd16d)
-rw-r--r--pkgs/applications/office/onlyoffice-bin/7_2.nix (renamed from pkgs/applications/office/onlyoffice-bin/default.nix)4
-rw-r--r--pkgs/applications/office/onlyoffice-bin/7_4.nix215
-rw-r--r--pkgs/top-level/all-packages.nix5
3 files changed, 223 insertions, 1 deletions
diff --git a/pkgs/applications/office/onlyoffice-bin/default.nix b/pkgs/applications/office/onlyoffice-bin/7_2.nix
index ba4a75ddfbaa..8abf0909e6b3 100644
--- a/pkgs/applications/office/onlyoffice-bin/default.nix
+++ b/pkgs/applications/office/onlyoffice-bin/7_2.nix
@@ -177,6 +177,10 @@ stdenv.mkDerivation rec {
meta = with lib; {
description = "Office suite that combines text, spreadsheet and presentation editors allowing to create, view and edit local documents";
+ longDescription = ''
+ The latest versions of OnlyOffice are currently broken on wlroots environments (e.g. Hyprland, Sway).
+ If you are using a different environment, you can get the latest version using `onlyoffice-bin_latest`.
+ '';
homepage = "https://www.onlyoffice.com/";
downloadPage = "https://github.com/ONLYOFFICE/DesktopEditors/releases";
changelog = "https://github.com/ONLYOFFICE/DesktopEditors/blob/master/CHANGELOG.md";
diff --git a/pkgs/applications/office/onlyoffice-bin/7_4.nix b/pkgs/applications/office/onlyoffice-bin/7_4.nix
new file mode 100644
index 000000000000..bf587a4c9bc2
--- /dev/null
+++ b/pkgs/applications/office/onlyoffice-bin/7_4.nix
@@ -0,0 +1,215 @@
+{ stdenv
+, lib
+, fetchurl
+, buildFHSEnv
+ # Alphabetic ordering below
+, alsa-lib
+, at-spi2-atk
+, atk
+, autoPatchelfHook
+, cairo
+, curl
+, dbus
+, dconf
+, dpkg
+, fontconfig
+, gcc-unwrapped
+, gdk-pixbuf
+, glib
+, glibc
+, gsettings-desktop-schemas
+, gst_all_1
+, gtk2
+, gtk3
+, libpulseaudio
+, libudev0-shim
+, libdrm
+, makeWrapper
+, mesa
+, nspr
+, nss
+, pulseaudio
+, qt5
+, wrapGAppsHook
+, xkeyboard_config
+, xorg
+}:
+let
+
+ # Note on fonts:
+ #
+ # OnlyOffice does not distribute unfree fonts, but makes it easy to pick up
+ # any fonts you install. See:
+ #
+ # * https://helpcenter.onlyoffice.com/en/installation/docs-community-install-fonts-linux.aspx
+ # * https://www.onlyoffice.com/blog/2020/04/how-to-add-new-fonts-to-onlyoffice-desktop-editors/
+ #
+ # As recommended there, you should download
+ #
+ # arial.ttf, calibri.ttf, cour.ttf, symbol.ttf, times.ttf, wingding.ttf
+ #
+ # into `~/.local/share/fonts/`, otherwise the default template fonts, and
+ # things like bullet points, will not look as expected.
+
+ # TODO: Find out which of these fonts we'd be allowed to distribute along
+ # with this package, or how to make this easier for users otherwise.
+
+ # Not using the `noto-fonts-cjk` package from nixpkgs, because it was
+ # reported that its `.ttc` file is not picked up by OnlyOffice, see:
+ # https://github.com/NixOS/nixpkgs/pull/116343#discussion_r593979816
+ noto-fonts-cjk = fetchurl {
+ url =
+ let
+ version = "v20201206-cjk";
+ in
+ "https://github.com/googlefonts/noto-cjk/raw/${version}/NotoSansCJKsc-Regular.otf";
+ sha256 = "sha256-aJXSVNJ+p6wMAislXUn4JQilLhimNSedbc9nAuPVxo4=";
+ };
+
+ runtimeLibs = lib.makeLibraryPath [
+ curl
+ glibc
+ gcc-unwrapped.lib
+ libudev0-shim
+ pulseaudio
+ ];
+
+ derivation = stdenv.mkDerivation rec {
+ pname = "onlyoffice-desktopeditors";
+ version = "7.4.1";
+ minor = null;
+ src = fetchurl {
+ url = "https://github.com/ONLYOFFICE/DesktopEditors/releases/download/v${version}/onlyoffice-desktopeditors_amd64.deb";
+ sha256 = "sha256-vaBF3GJyLBldWdEruOeVpRvwGNwaRl7IKPguDLRoe8M=";
+ };
+
+ nativeBuildInputs = [
+ autoPatchelfHook
+ dpkg
+ makeWrapper
+ wrapGAppsHook
+ ];
+
+ buildInputs = [
+ alsa-lib
+ at-spi2-atk
+ atk
+ cairo
+ dbus
+ dconf
+ fontconfig
+ gdk-pixbuf
+ glib
+ gsettings-desktop-schemas
+ gst_all_1.gst-plugins-base
+ gst_all_1.gstreamer
+ gtk2
+ gtk3
+ libpulseaudio
+ libdrm
+ nspr
+ nss
+ mesa # libgbm
+ qt5.qtbase
+ qt5.qtdeclarative
+ qt5.qtsvg
+ qt5.qtwayland
+ xorg.libX11
+ xorg.libxcb
+ xorg.libXcomposite
+ xorg.libXcursor
+ xorg.libXdamage
+ xorg.libXext
+ xorg.libXfixes
+ xorg.libXi
+ xorg.libXrandr
+ xorg.libXrender
+ xorg.libXScrnSaver
+ xorg.libXtst
+ ];
+
+ dontWrapQtApps = true;
+
+ unpackPhase = ''
+ dpkg-deb --fsys-tarfile $src | tar -x --no-same-permissions --no-same-owner
+ '';
+
+ preConfigure = ''
+ cp --no-preserve=mode,ownership ${noto-fonts-cjk} opt/onlyoffice/desktopeditors/fonts/
+ '';
+
+ installPhase = ''
+ runHook preInstall
+
+ mkdir -p $out/{bin,lib,share}
+
+ mv usr/bin/* $out/bin
+ mv usr/share/* $out/share/
+ mv opt/onlyoffice/desktopeditors $out/share
+
+ for f in $out/share/desktopeditors/asc-de-*.png; do
+ size=$(basename "$f" ".png" | cut -d"-" -f3)
+ res="''${size}x''${size}"
+ mkdir -pv "$out/share/icons/hicolor/$res/apps"
+ ln -s "$f" "$out/share/icons/hicolor/$res/apps/onlyoffice-desktopeditors.png"
+ done;
+
+ substituteInPlace $out/bin/onlyoffice-desktopeditors \
+ --replace "/opt/onlyoffice/" "$out/share/"
+
+ ln -s $out/share/desktopeditors/DesktopEditors $out/bin/DesktopEditors
+
+ runHook postInstall
+ '';
+
+ preFixup = ''
+ gappsWrapperArgs+=(
+ --prefix LD_LIBRARY_PATH : "${runtimeLibs}" \
+ --set QT_XKB_CONFIG_ROOT "${xkeyboard_config}/share/X11/xkb" \
+ --set QTCOMPOSE "${xorg.libX11.out}/share/X11/locale" \
+ --set QT_QPA_PLATFORM "xcb"
+ # the bundled version of qt does not support wayland
+ )
+ '';
+
+ passthru.updateScript = ./update.sh;
+ };
+
+in
+
+# In order to download plugins, OnlyOffice uses /usr/bin/curl so we have to wrap it.
+# Curl still needs to be in runtimeLibs because the library is used directly in other parts of the code.
+buildFHSEnv {
+ name = derivation.name;
+
+ targetPkgs = pkgs': [
+ curl
+ derivation
+ ];
+
+ runScript = "/bin/onlyoffice-desktopeditors";
+
+ extraInstallCommands = ''
+ mv $out/bin/$name $out/bin/onlyoffice-desktopeditors
+ mkdir -p $out/share
+ ln -s ${derivation}/share/icons $out/share
+ cp -r ${derivation}/share/applications $out/share
+ substituteInPlace $out/share/applications/onlyoffice-desktopeditors.desktop \
+ --replace "/usr/bin/onlyoffice-desktopeditors" "$out/bin/onlyoffice-desktopeditors"
+ '';
+
+ meta = with lib; {
+ description = "Office suite that combines text, spreadsheet and presentation editors allowing to create, view and edit local documents";
+ longDescription = ''
+ This version is broken on wlroots environments (e.g. Hyprland, Sway).
+ If you are using one of these environments, please use `onlyoffice-bin` instead.
+ '';
+ homepage = "https://www.onlyoffice.com/";
+ downloadPage = "https://github.com/ONLYOFFICE/DesktopEditors/releases";
+ changelog = "https://github.com/ONLYOFFICE/DesktopEditors/blob/master/CHANGELOG.md";
+ platforms = [ "x86_64-linux" ];
+ sourceProvenance = with sourceTypes; [ binaryNativeCode ];
+ license = licenses.agpl3Plus;
+ maintainers = with maintainers; [ nh2 gtrunsec ];
+ };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 7d45793a7fd7..9bf8ff965a25 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -32835,7 +32835,10 @@ with pkgs;
okteto = callPackage ../development/tools/okteto { };
- onlyoffice-bin = callPackage ../applications/office/onlyoffice-bin { };
+ onlyoffice-bin_7_2 = callPackage ../applications/office/onlyoffice-bin/7_2.nix { };
+ onlyoffice-bin_7_4 = callPackage ../applications/office/onlyoffice-bin/7_4.nix { };
+ onlyoffice-bin = onlyoffice-bin_7_2;
+ onlyoffice-bin_latest = onlyoffice-bin_7_4;
onmetal-image = callPackage ../tools/virtualization/onmetal-image { };