diff options
author | github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> | 2022-06-24 00:02:29 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-24 00:02:29 +0000 |
commit | 5b9ee17283fdfda3d413789d55b9d71834ebbec5 (patch) | |
tree | 8dcae57148418ea5bd857af3e7c930b3ce90b567 /pkgs/games | |
parent | 4f79f81d47ad074786ee27376c64d1aa7fd0ffd7 (diff) | |
parent | 2ee36a0de700998569f9f68e402eb27139c78083 (diff) |
Merge master into staging-next
Diffstat (limited to 'pkgs/games')
-rw-r--r-- | pkgs/games/sm64ex/default.nix | 112 | ||||
-rw-r--r-- | pkgs/games/sm64ex/generic.nix | 83 |
2 files changed, 131 insertions, 64 deletions
diff --git a/pkgs/games/sm64ex/default.nix b/pkgs/games/sm64ex/default.nix index c6df2099d3ce3..a6bf7202adcf4 100644 --- a/pkgs/games/sm64ex/default.nix +++ b/pkgs/games/sm64ex/default.nix @@ -1,71 +1,55 @@ -{ lib, stdenv +{ lib +, stdenv , fetchFromGitHub -, python3 -, pkg-config -, audiofile -, SDL2 -, hexdump -, requireFile -, compileFlags ? [ ] -, region ? "us" -, baseRom ? requireFile { - name = "baserom.${region}.z64"; - message = '' - This nix expression requires that baserom.${region}.z64 is - already part of the store. To get this file you can dump your Super Mario 64 cartridge's contents - and add it to the nix store with nix-store --add-fixed sha256 <FILE>. - Note that if you are not using a US baserom, you must overwrite the "region" attribute with either "eu" or "jp". - ''; - sha256 = { - "us" = "17ce077343c6133f8c9f2d6d6d9a4ab62c8cd2aa57c40aea1f490b4c8bb21d91"; - "eu" = "c792e5ebcba34c8d98c0c44cf29747c8ee67e7b907fcc77887f9ff2523f80572"; - "jp" = "9cf7a80db321b07a8d461fe536c02c87b7412433953891cdec9191bfad2db317"; - }.${region}; - } +, callPackage +, autoPatchelfHook +, branch }: -stdenv.mkDerivation rec { - pname = "sm64ex"; - version = "unstable-2021-11-30"; - - src = fetchFromGitHub { - owner = "sm64pc"; - repo = "sm64ex"; - rev = "db9a6345baa5acb41f9d77c480510442cab26025"; - sha256 = "sha256-q7JWDvNeNrDpcKVtIGqB1k7I0FveYwrfqu7ZZK7T8F8="; +{ + sm64ex = callPackage ./generic.nix { + pname = "sm64ex"; + version = "0.pre+date=2021-11-30"; + + src = fetchFromGitHub { + owner = "sm64pc"; + repo = "sm64ex"; + rev = "db9a6345baa5acb41f9d77c480510442cab26025"; + sha256 = "sha256-q7JWDvNeNrDpcKVtIGqB1k7I0FveYwrfqu7ZZK7T8F8="; + }; + + extraMeta = { + homepage = "https://github.com/sm64pc/sm64ex"; + description = "Super Mario 64 port based off of decompilation"; + }; }; - nativeBuildInputs = [ python3 pkg-config ]; - buildInputs = [ audiofile SDL2 hexdump ]; - - makeFlags = [ "VERSION=${region}" ] ++ compileFlags - ++ lib.optionals stdenv.isDarwin [ "OSX_BUILD=1" ]; - - inherit baseRom; - - preBuild = '' - patchShebangs extract_assets.py - cp $baseRom ./baserom.${region}.z64 - ''; - - installPhase = '' - mkdir -p $out/bin - cp build/${region}_pc/sm64.${region}.f3dex2e $out/bin/sm64ex - ''; - - enableParallelBuilding = true; - - meta = with lib; { - homepage = "https://github.com/sm64pc/sm64ex"; - description = "Super Mario 64 port based off of decompilation"; - longDescription = '' - Super Mario 64 port based off of decompilation. - Note that you must supply a baserom yourself to extract assets from. - If you are not using an US baserom, you must overwrite the "region" attribute with either "eu" or "jp". - If you would like to use patches sm64ex distributes as makeflags, add them to the "compileFlags" attribute. + sm64ex-coop = callPackage ./generic.nix { + pname = "sm64ex-coop"; + version = "0.pre+date=2022-05-14"; + + src = fetchFromGitHub { + owner = "djoslin0"; + repo = "sm64ex-coop"; + rev = "8200b175607fe2939f067d496627c202a15fe24c"; + sha256 = "sha256-c1ZmMBtvYYcaJ/WxkZBVvNGVCeSXfm8NKe/BiAIJtks="; + }; + + extraNativeBuildInputs = [ + autoPatchelfHook + ]; + + postInstall = let + sharedLib = stdenv.hostPlatform.extensions.sharedLibrary; + in '' + mkdir -p $out/lib + cp $src/lib/bass/libbass{,_fx}${sharedLib} $out/lib + cp $src/lib/discordsdk/libdiscord_game_sdk${sharedLib} $out/lib ''; - license = licenses.unfree; - maintainers = with maintainers; [ ivar ]; - platforms = platforms.unix; + + extraMeta = { + homepage = "https://github.com/djoslin0/sm64ex-coop"; + description = "Super Mario 64 online co-op mod, forked from sm64ex"; + }; }; -} +}.${branch} diff --git a/pkgs/games/sm64ex/generic.nix b/pkgs/games/sm64ex/generic.nix new file mode 100644 index 0000000000000..ab75ac70b9c53 --- /dev/null +++ b/pkgs/games/sm64ex/generic.nix @@ -0,0 +1,83 @@ +{ pname +, version +, src +, extraNativeBuildInputs ? [ ] +, extraMeta ? {} +, compileFlags ? [ ] +, postInstall ? "" +, region ? "us" + +, lib +, stdenv +, fetchFromGitHub +, python3 +, pkg-config +, audiofile +, SDL2 +, hexdump +, requireFile +, baseRom ? requireFile { + name = "baserom.${region}.z64"; + message = '' + This nix expression requires that baserom.${region}.z64 is + already part of the store. To get this file you can dump your Super Mario 64 cartridge's contents + and add it to the nix store with nix-store --add-fixed sha256 <FILE>. + Note that if you are not using a US baserom, you must overwrite the "region" attribute with either "eu" or "jp". + ''; + sha256 = { + "us" = "17ce077343c6133f8c9f2d6d6d9a4ab62c8cd2aa57c40aea1f490b4c8bb21d91"; + "eu" = "c792e5ebcba34c8d98c0c44cf29747c8ee67e7b907fcc77887f9ff2523f80572"; + "jp" = "9cf7a80db321b07a8d461fe536c02c87b7412433953891cdec9191bfad2db317"; + }.${region}; + } +}: + +stdenv.mkDerivation rec { + inherit pname version src postInstall; + + nativeBuildInputs = [ + python3 + pkg-config + hexdump + ] ++ extraNativeBuildInputs; + + buildInputs = [ + audiofile + SDL2 + ]; + + enableParallelBuilding = true; + + makeFlags = [ + "VERSION=${region}" + ] ++ lib.optionals stdenv.isDarwin [ + "OSX_BUILD=1" + ] ++ compileFlags; + + preBuild = '' + patchShebangs extract_assets.py + ln -s ${baseRom} ./baserom.${region}.z64 + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin + cp build/${region}_pc/sm64.${region}.f3dex2e $out/bin/sm64ex + + runHook postInstall + ''; + + meta = with lib; { + longDescription = + extraMeta.description or "Super Mario 64 port based off of decompilation" + "\n" + '' + Note that you must supply a baserom yourself to extract assets from. + If you are not using an US baserom, you must overwrite the "region" attribute with either "eu" or "jp". + If you would like to use patches sm64ex distributes as makeflags, add them to the "compileFlags" attribute. + ''; + mainProgram = "sm64ex"; + license = licenses.unfree; + maintainers = with maintainers; [ ivar ]; + platforms = platforms.unix; + } // extraMeta; +} |