Add initial project files

Bug: 329891679
Change-Id: I806e60ba4d46aa958cdd8b015f3fb626005a3e71
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/quickstart/zephyr/+/197990
Commit-Queue: Kayce Basques <kayce@google.com>
Pigweed-Auto-Submit: Kayce Basques <kayce@google.com>
Reviewed-by: Yuval Peress <peress@google.com>
Reviewed-by: Keir Mierle <keir@google.com>
diff --git a/.clang-format b/.clang-format
new file mode 120000
index 0000000..1c7cede
--- /dev/null
+++ b/.clang-format
@@ -0,0 +1 @@
+third_party/pigweed/.clang-format
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..5e77914
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,39 @@
+# Copyright 2024 The Pigweed Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+# West's directory.
+.west/
+
+# IDE-specific files.
+.cache/
+.idea/
+.pw_ide/
+.vscode/extensions.json
+.vscode/launch.json
+.vscode/settings.json
+.vscode/tasks.json
+
+# Directories checked out by West.
+bootloader/
+modules/
+tools/
+
+# Build artifacts.
+build/
+out/
+twister-out*/
+
+# Auto-generated environment stuff.
+environment/
+build_overrides/pigweed_environment.gni
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..dd4552c
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,22 @@
+# Copyright 2024 The Pigweed Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+[submodule "third_party/pigweed"]
+	path = third_party/pigweed
+	url = https://pigweed.googlesource.com/pigweed/pigweed
+	branch = main
+[submodule "third_party/zephyr"]
+	path = third_party/zephyr
+	url = git@github.com:zephyrproject-rtos/zephyr.git
+	branch = main
diff --git a/.gn b/.gn
new file mode 100644
index 0000000..c260473
--- /dev/null
+++ b/.gn
@@ -0,0 +1,26 @@
+# Copyright 2024 The Pigweed Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+import("//build_overrides/pigweed.gni")
+
+buildconfig = "//BUILDCONFIG.gn"
+
+default_args = {
+  pw_build_PIP_CONSTRAINTS = [
+    # Upstream Pigweed constraints.
+    "$dir_pw_env_setup/py/pw_env_setup/virtualenv_setup/constraint.list",
+  ]
+  # Default virtualenv target for GN build.
+  pw_build_PYTHON_BUILD_VENV = "//:project_build_venv"
+}
diff --git a/.pw_ide.yaml b/.pw_ide.yaml
new file mode 100644
index 0000000..a2bda92
--- /dev/null
+++ b/.pw_ide.yaml
@@ -0,0 +1,20 @@
+# Copyright 2024 The Pigweed Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+config_title: pw_ide
+
+compdb_gen_cmd: "west build -p --cmake-only -b native_sim app"
+compdb_search_paths:
+  - "build/"
+  - "twister-out/"
diff --git a/BUILD.gn b/BUILD.gn
new file mode 100644
index 0000000..5fe49ca
--- /dev/null
+++ b/BUILD.gn
@@ -0,0 +1,50 @@
+# Copyright 2024 The Pigweed Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+import("//build_overrides/pigweed.gni")
+
+import("$dir_pigweed/pw_build/python.gni")
+import("$dir_pigweed/pw_build/python_dist.gni")
+import("$dir_pigweed/pw_build/python_venv.gni")
+
+pw_python_group("python") {
+  python_deps = [
+    ":pip_install_project_tools",
+  ]
+}
+
+_all_python_packages = [
+  "$dir_pw_env_setup:core_pigweed_python_packages",
+]
+
+pw_python_venv("project_build_venv") {
+  path = "$root_build_dir/python-venv"
+  constraints = pw_build_PIP_CONSTRAINTS
+  requirements = pw_build_PIP_REQUIREMENTS
+  source_packages = _all_python_packages
+}
+
+pw_python_distribution("generate_project_python_distribution") {
+  packages = _all_python_packages
+  generate_setup_cfg = {
+    name = "project-tools"
+    version = "0.0.1"
+    append_date_to_version = true
+    include_default_pyproject_file = true
+  }
+}
+
+pw_python_pip_install("pip_install_project_tools") {
+  packages = [ ":generate_project_python_distribution" ]
+}
diff --git a/BUILDCONFIG.gn b/BUILDCONFIG.gn
new file mode 100644
index 0000000..e3822e2
--- /dev/null
+++ b/BUILDCONFIG.gn
@@ -0,0 +1,19 @@
+# Copyright 2024 The Pigweed Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+_pigweed_directory = {
+  import("//build_overrides/pigweed.gni")
+}
+
+set_default_toolchain("${_pigweed_directory.dir_pw_toolchain}/default")
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..9e5d0b9
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,15 @@
+# Copyright 2024 The Pigweed Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+add_subdirectory(lib)
diff --git a/Kconfig b/Kconfig
new file mode 100644
index 0000000..9d97202
--- /dev/null
+++ b/Kconfig
@@ -0,0 +1,15 @@
+# Copyright 2024 The Pigweed Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+rsource "lib/Kconfig"
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..53e4ee8
--- /dev/null
+++ b/README.md
@@ -0,0 +1,3 @@
+# zephyr-quickstart
+
+See https://pigweed.dev/get_started/zephyr.html
diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt
new file mode 100644
index 0000000..effefbd
--- /dev/null
+++ b/app/CMakeLists.txt
@@ -0,0 +1,21 @@
+# Copyright 2024 The Pigweed Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+cmake_minimum_required(VERSION 3.20)
+
+find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
+
+project(zephyr-quickstart LANGUAGES C CXX)
+
+target_sources(app PRIVATE src/main.cc)
diff --git a/app/prj.conf b/app/prj.conf
new file mode 100644
index 0000000..b32e2c2
--- /dev/null
+++ b/app/prj.conf
@@ -0,0 +1,21 @@
+# Copyright 2024 The Pigweed Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+# C++ configuration.
+CONFIG_CPP=y
+CONFIG_STD_CPP17=y
+CONFIG_REQUIRES_FULL_LIBCPP=y
+
+# Logging configuration.
+CONFIG_LOG=y
diff --git a/app/src/main.cc b/app/src/main.cc
new file mode 100644
index 0000000..1a996c4
--- /dev/null
+++ b/app/src/main.cc
@@ -0,0 +1,20 @@
+// Copyright 2024 The Pigweed Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not
+// use this file except in compliance with the License. You may obtain a copy of
+// the License at
+//
+//     https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations under
+// the License.
+
+#include "pw_log/log.h"
+
+int main() {
+  PW_LOG_INFO("Hello, world!");
+  return 0;
+}
diff --git a/bootstrap.sh b/bootstrap.sh
new file mode 100644
index 0000000..4f238fb
--- /dev/null
+++ b/bootstrap.sh
@@ -0,0 +1,125 @@
+# Copyright 2024 The Pigweed Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+# This script must be tested on bash, zsh, and dash.
+
+_bootstrap_abspath () {
+  $(command -v python3 || command -v python2 || command -v python) -c "import os.path; print(os.path.abspath('$@'))"
+}
+
+# Shell: bash.
+if test -n "$BASH"; then
+  _PW_BOOTSTRAP_PATH="$(_bootstrap_abspath "$BASH_SOURCE")"
+# Shell: zsh.
+elif test -n "$ZSH_NAME"; then
+  _PW_BOOTSTRAP_PATH="$(_bootstrap_abspath "${(%):-%N}")"
+# Shell: dash.
+elif test ${0##*/} = dash; then
+  _PW_BOOTSTRAP_PATH="$(_bootstrap_abspath \
+    "$(lsof -p $$ -Fn0 | tail -1 | sed 's#^[^/]*##;')")"
+# If everything else fails, try $0. It could work.
+else
+  _PW_BOOTSTRAP_PATH="$(_bootstrap_abspath "$0")"
+fi
+
+# Check if this file is being executed or sourced.
+_pw_sourced=0
+if [ -n "$SWARMING_BOT_ID" ]; then
+  # If set we're running on swarming and don't need this check.
+  _pw_sourced=1
+elif [ -n "$ZSH_EVAL_CONTEXT" ]; then
+  case $ZSH_EVAL_CONTEXT in *:file) _pw_sourced=1;; esac
+elif [ -n "$KSH_VERSION" ]; then
+  [ "$(cd $(dirname -- $0) && pwd -P)/$(basename -- $0)" != \
+    "$(cd $(dirname -- ${.sh.file}) && pwd -P)/$(basename -- ${.sh.file})" ] \
+    && _pw_sourced=1
+elif [ -n "$BASH_VERSION" ]; then
+  (return 0 2>/dev/null) && _pw_sourced=1
+else  # All other shells: examine $0 for known shell binary filenames
+  # Detects `sh` and `dash`; add additional shell filenames as needed.
+  case ${0##*/} in sh|dash) _pw_sourced=1;; esac
+fi
+
+# Downstream projects need to set something other than PW_ROOT here, like
+# YOUR_PROJECT_ROOT. Please also set PW_PROJECT_ROOT and PW_ROOT before
+# invoking pw_bootstrap or pw_activate.
+######### BEGIN PROJECT-SPECIFIC CODE #########
+# Please also set PW_PROJECT_ROOT to YOUR_PROJECT_ROOT.
+PW_PROJECT_ROOT="$(dirname "${_PW_BOOTSTRAP_PATH}")"
+PW_ROOT="${PW_PROJECT_ROOT}/third_party/pigweed"
+echo "PW_ROOT=${PW_ROOT}"
+echo "PW_PROJECT_ROOT=${PW_PROJECT_ROOT}"
+
+# Downstream projects may wish to set PW_BANNER_FUNC to a function that prints
+# an ASCII art banner here.
+########## END PROJECT-SPECIFIC CODE ##########
+export PW_ROOT
+export PW_PROJECT_ROOT
+if [ -n "$PW_BANNER_FUNC" ]; then
+  export PW_BANNER_FUNC
+fi
+
+. "$PW_ROOT/pw_env_setup/util.sh"
+
+# Check environment properties
+pw_deactivate
+pw_eval_sourced "$_pw_sourced" "$_PW_BOOTSTRAP_PATH"
+if ! pw_check_root "$PW_ROOT"; then
+  return
+fi
+
+_PW_ACTUAL_ENVIRONMENT_ROOT="$(pw_get_env_root)"
+export _PW_ACTUAL_ENVIRONMENT_ROOT
+SETUP_SH="$_PW_ACTUAL_ENVIRONMENT_ROOT/activate.sh"
+
+# Run full bootstrap when invoked as bootstrap, or env file is missing/empty.
+if [ "$(basename "$_PW_BOOTSTRAP_PATH")" = "bootstrap.sh" ] || \
+  [ ! -f "$SETUP_SH" ] || \
+  [ ! -s "$SETUP_SH" ]; then
+######### BEGIN PROJECT-SPECIFIC CODE #########
+  pw_bootstrap --shell-file "$SETUP_SH" --install-dir "$_PW_ACTUAL_ENVIRONMENT_ROOT"
+########## END PROJECT-SPECIFIC CODE ##########
+  pw_finalize bootstrap "$SETUP_SH"
+else
+  pw_activate
+  pw_finalize activate "$SETUP_SH"
+fi
+
+if [ "$_PW_ENV_SETUP_STATUS" -eq 0 ]; then
+# This is where any additional checks about the environment should go.
+######### BEGIN PROJECT-SPECIFIC CODE #########
+  echo -n
+########## END PROJECT-SPECIFIC CODE ##########
+fi
+
+unset _pw_sourced
+unset _PW_BOOTSTRAP_PATH
+unset SETUP_SH
+unset _bootstrap_abspath
+
+if [[ "$TERM" != dumb ]]; then
+  # Shell completion: bash.
+  if test -n "$BASH"; then
+    . "$PW_ROOT/pw_cli/py/pw_cli/shell_completion/pw.bash"
+    . "$PW_ROOT/pw_cli/py/pw_cli/shell_completion/pw_build.bash"
+  # Shell completion: zsh.
+  elif test -n "$ZSH_NAME"; then
+    . "$PW_ROOT/pw_cli/py/pw_cli/shell_completion/pw.zsh"
+    . "$PW_ROOT/pw_cli/py/pw_cli/shell_completion/pw_build.zsh"
+  fi
+fi
+
+pw_cleanup
+
+git -C "$PW_ROOT" config blame.ignoreRevsFile .git-blame-ignore-revs
diff --git a/build_overrides/pigweed.gni b/build_overrides/pigweed.gni
new file mode 100644
index 0000000..97dd45c
--- /dev/null
+++ b/build_overrides/pigweed.gni
@@ -0,0 +1,21 @@
+# Copyright 2024 The Pigweed Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+declare_args() {
+  dir_project = "//"
+  # Location of the Pigweed repository.
+  dir_pigweed = "//third_party/pigweed"
+}
+
+import("$dir_pigweed/modules.gni")
diff --git a/cipd.json b/cipd.json
new file mode 100644
index 0000000..df86d04
--- /dev/null
+++ b/cipd.json
@@ -0,0 +1,19 @@
+{
+  "packages": [
+    {
+      "path": "infra/3pp/tools/zephyr_sdk/${platform}",
+      "subdir": "zephyr_sdk",
+      "platforms": [
+        "mac-amd64",
+        "mac-arm64",
+        "linux-amd64",
+        "linux-arm64",
+        "windows-amd64"
+      ],
+      "tags": [
+        "latest"
+      ],
+      "version_file": ".versions/zephyr_sdk.cipd_version"
+    }
+  ]
+}
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
new file mode 100644
index 0000000..ef4d136
--- /dev/null
+++ b/lib/CMakeLists.txt
@@ -0,0 +1,13 @@
+# Copyright 2024 The Pigweed Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
diff --git a/lib/Kconfig b/lib/Kconfig
new file mode 100644
index 0000000..ef4d136
--- /dev/null
+++ b/lib/Kconfig
@@ -0,0 +1,13 @@
+# Copyright 2024 The Pigweed Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
diff --git a/manifest/west.yml b/manifest/west.yml
new file mode 100644
index 0000000..28e9758
--- /dev/null
+++ b/manifest/west.yml
@@ -0,0 +1,31 @@
+# Copyright 2024 The Pigweed Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+manifest:
+  projects:
+    - import: false
+      name: pigweed
+      path: third_party/pigweed
+      remote: google
+      revision: main
+    - import: true
+      name: zephyr
+      path: third_party/zephyr
+      remote: zephyrproject-rtos
+      revision: main
+  remotes:
+    - name: google
+      url-base: git@github.com:google
+    - name: zephyrproject-rtos
+      url-base: git@github.com:zephyrproject-rtos
diff --git a/manifest/zephyr/module.yml b/manifest/zephyr/module.yml
new file mode 100644
index 0000000..5becc00
--- /dev/null
+++ b/manifest/zephyr/module.yml
@@ -0,0 +1,29 @@
+# Copyright 2024 The Pigweed Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+name: zephyr-quickstart
+
+build:
+  # Path to the `Kconfig` file that will be sourced into Zephyr `Kconfig` tree
+  # under Zephyr > Modules > {module_name}. Path is relative from where the
+  # `west.yml` file is located.
+  kconfig: ../Kconfig
+  # Path to the folder that contains the `CMakeLists.txt` file to be included
+  # by Zephyr build system. The `../` is the root of this repository.
+  cmake: ../
+  settings:
+    # Additional roots for boards and DTS files. Zephyr will use the
+    # `<board_root>/boards` for additional boards. The `../` is the root of this
+    # repository.
+    board_root: ../
diff --git a/pigweed.json b/pigweed.json
new file mode 100644
index 0000000..3f733e0
--- /dev/null
+++ b/pigweed.json
@@ -0,0 +1,44 @@
+{
+  "pw": {
+    "pw_cli": {
+      "plugins": {
+        "ide": {
+          "module": "pw_ide.__main__",
+          "function": "main"
+        },
+        "package": {
+          "module": "pw_package.pigweed_packages",
+          "function": "main"
+        }
+      }
+    },
+    "pw_env_setup": {
+      "relative_pigweed_root": "third_party/pigweed",
+      "cipd_package_files": [
+        "cipd.json",
+        "third_party/pigweed/pw_env_setup/py/pw_env_setup/cipd_setup/default.json",
+        "third_party/pigweed/pw_env_setup/py/pw_env_setup/cipd_setup/cmake.json",
+        "third_party/pigweed/pw_env_setup/py/pw_env_setup/cipd_setup/pigweed.json",
+        "third_party/pigweed/pw_env_setup/py/pw_env_setup/cipd_setup/python.json"
+      ],
+      "project_actions": [
+        {
+          "import_path": "pw_env_setup",
+          "module_name": "zephyr_sdk_actions"
+        }
+      ],
+      "virtualenv": {
+        "gn_root": ".",
+        "gn_targets": [
+          ":python.install"
+        ],
+        "requirements": [
+          "third_party/zephyr/scripts/requirements.txt"
+        ],
+        "pip_install_find_links": [
+          "${PW_PROJECT_ROOT}/pip_cache"
+        ]
+      }
+    }
+  }
+}
diff --git a/third_party/pigweed b/third_party/pigweed
new file mode 160000
index 0000000..42616d8
--- /dev/null
+++ b/third_party/pigweed
@@ -0,0 +1 @@
+Subproject commit 42616d83123f2176914d091f973088980dcf7e1a
diff --git a/third_party/zephyr b/third_party/zephyr
new file mode 160000
index 0000000..7ffafd9
--- /dev/null
+++ b/third_party/zephyr
@@ -0,0 +1 @@
+Subproject commit 7ffafd9b6473d229e712bc67e9759042a49483f7