[assembly] Add starnix subsystem in assembly config

Bug: 120686
Change-Id: Ie8a13ac976efe7896faf1adb5e44bf86b170c388
Reviewed-on: https://fuchsia-review.googlesource.com/c/sdk-integration/+/793922
Fuchsia-Auto-Submit: Aidan Wolter <awolter@google.com>
Reviewed-by: Jiaming Li <lijiaming@google.com>
Commit-Queue: Auto-Submit <auto-submit@fuchsia-infra.iam.gserviceaccount.com>
diff --git a/bazel_rules_fuchsia/fuchsia/assembly.bzl b/bazel_rules_fuchsia/fuchsia/assembly.bzl
index f90fd50..8b5161e 100644
--- a/bazel_rules_fuchsia/fuchsia/assembly.bzl
+++ b/bazel_rules_fuchsia/fuchsia/assembly.bzl
@@ -38,6 +38,10 @@
     _fuchsia_platform_development_support_configuration = "fuchsia_platform_development_support_configuration",
 )
 load(
+    "//fuchsia/private/assembly:fuchsia_platform_starnix_configuration.bzl",
+    _fuchsia_platform_starnix_configuration = "fuchsia_platform_starnix_configuration",
+)
+load(
     "//fuchsia/private/assembly:fuchsia_platform_identity_configuration.bzl",
     _FEATURE_CONTROL = "FEATURE_CONTROL",
     _fuchsia_platform_identity_configuration = "fuchsia_platform_identity_configuration",
@@ -155,6 +159,7 @@
 fuchsia_platform_connectivity_wlan_configuration = _fuchsia_platform_connectivity_wlan_configuration
 fuchsia_platform_diagnostics_configuration = _fuchsia_platform_diagnostics_configuration
 fuchsia_platform_development_support_configuration = _fuchsia_platform_development_support_configuration
+fuchsia_platform_starnix_configuration = _fuchsia_platform_starnix_configuration
 fuchsia_product_configuration = _fuchsia_product_configuration
 fuchsia_board_configuration = _fuchsia_board_configuration
 fuchsia_product_image = _fuchsia_product_image
@@ -168,6 +173,7 @@
 fuchsia_filesystem_empty_account = _fuchsia_filesystem_empty_account
 fuchsia_filesystem_minfs = _fuchsia_filesystem_minfs
 fuchsia_filesystem_empty_data = _fuchsia_filesystem_empty_data
+
 # TODO(fxbug.dev/85134): Remove when in-tree Bazel configuration is updated to
 # use `fuchsia_filesystem_empty_data`.
 fuchsia_filesystem_empty_minfs = _fuchsia_filesystem_empty_minfs
diff --git a/bazel_rules_fuchsia/fuchsia/private/assembly/fuchsia_platform_starnix_configuration.bzl b/bazel_rules_fuchsia/fuchsia/private/assembly/fuchsia_platform_starnix_configuration.bzl
new file mode 100644
index 0000000..d1d3426
--- /dev/null
+++ b/bazel_rules_fuchsia/fuchsia/private/assembly/fuchsia_platform_starnix_configuration.bzl
@@ -0,0 +1,23 @@
+# Copyright 2023 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+load(":providers.bzl", "FuchsiaStarnixConfigInfo")
+
+def _fuchsia_platform_starnix_configuration_impl(ctx):
+    return [
+        FuchsiaStarnixConfigInfo(
+            enabled = ctx.attr.enabled,
+        ),
+    ]
+
+fuchsia_platform_starnix_configuration = rule(
+    doc = """Generates a starnix configuration.""",
+    implementation = _fuchsia_platform_starnix_configuration_impl,
+    provides = [FuchsiaStarnixConfigInfo],
+    attrs = {
+        "enabled": attr.bool(
+            doc = "Whether starnix support should be included",
+        ),
+    },
+)
diff --git a/bazel_rules_fuchsia/fuchsia/private/assembly/fuchsia_product_configuration.bzl b/bazel_rules_fuchsia/fuchsia/private/assembly/fuchsia_product_configuration.bzl
index 3370acd..f89a22a 100644
--- a/bazel_rules_fuchsia/fuchsia/private/assembly/fuchsia_product_configuration.bzl
+++ b/bazel_rules_fuchsia/fuchsia/private/assembly/fuchsia_product_configuration.bzl
@@ -12,6 +12,7 @@
     "FuchsiaIdentityConfigInfo",
     "FuchsiaInputConfigInfo",
     "FuchsiaProductConfigInfo",
+    "FuchsiaStarnixConfigInfo",
 )
 load("//fuchsia/private:providers.bzl", "FuchsiaPackageInfo")
 
@@ -65,6 +66,8 @@
         }
     if ctx.attr.development_support != None:
         platform["development_support"] = ctx.attr.development_support[FuchsiaDevelopmentSupportConfigInfo]
+    if ctx.attr.starnix != None:
+        platform["starnix"] = ctx.attr.starnix[FuchsiaStarnixConfigInfo]
     if ctx.attr.diagnostics != None:
         diagnostics_config = ctx.attr.diagnostics[FuchsiaDiagnosticsConfigInfo]
         platform["diagnostics"] = diagnostics_config
@@ -236,6 +239,11 @@
             providers = [FuchsiaDevelopmentSupportConfigInfo],
             default = None,
         ),
+        "starnix": attr.label(
+            doc = "Starnix Configuration.",
+            providers = [FuchsiaStarnixConfigInfo],
+            default = None,
+        ),
         "base_packages": attr.label_list(
             doc = "Fuchsia packages to be included in base.",
             providers = [
diff --git a/bazel_rules_fuchsia/fuchsia/private/assembly/providers.bzl b/bazel_rules_fuchsia/fuchsia/private/assembly/providers.bzl
index 9e7fa69..c247e33 100644
--- a/bazel_rules_fuchsia/fuchsia/private/assembly/providers.bzl
+++ b/bazel_rules_fuchsia/fuchsia/private/assembly/providers.bzl
@@ -44,6 +44,13 @@
     },
 )
 
+FuchsiaStarnixConfigInfo = provider(
+    doc = "Platform starnix options for the starnix area.",
+    fields = {
+        "enabled": "Whether starnix support should be included",
+    },
+)
+
 FuchsiaConnectivityConfigInfo = provider(
     doc = "Platform configuration options for the connectivity area.",
     fields = {