diff --git a/pkgs/games/vintagestory/default.nix b/pkgs/games/vintagestory/default.nix index 2b82426b57cf..40b3e1077248 100644 --- a/pkgs/games/vintagestory/default.nix +++ b/pkgs/games/vintagestory/default.nix @@ -13,20 +13,39 @@ , libGLU , SDL2 , freealut +, libglvnd +, pipewire +, libpulseaudio +, experimental ? false +, dotnet-runtime_7 }: stdenv.mkDerivation rec { pname = "vintagestory"; - version = "1.18.6"; + version = if experimental then "1.18.6" else "1.18.6"; + + src = + if experimental + then + (fetchurl { + url = "https://cdn.vintagestory.at/gamefiles/net7/vs_client_linux-x64_${version}.tar.gz"; + sha256 = "sha256-h4TyMDFid3eB6oPJix92/tmS0v+Ox6CFSRyn/JRNbxg="; + }) + else + (fetchurl { + url = "https://cdn.vintagestory.at/gamefiles/stable/vs_archive_${version}.tar.gz"; + sha256 = "sha256-Sa5R/Msg36pKRpZJXXJgM4lcCADJX9x81fMnTD3tjAI="; + }); - src = fetchurl { - url = "https://cdn.vintagestory.at/gamefiles/stable/vs_archive_${version}.tar.gz"; - sha256 = "sha256-Sa5R/Msg36pKRpZJXXJgM4lcCADJX9x81fMnTD3tjAI="; - }; nativeBuildInputs = [ makeWrapper copyDesktopItems ]; - buildInputs = [ mono ]; + buildInputs = + if experimental then [ + dotnet-runtime_7 + ] else [ + mono + ]; runtimeLibs = lib.makeLibraryPath ([ gtk2 @@ -36,6 +55,9 @@ stdenv.mkDerivation rec { libGLU SDL2 freealut + libglvnd + pipewire + libpulseaudio ] ++ (with xorg; [ libX11 libXi @@ -43,7 +65,7 @@ stdenv.mkDerivation rec { desktopItems = makeDesktopItem { name = "vintagestory"; - desktopName = "Vintage Story"; + desktopName = if experimental then "Vintage Story Experimental .net 7" else "Vintage Story"; exec = "vintagestory"; icon = "vintagestory"; comment = "Innovate and explore in a sandbox world"; @@ -61,14 +83,21 @@ stdenv.mkDerivation rec { runHook postInstall ''; - preFixup = '' + preFixup = (if experimental then '' + makeWrapper ${dotnet-runtime_7}/bin/dotnet $out/bin/vintagestory \ + --prefix LD_LIBRARY_PATH : "${runtimeLibs}" \ + --add-flags $out/share/vintagestory/Vintagestory.dll + makeWrapper ${dotnet-runtime_7}/bin/dotnet $out/bin/vintagestory-server \ + --prefix LD_LIBRARY_PATH : "${runtimeLibs}" \ + --add-flags $out/share/vintagestory/VintagestoryServer.dll + '' else '' makeWrapper ${mono}/bin/mono $out/bin/vintagestory \ --prefix LD_LIBRARY_PATH : "${runtimeLibs}" \ --add-flags $out/share/vintagestory/Vintagestory.exe makeWrapper ${mono}/bin/mono $out/bin/vintagestory-server \ --prefix LD_LIBRARY_PATH : "${runtimeLibs}" \ --add-flags $out/share/vintagestory/VintagestoryServer.exe - + '') + '' find "$out/share/vintagestory/assets/" -not -path "*/fonts/*" -regex ".*/.*[A-Z].*" | while read -r file; do local filename="$(basename -- "$file")" ln -sf "$filename" "''${file%/*}"/"''${filename,,}" @@ -79,6 +108,6 @@ stdenv.mkDerivation rec { description = "An in-development indie sandbox game about innovation and exploration"; homepage = "https://www.vintagestory.at/"; license = licenses.unfree; - maintainers = with maintainers; [ artturin ]; + maintainers = with maintainers; [ artturin gigglesquid ]; }; }