summaryrefslogtreecommitdiffstats
path: root/pkgs/applications/virtualization/vmware-workstation
diff options
context:
space:
mode:
authordeinferno <14363193+deinferno@users.noreply.github.com>2022-04-23 20:31:14 +0500
committerdeinferno <14363193+deinferno@users.noreply.github.com>2022-05-04 01:58:26 +0500
commite1da7f4d4483643dcb32bfbc63af281123825056 (patch)
treea22d901e533e8bb3a276719bf637651a8ab3315e /pkgs/applications/virtualization/vmware-workstation
parent59e6af3dc14f9dcc80eee84ff945db2734d2c547 (diff)
vmware-workstation: init at 16.2.3
Diffstat (limited to 'pkgs/applications/virtualization/vmware-workstation')
-rwxr-xr-xpkgs/applications/virtualization/vmware-workstation/default.nix341
-rw-r--r--pkgs/applications/virtualization/vmware-workstation/vmware-bootstrap11
-rw-r--r--pkgs/applications/virtualization/vmware-workstation/vmware-config21
-rw-r--r--pkgs/applications/virtualization/vmware-workstation/vmware-installer-bootstrap5
-rw-r--r--pkgs/applications/virtualization/vmware-workstation/vmware-modconfig8
5 files changed, 386 insertions, 0 deletions
diff --git a/pkgs/applications/virtualization/vmware-workstation/default.nix b/pkgs/applications/virtualization/vmware-workstation/default.nix
new file mode 100755
index 000000000000..58cd4092a95d
--- /dev/null
+++ b/pkgs/applications/virtualization/vmware-workstation/default.nix
@@ -0,0 +1,341 @@
+{ stdenv
+, buildFHSUserEnv
+, fetchurl
+, lib
+, zlib
+, gdbm
+, bzip2
+, libxslt
+, libxml2
+, libuuid
+, readline
+, xz
+, cups
+, glibc
+, libaio
+, vulkan-loader
+, alsa-lib
+, libpulseaudio
+, libGL
+, numactl
+, libX11
+, libXi
+, kmod
+, python3
+, autoPatchelfHook
+, makeWrapper
+, sqlite
+, enableInstaller ? false
+}:
+
+let
+ vmware-unpack-env = buildFHSUserEnv rec {
+ name = "vmware-unpack-env";
+ targetPkgs = pkgs: [ zlib ];
+ };
+ gdbm3 = gdbm.overrideAttrs (old: rec {
+ version = "1.8.3";
+
+ src = fetchurl {
+ url = "mirror://gnu/gdbm/gdbm-${version}.tar.gz";
+ sha256 = "sha256-zDQDOKLii0AFirnrU1SiHVP4ihWC6iG6C7GFw3ooHck=";
+ };
+
+ installPhase = ''
+ mkdir -p $out/lib
+ cp .libs/libgdbm*.so* $out/lib/
+ '';
+ });
+in
+stdenv.mkDerivation rec {
+ pname = "vmware-workstation";
+ version = "16.2.3";
+ build = "19376536";
+
+ buildInputs = [
+ libxslt
+ libxml2
+ libuuid
+ gdbm3
+ readline
+ xz
+ cups
+ glibc
+ libaio
+ vulkan-loader
+ alsa-lib
+ libpulseaudio
+ libGL
+ numactl
+ libX11
+ libXi
+ kmod
+ ];
+
+ nativeBuildInputs = [ python3 vmware-unpack-env autoPatchelfHook makeWrapper ]
+ ++ lib.optionals enableInstaller [ sqlite bzip2 ];
+
+ src = fetchurl {
+ url = "https://download3.vmware.com/software/WKST-1623-LX-New/VMware-Workstation-Full-${version}-${build}.x86_64.bundle";
+ sha256 = "sha256-+JE1KnRfawcaBannIyEr1TNZTF7YXRYYaFMVq0/erbM=";
+ };
+
+ unpackPhase = ''
+ ${vmware-unpack-env}/bin/vmware-unpack-env -c "sh ${src} --extract unpacked"
+ '';
+
+ installPhase = ''
+ mkdir -p \
+ $out/bin \
+ $out/etc/vmware \
+ $out/etc/init.d \
+ $out/lib/vmware \
+ $out/share/doc
+
+ #### Replicate vmware-installer's order but VMX first because of appLoader
+ ${lib.optionalString enableInstaller ''
+ ## VMware installer
+ echo "Installing VMware Installer"
+ unpacked="unpacked/vmware-installer"
+ vmware_installer_version=$(cat "unpacked/vmware-installer/manifest.xml" | grep -oPm1 "(?<=<version>)[^<]+")
+ dest="$out/lib/vmware-installer/$vmware_installer_version"
+
+ mkdir -p $dest
+ cp -r $unpacked/vmis* $dest/
+ cp -r $unpacked/sopython $dest/
+ cp -r $unpacked/python $dest/
+ cp -r $unpacked/cdsHelper $dest/
+ cp -r $unpacked/vmware* $dest/
+ cp -r $unpacked/bin $dest/
+ cp -r $unpacked/lib $dest/
+
+ chmod +x $dest/vmis-launcher $dest/sopython/* $dest/python/init.sh $dest/vmware-*
+ ln -s $dest/vmware-installer $out/bin/vmware-installer
+
+ mkdir -p $out/etc/vmware-installer
+ cp ${./vmware-installer-bootstrap} $out/etc/vmware-installer/bootstrap
+ sed -i -e "s,@@INSTALLERDIR@@,$dest," $out/etc/vmware-installer/bootstrap
+ sed -i -e "s,@@IVERSION@@,$vmware_installer_version," $out/etc/vmware-installer/bootstrap
+ sed -i -e "s,@@BUILD@@,${build}," $out/etc/vmware-installer/bootstrap
+
+ # create database of vmware guest tools (avoids vmware fetching them later)
+ mkdir -p $out/etc/vmware-installer/components
+ database_filename=$out/etc/vmware-installer/database
+ touch $database_filename
+ sqlite3 "$database_filename" "CREATE TABLE settings(key VARCHAR PRIMARY KEY, value VARCHAR NOT NULL, component_name VARCHAR NOT NULL);"
+ sqlite3 "$database_filename" "INSERT INTO settings(key,value,component_name) VALUES('db.schemaVersion','2','vmware-installer');"
+ 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);"
+ for folder in unpacked/**/.installer ; do
+ component="$(basename $(dirname $folder))"
+ component_version=$(cat unpacked/$component/manifest.xml | grep -oPm1 "(?<=<version>)[^<]+")
+ component_core_id=$([ "$component" == "vmware-installer" ] && echo "-1" || echo "1")
+ type=$([ "$component" == "vmware-workstation" ] && echo "0" || echo "1")
+ 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);"
+ mkdir -p $out/etc/vmware-installer/components/$component
+ cp -r $folder/* $out/etc/vmware-installer/components/$component
+ done
+ ''}
+
+ ## VMware Bootstrap
+ echo "Installing VMware Bootstrap"
+ cp ${./vmware-bootstrap} $out/etc/vmware/bootstrap
+ sed -i -e "s,@@PREFIXDIR@@,$out," $out/etc/vmware/bootstrap
+
+ ## VMware Config
+ echo "Installing VMware Config"
+ cp ${./vmware-config} $out/etc/vmware/config
+ sed -i -e "s,@@VERSION@@,${version}," $out/etc/vmware/config
+ sed -i -e "s,@@BUILD@@,${build}," $out/etc/vmware/config
+ sed -i -e "s,@@PREFIXDIR@@,$out," $out/etc/vmware/config
+
+ ## VMware VMX
+ echo "Installing VMware VMX"
+ unpacked="unpacked/vmware-vmx"
+ cp -r $unpacked/bin/* $out/bin/
+ cp -r $unpacked/etc/modprobe.d $out/etc/
+ cp -r $unpacked/etc/init.d/* $out/etc/init.d/
+ cp -r $unpacked/roms $out/lib/vmware/
+ cp -r $unpacked/sbin/* $out/bin/
+
+ cp -r $unpacked/lib/libconf $out/lib/vmware/
+ cp -r $unpacked/lib/bin $out/lib/vmware/
+ cp -r $unpacked/lib/lib $out/lib/vmware/
+ cp -r $unpacked/lib/scripts $out/lib/vmware/
+ cp -r $unpacked/lib/icu $out/lib/vmware/
+ cp -r $unpacked/lib/share $out/lib/vmware/
+ cp -r $unpacked/lib/modules $out/lib/vmware/
+ cp -r $unpacked/lib/include $out/lib/vmware/
+
+ cp -r $unpacked/extra/checkvm $out/bin/
+ cp -r $unpacked/extra/modules.xml $out/lib/vmware/modules/
+
+ ln -s $out/lib/vmware/bin/appLoader $out/lib/vmware/bin/vmware-vmblock-fuse
+ ln -s $out/lib/vmware/icu $out/etc/vmware/icu
+
+ # Replace vmware-modconfig with simple error dialog
+ cp ${./vmware-modconfig} $out/bin/vmware-modconfig
+ sed -i -e "s,ETCDIR=/etc/vmware,ETCDIR=$out/etc/vmware," $out/bin/vmware-modconfig
+
+ # Patch dynamic libs in
+ for binary in "mksSandbox" "mksSandbox-debug" "mksSandbox-stats" "vmware-vmx" "vmware-vmx-debug" "vmware-vmx-stats"
+ do
+ patchelf \
+ --add-needed ${libaio}/lib/libaio.so.1 \
+ --add-needed ${vulkan-loader}/lib/libvulkan.so.1 \
+ --add-needed ${alsa-lib}/lib/libasound.so \
+ --add-needed ${libpulseaudio}/lib/libpulse.so.0 \
+ --add-needed ${libGL}/lib/libEGL.so.1 \
+ --add-needed ${numactl}/lib/libnuma.so.1 \
+ --add-needed ${libX11}/lib/libX11.so.6 \
+ --add-needed ${libXi}/lib/libXi.so.6 \
+ --add-needed ${libGL}/lib/libGL.so.1 \
+ $out/lib/vmware/bin/$binary
+ done
+
+ ## VMware USB Arbitrator
+ echo "Installing VMware USB Arbitrator"
+ unpacked="unpacked/vmware-usbarbitrator"
+ cp -r $unpacked/etc/init.d/* $out/etc/init.d/
+ cp -r $unpacked/bin/* $out/bin/
+ ln -s $out/lib/vmware/bin/appLoader $out/lib/vmware/bin/vmware-usbarbitrator
+
+ ## VMware Player Setup
+ echo "Installing VMware Player Setup"
+ unpacked="unpacked/vmware-player-setup"
+ mkdir -p $out/lib/vmware/setup
+ cp $unpacked/vmware-config $out/lib/vmware/setup/
+
+ ## VMware Network Editor
+ echo "Installing VMware Network Editor"
+ unpacked="unpacked/vmware-network-editor"
+ cp -r $unpacked/lib $out/lib/vmware/
+
+ ## VMware Tools + Virtual Printer
+ echo "Installing VMware Tools + Virtual Printer"
+ mkdir -p $out/lib/vmware/isoimages/
+ cp unpacked/vmware-tools-linuxPreGlibc25/linuxPreGlibc25.iso \
+ unpacked/vmware-tools-windows/windows.iso \
+ unpacked/vmware-tools-winPreVista/winPreVista.iso \
+ unpacked/vmware-virtual-printer/VirtualPrinter-Linux.iso \
+ unpacked/vmware-virtual-printer/VirtualPrinter-Windows.iso \
+ unpacked/vmware-tools-winPre2k/winPre2k.iso \
+ unpacked/vmware-tools-linux/linux.iso \
+ unpacked/vmware-tools-netware/netware.iso \
+ unpacked/vmware-tools-solaris/solaris.iso \
+ $out/lib/vmware/isoimages/
+
+ ## VMware Player Application
+ echo "Installing VMware Player Application"
+ unpacked="unpacked/vmware-player-app"
+ cp -r $unpacked/lib/* $out/lib/vmware/
+ cp -r $unpacked/etc/* $out/etc/
+ cp -r $unpacked/share/* $out/share/
+ cp -r $unpacked/bin/* $out/bin/
+ cp -r $unpacked/doc/* $out/share/doc/ # Licences
+
+ mkdir -p $out/etc/thnuclnt
+ cp -r $unpacked/extras/.thnumod $out/etc/thnuclnt/
+
+ mkdir -p $out/lib/cups/filter
+ cp -r $unpacked/extras/thnucups $out/lib/cups/filter/
+
+ for target in "vmplayer" "vmware-enter-serial" "vmware-setup-helper" "licenseTool" "vmware-mount" "vmware-fuseUI" "vmware-app-control" "vmware-zenity"
+ do
+ ln -s $out/lib/vmware/bin/appLoader $out/lib/vmware/bin/$target
+ done
+
+ ln -s $out/lib/vmware/bin/vmware-mount $out/bin/vmware-mount
+ ln -s $out/lib/vmware/bin/vmware-fuseUI $out/bin/vmware-fuseUI
+ ln -s $out/lib/vmware/bin/vmrest $out/bin/vmrest
+
+ # Patch vmplayer
+ sed -i -e "s,ETCDIR=/etc/vmware,ETCDIR=$out/etc/vmware," $out/bin/vmplayer
+ sed -i -e "s,/sbin/modprobe,${kmod}/bin/modprobe," $out/bin/vmplayer
+ sed -i -e "s,@@BINARY@@,$out/bin/vmplayer," $out/share/applications/vmware-player.desktop
+
+ ## VMware OVF Tool compoment
+ echo "Installing VMware OVF Tool for Linux"
+ unpacked="unpacked/vmware-ovftool"
+ mkdir -p $out/lib/vmware-ovftool/
+
+ cp -r $unpacked/* $out/lib/vmware-ovftool/
+ chmod 755 $out/lib/vmware-ovftool/ovftool*
+ makeWrapper "$out/lib/vmware-ovftool/ovftool.bin" "$out/bin/ovftool"
+
+ ## VMware Network Editor User Interface
+ echo "Installing VMware Network Editor User Interface"
+ unpacked="unpacked/vmware-network-editor-ui"
+ cp -r $unpacked/share/* $out/share/
+
+ ln -s $out/lib/vmware/bin/appLoader $out/lib/vmware/bin/vmware-netcfg
+ ln -s $out/lib/vmware/bin/vmware-netcfg $out/bin/vmware-netcfg
+
+ # Patch network editor ui
+
+ sed -i -e "s,@@BINARY@@,$out/bin/vmware-netcfg," $out/share/applications/vmware-netcfg.desktop
+
+ ## VMware VIX Core Library
+ echo "Installing VMware VIX Core Library"
+ unpacked="unpacked/vmware-vix-core"
+ mkdir -p $out/lib/vmware-vix
+ cp -r $unpacked/lib/* $out/lib/vmware-vix/
+ cp -r $unpacked/bin/* $out/bin/
+ cp $unpacked/*.txt $out/lib/vmware-vix/
+
+ mkdir -p $out/share/doc/vmware-vix/
+ cp -r $unpacked/doc/* $out/share/doc/vmware-vix/
+
+ mkdir -p $out/include/
+ cp -r $unpacked/include/* $out/include/
+
+ ## VMware VIX Workstation-16.0.0 Library
+ echo "Installing VMware VIX Workstation-16.0.0 Library"
+ unpacked="unpacked/vmware-vix-lib-Workstation1600"
+ cp -r $unpacked/lib/* $out/lib/vmware-vix/
+
+ ## VMware VProbes component for Linux
+ echo "Installing VMware VProbes component for Linux"
+ unpacked="unpacked/vmware-vprobe"
+ cp -r $unpacked/bin/* $out/bin/
+ cp -r $unpacked/lib/* $out/lib/vmware/
+
+ ## VMware Workstation
+ echo "Installing VMware Workstation"
+ unpacked="unpacked/vmware-workstation"
+ cp -r $unpacked/bin/* $out/bin/
+ cp -r $unpacked/lib/* $out/lib/vmware/
+ cp -r $unpacked/share/* $out/share/
+ cp -r $unpacked/man $out/share/
+ cp -r $unpacked/doc $out/share/
+
+ ln -s $out/lib/vmware/bin/appLoader $out/lib/vmware/bin/vmware
+ ln -s $out/lib/vmware/bin/appLoader $out/lib/vmware/bin/vmware-tray
+ ln -s $out/lib/vmware/bin/appLoader $out/lib/vmware/bin/vmware-vprobe
+
+ # Patch vmware
+ sed -i -e "s,ETCDIR=/etc/vmware,ETCDIR=$out/etc/vmware,g" $out/bin/vmware
+ sed -i -e "s,/sbin/modprobe,${kmod}/bin/modprobe,g" $out/bin/vmware
+ sed -i -e "s,@@BINARY@@,$out/bin/vmware," $out/share/applications/vmware-workstation.desktop
+
+ chmod +x $out/bin/* $out/lib/vmware/bin/* $out/lib/vmware/setup/*
+
+ # Harcoded pkexec hack
+ 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"
+ do
+ sed -i -e "s,/usr/local/sbin,/run/vmware/bin," "$out/$lib"
+ done
+
+ # SUID hack
+ wrapProgram $out/lib/vmware/bin/vmware-vmx
+ rm $out/lib/vmware/bin/vmware-vmx
+ ln -s /run/wrappers/bin/vmware-vmx $out/lib/vmware/bin/vmware-vmx
+ '';
+
+ meta = with lib; {
+ description = "Industry standard desktop hypervisor for x86-64 architecture";
+ homepage = "https://www.vmware.com/products/workstation-pro.html";
+ license = licenses.unfree;
+ platforms = [ "x86_64-linux" ];
+ maintainers = with maintainers; [ deinferno ];
+ };
+}
diff --git a/pkgs/applications/virtualization/vmware-workstation/vmware-bootstrap b/pkgs/applications/virtualization/vmware-workstation/vmware-bootstrap
new file mode 100644
index 000000000000..93787870ec3c
--- /dev/null
+++ b/pkgs/applications/virtualization/vmware-workstation/vmware-bootstrap
@@ -0,0 +1,11 @@
+PREFIX="@@PREFIXDIR@@"
+BINDIR="@@PREFIXDIR@@/bin"
+SBINDIR="@@PREFIXDIR@@/sbin"
+LIBDIR="@@PREFIXDIR@@/lib"
+DATADIR="@@PREFIXDIR@@/share"
+SYSCONFDIR="@@PREFIXDIR@@/etc"
+DOCDIR="@@PREFIXDIR@@/share/doc"
+MANDIR="@@PREFIXDIR@@/share/man"
+INCLUDEDIR="@@PREFIXDIR@@/include"
+INITDIR="@@PREFIXDIR@@/etc"
+INITSCRIPTDIR="@@PREFIXDIR@@/etc/init.d"
diff --git a/pkgs/applications/virtualization/vmware-workstation/vmware-config b/pkgs/applications/virtualization/vmware-workstation/vmware-config
new file mode 100644
index 000000000000..9b3714bc3136
--- /dev/null
+++ b/pkgs/applications/virtualization/vmware-workstation/vmware-config
@@ -0,0 +1,21 @@
+.encoding = "UTF-8"
+product.name = "VMware Workstation"
+product.version = "@@VERSION@@"
+product.buildNumber = "@@BUILD@@"
+workstation.product.version = "@@VERSION@@"
+player.product.version = "@@VERSION@@"
+vix.config.version = "1"
+bindir = "@@PREFIXDIR@@/bin"
+libdir = "@@PREFIXDIR@@/lib/vmware"
+vix.libdir = "@@PREFIXDIR@@/lib/vmware-vix"
+initscriptdir = "@@PREFIXDIR@@/lib/systemd/scripts"
+vmware.fullpath = "@@PREFIXDIR@@/bin/vmware"
+authd.fullpath = "@@PREFIXDIR@@/bin/vmware-authd"
+gksu.rootMethod = "su"
+NETWORKING = "yes"
+installerDefaults.autoSoftwareUpdateEnabled = "no"
+installerDefaults.dataCollectionEnabled = "no"
+installerDefaults.componentDownloadEnabled = "no"
+installerDefaults.transferVersion = "1"
+acceptOVFEULA = "yes"
+acceptEULA = "yes"
diff --git a/pkgs/applications/virtualization/vmware-workstation/vmware-installer-bootstrap b/pkgs/applications/virtualization/vmware-workstation/vmware-installer-bootstrap
new file mode 100644
index 000000000000..4db8f7a1b458
--- /dev/null
+++ b/pkgs/applications/virtualization/vmware-workstation/vmware-installer-bootstrap
@@ -0,0 +1,5 @@
+VMWARE_INSTALLER="@@INSTALLERDIR@@"
+VERSION="@@IVERSION@@" # For backwards compability
+VMISVERSION="@@IVERSION@@"
+VMISBUILDNUM="@@BUILD@@"
+VMISPYVERSION="39"
diff --git a/pkgs/applications/virtualization/vmware-workstation/vmware-modconfig b/pkgs/applications/virtualization/vmware-workstation/vmware-modconfig
new file mode 100644
index 000000000000..c93a37157966
--- /dev/null
+++ b/pkgs/applications/virtualization/vmware-workstation/vmware-modconfig
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+set -e
+
+ETCDIR=/etc/vmware
+. $ETCDIR/bootstrap
+
+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)"