summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--lib/maintainers.nix1
-rw-r--r--nixos/modules/profiles/base.nix1
-rw-r--r--nixos/modules/programs/bash/bash.nix2
-rw-r--r--nixos/modules/system/boot/coredump.nix27
-rw-r--r--pkgs/applications/graphics/phototonic/default.nix6
-rw-r--r--pkgs/applications/networking/browsers/firefox/default.nix6
-rw-r--r--pkgs/applications/science/robotics/qgroundcontrol/0001-fix-gcc-cmath-namespace-issues.patch140
-rw-r--r--pkgs/applications/science/robotics/qgroundcontrol/default.nix98
-rw-r--r--pkgs/development/haskell-modules/configuration-hackage2nix.yaml4
-rw-r--r--pkgs/development/haskell-modules/hackage-packages.nix3
-rw-r--r--pkgs/development/libraries/netcdf-fortran/default.nix20
-rwxr-xr-xpkgs/development/lisp-modules/clwrapper/cl-wrapper.sh3
-rwxr-xr-xpkgs/development/lisp-modules/clwrapper/common-lisp.sh2
-rw-r--r--pkgs/development/lisp-modules/clwrapper/default.nix2
-rw-r--r--pkgs/development/lisp-modules/lisp-packages.nix27
-rw-r--r--pkgs/development/lisp-modules/quicklisp.sh85
-rw-r--r--pkgs/development/tools/analysis/checkstyle/default.nix4
-rw-r--r--pkgs/shells/oh-my-zsh/default.nix6
-rw-r--r--pkgs/tools/misc/cpuminer/default.nix4
-rw-r--r--pkgs/top-level/all-packages.nix4
-rw-r--r--pkgs/top-level/python-packages.nix2
21 files changed, 417 insertions, 30 deletions
diff --git a/lib/maintainers.nix b/lib/maintainers.nix
index 9a4b8680a843..12c8c2369b4e 100644
--- a/lib/maintainers.nix
+++ b/lib/maintainers.nix
@@ -279,6 +279,7 @@
   psibi = "Sibi <sibi@psibi.in>";
   pSub = "Pascal Wittmann <mail@pascal-wittmann.de>";
   puffnfresh = "Brian McKenna <brian@brianmckenna.org>";
+  pxc = "Patrick Callahan <patrick.callahan@latitudeengineering.com>";
   qknight = "Joachim Schiele <js@lastlog.de>";
   ragge = "Ragnar Dahlen <r.dahlen@gmail.com>";
   raskin = "Michael Raskin <7c6f434c@mail.ru>";
diff --git a/nixos/modules/profiles/base.nix b/nixos/modules/profiles/base.nix
index 09183ee18092..b8057cadce25 100644
--- a/nixos/modules/profiles/base.nix
+++ b/nixos/modules/profiles/base.nix
@@ -17,7 +17,6 @@
     pkgs.ddrescue
     pkgs.ccrypt
     pkgs.cryptsetup # needed for dm-crypt volumes
-    pkgs.which # 88K size
 
     # Some networking tools.
     pkgs.fuse
diff --git a/nixos/modules/programs/bash/bash.nix b/nixos/modules/programs/bash/bash.nix
index e4e264ec0036..1c3c07a1c210 100644
--- a/nixos/modules/programs/bash/bash.nix
+++ b/nixos/modules/programs/bash/bash.nix
@@ -56,7 +56,7 @@ in
       */
 
       shellAliases = mkOption {
-        default = config.environment.shellAliases;
+        default = config.environment.shellAliases // { which = "type -P"; };
         description = ''
           Set of aliases for bash shell. See <option>environment.shellAliases</option>
           for an option format description.
diff --git a/nixos/modules/system/boot/coredump.nix b/nixos/modules/system/boot/coredump.nix
index 25b11ed9c8a9..3d80da9e4571 100644
--- a/nixos/modules/system/boot/coredump.nix
+++ b/nixos/modules/system/boot/coredump.nix
@@ -33,19 +33,24 @@ with lib;
 
   };
 
-  config = mkIf config.systemd.coredump.enable {
+  config = mkMerge [
+    (mkIf config.systemd.coredump.enable {
 
-    environment.etc."systemd/coredump.conf".text =
-      ''
-        [Coredump]
-        ${config.systemd.coredump.extraConfig}
-      '';
+      environment.etc."systemd/coredump.conf".text =
+        ''
+          [Coredump]
+          ${config.systemd.coredump.extraConfig}
+        '';
 
-    # Have the kernel pass core dumps to systemd's coredump helper binary.
-    # From systemd's 50-coredump.conf file. See:
-    # <https://github.com/systemd/systemd/blob/v218/sysctl.d/50-coredump.conf.in>
-    boot.kernel.sysctl."kernel.core_pattern" = "|${pkgs.systemd}/lib/systemd/systemd-coredump %p %u %g %s %t %e";
+      # Have the kernel pass core dumps to systemd's coredump helper binary.
+      # From systemd's 50-coredump.conf file. See:
+      # <https://github.com/systemd/systemd/blob/v218/sysctl.d/50-coredump.conf.in>
+      boot.kernel.sysctl."kernel.core_pattern" = "|${pkgs.systemd}/lib/systemd/systemd-coredump %p %u %g %s %t %e";
+    })
 
-  };
+    (mkIf (!config.systemd.coredump.enable) {
+      boot.kernel.sysctl."kernel.core_pattern" = mkDefault "core";
+    })
+  ];
 
 }
