biome: 1.9.2 -> 1.9.3 (#349335)
[NixPkgs.git] / pkgs / games / sm64ex / generic.nix
blobfd53b78042f5ee0562296c30699cd85f7096a4da
1 { pname
2 , version
3 , src
4 , extraNativeBuildInputs ? [ ]
5 , extraBuildInputs ? [ ]
6 , extraMeta ? { }
7 , compileFlags ? [ ]
8 , postInstall ? ""
9 , region ? "us"
11 , lib
12 , stdenv
13 , python3
14 , pkg-config
15 , audiofile
16 , SDL2
17 , hexdump
18 , requireFile
19 , baseRom ? requireFile {
20     name = "baserom.${region}.z64";
21     message = ''
22       This nix expression requires that baserom.${region}.z64 is
23       already part of the store. To get this file you can dump your Super Mario 64 cartridge's contents
24       and add it to the nix store with nix-store --add-fixed sha256 <FILE>.
25       Note that if you are not using a US baserom, you must overwrite the "region" attribute with either "eu" or "jp".
26     '';
27     sha256 = {
28       "us" = "17ce077343c6133f8c9f2d6d6d9a4ab62c8cd2aa57c40aea1f490b4c8bb21d91";
29       "eu" = "c792e5ebcba34c8d98c0c44cf29747c8ee67e7b907fcc77887f9ff2523f80572";
30       "jp" = "9cf7a80db321b07a8d461fe536c02c87b7412433953891cdec9191bfad2db317";
31     }.${region};
32   }
35 stdenv.mkDerivation rec {
36   inherit pname version src postInstall;
38   nativeBuildInputs = [
39     python3
40     pkg-config
41     hexdump
42   ] ++ extraNativeBuildInputs;
44   buildInputs = [
45     audiofile
46     SDL2
47   ] ++ extraBuildInputs;
49   enableParallelBuilding = true;
51   makeFlags = [
52     "VERSION=${region}"
53   ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
54     "OSX_BUILD=1"
55   ] ++ compileFlags;
57   preBuild = ''
58     patchShebangs extract_assets.py
59     ln -s ${baseRom} ./baserom.${region}.z64
60   '';
62   installPhase = ''
63     runHook preInstall
65     mkdir -p $out/bin
66     cp build/${region}_pc/sm64.${region}.f3dex2e $out/bin/sm64ex
68     runHook postInstall
69   '';
71   meta = with lib; {
72     longDescription =
73       extraMeta.description or "Super Mario 64 port based off of decompilation" + "\n" + ''
74         Note that you must supply a baserom yourself to extract assets from.
75         If you are not using an US baserom, you must overwrite the "region" attribute with either "eu" or "jp".
76         If you would like to use patches sm64ex distributes as makeflags, add them to the "compileFlags" attribute.
77       '';
78     mainProgram = "sm64ex";
79     license = licenses.unfree;
80     maintainers = [ ];
81     platforms = platforms.unix;
82   } // extraMeta;