From ecb3003ba47131b5e59924b5c6046a4843a6e4e7 Mon Sep 17 00:00:00 2001 From: jochens Date: Fri, 2 Oct 2026 14:46:18 +0200 Subject: [PATCH] A machine reports whether its virtualisation daemon runs The lab module needs the virtualisation daemon (novox/hq ADR 0172); the capability is detected by asking the daemon about itself, not by finding a client on disk. --- internal/profile/detectors.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/internal/profile/detectors.go b/internal/profile/detectors.go index 6798763..7e76af6 100644 --- a/internal/profile/detectors.go +++ b/internal/profile/detectors.go @@ -15,6 +15,9 @@ const ( CapServiceManager = "service-manager" CapFirewall = "firewall" CapOverlay = "overlay" + // CapVirtualisation is a running virtualisation daemon: what the lab raises its machines on + // (novox/hq ADR 0172), and what grants a module the daemon's socket. + CapVirtualisation = "virtualisation" CapGraphicalSession = "graphical-session" // CapSeat is hardware: somewhere a display server COULD run. CapGraphicalSession above is // state: whether one IS running. Assignment needs the first. @@ -205,6 +208,11 @@ func Default(runner Runner) []Detector { why: "lists the ruleset — needs the tool AND the privilege to use it", runner: runner, }, + commandCapability{ + name: CapVirtualisation, command: "incus", args: []string{"info"}, + why: "asks the virtualisation daemon about itself — a running daemon, not an installed client", + runner: runner, + }, commandCapability{ name: CapOverlay, command: "wg", args: []string{"show", "interfaces"}, why: "asks the kernel for interfaces — needs the module, not just the tool",