diff --git a/pkgs/applications/graphics/phototonic/default.nix b/pkgs/applications/graphics/phototonic/default.nix
index 6803b969b4b5..a26346add7ff 100644
--- a/pkgs/applications/graphics/phototonic/default.nix
+++ b/pkgs/applications/graphics/phototonic/default.nix
@@ -2,12 +2,14 @@
 
 stdenv.mkDerivation rec {
   name = "phototonic-${version}";
-  version = "1.7";
+  version = "1.7.1";
 
   src = fetchFromGitHub {
     repo = "phototonic";
     owner = "oferkv";
-    rev = "v${version}";
+    # There is currently no tag for 1.7.1 see
+    # https://github.com/oferkv/phototonic/issues/214
+    rev = "c37070e4a068570d34ece8de1e48aa0882c80c5b";
     sha256 = "1agd3bsrpljd019qrjvlbim5l0bhpx53dhpc0gvyn0wmcdzn92gj";
   };
 
diff --git a/pkgs/applications/networking/browsers/firefox/default.nix b/pkgs/applications/networking/browsers/firefox/default.nix
index 9089af711b78..41f8cc155a8e 100644
--- a/pkgs/applications/networking/browsers/firefox/default.nix
+++ b/pkgs/applications/networking/browsers/firefox/default.nix
@@ -81,13 +81,9 @@ common = { pname, version, sha256 }: stdenv.mkDerivation rec {
 
   preConfigure =
     ''
+      configureScript="$(realpath ./configure)"
       mkdir ../objdir
       cd ../objdir
-      if [ -e ../${pname}-${version} ]; then
-        configureScript=../${pname}-${version}/configure
-      else
-        configureScript=../mozilla-*/configure
-      fi
     '';
 
   preInstall =
diff --git a/pkgs/applications/science/robotics/qgroundcontrol/0001-fix-gcc-cmath-namespace-issues.patch b/pkgs/applications/science/robotics/qgroundcontrol/0001-fix-gcc-cmath-namespace-issues.patch
new file mode 100644
index 000000000000..e6c9ca38a989
--- /dev/null
+++ b/pkgs/applications/science/robotics/qgroundcontrol/0001-fix-gcc-cmath-namespace-issues.patch
@@ -0,0 +1,140 @@
+From fffc383c10c7c194e427d78c83802c3b910fa1c2 Mon Sep 17 00:00:00 2001
+From: Patrick Callahan <pxcallahan@gmail.com>
+Date: Thu, 24 Mar 2016 18:17:57 -0700
+Subject: [PATCH] fix gcc cmath namespace issues
+
+---
+ src/Vehicle/Vehicle.cc        | 6 +++---
+ src/comm/QGCFlightGearLink.cc | 4 ++--
+ src/comm/QGCJSBSimLink.cc     | 4 ++--
+ src/uas/UAS.cc                | 8 ++++----
+ src/ui/QGCDataPlot2D.cc       | 4 ++--
+ 5 files changed, 13 insertions(+), 13 deletions(-)
+
+diff --git a/src/Vehicle/Vehicle.cc b/src/Vehicle/Vehicle.cc
+index a0d3605..205b1de 100644
+--- a/src/Vehicle/Vehicle.cc
++++ b/src/Vehicle/Vehicle.cc
+@@ -638,17 +638,17 @@ void Vehicle::setLongitude(double longitude){
+ 
+ void Vehicle::_updateAttitude(UASInterface*, double roll, double pitch, double yaw, quint64)
+ {
+-    if (isinf(roll)) {
++    if (std::isinf(roll)) {
+         _rollFact.setRawValue(0);
+     } else {
+         _rollFact.setRawValue(roll * (180.0 / M_PI));
+     }
+-    if (isinf(pitch)) {
++    if (std::isinf(pitch)) {
+         _pitchFact.setRawValue(0);
+     } else {
+         _pitchFact.setRawValue(pitch * (180.0 / M_PI));
+     }
+-    if (isinf(yaw)) {
++    if (std::isinf(yaw)) {
+         _headingFact.setRawValue(0);
+     } else {
+         yaw = yaw * (180.0 / M_PI);
+diff --git a/src/comm/QGCFlightGearLink.cc b/src/comm/QGCFlightGearLink.cc
+index 2a520fb..886aecf 100644
+--- a/src/comm/QGCFlightGearLink.cc
++++ b/src/comm/QGCFlightGearLink.cc
+@@ -230,7 +230,7 @@ void QGCFlightGearLink::updateControls(quint64 time, float rollAilerons, float p
+     Q_UNUSED(systemMode);
+     Q_UNUSED(navMode);
+ 
+-    if(!isnan(rollAilerons) && !isnan(pitchElevator) && !isnan(yawRudder) && !isnan(throttle))
++    if(!std::isnan(rollAilerons) && !std::isnan(pitchElevator) && !std::isnan(yawRudder) && !std::isnan(throttle))
+     {
+         QString state("%1\t%2\t%3\t%4\t%5\n");
+         state = state.arg(rollAilerons).arg(pitchElevator).arg(yawRudder).arg(true).arg(throttle);
+@@ -240,7 +240,7 @@ void QGCFlightGearLink::updateControls(quint64 time, float rollAilerons, float p
+     }
+     else
+     {
+-        qDebug() << "HIL: Got NaN values from the hardware: isnan output: roll: " << isnan(rollAilerons) << ", pitch: " << isnan(pitchElevator) << ", yaw: " << isnan(yawRudder) << ", throttle: " << isnan(throttle);
++        qDebug() << "HIL: Got NaN values from the hardware: std::isnan output: roll: " << std::isnan(rollAilerons) << ", pitch: " << std::isnan(pitchElevator) << ", yaw: " << std::isnan(yawRudder) << ", throttle: " << std::isnan(throttle);
+     }
+ }
+ 
+diff --git a/src/comm/QGCJSBSimLink.cc b/src/comm/QGCJSBSimLink.cc
+index 1210621..89db371 100644
+--- a/src/comm/QGCJSBSimLink.cc
++++ b/src/comm/QGCJSBSimLink.cc
+@@ -242,7 +242,7 @@ void QGCJSBSimLink::updateControls(quint64 time, float rollAilerons, float pitch
+     Q_UNUSED(systemMode);
+     Q_UNUSED(navMode);
+ 
+-    if(!isnan(rollAilerons) && !isnan(pitchElevator) && !isnan(yawRudder) && !isnan(throttle))
++    if(!std::isnan(rollAilerons) && !std::isnan(pitchElevator) && !std::isnan(yawRudder) && !std::isnan(throttle))
+     {
+         QString state("%1\t%2\t%3\t%4\t%5\n");
+         state = state.arg(rollAilerons).arg(pitchElevator).arg(yawRudder).arg(true).arg(throttle);
+@@ -250,7 +250,7 @@ void QGCJSBSimLink::updateControls(quint64 time, float rollAilerons, float pitch
+     }
+     else
+     {
+-        qDebug() << "HIL: Got NaN values from the hardware: isnan output: roll: " << isnan(rollAilerons) << ", pitch: " << isnan(pitchElevator) << ", yaw: " << isnan(yawRudder) << ", throttle: " << isnan(throttle);
++        qDebug() << "HIL: Got NaN values from the hardware: isnan output: roll: " << std::isnan(rollAilerons) << ", pitch: " << std::isnan(pitchElevator) << ", yaw: " << std::isnan(yawRudder) << ", throttle: " << std::isnan(throttle);
+     }
+     //qDebug() << "Updated controls" << state;
+ }
+diff --git a/src/uas/UAS.cc b/src/uas/UAS.cc
+index 4d5c1c2..ac88852 100644
+--- a/src/uas/UAS.cc
++++ b/src/uas/UAS.cc
+@@ -558,7 +558,7 @@ void UAS::receiveMessage(mavlink_message_t message)
+ 

+             setAltitudeAMSL(hud.alt);

+             setGroundSpeed(hud.groundspeed);

+-            if (!isnan(hud.airspeed))

++            if (!std::isnan(hud.airspeed))

+                 setAirSpeed(hud.airspeed);

+             speedZ = -hud.climb;

+             emit altitudeChanged(this, altitudeAMSL, altitudeRelative, -speedZ, time);

+@@ -654,7 +654,7 @@ void UAS::receiveMessage(mavlink_message_t message)
+ 

+                     float vel = pos.vel/100.0f;

+                     // Smaller than threshold and not NaN

+-                    if ((vel < 1000000) && !isnan(vel) && !isinf(vel)) {

++                    if ((vel < 1000000) && !std::isnan(vel) && !std::isinf(vel)) {

+                         setGroundSpeed(vel);

+                         emit speedChanged(this, groundSpeed, airSpeed, time);

+                     } else {

+@@ -1439,8 +1439,8 @@ void UAS::setExternalControlSetpoint(float roll, float pitch, float yaw, float t
+     if (countSinceLastTransmission++ >= 5) {

+         sendCommand = true;

+         countSinceLastTransmission = 0;

+-    } else if ((!isnan(roll) && roll != manualRollAngle) || (!isnan(pitch) && pitch != manualPitchAngle) ||

+-             (!isnan(yaw) && yaw != manualYawAngle) || (!isnan(thrust) && thrust != manualThrust) ||

++    } else if ((!std::isnan(roll) && roll != manualRollAngle) || (!std::isnan(pitch) && pitch != manualPitchAngle) ||

++             (!std::isnan(yaw) && yaw != manualYawAngle) || (!std::isnan(thrust) && thrust != manualThrust) ||

+              buttons != manualButtons) {

+         sendCommand = true;

+ 

+diff --git a/src/ui/QGCDataPlot2D.cc b/src/ui/QGCDataPlot2D.cc
+index 2e530b2..9d5a774 100644
+--- a/src/ui/QGCDataPlot2D.cc
++++ b/src/ui/QGCDataPlot2D.cc
+@@ -535,7 +535,7 @@ void QGCDataPlot2D::loadCsvLog(QString file, QString xAxisName, QString yAxisFil
+                 {
+                     bool okx = true;
+                     x = text.toDouble(&okx);
+-                    if (okx && !isnan(x) && !isinf(x))
++                    if (okx && !std::isnan(x) && !std::isinf(x))
+                     {
+                         headerfound = true;
+                     }
+@@ -561,7 +561,7 @@ void QGCDataPlot2D::loadCsvLog(QString file, QString xAxisName, QString yAxisFil
+                         y = text.toDouble(&oky);
+                         // Only INF is really an issue for the plot
+                         // NaN is fine
+-                        if (oky && !isnan(y) && !isinf(y) && text.length() > 0 && text != " " && text != "\n" && text != "\r" && text != "\t")
++                        if (oky && !std::isnan(y) && !std::isinf(y) && text.length() > 0 && text != " " && text != "\n" && text != "\r" && text != "\t")
+                         {
+                             // Only append definitely valid values
+                             xValues.value(curveName)->append(x);
+-- 
+2.7.4
+
diff --git a/pkgs/applications/science/robotics/qgroundcontrol/default.nix b/pkgs/applications/science/robotics/qgroundcontrol/default.nix
new file mode 100644
index 000000000000..47a6ee44952b
--- /dev/null
+++ b/pkgs/applications/science/robotics/qgroundcontrol/default.nix
@@ -0,0 +1,98 @@
+{ stdenv, fetchgit, git,  espeak, SDL, udev, doxygen, cmake, overrideCC#, gcc48
+  , qtbase, qtlocation, qtserialport, qtdeclarative, qtconnectivity, qtxmlpatterns
+  , qtsvg, qtquick1, qtquickcontrols, qtgraphicaleffects
+  , makeQtWrapper, lndir
+  , gst_all_1, qt_gstreamer1, pkgconfig, glibc
+  , version ? "2.9.4"
+}:
+
+stdenv.mkDerivation rec {
+  name = "qgroundcontrol-${version}";
+  buildInputs = [
+   SDL udev doxygen git
+  ] ++ gstInputs;
+
+  qtInputs = [
+    qtbase qtlocation qtserialport qtdeclarative qtconnectivity qtxmlpatterns qtsvg 
+    qtquick1 qtquickcontrols qtgraphicaleffects
+  ];
+
+  gstInputs = with gst_all_1; [
+    gstreamer gst-plugins-base
+  ];
+
+  enableParallelBuilding = true;
+  nativeBuildInputs = [
+    pkgconfig makeQtWrapper
+ ] ++ qtInputs;
+
+  patches = [ ./0001-fix-gcc-cmath-namespace-issues.patch ];
+
+  preConfigure = ''
+    git submodule init
+    git submodule update
+
+  '';
+
+  configurePhase = ''
+    mkdir build
+    pushd build
+
+    qmake ../qgroundcontrol.pro
+
+    popd
+  '';
+
+  preBuild = "pushd build/";
+  postBuild = "popd";
+
+  installPhase = ''
+    mkdir -p $out/share/applications
+    cp -v qgroundcontrol.desktop $out/share/applications
+    
+    mkdir -p $out/bin
+    cp -v build/release/qgroundcontrol "$out/bin/"
+    
+    mkdir -p $out/share/qgroundcontrol
+    cp -rv resources/ $out/share/qgroundcontrol
+    
+    mkdir -p $out/share/pixmaps
+    cp -v resources/icons/qgroundcontrol.png $out/share/pixmaps
+
+    # we need to link to our Qt deps in our own output if we want
+    # this package to work without being installed as a system pkg
+    mkdir -p $out/lib/qt5 $out/etc/xdg
+    for pkg in $qtInputs; do
+      if [[ -d $pkg/lib/qt5 ]]; then
+        for dir in lib/qt5 share etc/xdg; do
+          if [[ -d $pkg/$dir ]]; then
+            ${lndir}/bin/lndir "$pkg/$dir" "$out/$dir"
+          fi
+        done
+      fi
+    done
+  '';
+
+
+  postInstall = ''
+    wrapQtProgram "$out/bin/qgroundcontrol" \
+      --prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH"
+  '';
+  
+
+  # TODO: package mavlink so we can build from a normal source tarball
+  src = fetchgit {
+    url = "https://github.com/mavlink/qgroundcontrol.git";
+    rev = "refs/tags/v${version}";
+    sha256 = "0rwn2ddlar58ydzdykvnab1anr4xzvb9x0sxx5rs037i49f6sqga";
+    fetchSubmodules = true;
+  };
+
+  meta = {
+    description = "provides full ground station support and configuration for the PX4 and APM Flight Stacks";
+    homepage = http://qgroundcontrol.org/;
+    license = stdenv.lib.licenses.gpl3Plus;
+    platforms = with stdenv.lib.platforms; linux;
+    maintainers = with stdenv.lib.maintainers; [ pxc ];
+  };
+}
diff --git a/pkgs/development/haskell-modules/configuration-hackage2nix.yaml b/pkgs/development/haskell-modules/configuration-hackage2nix.yaml
index 74cab1ec9e9c..ecfc08b1d390 100644
--- a/pkgs/development/haskell-modules/configuration-hackage2nix.yaml
+++ b/pkgs/development/haskell-modules/configuration-hackage2nix.yaml
@@ -935,6 +935,7 @@ dont-distribute-packages:
   distributed-process-lifted:                   [ i686-linux, x86_64-darwin, x86_64-linux ]
   distributed-process-platform:                 [ i686-linux, x86_64-darwin, x86_64-linux ]
   distributed-process-registry:                 [ x86_64-darwin ]
+  distributed-process-registry:                 [ x86_64-darwin ]
   distributed-process-registry:                 [ x86_64-linux ]
   distributed-process-supervisor:               [ x86_64-darwin ]
   distributed-process-task:                     [ x86_64-darwin ]
@@ -3051,6 +3052,7 @@ dont-distribute-packages:
   punkt:                                        [ i686-linux, x86_64-darwin, x86_64-linux ]
   Pup-Events-Demo:                              [ i686-linux, x86_64-darwin, x86_64-linux ]
   puppetresources:                              [ i686-linux, x86_64-darwin, x86_64-linux ]
+  purescript-bridge:                            [ x86_64-darwin ]
   push-notify-ccs:                              [ i686-linux, x86_64-darwin, x86_64-linux ]
   push-notify-general:                          [ i686-linux, x86_64-darwin, x86_64-linux ]
   push-notify:                                  [ i686-linux, x86_64-darwin, x86_64-linux ]
@@ -3495,6 +3497,7 @@ dont-distribute-packages:
   split-record:                                 [ i686-linux, x86_64-darwin, x86_64-linux ]
   Spock-auth:                                   [ i686-linux, x86_64-darwin, x86_64-linux ]
   Spock-digestive:                              [ x86_64-darwin ]
+  Spock-lucid:                                  [ x86_64-darwin ]
   Spock-worker:                                 [ x86_64-darwin ]
   Spock:                                        [ x86_64-darwin ]
   spoonutil:                                    [ i686-linux, x86_64-darwin, x86_64-linux ]
@@ -3874,6 +3877,7 @@ dont-distribute-packages:
   visual-prof:                                  [ i686-linux, x86_64-darwin, x86_64-linux ]
   vivid:                                        [ i686-linux, x86_64-darwin, x86_64-linux ]
   vk-aws-route53:                               [ i686-linux, x86_64-darwin, x86_64-linux ]
+  VKHS:                                         [ i686-linux, x86_64-darwin, x86_64-linux ]
   vowpal-utils:                                 [ i686-linux, x86_64-darwin, x86_64-linux ]
   voyeur:                                       [ i686-linux, x86_64-linux ]
   vrpn:                                         [ x86_64-darwin ]
diff --git a/pkgs/development/haskell-modules/hackage-packages.nix b/pkgs/development/haskell-modules/hackage-packages.nix
index 6e24fb903e2f..2182469ef2d8 100644
--- a/pkgs/development/haskell-modules/hackage-packages.nix
+++ b/pkgs/development/haskell-modules/hackage-packages.nix
@@ -18788,6 +18788,7 @@ self: {
        homepage = "http://github.com/aelve/Spock-lucid";
        description = "Lucid support for Spock";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = [ "i686-linux" "x86_64-linux" ];
      }) {};
 
   "Spock-worker_0_2_1_3" = callPackage
@@ -20044,6 +20045,7 @@ self: {
        homepage = "http://github.com/grwlf/vkhs";
        description = "Provides access to Vkontakte social network via public API";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
      }) {};
 
   "Validation" = callPackage
@@ -170097,6 +170099,7 @@ self: {
        testHaskellDepends = [ base Cabal HUnit ];
        description = "Generate PureScript data types from Haskell data types";
        license = stdenv.lib.licenses.agpl3;
+       hydraPlatforms = [ "i686-linux" "x86_64-linux" ];
      }) {};
 
   "purescript-bundle-fast" = callPackage
diff --git a/pkgs/development/libraries/netcdf-fortran/default.nix b/pkgs/development/libraries/netcdf-fortran/default.nix
new file mode 100644
index 000000000000..e72155554753
--- /dev/null
+++ b/pkgs/development/libraries/netcdf-fortran/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, netcdf, hdf5, curl, gfortran }:
+stdenv.mkDerivation rec {
+  name = "netcdf-fortran-${version}";
+  version = "4.4.3";
+
+  src = fetchurl {
+    url = "https://github.com/Unidata/netcdf-fortran/archive/v${version}.tar.gz";
+    sha256 = "4170fc018c9ee8222e317215c6a273542623185f5f6ee00d37bbb4e024e4e998";
+  };
+
+  buildInputs = [ netcdf hdf5 curl gfortran ];
+  doCheck = true;
+
+  meta = {
+    description = "Fortran API to manipulate netcdf files";
+    homepage = "http://www.unidata.ucar.edu/software/netcdf/";
+    license = stdenv.lib.licenses.free;
+    maintainers = stdenv.lib.maintainers.bzizou;
+  };
+}
diff --git a/pkgs/development/lisp-modules/clwrapper/cl-wrapper.sh b/pkgs/development/lisp-modules/clwrapper/cl-wrapper.sh
index 05376c1e9a3c..5bf375a4eff5 100755
--- a/pkgs/development/lisp-modules/clwrapper/cl-wrapper.sh
+++ b/pkgs/development/lisp-modules/clwrapper/cl-wrapper.sh
@@ -19,16 +19,19 @@ case "$NIX_LISP" in
 	sbcl)
 		NIX_LISP_LOAD_FILE="--load"
 		NIX_LISP_EXEC_CODE="--eval"
+                NIX_LISP_QUIT="(quit)"
 		NIX_LISP_FINAL_PARAMETERS=
 		;;
 	ecl)
 		NIX_LISP_LOAD_FILE="-load"
 		NIX_LISP_EXEC_CODE="-eval"
+                NIX_LISP_QUIT="(quit)"
 		NIX_LISP_FINAL_PARAMETERS=
 		;;
 	clisp)
 		NIX_LISP_LOAD_FILE="-c -l"
 		NIX_LISP_EXEC_CODE="-x"
+                NIX_LISP_QUIT="(quit)"
 		NIX_LISP_FINAL_PARAMETERS="-repl"
 		;;
 esac
diff --git a/pkgs/development/lisp-modules/clwrapper/common-lisp.sh b/pkgs/development/lisp-modules/clwrapper/common-lisp.sh
index b22ca016128a..43349cc7f8a2 100755
--- a/pkgs/development/lisp-modules/clwrapper/common-lisp.sh
+++ b/pkgs/development/lisp-modules/clwrapper/common-lisp.sh
@@ -1,3 +1,3 @@
 #! /bin/sh
 
-"$(dirname "$0")"/cl-wrapper.sh "${NIX_LISP_COMMAND:-sbcl}" "$@"
+source "@out@"/bin/cl-wrapper.sh "${NIX_LISP_COMMAND:-$(ls "@lisp@/bin"/* | head -n 1)}" "$@"
diff --git a/pkgs/development/lisp-modules/clwrapper/default.nix b/pkgs/development/lisp-modules/clwrapper/default.nix
index be1f1f93a025..172af31f834e 100644
--- a/pkgs/development/lisp-modules/clwrapper/default.nix
+++ b/pkgs/development/lisp-modules/clwrapper/default.nix
@@ -6,7 +6,7 @@ stdenv.mkDerivation {
 
   installPhase=''
     mkdir -p "$out"/bin
-    cp ${./common-lisp.sh} "$out"/bin/common-lisp.sh
+    substituteAll ${./common-lisp.sh} "$out"/bin/common-lisp.sh
     substituteAll "${./build-with-lisp.sh}" "$out/bin/build-with-lisp.sh"
     substituteAll "${./cl-wrapper.sh}" "$out/bin/cl-wrapper.sh"
     chmod a+x "$out"/bin/*
diff --git a/pkgs/development/lisp-modules/lisp-packages.nix b/pkgs/development/lisp-modules/lisp-packages.nix
index 36e0b34e005b..8e3c56d49a84 100644
--- a/pkgs/development/lisp-modules/lisp-packages.nix
+++ b/pkgs/development/lisp-modules/lisp-packages.nix
@@ -575,5 +575,32 @@ let lispPackages = rec {
     };
   };
 
+  quicklisp = buildLispPackage rec {
+    baseName = "quicklisp";
+    version = "2016-01-21";
+    description = "The Common Lisp package manager";
+    deps = [];
+    src = pkgs.fetchgit {
+      url = "https://github.com/quicklisp/quicklisp-client/";
+      rev = "refs/tags/version-${version}";
+      sha256 = "0a6zjsd5c8zg2x26lc027538xfl182xvg7ps81pyvi4k5qd42xhd";
+    };
+    overrides = x: rec {
+      inherit clwrapper;
+      quicklispdist = pkgs.fetchurl {
+        # Will usually be replaced with a fresh version anyway, but needs to be
+        # a valid distinfo.txt
+        url = "http://beta.quicklisp.org/dist/quicklisp/2016-03-18/distinfo.txt";
+        sha256 = "13mvign4rsicfvg3vs3vj1qcjvj2m1aqhq93ck0sgizxfcj5167m";
+      };
+      buildPhase = '' true; '';
+      postInstall = ''
+        substituteAll ${./quicklisp.sh} "$out"/bin/quicklisp
+        chmod a+x "$out"/bin/quicklisp
+        cp "${quicklispdist}" "$out/lib/common-lisp/quicklisp/quicklisp-distinfo.txt"
+      '';
+    };
+  };
+
 };
 in lispPackages
diff --git a/pkgs/development/lisp-modules/quicklisp.sh b/pkgs/development/lisp-modules/quicklisp.sh
new file mode 100644
index 000000000000..30d14419461e
--- /dev/null
+++ b/pkgs/development/lisp-modules/quicklisp.sh
@@ -0,0 +1,85 @@
+#! /usr/bin/env bash
+
+op=
+end_param=
+args=()
+cmd_args=()
+
+while let "$#"; do
+    if test -n "$end_param" || test "$1" = "${1#--}"; then
+        if test -n "$op"; then
+            args[${#args[@]}]="$1";
+        else
+            op="$1"
+        fi
+        shift
+    else
+        case "$1" in
+            --)
+                end_param=1; shift;
+            ;;
+            --quicklisp-dir)
+                NIX_QUICKLISP_DIR="$2";
+                shift; shift;
+            ;;
+            --help)
+                echo "Operation: init, run, update, install {system-name}"
+                exit 0;
+            ;;
+            *)
+                echo "Unknown parameter [$1]" >&2
+                exit 2;
+            ;;
+        esac
+    fi
+done
+
+NIX_QUICKLISP_DIR="${NIX_QUICKLISP_DIR:-${HOME}/quicklisp}"
+
+case "$op" in
+    '') echo "Specify an operation: init, install, run, update"
+    ;;
+    install)
+        NIX_LISP_SKIP_CODE=1 source "@clwrapper@/bin/common-lisp.sh";
+
+        cmd_args[${#cmd_args[@]}]="$NIX_LISP_EXEC_CODE"
+        cmd_args[${#cmd_args[@]}]="(load \"$NIX_QUICKLISP_DIR/setup.lisp\")"
+        for i in "${args[@]}"; do
+            cmd_args[${#cmd_args[@]}]="$NIX_LISP_EXEC_CODE"
+            cmd_args[${#cmd_args[@]}]="(ql:quickload :$i)"
+        done
+        cmd_args[${#cmd_args[@]}]="$NIX_LISP_EXEC_CODE"
+        cmd_args[${#cmd_args[@]}]="$NIX_LISP_QUIT"
+
+        "@clwrapper@/bin/common-lisp.sh" "${cmd_args[@]}"
+    ;;
+    update)
+        NIX_LISP_SKIP_CODE=1 source "@clwrapper@/bin/common-lisp.sh"
+
+        ln -sfT "@out@/lib/common-lisp/quicklisp/asdf.lisp" "$NIX_QUICKLISP_DIR/asdf.lisp"
+        cp -f "@out@/lib/common-lisp/quicklisp/setup.lisp" "$NIX_QUICKLISP_DIR/setup.lisp"
+
+        if test -d "$NIX_QUICKLISP_DIR/quicklisp"; then
+            mv "$NIX_QUICKLISP_DIR/quicklisp"{,-old-$(date +%Y%m%d-%H%M%S)}
+        fi
+
+        ln -sfT "@out@/lib/common-lisp/quicklisp/quicklisp" "$NIX_QUICKLISP_DIR/quicklisp"
+
+        "@clwrapper@/bin/common-lisp.sh" "$NIX_LISP_EXEC_CODE" \
+          "(load \"$NIX_QUICKLISP_DIR/setup.lisp\")" "$NIX_LISP_EXEC_CODE" \
+          "(ql:update-all-dists)" "$NIX_LISP_EXEC_CODE" "$NIX_LISP_QUIT"
+    ;;
+    init)
+        mkdir -p "$NIX_QUICKLISP_DIR"/{dists/quicklisp,tmp,local-projects}
+        echo 1 > "$NIX_QUICKLISP_DIR/dists/quicklisp/enabled.txt"
+        cp -f "@out@/lib/common-lisp/quicklisp/quicklisp-distinfo.txt" \
+          "$NIX_QUICKLISP_DIR/dists/quicklisp/distinfo.txt"
+
+        NIX_QUICKLISP_DIR="$NIX_QUICKLISP_DIR" "$0" update
+    ;;
+    run)
+        NIX_LISP_SKIP_CODE=1 source "@clwrapper@/bin/common-lisp.sh"
+        "@clwrapper@/bin/common-lisp.sh" "$NIX_LISP_EXEC_CODE" \
+          "(load \"$NIX_QUICKLISP_DIR/setup.lisp\")" "${args[@]}"
+    ;;
+esac
diff --git a/pkgs/development/tools/analysis/checkstyle/default.nix b/pkgs/development/tools/analysis/checkstyle/default.nix
index 8fbc720a2720..0d961ab5c23c 100644
--- a/pkgs/development/tools/analysis/checkstyle/default.nix
+++ b/pkgs/development/tools/analysis/checkstyle/default.nix
@@ -1,12 +1,12 @@
 { stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
-  version = "6.16.1";
+  version = "6.17";
   name = "checkstyle-${version}";
 
   src = fetchurl {
     url = "mirror://sourceforge/checkstyle/${name}-bin.tar.gz";
-    sha256 = "169pwpxpzvi18hiji2w77s97lf8956wknch06bjbzvad7q9qfxid";
+    sha256 = "1cfcjz1fg9ilqqaqlbzd5n7nsx1kzy6sabjp92b9d8mwy15bn5ql";
   };
 
   installPhase = ''
diff --git a/pkgs/shells/oh-my-zsh/default.nix b/pkgs/shells/oh-my-zsh/default.nix
index e8c0aef8c78f..a7e57b145d61 100644
--- a/pkgs/shells/oh-my-zsh/default.nix
+++ b/pkgs/shells/oh-my-zsh/default.nix
@@ -7,12 +7,12 @@
 
 stdenv.mkDerivation rec {
   name = "oh-my-zsh-git-${version}";
-  version = "2016-03-19";
+  version = "2016-03-24";
 
   src = fetchgit {
     url = "https://github.com/robbyrussell/oh-my-zsh";
-    rev = "8ac1859f377b5292597f11f5973bae1ebc8e2dce";
-    sha256 = "1zq3rps1jqw1gmhqsmcz38c0c1mk5d3z3n8m34v8k5zsfh5y4bha";
+    rev = "9280f2c874b1126ee9399c353d1e0184fd39b4e4";
+    sha256 = "1rldqfs5vkqxp3r7nn5q1837a363gml0d5pji0zkl7ia49f7bdnk";
   };
 
   phases = "installPhase";
diff --git a/pkgs/tools/misc/cpuminer/default.nix b/pkgs/tools/misc/cpuminer/default.nix
index 67249161e841..64657d7cd3b9 100644
--- a/pkgs/tools/misc/cpuminer/default.nix
+++ b/pkgs/tools/misc/cpuminer/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "cpuminer-${version}";
-  version = "2.4.3";
+  version = "2.4.4";
 
   src = fetchurl {
     url = "mirror://sourceforge/cpuminer/pooler-${name}.tar.gz";
-    sha256 = "1p66v96pz3vk1khwlmc26fg2d06c001755rrkcdv5wh8zyg6wv99";
+    sha256 = "0xdgz5qlx1yr3mw2h4bwlbj94y6v2ygjy334cnc87xgzxf1wgann";
   };
 
   buildInputs = [ curl jansson ];
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 05e26199a176..927a0db9ab1d 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -2386,6 +2386,8 @@ in
 
   netcdfcxx4 = callPackage ../development/libraries/netcdf-cxx4 { };
 
+  netcdffortran = callPackage ../development/libraries/netcdf-fortran { };
+
   nco = callPackage ../development/libraries/nco { };
 
   nc6 = callPackage ../tools/networking/nc6 { };
@@ -14351,6 +14353,8 @@ in
 
   qgis = callPackage ../applications/gis/qgis {};
 
+  qgroundcontrol = qt55.callPackage ../applications/science/robotics/qgroundcontrol { };
+
   qtbitcointrader = callPackage ../applications/misc/qtbitcointrader {
     qt = qt4;
   };
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index ff991be6dd71..88c238ef8b43 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -17165,7 +17165,7 @@ in modules // {
       downloadPage = https://github.com/progrium/pyjwt/releases;
       license = licenses.mit;
       maintainers = with maintainers; [ prikhi ];
-      platforms = platforms.linux;
+      platforms = platforms.unix;
     };
   };