Change:
Apparently the DMG download is 404'ing - see below. Perhaps a different mirror should be used:
Apparently they remove older versions. Maintainer:
Maybe we can use to avoid 404's.
Good input. I'll update the version and have a look at it tomorrow.
is 404'ing again: . Should we re-open this issue?
I can't see version 7.2.5 in any supported nixpkgs branch anymore. If you're using an old commit, you'll be getting old bugs, of course.

Discussion:
<ins> { lib }: { meta = with lib; { description = "Comprehensive, professional-quality productivity suite, a variant of openoffice.org"; homepage = "https://libreoffice.org/"; license = licenses.lgpl3; maintainers = with maintainers; [ raskin tricktron ]; platforms = platforms.linux ++ [ "x86_64-darwin" "aarch64-darwin" ]; }; } </ins>

<del> { stdenv , lib , fetchurl , undmg }: let appName = "LibreOffice.app"; version = "7.2.5"; dist = { aarch64-darwin = { arch = "aarch64"; sha256 = "bdbcb9a98211f866ca089d440aebcd1d313aa99e8ab4104aae4e65ea3cee74ca"; }; x86_64-darwin = { arch = "x86_64"; sha256 = "0b7ef18ed08341ac6c15339fe9a161ad17f6b469009d987cfc7d50c628d12a4e"; }; }."${stdenv.hostPlatform.system}"; in stdenv.mkDerivation { inherit version; pname = "libreoffice"; src = fetchurl { url = "https://download.documentfoundation.org/libreoffice/stable/${version}/mac/${dist.arch}/LibreOffice_${version}_MacOS_${dist.arch}.dmg"; inherit (dist) sha256; }; nativeBuildInputs = [ undmg ]; sourceRoot = "${appName}"; dontPatch = true; dontConfigure = true; dontBuild = true; installPhase = '' runHook preInstallPhase mkdir -p $out/{Applications/${appName},bin} cp -R . $out/Applications/${appName} ln -s $out/Applications/${appName}/Contents/MacOS/soffice $out/bin runHook postInstallPhase ''; meta = with lib; { description = "Comprehensive, professional-quality productivity suite, a variant of openoffice.org"; homepage = "https://libreoffice.org/"; license = licenses.lgpl3; maintainers = with maintainers; [ tricktron ]; platforms = [ "aarch64-darwin" "x86_64-darwin" ]; }; } </del>

