diff --git a/src/nix-env/main.cc b/src/nix-env/main.cc
index 71c22d1a51e0197d2ce4b93a4945d861d9467887..0d84bc610dfde1c9133e7ea730427bb69cdb5acc 100644
--- a/src/nix-env/main.cc
+++ b/src/nix-env/main.cc
@@ -11,6 +11,7 @@
 
 #include <cerrno>
 #include <ctime>
+#include <algorithm>
 
 
 typedef enum {
@@ -871,7 +872,7 @@ static void opDefaultExpr(Globals & globals,
 
 
 static string needArg(Strings::iterator & i,
-    const Strings & args, const string & arg)
+    Strings & args, const string & arg)
 {
     ++i;
     if (i == args.end()) throw UsageError(
diff --git a/src/nix-env/profiles.cc b/src/nix-env/profiles.cc
index 1039634d60acb3f7ae77e6123a7fa9892e91573d..6db291b3d21c68a7fbc53ac16a21c1369b87db36 100644
--- a/src/nix-env/profiles.cc
+++ b/src/nix-env/profiles.cc
@@ -4,6 +4,7 @@
 #include <sys/stat.h>
 #include <unistd.h>
 #include <errno.h>
+#include <stdio.h>
 
 
 static bool cmpGensByNumber(const Generation & a, const Generation & b)
diff --git a/src/nix-store/main.cc b/src/nix-store/main.cc
index 87fbe58b1ba30191311c5cf0b5cf40f7f9f97757..a6ff117cb47bdac308a63deae68937a54fb3e959 100644
--- a/src/nix-store/main.cc
+++ b/src/nix-store/main.cc
@@ -1,4 +1,5 @@
 #include <iostream>
+#include <algorithm>
 
 #include "globals.hh"
 #include "build.hh"