diff --git a/pkgs/applications/science/math/nauty/default.nix b/pkgs/applications/science/math/nauty/default.nix
index 5b431f419261..7351de53cfce 100644
--- a/pkgs/applications/science/math/nauty/default.nix
+++ b/pkgs/applications/science/math/nauty/default.nix
@@ -1,4 +1,8 @@
-{stdenv, fetchurl}:
+{ stdenv
+, lib
+, fetchurl
+, optimize ? false # impure
+}:
 stdenv.mkDerivation rec {
   name = "nauty-${version}";
   version = "26r11";
@@ -7,6 +11,13 @@ stdenv.mkDerivation rec {
     sha256 = "05z6mk7c31j70md83396cdjmvzzip1hqb88pfszzc6k4gy8h3m2y";
   };
   outputs = [ "out" "dev" ];
+  configureFlags = lib.optionals (!optimize) [
+    # Prevent nauty from sniffing some cpu features. While those are very
+    # widely available, it can lead to nasty bugs when they are not available:
+    # https://groups.google.com/forum/#!topic/sage-packaging/Pe4SRDNYlhA
+    "--disable-popcnt"
+    "--disable-clz"
+  ];
   buildInputs = [];
   installPhase = ''
     mkdir -p "$out"/{bin,share/doc/nauty} "$dev"/{lib,include/nauty}
@@ -14,18 +25,18 @@ stdenv.mkDerivation rec {
     find . -type f -perm -111 \! -name '*.*' \! -name configure -exec cp '{}' "$out/bin" \;
     cp [Rr][Ee][Aa][Dd]* COPYRIGHT This* [Cc]hange* "$out/share/doc/nauty"
 
-    cp *.h $dev/include/nauty
+    cp *.h "$dev/include/nauty"
     for i in *.a; do
       cp "$i" "$dev/lib/lib$i";
     done
   '';
   checkTarget = "checks";
-  meta = {
+  meta = with lib; {
     inherit version;
     description = ''Programs for computing automorphism groups of graphs and digraphs'';
-    license = stdenv.lib.licenses.asl20;
-    maintainers = [stdenv.lib.maintainers.raskin];
-    platforms = stdenv.lib.platforms.linux;
+    license = licenses.asl20;
+    maintainers = with maintainers; [ raskin timokau ];
+    platforms = platforms.linux;
     homepage = http://pallini.di.uniroma1.it/;
   };
 }