From 5d0744d00b3582b25269c3166fc89951343ba9ba Mon Sep 17 00:00:00 2001
From: Astro <astro@spaceboyz.net>
Date: Tue, 11 Jun 2019 20:55:04 +0200
Subject: [PATCH] default.nix

---
 default.nix          | 17 +++++++++++++++++
 nix/firmware.nix     | 22 ++++++++++++++++++++++
 nix/python-crc16.nix | 10 ++++++++++
 shell.nix            |  6 ++++++
 4 files changed, 55 insertions(+)
 create mode 100644 default.nix
 create mode 100644 nix/firmware.nix
 create mode 100644 nix/python-crc16.nix
 create mode 100644 shell.nix

diff --git a/default.nix b/default.nix
new file mode 100644
index 00000000..b7024e3b
--- /dev/null
+++ b/default.nix
@@ -0,0 +1,17 @@
+{ pkgs ? import <nixpkgs> {},
+}:
+with pkgs;
+let
+  firmware = subdir:
+    callPackage ./nix/firmware.nix { inherit subdir; };
+in
+{
+  ble = firmware "ble";
+  bmatest = firmware "bmatest";
+  bmetest = firmware "bmetest";
+  ecgtest = firmware "ecgtest";
+  Hello_World = firmware "Hello_World";
+  Hello_World_FreeRTOS = firmware "Hello_World_FreeRTOS";
+  imutest = firmware "imutest";
+  ips = firmware "ips";
+}
diff --git a/nix/firmware.nix b/nix/firmware.nix
new file mode 100644
index 00000000..2e0f2cff
--- /dev/null
+++ b/nix/firmware.nix
@@ -0,0 +1,22 @@
+{ pkgsCross, python3, callPackage, subdir }:
+
+let
+  crc16 = callPackage ./python-crc16.nix {};
+in
+pkgsCross.arm-embedded.stdenv.mkDerivation {
+  name = "firmware-${subdir}";
+  src = ./..;
+  buildInputs = [ crc16 ];
+  hardeningDisable= [ "all" ];
+  buildPhase = ''
+    cd ${subdir}
+    make clean
+    make -j ''$NIX_BUILD_CORES APP=1
+    make -j ''$NIX_BUILD_CORES build/max32665.bin
+    ${python3}/bin/python ../bootloader/crc_patch.py build/max32665.bin
+  '';
+  installPhase = ''
+    mkdir -p $out/lib
+    cp build/max32665.bin $out/lib/card10.bin
+  '';
+}
diff --git a/nix/python-crc16.nix b/nix/python-crc16.nix
new file mode 100644
index 00000000..1c1a0170
--- /dev/null
+++ b/nix/python-crc16.nix
@@ -0,0 +1,10 @@
+{ python3Packages }:
+
+python3Packages.buildPythonPackage rec {
+  pname = "crc16";
+  version = "0.1.1";
+  src = python3Packages.fetchPypi {
+    inherit pname version;
+    sha256 = "15nkx0pa4lskwin84flpk8fsw3jqg6wic6v3s83syjqg76h6my61";
+  };
+}
diff --git a/shell.nix b/shell.nix
new file mode 100644
index 00000000..ee89290b
--- /dev/null
+++ b/shell.nix
@@ -0,0 +1,6 @@
+with import <nixpkgs> {};
+pkgsCross.arm-embedded.stdenv.mkDerivation {
+  name = "env";
+  buildInputs = [ bashInteractive ];
+  hardeningDisable= [ "all" ];
+}
-- 
GitLab