diff --git a/nix/modules/default/cs/admin-api.nix b/nix/modules/default/cs/admin-api.nix
index 2d3ad2f2..c19e6ea5 100644
--- a/nix/modules/default/cs/admin-api.nix
+++ b/nix/modules/default/cs/admin-api.nix
@@ -59,6 +59,7 @@ in
);
serviceConfig = {
ExecStart = "${self.packages.${pkgs.stdenv.hostPlatform.system}.Spacebar-AdminApi}/bin/Spacebar.AdminApi";
+ Slice = "system-spacebar.slice";
};
};
};
diff --git a/nix/modules/default/cs/cdn-cs.nix b/nix/modules/default/cs/cdn-cs.nix
index 6327c7cf..59140138 100644
--- a/nix/modules/default/cs/cdn-cs.nix
+++ b/nix/modules/default/cs/cdn-cs.nix
@@ -54,6 +54,7 @@ in
);
serviceConfig = {
ExecStart = "${self.packages.${pkgs.stdenv.hostPlatform.system}.Spacebar-AdminApi}/bin/Spacebar.AdminApi";
+ Slice = "system-spacebar.slice";
};
};
};
diff --git a/nix/modules/default/cs/offload-cs.nix b/nix/modules/default/cs/offload-cs.nix
index 72324f18..a321ab9a 100644
--- a/nix/modules/default/cs/offload-cs.nix
+++ b/nix/modules/default/cs/offload-cs.nix
@@ -84,6 +84,7 @@ in
);
serviceConfig = {
ExecStart = "${lib.getExe self.packages.${pkgs.stdenv.hostPlatform.system}.Spacebar-Offload}";
+ Slice = "system-spacebar.slice";
};
};
};
diff --git a/nix/modules/default/cs/uapi.nix b/nix/modules/default/cs/uapi.nix
index 23f220ec..50fe49c6 100644
--- a/nix/modules/default/cs/uapi.nix
+++ b/nix/modules/default/cs/uapi.nix
@@ -60,6 +60,7 @@ in
);
serviceConfig = {
ExecStart = "${self.packages.${pkgs.stdenv.hostPlatform.system}.Spacebar-UApi}/bin/Spacebar.UApi";
+ Slice = "system-spacebar.slice";
};
};
};
diff --git a/nix/modules/default/default.nix b/nix/modules/default/default.nix
index 12abfe77..6c7a6772 100644
--- a/nix/modules/default/default.nix
+++ b/nix/modules/default/default.nix
@@ -106,6 +106,11 @@ in
// secrets.options;
config = lib.mkIf cfg.enable {
+ systemd.slices.system-spacebar = {
+ description = "Spacebar server";
+ documentation = [ "https://docs.spacebar.chat"];
+ };
+
services.spacebarchat-server.uApi.extraConfiguration.Spacebar.UApi.FallbackApiEndpoint = "http://127.0.0.1:${toString cfg.apiEndpoint.localPort}";
systemd.services.spacebar-api = makeServerTsService {
@@ -128,6 +133,7 @@ in
serviceConfig = {
ExecStart = "${cfg.package}/bin/start-api";
Type = "notify";
+ Slice = "system-spacebar.slice";
};
};
@@ -153,6 +159,7 @@ in
serviceConfig = {
ExecStart = "${cfg.package}/bin/start-gateway";
Type = "notify";
+ Slice = "system-spacebar.slice";
};
};
@@ -177,6 +184,7 @@ in
serviceConfig = {
ExecStart = "${cfg.package}/bin/start-cdn";
Type = "notify";
+ Slice = "system-spacebar.slice";
};
});
};
diff --git a/nix/modules/default/gw-sharding.nix b/nix/modules/default/gw-sharding.nix
index 8e79dc78..45f4e1a5 100644
--- a/nix/modules/default/gw-sharding.nix
+++ b/nix/modules/default/gw-sharding.nix
@@ -21,34 +21,44 @@ in
};
};
- config = lib.mkIf cfg.enable {
- systemd.services = builtins.listToAttrs (
- map (port: {
- name = "spacebar-gateway-${toString port}";
- value = makeServerTsService {
- description = "Spacebar Server - Gateway (extra port ${toString port})";
- # after = [ "spacebar-api.service" ];
- environment = builtins.mapAttrs (_: val: builtins.toString val) (
- {
- # things we set by default...
- EVENT_TRANSMISSION = "unix";
- EVENT_SOCKET_PATH = "/run/spacebar/";
- }
- // cfg.extraEnvironment
- // {
- # things we force...
- CONFIG_PATH = configFile;
- CONFIG_READONLY = 1;
- PORT = toString port;
- STORAGE_LOCATION = cfg.cdnPath;
- APPLY_DB_MIGRATIONS = "false";
- }
- );
- serviceConfig = {
- ExecStart = "${cfg.package}/bin/start-gateway";
+ config = lib.mkIf (builtins.any (_: true) cfg.extraGatewayPorts) {
+ systemd.slices.system-spacebar-gateway = {
+ description = "Spacebar server (gateway shards)";
+ documentation = [ "https://docs.spacebar.chat" ];
+ };
+
+ systemd.services =
+ builtins.listToAttrs (
+ map (port: {
+ name = "spacebar-gateway-${toString port}";
+ value = makeServerTsService {
+ description = "Spacebar Server - Gateway (extra port ${toString port})";
+ # after = [ "spacebar-api.service" ];
+ environment = builtins.mapAttrs (_: val: builtins.toString val) (
+ {
+ # things we set by default...
+ EVENT_TRANSMISSION = "unix";
+ EVENT_SOCKET_PATH = "/run/spacebar/";
+ }
+ // cfg.extraEnvironment
+ // {
+ # things we force...
+ CONFIG_PATH = configFile;
+ CONFIG_READONLY = 1;
+ PORT = toString port;
+ STORAGE_LOCATION = cfg.cdnPath;
+ APPLY_DB_MIGRATIONS = "false";
+ }
+ );
+ serviceConfig = {
+ ExecStart = "${cfg.package}/bin/start-gateway";
+ Slice = "system-spacebar-gateway.slice";
+ };
};
- };
- }) cfg.extraGatewayPorts
- );
+ }) cfg.extraGatewayPorts
+ )
+ // {
+ "spacebar-gateway".serviceConfig.Slice = "system-spacebar-gateway.slice";
+ };
};
}
diff --git a/nix/modules/default/pion-sfu.nix b/nix/modules/default/pion-sfu.nix
index cd8c88cb..523f2971 100644
--- a/nix/modules/default/pion-sfu.nix
+++ b/nix/modules/default/pion-sfu.nix
@@ -70,6 +70,7 @@ in
serviceConfig = {
ExecStart = "${cfg.package}/bin/start-webrtc";
Type = "notify";
+ Slice = "system-spacebar.slice";
};
};
@@ -77,6 +78,7 @@ in
description = "Spacebar Server - Pion SFU";
serviceConfig = {
ExecStart = "${lib.getExe cfg.pion-sfu.package} -ip ${cfg.pion-sfu.publicIp} -port ${toString cfg.pion-sfu.listenPort}";
+ Slice = "system-spacebar.slice";
};
};
};
|