35 lines
1 KiB
Nix
35 lines
1 KiB
Nix
{ lib, mkShell, zephyr, cmake, ninja, gnumake, python3
|
|
, toolchains ? with zephyr.toolchains; [ arm-zephyr-eabi ], enableWest ? false
|
|
, zephyrSrc ? zephyr.src, modules ? [ ], extraPackages ? [ ], extraAttrs ? { }
|
|
}:
|
|
let zephyr-sdk = zephyr.sdk.override { inherit toolchains; };
|
|
in mkShell ({
|
|
packages = [ cmake ninja gnumake python3 ] ++ (with python3.pkgs;
|
|
[
|
|
# requirements-base.txt
|
|
pyelftools
|
|
pyyaml
|
|
pykwalify
|
|
canopen
|
|
packaging
|
|
progress
|
|
psutil
|
|
pylink-square
|
|
pyserial
|
|
requests
|
|
anytree
|
|
intelhex
|
|
] ++ lib.optional enableWest python3.pkgs.west ++ extraPackages);
|
|
|
|
ZEPHYR_TOOLCHAIN_VARIANT = "zephyr";
|
|
ZEPHYR_SDK_INSTALL_DIR = "${zephyr-sdk}";
|
|
} // lib.optionalAttrs (zephyrSrc != null) {
|
|
ZEPHYR_BASE = "${zephyrSrc}";
|
|
shellHook = ''
|
|
PATH="${zephyrSrc}/scripts:$PATH"
|
|
'';
|
|
} // lib.optionalAttrs (modules != [ ]) {
|
|
ZEPHYR_MODULES =
|
|
lib.concatStringsSep ";" (map (pkg: pkg.passthru.modulePath) modules);
|
|
} // extraAttrs)
|