at 16.09-beta 2.3 kB view raw
1{ config, lib, pkgs, pkgs_i686, ... }: 2 3with lib; 4 5let 6 7 prl-tools = config.boot.kernelPackages.prl-tools; 8 9in 10 11{ 12 13 options = { 14 hardware.parallels = { 15 16 enable = mkOption { 17 type = types.bool; 18 default = false; 19 description = '' 20 This enables Parallels Tools for Linux guests, along with provided 21 video, mouse and other hardware drivers. 22 ''; 23 }; 24 25 }; 26 27 }; 28 29 config = mkIf config.hardware.parallels.enable { 30 31 services.xserver = { 32 drivers = singleton 33 { name = "prlvideo"; modules = [ prl-tools ]; libPath = [ prl-tools ]; }; 34 35 screenSection = '' 36 Option "NoMTRR" 37 ''; 38 39 config = '' 40 Section "InputClass" 41 Identifier "prlmouse" 42 MatchIsPointer "on" 43 MatchTag "prlmouse" 44 Driver "prlmouse" 45 EndSection 46 ''; 47 }; 48 49 hardware.opengl.package = prl-tools; 50 hardware.opengl.package32 = pkgs_i686.linuxPackages.prl-tools.override { libsOnly = true; kernel = null; }; 51 52 services.udev.packages = [ prl-tools ]; 53 54 environment.systemPackages = [ prl-tools ]; 55 56 boot.extraModulePackages = [ prl-tools ]; 57 58 boot.kernelModules = [ "prl_tg" "prl_eth" "prl_fs" "prl_fs_freeze" "acpi_memhotplug" ]; 59 60 services.ntp.enable = false; 61 62 systemd.services.prltoolsd = { 63 description = "Parallels Tools' service"; 64 wantedBy = [ "multi-user.target" ]; 65 serviceConfig = { 66 ExecStart = "${prl-tools}/bin/prltoolsd -f"; 67 PIDFile = "/var/run/prltoolsd.pid"; 68 }; 69 }; 70 71 systemd.services.prlfsmountd = { 72 description = "Parallels Shared Folders Daemon"; 73 wantedBy = [ "multi-user.target" ]; 74 serviceConfig = rec { 75 ExecStart = "${prl-tools}/sbin/prlfsmountd ${PIDFile}"; 76 ExecStartPre = "${pkgs.coreutils}/bin/mkdir -p /media"; 77 ExecStopPost = "${prl-tools}/sbin/prlfsmountd -u"; 78 PIDFile = "/run/prlfsmountd.pid"; 79 }; 80 }; 81 82 systemd.services.prlshprint = { 83 description = "Parallels Shared Printer Tool"; 84 wantedBy = [ "multi-user.target" ]; 85 bindsTo = [ "cups.service" ]; 86 serviceConfig = { 87 Type = "forking"; 88 ExecStart = "${prl-tools}/bin/prlshprint"; 89 }; 90 }; 91 92 }; 93}