diff options
author | fin444 <fin444@users.noreply.github.com> | 2024-02-02 15:25:50 -0500 |
---|---|---|
committer | fin444 <fin444@users.noreply.github.com> | 2024-02-05 16:38:53 -0500 |
commit | 9d551ab298957b0ff3ca2786846d1f5d806a46d3 (patch) | |
tree | e33974374fe0ba062a8b2269f19b92a9b31200b9 /pkgs/by-name/on/onlyoffice-bin/package.nix | |
parent | 42a8cabeeb8a8270203a5d831c529f4258632dc5 (diff) |
onlyoffice-bin, onlyoffice-bin_latest: move to pkgs/by-name
Diffstat (limited to 'pkgs/by-name/on/onlyoffice-bin/package.nix')
-rw-r--r-- | pkgs/by-name/on/onlyoffice-bin/package.nix | 192 |
1 files changed, 192 insertions, 0 deletions
diff --git a/pkgs/by-name/on/onlyoffice-bin/package.nix b/pkgs/by-name/on/onlyoffice-bin/package.nix new file mode 100644 index 0000000000000..8abf0909e6b33 --- /dev/null +++ b/pkgs/by-name/on/onlyoffice-bin/package.nix @@ -0,0 +1,192 @@ +{ stdenv +, lib +, fetchurl + # 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 +, 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 + ]; + +in +stdenv.mkDerivation rec { + pname = "onlyoffice-desktopeditors"; + version = "7.2.0"; + minor = null; + src = fetchurl { + url = "https://github.com/ONLYOFFICE/DesktopEditors/releases/download/v${version}/onlyoffice-desktopeditors_amd64.deb"; + sha256 = "sha256-O9gC/b5/eZ1YImuXpEZOJhI1rzCNuFrm5IqablnYo9Y="; + }; + + 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 + 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 + + substituteInPlace $out/share/applications/onlyoffice-desktopeditors.desktop \ + --replace "/usr/bin/onlyoffice-desktopeditor" "$out/bin/DesktopEditor" + + 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; + + 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"; + platforms = [ "x86_64-linux" ]; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + license = licenses.agpl3Plus; + maintainers = with maintainers; [ nh2 gtrunsec ]; + }; +} |