# This flake was initially generated by fh, the CLI for FlakeHub (version 0.1.26) { description = "Vintage Story flake"; inputs = { flake-schemas.url = "https://flakehub.com/f/DeterminateSystems/flake-schemas/*"; nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/*"; }; outputs = { self, flake-schemas, nixpkgs }: let supportedSystems = [ "x86_64-linux" ]; forEachSupportedSystem = f: nixpkgs.lib.genAttrs supportedSystems (system: f { pkgs = import nixpkgs { inherit system; }; }); in { schemas = flake-schemas.schemas; devShells = forEachSupportedSystem ({ pkgs }: { default = pkgs.mkShell { packages = with pkgs; [ curl git nixpkgs-fmt ]; }; }); packages = forEachSupportedSystem ({ pkgs }: let x11Support = true; waylandSupport = true; in { default = pkgs.stdenv.mkDerivation (finalAttrs: let inherit (pkgs) lib; in { pname = "vintagestory"; version = "1.21.6"; src = pkgs.fetchurl { url = "https://cdn.vintagestory.at/gamefiles/stable/vs_client_linux-x64_${finalAttrs.version}.tar.gz"; hash = "sha256-LkiL/8W9MKpmJxtK+s5JvqhOza0BLap1SsaDvbLYR0c="; }; nativeBuildInputs = with pkgs; [ makeWrapper copyDesktopItems ]; runtimeLibs = with pkgs; [ gtk2 sqlite openal cairo libGLU SDL2 freealut libglvnd pipewire libpulseaudio ] ++ lib.optionals x11Support (with pkgs.xorg; [ libX11 libXi libXcursor ]) ++ lib.optionals waylandSupport (with pkgs; [ wayland libxkbcommon ]); desktopItems = [ (pkgs.makeDesktopItem { name = "vintagestory"; desktopName = "Vintage Story"; exec = "vintagestory"; icon = "vintagestory"; comment = "Innovate and explore in a sandbox world"; categories = [ "Game" ]; }) (pkgs.makeDesktopItem { name = "vsmodinstall-handler"; desktopName = "Vintage Story 1-click Mod Install Handler"; comment = "Handler for vintagestorymodinstall:// URI scheme"; exec = "vintagestory -i %u"; mimeTypes = [ "x-scheme-handler/vintagestorymodinstall" ]; noDisplay = true; terminal = false; }) ]; 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 = let runtimeLibs' = lib.strings.makeLibraryPath finalAttrs.runtimeLibs; in '' makeWrapper ${lib.meta.getExe pkgs.dotnet-runtime_8} $out/bin/vintagestory \ --prefix LD_LIBRARY_PATH : "${runtimeLibs'}" \ --set-default mesa_glthread true \ ${lib.strings.optionalString waylandSupport '' --set-default OPENTK_4_USE_WAYLAND 1 \ ''} \ --add-flags $out/share/vintagestory/Vintagestory.dll makeWrapper ${lib.meta.getExe pkgs.dotnet-runtime_8} $out/bin/vintagestory-server \ --prefix LD_LIBRARY_PATH : "${runtimeLibs'}" \ --set-default mesa_glthread true \ --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 ''; }); }); }; }