diff options
Diffstat (limited to 'instance-options.nix')
-rw-r--r-- | instance-options.nix | 200 |
1 files changed, 148 insertions, 52 deletions
diff --git a/instance-options.nix b/instance-options.nix index a2e77be..f7236da 100644 --- a/instance-options.nix +++ b/instance-options.nix @@ -16,7 +16,16 @@ in with wapkgs; { options = rec { + + settings = {}; + + backend = { + enable = mkOption { + default = true; + type = types.bool; + }; + httpPort = mkOption { default = 8081; type = types.ints.u16; @@ -38,6 +47,11 @@ with wapkgs; }; pusher = { + enable = mkOption { + default = true; + type = types.bool; + }; + port = mkOption { default = 8080; type = types.ints.u16; @@ -60,26 +74,43 @@ with wapkgs; description = "Front package to use"; }; - defaultMap = mkOption { - default = null; - defaultText = "not set"; - type = types.nullOr types.str; - description = "The url to the default map, which will be loaded if none is given in the url. Must be a reachable url relative to the public map url defined in `maps.url`."; + debugMode = mkOption { + default = false; + description = "Whether or not to run the frontend in debug mode"; + type = types.bool; }; - settings = mkOption { - default = {}; - type = types.attrsOf types.str; - description = "Settings for workadventure's frontend."; - example = { - stunServer = "stun:some.stunserver:3478"; - turnServer = "turn:some.turnserver"; - turnUser = "user"; - turnPassword = "password"; - }; - + startRoomUrl = mkOption { + default = "/_/global/localhost/maps/Floor0/floor0.json"; + description = "The workadventure map url that users join by default"; + type = types.str; }; - + + resolution = mkOption { + default = 2; + description = "resolution of workadventure"; + type = types.int; + }; + + zoomLevel = mkOption { + default = 1; + description = "The default zoom level of maps"; + type = types.int; + }; + + positionDelay = mkOption { + default = 200; + description = "Delay in milliseconds between sending position events"; + type = types.int; + }; + + maxExtrapolationTime = mkOption { + default = 100; + description = "Maximum time period in which movements of other players are extrapolated"; + type = types.int; + }; + + urls = { api = mkOption { default = "/pusher"; @@ -107,16 +138,99 @@ with wapkgs; }; }; - maps = { - path = mkOption { - default = workadventure.maps.outPath + "/workadventuremaps/"; - defaultText = "third_party.workadventure-nix.maps"; - type = types.path; - description = "Maps package to use"; + commonConfig = { + secretKey = mkOption { + default = "THECODINGMACHINE_SECRET_KEY"; + type = types.str; + }; + + minimumDistance = mkOption { + default = 64; + type = types.int; + }; + + groupRadius = mkOption { + default = 48; + type = types.int; + }; + + allowArtillery = mkOption { + default = false; + type = types.bool; + }; + + maxUsersPerRoom = mkOption { + default = 600; + type = types.int; + }; + + cpuOverheatThreshold = mkOption { + default = 80; + type = types.int; + }; + + socketIdleTime = mkOption { + default = 30; + type = types.int; + }; + + webrtc = { + stun = { + url = mkOption { + default = "stun:stun.l.google.com:19302"; + description = "The STUN server to use for peer connections"; + type = types.str; + }; + }; + turn = { + url = mkOption { + default = "turn:coturn.workadventure.localhost:3478"; + description = "The TURN server to use for peer connections"; + type = types.str; + }; + user = mkOption { + default = "workadventure"; + description = "Username for TURN authentication"; + type = types.str; # TODO: also allow no user + }; + password = mkOption { + default = "workadventure"; + description = "Password for TURN authentication"; + type = types.str; + }; + }; + }; + + jitsi = { + url = mkOption { + default = "meet.jit.si"; + description = "Jitsi instance to use for conference rooms"; + type = types.str; + }; + privateMode = mkOption { + default = false; + description = "Jitsi private mode"; + type = types.bool; + }; + iss = mkOption { + default = ""; + type = types.str; + }; + secretKey = mkOption { + default = ""; + type = types.str; + }; }; }; + nginx = { + enable = mkOption { + default = true; + type = types.bool; + description = "enable nginx as proxy, and for serving maps"; + }; + default = mkOption { default = false; type = types.bool; @@ -126,38 +240,20 @@ with wapkgs; domain = mkOption { default = "localhost"; type = types.str; - description = "The domain name to serve workadenture services under. Mutually exclusive with domains.X"; + description = "The domain name to serve workadenture services under."; }; - serveDefaultMaps = mkOption { - default = true; - type = types.bool; - description = "Whether to serve the maps provided by workadventure"; - }; - - domains = { - back = mkOption { - default = null; - type = types.nullOr types.str; - description = "The domain name to serve the backend under"; - }; - - pusher = mkOption { - default = null; - type = types.nullOr types.str; - description = "The domain name to serve the pusher under"; + maps = { + serve = mkOption { + default = true; + type = types.bool; + description = "Whether to serve maps through nginx."; }; - - maps = mkOption { - default = null; - type = types.nullOr types.str; - description = "The domain name to serve the maps under"; - }; - - front = mkOption { - default = null; - type = types.nullOr types.str; - description = "The domain name to serve the front under"; + path = mkOption { + default = workadventure.maps.outPath + "/workadventuremaps/"; + defaultText = "third_party.workadventure-nix.maps"; + type = types.path; + description = "Maps package to use"; }; }; }; |