From ec499f96920556ec6849f7a3f0ca5bf4bd1b1ff4 Mon Sep 17 00:00:00 2001 From: urob <978080+urob@users.noreply.github.com> Date: Wed, 7 Aug 2024 14:42:55 -0400 Subject: [PATCH] Set up dev environment --- .envrc | 1 + .gitignore | 5 ++ Justfile | 28 +++++++++++ flake.lock | 142 +++++++++++++++++++++++++++++++++++++++++++++++++++++ flake.nix | 31 ++++++++++++ 5 files changed, 207 insertions(+) create mode 100644 .envrc create mode 100644 .gitignore create mode 100644 Justfile create mode 100644 flake.lock create mode 100644 flake.nix diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..3550a30 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use flake diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..43e4bdb --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +.direnv +.venv +.west +modules +zmk diff --git a/Justfile b/Justfile new file mode 100644 index 0000000..a3e32f8 --- /dev/null +++ b/Justfile @@ -0,0 +1,28 @@ +default: + @just --list --unsorted + +# build firmware +build: + echo "Building firmware..." + +# clear build cache +clean: + rm -rf build + +# list all build targets +list: + echo "TBD" + +# initialize west +init: + west init -l config + west update + west zephyr-export + +# upgrade west +upgrade: + west update + +# upgrade zephyr +upgrade-zephyr: + nix flake update --flake . diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..f20b4aa --- /dev/null +++ b/flake.lock @@ -0,0 +1,142 @@ +{ + "nodes": { + "mdbook-nixdoc": { + "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": [ + "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": 1720535198, + "narHash": "sha256-zwVvxrdIzralnSbcpghA92tWu2DV2lwv89xZc8MTrbg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "205fd4226592cc83fd4c0885a3e4c9c400efabb5", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "pyproject-nix": { + "inputs": { + "mdbook-nixdoc": "mdbook-nixdoc", + "nix-github-actions": "nix-github-actions", + "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" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs", + "zephyr": "zephyr", + "zephyr-nix": "zephyr-nix" + } + }, + "zephyr": { + "flake": false, + "locked": { + "lastModified": 1697797249, + "narHash": "sha256-72QFsKOWkF6BiP4XgZAXXSBcN4t6yvhAeXCpgCYrhe8=", + "owner": "zephyrproject-rtos", + "repo": "zephyr", + "rev": "a6eef0ba3755f2530c5ce93524e5ac4f5be30194", + "type": "github" + }, + "original": { + "owner": "zephyrproject-rtos", + "ref": "v3.5.0", + "repo": "zephyr", + "type": "github" + } + }, + "zephyr-nix": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "pyproject-nix": "pyproject-nix", + "zephyr": [ + "zephyr" + ] + }, + "locked": { + "lastModified": 1720132542, + "narHash": "sha256-5o5qhBec7GABj/x3LPOVQn8W9iyyLTqH+FMLe454HOc=", + "owner": "urob", + "repo": "zephyr-nix", + "rev": "6339867e76405b7e84270b908c2ab6deca5f6d8d", + "type": "github" + }, + "original": { + "owner": "urob", + "repo": "zephyr-nix", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..ec1dced --- /dev/null +++ b/flake.nix @@ -0,0 +1,31 @@ +{ + inputs = { + # Pin to 23.11 to provide python38 dependency for sdk + nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11"; + + # Zephyr version determining which requirements.txt to use to install python dependencies + zephyr.url = "github:zephyrproject-rtos/zephyr/v3.5.0"; + zephyr.flake = false; + + # Zephyr sdk and host tools + zephyr-nix.url = "github:urob/zephyr-nix"; + zephyr-nix.inputs.nixpkgs.follows = "nixpkgs"; + zephyr-nix.inputs.zephyr.follows = "zephyr"; + }; + + outputs = { self, nixpkgs, zephyr-nix, ... }: let + system = "x86_64-linux"; + pkgs = nixpkgs.legacyPackages.${system}; + zephyr = zephyr-nix.packages.${system}; + in { + devShells.${system}.default = pkgs.mkShell { + packages = [ + zephyr.sdkFull + zephyr.pythonEnv + # zephyr.hosttools + pkgs.cmake + pkgs.ninja + ]; + }; + }; +}