Skip to content

Instantly share code, notes, and snippets.

@samueldr
Created March 26, 2023 20:38
Show Gist options
  • Select an option

  • Save samueldr/cf6b6fe557d7007810f1545f29c1ece6 to your computer and use it in GitHub Desktop.

Select an option

Save samueldr/cf6b6fe557d7007810f1545f29c1ece6 to your computer and use it in GitHub Desktop.
{ pkgs ? import <nixpkgs> {} }:
let
gameBuilder =
{ stdenv
, runtimeShell
, fetchFromGitHub
, cmake
, SDL2
, pname
, version
, src
, pommeSrc ? pkgs.fetchFromGitHub {
owner = "jorio";
repo = "Pomme";
rev = "fd1cd2cf81a2d39a4e47e76485860a87f0bf33f6"; # master branch
sha256 = "sha256-r62A4LjWw2oWBbePjBaAGbIB0qPs9p7V2bNkF54Xqp4=";
}
}:
stdenv.mkDerivation {
inherit
pname
version
src
;
buildInputs = [
SDL2
];
nativeBuildInputs = [
cmake
];
cmakeFlags = [
"-DCMAKE_BUILD_TYPE=Release"
];
postPatch = ''
(
cd extern
rmdir Pomme
ln -s ${pommeSrc} Pomme
)
'';
installPhase = ''
mkdir -p $out/opt
cp -rv -t $out/opt \
Data \
"$pname" \
ReadMe.txt
mkdir -p $out/bin
# The game only checks PWD for the Data directory.
cat <<EOF > $out/bin/"$pname"
#!${runtimeShell}
cd "$out/opt/"
exec "./$pname" "$@"
EOF
chmod +x $out/bin/"$pname"
'';
}
;
games = pkgs:
{
BillyFrontier = pkgs.callPackage gameBuilder {
pname = "BillyFrontier";
version = "unstable-2022-11-16";
src = pkgs.fetchFromGitHub {
owner = "jorio";
repo = "BillyFrontier";
rev = "b5d1ebc7a36e4cc545a8604ce2e64640fa670352"; # master branch
sha256 = "sha256-XCAOEorj1iLuk9aLofakJQzQTt19AjOFwFGFx3GnJug=";
};
};
Bugdom = pkgs.callPackage gameBuilder {
pname = "Bugdom";
version = "unstable-2023-02-05";
src = pkgs.fetchFromGitHub {
owner = "jorio";
repo = "Bugdom";
rev = "bdacc253cc93c0f4c3b16a056ed70001ac26cfd3"; # master branch
sha256 = "sha256-nCup/+CeVP8WEcgE2gmh5Gdfj++GjH6ZH4IgbXRUatw=";
};
};
CroMagRally = pkgs.callPackage gameBuilder {
pname = "CroMagRally";
version = "unstable-2022-09-28";
src = pkgs.fetchFromGitHub {
owner = "jorio";
repo = "CroMagRally";
rev = "32df36398a61d72549cd32c7e89b550030608192"; # master branch
sha256 = "sha256-XIU9w5JKy+R0TNksn7JDiXkVgC6wTyLCB6HlaEUgtoA=";
};
};
MightyMike = pkgs.callPackage gameBuilder {
pname = "MightyMike";
version = "unstable-2023-02-05";
src = pkgs.fetchFromGitHub {
owner = "jorio";
repo = "MightyMike";
rev = "972165028c86bc8c69d446c659399e228e71d8c5"; # master branch
sha256 = "sha256-GUrCvFtfe1se4A8i88hL9uv97y6WqECfCeIaTF2x4kQ=";
};
};
Nanosaur = pkgs.callPackage gameBuilder {
pname = "Nanosaur";
version = "unstable-2023-02-05";
src = pkgs.fetchFromGitHub {
owner = "jorio";
repo = "Nanosaur";
rev = "3a56f8a0e5ea6d442ab86c33c1d033c76222b7ac"; # master branch
sha256 = "sha256-feZHaO7z05S/VISCYk3wHfFXjqlq0LnRs93n2I/Aej0=";
};
};
Nanosaur2 = pkgs.callPackage gameBuilder {
pname = "Nanosaur2";
version = "unstable-2023-02-05";
src = pkgs.fetchFromGitHub {
owner = "jorio";
repo = "Nanosaur2";
rev = "589931b7475d2efa8ee64febd874773f0003f236"; # master branch
sha256 = "sha256-xdpOSbM2B2LbvGI+4lunm3+vFuU0DisM3x8yrHgxOLk=";
};
};
OttoMatic = pkgs.callPackage gameBuilder {
pname = "OttoMatic";
version = "unstable-2023-02-05";
src = pkgs.fetchFromGitHub {
owner = "jorio";
repo = "OttoMatic";
rev = "67cc3f229a7de37d110ea88b6c796cf6137d539f"; # master branch
sha256 = "sha256-/Z/2akY1+RL+VD2uCH4Lg/C1J8/ACMVsb454tTTko2o=";
};
};
}
;
in
(games pkgs) //
{
cross = {
aarch64 = games pkgs.pkgsCross.aarch64-multiplatform;
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment