nixpkgs/pkgs/applications/office/wpsoffice/default.nix

183 lines
3.4 KiB
Nix
Raw Normal View History

2021-01-15 05:42:41 +00:00
{ lib, stdenv
, mkDerivation
, fetchurl
, dpkg
, wrapGAppsHook
, wrapQtAppsHook
, alsa-lib
, atk
, bzip2
, cairo
, cups
, dbus
, expat
2020-08-06 14:52:38 +01:00
, ffmpeg
, fontconfig
, freetype
, gdk-pixbuf
, glib
, gperftools
, gtk2-x11
, libpng12
, libtool
, libuuid
, libxml2
2021-03-14 18:12:53 +00:00
, xz
, nspr
, nss
, openssl
, pango
, qt4
, qtbase
, sqlite
, unixODBC
, xorg
, zlib
2021-06-09 04:42:03 +01:00
, steam
, makeWrapper
}:
2017-06-04 12:47:27 +01:00
stdenv.mkDerivation rec {
2019-08-13 22:52:01 +01:00
pname = "wpsoffice";
2020-08-06 14:52:38 +01:00
version = "11.1.0.9615";
2016-02-23 15:36:54 +00:00
src = fetchurl {
2020-08-06 14:52:38 +01:00
url = "http://wdl1.pcfg.cache.wpscdn.com/wpsdl/wpsoffice/download/linux/9615/wps-office_11.1.0.9615.XA_amd64.deb";
sha256 = "0dpd4njpizclllps3qagipycfws935rhj9k5gmdhjfgsk0ns188w";
2016-02-23 15:36:54 +00:00
};
unpackCmd = "dpkg -x $src .";
sourceRoot = ".";
2021-01-15 05:42:41 +00:00
postUnpack = lib.optionalString (version == "11.1.0.9505") ''
# distribution is missing libjsapiservice.so, so we should not let
# autoPatchelfHook fail on the following dead libraries
rm opt/kingsoft/wps-office/office6/{libjsetapi.so,libjswppapi.so,libjswpsapi.so}
'';
2021-06-09 04:42:03 +01:00
nativeBuildInputs = [ dpkg wrapGAppsHook wrapQtAppsHook makeWrapper ];
meta = with lib; {
description = "Office suite, formerly Kingsoft Office";
homepage = "https://www.wps.com/";
platforms = [ "x86_64-linux" ];
2017-06-04 12:47:27 +01:00
hydraPlatforms = [];
license = licenses.unfreeRedistributable;
maintainers = with maintainers; [ mlatus th0rgal ];
2016-02-23 15:36:54 +00:00
};
buildInputs = with xorg; [
alsa-lib
atk
bzip2
cairo
dbus.lib
expat
2020-08-06 14:52:38 +01:00
ffmpeg
fontconfig
freetype
gdk-pixbuf
glib
gperftools
gtk2-x11
libICE
libSM
libX11
libX11
libXScrnSaver
libXcomposite
libXcursor
libXdamage
libXext
libXfixes
libXi
libXrandr
libXrender
libXtst
libpng12
libtool
libuuid
libxcb
libxml2
2021-03-14 18:12:53 +00:00
xz
nspr
nss
openssl
pango
qt4
qtbase
sqlite
unixODBC
zlib
2021-06-09 04:42:03 +01:00
cups.lib
2016-02-23 15:36:54 +00:00
];
2017-06-04 12:47:27 +01:00
dontPatchELF = true;
2016-02-23 15:36:54 +00:00
# wpsoffice uses `/build` in its own build system making nix things there
# references to nix own build directory
noAuditTmpdir = true;
unvendoredLibraries = [
# Have to use parts of the vendored qt4
#"Qt"
"SDL2"
"bz2"
"avcodec"
"avdevice"
"avformat"
"avutil"
"swresample"
"swscale"
"jpeg"
"png"
# File saving breaks unless we are using vendored llvmPackages_8.libcxx
#"c++"
"ssl" "crypto"
"nspr"
"nss"
"odbc"
"tcmalloc" # gperftools
];
2021-06-09 04:42:03 +01:00
installPhase = let
steam-run = (steam.override {
extraPkgs = p: buildInputs;
nativeOnly = true;
}).run;
in ''
2017-06-04 12:47:27 +01:00
prefix=$out/opt/kingsoft/wps-office
mkdir -p $out
cp -r opt $out
cp -r usr/* $out
for lib in $unvendoredLibraries; do
rm -v "$prefix/office6/lib$lib"*.so{,.*}
done
for i in wps wpp et wpspdf; do
substituteInPlace $out/bin/$i \
2017-06-04 12:47:27 +01:00
--replace /opt/kingsoft/wps-office $prefix
done
for i in $out/share/applications/*;do
substituteInPlace $i \
--replace /usr/bin $out/bin
done
2021-06-09 04:42:03 +01:00
for i in wps wpp et wpspdf; do
mv $out/bin/$i $out/bin/.$i-orig
makeWrapper ${steam-run}/bin/steam-run $out/bin/$i \
--add-flags $out/bin/.$i-orig \
--argv0 $i
done
'';
dontWrapQtApps = true;
dontWrapGApps = true;
postFixup = ''
for f in "$out"/bin/*; do
echo "Wrapping $f"
wrapProgram "$f" \
"''${gappsWrapperArgs[@]}" \
2021-06-09 04:42:03 +01:00
"''${qtWrapperArgs[@]}"
done
'';
}