Add --no-audio support to VM spec

tart run supports --no-audio to disable host audio pass-through, but
there was no way to request it through a VM's spec - Headless, Nested,
and Suspendable all have a flag/field but audio didn't. Useful on
headless hosts with no audio hardware, where audio pass-through can
make guest CoreAudio depend on host audio services that don't exist.
This commit is contained in:
Kyle Fuhrmann 2026-08-07 10:06:32 -07:00
parent 461af8de47
commit 25d8d9d1c0
5 changed files with 13 additions and 0 deletions

View File

@ -743,6 +743,10 @@ components:
type: boolean
description: Enable nested virtualization
default: false
noAudio:
type: boolean
description: Whether to disable audio pass-through to the host
default: false
username:
type: string
description: SSH username to use when connecting to a VM

View File

@ -28,6 +28,7 @@ var netSoftnetBlock []string
var netBridged string
var headless bool
var nested bool
var noAudio bool
var suspendable bool
var username string
var password string
@ -70,6 +71,7 @@ func newCreateVMCommand() *cobra.Command {
command.Flags().StringVar(&netBridged, "net-bridged", "", "whether to use Bridged network mode")
command.Flags().BoolVar(&headless, "headless", true, "whether to run without graphics")
command.Flags().BoolVar(&nested, "nested", false, "enable nested virtualization")
command.Flags().BoolVar(&noAudio, "no-audio", false, "disable audio pass-through to the host")
command.Flags().BoolVar(&suspendable, "suspendable", false, "treat the VM as suspendable, "+
"disabling certain devices for suspendability support and issuing \"tart suspend\" instead of \"tart stop\" "+
"when VM's specification is updated, thus preserving the VM's state between specification generations")
@ -156,6 +158,7 @@ func runCreateVM(cmd *cobra.Command, args []string) error {
NetBridged: netBridged,
Headless: headless,
Nested: nested,
NoAudio: noAudio,
Username: username,
Password: password,
RandomSerial: randomSerial,

View File

@ -98,6 +98,7 @@ func runGetVM(cmd *cobra.Command, args []string) error {
table.AddRow("Bridged networking interface", nonEmptyOrNone(vm.NetBridged))
table.AddRow("Headless mode", vm.Headless)
table.AddRow("Nested virtualization", vm.Nested)
table.AddRow("Audio disabled", vm.NoAudio)
table.AddRow("Status", vm.Status)
table.AddRow("Status message", vm.StatusMessage)
table.AddRow("Assigned worker", nonEmptyOrNone(vm.Worker))

View File

@ -303,6 +303,10 @@ func (vm *VM) run(ctx context.Context, eventStreamer *client.EventStreamer) {
runArgs = append(runArgs, "--nested")
}
if vm.resource.NoAudio {
runArgs = append(runArgs, "--no-audio")
}
if vm.resource.Suspendable {
runArgs = append(runArgs, "--suspendable")
}

View File

@ -32,6 +32,7 @@ type VM struct {
NetBridged string `json:"net-bridged,omitempty"`
Headless bool `json:"headless,omitempty"`
Nested bool `json:"nested,omitempty"`
NoAudio bool `json:"noAudio,omitempty"`
VMSpec
VMSpecReadOnly