92 lines
2.5 KiB
Nix
92 lines
2.5 KiB
Nix
{
|
|
description = "Vintage Story Server as a Dockerfile";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-23.11";
|
|
};
|
|
|
|
outputs = {
|
|
self,
|
|
nixpkgs,
|
|
}: let
|
|
pkgs = import nixpkgs {
|
|
system = "x86_64-linux";
|
|
};
|
|
|
|
server = pkgs.stdenv.mkDerivation rec {
|
|
pname = "vintagestory-server";
|
|
version = "1.18.15";
|
|
|
|
src = pkgs.fetchzip {
|
|
url = "https://cdn.vintagestory.at/gamefiles/stable/vs_server_linux-x64_${version}.tar.gz";
|
|
hash = "sha256-nWzx44EVkEqWZw42Yi4NLa0b9lJ4HVIIqEvqEcjW+Q4=";
|
|
stripRoot = false;
|
|
};
|
|
|
|
nativeBuildInputs = [pkgs.makeWrapper];
|
|
|
|
buildInputs = [pkgs.dotnet-runtime_7];
|
|
|
|
runtimeLibs = pkgs.lib.makeLibraryPath (with pkgs; [
|
|
sqlite
|
|
]);
|
|
|
|
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 =
|
|
''
|
|
makeWrapper ${pkgs.dotnet-runtime_7}/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
|
|
'';
|
|
};
|
|
|
|
home = pkgs.stdenv.mkDerivation {
|
|
name = "vintagestory-server-home-directories";
|
|
dontUnpack = true;
|
|
installPhase = ''
|
|
mkdir -p $out/home/dotnet
|
|
mkdir -p $out/game
|
|
mkdir -p $out/tmp
|
|
'';
|
|
};
|
|
in {
|
|
packages.x86_64-linux.default = server;
|
|
images = {
|
|
default = pkgs.dockerTools.buildLayeredImage {
|
|
name = "docker-vintagestory-server";
|
|
tag = "1.18.15";
|
|
architecture = "amd64";
|
|
|
|
contents =
|
|
[home server pkgs.bash pkgs.coreutils]
|
|
++ (with pkgs.dockerTools; [
|
|
usrBinEnv
|
|
binSh
|
|
caCertificates
|
|
fakeNss
|
|
]);
|
|
|
|
config = {
|
|
Env = ["HOME=/home/dotnet"];
|
|
Cmd = ["vintagestory-server" "--dataPath" "/game"];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|