summary refs log tree commit diff
diff options
context:
space:
mode:
authorsternenseemann <0rpkxez4ksa01gb3typccl0i@systemli.org>2021-01-11 12:33:31 +0100
committerProfpatsch <mail@profpatsch.de>2021-01-12 14:44:42 +0100
commit2a88330fbea9bbd82acaee0433da12cbf96fbbaa (patch)
tree2a039f6b8d57ceae9d3d4d408915a39c1b73154f
parent7ce707f76076a785889a28cb5c563ae51d0fa734 (diff)
downloadnixpkgs-2a88330fbea9bbd82acaee0433da12cbf96fbbaa.tar
nixpkgs-2a88330fbea9bbd82acaee0433da12cbf96fbbaa.tar.gz
nixpkgs-2a88330fbea9bbd82acaee0433da12cbf96fbbaa.tar.bz2
nixpkgs-2a88330fbea9bbd82acaee0433da12cbf96fbbaa.tar.lz
nixpkgs-2a88330fbea9bbd82acaee0433da12cbf96fbbaa.tar.xz
nixpkgs-2a88330fbea9bbd82acaee0433da12cbf96fbbaa.tar.zst
nixpkgs-2a88330fbea9bbd82acaee0433da12cbf96fbbaa.zip
soldat-unstable: init at 2020-11-26
-rw-r--r--pkgs/games/soldat-unstable/default.nix123
-rw-r--r--pkgs/top-level/all-packages.nix2
2 files changed, 125 insertions, 0 deletions
diff --git a/pkgs/games/soldat-unstable/default.nix b/pkgs/games/soldat-unstable/default.nix
new file mode 100644
index 00000000000..0278afc5e40
--- /dev/null
+++ b/pkgs/games/soldat-unstable/default.nix
@@ -0,0 +1,123 @@
+{ stdenv, fetchFromGitHub, fetchpatch, fpc, zip, makeWrapper
+, SDL2, freetype, physfs, openal, gamenetworkingsockets
+, xorg, autoPatchelfHook
+}:
+
+let
+  base = stdenv.mkDerivation rec {
+    pname = "soldat-base";
+    version = "unstable-2020-11-26";
+
+    src = fetchFromGitHub {
+      name = "base";
+      owner = "Soldat";
+      repo = "base";
+      rev = "e5f9c35ec12562595b248a7a921dd3458b36b605";
+      sha256 = "0qg0p2adb5v6di44iqczswldhypdqvn1nl96vxkfkxdg9i8x90w3";
+    };
+
+    nativeBuildInputs = [ zip ];
+
+    buildPhase = ''
+      sh create_smod.sh
+    '';
+
+    installPhase = ''
+      install -Dm644 soldat.smod -t $out/share/soldat
+      install -Dm644 client/play-regular.ttf -t $out/share/soldat
+    '';
+
+    meta = with stdenv.lib; {
+      description = "Soldat's base game content";
+      license = licenses.cc-by-40;
+      platforms = platforms.all;
+      inherit (src.meta) homepage;
+    };
+  };
+
+in
+
+stdenv.mkDerivation rec {
+  pname = "soldat-unstable";
+  version = "2020-11-26";
+
+  src = fetchFromGitHub {
+    name = "soldat";
+    owner = "Soldat";
+    repo = "soldat";
+    rev = "2280296ac56883f6a9cad4da48025af8ae7782e7";
+    sha256 = "17i3nlhxm4x4zx00i00aivhxmagbnyizxnpwiqzg57bf23hrvdj3";
+  };
+
+  nativeBuildInputs = [ fpc makeWrapper autoPatchelfHook ];
+
+  buildInputs = [ SDL2 freetype physfs openal gamenetworkingsockets ];
+  runtimeDependencies = [ xorg.libX11 ];
+
+  patches = [
+    # fix an argument parsing issue which prevents
+    # us from passing nix store paths to soldat
+    (fetchpatch {
+      url = "https://github.com/sternenseemann/soldat/commit/9f7687430f5fe142c563b877d2206f5c9bbd5ca0.patch";
+      sha256 = "0wsrazb36i7v4idg06jlzfhqwf56q9szzz7jp5cg4wsvcky3wajf";
+    })
+  ];
+
+  postPatch = ''
+    for f in client/Makefile server/Makefile; do
+      # fix unportable uname invocation
+      substituteInPlace "$f" --replace "uname -p" "uname -m"
+    done
+  '';
+
+  buildPhase = ''
+    mkdir -p client/build server/build
+
+    # build .so from stb headers
+    pushd client/libs/stb
+    make
+    popd
+
+    # build client
+    pushd client
+    make mode=release
+    popd
+
+    # build server
+    pushd server
+    make mode=release
+    popd
+  '';
+
+  installPhase = ''
+    install -Dm644 client/libs/stb/libstb.so -t $out/lib
+    install -Dm755 client/build/soldat_* $out/bin/soldat
+    install -Dm755 server/build/soldatserver_* $out/bin/soldatserver
+
+    # make sure soldat{,server} find their game archive,
+    # let them write their state and configuration files
+    # to $XDG_CONFIG_HOME/soldat/soldat{,server} unless
+    # the user specifies otherwise.
+    for p in $out/bin/soldatserver $out/bin/soldat; do
+      configDir="\''${XDG_CONFIG_HOME:-\$HOME/.config}/soldat/$(basename "$p")"
+
+      wrapProgram "$p" \
+        --run "mkdir -p \"$configDir\"" \
+        --add-flags "-fs_portable 0" \
+        --add-flags "-fs_userpath \"$configDir\"" \
+        --add-flags "-fs_basepath \"${base}/share/soldat\""
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Soldat is a unique 2D (side-view) multiplayer action game";
+    license = [ licenses.mit base.meta.license ];
+    inherit (src.meta) homepage;
+    maintainers = [ maintainers.sternenseemann ];
+    platforms = platforms.x86_64 ++ platforms.i686;
+    # portability currently mainly limited by fpc
+    # in nixpkgs which doesn't work on darwin,
+    # aarch64 and arm support should be possible:
+    # https://github.com/Soldat/soldat/issues/45
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 144c58fbdd4..5c6a0828fcc 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -26674,6 +26674,8 @@ in
   solarus = libsForQt5.callPackage ../games/solarus { };
   solarus-quest-editor = libsForQt5.callPackage ../development/tools/solarus-quest-editor { };
 
+  soldat-unstable = callPackage ../games/soldat-unstable { };
+
   # You still can override by passing more arguments.
   space-orbit = callPackage ../games/space-orbit { };