From 87dd88735f95eb82fd42fa708502dd3d9eb2b5f2 Mon Sep 17 00:00:00 2001 From: Chris Andreae Date: Sat, 18 Sep 2021 20:38:30 +0900 Subject: [PATCH] Add nix environment for dependencies --- nix/cmake-shell.nix | 17 +++++++++++++ nix/west-shell.nix | 62 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 nix/cmake-shell.nix create mode 100644 nix/west-shell.nix diff --git a/nix/cmake-shell.nix b/nix/cmake-shell.nix new file mode 100644 index 00000000..14754d41 --- /dev/null +++ b/nix/cmake-shell.nix @@ -0,0 +1,17 @@ +{ pkgs ? (import {})}: + +let + zmkPkgs = (import ../default.nix { inherit pkgs; }); + inherit (zmkPkgs) zmk zephyr; + + zmkCmake = pkgs.writeShellScriptBin "zmk-cmake" '' + export PATH=${pkgs.lib.makeBinPath zmk.nativeBuildInputs}:$PATH + export CMAKE_PREFIX_PATH=${zephyr} + + cmake -G Ninja ${pkgs.lib.escapeShellArgs zmk.cmakeFlags} "-DUSER_CACHE_DIR=/tmp/.cache" "$@" + ''; +in +pkgs.stdenv.mkDerivation { + name = "zmk-cmake-shell"; + nativeBuildInputs = zmk.nativeBuildInputs ++ [zmkCmake]; +} diff --git a/nix/west-shell.nix b/nix/west-shell.nix new file mode 100644 index 00000000..3ecfe764 --- /dev/null +++ b/nix/west-shell.nix @@ -0,0 +1,62 @@ +{ pkgs ? (import {})}: + +let + # need a newer west than nixpkgs packages + pythonOverrides = self: super: { + west = super.west.overridePythonAttrs(old: rec { + inherit (old) pname; + version = "0.9.0"; + src = super.fetchPypi { + inherit pname version; + sha256 = "1asgw3v3k77lvh4i1c3s0gncy2dn658py6256bzpjp1k35gs8mbg"; + }; + }); + }; + + python = pkgs.python3.override { + packageOverrides = pythonOverrides; + }; + + # from zephyr/scripts/requirements-base.txt + pythonDependencies = ps: with ps; [ + pyelftools + pyyaml + canopen + packaging + progress + anytree + intelhex + west + ]; +in +with pkgs; +# requires multiStdenv to build 32-bit test binaries +multiStdenv.mkDerivation { + name = "zmk-shell"; + + buildInputs = [ + # ZMK dependencies + gitFull + wget + autoconf + automake + bzip2 + ccache + dtc # devicetree compiler + dfu-util + gcc + libtool + ninja + cmake + xz + (python.withPackages(pythonDependencies)) + + # ARM toolchain + gcc-arm-embedded + ]; + + ZEPHYR_TOOLCHAIN_VARIANT = "gnuarmemb"; + GNUARMEMB_TOOLCHAIN_PATH = gcc-arm-embedded; + + shellHook = "if [ ! -d \"zephyr\" ]; then west init -l app/ ; west update; west zephyr-export; fi; source zephyr/zephyr-env.sh"; +}