diff options
author | Matthieu Coudron <mattator@gmail.com> | 2018-04-18 11:29:54 +0900 |
---|---|---|
committer | Matthieu Coudron <mattator@gmail.com> | 2018-04-27 18:32:15 +0900 |
commit | ca0604190e4428e1cdf9bb369fbbf73e1679e007 (patch) | |
tree | 839f536eedbbc644ef68897b41465c6bf8362bcc /nixos | |
parent | 903f694e34c5ab9169eff2be1fcd48d2c11d3bf6 (diff) | |
download | nixlib-ca0604190e4428e1cdf9bb369fbbf73e1679e007.tar nixlib-ca0604190e4428e1cdf9bb369fbbf73e1679e007.tar.gz nixlib-ca0604190e4428e1cdf9bb369fbbf73e1679e007.tar.bz2 nixlib-ca0604190e4428e1cdf9bb369fbbf73e1679e007.tar.lz nixlib-ca0604190e4428e1cdf9bb369fbbf73e1679e007.tar.xz nixlib-ca0604190e4428e1cdf9bb369fbbf73e1679e007.tar.zst nixlib-ca0604190e4428e1cdf9bb369fbbf73e1679e007.zip |
qemu-guest-agent: init module
Allow out of band communication between qemu VMs and the host. Useful to retrieve IPs of VMs from the host (for instance when libvirt can't analyze DHCP requests because VMs are configured with static addresses or when there is connectivity default).
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/modules/module-list.nix | 1 | ||||
-rw-r--r-- | nixos/modules/virtualisation/qemu-guest-agent.nix | 36 | ||||
-rw-r--r-- | nixos/modules/virtualisation/qemu-vm.nix | 11 |
3 files changed, 48 insertions, 0 deletions
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 8ef76b9d81ed..8a81a5fff8db 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -777,6 +777,7 @@ ./virtualisation/hyperv-guest.nix ./virtualisation/openvswitch.nix ./virtualisation/parallels-guest.nix + ./virtualisation/qemu-guest-agent.nix ./virtualisation/rkt.nix ./virtualisation/virtualbox-guest.nix ./virtualisation/virtualbox-host.nix diff --git a/nixos/modules/virtualisation/qemu-guest-agent.nix b/nixos/modules/virtualisation/qemu-guest-agent.nix new file mode 100644 index 000000000000..e0d2b3dc509d --- /dev/null +++ b/nixos/modules/virtualisation/qemu-guest-agent.nix @@ -0,0 +1,36 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.qemuGuest; +in { + + options.services.qemuGuest = { + enable = mkOption { + type = types.bool; + default = false; + description = "Whether to enable the qemu guest agent."; + }; + }; + + config = mkIf cfg.enable ( + mkMerge [ + { + + services.udev.extraRules = '' + SUBSYSTEM=="virtio-ports", ATTR{name}=="org.qemu.guest_agent.0", TAG+="systemd" ENV{SYSTEMD_WANTS}="qemu-guest-agent.service" + ''; + + systemd.services.qemu-guest-agent = { + description = "Run the QEMU Guest Agent"; + serviceConfig = { + ExecStart = "${pkgs.kvm.ga}/bin/qemu-ga"; + Restart = "always"; + RestartSec = 0; + }; + }; + } + ] + ); +} diff --git a/nixos/modules/virtualisation/qemu-vm.nix b/nixos/modules/virtualisation/qemu-vm.nix index 2b78276fcdea..57e25d808dc3 100644 --- a/nixos/modules/virtualisation/qemu-vm.nix +++ b/nixos/modules/virtualisation/qemu-vm.nix @@ -343,6 +343,15 @@ in (<literal>virtio</literal> or <literal>scsi</literal>). ''; }; + + guestAgent.enable = + mkOption { + default = true; + type = types.bool; + description = '' + Enable the Qemu guest agent. + ''; + }; }; virtualisation.useBootLoader = @@ -494,6 +503,8 @@ in # Don't run ntpd in the guest. It should get the correct time from KVM. services.timesyncd.enable = false; + services.qemuGuest.enable = cfg.qemu.guestAgent.enable; + system.build.vm = pkgs.runCommand "nixos-vm" { preferLocalBuild = true; } '' mkdir -p $out/bin |