# Copyright 2022 The Fuchsia Authors.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Common workstation product configuration. This configuration is shared by the _eng,
# _userdebug, and _user build types.

import("//products/core.gni")
core_realm_package_name = "core-workstation"

core_realm_shards += [
  "//src/developer/build_info:build_info_core_shard",
  "//src/developer/memory/monitor:memory_monitor_core_shard",
  "//src/identity/bin/account:account-core-shard",
  "//src/intl/intl_services:intl_services_shard",
  "//src/media/audio/drivers/configurator:configurator_provider_shard",
  "//src/power/battery-manager:battery-manager-core-shard",
  "//src/session/bin/session_manager:workstation_core_shard",
  "//src/ui:ui_core_shard",
]

legacy_base_package_labels += [
  "//src/developer/memory/buckets:workstation_memory_monitor_config",
  "//src/fonts",
  "//src/fonts:open-fonts-collection",
  "//src/graphics/bin/vulkan_loader",
  "//src/identity/bin:minimal_auth",

  # TODO(fxbug.dev/90430): Complete CFv2 migration and remove.
  "//src/intl/intl_services/config:sysmgr",
  "//src/intl/intl_services:pkg",
  "//src/media/audio/bundles:services",
  "//src/media/audio/drivers/configurator:package",
  "//src/power:battery",
  "//src/sys/activity",
  "//src/ui:runtime_with_scene_manager",
  "//src/ui/bin/brightness_manager",
  "//src/ui/bin/screensaver",
  "//src/ui/bin/text:text_manager",
  "//src/ui/bin/shortcut",
  "//third_party/openssh-portable:openssh-tools",
]
legacy_base_package_labels -= [
  # TODO(fxbug.dev/90430): Complete CFv2 migration and remove.
  "//src/intl/intl_services/config:sysmgr_small",
]
core_realm_shards -= [ "//src/intl/intl_services:intl_services_small_shard" ]

# Add Linux runner
legacy_base_package_labels += [
  "//src/ui/wayland/bin/bridge",
  "//src/virtualization/bin/vmm",
  "//src/virtualization/bin/guest_manager:termina_guest_manager",
  "//src/virtualization/bin/host_vsock",
  "//src/virtualization/bin/linux_runner",
  "//src/virtualization/packages/termina_guest",
  "//src/virtualization/bin/guest",
]
core_realm_shards += [ "//src/ui/wayland/bin/bridge:core_shard" ]

# Add Bluetooth packages
core_realm_shards +=
    [ "//src/connectivity/bluetooth/profiles/bt-a2dp:eager_core_shard" ]

# To use the eager shard, cache the packages so they are available before network.
legacy_cache_package_labels += [
  "//src/connectivity/bluetooth/profiles/bt-a2dp:source-only",
  "//src/connectivity/bluetooth/profiles/bt-avrcp-target",
  "//src/connectivity/bluetooth/profiles/bt-avrcp",

  # TODO(fxbug.dev/79542): Demote to universe when sysui handles pairing+connecting
  "//src/connectivity/bluetooth/tools/bt-cli",
  "//src/connectivity/bluetooth/tools/bt-pairing-tool",
]

# Explicitly prefer wired networking on workstation
legacy_base_package_labels -=
    [ "//src/connectivity/network/netcfg:config-default" ]
legacy_base_package_labels +=
    [ "//src/connectivity/network/netcfg:config-prefer-wired" ]

# This package is only used for tests, so it must stay out of non-eng workstation products.
legacy_base_package_labels -=
    [ "//src/connectivity/network:network-legacy-deprecated" ]

legacy_base_package_labels += [
  "//src/chromium:chrome_browser",
  "//src/experiences/bin/settings/license:license_settings",
  "//src/experiences/session_shells/ermine",
  "//src/media/playback/bundles:services",
  "//src/media/playback/bundles:audio_consumer_config",
  "//src/session",
  "//src/ui/bin/terminal",
  "//src/ui/scenic",
  "//examples/fortune:fortune_teller",

  # Starnix
  "//src/proc/bundles:starnix",
]

product_bootfs_labels += [
  # hide the virtual console on boot
  "//products/kernel_cmdline:virtcon.hide-on-boot",

  # enable boot animation
  "//products/kernel_cmdline:virtcon.boot-animation--true",

  # enable DPI based scale factors, 1.25x above 160 DPI, 2x above 240, etc.
  "//products/kernel_cmdline:virtcon.dpi--160-240-360-480",

  # enable double buffered output
  "//products/kernel_cmdline:virtcon.buffer-count--2",
]

# Add bold and italic Virtcon fonts.
virtcon_bold_font_path =
    "//prebuilt/third_party/fonts/robotomono/RobotoMono-Bold.ttf"
virtcon_italic_font_path =
    "//prebuilt/third_party/fonts/robotomono/RobotoMono-Italic.ttf"
virtcon_bold_italic_font_path =
    "//prebuilt/third_party/fonts/robotomono/RobotoMono-BoldItalic.ttf"

# Include Fxfs in the build so that it's available for enablement at runtime.
product_bootfs_labels += [
  "//src/storage/fxfs",
  "//src/storage/fxfs-crypt",
]

# USB peripheral drivers are not necessary for workstation.
product_bootfs_labels += [ "//bundles/drivers:usb-peripheral-stack" ]
product_bootfs_labels -= [ "//bundles/drivers:usb-peripheral-stack" ]

core_realm_shards += [ "//src/media/codec:codec_factory_shard" ]

# Enable input injection for testing through `fuchsia.input.injection.InputDeviceRegistry`.
use_modern_input_injection = true

# Create an additional (initially empty) account partition in FVM to enable
# user data protection.
include_account_in_fvm = true

# Use Flatland as the default graphics protocol in Scenic.
use_flatland_by_default = true

# TODO(fxbug.dev/96494): Switch to Fxfs.
data_filesystem_format = "minfs"
