let pkgs = import (fetchTarball { url = "https://github.com/NixOS/nixpkgs/archive/20.03.tar.gz"; sha256 = "0182ys095dfx02vl2a20j1hz92dx3mfgz2a6fhn31bqlp1wa8hlq"; }) {}; pyPackages = (python-packages: with python-packages; ([ solo-python pytest ] ++ (with builtins; map (d: getAttr d python-packages) (filter (d: stringLength d > 0) (pkgs.lib.splitString "\n" (builtins.readFile ./tools/requirements.txt)))))); python-with-my-packages = pkgs.python3.withPackages pyPackages; src = ./.; in with pkgs; stdenv.mkDerivation { name = "solo"; outputs = [ "out" ]; src = with lib; builtins.filterSource (path: type: !(hasSuffix path "hex" || hasSuffix path "sha256" || baseNameOf path == "result")) src; buildInputs = [ gnumake gcc gcc-arm-embedded-8 git python-with-my-packages ]; phases = [ "unpackPhase" "configurePhase" "buildPhase" "installPhase" ]; installPhase = '' mkdir -p $out/firmware $out cd targets/stm32l432 make cbor make build-hacker cp *.hex *.sha256 *.elf cubeconfig_stm32l442.ioc $out/firmware/ ''; keepDebugInfo = true; }