2022-06-16 17:23:12 +00:00
|
|
|
{ stdenvNoCC
|
|
|
|
, lib
|
|
|
|
, fetchurl
|
|
|
|
, undmg
|
|
|
|
, writeScript
|
|
|
|
, callPackage
|
|
|
|
}:
|
|
|
|
|
|
|
|
let
|
|
|
|
appName = "LibreOffice.app";
|
|
|
|
scriptName = "soffice";
|
2023-08-10 07:59:29 +00:00
|
|
|
version = "7.5.5";
|
2022-06-16 17:23:12 +00:00
|
|
|
|
|
|
|
dist = {
|
|
|
|
aarch64-darwin = rec {
|
|
|
|
arch = "aarch64";
|
|
|
|
archSuffix = arch;
|
|
|
|
url = "https://download.documentfoundation.org/libreoffice/stable/${version}/mac/${arch}/LibreOffice_${version}_MacOS_${archSuffix}.dmg";
|
2023-08-10 07:59:29 +00:00
|
|
|
sha256 = "75a7d64aa5d08b56c9d9c1c32484b9aff07268c1642cc01a03e45b7690500745";
|
2022-06-16 17:23:12 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
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";
|
2023-08-10 07:59:29 +00:00
|
|
|
sha256 = "4aad9f08ef7a4524b85fc46b3301fdf4f5ab8ab63dd01d01c297f96ff474804a";
|
2022-06-16 17:23:12 +00:00
|
|
|
};
|
|
|
|
};
|
|
|
|
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 ];
|
2023-08-22 20:05:09 +00:00
|
|
|
sourceRoot = appName;
|
2022-06-16 17:23:12 +00:00
|
|
|
|
|
|
|
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 ];
|
|
|
|
platforms = [ "x86_64-darwin" "aarch64-darwin" ];
|
|
|
|
};
|
|
|
|
}
|