diff --git a/flake-parts/packages.nix b/flake-parts/packages.nix index 327be5f..03ff9be 100644 --- a/flake-parts/packages.nix +++ b/flake-parts/packages.nix @@ -29,6 +29,7 @@ pinentry-touchid qbittorrent-mac spotify-mac + vkquake vlc-mac ; }; diff --git a/packages/default.nix b/packages/default.nix index cee0370..10935bc 100644 --- a/packages/default.nix +++ b/packages/default.nix @@ -9,5 +9,6 @@ _final: prev: { pinentry-touchid = prev.callPackage ./pinentry-touchid.nix {}; qbittorrent-mac = prev.callPackage ./qbittorrent-mac.nix {}; spotify-mac = prev.callPackage ./spotify-mac.nix {}; + vkquake = prev.callPackage ./vkquake {}; vlc-mac = prev.callPackage ./vlc-mac.nix {}; } diff --git a/packages/vkquake/default.nix b/packages/vkquake/default.nix new file mode 100644 index 0000000..bf656cc --- /dev/null +++ b/packages/vkquake/default.nix @@ -0,0 +1,76 @@ +{ + pkgs, + fetchFromGitHub, + lib, + stdenv, + ... +}: +stdenv.mkDerivation { + pname = "vkquake"; + name = "vkQuake"; + + src = fetchFromGitHub { + owner = "Novum"; + repo = "vkQuake"; + rev = "98e9e1c76e4ea57d6960c8b4c67a72f7f50f45ea"; + sha256 = "sha256-XMsvc9886eYI+CzBMckop7WCAulm2qlKdNu+3qDK7zY="; + }; + + nativeBuildInputs = with pkgs; [ + meson + pkgconfig + python3 + cmake + ninja + darwin.binutils + ripgrep + ]; + + buildInputs = with pkgs; [ + vulkan-headers + glslang + spirv-tools + SDL2 + libvorbis + flac + libopus + opusfile + flac + libmad + darwin.moltenvk + ]; + + macApp = ./vkQuake.app; + + buildPhase = '' + # -*-sh-*- + cp -r $src/* . + meson build && ninja -C build + cp -r $macApp vkQuake.app + chmod -R a+rw vkQuake.app + ls + cp build/vkquake vkQuake.app/Contents/Resources/vkquake + mkdir vkQuake.app/Contents/Frameworks + otool -L build/vkquake | + rg nix | + cut -f1 -d' ' | + awk '{$1=$1};1' | + sort | + uniq | + xargs -I {} cp {} vkQuake.app/Contents/Frameworks/. + otool -L vkQuake.app/Contents/Frameworks/* | + rg nix | + cut -f1 -d' ' | + awk '{$1=$1};1' | + sort | + uniq | + xargs -I {} cp -u {} vkQuake.app/Contents/Frameworks/. + ''; + + installPhase = '' + mkdir -p $out/bin + mkdir -p $out/Applications + mv build/vkquake $out/bin/vkquake + mv vkQuake.app $out/Applications/. + ''; +} diff --git a/packages/vkquake/vkQuake.app/Contents/Info.plist b/packages/vkquake/vkQuake.app/Contents/Info.plist new file mode 100755 index 0000000..56cf98b --- /dev/null +++ b/packages/vkquake/vkQuake.app/Contents/Info.plist @@ -0,0 +1,18 @@ + + + + + CFBundleExecutable + q1-launcher.sh + CFBundleName + vkQuake + CFBundlePackageType + APPL + CFBundleIconFile + vkquake.icns + CFBundleShortVersionString + 5.00 + NSHumanReadableCopyright + id Software + + diff --git a/packages/vkquake/vkQuake.app/Contents/MacOS/q1-launcher.sh b/packages/vkquake/vkQuake.app/Contents/MacOS/q1-launcher.sh new file mode 100755 index 0000000..6b58529 --- /dev/null +++ b/packages/vkquake/vkQuake.app/Contents/MacOS/q1-launcher.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +# setting the right directories +BASEDIR="$( cd "$(dirname "$0")" || exit; pwd )" +RESOURCESDIR="$( cd "$BASEDIR/../Resources" || exit; pwd )" +FRAMEWORKSDIR="$( cd "$BASEDIR/../Frameworks" || exit; pwd )" + +BIN="$RESOURCESDIR/vkquake" + +export DYLD_FALLBACK_LIBRARY_PATH="$FRAMEWORKSDIR" + +QUAKEDIR="$(if [[ -e "$RESOURCESDIR/id1" ]]; then echo "$RESOURCESDIR"; else echo "$HOME/.baseq1"; fi)" + +$BIN -basedir $QUAKEDIR diff --git a/packages/vkquake/vkQuake.app/Contents/Resources/vkquake.icns b/packages/vkquake/vkQuake.app/Contents/Resources/vkquake.icns new file mode 100644 index 0000000..8bacbab Binary files /dev/null and b/packages/vkquake/vkQuake.app/Contents/Resources/vkquake.icns differ