summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorMatthew Bauer <mjbauer95@gmail.com>2018-11-11 15:20:41 -0600
committerMatthew Bauer <mjbauer95@gmail.com>2018-11-13 19:13:48 -0600
commitf2a20b6e520989bc2c01d362c31fa94cbf6bee52 (patch)
treea18463cd63f58a9c217f1d6160315c75ba2a5790 /pkgs
parent92ebfa13833065a23cd3479eefc2624b46ec45dd (diff)
downloadnixpkgs-f2a20b6e520989bc2c01d362c31fa94cbf6bee52.tar
nixpkgs-f2a20b6e520989bc2c01d362c31fa94cbf6bee52.tar.gz
nixpkgs-f2a20b6e520989bc2c01d362c31fa94cbf6bee52.tar.bz2
nixpkgs-f2a20b6e520989bc2c01d362c31fa94cbf6bee52.tar.lz
nixpkgs-f2a20b6e520989bc2c01d362c31fa94cbf6bee52.tar.xz
nixpkgs-f2a20b6e520989bc2c01d362c31fa94cbf6bee52.tar.zst
nixpkgs-f2a20b6e520989bc2c01d362c31fa94cbf6bee52.zip
treewide: use wafHook
Replace "waf" phases with wafHook that manages everything
automatically. Should make things more modular.

Packages affected here are:

- a2jmidid
- ams-lv2
- ardour
- fomp
- guitarix
- ingen
- jalv
- mda-lv2
- non
- patchage
- hamster-time-tracker
- kupfer
- xiphos
- xfce4-dockbarx-plugin
- xfce4-namebar-plugin
- dropbox
- clasp
- aubio
- liliv
- lv2
- lvtk
- ntk
- raul
- sratom
- suil
- ganv
- ndn-cxx
- ns3
- serd
- sord
- termbox
- wxmupen64plus
- jackaudio
- pflask
- blockhash
- glmark2
- weighttp
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/applications/audio/a2jmidid/default.nix10
-rw-r--r--pkgs/applications/audio/ams-lv2/default.nix11
-rw-r--r--pkgs/applications/audio/ardour/default.nix16
-rw-r--r--pkgs/applications/audio/fomp/default.nix10
-rw-r--r--pkgs/applications/audio/guitarix/default.nix10
-rw-r--r--pkgs/applications/audio/ingen/default.nix12
-rw-r--r--pkgs/applications/audio/jalv/default.nix10
-rw-r--r--pkgs/applications/audio/mda-lv2/default.nix10
-rw-r--r--pkgs/applications/audio/non/default.nix7
-rw-r--r--pkgs/applications/audio/patchage/default.nix8
-rw-r--r--pkgs/applications/misc/hamster-time-tracker/default.nix14
-rw-r--r--pkgs/applications/misc/kupfer/default.nix22
-rw-r--r--pkgs/applications/misc/xiphos/default.nix17
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-dockbarx-plugin.nix11
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-namebar-plugin.nix11
-rw-r--r--pkgs/desktops/xfce/thunar-plugins/dropbox/default.nix11
-rw-r--r--pkgs/development/compilers/clasp/default.nix39
-rw-r--r--pkgs/development/libraries/aubio/default.nix10
-rw-r--r--pkgs/development/libraries/audio/lilv/default.nix10
-rw-r--r--pkgs/development/libraries/audio/lv2/default.nix10
-rw-r--r--pkgs/development/libraries/audio/lv2/unstable.nix10
-rw-r--r--pkgs/development/libraries/audio/lvtk/default.nix17
-rw-r--r--pkgs/development/libraries/audio/ntk/default.nix13
-rw-r--r--pkgs/development/libraries/audio/raul/default.nix10
-rw-r--r--pkgs/development/libraries/audio/sratom/default.nix10
-rw-r--r--pkgs/development/libraries/audio/suil/default.nix9
-rw-r--r--pkgs/development/libraries/ganv/default.nix10
-rw-r--r--pkgs/development/libraries/ndn-cxx/default.nix24
-rw-r--r--pkgs/development/libraries/science/networking/ns3/default.nix14
-rw-r--r--pkgs/development/libraries/serd/default.nix10
-rw-r--r--pkgs/development/libraries/sord/default.nix10
-rw-r--r--pkgs/development/libraries/termbox/default.nix8
-rw-r--r--pkgs/misc/emulators/wxmupen64plus/default.nix12
-rw-r--r--pkgs/misc/jackaudio/default.nix35
-rw-r--r--pkgs/os-specific/linux/pflask/default.nix14
-rw-r--r--pkgs/tools/graphics/blockhash/default.nix8
-rw-r--r--pkgs/tools/graphics/glmark2/default.nix13
-rw-r--r--pkgs/tools/networking/weighttp/default.nix8
38 files changed, 127 insertions, 367 deletions
diff --git a/pkgs/applications/audio/a2jmidid/default.nix b/pkgs/applications/audio/a2jmidid/default.nix
index d09a10a15b2..630dec57f19 100644
--- a/pkgs/applications/audio/a2jmidid/default.nix
+++ b/pkgs/applications/audio/a2jmidid/default.nix
@@ -1,4 +1,5 @@
 { stdenv, fetchurl, makeWrapper, pkgconfig, alsaLib, dbus, libjack2
+, wafHook
 , python2Packages}:
 
 let
@@ -12,15 +13,10 @@ in stdenv.mkDerivation rec {
     sha256 = "06dgf5655znbvrd7fhrv8msv6zw8vk0hjqglcqkh90960mnnmwz7";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkgconfig wafHook ];
   buildInputs = [ makeWrapper alsaLib dbus libjack2 python dbus-python ];
 
-  configurePhase = "${python.interpreter} waf configure --prefix=$out";
-
-  buildPhase = "${python.interpreter} waf";
-
-  installPhase = ''
-    ${python.interpreter} waf install
+  postInstall = ''
     wrapProgram $out/bin/a2j_control --set PYTHONPATH $PYTHONPATH
   '';
 
diff --git a/pkgs/applications/audio/ams-lv2/default.nix b/pkgs/applications/audio/ams-lv2/default.nix
index 7858631f797..3475f62dcbb 100644
--- a/pkgs/applications/audio/ams-lv2/default.nix
+++ b/pkgs/applications/audio/ams-lv2/default.nix
@@ -1,4 +1,5 @@
-{ stdenv, fetchFromGitHub, cairo, fftw, gtkmm2, lv2, lvtk, pkgconfig, python3 }:
+{ stdenv, fetchFromGitHub, cairo, fftw, gtkmm2, lv2, lvtk, pkgconfig, python3
+, wafHook }:
 
 stdenv.mkDerivation  rec {
   name = "ams-lv2-${version}";
@@ -11,15 +12,9 @@ stdenv.mkDerivation  rec {
     sha256 = "1n1dnqnj24xhiy9323lj52nswr5120cj56fpckg802miss05sr6x";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkgconfig wafHook ];
   buildInputs = [ cairo fftw gtkmm2 lv2 lvtk ];
 
-  configurePhase = "${python3.interpreter} waf configure --prefix=$out";
-
-  buildPhase = "${python3.interpreter} waf";
-
-  installPhase = "${python3.interpreter} waf install";
-
   meta = with stdenv.lib; {
     description = "An LV2 port of the internal modules found in Alsa Modular Synth";
     homepage = http://objectivewave.wordpress.com/ams-lv2;
diff --git a/pkgs/applications/audio/ardour/default.nix b/pkgs/applications/audio/ardour/default.nix
index 850848abcde..1bb1e404b5c 100644
--- a/pkgs/applications/audio/ardour/default.nix
+++ b/pkgs/applications/audio/ardour/default.nix
@@ -4,7 +4,8 @@
 , librdf_raptor, librdf_rasqal, libsamplerate, libsigcxx, libsndfile
 , libusb, libuuid, libxml2, libxslt, lilv, lv2, makeWrapper
 , perl, pkgconfig, python2, rubberband, serd, sord, sratom
-, taglib, vampSDK, dbus, fftw, pango, suil, libarchive }:
+, taglib, vampSDK, dbus, fftw, pango, suil, libarchive
+, wafHook }:
 
 let
 
