132 lines
4.6 KiB
Nix
132 lines
4.6 KiB
Nix
# 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
|
|
'';
|
|
});
|
|
});
|
|
};
|
|
}
|