sm64ex: split out baserom derivation for easier reuse and nixfmt run
This commit is contained in:
parent
801534d649
commit
c78e67859b
39
pkgs/by-name/sm/sm64baserom/package.nix
Normal file
39
pkgs/by-name/sm/sm64baserom/package.nix
Normal file
@ -0,0 +1,39 @@
|
||||
{
|
||||
requireFile,
|
||||
runCommand,
|
||||
|
||||
region ? "us",
|
||||
showRegionMessage ? true,
|
||||
}:
|
||||
# nixpkgs assumes that a file derivation is a setup script and tries to load it, so we have to put this in a directory
|
||||
let
|
||||
file = 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>.
|
||||
${
|
||||
if showRegionMessage then
|
||||
''Note that if you are not using a US baserom, you must overwrite the "region" attribute with either "eu" or "jp".''
|
||||
else
|
||||
""
|
||||
}
|
||||
'';
|
||||
sha256 =
|
||||
{
|
||||
"us" = "17ce077343c6133f8c9f2d6d6d9a4ab62c8cd2aa57c40aea1f490b4c8bb21d91";
|
||||
"eu" = "c792e5ebcba34c8d98c0c44cf29747c8ee67e7b907fcc77887f9ff2523f80572";
|
||||
"jp" = "9cf7a80db321b07a8d461fe536c02c87b7412433953891cdec9191bfad2db317";
|
||||
}
|
||||
.${region};
|
||||
};
|
||||
result = runCommand "baserom-${region}-safety-dir" { } ''
|
||||
mkdir $out
|
||||
ln -s ${file} $out/${file.name}
|
||||
'';
|
||||
in
|
||||
result
|
||||
// {
|
||||
romPath = "${result.outPath}/${file.name}";
|
||||
}
|
@ -1,8 +1,9 @@
|
||||
{ callPackage
|
||||
, fetchFromGitHub
|
||||
, autoPatchelfHook
|
||||
, zlib
|
||||
, stdenvNoCC
|
||||
{
|
||||
callPackage,
|
||||
fetchFromGitHub,
|
||||
autoPatchelfHook,
|
||||
zlib,
|
||||
stdenvNoCC,
|
||||
}:
|
||||
|
||||
callPackage ./generic.nix {
|
||||
@ -16,13 +17,9 @@ callPackage ./generic.nix {
|
||||
sha256 = "sha256-iwJsq0FN9npxveIoMiB7zL5j1V72IExtEpzGj6lwLXQ=";
|
||||
};
|
||||
|
||||
extraNativeBuildInputs = [
|
||||
autoPatchelfHook
|
||||
];
|
||||
extraNativeBuildInputs = [ autoPatchelfHook ];
|
||||
|
||||
extraBuildInputs = [
|
||||
zlib
|
||||
];
|
||||
extraBuildInputs = [ zlib ];
|
||||
|
||||
postInstall =
|
||||
let
|
||||
|
@ -1,9 +1,8 @@
|
||||
{ callPackage
|
||||
, branch
|
||||
}:
|
||||
{ callPackage, branch }:
|
||||
|
||||
{
|
||||
sm64ex = callPackage ./sm64ex.nix { };
|
||||
|
||||
sm64ex-coop = callPackage ./coop.nix { };
|
||||
}.${branch}
|
||||
}
|
||||
.${branch}
|
||||
|
@ -1,39 +1,33 @@
|
||||
{ pname
|
||||
, version
|
||||
, src
|
||||
, extraNativeBuildInputs ? [ ]
|
||||
, extraBuildInputs ? [ ]
|
||||
, extraMeta ? { }
|
||||
, compileFlags ? [ ]
|
||||
, postInstall ? ""
|
||||
, region ? "us"
|
||||
{
|
||||
pname,
|
||||
version,
|
||||
src,
|
||||
extraNativeBuildInputs ? [ ],
|
||||
extraBuildInputs ? [ ],
|
||||
extraMeta ? { },
|
||||
compileFlags ? [ ],
|
||||
postInstall ? "",
|
||||
region ? "us",
|
||||
|
||||
, lib
|
||||
, stdenv
|
||||
, 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};
|
||||
}
|
||||
lib,
|
||||
stdenv,
|
||||
python3,
|
||||
pkg-config,
|
||||
audiofile,
|
||||
SDL2,
|
||||
hexdump,
|
||||
sm64baserom,
|
||||
}:
|
||||
|
||||
let
|
||||
baseRom = (sm64baserom.override { inherit region; }).romPath;
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
inherit pname version src postInstall;
|
||||
inherit
|
||||
pname
|
||||
version
|
||||
src
|
||||
postInstall
|
||||
;
|
||||
|
||||
nativeBuildInputs = [
|
||||
python3
|
||||
@ -48,11 +42,14 @@ stdenv.mkDerivation rec {
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
makeFlags = [
|
||||
makeFlags =
|
||||
[
|
||||
"VERSION=${region}"
|
||||
] ++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
"OSX_BUILD=1"
|
||||
] ++ compileFlags;
|
||||
]
|
||||
++ compileFlags;
|
||||
|
||||
preBuild = ''
|
||||
patchShebangs extract_assets.py
|
||||
@ -68,9 +65,12 @@ stdenv.mkDerivation rec {
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
longDescription =
|
||||
extraMeta.description or "Super Mario 64 port based off of decompilation" + "\n" + ''
|
||||
meta =
|
||||
with lib;
|
||||
{
|
||||
longDescription = ''
|
||||
${extraMeta.description or "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.
|
||||
@ -79,5 +79,6 @@ stdenv.mkDerivation rec {
|
||||
license = licenses.unfree;
|
||||
maintainers = [ ];
|
||||
platforms = platforms.unix;
|
||||
} // extraMeta;
|
||||
}
|
||||
// extraMeta;
|
||||
}
|
||||
|
@ -1,6 +1,4 @@
|
||||
{ callPackage
|
||||
, fetchFromGitHub
|
||||
}:
|
||||
{ callPackage, fetchFromGitHub }:
|
||||
|
||||
callPackage ./generic.nix {
|
||||
pname = "sm64ex";
|
||||
@ -18,4 +16,3 @@ callPackage ./generic.nix {
|
||||
description = "Super Mario 64 port based off of decompilation";
|
||||
};
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user