diff --git a/common.nix b/common.nix index 7e093d2..18b1fc8 100644 --- a/common.nix +++ b/common.nix @@ -18,7 +18,7 @@ # Services # ./services/server-permissions.nix - #./services/game-servers.nix + ./services/game-servers.nix ./services/qbittorrent-nox.nix ./services/nginx.nix ./services/go2rtc.nix diff --git a/services/game-servers.nix b/services/game-servers.nix index af7d4e9..1759773 100644 --- a/services/game-servers.nix +++ b/services/game-servers.nix @@ -1,36 +1,69 @@ { config, pkgs, lib, ... }: { config = lib.mkIf (config.networking.hostName == "FredOS-Mediaserver") { - ## <----- HYTALE ----> ## - systemd.services.hytale-server = { - description = "Hytale Dedicated Server"; - wantedBy = [ "multi-user.target" ]; - after = [ "network.target" ]; - - path = with pkgs; [ bash jdk unzip gawk gnugrep coreutils screen ]; # Added screen - - environment = { - HYTALE_MEMORY = "8G"; - }; - - serviceConfig = { - Type = "forking"; # Changed from "simple" - User = "fred"; - Group = "users"; - WorkingDirectory = "/home/fred/docker/hytale-server/Server"; - ExecStart = "${pkgs.screen}/bin/screen -dmS hytale /home/fred/docker/hytale-server/start-hytale.sh"; - ExecStop = "${pkgs.screen}/bin/screen -S hytale -X stuff 'stop^M'"; - RemainAfterExit = "yes"; - Restart = "on-failure"; - RestartSec = "10s"; - TimeoutStopSec = "30s"; - - # Security hardening - NoNewPrivileges = true; - PrivateTmp = true; + ## <----- V-RISING ----> ## + virtualisation.docker.enable = true; + + systemd.tmpfiles.rules = [ + "d /var/lib/v-rising 0755 root root -" + "d /var/lib/v-rising/server 0755 root root -" + "d /var/lib/v-rising/persistentdata 0755 root root -" + ]; + + virtualisation.oci-containers = { + backend = "docker"; + containers.v-rising = { + image = "trueosiris/vrising:latest"; + + volumes = [ + "/var/lib/v-rising/server:/mnt/vrising/server" + "/var/lib/v-rising/persistentdata:/mnt/vrising/persistentdata" + ]; + + ports = [ + "9876:9876/udp" + "9877:9877/udp" + ]; + + environment = { + TZ = "Europe/Stockholm"; + SERVERNAME = "FredOS V-Rising"; + WORLDNAME = "world1"; + # SERVERPASSWORD = ""; + }; }; }; - - networking.firewall.allowedUDPPorts = [ 5520 ]; + + ## <----- HYTALE ----> ## + # systemd.services.hytale-server = { + # description = "Hytale Dedicated Server"; + # wantedBy = [ "multi-user.target" ]; + # after = [ "network.target" ]; + # + # path = with pkgs; [ bash jdk unzip gawk gnugrep coreutils screen ]; + # + # environment = { + # HYTALE_MEMORY = "8G"; + # }; + # + # serviceConfig = { + # Type = "forking"; + # User = "fred"; + # Group = "users"; + # WorkingDirectory = "/home/fred/docker/hytale-server/Server"; + # ExecStart = "${pkgs.screen}/bin/screen -dmS hytale /home/fred/docker/hytale-server/start-hytale.sh"; + # ExecStop = "${pkgs.screen}/bin/screen -S hytale -X stuff 'stop^M'"; + # RemainAfterExit = "yes"; + # Restart = "on-failure"; + # RestartSec = "10s"; + # TimeoutStopSec = "30s"; + # + # # Security hardening + # NoNewPrivileges = true; + # PrivateTmp = true; + # }; + # }; + + networking.firewall.allowedUDPPorts = [ 9876 9877 ]; }; }