initial container works
This commit is contained in:
commit
fbd4dd8db9
3 changed files with 143 additions and 0 deletions
115
flake.nix
Normal file
115
flake.nix
Normal file
|
|
@ -0,0 +1,115 @@
|
|||
{
|
||||
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;
|
||||
};
|
||||
#src = fetchurl {
|
||||
# url = "https://cdn.vintagestory.at/gamefiles/stable/vs_server_linux-x64_${version}.tar.gz";
|
||||
# hash = "sha256-gPe5ZQn7MrK07R1nT6UK1D9YMUbVTUltzkOycvJFZ3o=";
|
||||
# stripRoot = false;
|
||||
#};
|
||||
|
||||
nativeBuildInputs = [pkgs.makeWrapper];
|
||||
|
||||
buildInputs = [pkgs.dotnet-runtime_7];
|
||||
|
||||
runtimeLibs = pkgs.lib.makeLibraryPath (with pkgs; [
|
||||
gtk2
|
||||
sqlite
|
||||
openal
|
||||
cairo
|
||||
libGLU
|
||||
SDL2
|
||||
freealut
|
||||
libglvnd
|
||||
pipewire
|
||||
libpulseaudio
|
||||
dotnet-runtime_7
|
||||
]);
|
||||
|
||||
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
|
||||
'';
|
||||
};
|
||||
in {
|
||||
packages.x86_64-linux.default = server;
|
||||
images = {
|
||||
default = pkgs.dockerTools.buildImage {
|
||||
name = "vintage-server";
|
||||
architecture = "amd64";
|
||||
|
||||
copyToRoot =
|
||||
[
|
||||
(pkgs.buildEnv
|
||||
{
|
||||
name = "image-root";
|
||||
paths = [
|
||||
pkgs.hello
|
||||
pkgs.coreutils
|
||||
pkgs.strace
|
||||
pkgs.bash
|
||||
pkgs.dotnet-sdk_7
|
||||
server
|
||||
];
|
||||
pathsToLink = ["/bin"];
|
||||
})
|
||||
]
|
||||
++ (with pkgs.dockerTools; [
|
||||
usrBinEnv
|
||||
binSh
|
||||
caCertificates
|
||||
fakeNss
|
||||
]);
|
||||
|
||||
runAsRoot = ''
|
||||
mkdir -p /home/dotnet
|
||||
mkdir -p /game
|
||||
'';
|
||||
|
||||
config = {
|
||||
Env = ["HOME=/home/dotnet" "VS_DATA_PATH=/game"];
|
||||
Cmd = ["/bin/bash"];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue