mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-10-03 13:30:36 +00:00
cryptpad: 2025.3.0 -> 2025.6.0
Signed-off-by: themadbit <marktanui75@gmail.com>
This commit is contained in:
@@ -14,22 +14,60 @@
|
||||
}:
|
||||
|
||||
let
|
||||
version = "2025.3.0";
|
||||
version = "2025.6.0";
|
||||
# nix version of install-onlyoffice.sh
|
||||
# a later version could rebuild from sdkjs/web-apps as per
|
||||
# https://github.com/cryptpad/onlyoffice-builds/blob/main/build.sh
|
||||
onlyoffice_build =
|
||||
rev: hash:
|
||||
fetchFromGitHub {
|
||||
inherit rev hash;
|
||||
owner = "cryptpad";
|
||||
repo = "onlyoffice-builds";
|
||||
};
|
||||
onlyoffice_fetch =
|
||||
{
|
||||
rev ? null,
|
||||
version ? null,
|
||||
hash,
|
||||
...
|
||||
}:
|
||||
assert (
|
||||
lib.assertMsg (lib.xor (rev == null) (
|
||||
version == null
|
||||
)) "onlyoffice_fetch requires one of either `rev` or `version` to be provided (not both)."
|
||||
);
|
||||
if rev != null then
|
||||
fetchFromGitHub {
|
||||
inherit rev hash;
|
||||
owner = "cryptpad";
|
||||
repo = "onlyoffice-builds";
|
||||
}
|
||||
# New method for v7+ versions that use ZIP releases
|
||||
else
|
||||
fetchurl {
|
||||
url = "https://github.com/cryptpad/onlyoffice-editor/releases/download/${version}/onlyoffice-editor.zip";
|
||||
inherit hash;
|
||||
};
|
||||
|
||||
onlyoffice_install = oo: ''
|
||||
oo_dir="$out_cryptpad/www/common/onlyoffice/dist/${oo.subdir}"
|
||||
cp -a "${onlyoffice_build oo.rev oo.hash}/." "$oo_dir"
|
||||
chmod -R +w "$oo_dir"
|
||||
echo "${oo.rev}" > "$oo_dir/.commit"
|
||||
${
|
||||
if oo ? "version" then
|
||||
''
|
||||
mkdir -p "$oo_dir"
|
||||
unzip ${onlyoffice_fetch oo} -d "$oo_dir"
|
||||
echo "${oo.version}" > "$oo_dir/.version"
|
||||
|
||||
# Clean up help files and dictionaries as per upstream
|
||||
${lib.optionalString (oo.subdir == "v7") ''
|
||||
rm -rf "$oo_dir"/web-apps/apps/*/main/resources/help
|
||||
rm -rf "$oo_dir"/dictionaries/
|
||||
''}
|
||||
''
|
||||
else
|
||||
''
|
||||
cp -a "${onlyoffice_fetch oo}/." "$oo_dir"
|
||||
chmod -R +w "$oo_dir"
|
||||
echo "${oo.rev}" > "$oo_dir/.commit"
|
||||
|
||||
# Clean up help files as per upstream
|
||||
rm -rf "$oo_dir"/web-apps/apps/*/main/resources/help
|
||||
''
|
||||
}
|
||||
'';
|
||||
onlyoffice_versions = [
|
||||
{
|
||||
@@ -59,8 +97,13 @@ let
|
||||
}
|
||||
{
|
||||
subdir = "v7";
|
||||
rev = "e1267803";
|
||||
hash = "sha256-iIds0GnCHAyeIEdSD4aCCgDtnnwARh3NE470CywseS0=";
|
||||
version = "v7.3.3.60+11";
|
||||
hash = "sha256-He8RwsaJPBhaxFklA7vSxxNUpmcM41lW859gQUUJWbQ=";
|
||||
}
|
||||
{
|
||||
subdir = "v8";
|
||||
version = "v8.3.3.23+4";
|
||||
hash = "sha256-DeK84fa7Jc1L1+vF8LBKLXM5oWS0SV2qBnAWG3Xzu4U=";
|
||||
}
|
||||
];
|
||||
|
||||
@@ -83,11 +126,11 @@ buildNpmPackage {
|
||||
src = fetchFromGitHub {
|
||||
owner = "cryptpad";
|
||||
repo = "cryptpad";
|
||||
rev = version;
|
||||
hash = "sha256-NxkVMsfLzdzifdn+f0C6mBJGd1oLwcMTAIXv+gBG7rI=";
|
||||
tag = version;
|
||||
hash = "sha256-R8Oonrnb1tqvl1zTkWv5Xv/f8bFtUljD6X/re72IvsU=";
|
||||
};
|
||||
|
||||
npmDepsHash = "sha256-GWkyRlizPSA72WwoY+mRLwaMeD/SXdo6oUVwsd2gp7c=";
|
||||
npmDepsHash = "sha256-4Zr+8ANZJ9XX2umY/SY7BrEHPheVelFSeZipgOaW6bI==";
|
||||
|
||||
nativeBuildInputs = [
|
||||
makeBinaryWrapper
|
||||
@@ -120,8 +163,13 @@ buildNpmPackage {
|
||||
# Move to install directory manually.
|
||||
npm run install:components
|
||||
mv www/components "$out_cryptpad/www/"
|
||||
# and fix absolute symlink to /build...
|
||||
ln -Tfs ../../src/tweetnacl "$out_cryptpad/www/components/tweetnacl"
|
||||
# optimization: replace copies with symlinks...
|
||||
for d in "$out_cryptpad/www/components/"*; do
|
||||
d="''${d##*/}"
|
||||
[ -e "$out_cryptpad/node_modules/$d" ] || continue
|
||||
rm -rf "$out_cryptpad/www/components/$d"
|
||||
ln -Tfs "../../node_modules/$d" "$out_cryptpad/www/components/$d"
|
||||
done
|
||||
|
||||
# install OnlyOffice (install-onlyoffice.sh without network)
|
||||
mkdir -p "$out_cryptpad/www/common/onlyoffice/dist"
|
||||
@@ -130,8 +178,10 @@ buildNpmPackage {
|
||||
# Run upstream's `install-onlyoffice.sh` script in `--check` mode to
|
||||
# verify that we've installed the correct versions of the various
|
||||
# OnlyOffice components.
|
||||
patchShebangs --build $out_cryptpad/install-onlyoffice.sh
|
||||
$out_cryptpad/install-onlyoffice.sh --accept-license --check --rdfind
|
||||
|
||||
# TODO: Patch the new install method to only verify versions;
|
||||
# patchShebangs --build $out_cryptpad/install-onlyoffice.sh
|
||||
# $out_cryptpad/install-onlyoffice.sh --accept-license --check --rdfind
|
||||
|
||||
# cryptpad assumes it runs in the source directory and also outputs
|
||||
# its state files there, which is not exactly great for us.
|
||||
@@ -144,7 +194,7 @@ buildNpmPackage {
|
||||
# directory.
|
||||
makeWrapper "${lib.getExe nodejs}" "$out/bin/cryptpad" \
|
||||
--add-flags "$out_cryptpad/server.js" \
|
||||
--run "for d in customize.dist lib www scripts; do ${coreutils}/bin/ln -sf \"$out_cryptpad/\$d\" .; done" \
|
||||
--run "for d in src customize.dist lib www scripts; do ${coreutils}/bin/ln -sf \"$out_cryptpad/\$d\" .; done" \
|
||||
--run "if ! [ -d customize ]; then \"${lib.getExe nodejs}\" \"$out_cryptpad/scripts/build.js\"; fi"
|
||||
'';
|
||||
|
||||
|
||||
Reference in New Issue
Block a user