diff --git a/meta-citadel/recipes-desktop/base16-vim/base16-vim.bb b/meta-citadel/recipes-desktop/base16-vim/base16-vim.bb
new file mode 100644
index 0000000..f7655fa
--- /dev/null
+++ b/meta-citadel/recipes-desktop/base16-vim/base16-vim.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = ""
+HOMEPAGE = ""
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=e6faad78a557b22780e4cf62c89976f8"
+SECTION = ""
+DEPENDS = ""
+
+SRC_URI = "git://github.com/danielwe/base16-vim;protocol=https"
+SRCREV = "a40a4514ce82619e32028d39966a2fa61ebbf7e4"
+
+FILES_${PN} = "${datadir}/vim/colors"
+S = "${WORKDIR}/git"
+
+inherit allarch
+
+do_configure () {
+ :
+}
+
+do_compile() {
+ :
+}
+
+do_install() {
+ mkdir -p ${D}${datadir}/vim/colors
+ install -Dm644 ${S}/colors/*.vim ${D}${datadir}/vim/colors
+}
diff --git a/meta-citadel/recipes-desktop/ttf-dejavu/ttf-dejavu/30-dejavu-aliases.conf b/meta-citadel/recipes-desktop/ttf-dejavu/ttf-dejavu/30-dejavu-aliases.conf
new file mode 100644
index 0000000..9c6e56b
--- /dev/null
+++ b/meta-citadel/recipes-desktop/ttf-dejavu/ttf-dejavu/30-dejavu-aliases.conf
@@ -0,0 +1,16 @@
+
+
+
+
+ DejaVu Serif
+ serif
+
+
+ DejaVu Sans
+ sans-serif
+
+
+ DejaVu Sans Mono
+ monospace
+
+
diff --git a/meta-citadel/recipes-desktop/ttf-dejavu/ttf-dejavu_2.37.bb b/meta-citadel/recipes-desktop/ttf-dejavu/ttf-dejavu_2.37.bb
new file mode 100644
index 0000000..f74e5ce
--- /dev/null
+++ b/meta-citadel/recipes-desktop/ttf-dejavu/ttf-dejavu_2.37.bb
@@ -0,0 +1,47 @@
+require ttf.inc
+
+SUMMARY = "DejaVu font - TTF Edition"
+HOMEPAGE = "http://dejavu.sourceforge.net/wiki/"
+LICENSE = "BitstreamVera"
+LIC_FILES_CHKSUM = "file://../LICENSE;md5=449b2c30bfe5fa897fe87b8b70b16cfa"
+
+# all subpackages except ${PN}-common itself rdepends on ${PN}-common
+RDEPENDS_${PN}-sans = "${PN}-common"
+RDEPENDS_${PN}-sans-mono = "${PN}-common"
+RDEPENDS_${PN}-sans-condensed = "${PN}-common"
+RDEPENDS_${PN}-serif = "${PN}-common"
+RDEPENDS_${PN}-serif-condensed = "${PN}-common"
+RDEPENDS_${PN}-mathtexgyre = "${PN}-common"
+RDEPENDS_${PN}-common = ""
+PR = "r7"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/dejavu/dejavu-fonts-ttf-${PV}.tar.bz2 \
+ file://30-dejavu-aliases.conf"
+
+S = "${WORKDIR}/dejavu-fonts-ttf-${PV}/ttf"
+
+do_install_append () {
+ install -d ${D}${sysconfdir}/fonts/conf.d/
+ install -m 0644 ${WORKDIR}/30-dejavu-aliases.conf ${D}${sysconfdir}/fonts/conf.d/
+}
+
+PACKAGES = "\
+ ${PN}-sans \
+ ${PN}-sans-mono \
+ ${PN}-sans-condensed \
+ ${PN}-serif \
+ ${PN}-serif-condensed \
+ ${PN}-mathtexgyre \
+ ${PN}-common"
+FONT_PACKAGES = "${PN}-sans ${PN}-sans-mono ${PN}-sans-condensed ${PN}-serif ${PN}-serif-condensed ${PN}-mathtexgyre"
+
+FILES_${PN}-sans = "${datadir}/fonts/truetype/DejaVuSans.ttf ${datadir}/fonts/truetype/DejaVuSans-*.ttf"
+FILES_${PN}-sans-mono = "${datadir}/fonts/truetype/DejaVuSansMono*.ttf"
+FILES_${PN}-sans-condensed = "${datadir}/fonts/truetype/DejaVuSansCondensed*.ttf"
+FILES_${PN}-serif = "${datadir}/fonts/truetype/DejaVuSerif.ttf ${datadir}/fonts/truetype/DejaVuSerif-*.ttf"
+FILES_${PN}-serif-condensed = "${datadir}/fonts/truetype/DejaVuSerifCondensed*.ttf"
+FILES_${PN}-mathtexgyre = "${datadir}/fonts/truetype/DejaVuMathTeXGyre.ttf"
+FILES_${PN}-common = "${sysconfdir}"
+
+SRC_URI[md5sum] = "d0efec10b9f110a32e9b8f796e21782c"
+SRC_URI[sha256sum] = "fa9ca4d13871dd122f61258a80d01751d603b4d3ee14095d65453b4e846e17d7"
diff --git a/meta-citadel/recipes-desktop/ttf-dejavu/ttf.inc b/meta-citadel/recipes-desktop/ttf-dejavu/ttf.inc
new file mode 100644
index 0000000..c77af39
--- /dev/null
+++ b/meta-citadel/recipes-desktop/ttf-dejavu/ttf.inc
@@ -0,0 +1,12 @@
+DESCRIPTION ?= "TrueType font package ${PN}"
+SECTION = "fonts"
+
+# we don't need a compiler nor a c library for these fonts
+INHIBIT_DEFAULT_DEPS = "1"
+
+do_install() {
+ install -d ${D}${datadir}/fonts/truetype/
+ find ./ -name '*.tt[cf]' -exec install -m 0644 {} ${D}${datadir}/fonts/truetype/ \;
+}
+
+inherit allarch fontcache
diff --git a/meta-citadel/recipes-support/keyutils/files/keyutils-fix-error-report-by-adding-default-message.patch b/meta-citadel/recipes-support/keyutils/files/keyutils-fix-error-report-by-adding-default-message.patch
new file mode 100644
index 0000000..acd91c0
--- /dev/null
+++ b/meta-citadel/recipes-support/keyutils/files/keyutils-fix-error-report-by-adding-default-message.patch
@@ -0,0 +1,42 @@
+fix keyutils test error report
+
+Upstream-Status: Pending
+
+"Permission denied" may be the reason of EKEYEXPIRED and EKEYREVOKED.
+"Required key not available" may be the reason of EKEYREVOKED.
+EXPIRED and REVOKED are 2 status of kernel security keys features.
+But the userspace keyutils lib will output the error message, which may
+have several reasons.
+
+Signed-off-by: Han Chao
+
+diff --git a/tests/toolbox.inc.sh b/tests/toolbox.inc.sh
+index bbca00a..739e9d0 100644
+--- a/tests/toolbox.inc.sh
++++ b/tests/toolbox.inc.sh
+@@ -227,11 +227,12 @@ function expect_error ()
+ ;;
+ EKEYEXPIRED)
+ my_err="Key has expired"
+- alt_err="Unknown error 127"
++ alt_err="Permission denied"
+ ;;
+ EKEYREVOKED)
+ my_err="Key has been revoked"
+- alt_err="Unknown error 128"
++ alt_err="Permission denied"
++ alt2_err="Required key not available"
+ ;;
+ EKEYREJECTED)
+ my_err="Key has been rejected"
+@@ -249,6 +250,9 @@ function expect_error ()
+ elif [ "x$alt_err" != "x" ] && expr "$my_errmsg" : ".*: $alt_err" >&/dev/null
+ then
+ :
++ elif [ "x$alt2_err" != "x" ] && expr "$my_errmsg" : ".*: $alt2_err" >&/dev/null
++ then
++ :
+ elif [ "x$old_err" != "x" ] && expr "$my_errmsg" : ".*: $old_err" >&/dev/null
+ then
+ :
+
diff --git a/meta-citadel/recipes-support/keyutils/files/keyutils-test-fix-output-format.patch b/meta-citadel/recipes-support/keyutils/files/keyutils-test-fix-output-format.patch
new file mode 100644
index 0000000..a4ffd50
--- /dev/null
+++ b/meta-citadel/recipes-support/keyutils/files/keyutils-test-fix-output-format.patch
@@ -0,0 +1,41 @@
+From 49b6321368e4bd3cd233d045cd09004ddd7968b2 Mon Sep 17 00:00:00 2001
+From: Jackie Huang
+Date: Mon, 15 May 2017 14:52:00 +0800
+Subject: [PATCH] keyutils: fix output format
+
+keyutils ptest output format is incorrect, according to yocto
+Development Manual
+(http://www.yoctoproject.org/docs/latest/dev-manual/dev-manual.html#testing-packages-with-ptest)
+5.10.6. Testing Packages With ptestThe test generates output in the format used by Automake:
+:
+where the result can be PASS, FAIL, or SKIP, and the testname can be any
+identifying string.
+So we should change the test result format to match yocto ptest rules.
+
+Upstream-Status: Inappropriate [OE ptest specific]
+
+Signed-off-by: Li Wang
+Signed-off-by: Jackie Huang
+---
+ tests/runtest.sh | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/tests/runtest.sh b/tests/runtest.sh
+index b6eaa7c..84263fb 100644
+--- a/tests/runtest.sh
++++ b/tests/runtest.sh
+@@ -21,6 +21,11 @@ for i in ${TESTS}; do
+ echo "### RUNNING TEST $i"
+ if [[ $AUTOMATED != 0 ]] ; then
+ bash ./runtest.sh
++ if [ $? != 0 ]; then
++ echo "FAIL: $i"
++ else
++ echo "PASS: $i"
++ fi
+ else
+ bash ./runtest.sh || exit 1
+ fi
+--
+2.11.0
+
diff --git a/meta-citadel/recipes-support/keyutils/files/keyutils-use-relative-path-for-link.patch b/meta-citadel/recipes-support/keyutils/files/keyutils-use-relative-path-for-link.patch
new file mode 100644
index 0000000..dde1af4
--- /dev/null
+++ b/meta-citadel/recipes-support/keyutils/files/keyutils-use-relative-path-for-link.patch
@@ -0,0 +1,28 @@
+Subject: [PATCH] keyutils: use relative path for link
+
+The absolute path of the symlink will be invalid
+when populated in sysroot, so use relative path instead.
+
+Upstream-Status: Pending
+
+Signed-off-by: Jackie Huang
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 824bbbf..8ce3a13 100644
+--- a/Makefile
++++ b/Makefile
+@@ -167,7 +167,7 @@ ifeq ($(NO_SOLIB),0)
+ $(INSTALL) -D $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(LIBNAME)
+ $(LNS) $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SONAME)
+ mkdir -p $(DESTDIR)$(USRLIBDIR)
+- $(LNS) $(LIBDIR)/$(SONAME) $(DESTDIR)$(USRLIBDIR)/$(DEVELLIB)
++ $(LNS) $(SONAME) $(DESTDIR)$(USRLIBDIR)/$(DEVELLIB)
+ endif
+ $(INSTALL) -D keyctl $(DESTDIR)$(BINDIR)/keyctl
+ $(INSTALL) -D request-key $(DESTDIR)$(SBINDIR)/request-key
+--
+2.11.0
+
diff --git a/meta-citadel/recipes-support/keyutils/files/run-ptest b/meta-citadel/recipes-support/keyutils/files/run-ptest
new file mode 100755
index 0000000..305707f
--- /dev/null
+++ b/meta-citadel/recipes-support/keyutils/files/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+export AUTOMATED=1
+make -C tests run
diff --git a/meta-citadel/recipes-support/keyutils/keyutils_1.5.10.bb b/meta-citadel/recipes-support/keyutils/keyutils_1.5.10.bb
new file mode 100644
index 0000000..a4222b9
--- /dev/null
+++ b/meta-citadel/recipes-support/keyutils/keyutils_1.5.10.bb
@@ -0,0 +1,47 @@
+SUMMARY = "Linux Key Management Utilities"
+DESCRIPTION = "\
+ Utilities to control the kernel key management facility and to provide \
+ a mechanism by which the kernel call back to userspace to get a key \
+ instantiated. \
+ "
+HOMEPAGE = "http://people.redhat.com/dhowells/keyutils"
+SECTION = "base"
+
+LICENSE = "LGPLv2.1+ & GPLv2.0+"
+
+LIC_FILES_CHKSUM = "file://LICENCE.GPL;md5=5f6e72824f5da505c1f4a7197f004b45 \
+ file://LICENCE.LGPL;md5=7d1cacaa3ea752b72ea5e525df54a21f"
+
+
+inherit siteinfo ptest
+
+SRC_URI = "http://people.redhat.com/dhowells/keyutils/${BP}.tar.bz2 \
+ file://keyutils-use-relative-path-for-link.patch \
+ file://keyutils-test-fix-output-format.patch \
+ file://keyutils-fix-error-report-by-adding-default-message.patch \
+ file://run-ptest \
+ "
+
+SRC_URI[md5sum] = "3771676319bc7b84b1549b5c63ff5243"
+SRC_URI[sha256sum] = "115c3deae7f181778fd0e0ffaa2dad1bf1fe2f5677cf2e0e348cdb7a1c93afb6"
+
+EXTRA_OEMAKE = "'CFLAGS=${CFLAGS} -Wall' \
+ NO_ARLIB=1 \
+ BINDIR=${base_bindir} \
+ SBINDIR=${base_sbindir} \
+ LIBDIR=${base_libdir} \
+ USRLIBDIR=${base_libdir} \
+ BUILDFOR=${SITEINFO_BITS}-bit \
+ NO_GLIBC_KEYERR=1 \
+ "
+
+do_install () {
+ oe_runmake DESTDIR=${D} install
+}
+
+do_install_ptest () {
+ cp -r ${S}/tests ${D}${PTEST_PATH}/
+ sed -i -e 's/OSDIST=Unknown/OSDIST=${DISTRO}/' ${D}${PTEST_PATH}/tests/prepare.inc.sh
+}
+
+RDEPENDS_${PN}-ptest += "glibc-utils"
diff --git a/meta-citadel/recipes-support/libsodium/libsodium_1.0.16.bb b/meta-citadel/recipes-support/libsodium/libsodium_1.0.16.bb
new file mode 100644
index 0000000..57f38fe
--- /dev/null
+++ b/meta-citadel/recipes-support/libsodium/libsodium_1.0.16.bb
@@ -0,0 +1,13 @@
+SUMMARY = "The Sodium crypto library"
+HOMEPAGE = "http://libsodium.org/"
+BUGTRACKER = "https://github.com/jedisct1/libsodium/issues"
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=7f5ecba1fa793fc1f3c8f32d6cb5a37b"
+
+SRC_URI = "https://download.libsodium.org/libsodium/releases/${BPN}-${PV}.tar.gz"
+SRC_URI[md5sum] = "37b18839e57e7a62834231395c8e962b"
+SRC_URI[sha256sum] = "eeadc7e1e1bcef09680fb4837d448fbdf57224978f865ac1c16745868fbd0533"
+
+inherit autotools
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-citadel/recipes-support/nnn/nnn_2.2.bb b/meta-citadel/recipes-support/nnn/nnn_2.2.bb
new file mode 100644
index 0000000..6f85eca
--- /dev/null
+++ b/meta-citadel/recipes-support/nnn/nnn_2.2.bb
@@ -0,0 +1,22 @@
+DESCRIPTION = "Tiny, lightning fast, feature-packed file manager"
+SUMMARY = "Small command line file manager"
+HOMEPAGE = "https://github.com/jarun/nnn"
+SECTION = "base"
+
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=172009f55dfd36284e707e6c251c14c3"
+
+DEPENDS = "ncurses"
+inherit pkgconfig
+
+
+SRCREV = "673e3b988f25e82db225a86848db927c390bf74c"
+SRC_URI = "git://github.com/jarun/nnn.git;protocol=https"
+S = "${WORKDIR}/git"
+
+EXTRA_OEMAKE = "'PREFIX=/usr'"
+
+do_install () {
+ oe_runmake 'DESTDIR=${D}' install
+}
+
diff --git a/meta-citadel/recipes-support/xdg-dbus-proxy/xdg-dbus-proxy_0.1.1.bb b/meta-citadel/recipes-support/xdg-dbus-proxy/xdg-dbus-proxy_0.1.1.bb
new file mode 100644
index 0000000..3ac9081
--- /dev/null
+++ b/meta-citadel/recipes-support/xdg-dbus-proxy/xdg-dbus-proxy_0.1.1.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "A filtering proxy for D-Bus connections"
+SUMMARY = "A filtering proxy for D-Bus connections"
+HOMEPAGE = "https://github.com/flatpak/xdg-dbus-proxy"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+DEPENDS = "autoconf-archive-native glib-2.0"
+
+inherit autotools gnomebase
+
+SRCREV = "7531b44424f834f193fe7f83fe572084d9c77ad9"
+SRC_URI = "git://github.com/flatpak/xdg-dbus-proxy.git;protocol=https"
+S = "${WORKDIR}/git"
+
+