From e02b57df9b54380e94a18df7276b1ff3cbe42f06 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 20 Aug 2012 16:19:57 -0400 Subject: [PATCH] Fix the dependencies of the vboxnet0 service --- modules/programs/virtualbox.nix | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/modules/programs/virtualbox.nix b/modules/programs/virtualbox.nix index cb293563dfd..27e4ac400da 100644 --- a/modules/programs/virtualbox.nix +++ b/modules/programs/virtualbox.nix @@ -10,25 +10,32 @@ let virtualbox = config.boot.kernelPackages.virtualbox; in environment.systemPackages = [ virtualbox ]; users.extraGroups = singleton { name = "vboxusers"; }; - + services.udev.extraRules = '' - KERNEL=="vboxdrv", OWNER="root", GROUP="vboxusers", MODE="0660" - KERNEL=="vboxnetctl", OWNER="root", GROUP="root", MODE="0600" + KERNEL=="vboxdrv", OWNER="root", GROUP="vboxusers", MODE="0660", TAG+="systemd" + KERNEL=="vboxnetctl", OWNER="root", GROUP="root", MODE="0600", TAG+="systemd" ''; # Since we lack the right setuid binaries, set up a host-only network by default. - - jobs."create-vboxnet0" = - { task = true; + + jobs."vboxnet0" = + { description = "VirtualBox vboxnet0 Interface"; + requires = [ "dev-vboxnetctl.device" ]; + after = [ "dev-vboxnetctl.device" ]; + before = [ "network-interfaces.service" ]; + wantedBy = [ "multi-user.target" ]; path = [ virtualbox ]; - startOn = "starting network-interfaces"; - script = + preStart = '' if ! [ -e /sys/class/net/vboxnet0 ]; then VBoxManage hostonlyif create fi ''; + postStop = + '' + VBoxManage hostonlyif remove vboxnet0 + ''; }; networking.interfaces = [ { name = "vboxnet0"; ipAddress = "192.168.56.1"; subnetMask = "255.255.255.0"; } ];