summary refs log tree commit diff
path: root/pkgs/development/arduino/arduino-core/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/arduino/arduino-core/default.nix')
-rw-r--r--pkgs/development/arduino/arduino-core/default.nix53
1 files changed, 29 insertions, 24 deletions
diff --git a/pkgs/development/arduino/arduino-core/default.nix b/pkgs/development/arduino/arduino-core/default.nix
index 1c537edd0b4..529be6e2a56 100644
--- a/pkgs/development/arduino/arduino-core/default.nix
+++ b/pkgs/development/arduino/arduino-core/default.nix
@@ -11,7 +11,8 @@
 , ncurses
 , readline
 , withGui ? false
-, gtk2 ? null
+, gtk3 ? null
+, wrapGAppsHook
 , withTeensyduino ? false
   /* Packages needed for Teensyduino */
 , upx
@@ -22,6 +23,7 @@
 , glib
 , pango
 , gdk-pixbuf
+, gtk2
 , libpng12
 , expat
 , freetype
@@ -29,7 +31,7 @@
 , udev
 }:
 
-assert withGui -> gtk2 != null;
+assert withGui -> gtk3 != null && wrapGAppsHook != null;
 assert withTeensyduino -> withGui;
 let
   externalDownloads = import ./downloads.nix {
@@ -46,7 +48,7 @@ let
   ;
   # abiVersion 6 is default, but we need 5 for `avrdude_bin` executable
   ncurses5 = ncurses.override { abiVersion = "5"; };
-  teensy_libpath = stdenv.lib.makeLibraryPath [
+  teensy_libpath = lib.makeLibraryPath [
     atk
     cairo
     expat
@@ -75,52 +77,55 @@ let
                         else throw "${stdenv.hostPlatform.system} is not supported in teensy";
 
   flavor = (if withTeensyduino then "teensyduino" else "arduino")
-             + stdenv.lib.optionalString (!withGui) "-core";
+             + lib.optionalString (!withGui) "-core";
 in
 stdenv.mkDerivation rec {
-  version = "1.8.12";
+  version = "1.8.13";
   name = "${flavor}-${version}";
 
   src = fetchFromGitHub {
     owner = "arduino";
     repo = "Arduino";
     rev = version;
-    sha256 = "0lxkyvsh55biz2q20ba4qabraind5cpxznl41zfq027vl22j6kd2";
+    sha256 = "0qg3qyj1b7wbaw2rsfly7nf3115h26nskl4ggrn6plhx272ni84p";
   };
 
-  teensyduino_version = "151";
+  teensyduino_version = "153";
   teensyduino_src = fetchurl {
     url = "https://www.pjrc.com/teensy/td_${teensyduino_version}/TeensyduinoInstall.${teensy_architecture}";
     sha256 = {
-      linux64 = "0q8mw9bm2vb5vwa98gwcs6ad164i98hc1qqh2qw029yhwm599pn0";
-      linux32 = "1rq6sx0048ab200jy0cz5vznwxi99avidngj42rjnh7kcfas5c4m";
-      linuxarm = "19j55bq36040rpdpfxcqimda76rkbx137q15bs8nvxj13wrbl4ip";
-      linuxaarch64 = "09k78dycn1vcpcx37c1dak8bgjv8gs34l89n9r9s0c3rqmv3pg4x";
+      linux64 = "02qgsj4h4zrjxkcclx7clsqbqd699kg0dq1xxa9hbj3vfnddjv1f";
+      linux32 = "14xaff8xj176ih8ifdvxsly5xgjjm82dqbn7lqq81a43i0svjjyn";
+      linuxarm = "0xpg9axa6dqyhccm9cpvsv2al7rgwy4gv2l8b2kffvn974dl5759";
+      linuxaarch64 = "1lyn4zy4l5mml3c19fw6i2pk1ypnq6mgjmxmzk9d54wpf6n3j5dk";
     }.${teensy_architecture} or (throw "No arduino binaries for ${teensy_architecture}");
   };
   # Used because teensyduino requires jars be a specific size
   arduino_dist_src = fetchurl {
-    url = "http://downloads.arduino.cc/arduino-${version}-${teensy_architecture}.tar.xz";
+    url = "https://downloads.arduino.cc/arduino-${version}-${teensy_architecture}.tar.xz";
     sha256 =
       {
-        linux64 = "128f34kkxz7ab6ir5mqyr8d1mgxig8f9jygwxy44pdnq2rk6gmh9";
-        linux32 = "11n85lwsn1w4ysfacyw08v85s3f3zvl8j8ac7rld19yxgjslvisi";
-        linuxarm = "1k8yjivaydm6y16mplrjyblgx7l0wjzm3mjxh5saxrjq7drswmxx";
-        linuxaarch64 = "04v2nhyjhahml6nmz23bfb63c0an4a7zxgcgxqqq442i8vd304wa";
+        linux64 = "1bdlk51dqiyg5pw23hs8rfv8nrjqy0jqfl89h1466ahahpnd080v";
+        linux32 = "0mgsw9wpwv1pgs2jslzflh7zf4ggqjgcd55hmdzrj0dvgkyw4cr2";
+        linuxarm = "08n4lpak3i7yfyi0085j4nq14gb2n7zx85wl9drp8gaavxnfbp5f";
+        linuxaarch64 = "0m4nhykzknm2hdpz1fhr2hbpncry53kvzs9y5lgj7rx3sy6ygbh7";
       }.${teensy_architecture} or (throw "No arduino binaries for ${teensy_architecture}");
   };
 
 
+  # the glib setup hook will populate GSETTINGS_SCHEMAS_PATH,
+  # wrapGAppHooks (among other things) adds it to XDG_DATA_DIRS
+  # so 'save as...' works:
+  nativeBuildInputs = [ glib wrapGAppsHook unzip ];
   buildInputs = [
     jdk
     ant
     libusb-compat-0_1
     libusb1
-    unzip
     zlib
     ncurses5
     readline
-  ] ++ stdenv.lib.optionals withTeensyduino [ upx ];
+  ] ++ lib.optionals withTeensyduino [ upx ];
   downloadSrcList = builtins.attrValues externalDownloads;
   downloadDstList = builtins.attrNames externalDownloads;
 
@@ -149,7 +154,7 @@ stdenv.mkDerivation rec {
 
   # This will be patched into `arduino` wrapper script
   # Java loads gtk dynamically, so we need to provide it using LD_LIBRARY_PATH
-  dynamicLibraryPath = lib.makeLibraryPath [ gtk2 ];
+  dynamicLibraryPath = lib.makeLibraryPath [ gtk3 ];
   javaPath = lib.makeBinPath [ jdk ];
 
   # Everything else will be patched into rpath
@@ -160,7 +165,7 @@ stdenv.mkDerivation rec {
     cp -r ./build/linux/work/* "$out/share/arduino/"
     echo -n ${version} > $out/share/arduino/lib/version.txt
 
-    ${stdenv.lib.optionalString withGui ''
+    ${lib.optionalString withGui ''
       mkdir -p $out/bin
       substituteInPlace $out/share/arduino/arduino \
         --replace "JAVA=java" "JAVA=$javaPath/java" \
@@ -175,7 +180,7 @@ stdenv.mkDerivation rec {
         --replace '<ICON_NAME>' "$out/share/arduino/icons/128x128/apps/arduino.png"
     ''}
 
-    ${stdenv.lib.optionalString withTeensyduino ''
+    ${lib.optionalString withTeensyduino ''
       # Back up the original jars
       mv $out/share/arduino/lib/arduino-core.jar $out/share/arduino/lib/arduino-core.jar.bak
       mv $out/share/arduino/lib/pde.jar $out/share/arduino/lib/pde.jar.bak
@@ -230,16 +235,16 @@ stdenv.mkDerivation rec {
     mkdir $out/lib/
     ln -s ${lib.makeLibraryPath [ ncurses5 ]}/libtinfo.so.5 $out/lib/libtinfo.so.5
 
-    ${stdenv.lib.optionalString withTeensyduino ''
+    ${lib.optionalString withTeensyduino ''
       # Patch the Teensy loader binary
       patchelf --debug \
           --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
           --set-rpath "${teensy_libpath}" \
-          $out/share/arduino/hardware/tools/teensy
+          $out/share/arduino/hardware/tools/teensy{,_ports,_reboot,_restart,_serialmon}
     ''}
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Open-source electronics prototyping platform";
     homepage = "http://arduino.cc/";
     license = if withTeensyduino then licenses.unfreeRedistributable else licenses.gpl2;