pytrainer: unpin python 3.10
[NixPkgs.git] / pkgs / games / fallout-ce / build.nix
blob5f0c0b404f36d5383d63cecd7f9126606b6c6a1f
1 { cmake
2 , fpattern
3 , lib
4 , SDL2
5 , stdenv
6 , writeShellScript
8 , extraBuildInputs ? [ ]
9 , extraMeta
10 , patches
11 , pname
12 , version
13 , src
16 let
17   launcher = writeShellScript "${pname}" ''
18     set -eu
19     assetDir="''${XDG_DATA_HOME:-$HOME/.local/share}/${pname}"
20     [ -d "$assetDir" ] || mkdir -p "$assetDir"
21     cd "$assetDir"
23     notice=0 fault=0
24     requiredFiles=(master.dat critter.dat)
25     for f in "''${requiredFiles[@]}"; do
26       if [ ! -f "$f" ]; then
27         echo "Required file $f not found in $PWD, note the files are case-sensitive"
28         notice=1 fault=1
29       fi
30     done
32     if [ ! -d "data/sound/music" ]; then
33       echo "data/sound/music directory not found in $PWD. This may prevent in-game music from functioning."
34       notice=1
35     fi
37     if [ $notice -ne 0 ]; then
38       echo "Please reference the installation instructions at https://github.com/alexbatalov/fallout2-ce"
39     fi
41     if [ $fault -ne 0 ]; then
42       exit $fault;
43     fi
45     exec @out@/libexec/${pname} "$@"
46   '';
48 stdenv.mkDerivation {
49   inherit pname version src patches;
51   nativeBuildInputs = [ cmake ];
52   buildInputs = [ SDL2 ] ++ extraBuildInputs;
53   hardeningDisable = [ "format" ];
54   cmakeBuildType = "RelWithDebInfo";
56   postPatch = ''
57     substituteInPlace third_party/fpattern/CMakeLists.txt \
58       --replace "FetchContent_Populate" "#FetchContent_Populate" \
59       --replace "{fpattern_SOURCE_DIR}" "${fpattern}/include" \
60       --replace "$/nix/" "/nix/"
61   '';
63   installPhase = ''
64     runHook preInstall
66     install -D ${pname} $out/libexec/${pname}
67     install -D ${launcher} $out/bin/${pname}
68     substituteInPlace $out/bin/${pname} --subst-var out
70     runHook postInstall
71   '';
73   meta = with lib; {
74     license = licenses.sustainableUse;
75     maintainers = with maintainers; [ hughobrien ];
76     platforms = platforms.linux;
77   } // extraMeta;