From 5b7fe6f389d618b36e8a101e194c682e9c51402c Mon Sep 17 00:00:00 2001 From: Paul Grandperrin Date: Thu, 25 Apr 2024 15:31:49 +0200 Subject: [PATCH 1/2] maintainers: add PaulGrandperrin --- maintainers/maintainer-list.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 388a3a8a13326..f842a231d60c9 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -19603,6 +19603,13 @@ githubId = 81905706; name = "Pau Kaifler"; }; + PaulGrandperrin = { + name = "Paul Grandperrin"; + email = "paul.grandperrin@gmail.com"; + github = "PaulGrandperrin"; + githubId = 1748936; + keys = [ { fingerprint = "FEDA B009 17FA A574 F536 ED52 4AB1 3530 3377 4DA3"; } ]; + }; paulsmith = { email = "paulsmith@pobox.com"; github = "paulsmith"; From cad17194fe73ab224313a157856c08a36bcbf15e Mon Sep 17 00:00:00 2001 From: Paul Grandperrin Date: Thu, 25 Apr 2024 14:04:16 +0200 Subject: [PATCH 2/2] perfect_dark: init at 0-unstable-2025-08-25 A PC port of Perfect Dark based on the decompilation of the Nintendo 64 game Co-authored-by: Jasi Co-authored-by: Fernando Rodrigues Signed-off-by: Fernando Rodrigues --- pkgs/by-name/pe/perfect_dark/package.nix | 130 +++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 pkgs/by-name/pe/perfect_dark/package.nix diff --git a/pkgs/by-name/pe/perfect_dark/package.nix b/pkgs/by-name/pe/perfect_dark/package.nix new file mode 100644 index 0000000000000..e393d60835042 --- /dev/null +++ b/pkgs/by-name/pe/perfect_dark/package.nix @@ -0,0 +1,130 @@ +{ + lib, + stdenv, + fetchFromGitHub, + SDL2, + cmake, + libGL, + pkg-config, + python3, + zlib, + romID ? "ntsc-final", +}: +let + roms = [ + "ntsc-final" + "pal-final" + "jpn-final" + ]; +in +assert lib.assertOneOf "romID" romID roms; + +stdenv.mkDerivation (finalAttrs: { + pname = "perfect_dark"; + version = "0-unstable-2025-08-25"; + + src = fetchFromGitHub { + owner = "fgsfdsfgs"; + repo = "perfect_dark"; + rev = "bb4fcffeb5dc382fce4c609897a2e82590d7d709"; + hash = "sha256-XLmAjwEzz4fPpHuk3IBmhhDfiuudwMTnYgVe6Wcfdsg="; + }; + + enableParallelBuilding = true; + + # Fails to build if not set: + hardeningDisable = [ "format" ]; + hardeningEnable = [ "pie" ]; + + cmakeFlags = [ + (lib.cmakeFeature "ROMID" romID) + ]; + + nativeBuildInputs = [ + cmake + pkg-config + python3 + ]; + + buildInputs = [ + SDL2 + libGL + zlib + ]; + + postPatch = + # The project uses Git to retrieve version informations but our + # fetcher deletes the .git directory, so we replace the commands + # with the correct data directly. + '' + substituteInPlace CMakeLists.txt \ + --replace-fail "git rev-parse --short HEAD" \ + "echo ${builtins.substring 0 9 finalAttrs.src.rev}" \ + --replace-fail "git rev-parse --abbrev-ref HEAD" \ + "echo port" + '' + # Point toward the compiled binary and not the shell wrapper since + # the rom auto-detection logic is not needed in this build. + + '' + substituteInPlace dist/linux/io.github.fgsfdsfgs.perfect_dark.desktop \ + --replace-fail "Exec=io.github.fgsfdsfgs.perfect_dark.sh" \ + "Exec=io.github.fgsfdsfgs.perfect_dark" + ''; + + preConfigure = '' + patchShebangs --build . + ''; + + installPhase = '' + runHook preInstall + + pushd .. + install -Dm755 build/pd.* $out/bin/io.github.fgsfdsfgs.perfect_dark + install -Dm644 dist/linux/io.github.fgsfdsfgs.perfect_dark.desktop \ + -t $out/share/applications + install -Dm644 dist/linux/io.github.fgsfdsfgs.perfect_dark.png \ + -t $out/share/icons/hicolor/256x256/apps + install -Dm644 dist/linux/io.github.fgsfdsfgs.perfect_dark.metainfo.xml \ + -t $out/share/metainfo + popd + + runHook postInstall + ''; + + meta = { + description = "Modern cross-platform port of Perfect Dark"; + longDescription = '' + This is a port of Ryan Dywer's decompilation of classic N64 + shooter Perfect Dark to modern systems. + + You will need to provide a copy of the ROM at + `$HOME/.local/share/perfectdark/data/pd.${romID}.z64` to launch + the game. + + Though `ntsc-final` is the recommended default, you can change + the ROM variant of this game with an expression like this: + + ```nix + perfect_dark.override { romID = "jpn-final"; } + ``` + + Supported romIDs are `${lib.generators.toPretty { } roms}`. + ''; + homepage = "https://github.com/fgsfdsfgs/perfect_dark/"; + license = with lib.licenses; [ + # perfect_dark, khrplatform.h, port/fast3d + mit + # Vendored source code and binaries of 'gzip'. + gpl3Plus + # Derivative work of "Perfect Dark" © 2000 Rare Ltd. + unfree + ]; + maintainers = with lib.maintainers; [ + PaulGrandperrin + normalcea + sigmasquadron + ]; + mainProgram = "io.github.fgsfdsfgs.perfect_dark"; + platforms = lib.platforms.linux; + }; +})