{ stdenvNoCC , lib , fetchurl , undmg , writeScript , callPackage }: let appName = "LibreOffice.app"; scriptName = "soffice"; version = "7.6.7"; dist = { aarch64-darwin = rec { arch = "aarch64"; archSuffix = arch; url = "https://download.documentfoundation.org/libreoffice/stable/${version}/mac/${arch}/LibreOffice_${version}_MacOS_${archSuffix}.dmg"; sha256 = "17686aff42734ea4feef08e1189bab3011220000f7784061314c1ae9e5942531"; }; 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 = "42d2eeaeee7bcb0e76e9decdcb8f5a4beebf133ad31f7d42a5e96ea770860110"; }; }; 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 update-source-version libreoffice-bin $newVersion $newAarch64Sha256 --file=${defaultNixFile} --system=aarch64-darwin --ignore-same-version update-source-version libreoffice-bin $newVersion $newX86_64Sha256 --file=${defaultNixFile} --system=x86_64-darwin --ignore-same-version ''; 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" ]; }; }