1{ lib, stdenv, fetchFromGitHub, kernel, kmod, gnugrep }:
2
3stdenv.mkDerivation rec {
4 pname = "vmware-modules";
5 version = "workstation-17.0.2-2023-09-29-${kernel.version}";
6
7 src = fetchFromGitHub {
8 owner = "mkubecek";
9 repo = "vmware-host-modules";
10 # Developer no longer provides tags for kernel compatibility fixes
11 # Commit hash for branch workstation-17.0.2 as of 2023-09-29
12 rev = "29de7e2bd45d32e6983106d6f15810c70ba3e654";
13 hash = "sha256-l0QJbjySINM/7EyNhZl6UnUonwPoGnCnsQeC8YtI15c=";
14 };
15
16 hardeningDisable = [ "pic" ];
17
18 nativeBuildInputs = kernel.moduleBuildDependencies;
19
20 enableParallelBuilding = true;
21
22 postPatch = ''
23 substituteInPlace Makefile \
24 --replace '/lib/modules/$(VM_UNAME)/misc' "$out/lib/modules/${kernel.modDirVersion}/misc" \
25 --replace /sbin/modinfo "${kmod}/bin/modinfo" \
26 --replace 'test -z "$(DESTDIR)"' "0"
27
28 for module in "vmmon-only" "vmnet-only"; do
29 substituteInPlace "./$module/Makefile" \
30 --replace '/lib/modules/' "${kernel.dev}/lib/modules/" \
31 --replace /bin/grep "${gnugrep}/bin/grep"
32 done
33 '';
34
35 preInstall = ''
36 mkdir -p "$out/lib/modules/${kernel.modDirVersion}/misc"
37 '';
38
39 meta = with lib; {
40 description = "Kernel modules needed for VMware hypervisor";
41 homepage = "https://github.com/mkubecek/vmware-host-modules";
42 license = licenses.gpl2Only;
43 platforms = [ "x86_64-linux" ];
44 broken = (kernel.kernelOlder "5.5" && kernel.isHardened);
45 maintainers = with maintainers; [ deinferno ];
46 };
47}