# 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",

  "//src/chromium:chrome_browser",
]

# 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/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"
