From 2e69f19e4de4aac2104d4e78e7e45b1eb74cbdac Mon Sep 17 00:00:00 2001
From: Moritz Wilhelmy <mw@barfooze.de>
Date: Fri, 23 Aug 2019 11:34:43 +0200
Subject: [PATCH] feat(nix): shell.nix which installs dependencies and patched
 openocd

Thanks to adisbladis!
---
 shell.nix | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 60 insertions(+)
 create mode 100644 shell.nix

diff --git a/shell.nix b/shell.nix
new file mode 100644
index 00000000..cdb5f3d5
--- /dev/null
+++ b/shell.nix
@@ -0,0 +1,60 @@
+# This nix expression describes the build and debug environment for the
+# firmware. To use it, first install nix and then invoke the "nix-shell"
+# command to activate the environment. It will install all dependencies for and
+# build and install a patched openocd, before dropping you into a shell where
+# everything required for compiling/debugging the firmware is available.
+
+{ pkgs ? import <nixpkgs> {} }:
+
+let
+  crc16 = { stdenv, buildPythonPackage, fetchPypi }:
+  buildPythonPackage rec {
+    pname = "crc16";
+    version = "0.1.1";
+    src = fetchPypi {
+      inherit pname version;
+      sha256 = "15nkx0pa4lskwin84flpk8fsw3jqg6wic6v3s83syjqg76h6my61";
+      };
+  };
+
+  ocd = pkgs.openocd.overrideAttrs(old: {
+    name = "openocd-cardio";
+
+    src = pkgs.fetchgit {
+      url = "https://git.card10.badge.events.ccc.de/card10/openocd.git";
+      rev = "90d828185cea44b29cffb40f2c8aea19282b9130";
+      sha256 = "092wg19kjapv9s70b23ckd4j5i8ykk3d7mcl4h8cgl2acwcw8myr";
+      fetchSubmodules = true;
+    };
+
+    nativeBuildInputs = old.nativeBuildInputs ++ [
+      pkgs.which
+      pkgs.libtool
+      pkgs.autoconf
+      pkgs.automake
+    ];
+
+    SKIP_SUBMODULE="1";
+
+    preConfigure = ''
+      ./bootstrap
+    '';
+  });
+
+in pkgs.mkShell {
+
+  buildInputs = [
+    pkgs.meson
+    pkgs.ninja
+    pkgs.git
+    pkgs.gcc-arm-embedded
+    pkgs.jq
+    (pkgs.python3.withPackages (ps: [
+      ps.pillow
+      (ps.callPackage crc16 {})
+    ]))
+    ocd
+    pkgs.gcc-arm-embedded
+  ];
+
+}
-- 
GitLab