diff --git a/net-misc/gerbera/additional-files/config.xml b/net-misc/gerbera/additional-files/config.xml
new file mode 100644
index 000000000..4e0919340
--- /dev/null
+++ b/net-misc/gerbera/additional-files/config.xml
@@ -0,0 +1,147 @@
+
+
+
+
+
+
+
+
+
+ Gerbera
+ uuid:3a49bdf9-c613-476e-a684-8274ae67ee16
+ /boot/home/config/settings/gerbera
+ /system/data/gerbera/web
+
+ 1800
+
+
+ gerbera.db
+
+
+
+
+
+
+
+
+
+ *
+
+ video
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ audio/mpeg
+ no
+ yes
+ no
+
+
+
+
+ video/mpeg
+ yes
+ yes
+ yes
+
+
+
+
+
+
diff --git a/net-misc/gerbera/additional-files/install_config.sh b/net-misc/gerbera/additional-files/install_config.sh
new file mode 100644
index 000000000..e4448036f
--- /dev/null
+++ b/net-misc/gerbera/additional-files/install_config.sh
@@ -0,0 +1,13 @@
+#! /bin/sh
+
+settingsDir="$(finddir B_USER_SETTINGS_DIRECTORY)"
+
+systemConfig="$(finddir B_SYSTEM_SETTINGS_DIRECTORY)/gerbera"
+
+mkdir -p $settingsDir
+
+if [ -d "$systemConfig" ]; then
+ mv "$systemConfig" "$settingsDir"
+else
+ exit 1 #couldn't find $systemConfig
+fi
diff --git a/net-misc/gerbera/gerbera-1.4.0.recipe b/net-misc/gerbera/gerbera-1.4.0.recipe
new file mode 100644
index 000000000..7c6431db9
--- /dev/null
+++ b/net-misc/gerbera/gerbera-1.4.0.recipe
@@ -0,0 +1,115 @@
+SUMMARY="Open source UPnP Media Server"
+DESCRIPTION="MediaTomb is an open source UPnP MediaServer"
+HOMEPAGE="https://sourceforge.net/projects/mediatomb/"
+COPYRIGHT="2005-2010 Gena Batyan, Sergey 'Jin' Bostandzhyan, Leonhard Wimmer"
+LICENSE="GNU GPL v2"
+REVISION="1"
+SOURCE_URI="https://github.com/gerbera/gerbera/archive/v$portVersion.tar.gz"
+CHECKSUM_SHA256="904a9031c85ac805e4c139f363510226952683d7257acd1dee25ba1e97fd7651"
+PATCHES="gerbera-$portVersion.patchset"
+ADDITIONAL_FILES="
+ config.xml
+ install_config.sh
+ "
+
+ARCHITECTURES="!x86_gcc2 ?x86 ?x86_64"
+SECONDARY_ARCHITECTURES="?x86"
+
+commandSuffix=$secondaryArchSuffix
+commandBinDir=$binDir
+if [ "$targetArchitecture" = x86_gcc2 ]; then
+ commandSuffix=
+ commandBinDir=$prefix/bin
+fi
+
+GLOBAL_WRITABLE_FILES="
+ settings/gerbera/config.xml keep-old
+ "
+POST_INSTALL_SCRIPTS="
+ $relativePostInstallDir/install_config.sh
+ "
+
+PROVIDES="
+ gerbera$secondaryArchSuffix = $portVersion
+ cmd:gerbera$commandSuffix = $portVersion
+ "
+REQUIRES="
+ haiku$secondaryArchSuffix
+ #lib:libavcodec$secondaryArchSuffix
+ lib:libcurl$secondaryArchSuffix
+ lib:libcrypto$secondaryArchSuffix
+ lib:libebml$secondaryArchSuffix
+ lib:libexif$secondaryArchSuffix
+ lib:libexpat$secondaryArchSuffix
+ #lib:libextractor$secondaryArchSuffix
+ lib:libiconv$secondaryArchSuffix
+ lib:libintl$secondaryArchSuffix
+ lib:libmagic$secondaryArchSuffix
+ lib:libmatroska$secondaryArchSuffix
+ #lib:libmozjs185$secondaryArchSuffix
+ #lib:libmp4v2$secondaryArchSuffix
+ lib:libnghttp2$secondaryArchSuffix
+ lib:libsqlite3$secondaryArchSuffix
+ lib:libssl$secondaryArchSuffix
+ lib:libtag$secondaryArchSuffix
+ lib:libupnp$secondaryArchSuffix
+ lib:libuuid$secondaryArchSuffix
+ lib:libz$secondaryArchSuffix
+ "
+
+BUILD_REQUIRES="
+ haiku${secondaryArchSuffix}_devel
+ #devel:libavcodec$secondaryArchSuffix
+ devel:libcurl$secondaryArchSuffix
+# devel:libcrypto$secondaryArchSuffix
+ devel:libebml$secondaryArchSuffix
+ devel:libexif$secondaryArchSuffix
+ devel:libexpat$secondaryArchSuffix
+ #devel:libextractor$secondaryArchSuffix
+ devel:libiconv$secondaryArchSuffix
+# devel:libintl$secondaryArchSuffix
+ devel:libmagic$secondaryArchSuffix
+ devel:libmatroska$secondaryArchSuffix
+ #devel:libmozjs185$secondaryArchSuffix
+ #devel:libmp4v2$secondaryArchSuffix
+ devel:libsqlite3$secondaryArchSuffix
+# devel:libssl$secondaryArchSuffix
+ devel:libtag$secondaryArchSuffix
+ devel:libupnp$secondaryArchSuffix
+ devel:libuuid$secondaryArchSuffix >= 1.3
+ devel:libz$secondaryArchSuffix
+ "
+BUILD_PREREQUIRES="
+ cmd:cmake
+ cmd:gcc$secondaryArchSuffix
+ cmd:ld$secondaryArchSuffix
+ cmd:make
+ cmd:pkg_config$secondaryArchSuffix
+ "
+
+BUILD()
+{
+ mkdir -p build && cd build
+ cmake .. -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=$prefix \
+ -DCMAKE_INSTALL_BINDIR=$commandBinDir \
+ -DCMAKE_INSTALL_DATADIR=$dataDir/gerbera \
+ -DCMAKE_INSTALL_MANDIR=$manDir/man1 \
+ -DCMAKE_CXX_FLAGS=-D_BSD_SOURCE \
+ -L -DWITH_INOTIFY=0 \
+ -DWITH_JS=0 \
+ -DWITH_SYSTEMD=0
+ make $jobArgs
+}
+
+INSTALL()
+{
+ cd build
+ make install
+
+ mkdir -p $settingsDir/gerbera
+ cp $portDir/additional-files/config.xml $settingsDir/gerbera
+
+ mkdir -p $postInstallDir
+ cp $portDir/additional-files/install_config.sh $postInstallDir
+}
diff --git a/net-misc/gerbera/patches/gerbera-1.4.0.patchset b/net-misc/gerbera/patches/gerbera-1.4.0.patchset
new file mode 100644
index 000000000..d9da655f7
--- /dev/null
+++ b/net-misc/gerbera/patches/gerbera-1.4.0.patchset
@@ -0,0 +1,106 @@
+From 3eb36adbc1efdfb932b9d9f3149a985c94d56bf3 Mon Sep 17 00:00:00 2001
+From: begasus
+Date: Sun, 16 Feb 2020 15:41:59 +0000
+Subject: Fix undeclared SIOCGIFADDR
+
+
+diff --git a/src/tools.cc b/src/tools.cc
+index 6dec392..621e57a 100644
+--- a/src/tools.cc
++++ b/src/tools.cc
+@@ -51,6 +51,10 @@
+ #include
+ #endif
+
++#ifdef __HAIKU__
++#include
++#endif
++
+ #ifdef SOLARIS
+ #include
+ #include
+--
+2.24.1
+
+
+From 6991c39bb5631a7a5bcbd22962202ced74fea883 Mon Sep 17 00:00:00 2001
+From: begasus
+Date: Sun, 16 Feb 2020 16:19:26 +0000
+Subject: Fix install paths
+
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 8089f09..63101b5 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -33,6 +33,10 @@ set(WITH_LASTFM 0 CACHE BOOL "Enable LastFM")
+ set(WITH_DEBUG 1 CACHE BOOL "Enables debug logging")
+ set(WITH_TESTS 0 CACHE BOOL "Enables Unit Tests")
+
++set(CMAKE_INSTALL_BINDIR=bin)
++set(CMAKE_INSTALL_DATADIR=share/gerbera)
++set(CMAKE_INSTALL_MANDIR=share/man/man1)
++
+ set(libgerberaFILES
+ src/action_request.cc
+ src/action_request.h
+@@ -600,12 +604,12 @@ if(WITH_TESTS)
+ endif()
+ endif()
+
+-INSTALL(TARGETS gerbera DESTINATION bin)
+-INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/scripts/js DESTINATION share/gerbera)
+-INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/web DESTINATION share/gerbera)
++INSTALL(TARGETS gerbera DESTINATION ${CMAKE_INSTALL_BINDIR})
++INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/scripts/js DESTINATION ${CMAKE_INSTALL_DATADIR})
++INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/web DESTINATION ${CMAKE_INSTALL_DATADIR})
+ INSTALL(FILES
+ ${PROJECT_SOURCE_DIR}/config/mappings.xml
+ ${PROJECT_SOURCE_DIR}/config/mysql.sql
+ ${PROJECT_SOURCE_DIR}/config/sqlite3.sql
+- DESTINATION share/gerbera)
+-INSTALL(FILES ${PROJECT_SOURCE_DIR}/doc/gerbera.1 DESTINATION share/man/man1)
++ DESTINATION ${CMAKE_INSTALL_DATADIR})
++INSTALL(FILES ${PROJECT_SOURCE_DIR}/doc/gerbera.1 DESTINATION ${CMAKE_INSTALL_MANDIR})
+--
+2.24.1
+
+
+From c4f5ab5ae115f71b920a90d6f75c27398a5003c5 Mon Sep 17 00:00:00 2001
+From: begasus
+Date: Sat, 22 Feb 2020 17:21:21 +0100
+Subject: Fix linking to -lnetwork
+
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 63101b5..c2417d1 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -408,14 +408,22 @@ if (HAVE_SETLOCALE)
+ endif()
+
+ # Link to the socket library if it exists. This is something you need on Solaris/OmniOS/Joyent
+-find_library(SOCKET_LIBRARY socket)
++if(HAIKU)
++ find_library(SOCKET_LIBRARY network)
++else()
++ find_library(SOCKET_LIBRARY socket)
++endif()
+ if(SOCKET_LIBRARY)
+ set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${SOCKET_LIBRARY})
+ target_link_libraries(gerbera ${SOCKET_LIBRARY})
+ endif()
+
+ # Link to libnsl (Network services library) if it exists. This is something you need on Solaris/OmniOS/Joyent
+-find_library(NSL_LIBRARY nsl)
++if(HAIKU)
++ find_library(NSL_LIBRARY network)
++else()
++ find_library(NSL_LIBRARY nsl)
++endif()
+ if(NSL_LIBRARY)
+ set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${NSL_LIBRARY})
+ target_link_libraries(gerbera ${NSL_LIBRARY})
+--
+2.24.1
+