feat: expose a config_setting for allow_unresolved_symlinks

Allows a principled solution for rules like rules_js that need to have starlark logic conditional on the value, without a breaking change in Bazel 7 as the flag has been renamed.

Unblocks https://github.com/aspect-build/rules_js/issues/1102
diff --git a/BUILD.bazel b/BUILD.bazel
index e69de29..7b767e5 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -0,0 +1,5 @@
+# Alias the target since the globals repo isn't visible to dependent workspaces.
+alias(
+    name = "allow_unresolved_symlinks",
+    actual = "@bazel_features_globals//:allow_unresolved_symlinks",
+)
diff --git a/private/globals_repo.bzl b/private/globals_repo.bzl
index 08c8db4..05cfd87 100644
--- a/private/globals_repo.bzl
+++ b/private/globals_repo.bzl
@@ -1,10 +1,29 @@
 load("//private:parse.bzl", "parse_version")
 
 def _globals_repo_impl(rctx):
-    rctx.file("BUILD.bazel")
-
     bazel_version = parse_version(native.bazel_version)
 
+    allow_unresolved_symlinks_flag = (
+        "experimental_allow_unresolved_symlinks"
+        if bazel_version < parse_version("7.0.0")
+        else "allow_unresolved_symlinks"
+    )
+
+    rctx.file("BUILD.bazel", """\
+# @generated by bazel_features/private/globals_repo.bzl
+
+# Allow rules to sense the value of this flag, which was renamed.
+config_setting(
+    name = "allow_unresolved_symlinks",
+    values = {allow_unresolved_symlinks},
+    visibility = ["//visibility:public"],
+)
+""".format(
+    allow_unresolved_symlinks = {
+        allow_unresolved_symlinks_flag: "true"
+    },
+))
+
     lines = ["globals = struct("]
     for global_, version in rctx.attr.globals.items():
         if not _is_valid_identifier(global_):