# 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"]; }; }; }