From 320b2635fa98754cde6ae5e0422188198245b629 Mon Sep 17 00:00:00 2001 From: Zuckerberg Date: Mon, 4 Sep 2023 16:18:36 -0600 Subject: [PATCH] Package firmware --- README.md | 5 +++++ firmware/default.nix | 20 ++++++++++++++++++++ firmware/platformio.ini | 13 ++++++++----- flake.nix | 2 ++ 4 files changed, 35 insertions(+), 5 deletions(-) create mode 100644 firmware/default.nix diff --git a/README.md b/README.md index 042d41f..236fbb4 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,7 @@ # DynamicFrame +To build go server `nix build .#server` + +To build eink firmware `nix build --relaxed-sandbox .#firmware` + +Eink firmware cannot build in the nix sandbox because platformio require internet access to build \ No newline at end of file diff --git a/firmware/default.nix b/firmware/default.nix new file mode 100644 index 0000000..8c2c6e0 --- /dev/null +++ b/firmware/default.nix @@ -0,0 +1,20 @@ +{ pkgs, ... }: + +pkgs.stdenv.mkDerivation rec { + name = "platformio-project"; + + nativeBuildInputs = [ pkgs.platformio ]; + + src = ./.; + + buildPhase = '' + platformio run + ''; + + installPhase = '' + mkdir -p $out/bin + cp .pio/build/*/firmware.bin $out/bin/ + ''; + + __noChroot = true; +} diff --git a/firmware/platformio.ini b/firmware/platformio.ini index 662e560..b669c68 100644 --- a/firmware/platformio.ini +++ b/firmware/platformio.ini @@ -8,11 +8,14 @@ ; Please visit documentation for the other options and examples ; https://docs.platformio.org/page/projectconf.html -[env:tinypico-color] -platform = espressif32 -board = tinypico -framework = arduino -build_flags = -DEPD7IN3F +[platformio] +lib_dir = lib + +; [env:tinypico-color] +; platform = espressif32 +; board = tinypico +; framework = arduino +; build_flags = -DEPD7IN3F [env:tinypico-16gray] platform = espressif32 diff --git a/flake.nix b/flake.nix index efe16ec..5d41853 100644 --- a/flake.nix +++ b/flake.nix @@ -11,10 +11,12 @@ let pkgs = nixpkgs.legacyPackages.${system}; server = pkgs.callPackage ./server { }; + firmware = pkgs.callPackage ./firmware { }; in { packages = { inherit (server) server smartcrop; + inherit firmware; }; packages.default = server.server; devShell = pkgs.callPackage ./shell.nix { };