1{ lib, stdenv, fetchFromGitHub, kernel, kmod, gnugrep, vmware-workstation }:
2
3stdenv.mkDerivation rec {
4 pname = "vmware-modules";
5 version = "${vmware-workstation.version}-${kernel.version}";
6
7 src = fetchFromGitHub {
8 owner = "mkubecek";
9 repo = "vmware-host-modules";
10 rev = "w${vmware-workstation.version}-k5.18";
11 sha256 = "sha256-sAeCjaSrBXGP5szfCY5CpMrGwzCw4aM67EN+YfA3AWA=";
12 };
13
14 hardeningDisable = [ "pic" ];
15
16 nativeBuildInputs = kernel.moduleBuildDependencies;
17
18 enableParallelBuilding = true;
19
20 postPatch = ''
21 substituteInPlace Makefile \
22 --replace '/lib/modules/$(VM_UNAME)/misc' "$out/lib/modules/${kernel.modDirVersion}/misc" \
23 --replace '$(shell uname -r)' "${kernel.modDirVersion}" \
24 --replace /sbin/modinfo "${kmod}/bin/modinfo" \
25 --replace 'test -z "$(DESTDIR)"' "0"
26
27 for module in "vmmon-only" "vmnet-only"; do
28 substituteInPlace "./$module/Makefile" \
29 --replace '/lib/modules/' "${kernel.dev}/lib/modules/" \
30 --replace '$(shell uname -r)' "${kernel.modDirVersion}" \
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) || kernel.kernelAtLeast "5.19";
45 maintainers = with maintainers; [ deinferno ];
46 };
47}