blob: dad45b68f82b285a9156a54590f7f54b19c48e5d (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
self:
{
config,
lib,
pkgs,
spacebar,
...
}:
let
secrets = import ../secrets.nix { inherit lib config; };
cfg = config.services.spacebarchat-server;
jsonFormat = pkgs.formats.json { };
in
{
imports = [
./shared-config.nix
];
options.services.spacebarchat-server.adminApi = lib.mkOption {
default = { };
description = "Configuration for admin api.";
type = lib.types.submodule {
options = {
enable = lib.mkEnableOption "Enable admin api.";
extraConfiguration = lib.mkOption {
type = jsonFormat.type;
default = { };
description = "Extra appsettings.json configuration for the gateway offload daemon.";
};
};
};
};
config = lib.mkIf cfg.adminApi.enable (
let
makeServerTsService = import ../makeServerTsService.nix { inherit cfg lib secrets; };
in
{
assertions = [
(import ./assert-has-connection-string.nix "Admin API" cfg)
];
services.spacebarchat-server.settings.admin = {
endpointPublic = "http${if cfg.adminApiEndpoint.useSsl then "s" else ""}://${cfg.adminApiEndpoint.host}:${toString cfg.adminApiEndpoint.publicPort}";
endpointPrivate = "http://127.0.0.1:${builtins.toString cfg.adminApiEndpoint.localPort}";
};
systemd.services.spacebar-admin-api = makeServerTsService {
description = "Spacebar Server - Admin API";
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;
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 cfg.cs.defaultAppsettings cfg.adminApi.extraConfiguration);
}
);
serviceConfig = {
ExecStart = "${self.packages.${pkgs.stdenv.hostPlatform.system}.Spacebar-AdminApi}/bin/Spacebar.AdminApi";
};
};
}
);
}
|