tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
0
fork
atom
lol
0
fork
atom
overview
issues
pulls
pipelines
wpsoffice-cn: 12.1.0.17900 -> 12.1.2.22571
chillcicada.tngl.sh
7 months ago
082c580e
c79c79b5
+101
-78
3 changed files
expand all
collapse all
unified
split
pkgs
by-name
wp
wpsoffice-cn
package.nix
sources.nix
update.sh
+55
-78
pkgs/by-name/wp/wpsoffice-cn/package.nix
reviewed
···
8
8
libtool,
9
9
libxkbcommon,
10
10
nspr,
11
11
-
mesa,
12
12
-
libtiff,
13
11
udev,
14
12
gtk3,
13
13
+
libgbm,
14
14
+
libusb1,
15
15
libsForQt5,
16
16
xorg,
17
17
cups,
18
18
pango,
19
19
-
libjpeg,
20
20
-
gtk2,
21
21
-
gdk-pixbuf,
22
22
-
libpulseaudio,
23
23
-
libbsd,
24
24
-
libusb1,
19
19
+
bzip2,
25
20
libmysqlclient,
26
26
-
llvmPackages,
27
27
-
dbus,
28
28
-
gcc-unwrapped,
29
29
-
freetype,
30
30
-
curl,
31
31
-
makeWrapper,
32
21
runCommandLocal,
22
22
+
curl,
23
23
+
coreutils,
33
24
cacert,
34
34
-
coreutils,
35
25
}:
26
26
+
36
27
let
37
37
-
pkgVersion = "12.1.0.17900";
38
38
-
url = "https://wps-linux-personal.wpscdn.cn/wps/download/ep/Linux2023/${lib.last (lib.splitVersion pkgVersion)}/wps-office_${pkgVersion}_amd64.deb";
39
39
-
hash = "sha256-i2EVCmDLE2gx7l2aAo+fW8onP/z+xlPIbQYwKhQ46+o=";
40
40
-
uri = builtins.replaceStrings [ "https://wps-linux-personal.wpscdn.cn" ] [ "" ] url;
41
41
-
securityKey = "7f8faaaa468174dc1c9cd62e5f218a5b";
42
42
-
in
43
43
-
stdenv.mkDerivation rec {
44
28
pname = "wpsoffice-cn";
45
45
-
version = pkgVersion;
29
29
+
sources = import ./sources.nix;
30
30
+
version = sources.version;
46
31
47
47
-
src =
48
48
-
runCommandLocal "wps-office_${version}_amd64.deb"
32
32
+
fetch =
33
33
+
{
34
34
+
url,
35
35
+
uri,
36
36
+
hash,
37
37
+
}:
38
38
+
runCommandLocal "wpsoffice-cn-${version}-src"
49
39
{
50
50
-
outputHashMode = "recursive";
51
40
outputHashAlgo = "sha256";
52
41
outputHash = hash;
53
42
···
60
49
SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt";
61
50
}
62
51
''
52
52
+
readonly SECURITY_KEY="7f8faaaa468174dc1c9cd62e5f218a5b"
53
53
+
63
54
timestamp10=$(date '+%s')
64
64
-
md5hash=($(echo -n "${securityKey}${uri}$timestamp10" | md5sum))
65
65
-
curl \
66
66
-
--retry 3 --retry-delay 3 \
67
67
-
"${url}?t=$timestamp10&k=$md5hash" \
68
68
-
> $out
55
55
+
md5hash=($(printf '%s' "$SECURITY_KEY${uri}$timestamp10" | md5sum))
56
56
+
57
57
+
curl --retry 3 --retry-delay 3 "${url}?t=$timestamp10&k=$md5hash" > $out
69
58
'';
70
59
60
60
+
srcs = {
61
61
+
x86_64-linux = fetch sources.x86_64;
62
62
+
};
63
63
+
64
64
+
src =
65
65
+
srcs.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
66
66
+
in
67
67
+
68
68
+
stdenv.mkDerivation {
69
69
+
inherit pname src version;
70
70
+
71
71
unpackCmd = "dpkg -x $src .";
72
72
sourceRoot = ".";
73
73
74
74
nativeBuildInputs = [
75
75
dpkg
76
76
autoPatchelfHook
77
77
-
makeWrapper
78
77
];
79
78
80
79
buildInputs = [
81
80
alsa-lib
82
81
at-spi2-core
83
82
libtool
84
84
-
libjpeg
85
83
libxkbcommon
86
84
nspr
87
87
-
mesa
88
88
-
libtiff
89
85
udev
90
86
gtk3
91
91
-
libsForQt5.qt5.qtbase
87
87
+
libgbm
88
88
+
libusb1
89
89
+
libsForQt5.qtbase
92
90
xorg.libXdamage
93
91
xorg.libXtst
94
92
xorg.libXv
95
95
-
gtk2
96
96
-
gdk-pixbuf
97
97
-
libpulseaudio
98
98
-
xorg.libXScrnSaver
99
99
-
xorg.libXxf86vm
100
100
-
libbsd
101
101
-
libusb1
102
102
-
libmysqlclient
103
103
-
llvmPackages.openmp
104
104
-
dbus
105
93
];
106
94
107
95
dontWrapQtApps = true;
108
96
97
97
+
stripAllList = [ "opt" ];
98
98
+
109
99
runtimeDependencies = map lib.getLib [
110
100
cups
111
101
pango
112
112
-
freetype
113
113
-
gcc-unwrapped.lib
114
102
];
115
103
116
104
autoPatchelfIgnoreMissingDeps = [
117
117
-
# distribution is missing libkappessframework.so
118
118
-
"libkappessframework.so"
119
119
-
# qt4 support is deprecated
120
120
-
"libQtCore.so.4"
121
121
-
"libQtNetwork.so.4"
122
122
-
"libQtXml.so.4"
123
123
-
# file manager integration. Not needed
124
124
-
"libnautilus-extension.so.1"
125
125
-
"libcaja-extension.so.1"
126
105
"libpeony.so.3"
127
127
-
# libuof.so is a exclusive library in WPS. No need to repatch it
128
128
-
"libuof.so"
129
106
];
130
107
131
108
installPhase = ''
132
109
runHook preInstall
133
133
-
prefix=$out/opt/kingsoft/wps-office
110
110
+
134
111
mkdir -p $out
112
112
+
135
113
cp -r opt $out
136
136
-
cp -r usr/* $out
137
137
-
for i in wps wpp et wpspdf; do
138
138
-
substituteInPlace $out/bin/$i \
139
139
-
--replace /opt/kingsoft/wps-office $prefix
114
114
+
cp -r usr/{bin,share} $out
115
115
+
116
116
+
for i in $out/bin/*; do
117
117
+
substituteInPlace $i \
118
118
+
--replace-fail /opt/kingsoft/wps-office $out/opt/kingsoft/wps-office
140
119
done
141
141
-
for i in $out/share/applications/*;do
120
120
+
121
121
+
for i in $out/share/applications/*; do
142
122
substituteInPlace $i \
143
143
-
--replace /usr/bin $out/bin
123
123
+
--replace-fail /usr/bin $out/bin
144
124
done
145
145
-
# need system freetype and gcc lib to run properly
146
146
-
for i in wps wpp et wpspdf wpsoffice; do
147
147
-
wrapProgram $out/opt/kingsoft/wps-office/office6/$i \
148
148
-
--set LD_PRELOAD "${freetype}/lib/libfreetype.so" \
149
149
-
--set LD_LIBRARY_PATH "${lib.makeLibraryPath [ gcc-unwrapped.lib ]}"
150
150
-
done
125
125
+
151
126
runHook postInstall
152
127
'';
153
128
154
129
preFixup = ''
155
155
-
# The following libraries need libtiff.so.5, but nixpkgs provides libtiff.so.6
156
156
-
patchelf --replace-needed libtiff.so.5 libtiff.so $out/opt/kingsoft/wps-office/office6/{libpdfmain.so,libqpdfpaint.so,qt/plugins/imageformats/libqtiff.so,addons/pdfbatchcompression/libpdfbatchcompressionapp.so}
157
157
-
patchelf --replace-needed libtiff.so.5 libtiff.so $out/opt/kingsoft/wps-office/office6/addons/ksplitmerge/libksplitmergeapp.so
158
158
-
patchelf --add-needed libtiff.so $out/opt/kingsoft/wps-office/office6/libwpsmain.so
159
159
-
# Fix: Wrong JPEG library version: library is 62, caller expects 80
160
160
-
patchelf --add-needed libjpeg.so $out/opt/kingsoft/wps-office/office6/libwpsmain.so
130
130
+
# libbz2 dangling symlink
131
131
+
ln -sf ${bzip2.out}/lib/libbz2.so $out/opt/kingsoft/wps-office/office6/libbz2.so
161
132
# dlopen dependency
162
133
patchelf --add-needed libudev.so.1 $out/opt/kingsoft/wps-office/office6/addons/cef/libcef.so
134
134
+
# libmysqlclient dependency
135
135
+
patchelf --replace-needed libmysqlclient.so.18 libmysqlclient.so $out/opt/kingsoft/wps-office/office6/libFontWatermark.so
136
136
+
patchelf --add-rpath ${libmysqlclient}/lib/mariadb $out/opt/kingsoft/wps-office/office6/libFontWatermark.so
163
137
'';
138
138
+
139
139
+
passthru.updateScript = ./update.sh;
164
140
165
141
meta = with lib; {
166
142
description = "Office suite, formerly Kingsoft Office";
···
174
150
th0rgal
175
151
wineee
176
152
pokon548
153
153
+
chillcicada
177
154
];
178
155
};
179
156
}
+10
pkgs/by-name/wp/wpsoffice-cn/sources.nix
reviewed
···
1
1
+
# Generated by ./update.sh - do not update manually!
2
2
+
# Last updated: 2025-09-15
3
3
+
{
4
4
+
version = "12.1.2.22571";
5
5
+
x86_64 = {
6
6
+
url = "https://wps-linux-personal.wpscdn.cn/wps/download/ep/Linux2023/22571/wps-office_12.1.2.22571.AK.preread.sw_480057_amd64.deb";
7
7
+
uri = "/wps/download/ep/Linux2023/22571/wps-office_12.1.2.22571.AK.preread.sw_480057_amd64.deb";
8
8
+
hash = "sha256-aB1EWP0Ev5WuAuzih3ybD23qaRRTUjlES1emas+sUDA=";
9
9
+
};
10
10
+
}
+36
pkgs/by-name/wp/wpsoffice-cn/update.sh
reviewed
···
1
1
+
#!/usr/bin/env nix-shell
2
2
+
#!nix-shell -i bash -p nix curl cacert
3
3
+
4
4
+
set -euo pipefail
5
5
+
6
6
+
export SSL_CERT_FILE=$NIX_SSL_CERT_FILE
7
7
+
8
8
+
readonly SECURITY_KEY="7f8faaaa468174dc1c9cd62e5f218a5b"
9
9
+
prefix="https://wps-linux-personal.wpscdn.cn"
10
10
+
11
11
+
payload=$(curl -s "https://www.wps.cn/product/wpslinux")
12
12
+
13
13
+
version=$(echo "$payload" | grep -oP '(?<=banner_txt">)[^<]+')
14
14
+
15
15
+
amd64_url=$(echo "$payload" | grep -oP "downLoad\('[^']*'" | head -1 | sed "s/downLoad('//;s/'$//")
16
16
+
amd64_uri="${amd64_url#$prefix}"
17
17
+
18
18
+
timestamp10=$(date '+%s')
19
19
+
md5hash=($(printf '%s' "$SECURITY_KEY$amd64_uri$timestamp10" | md5sum))
20
20
+
21
21
+
amd64_hash=$(nix-prefetch-url --name "wpsoffice-cn-$version.deb" "$amd64_url?t=$timestamp10&k=$md5hash")
22
22
+
23
23
+
amd64_hash=$(nix --extra-experimental-features nix-command hash convert --to sri --hash-algo sha256 "$amd64_hash")
24
24
+
25
25
+
cat > sources.nix << EOF
26
26
+
# Generated by ./update.sh - do not update manually!
27
27
+
# Last updated: $(date +%F)
28
28
+
{
29
29
+
version = "$version";
30
30
+
x86_64 = {
31
31
+
url = "$amd64_url";
32
32
+
uri = "$amd64_uri";
33
33
+
hash = "$amd64_hash";
34
34
+
};
35
35
+
}
36
36
+
EOF