diff --git a/net-libs/libnfsidmap/Manifest b/net-libs/libnfsidmap/Manifest
deleted file mode 100644
index f14e519..0000000
--- a/net-libs/libnfsidmap/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST libnfsidmap-0.24.tar.gz 328720 RMD160 c1d61b31cc63a8c6c46709b1dfc4e94d22e0eaba SHA1 3ced887b642d33ecabdd751ec7c4fb536347fba1 SHA256 59501432e683336d7a290da13767e92afb5b86f42ea4254041225fe218e8dd47
diff --git a/net-libs/libnfsidmap/files/libnfsidmap-0.19-getgrouplist.patch b/net-libs/libnfsidmap/files/libnfsidmap-0.19-getgrouplist.patch
deleted file mode 100644
index c8cfeb9..0000000
--- a/net-libs/libnfsidmap/files/libnfsidmap-0.19-getgrouplist.patch
+++ /dev/null
@@ -1,112 +0,0 @@
-http://bugs.gentoo.org/169909
-
---- libnfsidmap-0.19/configure.in
-+++ libnfsidmap-0.19/configure.in
-@@ -38,7 +38,7 @@
- 
- # Checks for library functions.
- AC_FUNC_MALLOC
--AC_CHECK_FUNCS([strchr strdup])
-+AC_CHECK_FUNCS([strchr strdup getgrouplist])
- 
- AC_CONFIG_FILES([Makefile])
- AC_OUTPUT(libnfsidmap.pc)
---- libnfsidmap-0.19/nss.c
-+++ libnfsidmap-0.19/nss.c
-@@ -49,6 +49,8 @@
- #include "cfg.h"
- #include <syslog.h>
- 
-+#include "getgrouplist.c"
-+
- /*
-  * NSS Translation Methods
-  *
---- libnfsidmap-0.19/getgrouplist.c
-+++ libnfsidmap-0.19/getgrouplist.c
-@@ -0,0 +1,85 @@
-+/*
-+ *  getgrouplist.c
-+ *
-+ *  if system does not provide the non-standard getgrouplist, we will emulate
-+ *  it via POSIX standard functions
-+ *
-+ * Copyright (c) 1991, 1993
-+ *	The Regents of the University of California.  All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the above copyright
-+ *    notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ *    notice, this list of conditions and the following disclaimer in the
-+ *    documentation and/or other materials provided with the distribution.
-+ * 4. Neither the name of the University nor the names of its contributors
-+ *    may be used to endorse or promote products derived from this software
-+ *    without specific prior written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+ * SUCH DAMAGE.
-+ */
-+
-+#include <sys/types.h>
-+#include <grp.h>
-+#include <string.h>
-+#include <unistd.h>
-+
-+#ifndef HAVE_GETGROUPLIST
-+static
-+int
-+getgrouplist(const char *uname, gid_t agroup, gid_t *groups, int *grpcnt)
-+{
-+	const struct group *grp;
-+	int i, maxgroups, ngroups, ret;
-+
-+	ret = 0;
-+	ngroups = 0;
-+	maxgroups = *grpcnt;
-+	/*
-+	 * When installing primary group, duplicate it;
-+	 * the first element of groups is the effective gid
-+	 * and will be overwritten when a setgid file is executed.
-+	 */
-+	groups[ngroups++] = agroup;
-+	if (maxgroups > 1)
-+		groups[ngroups++] = agroup;
-+	/*
-+	 * Scan the group file to find additional groups.
-+	 */
-+	setgrent();
-+	while ((grp = getgrent()) != NULL) {
-+		for (i = 0; i < ngroups; i++) {
-+			if (grp->gr_gid == groups[i])
-+				goto skip;
-+		}
-+		for (i = 0; grp->gr_mem[i]; i++) {
-+			if (!strcmp(grp->gr_mem[i], uname)) {
-+				if (ngroups >= maxgroups) {
-+					ret = -1;
-+					break;
-+				}
-+				groups[ngroups++] = grp->gr_gid;
-+				break;
-+			}
-+		}
-+skip:
-+		;
-+	}
-+	endgrent();
-+	*grpcnt = ngroups;
-+	return (ret);
-+}
-+#endif
diff --git a/net-libs/libnfsidmap/files/libnfsidmap-0.21-headers.patch b/net-libs/libnfsidmap/files/libnfsidmap-0.21-headers.patch
deleted file mode 100644
index 6ef12d4..0000000
--- a/net-libs/libnfsidmap/files/libnfsidmap-0.21-headers.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-for toupper and such
-
---- a/nss.c
-+++ b/nss.c
-@@ -34,6 +34,7 @@
-  *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-  */
- 
-+#include <ctype.h>
- #include <sys/types.h>
- #include <errno.h>
- #include <unistd.h>
---- a/libnfsidmap.c
-+++ b/libnfsidmap.c
-@@ -37,6 +37,7 @@
-  *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-  */
- 
-+#include <ctype.h>
- #include <sys/types.h>
- #include <errno.h>
- #include <unistd.h>
diff --git a/net-libs/libnfsidmap/libnfsidmap-0.24.ebuild b/net-libs/libnfsidmap/libnfsidmap-0.24.ebuild
deleted file mode 100644
index bd376a4..0000000
--- a/net-libs/libnfsidmap/libnfsidmap-0.24.ebuild
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright 1999-2012 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/net-libs/libnfsidmap/libnfsidmap-0.24.ebuild,v 1.7 2012/05/21 19:13:27 xarthisius Exp $
-
-EAPI="2"
-
-inherit autotools eutils
-
-DESCRIPTION="NFSv4 ID <-> name mapping library"
-HOMEPAGE="http://www.citi.umich.edu/projects/nfsv4/linux/"
-SRC_URI="http://www.citi.umich.edu/projects/nfsv4/linux/libnfsidmap/${P}.tar.gz"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="*"
-IUSE="ldap static-libs"
-
-DEPEND="ldap? ( net-nds/openldap )"
-RDEPEND="${DEPEND}
-	!<net-fs/nfs-utils-1.2.2
-	!net-fs/idmapd"
-
-src_prepare() {
-	epatch "${FILESDIR}"/${PN}-0.19-getgrouplist.patch #169909
-	epatch "${FILESDIR}"/${PN}-0.21-headers.patch
-	eautoreconf
-}
-
-src_configure() {
-	econf \
-		--disable-dependency-tracking \
-		$(use_enable static-libs static) \
-		$(use_enable ldap)
-}
-
-src_install() {
-	emake install DESTDIR="${D}" || die
-	dodoc AUTHORS ChangeLog NEWS README
-
-	insinto /etc
-	doins idmapd.conf || die
-
-	# remove useless files
-	rm -f "${D}"/usr/lib*/libnfsidmap/*.{a,la}
-	use static-libs || rm -f "${D}"/usr/lib*/*.la
-}
diff --git a/net-libs/libnfsidmap/metadata.xml b/net-libs/libnfsidmap/metadata.xml
deleted file mode 100644
index ca66751..0000000
--- a/net-libs/libnfsidmap/metadata.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
-<pkgmetadata>
-<herd>net-fs</herd>
-</pkgmetadata>
