diff --git a/src/download-via-ssh/download-via-ssh.cc b/src/download-via-ssh/download-via-ssh.cc
index 164c24b49e268b49c51de01025af3b13e384918f..f71cf56507b852f505a05ef2b195efebe2b9537f 100644
--- a/src/download-via-ssh/download-via-ssh.cc
+++ b/src/download-via-ssh/download-via-ssh.cc
@@ -9,7 +9,7 @@
 #include "store-api.hh"
 
 #include <iostream>
-#include <stdlib.h>
+#include <cstdlib>
 #include <unistd.h>
 
 using namespace nix;
diff --git a/src/libexpr/parser.y b/src/libexpr/parser.y
index dcb270b862a3a76effd74cf1d28f7356cced3ace..ff174815e71f9709d52fc3ea56626ed399345417 100644
--- a/src/libexpr/parser.y
+++ b/src/libexpr/parser.y
@@ -53,10 +53,6 @@ namespace nix {
 #include "parser-tab.hh"
 #include "lexer-tab.hh"
 
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
 YY_DECL;
 
 using namespace nix;
diff --git a/src/libmain/shared.cc b/src/libmain/shared.cc
index 9c74a614e2e4784014ce254ed5a8edf333188fcb..082705d9ed5ee8deea6ed4adf63401d53c9eec94 100644
--- a/src/libmain/shared.cc
+++ b/src/libmain/shared.cc
@@ -11,7 +11,7 @@
 #include <exception>
 #include <algorithm>
 
-#include <stdlib.h>
+#include <cstdlib>
 #include <sys/time.h>
 #include <sys/stat.h>
 #include <unistd.h>
diff --git a/src/libstore/optimise-store.cc b/src/libstore/optimise-store.cc
index fb56076765101f58b42bcfc6e85a86009cea8d01..55c252b9b2e3f7a27ad6e94d939f7da33e246faf 100644
--- a/src/libstore/optimise-store.cc
+++ b/src/libstore/optimise-store.cc
@@ -4,7 +4,7 @@
 #include "local-store.hh"
 #include "globals.hh"
 
-#include <stdlib.h>
+#include <cstdlib>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <unistd.h>
diff --git a/src/libutil/monitor-fd.hh b/src/libutil/monitor-fd.hh
index e99869effe1a8b902a01122425378b215e4e3afd..6f01ccd91a43ab222987eb17a42e0434a95ce8b3 100644
--- a/src/libutil/monitor-fd.hh
+++ b/src/libutil/monitor-fd.hh
@@ -3,7 +3,7 @@
 #include <thread>
 #include <atomic>
 
-#include <stdlib.h>
+#include <cstdlib>
 #include <poll.h>
 #include <sys/types.h>
 #include <unistd.h>