nixpkgs/pkgs/games/sm64ex/default.nix
Profpatsch 4a7f99d55d treewide: with stdenv.lib; in meta -> with lib;
Part of: https://github.com/NixOS/nixpkgs/issues/108938

meta = with stdenv.lib;

is a widely used pattern. We want to slowly remove
the `stdenv.lib` indirection and encourage people
to use `lib` directly. Thus let’s start with the meta
field.

This used a rewriting script to mostly automatically
replace all occurances of this pattern, and add the
`lib` argument to the package header if it doesn’t
exist yet.

The script in its current form is available at
https://cs.tvl.fyi/depot@2f807d7f141068d2d60676a89213eaa5353ca6e0/-/blob/users/Profpatsch/nixpkgs-rewriter/default.nix
2021-01-11 10:38:22 +01:00

70 lines
2.2 KiB
Nix

{ 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};
}
}:
stdenv.mkDerivation rec {
pname = "sm64ex";
version = "unstable-2020-06-19";
src = fetchFromGitHub {
owner = "sm64pc";
repo = "sm64ex";
rev = "f5005418348cf1a53bfa75ff415a513ef0b9b273";
sha256 = "0adyshkqk5c4lxhdxc3j6ax4svfka26486qpa5q2gl2nixwg9zxn";
};
nativeBuildInputs = [ python3 pkg-config ];
buildInputs = [ audiofile SDL2 hexdump ];
makeFlags = [ "VERSION=${region}" ] ++ compileFlags
++ stdenv.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
'';
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.
'';
license = licenses.unfree;
maintainers = with maintainers; [ ivar ];
platforms = platforms.unix;
};
}