diff --git a/hosts/jude/virt.nix b/hosts/jude/virt.nix index 6fcaefd..00faf73 100644 --- a/hosts/jude/virt.nix +++ b/hosts/jude/virt.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ pkgs, config, ... }: { environment.systemPackages = with pkgs; [ @@ -11,6 +11,7 @@ virt-manager vmware-workstation vmfs-tools + xorriso ]; # Give my user access to the libvirtd process @@ -28,8 +29,6 @@ enableExtensionPack = true; }; - vmware.host.enable = false; - waydroid.enable = false; lxd.enable = false; }; @@ -39,20 +38,33 @@ boot.extraModprobeConfig = "options kvm_amd nested=1"; systemd.services = { - vbox = { + gitlab-runner = { conflicts = [ "libvirtd.service" ]; - serviceConfig = { - Type = "oneshot"; - RemainAfterExit = "yes"; - ExecStart = [ - "rmmod kvm_amd" - "rmmod kvm" - ]; - ExecStop = [ - "rmmod vboxnetflt" - "rmmod vboxnetadp" - "rmmod vboxdrv" - ]; + preStart = builtins.concatStringsSep "\n" [ + "${pkgs.kmod}/bin/modprobe vboxnetflt vboxdrv" + "${pkgs.kmod}/bin/modprobe vboxnetadp" + ]; + postStop = "${pkgs.kmod}/bin/rmmod vboxnetflt vboxnetadp vboxdrv"; + wantedBy = pkgs.lib.mkForce []; + serviceConfig.User = "root"; + }; + libvirtd = { + preStart = "${pkgs.kmod}/bin/modprobe kvm_amd"; + postStop = "${pkgs.kmod}/bin/rmmod kvm_amd kvm"; + }; + }; + + age.secrets.runner-reg.file = ../../secrets/gitlab/myself-vbox-runner-reg.age; + + services.gitlab-runner = { + enable = true; + settings.concurrent = 5; + services.vbox = { + executor = "shell"; + limit = 5; + registrationConfigFile = config.age.secrets.runner-reg.path; + environmentVariables = { + EFI_DIR = "${pkgs.OVMF.fd}/FV/"; }; }; };