Add starbound server
This commit is contained in:
parent
e7102adec1
commit
cd92ec64c2
8 changed files with 253 additions and 6 deletions
pkgs
|
@ -13,4 +13,7 @@ in {
|
|||
# Minecraft modpacks
|
||||
voor-kia = callPackage ./minecraft/voor-kia.nix { };
|
||||
voor-kia-client = callPackage ./minecraft/voor-kia-client.nix { };
|
||||
|
||||
# Starbound
|
||||
starbound = callPackage ./starbound { };
|
||||
}
|
||||
|
|
34
pkgs/starbound/default.nix
Normal file
34
pkgs/starbound/default.nix
Normal file
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
stdenv,
|
||||
lib,
|
||||
makeWrapper,
|
||||
patchelf,
|
||||
steamPackages,
|
||||
replace-secret,
|
||||
}: let
|
||||
# Use the directory in which starbound is installed so steamcmd
|
||||
# doesn't have to be reinstalled constantly (we're using DynamicUser
|
||||
# with StateDirectory to persist this).
|
||||
steamcmd = steamPackages.steamcmd.override {
|
||||
steamRoot = "/var/lib/starbound/.steamcmd";
|
||||
};
|
||||
wrapperPath = lib.makeBinPath [patchelf steamcmd replace-secret];
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
name = "starbound-update-script";
|
||||
nativeBuildInputs = [makeWrapper];
|
||||
dontUnpack = true;
|
||||
patchPhase = ''
|
||||
interpreter="$(cat $NIX_CC/nix-support/dynamic-linker)"
|
||||
substitute ${./launch-starbound.sh} launch-starbound --subst-var interpreter
|
||||
'';
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cp launch-starbound $out/bin/launch-starbound
|
||||
chmod +x $out/bin/launch-starbound
|
||||
'';
|
||||
postFixup = ''
|
||||
wrapProgram $out/bin/launch-starbound \
|
||||
--prefix PATH : "${wrapperPath}"
|
||||
'';
|
||||
}
|
32
pkgs/starbound/launch-starbound.sh
Normal file
32
pkgs/starbound/launch-starbound.sh
Normal file
|
@ -0,0 +1,32 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -eu
|
||||
|
||||
if ! [[ -v STATE_DIRECTORY && -v CREDENTIALS_DIRECTORY ]]; then
|
||||
echo "Error: Runtime dir or credential not set"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Update the server to the latest version
|
||||
echo "Updating/installing starbound"
|
||||
|
||||
mkdir -p "${STATE_DIRECTORY}/.steamcmd"
|
||||
steamcmd <<EOF
|
||||
force_install_dir $STATE_DIRECTORY
|
||||
login tlater $(cat "$CREDENTIALS_DIRECTORY/steam")
|
||||
app_update 211820
|
||||
quit
|
||||
EOF
|
||||
|
||||
echo "Updating config"
|
||||
if [ -f "$1" ]; then
|
||||
mkdir -p ./storage
|
||||
cp "$1" ./storage/starbound_server.config
|
||||
fi
|
||||
|
||||
echo "Running starbound server"
|
||||
patchelf --set-interpreter '@interpreter@' ./linux/starbound_server
|
||||
# Must be run from the directory that the binary is in (why do game
|
||||
# devs do this?)
|
||||
cd linux
|
||||
./starbound_server
|
Loading…
Add table
Add a link
Reference in a new issue