diff --git a/package/utils/coreutils/Makefile b/package/utils/coreutils/Makefile
new file mode 100644
index 000000000000..d1af3ce962f1
--- /dev/null
+++ b/package/utils/coreutils/Makefile
@@ -0,0 +1,153 @@
+#
+# Copyright (C) 2008-2014 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=coreutils
+PKG_VERSION:=9.1
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=@GNU/coreutils
+PKG_HASH:=61a1f410d78ba7e7f37a5a4f50e6d1320aca33375484a3255eddf17a38580423
+
+PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
+PKG_LICENSE:=GPL-3.0-or-later
+PKG_LICENSE_FILES:=COPYING
+PKG_CPE_ID:=cpe:/a:gnu:coreutils
+
+PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+COREUTILS_APPLETS := \
+	base32 base64 basename basenc b2sum cat chcon chgrp chmod chown chroot	\
+	cksum comm cp csplit cut date dd df dir dircolors dirname du echo env	\
+	expand expr factor false fmt fold groups head hostid id install join	\
+	kill link ln logname ls md5sum mkdir mkfifo mknod mktemp mv nice nl	\
+	nohup nproc numfmt od paste pathchk pinky pr printenv printf ptx pwd	\
+	readlink realpath rm rmdir runcon seq sha1sum sha224sum sha256sum	\
+	sha384sum sha512sum shred shuf sleep sort split stat stdbuf stty sum	\
+	sync tac tail tee test timeout touch tr true truncate tsort tty uname	\
+	unexpand uniq unlink uptime users vdir wc who whoami yes
+
+DIR_BIN := \
+	base64 cat chgrp chmod chown cp date dd df echo false kill link ln ls	\
+	mkdir mknod mktemp mv nice printenv pwd rm rmdir sleep stat stty sync	\
+	touch true uname
+
+DIR_USR_BIN := \
+	basename chcon cksum comm cut dirname du env expand expr factor fold	\
+	groups head hostid id install logname md5sum mkfifo nl nohup nproc od	\
+	paste printf readlink realpath runcon seq sha1sum sha256sum sha512sum	\
+	shred shuf sort split sum tac tail tee test timeout tr truncate tty	\
+	unexpand uniq unlink uptime users wc who whoami yes
+
+DIR_USR_SBIN := \
+	chroot
+
+# BusyBox does not provide these yet
+DIR_OTHERS := \
+	base32 b2sum basenc csplit dir dircolors fmt join numfmt pathchk pinky	\
+	pr ptx sha224sum sha384sum stdbuf tsort vdir
+
+$(eval $(foreach a,$(DIR_BIN),ALTS_$(a):=300:/bin/$(a):/usr/libexec/$(a)-coreutils$(newline)))
+$(eval $(foreach a,$(DIR_USR_BIN),ALTS_$(a):=300:/usr/bin/$(a):/usr/libexec/$(a)-coreutils$(newline)))
+$(eval $(foreach a,$(DIR_USR_SBIN),ALTS_$(a):=300:/usr/sbin/$(a):/usr/libexec/$(a)-coreutils$(newline)))
+
+DEPENDS_sort = +libpthread
+DEPENDS_timeout = +librt
+DEPENDS_expr = +libgmp
+DEPENDS_factor = +libgmp
+DEPENDS_cp = +libacl
+DEPENDS_dir = +libacl +libcap
+DEPENDS_install = +libacl
+DEPENDS_ls = +libacl +libcap
+DEPENDS_mv = +libacl
+DEPENDS_vdir = +libacl +libcap
+
+FILES_stdbuf := usr/lib/coreutils/libstdbuf.so
+
+define Package/coreutils/Default
+  SECTION:=utils
+  CATEGORY:=Utilities
+  TITLE:=The GNU core utilities
+  URL:=http://www.gnu.org/software/coreutils/
+endef
+
+define Package/coreutils
+  $(call Package/coreutils/Default)
+  TITLE:=The GNU core utilities
+  MENU:=1
+endef
+
+define Package/coreutils/description
+ Full versions of standard GNU utilities. If an equivalent Busybox applet is
+ available, you should consider compiling that instead as Busybox applets are
+ usually smaller, at the expense of reduced functionality.
+endef
+
+define GenPlugin
+ define Package/$(1)
+   $(call Package/coreutils/Default)
+   DEPENDS:=coreutils $(DEPENDS_$(2))
+   TITLE:=Utility $(2) from the GNU core utilities
+   ALTERNATIVES:=$(ALTS_$(2))
+ endef
+
+ define Package/$(1)/description
+  Full version of standard GNU $(2) utility.
+ endef
+endef
+
+$(foreach a,$(COREUTILS_APPLETS),$(eval $(call GenPlugin,coreutils-$(a),$(a))))
+
+CONFIGURE_VARS += \
+	gl_cv_func_mbrtowc_incomplete_state=yes \
+	gl_cv_func_mbrtowc_retval=yes \
+	gl_cv_func_wcrtomb_retval=yes \
+	ac_cv_header_selinux_context_h=no \
+	ac_cv_header_selinux_flash_h=no \
+	ac_cv_header_selinux_selinux_h=no \
+	ac_cv_search_setfilecon=no
+
+CONFIGURE_ARGS += \
+	--disable-xattr \
+	--enable-install-program=su \
+	--enable-threads=posix \
+	--enable-acl \
+	--disable-assert \
+	--disable-rpath \
+	--disable-libsmack \
+	--enable-libcap \
+	--without-linux-crypto \
+	--without-openssl \
+	--$(if $(CONFIG_USE_MUSL),with,without)-included-regex \
+	--without-selinux \
+	--with-gmp
+
+define Package/coreutils/install
+	true
+endef
+
+define BuildPlugin
+  define Package/$(1)/install
+	$(INSTALL_DIR) $$(1)/usr/$(if $(ALTS_$(2)),libexec,bin)
+	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/$(2) $$(1)/usr/$(if $(ALTS_$(2)),libexec/$(2)-coreutils,bin/$(2))
+	$(foreach f,$(FILES_$(2)),
+		$(INSTALL_DIR) $$(1)/$(dir $(f))
+		$(INSTALL_BIN) $(PKG_INSTALL_DIR)/$(f) $$(1)/$(f)
+	)
+  endef
+
+  $$(eval $$(call BuildPackage,$(1)))
+endef
+
+$(eval $(call BuildPackage,coreutils))
+
+$(foreach a,$(COREUTILS_APPLETS),$(eval $(call BuildPlugin,coreutils-$(a),$(a))))
diff --git a/package/utils/coreutils/patches/001-no_docs_man_tests.patch b/package/utils/coreutils/patches/001-no_docs_man_tests.patch
new file mode 100644
index 000000000000..e4feaf5cd9a4
--- /dev/null
+++ b/package/utils/coreutils/patches/001-no_docs_man_tests.patch
@@ -0,0 +1,93 @@
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -17,7 +17,7 @@
+ 
+ ALL_RECURSIVE_TARGETS =
+ 
+-SUBDIRS = po . gnulib-tests
++SUBDIRS = po
+ 
+ EXTRA_DIST =				\
+   .mailmap				\
+@@ -210,6 +210,3 @@ AM_CPPFLAGS = -Ilib -I$(top_srcdir)/lib
+ 
+ include $(top_srcdir)/lib/local.mk
+ include $(top_srcdir)/src/local.mk
+-include $(top_srcdir)/doc/local.mk
+-include $(top_srcdir)/man/local.mk
+-include $(top_srcdir)/tests/local.mk
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -4115,11 +4115,7 @@ RECURSIVE_TARGETS = all-recursive check-
+ 	install-ps-recursive install-recursive installcheck-recursive \
+ 	installdirs-recursive pdf-recursive ps-recursive \
+ 	tags-recursive uninstall-recursive
+-am__can_run_installinfo = \
+-  case $$AM_UPDATE_INFO_DIR in \
+-    n|no|NO) false;; \
+-    *) (install-info --version) >/dev/null 2>&1;; \
+-  esac
++am__can_run_installinfo = false
+ am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+ am__vpath_adj = case $$p in \
+     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+@@ -4369,10 +4365,10 @@ am__DIST_COMMON = $(doc_coreutils_TEXINF
+ 	$(top_srcdir)/build-aux/missing \
+ 	$(top_srcdir)/build-aux/test-driver \
+ 	$(top_srcdir)/build-aux/texinfo.tex \
+-	$(top_srcdir)/build-aux/ylwrap $(top_srcdir)/doc/local.mk \
+-	$(top_srcdir)/lib/alloca.c $(top_srcdir)/lib/config.hin \
+-	$(top_srcdir)/lib/local.mk $(top_srcdir)/man/local.mk \
+-	$(top_srcdir)/src/local.mk $(top_srcdir)/src/single-binary.mk \
++	$(top_srcdir)/build-aux/ylwrap \
++	$(top_srcdir)/lib/alloca.c \
++	$(top_srcdir)/lib/local.mk \
++	$(top_srcdir)/src/local.mk \
+ 	$(top_srcdir)/tests/local.mk ABOUT-NLS AUTHORS COPYING \
+ 	ChangeLog INSTALL NEWS README THANKS TODO build-aux/compile \
+ 	build-aux/config.guess build-aux/config.rpath \
+@@ -4479,7 +4475,7 @@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ ERRNO_H = @ERRNO_H@
+ ETAGS = @ETAGS@
+ EXEEXT = @EXEEXT@
+-EXTRA_MANS = @EXTRA_MANS@
++EXTRA_MANS =
+ FLOAT_H = @FLOAT_H@
+ FNMATCH_H = @FNMATCH_H@
+ GETADDRINFO_LIB = @GETADDRINFO_LIB@
+@@ -6057,7 +6053,7 @@ libexecdir = @libexecdir@
+ lispdir = @lispdir@
+ localedir = @localedir@
+ localstatedir = @localstatedir@
+-man1_MANS = @man1_MANS@
++man1_MANS =
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+@@ -6080,7 +6076,7 @@ top_build_prefix = @top_build_prefix@
+ top_builddir = @top_builddir@
+ top_srcdir = @top_srcdir@
+ ALL_RECURSIVE_TARGETS = distcheck-hook check-root
+-SUBDIRS = po . gnulib-tests
++SUBDIRS = po
+ 
+ #if GNU_MAKE
+ #	[nicer features that work only with GNU Make]
+@@ -8272,7 +8268,7 @@ all: $(BUILT_SOURCES)
+ .SUFFIXES: .1 .c .dvi .log .o .obj .pl .pl$(EXEEXT) .ps .sh .sh$(EXEEXT) .trs .x .xpl .xpl$(EXEEXT) .y
+ am--refresh: Makefile
+ 	@:
+-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(top_srcdir)/lib/local.mk $(srcdir)/lib/gnulib.mk $(top_srcdir)/src/local.mk $(srcdir)/src/cu-progs.mk $(top_srcdir)/src/single-binary.mk $(top_srcdir)/doc/local.mk $(top_srcdir)/man/local.mk $(top_srcdir)/tests/local.mk $(am__configure_deps)
++$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(top_srcdir)/lib/local.mk $(srcdir)/lib/gnulib.mk $(top_srcdir)/src/local.mk $(srcdir)/src/cu-progs.mk $(top_srcdir)/src/single-binary.mk $(am__configure_deps)
+ 	@for dep in $?; do \
+ 	  case '$(am__configure_deps)' in \
+ 	    *$$dep*) \
+@@ -8294,7 +8290,7 @@ Makefile: $(srcdir)/Makefile.in $(top_bu
+ 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \
+ 	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \
+ 	esac;
+-$(top_srcdir)/lib/local.mk $(srcdir)/lib/gnulib.mk $(top_srcdir)/src/local.mk $(srcdir)/src/cu-progs.mk $(top_srcdir)/src/single-binary.mk $(top_srcdir)/doc/local.mk $(top_srcdir)/man/local.mk $(top_srcdir)/tests/local.mk $(am__empty):
++$(top_srcdir)/lib/local.mk $(srcdir)/lib/gnulib.mk $(top_srcdir)/src/local.mk $(srcdir)/src/cu-progs.mk $(top_srcdir)/src/single-binary.mk $(am__empty):
+ 
+ $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ 	$(SHELL) ./config.status --recheck
