diff --git a/pkgs/by-name/on/onlyoffice-bin/package.nix b/pkgs/by-name/on/onlyoffice-bin/package.nix index 4c9c0cd1e326..5156778b7e25 100644 --- a/pkgs/by-name/on/onlyoffice-bin/package.nix +++ b/pkgs/by-name/on/onlyoffice-bin/package.nix @@ -1,6 +1,7 @@ { stdenv , lib , fetchurl +, buildFHSEnv # Alphabetic ordering below , alsa-lib , at-spi2-atk @@ -24,6 +25,8 @@ , libudev0-shim , libdrm , makeWrapper +, mesa +, noto-fonts-cjk-sans , nspr , nss , pulseaudio @@ -52,18 +55,6 @@ let # 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 @@ -72,115 +63,130 @@ let 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="; + derivation = stdenv.mkDerivation rec { + pname = "onlyoffice-desktopeditors"; + version = "8.1.0"; + minor = null; + src = fetchurl { + url = "https://github.com/ONLYOFFICE/DesktopEditors/releases/download/v${version}/onlyoffice-desktopeditors_amd64.deb"; + sha256 = "sha256-hS1+gLN17sP3EFud3fQXRWeFiQbrumBONLjqXEl89Js="; + }; + + nativeBuildInputs = [ + autoPatchelfHook + dpkg + makeWrapper + wrapGAppsHook3 + ]; + + 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 + ) + ''; }; - nativeBuildInputs = [ - autoPatchelfHook - dpkg - makeWrapper - wrapGAppsHook3 +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 { + inherit (derivation) pname version; + + targetPkgs = pkgs': [ + curl + derivation + noto-fonts-cjk-sans ]; - 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 + runScript = "/bin/onlyoffice-desktopeditors"; + extraInstallCommands = '' + 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-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 - ) + --replace "/usr/bin/onlyoffice-desktopeditors" "$out/bin/onlyoffice-desktopeditors" ''; 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`. - ''; + mainProgram = "onlyoffice-desktopeditors"; 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/by-name/on/onlyoffice-bin_latest/package.nix b/pkgs/by-name/on/onlyoffice-bin_latest/package.nix deleted file mode 100644 index 726bda8df039..000000000000 --- a/pkgs/by-name/on/onlyoffice-bin_latest/package.nix +++ /dev/null @@ -1,202 +0,0 @@ -{ 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 -, wrapGAppsHook3 -, 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 = "8.1.0"; - minor = null; - src = fetchurl { - url = "https://github.com/ONLYOFFICE/DesktopEditors/releases/download/v${version}/onlyoffice-desktopeditors_amd64.deb"; - sha256 = "sha256-hS1+gLN17sP3EFud3fQXRWeFiQbrumBONLjqXEl89Js="; - }; - - nativeBuildInputs = [ - autoPatchelfHook - dpkg - makeWrapper - wrapGAppsHook3 - ]; - - 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 - ) - ''; - }; - -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 { - inherit (derivation) pname version; - - targetPkgs = pkgs': [ - curl - derivation - noto-fonts-cjk-sans - ]; - - runScript = "/bin/onlyoffice-desktopeditors"; - - extraInstallCommands = '' - 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" - ''; - - 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"; - mainProgram = "onlyoffice-desktopeditors"; - 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/by-name/on/onlyoffice-bin_latest/update.sh b/pkgs/by-name/on/onlyoffice-bin_latest/update.sh deleted file mode 100644 index d7b0bc106fa2..000000000000 --- a/pkgs/by-name/on/onlyoffice-bin_latest/update.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env nix-shell -#!nix-shell -i bash -p curl jq common-updater-scripts - -version="$(curl -sL "https://api.github.com/repos/ONLYOFFICE/DesktopEditors/releases?per_page=1" | jq -r ".[0].tag_name" | sed 's/^v//')" -update-source-version onlyoffice-bin "$version" diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index e4fecb5c991d..868f130a4406 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -1025,8 +1025,9 @@ mapAliases ({ optparse-bash = throw "'optparse-bash' (GitHub: nk412/optparse) has been removed. Use 'argparse' instead"; # Added 2024-01-12 orchis = orchis-theme; # Added 2021-06-09 oni2 = throw "oni2 was removed, because it is unmaintained and was abandoned years ago."; #Added 2024-01-15 - onlyoffice-bin_7_2 = throw "onlyoffice-bin_7_2 has been renamed to onlyoffice-bin"; # Added 2024-02-05 - onlyoffice-bin_7_5 = throw "onlyoffice-bin_7_5 has been renamed to onlyoffice-bin_latest (and updated from 7.5.x)"; # Added 2024-02-05 + onlyoffice-bin_latest = onlyoffice-bin; # Added 2024-07-03 + onlyoffice-bin_7_2 = throw "onlyoffice-bin_7_2 has been removed. Please use the latest version available under onlyoffice-bin"; # Added 2024-07-03 + onlyoffice-bin_7_5 = throw "onlyoffice-bin_7_5 has been removed. Please use the latest version available under onlyoffice-bin"; # Added 2024-07-03 oroborus = throw "oroborus was removed, because it was abandoned years ago."; #Added 2023-09-10 osxfuse = macfuse-stubs; # Added 2021-03-20 oxen = throw "'oxen' has been removed, because it was broken, outdated and unmaintained"; # Added 2023-12-09