package virtiofsd import ( "path/filepath" "qvm/internal/config" ) // Mount represents a single virtiofsd mount configuration type Mount struct { Tag string // Mount tag (e.g., "cargo_home", "ws_abc12345") HostPath string // Path on host to share SocketPath string // Path to virtiofsd socket } // DefaultCacheMounts returns the standard cache mounts for cargo, pnpm, and sccache. // These are shared across all projects and mounted at VM start. func DefaultCacheMounts() []Mount { return []Mount{ { Tag: "cargo_home", HostPath: config.CargoHome, SocketPath: filepath.Join(config.StateDir, "cargo_home.sock"), }, { Tag: "cargo_target", HostPath: config.CargoTarget, SocketPath: filepath.Join(config.StateDir, "cargo_target.sock"), }, { Tag: "pnpm_store", HostPath: config.PnpmStore, SocketPath: filepath.Join(config.StateDir, "pnpm_store.sock"), }, { Tag: "sccache", HostPath: config.Sccache, SocketPath: filepath.Join(config.StateDir, "sccache.sock"), }, } } // WorkspaceMount creates a Mount configuration for a single workspace. // mountTag should be the workspace's mount tag (e.g., "ws_abc12345") // hostPath is the absolute path on the host to share func WorkspaceMount(mountTag, hostPath string) Mount { return Mount{ Tag: mountTag, HostPath: hostPath, SocketPath: filepath.Join(config.StateDir, mountTag+".sock"), } }