diff --git a/pkgs/applications/version-management/rcs/default.nix b/pkgs/applications/version-management/rcs/default.nix
index 6fb111c47a33..6efd5ddee9e6 100644
--- a/pkgs/applications/version-management/rcs/default.nix
+++ b/pkgs/applications/version-management/rcs/default.nix
@@ -2,8 +2,18 @@
 
 stdenv.mkDerivation {
   name = "rcs-5.7";
+  
   src = fetchurl {
     url = ftp://ftp.cs.purdue.edu/pub/RCS/rcs-5.7.tar;
     md5 = "f7b3f106bf87ff6344df38490f6a02c5";
   };
+
+  patches = [ ./no-root.patch ];
+
+  meta = {
+    homepage = http://www.cs.purdue.edu/homes/trinkle/RCS/;
+    description = "Revision Control System, a version management system";
+    maintainers = [ stdenv.lib.maintainers.eelco ];
+    platforms = [ stdenv.lib.platforms.all ];
+  };
 }
diff --git a/pkgs/applications/version-management/rcs/no-root.patch b/pkgs/applications/version-management/rcs/no-root.patch
new file mode 100644
index 000000000000..2fbfc86ff45a
--- /dev/null
+++ b/pkgs/applications/version-management/rcs/no-root.patch
@@ -0,0 +1,23 @@
+In NixOS chroot builds, there is no root account.  So configure should
+not rely on its existence in deciding whether to use getpwuid().
+
+diff -rc -x '*~' rcs-5.7-orig/src/conf.sh rcs-5.7/src/conf.sh
+*** rcs-5.7-orig/src/conf.sh	1995-06-16 08:19:24.000000000 +0200
+--- rcs-5.7/src/conf.sh	2010-02-12 15:22:37.000000000 +0100
+***************
+*** 821,827 ****
+  	a= z=
+  	cat >a.c <<EOF
+  #include "$A_H"
+! int main() { exitmain(!getpwuid(0)); }
+  EOF
+  	$PREPARE_CC || exit
+  	if ($CL a.c $L && $aout) >&2
+--- 821,827 ----
+  	a= z=
+  	cat >a.c <<EOF
+  #include "$A_H"
+! int main() { exitmain(!getpwuid(getuid())); }
+  EOF
+  	$PREPARE_CC || exit
+  	if ($CL a.c $L && $aout) >&2