diff --git a/hosts/muho/configuration.nix b/hosts/muho/configuration.nix index 3e41fbb..db9d631 100644 --- a/hosts/muho/configuration.nix +++ b/hosts/muho/configuration.nix @@ -50,9 +50,10 @@ in { mods.server.ntfy.enable = true; mods.server.lemmy.enable = true; mods.server.audio.enable = true; - mods.server.murmur.enable = true; + # mods.server.murmur.enable = true; mods.server.atuin.enable = true; - mods.server.seedbox.enable = true; + # mods.server.seedbox.enable = true; + mods.server.enshrouded.enable = true; mods.server.dash.enable = false; mods.server.nginx.ports.dash = 3009; diff --git a/modules/nixos/server/gaming/default.nix b/modules/nixos/server/gaming/default.nix index 46b1c01..4c963c6 100644 --- a/modules/nixos/server/gaming/default.nix +++ b/modules/nixos/server/gaming/default.nix @@ -1,4 +1,9 @@ -{ pkgs, lib, config, ... }: { +{ + pkgs, + lib, + config, + ... +}: { options.mods.server.gaming = { enable = lib.mkEnableOption { default = false; @@ -6,7 +11,7 @@ }; }; - imports = [ ./astral.nix ./vrising.nix ./statech.nix ]; + imports = [./astral.nix ./vrising.nix ./statech.nix ./enshrouded.nix]; config = lib.mkIf config.mods.server.gaming.enable { mods.server.astral.enable = true; diff --git a/modules/nixos/server/gaming/enshrouded.nix b/modules/nixos/server/gaming/enshrouded.nix new file mode 100644 index 0000000..792403a --- /dev/null +++ b/modules/nixos/server/gaming/enshrouded.nix @@ -0,0 +1,117 @@ +# Auto-generated by compose2nix. +{ + config, + pkgs, + lib, + ... +}: let + cfg = config.mods.server.enshrouded; +in + with lib; { + options.mods.server.enshrouded = { + enable = mkEnableOption { + default = false; + description = "enables enshrouded containers"; + }; + }; + + config = mkIf cfg.enable { + # Runtime + virtualisation.docker = { + enable = true; + autoPrune.enable = true; + }; + virtualisation.oci-containers.backend = "docker"; + + networking.firewall.allowedUDPPorts = [15637]; + + # Containers + virtualisation.oci-containers.containers."enshrouded" = { + image = "mornedhels/enshrouded-server:dev-proton"; + environment = { + "PGID" = "4711"; + "PUID" = "4711"; + "SERVER_NAME" = "Blarch"; + "UPDATE_CRON" = "*/30 * * * *"; + "log_level" = "50"; + "SERVER_ROLE_1_NAME" = "Friends"; + "SERVER_ROLE_1_PASSWORD" = "Blarch157"; + "SERVER_ROLE_1_CAN_ACCESS_INVENTORIES" = "true"; + "SERVER_ROLE_1_CAN_EDIT_WORLD" = "true"; + "SERVER_ROLE_1_CAN_EDIT_BASE" = "true"; + "SERVER_ROLE_1_CAN_EXTEND_BASE" = "true"; + "SERVER_ROLE_1_RESERVED_SLOTS" = "6"; + }; + volumes = [ + "/home/muon/enshrouded-server/game:/opt/enshrouded:rw" + ]; + ports = [ + "15637:15637/udp" + ]; + log-driver = "journald"; + extraOptions = [ + "--hostname=enshrouded" + "--network-alias=enshrouded" + "--network=enshrouded_default" + ]; + }; + systemd.services."docker-enshrouded" = { + serviceConfig = { + Restart = lib.mkOverride 90 "always"; + RestartMaxDelaySec = lib.mkOverride 90 "1m"; + RestartSec = lib.mkOverride 90 "100ms"; + RestartSteps = lib.mkOverride 90 9; + }; + after = [ + "docker-network-enshrouded_default.service" + ]; + requires = [ + "docker-network-enshrouded_default.service" + ]; + partOf = [ + "docker-compose-enshrouded-root.target" + ]; + wantedBy = [ + "docker-compose-enshrouded-root.target" + ]; + }; + + # Networks + systemd.services."docker-network-enshrouded_default" = { + path = [pkgs.docker]; + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + ExecStop = "docker network rm -f enshrouded_default"; + }; + script = '' + docker network inspect enshrouded_default || docker network create enshrouded_default + ''; + partOf = ["docker-compose-enshrouded-root.target"]; + wantedBy = ["docker-compose-enshrouded-root.target"]; + }; + + # Builds + systemd.services."docker-build-enshrouded" = { + path = [pkgs.docker pkgs.git]; + serviceConfig = { + Type = "oneshot"; + TimeoutSec = 300; + }; + script = '' + cd /home/muon/enshrouded-server + docker build -t mornedhels/enshrouded-server:dev-proton -f dockerfiles/proton.Dockerfile . + ''; + }; + + # Root service + # When started, this will automatically create all resources and start + # the containers. When stopped, this will teardown all resources. + systemd.targets."docker-compose-enshrouded-root" = { + unitConfig = { + Description = "Root target generated by compose2nix."; + }; + wantedBy = ["multi-user.target"]; + }; + }; + }