diff options
Diffstat (limited to 'pkgs/applications/office/onlyoffice-bin/7_5.nix')
-rw-r--r-- | pkgs/applications/office/onlyoffice-bin/7_5.nix | 202 |
1 files changed, 202 insertions, 0 deletions
diff --git a/pkgs/applications/office/onlyoffice-bin/7_5.nix b/pkgs/applications/office/onlyoffice-bin/7_5.nix new file mode 100644 index 0000000000000..33744bb3831ef --- /dev/null +++ b/pkgs/applications/office/onlyoffice-bin/7_5.nix @@ -0,0 +1,202 @@ +{ 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 +, noto-fonts-cjk-sans +, 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. + + runtimeLibs = lib.makeLibraryPath [ + curl + glibc + gcc-unwrapped.lib + libudev0-shim + pulseaudio + ]; + + derivation = stdenv.mkDerivation rec { + pname = "onlyoffice-desktopeditors"; + version = "7.5.1"; + minor = null; + src = fetchurl { + url = "https://github.com/ONLYOFFICE/DesktopEditors/releases/download/v${version}/onlyoffice-desktopeditors_amd64.deb"; + sha256 = "sha256-Hf5CNbUUMuHZHDY3fgD4qpF4UASevscK8DTZlauyHhY="; + }; + + 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 + ''; + + 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. +# Fonts are also discovered by looking in /usr/share/fonts, so adding fonts to targetPkgs will include them +buildFHSEnv { + name = derivation.name; + + targetPkgs = pkgs': [ + curl + derivation + noto-fonts-cjk-sans + ]; + + 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 ]; + }; +} |