summaryrefslogtreecommitdiff
path: root/ulisp.nix
blob: b422c58ec88c654f3d64e27817936276918ef782 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
{ pkgs, ... }:

# hacky usage of arduino-cli to preprocess ulisp "ino" source into compilable C++ code
pkgs.stdenv.mkDerivation rec {
  name = "ulisp-arm.cpp";

  src = pkgs.fetchFromGitHub {
    owner = "technoblogy";
    repo = "ulisp-arm";
    rev = "a25fff3ef1072bdc2733d8064fcf0738579ab7ed";
    sha256 = "p6H9To9vccHrP46Cv5m+cAFDVPXDCORUWcqOz18c3kg=";
  };

  outputHashMode = "flat";
  outputHashAlgo = "sha256";
  outputHash = "mutVLBFSpTXgUzu594zZ3akR/Z7e9n5SytU6WoQ6rKA=";

  buildInputs = with pkgs; [
    cacert
    arduino-cli
  ];

  buildPhase = ''
    export HOME=/tmp/arduino
    arduino-cli core install arduino:samd
    mv ulisp-arm.ino source.ino
    arduino-cli compile --fqbn arduino:samd:arduino_zero_native --preprocess > ulisp-arm.cpp
    echo 'extern "C" int main(void) { setup(); while(true) { loop(); } }' >> ulisp-arm.cpp
  '';

  installPhase = ''
    cp ulisp-arm.cpp $out
  '';
}