diff --git a/pkgs/by-name/ar/arrow/package.nix b/pkgs/by-name/ar/arrow/package.nix new file mode 100644 index 000000000000..f798956d6d9f --- /dev/null +++ b/pkgs/by-name/ar/arrow/package.nix @@ -0,0 +1,102 @@ +{ + stdenv, + lib, + fetchFromGitHub, + godot_4_4, + alsa-lib, + libGL, + libpulseaudio, + libX11, + libXcursor, + libXext, + libXi, + libXrandr, + udev, + vulkan-loader, + autoPatchelfHook, + writableTmpDirAsHomeHook, + makeDesktopItem, + copyDesktopItems, + nix-update-script, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "arrow"; + version = "3.0.0"; + + src = fetchFromGitHub { + owner = "mhgolkar"; + repo = "Arrow"; + tag = "v${finalAttrs.version}"; + hash = "sha256-oodW6XvesBWic0yK1Se/tycjqblE4qUSuAk+3MY3x8I="; + }; + + desktopItems = [ + (makeDesktopItem { + type = "Application"; + name = "Arrow"; + exec = "Arrow"; + icon = "Arrow"; + terminal = false; + comment = "Game Narrative Design Tool"; + desktopName = "Arrow"; + categories = [ "Application" ]; + }) + ]; + + nativeBuildInputs = [ + autoPatchelfHook + writableTmpDirAsHomeHook + godot_4_4 + copyDesktopItems + ]; + + runtimeDependencies = map lib.getLib [ + alsa-lib + libGL + libpulseaudio + libX11 + libXcursor + libXext + libXi + libXrandr + udev + vulkan-loader + ]; + + passthru.updateScript = nix-update-script { }; + + buildPhase = '' + runHook preBuild + + ln -s "${godot_4_4.export-templates-bin}" $HOME/.local + + mkdir -p build + godot4 --headless --export-release Linux ./build/Arrow + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + install -D -m 755 -t $out/libexec ./build/Arrow + install -D -m 644 -t $out/libexec ./build/Arrow.pck + + install -d -m 755 $out/bin + ln -s $out/libexec/Arrow $out/bin/Arrow + + install -vD icon.svg $out/share/icons/hicolor/scalable/apps/Arrow.svg + + runHook postInstall + ''; + + meta = { + homepage = "https://mhgolkar.github.io/Arrow/"; + description = "Game Narrative Design Tool"; + license = lib.licenses.mit; + mainProgram = "Arrow"; + maintainers = with lib.maintainers; [ miampf ]; + platforms = lib.platforms.linux; + }; +})