Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at netboot-syslinux-multiplatform 91 lines 2.8 kB view raw
1{ lib, stdenv, fetchFromGitHub, fpc, zip, makeWrapper 2, SDL2, freetype, physfs, openal, gamenetworkingsockets 3, xorg, autoPatchelfHook, cmake 4}: 5 6let 7 base = stdenv.mkDerivation rec { 8 pname = "opensoldat-base"; 9 version = "unstable-2021-09-05"; 10 11 src = fetchFromGitHub { 12 name = "base"; 13 owner = "opensoldat"; 14 repo = "base"; 15 rev = "6c74d768d511663e026e015dde788006c74406b5"; 16 sha256 = "175gmkdccy8rnkd95h2zqldqfydyji1hfby8b1qbnl8wz4dh08mz"; 17 }; 18 19 nativeBuildInputs = [ zip ]; 20 21 buildPhase = '' 22 sh create_smod.sh 23 ''; 24 25 installPhase = '' 26 install -Dm644 soldat.smod -t $out/share/soldat 27 install -Dm644 client/play-regular.ttf -t $out/share/soldat 28 ''; 29 30 meta = with lib; { 31 description = "Opensoldat's base game content"; 32 license = licenses.cc-by-40; 33 platforms = platforms.all; 34 inherit (src.meta) homepage; 35 }; 36 }; 37 38in 39 40stdenv.mkDerivation rec { 41 pname = "opensoldat"; 42 version = "unstable-2022-07-02"; 43 44 src = fetchFromGitHub { 45 name = "opensoldat"; 46 owner = "opensoldat"; 47 repo = "opensoldat"; 48 rev = "9574f5791b7993067f03d2df03d625908bc3762f"; 49 sha256 = "0kyxzikd4ngx3nshjw0411x61zqq1b7l01lxw41rlcy4nad3r0vi"; 50 }; 51 52 nativeBuildInputs = [ fpc makeWrapper autoPatchelfHook cmake ]; 53 54 cmakeFlags = [ 55 "-DADD_ASSETS=OFF" # We provide base's smods via nix 56 "-DBUILD_GNS=OFF" # Don't build GameNetworkingSockets as an ExternalProject 57 ]; 58 59 buildInputs = [ SDL2 freetype physfs openal gamenetworkingsockets ]; 60 # TODO(@sternenseemann): set proper rpath via cmake, so we don't need autoPatchelfHook 61 runtimeDependencies = [ xorg.libX11 ]; 62 63 # make sure soldat{,server} find their game archive, 64 # let them write their state and configuration files 65 # to $XDG_CONFIG_HOME/soldat/soldat{,server} unless 66 # the user specifies otherwise. 67 # TODO(@sternenseemann): rename config dir to opensoldat 68 postInstall = '' 69 for p in $out/bin/soldatserver $out/bin/soldat; do 70 configDir="\''${XDG_CONFIG_HOME:-\$HOME/.config}/soldat/$(basename "$p")" 71 72 wrapProgram "$p" \ 73 --run "mkdir -p \"$configDir\"" \ 74 --add-flags "-fs_portable 0" \ 75 --add-flags "-fs_userpath \"$configDir\"" \ 76 --add-flags "-fs_basepath \"${base}/share/soldat\"" 77 done 78 ''; 79 80 meta = with lib; { 81 description = "Opensoldat is a unique 2D (side-view) multiplayer action game"; 82 license = [ licenses.mit base.meta.license ]; 83 inherit (src.meta) homepage; 84 maintainers = [ maintainers.sternenseemann ]; 85 platforms = [ "x86_64-linux" "i686-linux" ]; 86 # portability currently mainly limited by fpc 87 # in nixpkgs which doesn't work on darwin, 88 # aarch64 and arm support should be possible: 89 # https://github.com/opensoldat/opensoldat/issues/45 90 }; 91}