{ stdenvNoCC , lib , fetchurl , undmg , writeScript , callPackage }: let appName = "LibreOffice.app"; scriptName = "soffice"; version = "7.6.4"; dist = { aarch64-darwin = rec { arch = "aarch64"; archSuffix = arch; url = "https://download.documentfoundation.org/libreoffice/stable/${version}/mac/${arch}/LibreOffice_${version}_MacOS_${archSuffix}.dmg"; sha256 = "44d141603010771b720fb047a760cb1c184e767528d7c4933b5456c64ebaddb2"; }; 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 = "58ecd09fd4b57805d03207f0daf2d3549ceeb774e54bd4a2f339dc6c7b15dbc9"; }; }; in stdenvNoCC.mkDerivation { inherit version; 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 defaultNixFile = builtins.toString ./default.nix; updateNix = builtins.toString ./update.nix; aarch64Url = dist."aarch64-darwin".url; x86_64Url = dist."x86_64-darwin".url; in writeScript "update-libreoffice.sh" '' #!/usr/bin/env nix-shell #!nix-shell -i bash --argstr aarch64Url ${aarch64Url} --argstr x86_64Url ${x86_64Url} --argstr version ${version} ${updateNix} set -eou pipefail # reset version first so that both platforms are always updated and in sync update-source-version libreoffice-bin 0 ${lib.fakeSha256} --file=${defaultNixFile} --system=aarch64-darwin update-source-version libreoffice-bin $newVersion $newAarch64Sha256 --file=${defaultNixFile} --system=aarch64-darwin update-source-version libreoffice-bin 0 ${lib.fakeSha256} --file=${defaultNixFile} --system=x86_64-darwin update-source-version libreoffice-bin $newVersion $newX86_64Sha256 --file=${defaultNixFile} --system=x86_64-darwin ''; 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 ]; sourceProvenance = with sourceTypes; [ binaryNativeCode ]; platforms = [ "x86_64-darwin" "aarch64-darwin" ]; }; }