From 28b3ce7b9261a45698d71cebb050a920bef5d49e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torjus=20H=C3=A5kestad?= Date: Mon, 13 Jan 2025 12:18:56 +0100 Subject: [PATCH] Initial vintagestory --- flake.nix | 5 ++ pkgs/vintagestory/default.nix | 108 ++++++++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 pkgs/vintagestory/default.nix diff --git a/flake.nix b/flake.nix index d51d7da..98dde30 100644 --- a/flake.nix +++ b/flake.nix @@ -20,6 +20,7 @@ default = final: prev: { awakened-poe-trade = self.packages.${prev.system}.awakened-poe-trade; path-of-building-beta = self.packages.${prev.system}.path-of-building-beta; + vintagestory-unstable = self.packages.${prev.system}.vintagestory-unstable; }; awakened-poe-trade = final: prev: { awakened-poe-trade = self.packages.${prev.system}.awakened-poe-trade; @@ -27,6 +28,9 @@ path-of-building-beta = final: prev: { awakened-poe-trade = self.packages.${prev.system}.path-of-building-beta; }; + vintagestory-unstable = final: prev: { + vintagestory-unstable = self.packages.${prev.system}.vintagestory-unstable; + }; }; packages = forAllSystems ( @@ -34,6 +38,7 @@ { awakened-poe-trade = pkgs.callPackage ./pkgs/awakened-poe-trade { }; path-of-building-beta = pkgs.qt6Packages.callPackage ./pkgs/path-of-building-beta { }; + vintagestory-unstable = pkgs.callPackage ./pkgs/vintagestory { }; } ); }; diff --git a/pkgs/vintagestory/default.nix b/pkgs/vintagestory/default.nix new file mode 100644 index 0000000..e5ea0e3 --- /dev/null +++ b/pkgs/vintagestory/default.nix @@ -0,0 +1,108 @@ +{ + lib, + stdenv, + fetchurl, + makeWrapper, + makeDesktopItem, + copyDesktopItems, + xorg, + gtk2, + sqlite, + openal, + cairo, + libGLU, + SDL2, + freealut, + libglvnd, + pipewire, + libpulseaudio, + dotnet-runtime_8, +}: + +stdenv.mkDerivation rec { + pname = "vintagestory"; + version = "1.20.0-rc.6"; + + src = fetchurl { + url = "https://cdn.vintagestory.at/gamefiles/unstable/vs_client_linux-x64_${version}.tar.gz"; + hash = "sha256-JxyQrZrAmMkUy28JUak0BHHpuGEb2fbxNrtOGVKGhOQ="; + }; + + nativeBuildInputs = [ + makeWrapper + copyDesktopItems + ]; + + buildInputs = [ dotnet-runtime_8 ]; + + runtimeLibs = lib.makeLibraryPath ( + [ + gtk2 + sqlite + openal + cairo + libGLU + SDL2 + freealut + libglvnd + pipewire + libpulseaudio + ] + ++ (with xorg; [ + libX11 + libXi + libXcursor + ]) + ); + + desktopItems = [ + (makeDesktopItem { + name = "vintagestory"; + desktopName = "Vintage Story"; + exec = "vintagestory"; + icon = "vintagestory"; + comment = "Innovate and explore in a sandbox world"; + categories = [ "Game" ]; + }) + ]; + + installPhase = '' + runHook preInstall + + mkdir -p $out/share/vintagestory $out/bin $out/share/pixmaps $out/share/fonts/truetype + cp -r * $out/share/vintagestory + cp $out/share/vintagestory/assets/gameicon.xpm $out/share/pixmaps/vintagestory.xpm + cp $out/share/vintagestory/assets/game/fonts/*.ttf $out/share/fonts/truetype + + runHook postInstall + ''; + + preFixup = + '' + sed -i 's/net7.0/net8.0/' $out/share/vintagestory/Vintagestory.runtimeconfig.json + sed -i 's/7.0.0/8.0.11/' $out/share/vintagestory/Vintagestory.runtimeconfig.json + + makeWrapper ${dotnet-runtime_8}/bin/dotnet $out/bin/vintagestory \ + --prefix LD_LIBRARY_PATH : "${runtimeLibs}" \ + --add-flags $out/share/vintagestory/Vintagestory.dll + makeWrapper ${dotnet-runtime_8}/bin/dotnet $out/bin/vintagestory-server \ + --prefix LD_LIBRARY_PATH : "${runtimeLibs}" \ + --add-flags $out/share/vintagestory/VintagestoryServer.dll + '' + + '' + 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,,}" + done + ''; + + meta = with lib; { + description = "In-development indie sandbox game about innovation and exploration"; + homepage = "https://www.vintagestory.at/"; + license = licenses.unfree; + maintainers = with maintainers; [ + artturin + gigglesquid + ]; + }; +}