diff --git a/doc.nix b/doc.nix new file mode 100644 index 0000000000..8505bbb228 --- /dev/null +++ b/doc.nix @@ -0,0 +1,60 @@ +{ lib +, stdenv +, west2nixHook +, pythonEnv +, cmake +, ninja +, doxygen +, mscgen +, graphviz +, git +, zephyr +, bridle +}: + +stdenv.mkDerivation { + + name = "bridle-doc"; + src = bridle; + unpackPhase = '' + cp -r ${bridle} bridle + chmod +w -R bridle + cd bridle + git init + git config user.email "foo@bar.com" + git config user.name "Foo" + git checkout -b fake-branch + git add -A + git commit -m "Fake Commnit" + cd .. + ''; + + nativeBuildInputs = [ + west2nixHook + pythonEnv + cmake + ninja + doxygen + mscgen + graphviz + git + ]; + + dontUseCmakeConfigure = true; + + CMAKE_PREFIX_PATH = "/build/bridle/share/bridle-package:/build/zephyr/share/zephyr-package"; + + buildPhase = '' + cd /build + chmod +w -R ./* + west build --cmake-only -b none -d build bridle/doc + west build -t zephyr-doxygen -b none -d build + west build -t bridle-doxygen -b none -d build + west build -t build-all -b none -d build + ''; + + installPhase = '' + mkdir $out + cp -r build/html $out/ + ''; +} diff --git a/doc/bridle/getting_started.rst b/doc/bridle/getting_started.rst index 92ffd2f1f7..11f214b0b1 100644 --- a/doc/bridle/getting_started.rst +++ b/doc/bridle/getting_started.rst @@ -3,10 +3,10 @@ Getting started ############### -To quickly get started with |BRIDLE|, use the -:ref:`Getting Started Assistant ` to set up your development -environment. Alternatively, check the :ref:`gs_installing` section for -instructions on setting up your environment manually. +To quickly get started with |BRIDLE|, use the :ref:`Getting Started Assistant +` to set up your development environment. Alternatively, check the +:ref:`gs_installing` section for instructions on setting up your environment +manually. To set up your system for using Bridle with Nix, see :ref:`gs_nix`. We recommend using [t.b.d.] for building your applications. See :ref:`gs_programming` for the download links and instructions. In case you @@ -25,7 +25,7 @@ start developing! gs_recommended_versions gs_assistant gs_installing + gs_nix gs_programming gs_testing gs_modifying - diff --git a/doc/bridle/gs_nix.rst b/doc/bridle/gs_nix.rst new file mode 100644 index 0000000000..66ea6a5487 --- /dev/null +++ b/doc/bridle/gs_nix.rst @@ -0,0 +1,97 @@ +.. _gs_nix: + +Working with Bridle via Nix +########################### + +.. contents:: + :local: + :depth: 2 + +An alternative way to develop with Bridle is through `Nix +`_, a functional package managing system. This way, all +dependencies can be installed using a single tool. Packages installed this way +don't pollute your regular system, and can easily be removed later. + +Installing the Nix Package Manager +********************************** + +To get started using Nix, you will need to install the package manager itself. +Most distributions provide packages for installing it using their regular +package manager (e.g. Ubuntu provides a ``nix`` package that can be installed +using ``apt install nix``). If your distribution doesn't provide such a package, +see the instructions on `nixos.org `_ to get a Nix +installation. + +Enabling Flakes +*************** + +Flakes are an experimental feature that enables fully hermetic and reproducible +builds. To enable flakes, add:: + + experimental-features = nix-command flakes + +to your private Nix configuration in ``~/.config/nix/nix.conf`` (creating this +file if it doesn't exist). + +Using the Bridle Flake +********************** + +The Bridle flake provides a ``devShell`` output, which is a shell environment in +which all necessary tools and dependencies are present for developing Zephyr +applications with Bridle. By running ``nix develop`` within the bridle repository, +you enter this environment. You can then proceed to create a west workspace +ontop of your bridle directory and work as usual. + +You can also use the build hooks provided by the ``west2nix`` input to perform +builds directly via Nix, without creating an explicit west workspace. In this +case, the workspace manifest used will be that provided by the ``west2nix.toml`` +lockfile (see below on how to bring it up-to-date if required). For an example +of such a derivation, see ``doc.nix``, which builds this documentation. For +another example of a simpler build, see `the west2nix repository +`_. + +Keeping the Bridle Flake Up-to-date +*********************************** + +Like all nix flakes, the Bridle flake has its inputs locked using the +``flake.lock`` file. Running ``nix flake update`` in the bridle directory will +check for upstream changes and bump any changed inputs in the lockfile. After +checking for breakages due to the update, e.g. via ``nix flake check``, and +confirming that ``nix develop`` drops you into a working shell, you should can +commit the updated ``flake.lock``. If you do notice breakage, you can simply +revert the update with ``git checkout flake.lock``. + +The flake also relies on the manifest lockfile ``west2nix.toml``, which reflects +the state of a west workspace at a specific time. To update this lockfile, you +first need a full checkout of the workspace you want to lock: + +.. code-block:: console + + mkdir workspace && cd workspace + git clone https://github.com/tiacsys/bridle.git + west init -l bridle + west update + +You can then run ``west2nix`` on this workspace and place the resulting lockfile +into the ``bridle`` directory: + +.. code-block:: console + + nix run ./bridle#west2nix + mv west2nix.toml bridle/ + +.. note:: + + Running ``west2nix`` directly inside the ``bridle`` directory is + likely to fail due to permission issues, hence running it from the workspace + directory instead. + +Finally, you can commit your new lockfile: + +.. code-block:: console + + git add west2nix.toml + git commit -m "Updated west2nix.toml" + +Similarly to updating the flake inputs, this update can be reverted simply by +resetting ``west2nix.toml`` to an earlier state. diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000000..076cfac64e --- /dev/null +++ b/flake.lock @@ -0,0 +1,336 @@ +{ + "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1709126324, + "narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "d465f4819400de7c8d874d50b982301f28a84605", + "type": "github" + }, + "original": { + "id": "flake-utils", + "type": "indirect" + } + }, + "flake-utils_2": { + "inputs": { + "systems": "systems_2" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "id": "flake-utils", + "type": "indirect" + } + }, + "mdbook-nixdoc": { + "inputs": { + "nix-github-actions": [ + "pyproject-nix", + "nix-github-actions" + ], + "nixpkgs": [ + "pyproject-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1708395692, + "narHash": "sha256-smf0VmxGbjJDZqKvxxG3ZVqubgbVwAWG26wPo+BT/A0=", + "owner": "adisbladis", + "repo": "mdbook-nixdoc", + "rev": "d6a71b114b9221c0b4f20d31b81766d072cc26be", + "type": "github" + }, + "original": { + "owner": "adisbladis", + "repo": "mdbook-nixdoc", + "type": "github" + } + }, + "mdbook-nixdoc_2": { + "inputs": { + "nix-github-actions": [ + "zephyr-nix", + "pyproject-nix", + "nix-github-actions" + ], + "nixpkgs": [ + "zephyr-nix", + "pyproject-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1708395692, + "narHash": "sha256-smf0VmxGbjJDZqKvxxG3ZVqubgbVwAWG26wPo+BT/A0=", + "owner": "adisbladis", + "repo": "mdbook-nixdoc", + "rev": "d6a71b114b9221c0b4f20d31b81766d072cc26be", + "type": "github" + }, + "original": { + "owner": "adisbladis", + "repo": "mdbook-nixdoc", + "type": "github" + } + }, + "nix-github-actions": { + "inputs": { + "nixpkgs": [ + "pyproject-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1703863825, + "narHash": "sha256-rXwqjtwiGKJheXB43ybM8NwWB8rO2dSRrEqes0S7F5Y=", + "owner": "nix-community", + "repo": "nix-github-actions", + "rev": "5163432afc817cf8bd1f031418d1869e4c9d5547", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-github-actions", + "type": "github" + } + }, + "nix-github-actions_2": { + "inputs": { + "nixpkgs": [ + "zephyr-nix", + "pyproject-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1701208414, + "narHash": "sha256-xrQ0FyhwTZK6BwKhahIkUVZhMNk21IEI1nUcWSONtpo=", + "owner": "nix-community", + "repo": "nix-github-actions", + "rev": "93e39cc1a087d65bcf7a132e75a650c44dd2b734", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-github-actions", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1709569716, + "narHash": "sha256-iOR44RU4jQ+YPGrn+uQeYAp7Xo7Z/+gT+wXJoGxxLTY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "617579a787259b9a6419492eaac670a5f7663917", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1709479366, + "narHash": "sha256-n6F0n8UV6lnTZbYPl1A9q1BS0p4hduAv1mGAP17CVd0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "b8697e57f10292a6165a20f03d2f42920dfaf973", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "pyproject-nix": { + "inputs": { + "mdbook-nixdoc": "mdbook-nixdoc", + "nix-github-actions": "nix-github-actions", + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1709593159, + "narHash": "sha256-mPZaI2ctBNP78n5qTa5o+zzK54bN4gt9R7YyIfO7mgU=", + "owner": "nix-community", + "repo": "pyproject.nix", + "rev": "5ece746db4c561fdb9cd18575adc7a2a1a6026ed", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "pyproject.nix", + "type": "github" + } + }, + "pyproject-nix_2": { + "inputs": { + "mdbook-nixdoc": "mdbook-nixdoc_2", + "nix-github-actions": "nix-github-actions_2", + "nixpkgs": [ + "zephyr-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1708414356, + "narHash": "sha256-neHF92cht4G94Ye1j9YgLeqdE0dGL920lQQMLTqNm9A=", + "owner": "nix-community", + "repo": "pyproject.nix", + "rev": "f75d39ce888632500bf4cff2197784929d3ed265", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "pyproject.nix", + "type": "github" + } + }, + "python-deps": { + "inputs": { + "flake-utils": "flake-utils_2", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1708425171, + "narHash": "sha256-+KbQNk1RzW1Q5EvnB9q/B7H23NQoO3VLd/bDlTOrvyk=", + "owner": "irockasingranite", + "repo": "bridle-python-deps", + "rev": "d779b4e36484adb65a814d1498efc369aac57d38", + "type": "github" + }, + "original": { + "owner": "irockasingranite", + "repo": "bridle-python-deps", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs", + "pyproject-nix": "pyproject-nix", + "python-deps": "python-deps", + "west2nix": "west2nix", + "zephyr": "zephyr", + "zephyr-nix": "zephyr-nix" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "west2nix": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "zephyr-nix": [ + "zephyr-nix" + ] + }, + "locked": { + "lastModified": 1707272336, + "narHash": "sha256-bFJMr8qMUmxmnqvVIc0IZGmSg64uceRvh/PxwI2Kueo=", + "owner": "adisbladis", + "repo": "west2nix", + "rev": "6d8d3558c42144270b534af39a00efe2f19cc278", + "type": "github" + }, + "original": { + "owner": "adisbladis", + "repo": "west2nix", + "type": "github" + } + }, + "zephyr": { + "flake": false, + "locked": { + "lastModified": 1708734632, + "narHash": "sha256-iwEXEIA63JWSB6GcTNHHMZAEfMEwEfqcIWetF7VD2tU=", + "owner": "tiacsys", + "repo": "zephyr", + "rev": "468eb56cf242eedba62006ee758700ee6148763f", + "type": "github" + }, + "original": { + "owner": "tiacsys", + "ref": "v3.6-branch", + "repo": "zephyr", + "type": "github" + } + }, + "zephyr-nix": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "pyproject-nix": "pyproject-nix_2", + "zephyr": [ + "zephyr" + ] + }, + "locked": { + "lastModified": 1709345571, + "narHash": "sha256-2MzrVPi0GFFtWNqc7i7Vc5MYqUz31HKw8KSKDf6X3m0=", + "owner": "adisbladis", + "repo": "zephyr-nix", + "rev": "311d2ad38ca29fedecd3201d9b7fd81848d44895", + "type": "github" + }, + "original": { + "owner": "adisbladis", + "repo": "zephyr-nix", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000000..1123c495ea --- /dev/null +++ b/flake.nix @@ -0,0 +1,66 @@ +{ + description = "A flake for working with Bridle"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11"; + + zephyr = { + type = "github"; + owner = "tiacsys"; + repo = "zephyr"; + ref = "v3.6-branch"; + flake = false; + }; + + zephyr-nix = { + url = "github:adisbladis/zephyr-nix"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.zephyr.follows = "zephyr"; + }; + + west2nix = { + url = "github:adisbladis/west2nix"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.zephyr-nix.follows = "zephyr-nix"; + }; + + pyproject-nix.url = "github:nix-community/pyproject.nix"; + + python-deps = { + url = "github:irockasingranite/bridle-python-deps"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + }; + + outputs = { self, nixpkgs, flake-utils, ... }@inputs: + (flake-utils.lib.eachDefaultSystem (system: + let + pkgs = nixpkgs.legacyPackages.${system}; + inherit (nixpkgs) lib; + + west2nix = callPackage inputs.west2nix.lib.mkWest2nix { }; + + callPackage = pkgs.newScope (pkgs // { + bridle = self; + zephyr = inputs.zephyr; + zephyr-nix = inputs.zephyr-nix.packages.${system}; + pyproject-nix = inputs.pyproject-nix; + pythonEnv = callPackage ./python.nix { + python-deps = inputs.python-deps.packages.${system}; + }; + west2nixHook = west2nix.mkWest2nixHook { + manifest = ./west2nix.toml; + }; + }); + + in { + formatter = pkgs.nixfmt; + + packages.west2nix = inputs.west2nix.packages.${system}.default; + + devShells.default = callPackage ./shell.nix { }; + + packages.doc = callPackage ./doc.nix { }; + })); +} diff --git a/python.nix b/python.nix new file mode 100644 index 0000000000..afabf67067 --- /dev/null +++ b/python.nix @@ -0,0 +1,63 @@ +{ python3 +, zephyr +, bridle +, python-deps +, pyproject-nix +, clang-tools +, gitlint +, lib +}: + +let + + # Create a python whose `withPackages` knows about some extra stuff we need + python = python3.override { + self = python; + packageOverrides = final: prev: { + # HACK: Zephyr uses pypi to install non-Python deps + clang-format = clang-tools; + inherit gitlint; + + # Extra python packages that aren't in nixpkgs + inherit (python-deps) + pydebuggerconfig + pyedbglib + pykitinfo + pymcuprog + sphinx-tsn-theme + sphinxcontrib-svg2pdfconverter + sphinx-csv-filter; + }; + }; + + # Parse requirements.txt files into pyproject-nix projects + zephyr-project = pyproject-nix.lib.project.loadRequirementsTxt { + requirements = zephyr + "/scripts/requirements.txt"; + }; + + bridle-project = pyproject-nix.lib.project.loadRequirementsTxt { + requirements = bridle + "/scripts/requirements.txt"; + }; + + # Can't validate the combined packages sets, but we can at least check for + # conflicts within each subset + invalidConstraints = zephyr-project.validators.validateVersionConstraints { inherit python; } + // bridle-project.validators.validateVersionConstraints { inherit python; }; + +in +lib.warnIf + (invalidConstraints != { }) + "pythonEnv: Found invalid Python constraints for: ${builtins.toJSON (lib.attrNames invalidConstraints)}" + (python.buildEnv.override { + extraLibs = (bridle-project.renderers.withPackages { + inherit python; + # Nest one project's withPackages within the other to get a combined package + # set. If we want more than two, we should name these lambdas to reduce + # indentation. + extraPackages = (zephyr-project.renderers.withPackages { + inherit python; + extraPackages = ps: [ ps.west ]; + }); + }) python.pkgs; + ignoreCollisions = true; + }) diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000000..5f05ba92fb --- /dev/null +++ b/shell.nix @@ -0,0 +1,29 @@ +{ lib +, callPackage +, pythonEnv +, mkShell +, zephyr +, zephyr-nix +, bridle +, cmake +, ninja +, git +}: + +mkShell { + packages = [ + zephyr-nix.sdkFull + zephyr-nix.hosttools-nix + pythonEnv + cmake + ninja + git + ]; + + LC_ALL = "C.UTF-8"; # Needed by sphinx + + shellHook = '' + export CMAKE_PREFIX_PATH=$(realpath ${bridle}/share/bridle-package/cmake):$CMAKE_PREFIX_PATH; + export CMAKE_PREFIX_PATH=$(realpath ${zephyr}/share/zephyr-package/cmake):$CMAKE_PREFIX_PATH; + ''; +} diff --git a/west2nix.toml b/west2nix.toml new file mode 100644 index 0000000000..b9839ae9bd --- /dev/null +++ b/west2nix.toml @@ -0,0 +1,442 @@ +[manifest] +group-filter = ["-babblesim"] + +[[manifest.projects]] +name = "ubxlib" +url = "https://github.com/tiacsys/ubxlib" +revision = "c564a1ac88e62117d88277e4e74513de50a95c45" +path = "modules/lib/ubxlib" + +[manifest.projects.nix] +hash = "sha256-Qx9S7l0q1d6vJbqxRgyplqFr+seH/QybHYs84EN2Jbo=" + +[[manifest.projects]] +name = "zephyr" +url = "https://github.com/tiacsys/zephyr" +revision = "6c93afc3d2572a8f3f4aed0c81d80176f6bbb2ff" +clone-depth = 5000 +west-commands = "scripts/west-commands.yml" + +[manifest.projects.userdata] +west-commands-path = "scripts/west_commands" + +[manifest.projects.nix] +hash = "sha256-WsAK7oFvYPPU1zIxelnfARKj82XdtJt5ndKOTaXJZrY=" + +[[manifest.projects]] +name = "canopennode" +url = "https://github.com/zephyrproject-rtos/canopennode" +revision = "dec12fa3f0d790cafa8414a4c2930ea71ab72ffd" +path = "modules/lib/canopennode" +groups = ["optional"] + +[manifest.projects.nix] +hash = "sha256-BbmEjeMzKznRDx329PIkmPMCGI+du6wiOj+3X7Ap1HQ=" + +[[manifest.projects]] +name = "chre" +url = "https://github.com/zephyrproject-rtos/chre" +revision = "3b32c76efee705af146124fb4190f71be5a4e36e" +path = "modules/lib/chre" +groups = ["optional"] + +[manifest.projects.nix] +hash = "sha256-7SdP9zSKZ+6s+nkIcIbjZSnacq2/t06DiR2gcaL07T4=" + +[[manifest.projects]] +name = "psa-arch-tests" +url = "https://github.com/zephyrproject-rtos/psa-arch-tests" +revision = "2cadb02a72eacda7042505dcbdd492371e8ce024" +path = "modules/tee/tf-m/psa-arch-tests" +groups = ["optional"] + +[manifest.projects.nix] +hash = "sha256-oYpqLIbtKsNHQ9FQjhSM8Rvd/VM4M+ETO5hum2fZVq8=" + +[[manifest.projects]] +name = "tf-m-tests" +url = "https://github.com/zephyrproject-rtos/tf-m-tests" +revision = "08a3158f0623a4205608a52d880b17ae394e31d2" +path = "modules/tee/tf-m/tf-m-tests" +groups = ["optional"] + +[manifest.projects.nix] +hash = "sha256-wALfatKKBeUh1rLWOIxRn2/Tm0XDh34cHUA5IFybbgc=" + +[[manifest.projects]] +name = "cmsis" +url = "https://github.com/zephyrproject-rtos/cmsis" +revision = "4b96cbb174678dcd3ca86e11e1f24bc5f8726da0" +path = "modules/hal/cmsis" +groups = ["hal"] + +[manifest.projects.nix] +hash = "sha256-vzCbE69wCMLIjrSz1m8yspgVCto4JSm4Qg5zY/Ozg+k=" + +[[manifest.projects]] +name = "edtt" +url = "https://github.com/zephyrproject-rtos/edtt" +revision = "64e5105ad82390164fb73fc654be3f73a608209a" +path = "tools/edtt" +groups = ["tools"] + +[manifest.projects.nix] +hash = "sha256-AK4zYIHn0XnkKDl9YGo1lV/2Ea6wLw0rJbzpMA8JZ9w=" + +[[manifest.projects]] +name = "fatfs" +url = "https://github.com/zephyrproject-rtos/fatfs" +revision = "427159bf95ea49b7680facffaa29ad506b42709b" +path = "modules/fs/fatfs" +groups = ["fs"] + +[manifest.projects.nix] +hash = "sha256-5l3hJazG8BoLZ0QxfSFc98uKArIGAFD1P8D6tsKMRt4=" + +[[manifest.projects]] +name = "hal_altera" +url = "https://github.com/zephyrproject-rtos/hal_altera" +revision = "0d225ddd314379b32355a00fb669eacf911e750d" +path = "modules/hal/altera" +groups = ["hal"] + +[manifest.projects.nix] +hash = "sha256-H2C+3ASsC5O/mA+O5EJqfoJgx0BhSN0W3OhWNHVQxRU=" + +[[manifest.projects]] +name = "hal_atmel" +url = "https://github.com/zephyrproject-rtos/hal_atmel" +revision = "aad79bf530b69b72712d18873df4120ad052d921" +path = "modules/hal/atmel" +groups = ["hal"] + +[manifest.projects.nix] +hash = "sha256-9mJjeX9l7orJvYXjW46YROTPvm389KKF3s1XYj7g+VM=" + +[[manifest.projects]] +name = "hal_espressif" +url = "https://github.com/zephyrproject-rtos/hal_espressif" +revision = "67fa60bdffca7ba8ed199aecfaa26f485f24878b" +path = "modules/hal/espressif" +west-commands = "west/west-commands.yml" +groups = ["hal"] + +[manifest.projects.nix] +hash = "sha256-RbR5+SK3Ijn9f/VQ8FzxVy/VYPcP22iVAaIjpaYvV0U=" + +[[manifest.projects]] +name = "hal_gigadevice" +url = "https://github.com/zephyrproject-rtos/hal_gigadevice" +revision = "2994b7dde8b0b0fa9b9c0ccb13474b6a486cddc3" +path = "modules/hal/gigadevice" +groups = ["hal"] + +[manifest.projects.nix] +hash = "sha256-Cgcc+7tJy0ryQG4ynrlv7OmNe3OW2kMx1mStGROgA5o=" + +[[manifest.projects]] +name = "hal_infineon" +url = "https://github.com/zephyrproject-rtos/hal_infineon" +revision = "69c883d3bd9fac8a18dd8384624b8c472a68d06f" +path = "modules/hal/infineon" +groups = ["hal"] + +[manifest.projects.nix] +hash = "sha256-v6Vvw/h007KEznd1/2tbHg1P06yXX7flPn9mLaWm0CU=" + +[[manifest.projects]] +name = "hal_microchip" +url = "https://github.com/zephyrproject-rtos/hal_microchip" +revision = "5d079f1683a00b801373bbbbf5d181d4e33b30d5" +path = "modules/hal/microchip" +groups = ["hal"] + +[manifest.projects.nix] +hash = "sha256-CJdNHsowN9WsKSHekypUdeJvOJ19/0PHZU874CXVaoU=" + +[[manifest.projects]] +name = "hal_nordic" +url = "https://github.com/zephyrproject-rtos/hal_nordic" +revision = "dce8519f7da37b0a745237679fd3f88250b495ff" +path = "modules/hal/nordic" +groups = ["hal"] + +[manifest.projects.nix] +hash = "sha256-cdZIYWc3uCeseGkJoEFxE2iZlfSnlpaVhNUo1g0+4vM=" + +[[manifest.projects]] +name = "hal_nuvoton" +url = "https://github.com/zephyrproject-rtos/hal_nuvoton" +revision = "68a91bb343ff47e40dbd9189a7d6e3ee801a7135" +path = "modules/hal/nuvoton" +groups = ["hal"] + +[manifest.projects.nix] +hash = "sha256-oilM3sRalL9ruIIukM3G/Vg6dI/Ahwma3kUHf7x/6wE=" + +[[manifest.projects]] +name = "hal_nxp" +url = "https://github.com/zephyrproject-rtos/hal_nxp" +revision = "d45b14c198d778658b7853b48378d2e132a6c4be" +path = "modules/hal/nxp" +groups = ["hal"] + +[manifest.projects.nix] +hash = "sha256-fHnZ775PZ7jwpNmrW8n/+j0vE2AnV8OsX4lm0glr1Fc=" + +[[manifest.projects]] +name = "hal_openisa" +url = "https://github.com/zephyrproject-rtos/hal_openisa" +revision = "eabd530a64d71de91d907bad257cd61aacf607bc" +path = "modules/hal/openisa" +groups = ["hal"] + +[manifest.projects.nix] +hash = "sha256-krI/9sr57ZjerDKb9lQvIOD+q6vfiXqRGqV7cbW9Bqs=" + +[[manifest.projects]] +name = "hal_quicklogic" +url = "https://github.com/zephyrproject-rtos/hal_quicklogic" +revision = "b3a66fe6d04d87fd1533a5c8de51d0599fcd08d0" +path = "modules/hal/quicklogic" +groups = ["hal"] + +[manifest.projects.nix] +hash = "sha256-XpPROaiZN0KRxQCtEOYaXSEBtxAo+atnH1ytOMXpYUI=" + +[[manifest.projects]] +name = "hal_renesas" +url = "https://github.com/zephyrproject-rtos/hal_renesas" +revision = "0b1f2fdb99d6386f125a8dba72083e3c56aecc2b" +path = "modules/hal/renesas" +groups = ["hal"] + +[manifest.projects.nix] +hash = "sha256-BPvUTX3FhSz8yKOMDjOLGqGisKV69AMwlYxwJ622anY=" + +[[manifest.projects]] +name = "hal_rpi_pico" +url = "https://github.com/zephyrproject-rtos/hal_rpi_pico" +revision = "fba7162cc7bee06d0149622bbcaac4e41062d368" +path = "modules/hal/rpi_pico" +groups = ["hal"] + +[manifest.projects.nix] +hash = "sha256-qv0GPlBQ0np8a0obi5pt6LyxKiTIqWEhoG7vI4jLAwc=" + +[[manifest.projects]] +name = "hal_silabs" +url = "https://github.com/zephyrproject-rtos/hal_silabs" +revision = "b11b29167f3f9a0fd0c34a8eeeb36b0c1d218917" +path = "modules/hal/silabs" +groups = ["hal"] + +[manifest.projects.nix] +hash = "sha256-AqYwRoKW1FJFJYc/J3KK84lQpy6LxFOPUXDXrDIYUZs=" + +[[manifest.projects]] +name = "hal_st" +url = "https://github.com/zephyrproject-rtos/hal_st" +revision = "0643d20ae85b32c658ad11036f7c964a860ddefe" +path = "modules/hal/st" +groups = ["hal"] + +[manifest.projects.nix] +hash = "sha256-b/uaXxebfasYCS1rEnEqEoHwH7CYywg6HxaDntJ9mKg=" + +[[manifest.projects]] +name = "hal_stm32" +url = "https://github.com/zephyrproject-rtos/hal_stm32" +revision = "60c9634f61c697e1c310ec648d33529712806069" +path = "modules/hal/stm32" +groups = ["hal"] + +[manifest.projects.nix] +hash = "sha256-uvkOKfVMfYql0YaGLOJQQboqiXKEDo19lV6x23XyUYE=" + +[[manifest.projects]] +name = "hal_telink" +url = "https://github.com/zephyrproject-rtos/hal_telink" +revision = "38573af589173259801ae6c2b34b7d4c9e626746" +path = "modules/hal/telink" +groups = ["hal"] + +[manifest.projects.nix] +hash = "sha256-H50e/YCXk1oa7MSyW1czZ09S4GOhp7e2BDIKyr/Fn5o=" + +[[manifest.projects]] +name = "hal_ti" +url = "https://github.com/zephyrproject-rtos/hal_ti" +revision = "b85f86e51fc4d47c4c383d320d64d52d4d371ae4" +path = "modules/hal/ti" +groups = ["hal"] + +[manifest.projects.nix] +hash = "sha256-NaXcMhV3GG+BexuQx3S4vtEchLgKasMlo1NJ+V56JBk=" + +[[manifest.projects]] +name = "hal_xtensa" +url = "https://github.com/zephyrproject-rtos/hal_xtensa" +revision = "08325d6fb7190a105f5382d35e64ed2812c57cf4" +path = "modules/hal/xtensa" +groups = ["hal"] + +[manifest.projects.nix] +hash = "sha256-9vihVhCzVGG+CYrN9pNtBUMM3WfFwrgI8brq0zGILBI=" + +[[manifest.projects]] +name = "libmetal" +url = "https://github.com/zephyrproject-rtos/libmetal" +revision = "243eed541b9c211a2ce8841c788e62ddce84425e" +path = "modules/hal/libmetal" +groups = ["hal"] + +[manifest.projects.nix] +hash = "sha256-wCsYllPeDKx4P5gBGEFDcY4QNbMdwrd+5h5GZ8tEsJM=" + +[[manifest.projects]] +name = "liblc3" +url = "https://github.com/zephyrproject-rtos/liblc3" +revision = "1a5938ebaca4f13fe79ce074f5dee079783aa29f" +path = "modules/lib/liblc3" + +[manifest.projects.nix] +hash = "sha256-nQJgF/cWoCx5TkX4xOaLB9SzvhVXPY29bLh7UwPMWEE=" + +[[manifest.projects]] +name = "littlefs" +url = "https://github.com/zephyrproject-rtos/littlefs" +revision = "408c16a909dd6cf128874a76f21c793798c9e423" +path = "modules/fs/littlefs" +groups = ["fs"] + +[manifest.projects.nix] +hash = "sha256-r0YCwuH5RQill5xtjPUV5NUsKqs3U0k8I2W5knKXVb8=" + +[[manifest.projects]] +name = "loramac-node" +url = "https://github.com/zephyrproject-rtos/loramac-node" +revision = "842413c5fb98707eb5f26e619e8e792453877897" +path = "modules/lib/loramac-node" + +[manifest.projects.nix] +hash = "sha256-5/qUGojHZVNoT7SOsTGNA/pFCuOGrPzibv0MoJdq/rk=" + +[[manifest.projects]] +name = "lvgl" +url = "https://github.com/zephyrproject-rtos/lvgl" +revision = "2b76c641749725ac90c6ac7959ca7718804cf356" +path = "modules/lib/gui/lvgl" + +[manifest.projects.nix] +hash = "sha256-X3DOhGCMFb03eubcc5VcHRPt1RKWzyviaTUh1HXzGDc=" + +[[manifest.projects]] +name = "mbedtls" +url = "https://github.com/zephyrproject-rtos/mbedtls" +revision = "6ec4abdcda78dfc47315af568f93e5ad4398dea0" +path = "modules/crypto/mbedtls" +groups = ["crypto"] + +[manifest.projects.nix] +hash = "sha256-r4CcM/VuG9JJavT+YOn5EEFWTvEDnjPAy6H+UkIeZ6s=" + +[[manifest.projects]] +name = "mcuboot" +url = "https://github.com/zephyrproject-rtos/mcuboot" +revision = "a4eda30f5b0cfd0cf15512be9dcd559239dbfc91" +path = "bootloader/mcuboot" + +[manifest.projects.nix] +hash = "sha256-m9sy2QxHIkXF7vX1FNq+CjOMzchbEeQmcTnaPijpl5A=" + +[[manifest.projects]] +name = "mipi-sys-t" +url = "https://github.com/zephyrproject-rtos/mipi-sys-t" +revision = "a819419603a2dfcb47f7f39092e1bc112e45d1ef" +path = "modules/debug/mipi-sys-t" +groups = ["debug"] + +[manifest.projects.nix] +hash = "sha256-O5BkXoaCj3xxRsaoarDcCSxhovhH0ihvmY0COy6BQK0=" + +[[manifest.projects]] +name = "net-tools" +url = "https://github.com/zephyrproject-rtos/net-tools" +revision = "3a677d355cc7f73e444801a6280d0ccec80a1957" +path = "tools/net-tools" +groups = ["tools"] + +[manifest.projects.nix] +hash = "sha256-YlaszC8BNXCzSGAusiYhEzzRs55gnWykN/3zb0MGA7w=" + +[[manifest.projects]] +name = "open-amp" +url = "https://github.com/zephyrproject-rtos/open-amp" +revision = "da78aea63159771956fe0c9263f2e6985b66e9d5" +path = "modules/lib/open-amp" + +[manifest.projects.nix] +hash = "sha256-7yae0X7zqDPA4CUfGU3LgNBh7qyKGIPLUv6dn/d65Fg=" + +[[manifest.projects]] +name = "openthread" +url = "https://github.com/zephyrproject-rtos/openthread" +revision = "7761b81d23b10b3d5ee21b8504c67535cde10896" +path = "modules/lib/openthread" + +[manifest.projects.nix] +hash = "sha256-/GKaDl/mlBwsuRq0RNnV2vzXRC6pfz1CwHPm9RfyzwU=" + +[[manifest.projects]] +name = "picolibc" +url = "https://github.com/zephyrproject-rtos/picolibc" +revision = "764ef4e401a8f4c6a86ab723533841f072885a5b" +path = "modules/lib/picolibc" + +[manifest.projects.nix] +hash = "sha256-5W/+vorhOP/MD19JYzHJfZTkWMM7sKUQqzTDA/7rxZs=" + +[[manifest.projects]] +name = "segger" +url = "https://github.com/zephyrproject-rtos/segger" +revision = "9d0191285956cef43daf411edc2f1a7788346def" +path = "modules/debug/segger" +groups = ["debug"] + +[manifest.projects.nix] +hash = "sha256-9nt0z674ubxxvIANPMf82Qf7KsOwR3Hg8wYAK5r/i4c=" + +[[manifest.projects]] +name = "tinycrypt" +url = "https://github.com/zephyrproject-rtos/tinycrypt" +revision = "3e9a49d2672ec01435ffbf0d788db6d95ef28de0" +path = "modules/crypto/tinycrypt" +groups = ["crypto"] + +[manifest.projects.nix] +hash = "sha256-5gtZbZNx+D/EUkyYk7rPtcxBZaNs4IFGTP/7IXzCoqU=" + +[[manifest.projects]] +name = "trusted-firmware-m" +url = "https://github.com/zephyrproject-rtos/trusted-firmware-m" +revision = "0b898c9b72171b0a260c0bb64a92ea4713f9e931" +path = "modules/tee/tf-m/trusted-firmware-m" +groups = ["tee"] + +[manifest.projects.nix] +hash = "sha256-oVDl4uE4fPg98HjjQFFl/kNH90w7oulIHCB/84voOYQ=" + +[[manifest.projects]] +name = "trusted-firmware-a" +url = "https://github.com/zephyrproject-rtos/trusted-firmware-a" +revision = "421dc050278287839f5c70019bd6aec617f2bbdb" +path = "modules/tee/tf-a/trusted-firmware-a" +groups = ["tee"] + +[manifest.projects.nix] +hash = "sha256-XsjRUe0Cr5bd+rOzoS+Hquh9k2nKwDKt2+up24aCOgk=" + +[manifest.self] +path = "bridle" +west-commands = "scripts/west-commands.yml"