tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
lol
0
fork
atom
overview
issues
pulls
pipelines
vmware-workstation: init at 16.2.3
deinferno
3 years ago
e1da7f4d
59e6af3d
+388
6 changed files
expand all
collapse all
unified
split
pkgs
applications
virtualization
vmware-workstation
default.nix
vmware-bootstrap
vmware-config
vmware-installer-bootstrap
vmware-modconfig
top-level
all-packages.nix
+341
pkgs/applications/virtualization/vmware-workstation/default.nix
···
1
1
+
{ stdenv
2
2
+
, buildFHSUserEnv
3
3
+
, fetchurl
4
4
+
, lib
5
5
+
, zlib
6
6
+
, gdbm
7
7
+
, bzip2
8
8
+
, libxslt
9
9
+
, libxml2
10
10
+
, libuuid
11
11
+
, readline
12
12
+
, xz
13
13
+
, cups
14
14
+
, glibc
15
15
+
, libaio
16
16
+
, vulkan-loader
17
17
+
, alsa-lib
18
18
+
, libpulseaudio
19
19
+
, libGL
20
20
+
, numactl
21
21
+
, libX11
22
22
+
, libXi
23
23
+
, kmod
24
24
+
, python3
25
25
+
, autoPatchelfHook
26
26
+
, makeWrapper
27
27
+
, sqlite
28
28
+
, enableInstaller ? false
29
29
+
}:
30
30
+
31
31
+
let
32
32
+
vmware-unpack-env = buildFHSUserEnv rec {
33
33
+
name = "vmware-unpack-env";
34
34
+
targetPkgs = pkgs: [ zlib ];
35
35
+
};
36
36
+
gdbm3 = gdbm.overrideAttrs (old: rec {
37
37
+
version = "1.8.3";
38
38
+
39
39
+
src = fetchurl {
40
40
+
url = "mirror://gnu/gdbm/gdbm-${version}.tar.gz";
41
41
+
sha256 = "sha256-zDQDOKLii0AFirnrU1SiHVP4ihWC6iG6C7GFw3ooHck=";
42
42
+
};
43
43
+
44
44
+
installPhase = ''
45
45
+
mkdir -p $out/lib
46
46
+
cp .libs/libgdbm*.so* $out/lib/
47
47
+
'';
48
48
+
});
49
49
+
in
50
50
+
stdenv.mkDerivation rec {
51
51
+
pname = "vmware-workstation";
52
52
+
version = "16.2.3";
53
53
+
build = "19376536";
54
54
+
55
55
+
buildInputs = [
56
56
+
libxslt
57
57
+
libxml2
58
58
+
libuuid
59
59
+
gdbm3
60
60
+
readline
61
61
+
xz
62
62
+
cups
63
63
+
glibc
64
64
+
libaio
65
65
+
vulkan-loader
66
66
+
alsa-lib
67
67
+
libpulseaudio
68
68
+
libGL
69
69
+
numactl
70
70
+
libX11
71
71
+
libXi
72
72
+
kmod
73
73
+
];
74
74
+
75
75
+
nativeBuildInputs = [ python3 vmware-unpack-env autoPatchelfHook makeWrapper ]
76
76
+
++ lib.optionals enableInstaller [ sqlite bzip2 ];
77
77
+
78
78
+
src = fetchurl {
79
79
+
url = "https://download3.vmware.com/software/WKST-1623-LX-New/VMware-Workstation-Full-${version}-${build}.x86_64.bundle";
80
80
+
sha256 = "sha256-+JE1KnRfawcaBannIyEr1TNZTF7YXRYYaFMVq0/erbM=";
81
81
+
};
82
82
+
83
83
+
unpackPhase = ''
84
84
+
${vmware-unpack-env}/bin/vmware-unpack-env -c "sh ${src} --extract unpacked"
85
85
+
'';
86
86
+
87
87
+
installPhase = ''
88
88
+
mkdir -p \
89
89
+
$out/bin \
90
90
+
$out/etc/vmware \
91
91
+
$out/etc/init.d \
92
92
+
$out/lib/vmware \
93
93
+
$out/share/doc
94
94
+
95
95
+
#### Replicate vmware-installer's order but VMX first because of appLoader
96
96
+
${lib.optionalString enableInstaller ''
97
97
+
## VMware installer
98
98
+
echo "Installing VMware Installer"
99
99
+
unpacked="unpacked/vmware-installer"
100
100
+
vmware_installer_version=$(cat "unpacked/vmware-installer/manifest.xml" | grep -oPm1 "(?<=<version>)[^<]+")
101
101
+
dest="$out/lib/vmware-installer/$vmware_installer_version"
102
102
+
103
103
+
mkdir -p $dest
104
104
+
cp -r $unpacked/vmis* $dest/
105
105
+
cp -r $unpacked/sopython $dest/
106
106
+
cp -r $unpacked/python $dest/
107
107
+
cp -r $unpacked/cdsHelper $dest/
108
108
+
cp -r $unpacked/vmware* $dest/
109
109
+
cp -r $unpacked/bin $dest/
110
110
+
cp -r $unpacked/lib $dest/
111
111
+
112
112
+
chmod +x $dest/vmis-launcher $dest/sopython/* $dest/python/init.sh $dest/vmware-*
113
113
+
ln -s $dest/vmware-installer $out/bin/vmware-installer
114
114
+
115
115
+
mkdir -p $out/etc/vmware-installer
116
116
+
cp ${./vmware-installer-bootstrap} $out/etc/vmware-installer/bootstrap
117
117
+
sed -i -e "s,@@INSTALLERDIR@@,$dest," $out/etc/vmware-installer/bootstrap
118
118
+
sed -i -e "s,@@IVERSION@@,$vmware_installer_version," $out/etc/vmware-installer/bootstrap
119
119
+
sed -i -e "s,@@BUILD@@,${build}," $out/etc/vmware-installer/bootstrap
120
120
+
121
121
+
# create database of vmware guest tools (avoids vmware fetching them later)
122
122
+
mkdir -p $out/etc/vmware-installer/components
123
123
+
database_filename=$out/etc/vmware-installer/database
124
124
+
touch $database_filename
125
125
+
sqlite3 "$database_filename" "CREATE TABLE settings(key VARCHAR PRIMARY KEY, value VARCHAR NOT NULL, component_name VARCHAR NOT NULL);"
126
126
+
sqlite3 "$database_filename" "INSERT INTO settings(key,value,component_name) VALUES('db.schemaVersion','2','vmware-installer');"
127
127
+
sqlite3 "$database_filename" "CREATE TABLE components(id INTEGER PRIMARY KEY, name VARCHAR NOT NULL, version VARCHAR NOT NULL, buildNumber INTEGER NOT NULL, component_core_id INTEGER NOT NULL, longName VARCHAR NOT NULL, description VARCHAR, type INTEGER NOT NULL);"
128
128
+
for folder in unpacked/**/.installer ; do
129
129
+
component="$(basename $(dirname $folder))"
130
130
+
component_version=$(cat unpacked/$component/manifest.xml | grep -oPm1 "(?<=<version>)[^<]+")
131
131
+
component_core_id=$([ "$component" == "vmware-installer" ] && echo "-1" || echo "1")
132
132
+
type=$([ "$component" == "vmware-workstation" ] && echo "0" || echo "1")
133
133
+
sqlite3 "$database_filename" "INSERT INTO components(name,version,buildNumber,component_core_id,longName,description,type) VALUES(\"$component\",\"$component_version\",\"${build}\",$component_core_id,\"$component\",\"$component\",$type);"
134
134
+
mkdir -p $out/etc/vmware-installer/components/$component
135
135
+
cp -r $folder/* $out/etc/vmware-installer/components/$component
136
136
+
done
137
137
+
''}
138
138
+
139
139
+
## VMware Bootstrap
140
140
+
echo "Installing VMware Bootstrap"
141
141
+
cp ${./vmware-bootstrap} $out/etc/vmware/bootstrap
142
142
+
sed -i -e "s,@@PREFIXDIR@@,$out," $out/etc/vmware/bootstrap
143
143
+
144
144
+
## VMware Config
145
145
+
echo "Installing VMware Config"
146
146
+
cp ${./vmware-config} $out/etc/vmware/config
147
147
+
sed -i -e "s,@@VERSION@@,${version}," $out/etc/vmware/config
148
148
+
sed -i -e "s,@@BUILD@@,${build}," $out/etc/vmware/config
149
149
+
sed -i -e "s,@@PREFIXDIR@@,$out," $out/etc/vmware/config
150
150
+
151
151
+
## VMware VMX
152
152
+
echo "Installing VMware VMX"
153
153
+
unpacked="unpacked/vmware-vmx"
154
154
+
cp -r $unpacked/bin/* $out/bin/
155
155
+
cp -r $unpacked/etc/modprobe.d $out/etc/
156
156
+
cp -r $unpacked/etc/init.d/* $out/etc/init.d/
157
157
+
cp -r $unpacked/roms $out/lib/vmware/
158
158
+
cp -r $unpacked/sbin/* $out/bin/
159
159
+
160
160
+
cp -r $unpacked/lib/libconf $out/lib/vmware/
161
161
+
cp -r $unpacked/lib/bin $out/lib/vmware/
162
162
+
cp -r $unpacked/lib/lib $out/lib/vmware/
163
163
+
cp -r $unpacked/lib/scripts $out/lib/vmware/
164
164
+
cp -r $unpacked/lib/icu $out/lib/vmware/
165
165
+
cp -r $unpacked/lib/share $out/lib/vmware/
166
166
+
cp -r $unpacked/lib/modules $out/lib/vmware/
167
167
+
cp -r $unpacked/lib/include $out/lib/vmware/
168
168
+
169
169
+
cp -r $unpacked/extra/checkvm $out/bin/
170
170
+
cp -r $unpacked/extra/modules.xml $out/lib/vmware/modules/
171
171
+
172
172
+
ln -s $out/lib/vmware/bin/appLoader $out/lib/vmware/bin/vmware-vmblock-fuse
173
173
+
ln -s $out/lib/vmware/icu $out/etc/vmware/icu
174
174
+
175
175
+
# Replace vmware-modconfig with simple error dialog
176
176
+
cp ${./vmware-modconfig} $out/bin/vmware-modconfig
177
177
+
sed -i -e "s,ETCDIR=/etc/vmware,ETCDIR=$out/etc/vmware," $out/bin/vmware-modconfig
178
178
+
179
179
+
# Patch dynamic libs in
180
180
+
for binary in "mksSandbox" "mksSandbox-debug" "mksSandbox-stats" "vmware-vmx" "vmware-vmx-debug" "vmware-vmx-stats"
181
181
+
do
182
182
+
patchelf \
183
183
+
--add-needed ${libaio}/lib/libaio.so.1 \
184
184
+
--add-needed ${vulkan-loader}/lib/libvulkan.so.1 \
185
185
+
--add-needed ${alsa-lib}/lib/libasound.so \
186
186
+
--add-needed ${libpulseaudio}/lib/libpulse.so.0 \
187
187
+
--add-needed ${libGL}/lib/libEGL.so.1 \
188
188
+
--add-needed ${numactl}/lib/libnuma.so.1 \
189
189
+
--add-needed ${libX11}/lib/libX11.so.6 \
190
190
+
--add-needed ${libXi}/lib/libXi.so.6 \
191
191
+
--add-needed ${libGL}/lib/libGL.so.1 \
192
192
+
$out/lib/vmware/bin/$binary
193
193
+
done
194
194
+
195
195
+
## VMware USB Arbitrator
196
196
+
echo "Installing VMware USB Arbitrator"
197
197
+
unpacked="unpacked/vmware-usbarbitrator"
198
198
+
cp -r $unpacked/etc/init.d/* $out/etc/init.d/
199
199
+
cp -r $unpacked/bin/* $out/bin/
200
200
+
ln -s $out/lib/vmware/bin/appLoader $out/lib/vmware/bin/vmware-usbarbitrator
201
201
+
202
202
+
## VMware Player Setup
203
203
+
echo "Installing VMware Player Setup"
204
204
+
unpacked="unpacked/vmware-player-setup"
205
205
+
mkdir -p $out/lib/vmware/setup
206
206
+
cp $unpacked/vmware-config $out/lib/vmware/setup/
207
207
+
208
208
+
## VMware Network Editor
209
209
+
echo "Installing VMware Network Editor"
210
210
+
unpacked="unpacked/vmware-network-editor"
211
211
+
cp -r $unpacked/lib $out/lib/vmware/
212
212
+
213
213
+
## VMware Tools + Virtual Printer
214
214
+
echo "Installing VMware Tools + Virtual Printer"
215
215
+
mkdir -p $out/lib/vmware/isoimages/
216
216
+
cp unpacked/vmware-tools-linuxPreGlibc25/linuxPreGlibc25.iso \
217
217
+
unpacked/vmware-tools-windows/windows.iso \
218
218
+
unpacked/vmware-tools-winPreVista/winPreVista.iso \
219
219
+
unpacked/vmware-virtual-printer/VirtualPrinter-Linux.iso \
220
220
+
unpacked/vmware-virtual-printer/VirtualPrinter-Windows.iso \
221
221
+
unpacked/vmware-tools-winPre2k/winPre2k.iso \
222
222
+
unpacked/vmware-tools-linux/linux.iso \
223
223
+
unpacked/vmware-tools-netware/netware.iso \
224
224
+
unpacked/vmware-tools-solaris/solaris.iso \
225
225
+
$out/lib/vmware/isoimages/
226
226
+
227
227
+
## VMware Player Application
228
228
+
echo "Installing VMware Player Application"
229
229
+
unpacked="unpacked/vmware-player-app"
230
230
+
cp -r $unpacked/lib/* $out/lib/vmware/
231
231
+
cp -r $unpacked/etc/* $out/etc/
232
232
+
cp -r $unpacked/share/* $out/share/
233
233
+
cp -r $unpacked/bin/* $out/bin/
234
234
+
cp -r $unpacked/doc/* $out/share/doc/ # Licences
235
235
+
236
236
+
mkdir -p $out/etc/thnuclnt
237
237
+
cp -r $unpacked/extras/.thnumod $out/etc/thnuclnt/
238
238
+
239
239
+
mkdir -p $out/lib/cups/filter
240
240
+
cp -r $unpacked/extras/thnucups $out/lib/cups/filter/
241
241
+
242
242
+
for target in "vmplayer" "vmware-enter-serial" "vmware-setup-helper" "licenseTool" "vmware-mount" "vmware-fuseUI" "vmware-app-control" "vmware-zenity"
243
243
+
do
244
244
+
ln -s $out/lib/vmware/bin/appLoader $out/lib/vmware/bin/$target
245
245
+
done
246
246
+
247
247
+
ln -s $out/lib/vmware/bin/vmware-mount $out/bin/vmware-mount
248
248
+
ln -s $out/lib/vmware/bin/vmware-fuseUI $out/bin/vmware-fuseUI
249
249
+
ln -s $out/lib/vmware/bin/vmrest $out/bin/vmrest
250
250
+
251
251
+
# Patch vmplayer
252
252
+
sed -i -e "s,ETCDIR=/etc/vmware,ETCDIR=$out/etc/vmware," $out/bin/vmplayer
253
253
+
sed -i -e "s,/sbin/modprobe,${kmod}/bin/modprobe," $out/bin/vmplayer
254
254
+
sed -i -e "s,@@BINARY@@,$out/bin/vmplayer," $out/share/applications/vmware-player.desktop
255
255
+
256
256
+
## VMware OVF Tool compoment
257
257
+
echo "Installing VMware OVF Tool for Linux"
258
258
+
unpacked="unpacked/vmware-ovftool"
259
259
+
mkdir -p $out/lib/vmware-ovftool/
260
260
+
261
261
+
cp -r $unpacked/* $out/lib/vmware-ovftool/
262
262
+
chmod 755 $out/lib/vmware-ovftool/ovftool*
263
263
+
makeWrapper "$out/lib/vmware-ovftool/ovftool.bin" "$out/bin/ovftool"
264
264
+
265
265
+
## VMware Network Editor User Interface
266
266
+
echo "Installing VMware Network Editor User Interface"
267
267
+
unpacked="unpacked/vmware-network-editor-ui"
268
268
+
cp -r $unpacked/share/* $out/share/
269
269
+
270
270
+
ln -s $out/lib/vmware/bin/appLoader $out/lib/vmware/bin/vmware-netcfg
271
271
+
ln -s $out/lib/vmware/bin/vmware-netcfg $out/bin/vmware-netcfg
272
272
+
273
273
+
# Patch network editor ui
274
274
+
275
275
+
sed -i -e "s,@@BINARY@@,$out/bin/vmware-netcfg," $out/share/applications/vmware-netcfg.desktop
276
276
+
277
277
+
## VMware VIX Core Library
278
278
+
echo "Installing VMware VIX Core Library"
279
279
+
unpacked="unpacked/vmware-vix-core"
280
280
+
mkdir -p $out/lib/vmware-vix
281
281
+
cp -r $unpacked/lib/* $out/lib/vmware-vix/
282
282
+
cp -r $unpacked/bin/* $out/bin/
283
283
+
cp $unpacked/*.txt $out/lib/vmware-vix/
284
284
+
285
285
+
mkdir -p $out/share/doc/vmware-vix/
286
286
+
cp -r $unpacked/doc/* $out/share/doc/vmware-vix/
287
287
+
288
288
+
mkdir -p $out/include/
289
289
+
cp -r $unpacked/include/* $out/include/
290
290
+
291
291
+
## VMware VIX Workstation-16.0.0 Library
292
292
+
echo "Installing VMware VIX Workstation-16.0.0 Library"
293
293
+
unpacked="unpacked/vmware-vix-lib-Workstation1600"
294
294
+
cp -r $unpacked/lib/* $out/lib/vmware-vix/
295
295
+
296
296
+
## VMware VProbes component for Linux
297
297
+
echo "Installing VMware VProbes component for Linux"
298
298
+
unpacked="unpacked/vmware-vprobe"
299
299
+
cp -r $unpacked/bin/* $out/bin/
300
300
+
cp -r $unpacked/lib/* $out/lib/vmware/
301
301
+
302
302
+
## VMware Workstation
303
303
+
echo "Installing VMware Workstation"
304
304
+
unpacked="unpacked/vmware-workstation"
305
305
+
cp -r $unpacked/bin/* $out/bin/
306
306
+
cp -r $unpacked/lib/* $out/lib/vmware/
307
307
+
cp -r $unpacked/share/* $out/share/
308
308
+
cp -r $unpacked/man $out/share/
309
309
+
cp -r $unpacked/doc $out/share/
310
310
+
311
311
+
ln -s $out/lib/vmware/bin/appLoader $out/lib/vmware/bin/vmware
312
312
+
ln -s $out/lib/vmware/bin/appLoader $out/lib/vmware/bin/vmware-tray
313
313
+
ln -s $out/lib/vmware/bin/appLoader $out/lib/vmware/bin/vmware-vprobe
314
314
+
315
315
+
# Patch vmware
316
316
+
sed -i -e "s,ETCDIR=/etc/vmware,ETCDIR=$out/etc/vmware,g" $out/bin/vmware
317
317
+
sed -i -e "s,/sbin/modprobe,${kmod}/bin/modprobe,g" $out/bin/vmware
318
318
+
sed -i -e "s,@@BINARY@@,$out/bin/vmware," $out/share/applications/vmware-workstation.desktop
319
319
+
320
320
+
chmod +x $out/bin/* $out/lib/vmware/bin/* $out/lib/vmware/setup/*
321
321
+
322
322
+
# Harcoded pkexec hack
323
323
+
for lib in "lib/vmware/lib/libvmware-mount.so/libvmware-mount.so" "lib/vmware/lib/libvmwareui.so/libvmwareui.so" "lib/vmware/lib/libvmware-fuseUI.so/libvmware-fuseUI.so"
324
324
+
do
325
325
+
sed -i -e "s,/usr/local/sbin,/run/vmware/bin," "$out/$lib"
326
326
+
done
327
327
+
328
328
+
# SUID hack
329
329
+
wrapProgram $out/lib/vmware/bin/vmware-vmx
330
330
+
rm $out/lib/vmware/bin/vmware-vmx
331
331
+
ln -s /run/wrappers/bin/vmware-vmx $out/lib/vmware/bin/vmware-vmx
332
332
+
'';
333
333
+
334
334
+
meta = with lib; {
335
335
+
description = "Industry standard desktop hypervisor for x86-64 architecture";
336
336
+
homepage = "https://www.vmware.com/products/workstation-pro.html";
337
337
+
license = licenses.unfree;
338
338
+
platforms = [ "x86_64-linux" ];
339
339
+
maintainers = with maintainers; [ deinferno ];
340
340
+
};
341
341
+
}
+11
pkgs/applications/virtualization/vmware-workstation/vmware-bootstrap
···
1
1
+
PREFIX="@@PREFIXDIR@@"
2
2
+
BINDIR="@@PREFIXDIR@@/bin"
3
3
+
SBINDIR="@@PREFIXDIR@@/sbin"
4
4
+
LIBDIR="@@PREFIXDIR@@/lib"
5
5
+
DATADIR="@@PREFIXDIR@@/share"
6
6
+
SYSCONFDIR="@@PREFIXDIR@@/etc"
7
7
+
DOCDIR="@@PREFIXDIR@@/share/doc"
8
8
+
MANDIR="@@PREFIXDIR@@/share/man"
9
9
+
INCLUDEDIR="@@PREFIXDIR@@/include"
10
10
+
INITDIR="@@PREFIXDIR@@/etc"
11
11
+
INITSCRIPTDIR="@@PREFIXDIR@@/etc/init.d"
+21
pkgs/applications/virtualization/vmware-workstation/vmware-config
···
1
1
+
.encoding = "UTF-8"
2
2
+
product.name = "VMware Workstation"
3
3
+
product.version = "@@VERSION@@"
4
4
+
product.buildNumber = "@@BUILD@@"
5
5
+
workstation.product.version = "@@VERSION@@"
6
6
+
player.product.version = "@@VERSION@@"
7
7
+
vix.config.version = "1"
8
8
+
bindir = "@@PREFIXDIR@@/bin"
9
9
+
libdir = "@@PREFIXDIR@@/lib/vmware"
10
10
+
vix.libdir = "@@PREFIXDIR@@/lib/vmware-vix"
11
11
+
initscriptdir = "@@PREFIXDIR@@/lib/systemd/scripts"
12
12
+
vmware.fullpath = "@@PREFIXDIR@@/bin/vmware"
13
13
+
authd.fullpath = "@@PREFIXDIR@@/bin/vmware-authd"
14
14
+
gksu.rootMethod = "su"
15
15
+
NETWORKING = "yes"
16
16
+
installerDefaults.autoSoftwareUpdateEnabled = "no"
17
17
+
installerDefaults.dataCollectionEnabled = "no"
18
18
+
installerDefaults.componentDownloadEnabled = "no"
19
19
+
installerDefaults.transferVersion = "1"
20
20
+
acceptOVFEULA = "yes"
21
21
+
acceptEULA = "yes"
+5
pkgs/applications/virtualization/vmware-workstation/vmware-installer-bootstrap
···
1
1
+
VMWARE_INSTALLER="@@INSTALLERDIR@@"
2
2
+
VERSION="@@IVERSION@@" # For backwards compability
3
3
+
VMISVERSION="@@IVERSION@@"
4
4
+
VMISBUILDNUM="@@BUILD@@"
5
5
+
VMISPYVERSION="39"
+8
pkgs/applications/virtualization/vmware-workstation/vmware-modconfig
···
1
1
+
#!/bin/bash
2
2
+
3
3
+
set -e
4
4
+
5
5
+
ETCDIR=/etc/vmware
6
6
+
. $ETCDIR/bootstrap
7
7
+
8
8
+
exec "$LIBDIR"/vmware/bin/vmware-zenity --error --text "Reboot is required to load VMware kernel modules (make sure that 'virtualisation.vmware.host.enable' is enabled)"
+2
pkgs/top-level/all-packages.nix
···
30138
30138
30139
30139
vmware-horizon-client = callPackage ../applications/networking/remote/vmware-horizon-client { };
30140
30140
30141
30141
+
vmware-workstation = callPackage ../applications/virtualization/vmware-workstation { };
30142
30142
+
30141
30143
vocproc = callPackage ../applications/audio/vocproc { };
30142
30144
30143
30145
vnstat = callPackage ../applications/networking/vnstat { };