Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{ lib 2, stdenv 3, buildFHSEnv 4, corefonts 5, dejavu_fonts 6, dpkg 7, fetchurl 8, gcc-unwrapped 9, liberation_ttf_v1 10, writeScript 11, xorg 12}: 13 14let 15 # var/www/onlyoffice/documentserver/server/DocService/docservice 16 onlyoffice-documentserver = stdenv.mkDerivation rec { 17 pname = "onlyoffice-documentserver"; 18 version = "7.3.3"; 19 20 src = fetchurl { 21 url = "https://github.com/ONLYOFFICE/DocumentServer/releases/download/v${lib.concatStringsSep "." (lib.take 3 (lib.splitVersion version))}/onlyoffice-documentserver_amd64.deb"; 22 sha256 = "sha256-WeDXIDrjICGDVnpkdGLyA9plW50Kz3bHXU48DdHReHM="; 23 }; 24 25 preferLocalBuild = true; 26 27 unpackCmd = "dpkg -x $curSrc source"; 28 29 nativeBuildInputs = [ 30 dpkg 31 ]; 32 33 installPhase = '' 34 # replace dangling symlinks which are not copied into fhs with actually files 35 rm lib/*.so* 36 for file in var/www/onlyoffice/documentserver/server/FileConverter/bin/*.so* ; do 37 ln -rs "$file" lib/$(basename "$file") 38 done 39 40 # NixOS uses systemd, not supervisor 41 rm -rf etc/supervisor 42 43 install -Dm755 usr/bin/documentserver-prepare4shutdown.sh -t $out/bin 44 # maintainer scripts which expect supervisorctl, try to write into the nix store or are handled by nixos modules 45 rm -rf usr/bin 46 47 # .deb default documentation 48 rm -rf usr/share 49 50 # required for bwrap --bind 51 mkdir -p var/lib/onlyoffice/ var/www/onlyoffice/documentserver/fonts/ 52 53 mv * $out/ 54 ''; 55 56 # stripping self extracting javascript binaries likely breaks them 57 dontStrip = true; 58 59 passthru = { 60 fhs = buildFHSEnv { 61 name = "onlyoffice-wrapper"; 62 63 targetPkgs = pkgs: [ 64 gcc-unwrapped.lib 65 onlyoffice-documentserver 66 67 # fonts 68 corefonts 69 dejavu_fonts 70 liberation_ttf_v1 71 ]; 72 73 extraBwrapArgs = [ 74 "--bind var/lib/onlyoffice/ var/lib/onlyoffice/" 75 "--bind var/lib/onlyoffice/documentserver/sdkjs/common/ var/www/onlyoffice/documentserver/sdkjs/common/" 76 "--bind var/lib/onlyoffice/documentserver/sdkjs/slide/themes/ var/www/onlyoffice/documentserver/sdkjs/slide/themes/" 77 "--bind var/lib/onlyoffice/documentserver/fonts/ var/www/onlyoffice/documentserver/fonts/" 78 "--bind var/lib/onlyoffice/documentserver/server/FileConverter/bin/ var/www/onlyoffice/documentserver/server/FileConverter/bin/" 79 ]; 80 81 runScript = writeScript "onlyoffice-documentserver-run-script" '' 82 export NODE_CONFIG_DIR=$2 83 export NODE_DISABLE_COLORS=1 84 export NODE_ENV=production-linux 85 86 if [[ $1 == DocService/docservice ]]; then 87 mkdir -p var/www/onlyoffice/documentserver/sdkjs/slide/themes/ 88 # symlinking themes/src breaks discovery in allfontsgen 89 rm -rf var/www/onlyoffice/documentserver/sdkjs/slide/themes/src 90 cp -r ${onlyoffice-documentserver}/var/www/onlyoffice/documentserver/sdkjs/slide/themes/src var/www/onlyoffice/documentserver/sdkjs/slide/themes/ 91 chmod -R u+w var/www/onlyoffice/documentserver/sdkjs/slide/themes/ 92 93 # onlyoffice places generated files in those directores 94 rm -rf var/www/onlyoffice/documentserver/sdkjs/common/* 95 ${xorg.lndir}/bin/lndir -silent ${onlyoffice-documentserver}/var/www/onlyoffice/documentserver/sdkjs/common/ var/www/onlyoffice/documentserver/sdkjs/common/ 96 rm -rf var/www/onlyoffice/documentserver/server/FileConverter/bin/* 97 ${xorg.lndir}/bin/lndir -silent ${onlyoffice-documentserver}/var/www/onlyoffice/documentserver/server/FileConverter/bin/ var/www/onlyoffice/documentserver/server/FileConverter/bin/ 98 99 # https://github.com/ONLYOFFICE/document-server-package/blob/master/common/documentserver/bin/documentserver-generate-allfonts.sh.m4 100 echo -n Generating AllFonts.js, please wait... 101 "var/www/onlyoffice/documentserver/server/tools/allfontsgen"\ 102 --input="${onlyoffice-documentserver}/var/www/onlyoffice/documentserver/core-fonts"\ 103 --allfonts-web="var/www/onlyoffice/documentserver/sdkjs/common/AllFonts.js"\ 104 --allfonts="var/www/onlyoffice/documentserver/server/FileConverter/bin/AllFonts.js"\ 105 --images="var/www/onlyoffice/documentserver/sdkjs/common/Images"\ 106 --selection="var/www/onlyoffice/documentserver/server/FileConverter/bin/font_selection.bin"\ 107 --output-web="var/www/onlyoffice/documentserver/fonts"\ 108 --use-system="true" 109 echo Done 110 111 echo -n Generating presentation themes, please wait... 112 "var/www/onlyoffice/documentserver/server/tools/allthemesgen"\ 113 --converter-dir="var/www/onlyoffice/documentserver/server/FileConverter/bin"\ 114 --src="var/www/onlyoffice/documentserver/sdkjs/slide/themes"\ 115 --output="var/www/onlyoffice/documentserver/sdkjs/common/Images" 116 117 "var/www/onlyoffice/documentserver/server/tools/allthemesgen"\ 118 --converter-dir="var/www/onlyoffice/documentserver/server/FileConverter/bin"\ 119 --src="var/www/onlyoffice/documentserver/sdkjs/slide/themes"\ 120 --output="var/www/onlyoffice/documentserver/sdkjs/common/Images"\ 121 --postfix="ios"\ 122 --params="280,224" 123 124 "var/www/onlyoffice/documentserver/server/tools/allthemesgen"\ 125 --converter-dir="var/www/onlyoffice/documentserver/server/FileConverter/bin"\ 126 --src="var/www/onlyoffice/documentserver/sdkjs/slide/themes"\ 127 --output="var/www/onlyoffice/documentserver/sdkjs/common/Images"\ 128 --postfix="android"\ 129 --params="280,224" 130 echo Done 131 fi 132 133 exec var/www/onlyoffice/documentserver/server/$1 134 ''; 135 }; 136 }; 137 138 meta = with lib; { 139 description = "ONLYOFFICE Document Server is an online office suite comprising viewers and editors"; 140 longDescription = '' 141 ONLYOFFICE Document Server is an online office suite comprising viewers and editors for texts, spreadsheets and presentations, 142 fully compatible with Office Open XML formats: .docx, .xlsx, .pptx and enabling collaborative editing in real time. 143 ''; 144 homepage = "ONLYOFFICE Document Server is an online office suite comprising viewers and editors"; 145 license = licenses.agpl3; 146 platforms = [ "x86_64-linux" ]; 147 sourceProvenance = [ sourceTypes.binaryNativeCode ]; 148 maintainers = with maintainers; [ SuperSandro2000 ]; 149 }; 150 }; 151in 152onlyoffice-documentserver