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