mirror of
https://github.com/tailscale/tailscale.git
synced 2024-11-30 05:25:35 +00:00
8fad8c4b9b
updates tailcale/corp#22371 Adds custom macOS vm tooling. See the README for the general gist, but this will spin up VMs with unixgram capable network interfaces listening to a named socket, and with a virtio socket device for host-guest communication. We can add other devices like consoles, serial, etc as needed. The whole things is buildable with a single make command, and everything is controllable via the command line using the TailMac utility. This should all be generally functional but takes a few shortcuts with error handling and the like. The virtio socket device support has not been tested and may require some refinement. Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>
31 lines
713 B
Swift
31 lines
713 B
Swift
// Copyright (c) Tailscale Inc & AUTHORS
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
import Cocoa
|
|
import Foundation
|
|
import Virtualization
|
|
import ArgumentParser
|
|
|
|
@main
|
|
struct HostCli: ParsableCommand {
|
|
static var configuration = CommandConfiguration(
|
|
abstract: "A utility for running virtual machines",
|
|
subcommands: [Run.self],
|
|
defaultSubcommand: Run.self)
|
|
}
|
|
|
|
var config: Config = Config()
|
|
|
|
extension HostCli {
|
|
struct Run: ParsableCommand {
|
|
@Option var id: String
|
|
|
|
mutating func run() {
|
|
print("Running vm with identifier \(id)")
|
|
config = Config(id)
|
|
_ = NSApplicationMain(CommandLine.argc, CommandLine.unsafeArgv)
|
|
}
|
|
}
|
|
}
|
|
|