about summary refs log tree commit diff
path: root/nixpkgs/pkgs/games/openmw
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/games/openmw')
-rw-r--r--nixpkgs/pkgs/games/openmw/default.nix40
-rw-r--r--nixpkgs/pkgs/games/openmw/tes3mp.nix77
2 files changed, 117 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/games/openmw/default.nix b/nixpkgs/pkgs/games/openmw/default.nix
new file mode 100644
index 000000000000..d9c992199c40
--- /dev/null
+++ b/nixpkgs/pkgs/games/openmw/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, mkDerivation, fetchFromGitHub, qtbase, openscenegraph, mygui, bullet, ffmpeg
+, boost, cmake, SDL2, unshield, openal, libXt, pkgconfig }:
+
+let
+  openscenegraph_ = openscenegraph.overrideDerivation (self: {
+    src = fetchFromGitHub {
+      owner = "OpenMW";
+      repo = "osg";
+      rev = "2b4c8e37268e595b82da4b9aadd5507852569b87";
+      sha256 = "0admnllxic6dcpic0h100927yw766ab55dix002vvdx36i6994jb";
+    };
+  });
+in mkDerivation rec {
+  version = "0.45.0";
+  pname = "openmw";
+
+  src = fetchFromGitHub {
+    owner = "OpenMW";
+    repo = "openmw";
+    rev = "${pname}-${version}";
+    sha256 = "1r87zrsnza2v9brksh809zzqj6zhk5xj15qs8iq11v1bscm2a2j4";
+  };
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ cmake boost ffmpeg bullet mygui openscenegraph_ SDL2 unshield openal libXt qtbase ];
+
+  cmakeFlags = [
+    "-DDESIRED_QT_VERSION:INT=5"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "An unofficial open source engine reimplementation of the game Morrowind";
+    homepage = http://openmw.org;
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ abbradar ];
+  };
+}
diff --git a/nixpkgs/pkgs/games/openmw/tes3mp.nix b/nixpkgs/pkgs/games/openmw/tes3mp.nix
new file mode 100644
index 000000000000..4bbddfbb1dfb
--- /dev/null
+++ b/nixpkgs/pkgs/games/openmw/tes3mp.nix
@@ -0,0 +1,77 @@
+{ stdenv, cmake, openmw, fetchFromGitHub, luajit, makeWrapper }:
+
+# revisions are taken from https://github.com/GrimKriegor/TES3MP-deploy
+
+let
+  # TES3MP_STABLE_VERSION_FILE
+  compatHash = "292536439eeda58becdb7e441fe2e61ebb74529e";
+  rakNet = fetchFromGitHub {
+    owner = "TES3MP";
+    repo = "CrabNet";
+    # usually fixed:
+    # https://github.com/GrimKriegor/TES3MP-deploy/blob/d2a4a5d3acb64b16d9b8ca85906780aeea8d311b/tes3mp-deploy.sh#L589
+    rev = "4eeeaad2f6c11aeb82070df35169694b4fb7b04b";
+    sha256 = "0p0li9l1i5lcliswm5w9jql0zff9i6fwhiq0bl130m4i7vpr4cr3";
+  };
+  rakNetLibrary = stdenv.mkDerivation {
+    name = "RakNetLibrary";
+    src = rakNet;
+    nativeBuildInputs = [ cmake ];
+    installPhase = ''
+      install -Dm755 lib/libRakNetLibStatic.a $out/lib/libRakNetLibStatic.a
+    '';
+  };
+  coreScripts = fetchFromGitHub {
+    owner = "TES3MP";
+    repo = "CoreScripts";
+    # usually latest in stable branch (e.g. 0.7.0)
+    rev = "506146f5b2297242b713a030a589966156df1e8e";
+    sha256 = "0p4a4bgigyxfmaczf3jnz6ik4hgvdaafzc4614hbmbm1qbn8wpf9";
+  };
+in openmw.overrideAttrs (oldAttrs: rec {
+  version = "2019-07-01";
+  name = "openmw-tes3mp-${version}";
+
+  src = fetchFromGitHub {
+    owner = "TES3MP";
+    repo = "openmw-tes3mp";
+    # usually latest in stable branch (e.g. 0.7.0)
+    rev = "94a9292cc676a037496f98877b62da80cde2ac47";
+    sha256 = "0kc45xs33rsxac1aba248slzvljx90ybdk4ag9jwjjmsjmy7w2w5";
+  };
+
+  nativeBuildInputs = oldAttrs.nativeBuildInputs ++ [ makeWrapper ];
+  buildInputs = oldAttrs.buildInputs ++ [ luajit ];
+
+  cmakeFlags = oldAttrs.cmakeFlags ++ [
+    "-DBUILD_OPENCS=OFF"
+    "-DRakNet_INCLUDES=${rakNet}/include"
+    "-DRakNet_LIBRARY_RELEASE=${rakNetLibrary}/lib/libRakNetLibStatic.a"
+    "-DRakNet_LIBRARY_DEBUG=${rakNetLibrary}/lib/libRakNetLibStatic.a"
+  ];
+
+  preConfigure = ''
+    substituteInPlace files/version.in \
+      --subst-var-by OPENMW_VERSION_COMMITHASH ${compatHash}
+  '';
+
+  postInstall = ''
+    # components/process/processinvoker.cpp: path.prepend(QLatin1String("./"))
+    wrapProgram $out/bin/tes3mp-browser \
+      --run "cd $out/bin"
+    wrapProgram $out/bin/tes3mp-server \
+      --run "mkdir -p ~/.config/openmw" \
+      --run "cd ~/.config/openmw" \
+      --run "[ -d CoreScripts ] || cp --no-preserve=mode -r ${coreScripts} CoreScripts" \
+      --run "[ -f tes3mp-server.cfg ] || echo \"[Plugins] home = \$HOME/.config/openmw/CoreScripts\" > tes3mp-server.cfg" \
+      --run "cd $out/bin"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Multiplayer for TES3:Morrowind based on OpenMW";
+    homepage = https://tes3mp.com/;
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ gnidorah ];
+  };
+})