From 32e18bc7225662312f8f29b35ba147d22616e11f Mon Sep 17 00:00:00 2001 From: Nikolay Amiantov Date: Tue, 11 Nov 2014 02:32:05 +0300 Subject: nixos/parallels-guest: add options --- nixos/modules/module-list.nix | 1 + nixos/modules/virtualisation/parallels-guest.nix | 93 ++++++++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 nixos/modules/virtualisation/parallels-guest.nix diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index c6187125abbf..9c0f2cc20f8a 100755 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -388,6 +388,7 @@ ./virtualisation/libvirtd.nix #./virtualisation/nova.nix ./virtualisation/openvswitch.nix + ./virtualisation/parallels-guest.nix ./virtualisation/virtualbox-guest.nix #./virtualisation/xen-dom0.nix ] diff --git a/nixos/modules/virtualisation/parallels-guest.nix b/nixos/modules/virtualisation/parallels-guest.nix new file mode 100644 index 000000000000..141e70974058 --- /dev/null +++ b/nixos/modules/virtualisation/parallels-guest.nix @@ -0,0 +1,93 @@ +{ config, lib, pkgs, pkgs_i686, ... }: + +with lib; + +let + + prl-tools = config.boot.kernelPackages.prl-tools; + +in + +{ + + options = { + hardware.parallels = { + + enable = mkOption { + type = types.bool; + default = false; + description = '' + This enables Parallel Tools for Linux guests, along with provided + video, mouse and other hardware drivers. + ''; + }; + + }; + + }; + + config = mkIf config.hardware.parallels.enable { + + services.xserver = { + drivers = singleton + { name = "prlvideo"; modules = [ prl-tools ]; libPath = [ prl-tools ]; }; + + screenSection = '' + Option "NoMTRR" + ''; + + config = '' + Section "InputClass" + Identifier "prlmouse" + MatchIsPointer "on" + MatchTag "prlmouse" + Driver "prlmouse" + EndSection + ''; + }; + + hardware.opengl.package = prl-tools; + hardware.opengl.package32 = pkgs_i686.linuxPackages.prl-tools.override { libsOnly = true; kernel = null; }; + + services.udev.packages = [ prl-tools ]; + + environment.systemPackages = [ prl-tools ]; + + boot.extraModulePackages = [ prl-tools ]; + + boot.kernelModules = [ "prl_tg" "prl_eth" "prl_fs" "prl_fs_freeze" "acpi_memhotplug" ]; + + services.ntp.enable = false; + + systemd.services.prltoolsd = { + description = "Parallels Tools' service"; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + ExecStart = "${prl-tools}/bin/prltoolsd -f"; + PIDFile = "/var/run/prltoolsd.pid"; + }; + }; + + systemd.services.prlfsmountd = { + description = "Parallels Shared Folders Daemon"; + wantedBy = [ "multi-user.target" ]; + serviceConfig = rec { + ExecStart = "${prl-tools}/sbin/prlfsmountd ${PIDFile}"; + ExecStartPre = "${pkgs.coreutils}/bin/mkdir -p /media"; + ExecStopPost = "${prl-tools}/sbin/prlfsmountd -u"; + PIDFile = "/run/prlfsmountd.pid"; + }; + }; + + systemd.services.prlshprint = { + description = "Parallels Shared Printer Tool"; + wantedBy = [ "multi-user.target" ]; + bindsTo = [ "cupsd.service" ]; + serviceConfig = { + Type = "forking"; + ExecStart = "${prl-tools}/bin/prlshprint"; + }; + }; + + }; +} -- cgit 1.4.1