diff --git a/pkg/lua/Makefile b/pkg/lua/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..d2f1a775de8fd1ea199d0e052e538766e3dbc31f
--- /dev/null
+++ b/pkg/lua/Makefile
@@ -0,0 +1,12 @@
+PKG_NAME=lua
+PKG_URL=https://github.com/lua/lua.git
+PKG_VERSION=e354c6355e7f48e087678ec49e340ca0696725b1
+PKG_LICENSE=MIT
+
+.PHONY: all
+
+all:
+	@cp Makefile.lua $(PKG_BUILDDIR)
+	"$(MAKE)" -C $(PKG_BUILDDIR) -f Makefile.lua
+
+include $(RIOTBASE)/pkg/pkg.mk
diff --git a/pkg/lua/Makefile.include b/pkg/lua/Makefile.include
new file mode 100644
index 0000000000000000000000000000000000000000..9fb515a3b4716b8208a5eacaaf12253ac463c8ce
--- /dev/null
+++ b/pkg/lua/Makefile.include
@@ -0,0 +1 @@
+INCLUDES += -I$(PKGDIRBASE)/lua
diff --git a/pkg/lua/Makefile.lua b/pkg/lua/Makefile.lua
new file mode 100644
index 0000000000000000000000000000000000000000..f0bd4d8a386ba29df5151cb210e9c9566b41aa8d
--- /dev/null
+++ b/pkg/lua/Makefile.lua
@@ -0,0 +1,9 @@
+SRC := $(filter-out lua.c luac.c,$(wildcard *.c))
+
+# This builds for native using POSIX system calls and some extra libraries, and
+# removes a compiler warning that warns against using tmpnam().
+ifeq ($(BOARD),native)
+  CFLAGS += -DLUA_USE_LINUX
+endif
+
+include $(RIOTBASE)/Makefile.base
diff --git a/pkg/lua/doc.txt b/pkg/lua/doc.txt
new file mode 100644
index 0000000000000000000000000000000000000000..944d45c632614b490f8a0c68b6b57675c8c3b934
--- /dev/null
+++ b/pkg/lua/doc.txt
@@ -0,0 +1,6 @@
+/**
+ * @defgroup pkg_lua Lua ported to RIOT
+ * @ingroup  pkg
+ * @brief    Provides Lua support for RIOT
+ * @see      https://github.com/lua/lua
+ */
diff --git a/pkg/lua/patches/0001-Remove-dependency-on-nonexistent-RIOT-syscalls.patch b/pkg/lua/patches/0001-Remove-dependency-on-nonexistent-RIOT-syscalls.patch
new file mode 100644
index 0000000000000000000000000000000000000000..b4017f538264e4e7e8ce76d855242587e2152ac8
Binary files /dev/null and b/pkg/lua/patches/0001-Remove-dependency-on-nonexistent-RIOT-syscalls.patch differ