65 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{ config, lib, pkgs, ... }:
 | 
						|
 | 
						|
with lib;
 | 
						|
 | 
						|
let
 | 
						|
  cfg = config.virtualisation.hypervGuest;
 | 
						|
 | 
						|
in {
 | 
						|
  options = {
 | 
						|
    virtualisation.hypervGuest = {
 | 
						|
      enable = mkEnableOption "Hyper-V Guest Support";
 | 
						|
 | 
						|
      videoMode = mkOption {
 | 
						|
        type = types.str;
 | 
						|
        default = "1152x864";
 | 
						|
        example = "1024x768";
 | 
						|
        description = ''
 | 
						|
          Resolution at which to initialize the video adapter.
 | 
						|
 | 
						|
          Supports screen resolution up to Full HD 1920x1080 with 32 bit color
 | 
						|
          on Windows Server 2012, and 1600x1200 with 16 bit color on Windows
 | 
						|
          Server 2008 R2 or earlier.
 | 
						|
        '';
 | 
						|
      };
 | 
						|
    };
 | 
						|
  };
 | 
						|
 | 
						|
  config = mkIf cfg.enable {
 | 
						|
    boot = {
 | 
						|
      initrd.kernelModules = [
 | 
						|
        "hv_balloon" "hv_netvsc" "hv_storvsc" "hv_utils" "hv_vmbus"
 | 
						|
      ];
 | 
						|
 | 
						|
      kernelParams = [
 | 
						|
        "video=hyperv_fb:${cfg.videoMode}"
 | 
						|
      ];
 | 
						|
    };
 | 
						|
 | 
						|
    environment.systemPackages = [ config.boot.kernelPackages.hyperv-daemons.bin ];
 | 
						|
 | 
						|
    security.rngd.enable = false;
 | 
						|
 | 
						|
    # enable hotadding cpu/memory
 | 
						|
    services.udev.packages = lib.singleton (pkgs.writeTextFile {
 | 
						|
      name = "hyperv-cpu-and-memory-hotadd-udev-rules";
 | 
						|
      destination = "/etc/udev/rules.d/99-hyperv-cpu-and-memory-hotadd.rules";
 | 
						|
      text = ''
 | 
						|
        # Memory hotadd
 | 
						|
        SUBSYSTEM=="memory", ACTION=="add", DEVPATH=="/devices/system/memory/memory[0-9]*", TEST=="state", ATTR{state}="online"
 | 
						|
 | 
						|
        # CPU hotadd
 | 
						|
        SUBSYSTEM=="cpu", ACTION=="add", DEVPATH=="/devices/system/cpu/cpu[0-9]*", TEST=="online", ATTR{online}="1"
 | 
						|
      '';
 | 
						|
    });
 | 
						|
 | 
						|
    systemd = {
 | 
						|
      packages = [ config.boot.kernelPackages.hyperv-daemons.lib ];
 | 
						|
 | 
						|
      targets.hyperv-daemons = {
 | 
						|
        wantedBy = [ "multi-user.target" ];
 | 
						|
      };
 | 
						|
    };
 | 
						|
  };
 | 
						|
}
 |