@@ -29,6 +30,7 @@ stdenv.mkDerivation rec {
     sha256 = "0mla5lm51ryikc2rrk53max2m7a5ds6i1ai921l2h95wrha45nkr";
   };
 
+  nativeBuildInputs = [ wafHook ];
   buildInputs =
     [ alsaLib aubio boost cairomm curl doxygen dbus fftw fftwSinglePrec flac
       glibmm graphviz gtkmm2 libjack2 libgnomecanvas libgnomecanvasmm liblo
@@ -47,13 +49,13 @@ stdenv.mkDerivation rec {
     patchShebangs ./tools/
   '';
 
-  configurePhase = "${python2.interpreter} waf configure --optimize --docs --with-backends=jack,alsa,dummy --prefix=$out";
-
-  buildPhase = "${python2.interpreter} waf";
-
-  installPhase = ''
-    ${python2.interpreter} waf install
+  configureFlags = [
+    "--optimize"
+    "--docs"
+    "--with-backends=jack,alsa,dummy"
+  ];
 
+  postInstall = ''
     # Install desktop file
     mkdir -p "$out/share/applications"
     cat > "$out/share/applications/ardour.desktop" << EOF
diff --git a/pkgs/applications/audio/fomp/default.nix b/pkgs/applications/audio/fomp/default.nix
index d7a46143939..680fab4ca64 100644
--- a/pkgs/applications/audio/fomp/default.nix
+++ b/pkgs/applications/audio/fomp/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, lv2, pkgconfig, python2 }:
+{ stdenv, fetchurl, lv2, pkgconfig, python2, wafHook }:
 
 stdenv.mkDerivation rec {
   name = "fomp-${version}";
@@ -9,15 +9,9 @@ stdenv.mkDerivation rec {
     sha256 = "1hh2xhknanqn3iwp12ihl6bf8p7bqxryms9qk7mh21lixl42b8k5";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkgconfig wafHook ];
   buildInputs = [ lv2 python2 ];
 
-  installPhase = ''
-    python waf configure --prefix=$out
-    python waf
-    python waf install
-  '';
-
   meta = with stdenv.lib; {
     homepage = http://drobilla.net/software/fomp/;
     description = "An LV2 port of the MCP, VCO, FIL, and WAH plugins by Fons Adriaensen";
diff --git a/pkgs/applications/audio/guitarix/default.nix b/pkgs/applications/audio/guitarix/default.nix
index 041f847585d..bc4c18aab08 100644
--- a/pkgs/applications/audio/guitarix/default.nix
+++ b/pkgs/applications/audio/guitarix/default.nix
@@ -2,7 +2,7 @@
 , avahi, bluez, boost, eigen, fftw, glib, glib-networking
 , glibmm, gsettings-desktop-schemas, gtkmm2, libjack2
 , ladspaH, libav, librdf, libsndfile, lilv, lv2, serd, sord, sratom
-, wrapGAppsHook, zita-convolver, zita-resampler, curl
+, wrapGAppsHook, zita-convolver, zita-resampler, curl, wafHook
 , optimizationSupport ? false # Enable support for native CPU extensions
 }:
 
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
     sha256 = "1wfm8wrwrnqpb4ihy75n7l9i6vml536jlq9pdx2pblbc4ba3paac";
   };
 
-  nativeBuildInputs = [ gettext intltool wrapGAppsHook pkgconfig python2 ];
+  nativeBuildInputs = [ gettext intltool wrapGAppsHook pkgconfig python2 wafHook ];
 
   buildInputs = [
     avahi bluez boost eigen fftw glib glibmm glib-networking.out
@@ -38,12 +38,6 @@ stdenv.mkDerivation rec {
     "--convolver-ffmpeg"
   ] ++ optional optimizationSupport "--optimization";
 
-  configurePhase = ''python2 waf configure --prefix=$out $configureFlags'';
-
-  buildPhase = ''python2 waf build'';
-
-  installPhase = ''python2 waf install'';
-
   meta = with stdenv.lib; {
     description = "A virtual guitar amplifier for Linux running with JACK";
     longDescription = ''
diff --git a/pkgs/applications/audio/ingen/default.nix b/pkgs/applications/audio/ingen/default.nix
index d9109dd1c0e..e10a25b8917 100644
--- a/pkgs/applications/audio/ingen/default.nix
+++ b/pkgs/applications/audio/ingen/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchgit, boost, ganv, glibmm, gtkmm2, libjack2, lilv
 , lv2Unstable, makeWrapper, pkgconfig, python, raul, rdflib, serd, sord, sratom
-
+, wafHook
 , suil
 }:
 
@@ -15,23 +15,19 @@ stdenv.mkDerivation  rec {
     deepClone = true;
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkgconfig wafHook ];
   buildInputs = [
     boost ganv glibmm gtkmm2 libjack2 lilv lv2Unstable makeWrapper
     python raul serd sord sratom suil
   ];
 
-  configurePhase = ''
+  preConfigure = ''
     sed -e "s@{PYTHONDIR}/'@out/'@" -i wscript
-    ${python.interpreter} waf configure --prefix=$out
   '';
 
   propagatedBuildInputs = [ rdflib ];
 
-  buildPhase = "${python.interpreter} waf";
-
-  installPhase = ''
-    ${python.interpreter} waf install
+  postInstall = ''
     for program in ingenams ingenish
     do
       wrapProgram $out/bin/$program \
diff --git a/pkgs/applications/audio/jalv/default.nix b/pkgs/applications/audio/jalv/default.nix
index f78110e8bbb..e2f0c7ea7af 100644
--- a/pkgs/applications/audio/jalv/default.nix
+++ b/pkgs/applications/audio/jalv/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, gtk2, libjack2, lilv, lv2, pkgconfig, python
-, serd, sord , sratom, suil }:
+, serd, sord , sratom, suil, wafHook }:
 
 stdenv.mkDerivation  rec {
   name = "jalv-${version}";
@@ -10,17 +10,11 @@ stdenv.mkDerivation  rec {
     sha256 = "1x2wpzzx2cgvz3dgdcgsj8dr0w3zsasy62mvl199bsdj5fbjaili";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkgconfig wafHook ];
   buildInputs = [
     gtk2 libjack2 lilv lv2 python serd sord sratom suil
   ];
 
-  configurePhase = "python waf configure --prefix=$out";
-
-  buildPhase = "python waf";
-
-  installPhase = "python waf install";
-
   meta = with stdenv.lib; {
     description = "A simple but fully featured LV2 host for Jack";
     homepage = http://drobilla.net/software/jalv;
diff --git a/pkgs/applications/audio/mda-lv2/default.nix b/pkgs/applications/audio/mda-lv2/default.nix
index e27aab6e898..26290e5bf88 100644
--- a/pkgs/applications/audio/mda-lv2/default.nix
+++ b/pkgs/applications/audio/mda-lv2/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, fftwSinglePrec, lv2, pkgconfig, python }:
+{ stdenv, fetchurl, fftwSinglePrec, lv2, pkgconfig, python, wafHook }:
 
 stdenv.mkDerivation rec {
   name = "mda-lv2-${version}";
@@ -9,15 +9,9 @@ stdenv.mkDerivation rec {
     sha256 = "0hh40c5d2m0k5gb3vw031l6lqn59dg804an3mkmhkc7qv4gc6xm4";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkgconfig wafHook ];
   buildInputs = [ fftwSinglePrec lv2 python ];
 
-  configurePhase = "python waf configure --prefix=$out";
-
-  buildPhase = "python waf";
-
-  installPhase = "python waf install";
-
   meta = with stdenv.lib; {
     homepage = http://drobilla.net/software/mda-lv2/;
     description = "An LV2 port of the MDA plugins by Paul Kellett";
diff --git a/pkgs/applications/audio/non/default.nix b/pkgs/applications/audio/non/default.nix
index c28c711d618..44dd0d2d4ec 100644
--- a/pkgs/applications/audio/non/default.nix
+++ b/pkgs/applications/audio/non/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchFromGitHub, pkgconfig, python2, cairo, libjpeg, ntk, libjack2
-, libsndfile, ladspaH, liblrdf, liblo, libsigcxx
+, libsndfile, ladspaH, liblrdf, liblo, libsigcxx, wafHook
 }:
 
 stdenv.mkDerivation rec {
@@ -12,13 +12,10 @@ stdenv.mkDerivation rec {
     sha256 = "1cljkkyi9dxqpqhx8y6l2ja4zjmlya26m26kqxml8gx08vyvddhx";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkgconfig wafHook ];
   buildInputs = [ python2 cairo libjpeg ntk libjack2 libsndfile
     ladspaH liblrdf liblo libsigcxx
   ];
-  configurePhase = "python waf configure --prefix=$out";
-  buildPhase = "python waf build";
-  installPhase = "python waf install";
 
   meta = {
     description = "Lightweight and lightning fast modular Digital Audio Workstation";
diff --git a/pkgs/applications/audio/patchage/default.nix b/pkgs/applications/audio/patchage/default.nix
index 8425b48166e..7f3940e0ae9 100644
--- a/pkgs/applications/audio/patchage/default.nix
+++ b/pkgs/applications/audio/patchage/default.nix
@@ -1,5 +1,5 @@
 { stdenv, alsaLib, boost, dbus-glib, fetchsvn, ganv, glibmm
-, gtkmm2, libjack2, pkgconfig, python2
+, gtkmm2, libjack2, pkgconfig, python2, wafHook
 }:
 
 stdenv.mkDerivation rec {
@@ -13,13 +13,9 @@ stdenv.mkDerivation rec {
 
   buildInputs = [
     alsaLib boost dbus-glib ganv glibmm gtkmm2 libjack2
-    pkgconfig python2
+    pkgconfig python2 wafHook
   ];
 
-  configurePhase = "python waf configure --prefix=$out";
-  buildPhase = "python waf build";
-  installPhase = "python waf install";
-
   meta = {
     description = "Modular patch bay for Jack and ALSA systems";
     homepage = http://non.tuxfamily.org;
diff --git a/pkgs/applications/misc/hamster-time-tracker/default.nix b/pkgs/applications/misc/hamster-time-tracker/default.nix
index 2abdce45c95..453d95694eb 100644
--- a/pkgs/applications/misc/hamster-time-tracker/default.nix
+++ b/pkgs/applications/misc/hamster-time-tracker/default.nix
@@ -1,6 +1,7 @@
 { stdenv, fetchzip, pythonPackages, docbook2x, libxslt, gnome-doc-utils
 , intltool, dbus-glib, gnome_python
 , hicolor-icon-theme
+, wafHook
 }:
 
 # TODO: Add optional dependency 'wnck', for "workspace tracking" support. Fixes
@@ -17,28 +18,17 @@ pythonPackages.buildPythonApplication rec {
     sha256 = "1a85rcg561792kdyv744cgzw7mmpmgv6d6li1sijfdpqa1ninf8g";
   };
 
+  nativeBuildInputs = [ wafHook ];
   buildInputs = [
     docbook2x libxslt gnome-doc-utils intltool dbus-glib hicolor-icon-theme
   ];
 
   propagatedBuildInputs = with pythonPackages; [ pygobject2 pygtk pyxdg gnome_python dbus-python ];
 
-  configurePhase = ''
-    python waf configure --prefix="$out"
-  '';
-  
-  buildPhase = ''
-    python waf build
-  '';
-
   postFixup = ''
     wrapPythonProgramsIn $out/lib/hamster-time-tracker "$out $pythonPath"
   '';
 
-  installPhase = ''
-    python waf install
-  '';
-
   # error: invalid command 'test'
   doCheck = false;
 
diff --git a/pkgs/applications/misc/kupfer/default.nix b/pkgs/applications/misc/kupfer/default.nix
index 3072963c43e..0b07767d760 100644
--- a/pkgs/applications/misc/kupfer/default.nix
+++ b/pkgs/applications/misc/kupfer/default.nix
@@ -8,6 +8,7 @@
 , keybinder3
 , hicolor-icon-theme
 , wrapGAppsHook
+, wafHook
 }:
 
 with python3Packages;
@@ -24,37 +25,20 @@ buildPythonApplication rec {
   nativeBuildInputs = [
     wrapGAppsHook intltool
     # For setup hook
-    gobjectIntrospection
+    gobjectIntrospection wafHook
   ];
   buildInputs = [ hicolor-icon-theme docutils libwnck3 keybinder3 ];
   propagatedBuildInputs = [ pygobject3 gtk3 pyxdg dbus-python pycairo ];
 
-  configurePhase = ''
-    runHook preConfigure
-    python ./waf configure --prefix=$prefix
-    runHook postConfigure
-  '';
-
-  buildPhase = ''
-    runHook preBuild
-    python ./waf
-    runHook postBuild
-  '';
-
-  installPhase = let
+  postInstall = let
     pythonPath = (stdenv.lib.concatMapStringsSep ":"
       (m: "${m}/lib/${python.libPrefix}/site-packages")
       propagatedBuildInputs);
   in ''
-    runHook preInstall
-    python ./waf install
-
     gappsWrapperArgs+=(
       "--prefix" "PYTHONPATH" : "${pythonPath}"
       "--set" "PYTHONNOUSERSITE" "1"
     )
-
-    runHook postInstall
   '';
 
   doCheck = false; # no tests
diff --git a/pkgs/applications/misc/xiphos/default.nix b/pkgs/applications/misc/xiphos/default.nix
index bb7b22c40a2..7148caf35d3 100644
--- a/pkgs/applications/misc/xiphos/default.nix
+++ b/pkgs/applications/misc/xiphos/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchFromGitHub, pkgconfig
+{ stdenv, fetchFromGitHub, pkgconfig
 , python
 , intltool
 , docbook2x, docbook_xml_dtd_412, libxslt
@@ -9,6 +9,7 @@
 , webkitgtk
 , dbus-glib, enchant, isocodes, libuuid, icu
 , wrapGAppsHook
+, wafHook
 }:
 
 stdenv.mkDerivation rec {
@@ -22,7 +23,7 @@ stdenv.mkDerivation rec {
     sha256 = "1vwf1ps6nrajxl1qbs6v1cgykmq5wn4j09j10gbcd3b2nvrprf3g";
   };
 
-  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook wafHook ];
   buildInputs = [ python intltool docbook2x docbook_xml_dtd_412 libxslt
                   sword clucene_core biblesync gnome-doc-utils libgsf gconf gtkhtml
                   libglade scrollkeeper webkitgtk dbus-glib enchant isocodes libuuid icu ];
@@ -36,17 +37,7 @@ stdenv.mkDerivation rec {
     export SWORD_HOME=${sword};
   '';
 
-  configurePhase = ''
-    python waf configure --prefix=$out --enable-webkit2
-  '';
-
-  buildPhase = ''
-    python waf build
-  '';
-
-  installPhase = ''
-    python waf install
-  '';
+  configureFlags= [ "--enable-webkit2" ];
 
   meta = with stdenv.lib; {
     description = "A GTK Bible study tool";
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-dockbarx-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-dockbarx-plugin.nix
index 621b4266d10..b33ba7770be 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-dockbarx-plugin.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-dockbarx-plugin.nix
@@ -1,4 +1,5 @@
-{ stdenv, pkgconfig, fetchFromGitHub, python2, bash, vala, dockbarx, gtk2, xfce, pythonPackages }:
+{ stdenv, pkgconfig, fetchFromGitHub, python2, bash, vala
+, dockbarx, gtk2, xfce, pythonPackages, wafHook }:
 
 stdenv.mkDerivation rec {
   ver = "0.5";
@@ -14,7 +15,7 @@ stdenv.mkDerivation rec {
 
   pythonPath = [ dockbarx ];
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkgconfig wafHook ];
   buildInputs = [ python2 vala gtk2 pythonPackages.wrapPython ]
     ++ (with xfce; [ libxfce4util xfce4-panel xfconf xfce4-dev-tools ])
     ++ pythonPath;
@@ -25,12 +26,6 @@ stdenv.mkDerivation rec {
     substituteInPlace src/dockbarx.vala --replace '/usr/bin/env python2' ${bash}/bin/bash
   '';
 
-  configurePhase = "python waf configure --prefix=$out";
-
-  buildPhase = "python waf build";
-
-  installPhase = "python waf install";
-
   postFixup = ''
     wrapPythonProgramsIn "$out/share/xfce4/panel/plugins" "$out $pythonPath"
   '';
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-namebar-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-namebar-plugin.nix
index 66179996df6..61035571f53 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-namebar-plugin.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-namebar-plugin.nix
@@ -1,4 +1,5 @@
-{ stdenv, pkgconfig, fetchFromGitHub, python2, vala, gtk2, libwnck, libxfce4util, xfce4-panel }:
+{ stdenv, pkgconfig, fetchFromGitHub, python2, vala
+, gtk2, libwnck, libxfce4util, xfce4-panel, wafHook }:
 
 stdenv.mkDerivation rec {
   ver = "0.3.1";
@@ -12,7 +13,7 @@ stdenv.mkDerivation rec {
     sha256 = "1sl4qmjywfvv53ch7hyfysjfd91zl38y7gdw2y3k69vkzd3h18ad";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkgconfig wafHook ];
   buildInputs = [ python2 vala gtk2 libwnck libxfce4util xfce4-panel ];
 
   postPatch = ''
@@ -20,12 +21,6 @@ stdenv.mkDerivation rec {
     substituteInPlace src/namebar.vala     --replace 'Environment.get_system_data_dirs()' "{ \"$out/share\" }"
   '';
 
-  configurePhase = "python waf configure --prefix=$out";
-
-  buildPhase = "python waf build";
-
-  installPhase = "python waf install";
-
   meta = with stdenv.lib; {
     homepage = https://github.com/TiZ-EX1/xfce4-namebar-plugin;
     description = "A plugins which integrates titlebar and window controls into the xfce4-panel";
diff --git a/pkgs/desktops/xfce/thunar-plugins/dropbox/default.nix b/pkgs/desktops/xfce/thunar-plugins/dropbox/default.nix
index b86199c5012..217cecf85a8 100644
--- a/pkgs/desktops/xfce/thunar-plugins/dropbox/default.nix
+++ b/pkgs/desktops/xfce/thunar-plugins/dropbox/default.nix
@@ -1,6 +1,7 @@
 { stdenv, fetchurl, pkgconfig
 , gtk
 , thunar-bare, python2, hicolor-icon-theme
+, wafHook
 }:
 
 stdenv.mkDerivation rec {
@@ -14,20 +15,12 @@ stdenv.mkDerivation rec {
     sha256 = "08vhzzzwshyz371yl7fzfylmhvchhv3s5kml3dva4v39jhvrpnkf";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkgconfig wafHook ];
   buildInputs = [
     gtk
     thunar-bare python2 hicolor-icon-theme
   ];
 
-  configurePhase = "python2 waf configure --prefix=$out";
-
-  buildPhase = "python2 waf";
-
-  installPhase = ''
-    python2 waf install
-  '';
-
   enableParallelBuilding = true;
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/compilers/clasp/default.nix b/pkgs/development/compilers/clasp/default.nix
index 2c260e110d6..349482fbde9 100644
--- a/pkgs/development/compilers/clasp/default.nix
+++ b/pkgs/development/compilers/clasp/default.nix
@@ -1,7 +1,8 @@
-{stdenv, fetchFromGitHub
-  , llvmPackages
-  , cmake, boehmgc, gmp, zlib, ncurses, boost
-  , python, git, sbcl
+{ stdenv, fetchFromGitHub
+, llvmPackages
+, cmake, boehmgc, gmp, zlib, ncurses, boost
+, python, git, sbcl
+, wafHook
 }:
 stdenv.mkDerivation rec {
   name = "${pname}-${version}";
@@ -16,7 +17,7 @@ stdenv.mkDerivation rec {
     fetchSubmodules = true;
   };
 
-  nativeBuildInputs = [ cmake python git sbcl ];
+  nativeBuildInputs = [ cmake python git sbcl wafHook ];
 
   buildInputs = with llvmPackages; (
     builtins.map (x: stdenv.lib.overrideDerivation x
@@ -32,36 +33,14 @@ stdenv.mkDerivation rec {
 
   NIX_CFLAGS_COMPILE = " -frtti ";
 
-  configurePhase = ''
-    runHook preConfigure
-
-    export CXX=clang++
-    export CC=clang
-
+  postPatch = ''
     echo "
       INSTALL_PATH_PREFIX = '$out'
     " | sed -e 's/^ *//' > wscript.config
-
-    python ./waf configure update_submodules
-
-    runHook postConfigure
   '';
 
-  buildPhase = ''
-    runHook preBuild
-
-    python ./waf build_cboehm
-
-    runHook postBuild
-  '';
-
-  installPhase = ''
-    runHook preInstall
-
-    python ./waf install_cboehm
-
-    runHook postInstall
-  '';
+  buildTargets = "build_cboehm";
+  installTargets = "install_cboehm";
 
   meta = {
     inherit version;
diff --git a/pkgs/development/libraries/aubio/default.nix b/pkgs/development/libraries/aubio/default.nix
index 8c8fe25f500..01ca9a3ec83 100644
--- a/pkgs/development/libraries/aubio/default.nix
+++ b/pkgs/development/libraries/aubio/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, alsaLib, fftw, libjack2, libsamplerate
-, libsndfile, pkgconfig, python
+, libsndfile, pkgconfig, python, wafHook
 }:
 
 stdenv.mkDerivation rec {
@@ -10,15 +10,9 @@ stdenv.mkDerivation rec {
     sha256 = "0hd0kzfmr46am00ygxar8alrldv92c5azqy701iilfmbqpz4mvfb";
   };
 
-  nativeBuildInputs = [ pkgconfig python ];
+  nativeBuildInputs = [ pkgconfig python wafHook ];
   buildInputs = [ alsaLib fftw libjack2 libsamplerate libsndfile ];
 
-  configurePhase = "python waf configure --prefix=$out";
-
-  buildPhase = "python waf";
-
-  installPhase = "python waf install";
-
   meta = with stdenv.lib; {
     description = "Library for audio labelling";
     homepage = https://aubio.org/;
diff --git a/pkgs/development/libraries/audio/lilv/default.nix b/pkgs/development/libraries/audio/lilv/default.nix
index f28e374c852..373d50a0a43 100644
--- a/pkgs/development/libraries/audio/lilv/default.nix
+++ b/pkgs/development/libraries/audio/lilv/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, lv2, pkgconfig, python, serd, sord, sratom }:
+{ stdenv, fetchurl, lv2, pkgconfig, python, serd, sord, sratom, wafHook }:
 
 stdenv.mkDerivation rec {
   name = "lilv-${version}";
@@ -9,15 +9,9 @@ stdenv.mkDerivation rec {
     sha256 = "0f24cd7wkk5l969857g2ydz2kjjrkvvddg1g87xzzs78lsvq8fy3";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkgconfig wafHook ];
   buildInputs = [ lv2 python serd sord sratom ];
 
-  configurePhase = "${python.interpreter} waf configure --prefix=$out";
-
-  buildPhase = "${python.interpreter} waf";
-
-  installPhase = "${python.interpreter} waf install";
-
   meta = with stdenv.lib; {
     homepage = http://drobilla.net/software/lilv;
     description = "A C library to make the use of LV2 plugins";
diff --git a/pkgs/development/libraries/audio/lv2/default.nix b/pkgs/development/libraries/audio/lv2/default.nix
index 3df8f5e3078..5b98a88a8fb 100644
--- a/pkgs/development/libraries/audio/lv2/default.nix
+++ b/pkgs/development/libraries/audio/lv2/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, gtk2, libsndfile, pkgconfig, python }:
+{ stdenv, fetchurl, gtk2, libsndfile, pkgconfig, python, wafHook }:
 
 stdenv.mkDerivation rec {
   name = "lv2-${version}";
@@ -9,15 +9,9 @@ stdenv.mkDerivation rec {
     sha256 = "0chxwys3vnn3nxc9x2vchm74s9sx0vfra6y893byy12ci61jc1dq";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkgconfig wafHook ];
   buildInputs = [ gtk2 libsndfile python ];
 
-  configurePhase = "${python.interpreter} waf configure --prefix=$out";
-
-  buildPhase = "${python.interpreter} waf";
-
-  installPhase = "${python.interpreter} waf install";
-
   meta = with stdenv.lib; {
     homepage = http://lv2plug.in;
     description = "A plugin standard for audio systems";
diff --git a/pkgs/development/libraries/audio/lv2/unstable.nix b/pkgs/development/libraries/audio/lv2/unstable.nix
index 4a632d07006..81cc868f52c 100644
--- a/pkgs/development/libraries/audio/lv2/unstable.nix
+++ b/pkgs/development/libraries/audio/lv2/unstable.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchgit, gtk2, libsndfile, pkgconfig, python }:
+{ stdenv, fetchgit, gtk2, libsndfile, pkgconfig, python, wafHook }:
 
 stdenv.mkDerivation rec {
   name = "lv2-unstable-${version}";
@@ -10,15 +10,9 @@ stdenv.mkDerivation rec {
     sha256 = "1gp2rd99dfmpibvpixrqn115mrhybzf3if3h8bssf6siyi13f29r";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkgconfig wafHook ];
   buildInputs = [ gtk2 libsndfile python ];
 
-  configurePhase = "${python.interpreter} waf configure --prefix=$out";
-
-  buildPhase = "${python.interpreter} waf";
-
-  installPhase = "${python.interpreter} waf install";
-
   meta = with stdenv.lib; {
     homepage = http://lv2plug.in;
     description = "A plugin standard for audio systems";
diff --git a/pkgs/development/libraries/audio/lvtk/default.nix b/pkgs/development/libraries/audio/lvtk/default.nix
index c74c8caa23f..b6203a159e6 100644
--- a/pkgs/development/libraries/audio/lvtk/default.nix
+++ b/pkgs/development/libraries/audio/lvtk/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, boost, gtkmm2, lv2, pkgconfig, python }:
+{ stdenv, fetchurl, boost, gtkmm2, lv2, pkgconfig, python, wafHook }:
 
 stdenv.mkDerivation rec {
   name = "lvtk-${version}";
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
     sha256 = "03nbj2cqcklqwh50zj2gwm07crh5iwqbpxbpzwbg5hvgl4k4rnjd";
   };
 
-  nativeBuildInputs = [ pkgconfig python ];
+  nativeBuildInputs = [ pkgconfig python wafHook ];
   buildInputs = [ boost gtkmm2 lv2 ];
 
   enableParallelBuilding = true;
@@ -19,15 +19,10 @@ stdenv.mkDerivation rec {
     sed -i '/target[ ]*= "ttl2c"/ ilib=["boost_system"],' tools/wscript_build
   '';
 
-  configurePhase = ''
-    python waf configure --prefix=$out \
-      --boost-includes="${boost.dev}/include" \
-      --boost-libs="${boost.out}/lib"
-  '';
-
-  buildPhase = "python waf";
-
-  installPhase = "python waf install";
+  configureFlags = [
+    "--boost-includes=${boost.dev}/include"
+    "--boost-libs=${boost.out}/lib"
+  ];
 
   meta = with stdenv.lib; {
     description = "A set C++ wrappers around the LV2 C API";
diff --git a/pkgs/development/libraries/audio/ntk/default.nix b/pkgs/development/libraries/audio/ntk/default.nix
index 6e7cb8d020b..ddd3940098a 100644
--- a/pkgs/development/libraries/audio/ntk/default.nix
+++ b/pkgs/development/libraries/audio/ntk/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, cairo, libjpeg, libXft, pkgconfig, python2 }:
+{ stdenv, fetchFromGitHub, cairo, libjpeg, libXft, pkgconfig, python2, wafHook }:
 
 stdenv.mkDerivation rec {
   name = "ntk-${version}";
@@ -10,20 +10,11 @@ stdenv.mkDerivation rec {
     sha256 = "0j38mhnfqy6swcrnc5zxcwlqi8b1pgklyghxk6qs1lf4japv2zc0";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkgconfig wafHook ];
   buildInputs = [
     cairo libjpeg libXft python2
   ];
 
-  buildPhase = ''
-    python waf configure --prefix=$out
-    python waf
-  '';
-
-  installPhase = ''
-    python waf install
-  '';
-
   meta = {
     description = "Fork of FLTK 1.3.0 with additional functionality";
     version = "${version}";
diff --git a/pkgs/development/libraries/audio/raul/default.nix b/pkgs/development/libraries/audio/raul/default.nix
index 63e3ae36028..51234a415fd 100644
--- a/pkgs/development/libraries/audio/raul/default.nix
+++ b/pkgs/development/libraries/audio/raul/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchgit, boost, gtk2, pkgconfig, python }:
+{ stdenv, fetchgit, boost, gtk2, pkgconfig, python, wafHook }:
 
 stdenv.mkDerivation rec {
   name = "raul-unstable-${rev}";
@@ -10,15 +10,9 @@ stdenv.mkDerivation rec {
     sha256 = "04fajrass3ymr72flx5js5vxc601ccrmx8ny8scp0rw7j0igyjdr";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkgconfig wafHook ];
   buildInputs = [ boost gtk2 python ];
 
-  configurePhase = "${python.interpreter} waf configure --prefix=$out";
-
-  buildPhase = "${python.interpreter} waf";
-
-  installPhase = "${python.interpreter} waf install";
-
   meta = with stdenv.lib; {
     description = "A C++ utility library primarily aimed at audio/musical applications";
     homepage = http://drobilla.net/software/raul;
diff --git a/pkgs/development/libraries/audio/sratom/default.nix b/pkgs/development/libraries/audio/sratom/default.nix
index acfbced5272..09a6230184a 100644
--- a/pkgs/development/libraries/audio/sratom/default.nix
+++ b/pkgs/development/libraries/audio/sratom/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, lv2, pkgconfig, python, serd, sord }:
+{ stdenv, fetchurl, lv2, pkgconfig, python, serd, sord, wafHook }:
 
 stdenv.mkDerivation rec {
   name = "sratom-${version}";
@@ -9,15 +9,9 @@ stdenv.mkDerivation rec {
     sha256 = "0lz883ravxjf7r9wwbx2gx9m8vhyiavxrl9jdxfppjxnsralll8a";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkgconfig wafHook ];
   buildInputs = [ lv2 python serd sord ];
 
-  configurePhase = "${python.interpreter} waf configure --prefix=$out";
-
-  buildPhase = "${python.interpreter} waf";
-
-  installPhase = "${python.interpreter} waf install";
-
   meta = with stdenv.lib; {
     homepage = http://drobilla.net/software/sratom;
     description = "A library for serialising LV2 atoms to/from RDF";
diff --git a/pkgs/development/libraries/audio/suil/default.nix b/pkgs/development/libraries/audio/suil/default.nix
index e29c7b5cb12..10d650d6642 100644
--- a/pkgs/development/libraries/audio/suil/default.nix
+++ b/pkgs/development/libraries/audio/suil/default.nix
@@ -1,4 +1,5 @@
 { stdenv, lib, fetchurl, gtk2, lv2, pkgconfig, python, serd, sord, sratom
+, wafHook
 , withQt4 ? true, qt4 ? null
 , withQt5 ? false, qt5 ? null }:
 
@@ -16,17 +17,11 @@ stdenv.mkDerivation rec {
     sha256 = "0j489gm3fhnmwmbgw30bvd4byw1vsy4yazdlnji8jzhcz0qwb5cq";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkgconfig wafHook ];
   buildInputs = [ gtk2 lv2 python serd sord sratom ]
     ++ (lib.optionals withQt4 [ qt4 ])
     ++ (lib.optionals withQt5 (with qt5; [ qtbase qttools ]));
 
-  configurePhase = "python waf configure --prefix=$out";
-
-  buildPhase = "python waf";
-
-  installPhase = "python waf install";
-
   meta = with stdenv.lib; {
     homepage = http://drobilla.net/software/suil;
     description = "A lightweight C library for loading and wrapping LV2 plugin UIs";
diff --git a/pkgs/development/libraries/ganv/default.nix b/pkgs/development/libraries/ganv/default.nix
index 5a21af6a2b3..58356f0bc67 100644
--- a/pkgs/development/libraries/ganv/default.nix
+++ b/pkgs/development/libraries/ganv/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchgit, graphviz, gtk2, gtkmm2, pkgconfig, python }:
+{ stdenv, fetchgit, graphviz, gtk2, gtkmm2, pkgconfig, python, wafHook }:
 
 stdenv.mkDerivation rec {
   name = "ganv-unstable-${rev}";
@@ -10,15 +10,9 @@ stdenv.mkDerivation rec {
     sha256 = "0xmbykdl42jn9cgzrqrys5lng67d26nk5xq10wkkvjqldiwdck56";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkgconfig wafHook ];
   buildInputs = [ graphviz gtk2 gtkmm2 python ];
 
-  configurePhase = "${python.interpreter} waf configure --prefix=$out";
-
-  buildPhase = "${python.interpreter} waf";
-
-  installPhase = "${python.interpreter} waf install";
-
   meta = with stdenv.lib; {
     description = "An interactive Gtk canvas widget for graph-based interfaces";
     homepage = http://drobilla.net;
diff --git a/pkgs/development/libraries/ndn-cxx/default.nix b/pkgs/development/libraries/ndn-cxx/default.nix
index a8d7f654a9f..923bc61f67d 100644
--- a/pkgs/development/libraries/ndn-cxx/default.nix
+++ b/pkgs/development/libraries/ndn-cxx/default.nix
@@ -1,4 +1,5 @@
-{ stdenv, fetchFromGitHub, openssl, doxygen, boost, sqlite, pkgconfig, python, pythonPackages }:
+{ stdenv, fetchFromGitHub, openssl, doxygen
+, boost, sqlite, pkgconfig, python, pythonPackages, wafHook }:
 let
   version = "0.6.3";
 in
@@ -10,22 +11,13 @@ stdenv.mkDerivation {
     rev = "a3bf4319ed483a4a6fe2c96b79ec4491d7217f00";
     sha256 = "076jhrjigisqz5n8dgxwd5fhimg69zhm834m7w9yvf9afgzrr50h";
   };
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkgconfig wafHook ];
   buildInputs = [ openssl doxygen boost sqlite python pythonPackages.sphinx];
-  preConfigure = ''
-    patchShebangs waf
-    ./waf configure \
-      --prefix=$out \
-      --with-openssl=${openssl.dev} \
-      --boost-includes=${boost.dev}/include \
-      --boost-libs=${boost.out}/lib
-  '';
-  buildPhase = ''
-    ./waf
-  '';
-  installPhase = ''
-    ./waf install
-  '';
+  configureFlags = [
+    "--with-openssl=${openssl.dev}"
+    "--boost-includes=${boost.dev}/include"
+    "--boost-libs=${boost.out}/lib"
+  ];
   meta = with stdenv.lib; {
     homepage = http://named-data.net/;
     description = "A Named Data Neworking (NDN) or Content Centric Networking (CCN) abstraction";
diff --git a/pkgs/development/libraries/science/networking/ns3/default.nix b/pkgs/development/libraries/science/networking/ns3/default.nix
index 632380328db..d5c3ca2457a 100644
--- a/pkgs/development/libraries/science/networking/ns3/default.nix
+++ b/pkgs/development/libraries/science/networking/ns3/default.nix
@@ -1,6 +1,7 @@
 { stdenv
 , fetchFromGitHub
 , python
+, wafHook
 
 # for binding generation
 , castxml ? null
@@ -50,6 +51,7 @@ stdenv.mkDerivation rec {
     sha256 = "17kzfjpgw2mvyx1c9bxccnvw67jpk09fxmcnlkqx9xisk10qnhng";
   };
 
+  nativeBuildInputs = [ wafHook ];
   # ncurses is a hidden dependency of waf when checking python
   buildInputs = lib.optionals generateBindings [ castxml ncurses ]
     ++ stdenv.lib.optional enableDoxygen [ doxygen graphviz imagemagick ]
@@ -58,12 +60,9 @@ stdenv.mkDerivation rec {
   propagatedBuildInputs = [ gcc6 pythonEnv ];
 
   postPatch = ''
-    patchShebangs ./waf
     patchShebangs doc/ns3_html_theme/get_version.sh
   '';
 
-  configureScript = "${python.interpreter} ./waf configure";
-
   configureFlags = with stdenv.lib; [
       "--enable-modules=${stdenv.lib.concatStringsSep "," modules}"
       "--with-python=${pythonEnv.interpreter}"
@@ -74,12 +73,9 @@ stdenv.mkDerivation rec {
   ++ optional doCheck " --enable-tests "
   ;
 
-  postBuild = with stdenv.lib; let flags = concatStringsSep ";" (
-      optional enableDoxygen "./waf doxygen"
-      ++ optional withManual "./waf sphinx"
-    );
-    in "${flags}"
-  ;
+  buildTargets = "build"
+    + lib.optionalString enableDoxygen " doxygen"
+    + lib.optionalString withManual "sphinx";
 
   doCheck = true;
 
diff --git a/pkgs/development/libraries/serd/default.nix b/pkgs/development/libraries/serd/default.nix
index 67e0ff31c8e..533fefa9f19 100644
--- a/pkgs/development/libraries/serd/default.nix
+++ b/pkgs/development/libraries/serd/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, python }:
+{ stdenv, fetchurl, pkgconfig, python, wafHook }:
 
 stdenv.mkDerivation rec {
   name = "serd-${version}";
@@ -9,13 +9,7 @@ stdenv.mkDerivation rec {
     sha256 = "1yyfyvc6kwagi5w43ljp1bbjdvdpmgpds74lmjxycm91bkx0xyvf";
   };
 
-  nativeBuildInputs = [ pkgconfig python ];
-
-  configurePhase = "python waf configure --prefix=$out";
-
-  buildPhase = "python waf";
-
-  installPhase = "python waf install";
+  nativeBuildInputs = [ pkgconfig python wafHook ];
 
   meta = with stdenv.lib; {
     homepage = http://drobilla.net/software/serd;
diff --git a/pkgs/development/libraries/sord/default.nix b/pkgs/development/libraries/sord/default.nix
index 465ec5b8fe8..10258e791ba 100644
--- a/pkgs/development/libraries/sord/default.nix
+++ b/pkgs/development/libraries/sord/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, python, serd, pcre }:
+{ stdenv, fetchurl, pkgconfig, python, serd, pcre, wafHook }:
 
 stdenv.mkDerivation rec {
   name = "sord-${version}";
@@ -9,15 +9,9 @@ stdenv.mkDerivation rec {
     sha256 = "13fshxwpipjrvsah1m2jw1kf022z2q5vpw24bzcznglgvms13x89";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkgconfig wafHook ];
   buildInputs = [ python serd pcre ];
 
-  configurePhase = "${python.interpreter} waf configure --prefix=$out";
-
-  buildPhase = "${python.interpreter} waf";
-
-  installPhase = "${python.interpreter} waf install";
-
   meta = with stdenv.lib; {
     homepage = http://drobilla.net/software/sord;
     description = "A lightweight C library for storing RDF data in memory";
diff --git a/pkgs/development/libraries/termbox/default.nix b/pkgs/development/libraries/termbox/default.nix
index 0898289978a..469a6a4c96f 100644
--- a/pkgs/development/libraries/termbox/default.nix
+++ b/pkgs/development/libraries/termbox/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, python3 }:
+{ stdenv, fetchFromGitHub, python3, wafHook }:
 
 stdenv.mkDerivation rec {
   name = "termbox-${version}";
@@ -9,10 +9,7 @@ stdenv.mkDerivation rec {
     rev = "v${version}";
     sha256 = "08yqxzb8fny8806p7x8a6f3phhlbfqdd7dhkv25calswj7w1ssvs";
   };
-  nativeBuildInputs = [ python3 ];
-  configurePhase = "python3 ./waf configure --prefix=$out";
-  buildPhase = "python3 ./waf build";
-  installPhase = "python3 ./waf install --destdir=$out";
+  nativeBuildInputs = [ python3 wafHook ];
   meta = with stdenv.lib; {
     description = "Library for writing text-based user interfaces";
     license = licenses.mit;
@@ -21,4 +18,3 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ fgaz ];
   };
 }
-
diff --git a/pkgs/misc/emulators/wxmupen64plus/default.nix b/pkgs/misc/emulators/wxmupen64plus/default.nix
index 7be91176318..7dc374685a3 100644
--- a/pkgs/misc/emulators/wxmupen64plus/default.nix
+++ b/pkgs/misc/emulators/wxmupen64plus/default.nix
@@ -1,4 +1,5 @@
-{stdenv, fetchurl, python, wxGTK29, mupen64plus, SDL, libX11, libGLU_combined}:
+{ stdenv, fetchurl, python, wxGTK29, mupen64plus, SDL, libX11, libGLU_combined
+, wafHook }:
 
 stdenv.mkDerivation {
   name = "wxmupen64plus-0.3";
@@ -7,18 +8,17 @@ stdenv.mkDerivation {
     sha256 = "1mnxi4k011dd300k35li2p6x4wccwi6im21qz8dkznnz397ps67c";
   };
 
+  nativeBuildInputs = [ wafHook ];
   buildInputs = [ python wxGTK29 SDL libX11 libGLU_combined ];
 
-  configurePhase = ''
+  preConfigure = ''
     tar xf ${mupen64plus.src}
     APIDIR=$(eval echo `pwd`/mupen64plus*/source/mupen64plus-core/src/api)
     export CXXFLAGS="-I${libX11.dev}/include/X11 -DLIBDIR=\\\"${mupen64plus}/lib/\\\""
     export LDFLAGS="-lwx_gtk2u_adv-2.9"
-    python waf configure --mupenapi=$APIDIR --wxconfig=`type -P wx-config` --prefix=$out
-  '';
 
-  buildPhase = "python waf";
-  installPhase = "python waf install";
+    configureFlagsArray+=("--mupenapi=$APIDIR" "--wxconfig=`type -P wx-config`")
+  '';
 
   meta = {
     description = "GUI for the Mupen64Plus 2.0 emulator";
diff --git a/pkgs/misc/jackaudio/default.nix b/pkgs/misc/jackaudio/default.nix
index efd5aa4e919..d264b7f3279 100644
--- a/pkgs/misc/jackaudio/default.nix
+++ b/pkgs/misc/jackaudio/default.nix
@@ -1,5 +1,6 @@
 { stdenv, fetchFromGitHub, pkgconfig, python2Packages, makeWrapper
 , bash, libsamplerate, libsndfile, readline, eigen, celt
+, wafHook
 # Darwin Dependencies
 , aften, AudioToolbox, CoreAudio, CoreFoundation
 
@@ -35,13 +36,13 @@ stdenv.mkDerivation rec {
     sha256 = "0ynpyn0l77m94b50g7ysl795nvam3ra65wx5zb46nxspgbf6wnkh";
   };
 
-  nativeBuildInputs = [ pkgconfig python makeWrapper ];
+  nativeBuildInputs = [ pkgconfig python makeWrapper wafHook ];
   buildInputs = [ libsamplerate libsndfile readline eigen celt
     optDbus optPythonDBus optLibffado optAlsaLib optLibopus
-  ] ++ stdenv.lib.optionals stdenv.isDarwin [ aften AudioToolbox CoreAudio CoreFoundation ];
+  ] ++ optionals stdenv.isDarwin [ aften AudioToolbox CoreAudio CoreFoundation ];
 
   # CoreFoundation 10.10 doesn't include CFNotificationCenter.h yet.
-  patches = stdenv.lib.optionals stdenv.isDarwin [ ./darwin-cf.patch ];
+  patches = optionals stdenv.isDarwin [ ./darwin-cf.patch ];
 
   prePatch = ''
     substituteInPlace svnversion_regenerate.sh \
@@ -51,30 +52,18 @@ stdenv.mkDerivation rec {
   # It looks like one of the frameworks depends on <CoreFoundation/CFAttributedString.h>
   # since frameworks are impure we also have to use the impure CoreFoundation here.
   # FIXME: remove when CoreFoundation is updated to 10.11
-  preConfigure = stdenv.lib.optionalString stdenv.isDarwin ''
+  preConfigure = optionalString stdenv.isDarwin ''
     export NIX_CFLAGS_COMPILE="-F${CoreFoundation}/Library/Frameworks $NIX_CFLAGS_COMPILE"
   '';
 
-  configurePhase = ''
-    runHook preConfigure
+  configureFlags = [
+    "--classic"
+    "--autostart=${if (optDbus != null) then "dbus" else "classic"}"
+  ] ++ optional (optDbus != null) "--dbus"
+    ++ optional (optLibffado != null) "--firewire"
+    ++ optional (optAlsaLib != null) "--alsa";
 
-    python waf configure --prefix=$out \
-      ${optionalString (optDbus != null) "--dbus"} \
-      --classic \
-      ${optionalString (optLibffado != null) "--firewire"} \
-      ${optionalString (optAlsaLib != null) "--alsa"} \
-      --autostart=${if (optDbus != null) then "dbus" else "classic"} \
-
-    runHook postConfigure
-  '';
-
-  buildPhase = ''
-    python waf build
-  '';
-
-  installPhase = ''
-    python waf install
-  '' + (if libOnly then ''
+  postInstall = (if libOnly then ''
     rm -rf $out/{bin,share}
     rm -rf $out/lib/{jack,libjacknet*,libjackserver*}
   '' else ''
diff --git a/pkgs/os-specific/linux/pflask/default.nix b/pkgs/os-specific/linux/pflask/default.nix
index b4f93e9de3f..1155a793b01 100644
--- a/pkgs/os-specific/linux/pflask/default.nix
+++ b/pkgs/os-specific/linux/pflask/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, python, waf }:
+{ lib, stdenv, fetchurl, python, wafHook }:
 
 stdenv.mkDerivation rec {
   name = "pflask-${version}";
@@ -10,19 +10,9 @@ stdenv.mkDerivation rec {
     sha256 = "2545fca37f9da484b46b6fb5e3a9bbba6526a9725189fe4af5227ef6e6fca440";
   };
 
+  nativeBuildInputs = [ wafHook ];
   buildInputs = [ python ];
 
-  configurePhase = ''
-    ln -s ${waf} waf
-    python waf configure --prefix=$out
-  '';
-  buildPhase = ''
-    python waf build
-  '';
-  installPhase = ''
-    python waf install
-  '';
-
   meta = {
     description = "Lightweight process containers for Linux";
     homepage    = "https://ghedo.github.io/pflask/";
diff --git a/pkgs/tools/graphics/blockhash/default.nix b/pkgs/tools/graphics/blockhash/default.nix
index 5ddf8185b3c..ad72933cc77 100644
--- a/pkgs/tools/graphics/blockhash/default.nix
+++ b/pkgs/tools/graphics/blockhash/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, python, pkgconfig, imagemagick }:
+{ stdenv, fetchFromGitHub, python, pkgconfig, imagemagick, wafHook }:
 
 stdenv.mkDerivation rec {
   name = "blockhash-${version}";
@@ -11,13 +11,9 @@ stdenv.mkDerivation rec {
     sha256 = "0m7ikppl42iicgmwsb7baajmag7v0p1ab06xckifvrr0zm21bq9p";
   };
 
-  nativeBuildInputs = [ python pkgconfig ];
+  nativeBuildInputs = [ python pkgconfig wafHook ];
   buildInputs = [ imagemagick ];
 
-  configurePhase = "python waf configure --prefix=$out";
-  buildPhase = "python waf";
-  installPhase = "python waf install";
-
   meta = with stdenv.lib; {
     homepage = "http://blockhash.io/";
     description = ''
diff --git a/pkgs/tools/graphics/glmark2/default.nix b/pkgs/tools/graphics/glmark2/default.nix
index 14972fc5e56..70821468992 100644
--- a/pkgs/tools/graphics/glmark2/default.nix
+++ b/pkgs/tools/graphics/glmark2/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchFromGitHub, pkgconfig, libjpeg, libpng, xorg, libX11, libGL, libdrm,
-  python27, wayland, udev, mesa_noglu }:
+  python27, wayland, udev, mesa_noglu, wafHook }:
 
 stdenv.mkDerivation rec {
   name = "glmark2-${version}";
@@ -12,19 +12,12 @@ stdenv.mkDerivation rec {
     sha256 = "076l75rfl6pnp1wgiwlaihy1vg2advg1z8bi0x84kk259kldgvwn";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkgconfig wafHook ];
   buildInputs = [
     libjpeg libpng xorg.libxcb libX11 libGL libdrm python27 wayland udev mesa_noglu
   ];
 
-  buildPhase = ''
-    python ./waf configure --prefix=$out --with-flavors x11-gl,x11-glesv2,drm-gl,drm-glesv2,wayland-gl,wayland-glesv2
-    python2 ./waf
-  '';
-
-  installPhase = ''
-    python2 ./waf install --destdir="$pkgdir/"
-  '';
+  configureFlags = ["--with-flavors=x11-gl,x11-glesv2,drm-gl,drm-glesv2,wayland-gl,wayland-glesv2"];
 
   meta = with stdenv.lib; {
     description = "OpenGL (ES) 2.0 benchmark";
diff --git a/pkgs/tools/networking/weighttp/default.nix b/pkgs/tools/networking/weighttp/default.nix
index 069c040f8ee..1e93948be68 100644
--- a/pkgs/tools/networking/weighttp/default.nix
+++ b/pkgs/tools/networking/weighttp/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchgit, python, libev}:
+{ stdenv, fetchgit, python, libev, wafHook }:
 stdenv.mkDerivation rec {
   name = "weighttp-${version}";
   version = "0.4";
@@ -9,12 +9,8 @@ stdenv.mkDerivation rec {
     sha256 = "14yjmdx9p8g8c3zlrx5qid8k156lsagfwhl3ny54162nxjf7kzgr";
   };
 
+  nativeBuildInputs = [ wafHook ];
   buildInputs = [ python libev ];
-  installPhase = ''
-    python waf configure --prefix=$out
-    python waf build
-    python waf install
-  '';
 
   meta = {
     platforms = stdenv.lib.platforms.unix;