<ins> { stdenvNoCC , lib , fetchurl , undmg , writeScript , callPackage }: let appName = "LibreOffice.app"; scriptName = "soffice"; version = "7.3.3"; common = import ../common.nix { inherit lib; }; dist = { aarch64-darwin = rec { arch = "aarch64"; archSuffix = arch; url = "https://download.documentfoundation.org/libreoffice/stable/${version}/mac/${arch}/LibreOffice_${version}_MacOS_${archSuffix}.dmg"; sha256 = "50ed3deb8d9c987516e2687ebb865bca15486c69da79f1b6d74381e43f2ec863"; }; x86_64-darwin = rec { arch = "x86_64"; archSuffix = "x86-64"; url = "https://download.documentfoundation.org/libreoffice/stable/${version}/mac/${arch}/LibreOffice_${version}_MacOS_${archSuffix}.dmg"; sha256 = "fb2f9bb90eee34a22af3a2bf2854ef5b76098302b3c41d13d4f543f0d72b994f"; }; }; in stdenvNoCC.mkDerivation { inherit version; inherit (import ../common.nix { inherit lib; }) meta; pname = "libreoffice"; src = fetchurl { inherit (dist.${stdenvNoCC.hostPlatform.system} or (throw "Unsupported system: ${stdenvNoCC.hostPlatform.system}")) url sha256; }; nativeBuildInputs = [ undmg ]; sourceRoot = "${appName}"; installPhase = '' runHook preInstall mkdir -p $out/{Applications/${appName},bin} cp -R . $out/Applications/${appName} cat > $out/bin/${scriptName} << EOF #!${stdenvNoCC.shell} open -na $out/Applications/${appName} --args "$@" EOF chmod +x $out/bin/${scriptName} runHook postInstall ''; passthru.updateScript = let inherit (import ./update-utils.nix { inherit lib; }) getLatestStableVersion getSha256; newVersion = getLatestStableVersion; newAarch64Sha256 = getSha256 dist."aarch64-darwin".url version newVersion; newX86_64Sha256 = getSha256 dist."x86_64-darwin".url version newVersion; currentFile = builtins.toString ./default.nix; in writeScript "update-libreoffice.sh" '' #!/usr/bin/env nix-shell #!nix-shell -i bash -p common-updater-scripts set -eou pipefail # reset version first so that both platforms are always updated and in sync update-source-version libreoffice 0 ${lib.fakeSha256} --file=${currentFile} --system=aarch64-darwin update-source-version libreoffice ${newVersion} ${newAarch64Sha256} --file=${currentFile} --system=aarch64-darwin update-source-version libreoffice 0 ${lib.fakeSha256} --file=${currentFile} --system=x86_64-darwin update-source-version libreoffice ${newVersion} ${newX86_64Sha256} --file=${currentFile} --system=x86_64-darwin ''; } </ins>

<ins> # run the tests with nixt <absolutePath to parent dir> -v { pkgs ? import <nixpkgs> { }, nixt }: let inherit (import ./update-utils.nix { inherit (pkgs) lib; }) extractLatestVersionFromHtml extractSha256FromHtml getLatestStableVersion; in nixt.mkSuite "LibreOffice Updater" { "should extract latest stable version from html" = let latestVersionHtmlMock = '' <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Index of /libreoffice/stable</title> <link rel="stylesheet" href="/mirrorbrain.css" type="text/css" /> </head> <body> <h1>Index of /libreoffice/stable</h1> <table><tr><th>&nbsp;</th><th><a href="?C=N;O=D">Name</a></th><th><a href="?C=M;O=A">Last modified</a></th><th><a href="?C=S;O=A">Size</a></th><th>Metadata</th></tr><tr><th colspan="5"><hr /></th></tr> <tr><td valign="top">&nbsp;</td><td><a href="/libreoffice/">Parent Directory</a></td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr> <tr><td valign="top">&nbsp;</td><td><a href="7.2.7/">7.2.7/</a></td><td align="right">10-Mar-2022 11:12  </td><td align="right">  - </td><td>&nbsp;</td></tr> <tr><td valign="top">&nbsp;</td><td><a href="7.3.3/">7.3.3/</a></td><td align="right">12-May-2022 10:06  </td><td align="right">  - </td><td>&nbsp;</td></tr> <tr><td valign="top">&nbsp;</td><td><a href="7.2.6/">7.2.6/</a></td><td align="right">05-May-2022 07:57  </td><td align="right">  - </td><td>&nbsp;</td></tr> <tr><th colspan="5"><hr /></th></tr> </table> <address>Apache Server at <a href="mailto:hostmaster@documentfoundation.org">download.documentfoundation.org</a> Port 80</address> <br/><address><a href="http://mirrorbrain.org/">MirrorBrain</a> powered by <a href="http://httpd.apache.org/">Apache</a></address> </body></html> ''; actual = extractLatestVersionFromHtml latestVersionHtmlMock; in "7.3.3" == actual; "should extract latest stable version from website" = (builtins.compareVersions getLatestStableVersion "7.3.3") >= 0; "should extract sha256 from html" = let sha256Html = "50ed3deb8d9c987516e2687ebb865bca15486c69da79f1b6d74381e43f2ec863  LibreOffice_7.3.3_MacOS_aarch64.dmgn"; actual = extractSha256FromHtml sha256Html; in "50ed3deb8d9c987516e2687ebb865bca15486c69da79f1b6d74381e43f2ec863" == actual; } </ins>

<ins> { lib }: let # extractLatestVersionFromHtml :: String -> String extractLatestVersionFromHtml = htmlString: let majorMinorPatchGroup = "([0-9]+.[0-9]+.[0-9]+)"; splittedVersions = builtins.split "href="${majorMinorPatchGroup}" htmlString; stableVersions = builtins.concatLists (builtins.filter (e: builtins.isList e) splittedVersions); in if stableVersions == [ ] then abort "Failed to extract versions from html." else lib.last (builtins.sort builtins.lessThan stableVersions); # getHtml :: String -> String getHtml = url: builtins.readFile (builtins.fetchurl url); # getLatestStableVersion :: String getLatestStableVersion = extractLatestVersionFromHtml (getHtml "https://download.documentfoundation.org/libreoffice/stable/"); # extractSha256FromHtml :: String -> String extractSha256FromHtml = htmlString: let sha256 = (builtins.match ".*([0-9a-fA-F]{64}).*" htmlString); in if sha256 == [ ] then abort "Failed to extract sha256 from html." else builtins.head sha256; # getSha256 :: String -> String getSha256 = dmgUrl: oldVersion: newVersion: extractSha256FromHtml (getHtml (getSha256Url dmgUrl oldVersion newVersion)); # getSha256Url :: String -> String -> String -> String getSha256Url = dmgUrl: oldVersion: newVersion: (builtins.replaceStrings [ oldVersion ] [ newVersion ] dmgUrl) + ".sha256"; in { inherit extractLatestVersionFromHtml getHtml getLatestStableVersion extractSha256FromHtml getSha256 getSha256Url; } </ins>

requiredSystemFeatures = [ "big-parallel" ]; <del> meta = with lib; { description = "Comprehensive, professional-quality productivity suite, a variant of openoffice.org"; homepage = "https://libreoffice.org/"; license = licenses.lgpl3; maintainers = with maintainers; [ raskin ]; platforms = platforms.linux; }; </del> <ins> inherit (import ./common.nix { inherit lib; }) meta; </ins> }).overrideAttrs ((importVariant "override.nix") (args // { inherit kdeIntegration; }))

}; libreoffice = if stdenv.isDarwin <del> then callPackage ../applications/office/libreoffice/darwin.nix {} </del> <ins> then callPackage ../applications/office/libreoffice/darwin { } </ins> else hiPrio libreoffice-still; libreoffice-unwrapped = (hiPrio libreoffice-still).libreoffice;