summary refs log tree commit diff
path: root/pkgs/development/arduino
diff options
context:
space:
mode:
authorBjørn Forsman <bjorn.forsman@gmail.com>2015-02-01 22:52:01 +0100
committerBjørn Forsman <bjorn.forsman@gmail.com>2015-02-04 07:22:39 +0100
commitca982158bf33cef9398f86723d862da0603466da (patch)
tree83b0b742c91bef5da0af9c4ebd28a8399dda29e5 /pkgs/development/arduino
parent83e3f38593743e9950885fbc568b458e6425a8fd (diff)
downloadnixpkgs-ca982158bf33cef9398f86723d862da0603466da.tar
nixpkgs-ca982158bf33cef9398f86723d862da0603466da.tar.gz
nixpkgs-ca982158bf33cef9398f86723d862da0603466da.tar.bz2
nixpkgs-ca982158bf33cef9398f86723d862da0603466da.tar.lz
nixpkgs-ca982158bf33cef9398f86723d862da0603466da.tar.xz
nixpkgs-ca982158bf33cef9398f86723d862da0603466da.tar.zst
nixpkgs-ca982158bf33cef9398f86723d862da0603466da.zip
arduino: new package
This commit adds the graphical Arduino IDE, built from the arduino-core
expression.

Also:
  - Add libusb to RPATH for avrdude. Without this, avrdude is broken.
    Possible TODO: replace bundled avrdude with the one from nixpkgs.
  - Use "cp -r ./build/linux/work/*", so example sketeches, the HTML
    reference documentation and the 'arduino' shell script that starts the
    IDE gets included.
  - Make meta.description slightly more generic, to cover both GUI/core
    variants.
Diffstat (limited to 'pkgs/development/arduino')
-rw-r--r--pkgs/development/arduino/arduino-core/default.nix25
1 files changed, 18 insertions, 7 deletions
diff --git a/pkgs/development/arduino/arduino-core/default.nix b/pkgs/development/arduino/arduino-core/default.nix
index a5b8980e32c..7addf79a39c 100644
--- a/pkgs/development/arduino/arduino-core/default.nix
+++ b/pkgs/development/arduino/arduino-core/default.nix
@@ -1,9 +1,13 @@
-{ stdenv, fetchFromGitHub, jdk, jre, ant, coreutils, gnugrep, file }:
+{ stdenv, fetchFromGitHub, jdk, jre, ant, coreutils, gnugrep, file, libusb
+, withGui ? false, gtk2 ? null
+}:
+
+assert withGui -> gtk2 != null;
 
 stdenv.mkDerivation rec {
 
   version = "1.0.6";
-  name = "arduino-core";
+  name = "arduino${stdenv.lib.optionalString (withGui == false) "-core"}";
 
   src = fetchFromGitHub {
     owner = "arduino";
@@ -22,12 +26,16 @@ stdenv.mkDerivation rec {
 
   installPhase = ''
     mkdir -p $out/share/arduino
-    cp -r ./build/linux/work/hardware/ $out/share/arduino
-    cp -r ./build/linux/work/libraries/ $out/share/arduino
-    cp -r ./build/linux/work/tools/ $out/share/arduino
-    cp -r ./build/linux/work/lib/ $out/share/arduino
+    cp -r ./build/linux/work/* "$out/share/arduino/"
     echo ${version} > $out/share/arduino/lib/version.txt
 
+    ${stdenv.lib.optionalString withGui ''
+      mkdir -p "$out/bin"
+      sed -i -e "s|^java|${jdk}/bin/java|" "$out/share/arduino/arduino"
+      sed -i -e "s|^LD_LIBRARY_PATH=|LD_LIBRARY_PATH=${gtk2}/lib:|" "$out/share/arduino/arduino"
+      ln -sr "$out/share/arduino/arduino" "$out/bin/arduino"
+    ''}
+
     # Fixup "/lib64/ld-linux-x86-64.so.2" like references in ELF executables.
     echo "running patchelf on prebuilt binaries:"
     find "$out" | while read filepath; do
@@ -41,10 +49,13 @@ stdenv.mkDerivation rec {
             test $? -eq 0 || { echo "patchelf failed to process $filepath"; exit 1; }
         fi
     done
+
+    patchelf --set-rpath ${stdenv.lib.makeSearchPath "lib" [ stdenv.glibc libusb ]} \
+        "$out/share/arduino/hardware/tools/avrdude"
   '';
 
   meta = {
-    description = "Libraries for the open-source electronics prototyping platform";
+    description = "Open-source electronics prototyping platform";
     homepage = http://arduino.cc/;
     license = stdenv.lib.licenses.gpl2;
     maintainers = [ stdenv.lib.maintainers.antono stdenv.lib.maintainers.robberer ];