Compare commits

...

1 Commits

Author SHA1 Message Date
37d690e4de feat: add KVM/libvirt support for staging VM
- Load kvm-intel and kvm kernel modules
- Enable libvirtd service
- Add ai-worker to libvirtd group

Requires Intel VT-x to be enabled in BIOS.
After reboot: verify /dev/kvm exists, then deploy staging VM.
2026-05-12 19:15:03 -04:00
2 changed files with 8 additions and 7 deletions

View File

@@ -36,7 +36,7 @@
"transparent_hugepage=always" # because mucho ram "transparent_hugepage=always" # because mucho ram
]; ];
# 2. Load the specific drivers found by sensors-detect # 2. Load the specific drivers found by sensors-detect
boot.kernelModules = [ "nct6775" "lm96163" "iptable_nat" "iptable_filter" ]; boot.kernelModules = [ "nct6775" "lm96163" "iptable_nat" "iptable_filter" "kvm-intel" "kvm" ];
# 3. Force the nct6775 driver to recognize the chip if it's stubborn # 3. Force the nct6775 driver to recognize the chip if it's stubborn
boot.extraModprobeConfig = '' boot.extraModprobeConfig = ''
options nct6775 force_id=0xd280 options nct6775 force_id=0xd280
@@ -328,20 +328,21 @@
# Mi50 config # Mi50 config
hardware.graphics = { hardware.graphics = {
enable = true; enable = true;
enable32Bit = true; # Useful for some compatibility layers enable32Bit = true;
extraPackages = with pkgs; [ extraPackages = with pkgs; [
rocmPackages.clr.icd # OpenCL/HIP runtime rocmPackages.clr.icd
]; ];
}; };
nixpkgs.config.rocmTargets = [ "gfx906" ]; nixpkgs.config.rocmTargets = [ "gfx906" ];
environment.variables = { environment.variables = {
# This "tricks" ROCm into supporting the MI50 if using newer versions
HSA_OVERRIDE_GFX_VERSION = "9.0.6"; HSA_OVERRIDE_GFX_VERSION = "9.0.6";
# Ensures the system sees both GPUs
HIP_VISIBLE_DEVICES = "0,1"; HIP_VISIBLE_DEVICES = "0,1";
}; };
# Open ports in the firewall. # KVM/libvirt for staging VM
virtualisation.libvirtd.enable = true;
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ]; # networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ]; # networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether. # Or disable the firewall altogether.

View File

@@ -4,7 +4,7 @@
group = "ai-worker"; group = "ai-worker";
home = "/home/ai-worker"; home = "/home/ai-worker";
createHome = true; createHome = true;
extraGroups = [ "docker" ]; extraGroups = [ "docker" "libvirtd" ];
shell = pkgs.bashInteractive; shell = pkgs.bashInteractive;
openssh.authorizedKeys.keys = [ openssh.authorizedKeys.keys = [
keys.users.ai-worker.main keys.users.ai-worker.main