From 4c5768f0bcafe2975cbe4fa7c6c65c559018a54f Mon Sep 17 00:00:00 2001 From: Jason Yundt Date: Tue, 12 Nov 2024 16:05:53 -0500 Subject: [PATCH] descent3: init at 1.5.0-beta-unstable-2024-10-29 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit By default, Descent 3 will only look for game files in the current working directory. In order to function properly, Descent 3 needs to look for some of its files in the Nix store. This commit creates a wrapper around the main Descent3 executable that automatically looks in the correct path in the Nix store. Hopefully, this wrapper will only exist temporarily. I have an unfinished Descent 3 pull request that adds a DEFAULT_ADDITIONAL_DIRS CMake option [1]. Once I can finish that pull request (DescentDevelopers/Descent3#623 needs to get merged first), we’ll be able to get rid of this wrapper and use DEFAULT_ADDITIONAL_DIRS instead. Additionally, if DescentDevelopers/Descent3#628 gets merged first, then that pull request will also probably make this wrapper unnecessary. [1]: --- pkgs/by-name/de/descent3/package.nix | 60 ++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 pkgs/by-name/de/descent3/package.nix diff --git a/pkgs/by-name/de/descent3/package.nix b/pkgs/by-name/de/descent3/package.nix new file mode 100644 index 0000000000000..5027a8bc12e7f --- /dev/null +++ b/pkgs/by-name/de/descent3/package.nix @@ -0,0 +1,60 @@ +{ + descent3-unwrapped, + lib, + makeBinaryWrapper, + runCommand, +}: + +runCommand "descent3-${descent3-unwrapped.version}" + { + pname = "descent3"; + inherit (descent3-unwrapped) version; + nativeBuildInputs = [ makeBinaryWrapper ]; + passthru.unwrapped = descent3-unwrapped; + + meta = descent3-unwrapped.meta // { + # The code that produces the wrapper is in the Nixpkgs repo, and the + # Nixpkgs repo is MIT Licensed. + license = [ lib.licenses.mit ]; + longDescription = '' + Playing Descent 3 using the Nix package manager is a little bit awkward + at the moment. This wrapper makes it slightly less awkward. Here’s how + you use this wrapper: + + 1. Install the `descent3` package, or start an ephemeral shell with the + `descent3` package. + + 2. Find the documentation folder for `descent3-unwrapped` by running this + command: + + ```bash + nix-instantiate --eval --expr '(import { }).descent3-unwrapped + "/share/doc/Descent3"' + ``` + + 3. Open `/USAGE.md`. + + 4. Follow steps 1–6 of Descent 3’s usage instructions. + + 5. Change directory into the `D3-open-source` folder: + + ```bash + cd + ``` + + 6. Start Descent 3 by running this command: + + ```bash + Descent3 + ``` + ''; + }; + } + '' + mkdir --parents "$out/bin" + descent3_unwrapped=${lib.strings.escapeShellArg descent3-unwrapped} + makeBinaryWrapper \ + "$descent3_unwrapped/bin/Descent3" \ + "$out/bin/Descent3" \ + --append-flags -additionaldir \ + --append-flags "$descent3_unwrapped/share" + ''