nixpkgs/pkgs/development/compilers/microscheme/default.nix
Antoine R. Dumont 172d78923b Add microscheme derivation
(A Scheme subset for Atmel microcontrollers.)

Use of the actual git HEAD because the actual tarball compiles but
segfault at runtime.

Upload the BLINK.ms sample on arduino board (/dev/ttyACM0):

```sh
$ sudo ./result/bin/microscheme -m UNO -d /dev/ttyACM0 -auc ~/repo/perso/microscheme/examples/BLINK.ms
Microscheme 0.8, (C) Ryan Suchocki
>> Treeshaker: After 4 rounds: 84 globals purged! 22 bytes will be
reserved.
>> 18 lines compiled OK
>> Assembling...
>> Uploading...

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100%
0.00s

avrdude: Device signature = 0x1e950f
avrdude: reading input file
"/home/tony/repo/perso/microscheme/examples/BLINK.hex"
avrdude: writing flash (2080 bytes):

Writing | ################################################## | 100%
0.35s

avrdude: 2080 bytes of flash written

avrdude: safemode: Fuses OK (E:00, H:00, L:00)

avrdude done.  Thank you.

>> Cleaning Up...
>> Finished.
```
2015-02-16 23:09:48 +01:00

42 lines
1.1 KiB
Nix

{ stdenv, fetchgit, vim, avrdude, avrgcclibc, makeWrapper }:
stdenv.mkDerivation rec {
name = "microscheme-${version}";
version = "2015-02-04";
# externalize url/rev/sha256 to permit easier override
rev = "2f14781034a67adc081a22728fbf47a632f4484e";
sha256 = "15bdlmchzbhxj262r2fj78wm4c4hfrap4kyzv8n5b624svszr0zd";
url = https://github.com/ryansuchocki/microscheme.git;
src = fetchgit {
inherit rev;
inherit sha256;
inherit url;
};
buildInputs = [ makeWrapper vim ];
installPhase = ''
mkdir -p $out/bin && make install PREFIX=$out
mkdir -p $out/share/microscheme/
cp -r examples/ $out/share/microscheme
wrapProgram $out/bin/microscheme \
--prefix PATH : "${avrdude}/bin:${avrgcclibc}/bin"
'';
meta = with stdenv.lib; {
homepage = http://microscheme.org;
description = "A Scheme subset for Atmel microcontrollers";
longDescription = ''
Microscheme is a Scheme subset/variant designed for Atmel
microcontrollers, especially as found on Arduino boards.
'';
license = licenses.mit;
platforms = platforms.linux;
maintainers = with maintainers; [ ardumont ];
};
}