 4ee3e8b21d
			
		
	
	
		4ee3e8b21d
		
			
		
	
	
	
	
		
			
			A centralized list for these renames is not good because: - It breaks disabledModules for modules that have a rename defined - Adding/removing renames for a module means having to find them in the central file - Merge conflicts due to multiple people editing the central file
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { config, lib, pkgs, ... }:
 | |
| 
 | |
| with lib;
 | |
| 
 | |
| let
 | |
|   cfg = config.virtualisation.vmware.guest;
 | |
|   open-vm-tools = if cfg.headless then pkgs.open-vm-tools-headless else pkgs.open-vm-tools;
 | |
|   xf86inputvmmouse = pkgs.xorg.xf86inputvmmouse;
 | |
| in
 | |
| {
 | |
|   imports = [
 | |
|     (mkRenamedOptionModule [ "services" "vmwareGuest" ] [ "virtualisation" "vmware" "guest" ])
 | |
|   ];
 | |
| 
 | |
|   options.virtualisation.vmware.guest = {
 | |
|     enable = mkEnableOption "VMWare Guest Support";
 | |
|     headless = mkOption {
 | |
|       type = types.bool;
 | |
|       default = false;
 | |
|       description = "Whether to disable X11-related features.";
 | |
|     };
 | |
|   };
 | |
| 
 | |
|   config = mkIf cfg.enable {
 | |
|     assertions = [ {
 | |
|       assertion = pkgs.stdenv.isi686 || pkgs.stdenv.isx86_64;
 | |
|       message = "VMWare guest is not currently supported on ${pkgs.stdenv.hostPlatform.system}";
 | |
|     } ];
 | |
| 
 | |
|     boot.initrd.kernelModules = [ "vmw_pvscsi" ];
 | |
| 
 | |
|     environment.systemPackages = [ open-vm-tools ];
 | |
| 
 | |
|     systemd.services.vmware =
 | |
|       { description = "VMWare Guest Service";
 | |
|         wantedBy = [ "multi-user.target" ];
 | |
|         serviceConfig.ExecStart = "${open-vm-tools}/bin/vmtoolsd";
 | |
|       };
 | |
| 
 | |
|     environment.etc.vmware-tools.source = "${open-vm-tools}/etc/vmware-tools/*";
 | |
| 
 | |
|     services.xserver = mkIf (!cfg.headless) {
 | |
|       videoDrivers = mkOverride 50 [ "vmware" ];
 | |
|       modules = [ xf86inputvmmouse ];
 | |
| 
 | |
|       config = ''
 | |
|           Section "InputClass"
 | |
|             Identifier "VMMouse"
 | |
|             MatchDevicePath "/dev/input/event*"
 | |
|             MatchProduct "ImPS/2 Generic Wheel Mouse"
 | |
|             Driver "vmmouse"
 | |
|           EndSection
 | |
|         '';
 | |
| 
 | |
|       displayManager.sessionCommands = ''
 | |
|           ${open-vm-tools}/bin/vmware-user-suid-wrapper
 | |
|         '';
 | |
|     };
 | |
|   };
 | |
| }
 |