summary refs log tree commit diff
path: root/nix/modules
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2026-03-28 14:48:17 +0100
committerRory& <root@rory.gay>2026-03-28 14:48:17 +0100
commit3b74f1377c14cdac99dfeb1b45513c6c31ef378e (patch)
tree72176aa3a4a506bab4d16faebadc7c087ce84142 /nix/modules
parentAdd indexes to instance bans table (diff)
downloadserver-ts-github/tmp-musl-fun.tar.xz
Attempt to switch test vm to musl? github/tmp-musl-fun tmp-musl-fun
Diffstat (limited to 'nix/modules')
-rw-r--r--nix/modules/default/cs/admin-api.nix10
-rw-r--r--nix/modules/default/cs/assert-has-connection-string.nix6
-rw-r--r--nix/modules/default/cs/cdn-cs.nix10
-rw-r--r--nix/modules/default/cs/offload-cs.nix12
-rw-r--r--nix/modules/default/cs/shared-config.nix31
-rw-r--r--nix/modules/default/cs/uapi.nix10
-rw-r--r--nix/modules/default/pion-sfu.nix30
7 files changed, 73 insertions, 36 deletions
diff --git a/nix/modules/default/cs/admin-api.nix b/nix/modules/default/cs/admin-api.nix

index 531b50aa..dad45b68 100644 --- a/nix/modules/default/cs/admin-api.nix +++ b/nix/modules/default/cs/admin-api.nix
@@ -13,7 +13,9 @@ let jsonFormat = pkgs.formats.json { }; in { - imports = [ ]; + imports = [ + ./shared-config.nix + ]; options.services.spacebarchat-server.adminApi = lib.mkOption { default = { }; description = "Configuration for admin api."; @@ -22,7 +24,7 @@ in enable = lib.mkEnableOption "Enable admin api."; extraConfiguration = lib.mkOption { type = jsonFormat.type; - default = import ./default-appsettings-json.nix; + default = { }; description = "Extra appsettings.json configuration for the gateway offload daemon."; }; }; @@ -35,7 +37,7 @@ in in { assertions = [ - (import ./assert-has-connection-string.nix "Admin API" cfg.adminApi.extraConfiguration) + (import ./assert-has-connection-string.nix "Admin API" cfg) ]; services.spacebarchat-server.settings.admin = { @@ -58,7 +60,7 @@ in CONFIG_READONLY = 1; ASPNETCORE_URLS = "http://0.0.0.0:${toString cfg.adminApiEndpoint.localPort}"; STORAGE_LOCATION = cfg.cdnPath; - APPSETTINGS_PATH = jsonFormat.generate "appsettings.spacebar-adminapi.json" (lib.recursiveUpdate (import ./default-appsettings-json.nix) cfg.adminApi.extraConfiguration); + APPSETTINGS_PATH = jsonFormat.generate "appsettings.spacebar-adminapi.json" (lib.recursiveUpdate cfg.cs.defaultAppsettings cfg.adminApi.extraConfiguration); } ); serviceConfig = { diff --git a/nix/modules/default/cs/assert-has-connection-string.nix b/nix/modules/default/cs/assert-has-connection-string.nix
index 4066c893..45b8237c 100644 --- a/nix/modules/default/cs/assert-has-connection-string.nix +++ b/nix/modules/default/cs/assert-has-connection-string.nix
@@ -1,4 +1,8 @@ -name: extraConfig: { +name: cfg: +let + extraConfig = cfg.cs.defaultAppsettings; +in +{ assertion = extraConfig ? ConnectionStrings && extraConfig.ConnectionStrings ? Spacebar && extraConfig.ConnectionStrings.Spacebar != null; message = '' ${name}: Setting a database connection string in extraConfiguration (`extraConfiguration.ConnectionStrings.Spacebar`) is required when using C# services. diff --git a/nix/modules/default/cs/cdn-cs.nix b/nix/modules/default/cs/cdn-cs.nix
index 42432dab..91d95b16 100644 --- a/nix/modules/default/cs/cdn-cs.nix +++ b/nix/modules/default/cs/cdn-cs.nix
@@ -13,7 +13,9 @@ let jsonFormat = pkgs.formats.json { }; in { - imports = [ ]; + imports = [ + ./shared-config.nix + ]; options.services.spacebarchat-server.cdnCs = lib.mkOption { default = { }; description = "Configuration for C# cdn."; @@ -22,7 +24,7 @@ in enable = lib.mkEnableOption "Enable experimental C# CDN."; extraConfiguration = lib.mkOption { type = jsonFormat.type; - default = import ./default-appsettings-json.nix; + default = { }; description = "Extra appsettings.json configuration for the gateway offload daemon."; }; }; @@ -35,7 +37,7 @@ in in { assertions = [ - (import ./assert-has-connection-string.nix "Admin API" cfg.adminApi.extraConfiguration) + (import ./assert-has-connection-string.nix "C# CDN" cfg) ]; systemd.services.spacebar-cdn = makeServerTsService { @@ -53,7 +55,7 @@ in CONFIG_READONLY = 1; ASPNETCORE_URLS = "http://0.0.0.0:${toString cfg.cdnEndpoint.localPort}"; STORAGE_LOCATION = cfg.cdnPath; - APPSETTINGS_PATH = jsonFormat.generate "appsettings.spacebar-cdn.json" (lib.recursiveUpdate (import ./default-appsettings-json.nix) cfg.cdnCs.extraConfiguration); + APPSETTINGS_PATH = jsonFormat.generate "appsettings.spacebar-cdn.json" (lib.recursiveUpdate cfg.cs.defaultAppsettings cfg.cdnCs.extraConfiguration); } ); serviceConfig = { diff --git a/nix/modules/default/cs/offload-cs.nix b/nix/modules/default/cs/offload-cs.nix
index 9186edcb..e1f1fd9b 100644 --- a/nix/modules/default/cs/offload-cs.nix +++ b/nix/modules/default/cs/offload-cs.nix
@@ -14,7 +14,9 @@ let jsonFormat = pkgs.formats.json { }; in { - imports = [ ]; + imports = [ + ./shared-config.nix + ]; options.services.spacebarchat-server.offload = lib.mkOption { default = { }; description = "Configuration for C# offload daemon."; @@ -28,7 +30,7 @@ in }; extraConfiguration = lib.mkOption { type = jsonFormat.type; - default = import ./default-appsettings-json.nix; + default = { }; description = "Extra appsettings.json configuration for the offload daemon."; }; gateway = lib.mkOption { @@ -54,7 +56,7 @@ in in { assertions = [ - (import ./assert-has-connection-string.nix "Gateway Offload" offloadCfg.extraConfiguration) + (import ./assert-has-connection-string.nix "Gateway Offload" cfg) ]; services.spacebarchat-server.settings.offload = { @@ -83,9 +85,7 @@ in CONFIG_READONLY = 1; ASPNETCORE_URLS = "http://0.0.0.0:${toString offloadCfg.listenPort}"; STORAGE_LOCATION = cfg.cdnPath; - APPSETTINGS_PATH = jsonFormat.generate "appsettings.spacebar-offload.json" ( - lib.recursiveUpdate (import ./default-appsettings-json.nix) offloadCfg.extraConfiguration - ); + APPSETTINGS_PATH = jsonFormat.generate "appsettings.spacebar-offload.json" (lib.recursiveUpdate cfg.cs.defaultAppsettings offloadCfg.extraConfiguration); } ); serviceConfig = { diff --git a/nix/modules/default/cs/shared-config.nix b/nix/modules/default/cs/shared-config.nix new file mode 100644
index 00000000..a5ca64f6 --- /dev/null +++ b/nix/modules/default/cs/shared-config.nix
@@ -0,0 +1,31 @@ +{ + config, + lib, + pkgs, + ... +}: + +let + secrets = import ../secrets.nix { inherit lib config; }; + cfg = config.services.spacebarchat-server; + jsonFormat = pkgs.formats.json { }; +in +{ + options.services.spacebarchat-server.cs = lib.mkOption { + default = { }; + description = "Configuration for C# cdn."; + type = lib.types.submodule { + options = { + defaultAppsettings = lib.mkOption { + type = jsonFormat.type; + default = import ./default-appsettings-json.nix; + description = "Extra appsettings.json configuration for all C#-based services."; + }; + }; + }; + }; + + config = { + services.spacebarchat-server.cs.defaultAppsettings = import ./default-appsettings-json.nix; + }; +} diff --git a/nix/modules/default/cs/uapi.nix b/nix/modules/default/cs/uapi.nix
index 00caa214..2df0535f 100644 --- a/nix/modules/default/cs/uapi.nix +++ b/nix/modules/default/cs/uapi.nix
@@ -13,7 +13,9 @@ let jsonFormat = pkgs.formats.json { }; in { - imports = [ ]; + imports = [ + ./shared-config.nix + ]; options.services.spacebarchat-server.uApi = lib.mkOption { default = { }; description = "Configuration for C# API overlay."; @@ -27,7 +29,7 @@ in }; extraConfiguration = lib.mkOption { type = jsonFormat.type; - default = import ./default-appsettings-json.nix; + default = { }; description = "Extra appsettings.json configuration for the C# API overlay."; }; }; @@ -40,7 +42,7 @@ in in { assertions = [ - (import ./assert-has-connection-string.nix "uAPI" cfg.uApi.extraConfiguration) + (import ./assert-has-connection-string.nix "uAPI" cfg) ]; systemd.services.spacebar-uapi = makeServerTsService { @@ -59,7 +61,7 @@ in CONFIG_READONLY = 1; ASPNETCORE_URLS = "http://0.0.0.0:${toString cfg.uApi.listenPort}"; STORAGE_LOCATION = cfg.cdnPath; - APPSETTINGS_PATH = jsonFormat.generate "appsettings.spacebar-uapi.json" (lib.recursiveUpdate (import ./default-appsettings-json.nix) cfg.uApi.extraConfiguration); + APPSETTINGS_PATH = jsonFormat.generate "appsettings.spacebar-uapi.json" (lib.recursiveUpdate cfg.cs.defaultAppsettings cfg.uApi.extraConfiguration); } ); serviceConfig = { diff --git a/nix/modules/default/pion-sfu.nix b/nix/modules/default/pion-sfu.nix
index aa2fbf24..306699b6 100644 --- a/nix/modules/default/pion-sfu.nix +++ b/nix/modules/default/pion-sfu.nix
@@ -13,25 +13,21 @@ let configFile = (import ./config-file.nix { inherit config lib pkgs; }); in { - options.services.spacebarchat-server.pion-sfu = - let - mkEndpointOptions = import ./options-subtypes/mkEndpointOptions.nix { inherit lib; }; - in - { - enable = lib.mkEnableOption "Enable Spacebar Pion SFU"; - openFirewall = lib.mkEnableOption "Allow SFU port in firewall"; - package = lib.mkPackageOption self.packages.${pkgs.stdenv.hostPlatform.system} "Pion SFU" { default = "pion-sfu"; }; + options.services.spacebarchat-server.pion-sfu = { + enable = lib.mkEnableOption "Enable Spacebar Pion SFU"; + openFirewall = lib.mkEnableOption "Allow SFU port in firewall"; + package = lib.mkPackageOption self.packages.${pkgs.stdenv.hostPlatform.system} "Pion SFU" { default = "pion-sfu"; }; - publicIp = lib.mkOption { - type = lib.types.str; - description = "Public IP address of the server."; - }; - listenPort = lib.mkOption { - type = lib.types.port; - default = 6000; - description = "UDP port the SFU will listen on."; - }; + publicIp = lib.mkOption { + type = lib.types.str; + description = "Public IP address of the server."; + }; + listenPort = lib.mkOption { + type = lib.types.port; + default = 6000; + description = "UDP port the SFU will listen on."; }; + }; config = lib.mkIf cfg.pion-sfu.enable ( let