diff --git a/makefu/5pkgs/soldat/default.nix b/makefu/5pkgs/soldat/default.nix
new file mode 100644
index 000000000..0b313a065
--- /dev/null
+++ b/makefu/5pkgs/soldat/default.nix
@@ -0,0 +1,119 @@
+{ stdenv,fpc,zip, fetchFromGitHub, autoPatchelfHook, callPackage,
+freetype,openal,x11,SDL2,physfs_2, protobuf, openssl, cmake, ninja,
+meson,pkgconfig, makeWrapper }:
+
+let
+  GameNetworkingSockets = stdenv.mkDerivation rec {
+    pname = "GameNetworkingSockets";
+    version = "2020-02-27";
+
+    src = fetchFromGitHub {
+      sha256 = "1vlrqjpqmdv1gphj2bkqg0bljqxfv75say6vrcnk9z14irih9a24";
+      owner = "ValveSoftware";
+      repo = pname;
+      rev = "36d41513e9a25d7ad4c2b37826d6594aaf185374";
+    };
+
+    mesonFlags = [ "-Dlight_tests=true" ];
+
+    buildInputs = [ protobuf openssl ];
+    nativeBuildInputs = [ pkgconfig meson cmake ninja ];
+    installPhase = ''
+      mkdir -p $out/lib $out/include; find .
+      cp src/libGameNetworkingSockets.so $out/lib/
+      cp -r ../include $out/
+    '';
+
+
+    #outputs = [ "out" "dev" "lib" ];
+
+    meta = with stdenv.lib; {
+      description = "WebDav server implementation and library using libsoup";
+      homepage = "https://wiki.gnome.org/phodav";
+      license = licenses.lgpl21;
+      maintainers = with maintainers; [ gnidorah ];
+      platforms = platforms.linux;
+    };
+  };
+  base = stdenv.mkDerivation {
+    pname = "soldat-base";
+    version = "1.0.0";
+    src = fetchFromGitHub {
+      repo = "base";
+      owner = "soldat";
+      rev = "3c002b9";
+      sha256 = "1wc1cmdavf6ng05wfcpxn124n23vivx4nn06irqmar6jmrklrbq0";
+    };
+    buildInputs = [ zip ];
+    buildPhase = ''
+      sh ./create_smod.sh
+    '';
+    installPhase = ''
+      install -D soldat.smod $out/soldat.smod
+      install -D client/play-regular.ttf $out/play-regular.ttf
+    '';
+  };
+  src = fetchFromGitHub {
+      repo = "soldat";
+      owner = "soldat";
+      rev = "6dee4d0";
+      sha256 = "0jjgdxprlvyf5kh2mb48vrp5nxk3h3jbaxmy7xmna80ssx4bjhxf";
+    };
+  stb =  stdenv.mkDerivation {
+    pname = "soldat";
+    version = "1.0.0";
+    inherit src;
+    # makeFlags = [ "CFLAGS='-Fl${openal}/lib'" ];
+    buildPhase = ''
+      cd client
+      mkdir -p build/linux
+      make -C libs/stb/
+    '';
+    installPhase = ''
+      install -D build/libstb.so $out/lib/libstb.so
+    '';
+
+    buildInputs = [ ];
+  };
+in
+stdenv.mkDerivation {
+  pname = "soldat";
+  version = "1.0.0";
+  inherit src;
+  # makeFlags = [ "CFLAGS='-Fl${openal}/lib'" ];
+  buildPhase = ''
+    cd client
+    mkdir -p build/linux
+    make -C libs/stb/
+    make linux_x86_64
+    cd ../server
+    mkdir -p build/linux
+    make linux_x86_64
+    cd ..
+  '';
+
+  # TODO: soldatserver still needs to be copied out of the derivation to somewhere writeable
+  installPhase = ''
+    share=$out/share/soldat
+    bin=$out/bin
+    mkdir -p $share $bin
+
+    install ${base}/soldat.smod $share/soldat.smod
+    install ${base}/play-regular.ttf $share/play-regular.ttf;
+    install -m755 client/build/soldat_x64 $share/soldat_x64
+    install client/media/soldat.ico $share/soldat.ico
+
+    install -m755 server/build/soldatserver_x64 $share/soldatserver_x64
+
+    ls -alhtr $share/
+
+    makeWrapper $share/soldat_x64 $bin/soldat --add-flags '-fs_portable 0'
+    makeWrapper $share/soldatserver_x64 $bin/soldatserver --add-flags '-fs_userpath ~/.local/share/Soldat/Soldat'
+  '';
+
+  nativeBuildInputs = [ autoPatchelfHook makeWrapper ];
+  buildInputs = [
+    fpc freetype openal x11 SDL2 physfs_2 GameNetworkingSockets  stb
+  ];
+}
+