65 lines
1.5 KiB
Nix
65 lines
1.5 KiB
Nix
{ lib, config, ... }:
|
|
|
|
let
|
|
cfg = config.services.thelounge;
|
|
in {
|
|
options.services.thelounge = {
|
|
fileUploadBaseUrl = lib.mkOption {
|
|
type = lib.types.str;
|
|
};
|
|
host = lib.mkOption {
|
|
type = lib.types.str;
|
|
example = "example.com";
|
|
};
|
|
fileHost = {
|
|
host = lib.mkOption {
|
|
type = lib.types.str;
|
|
};
|
|
path = lib.mkOption {
|
|
type = lib.types.str;
|
|
};
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
services.thelounge = {
|
|
public = false;
|
|
extraConfig = {
|
|
reverseProxy = true;
|
|
maxHistory = -1;
|
|
https.enable = false;
|
|
# theme = "thelounge-theme-solarized";
|
|
prefetch = false;
|
|
prefetchStorage = false;
|
|
fileUpload = {
|
|
enable = true;
|
|
maxFileSize = -1;
|
|
baseUrl = cfg.fileUploadBaseUrl;
|
|
};
|
|
transports = [ "websocket" "polling" ];
|
|
leaveMessage = "leaving";
|
|
messageStorage = [ "sqlite" "text" ];
|
|
};
|
|
};
|
|
|
|
# the lounge client
|
|
services.nginx.virtualHosts.${cfg.host} = {
|
|
enableACME = true;
|
|
forceSSL = true;
|
|
locations."/" = {
|
|
proxyPass = "http://localhost:${toString config.services.thelounge.port}";
|
|
proxyWebsockets = true;
|
|
};
|
|
};
|
|
|
|
# the lounge files
|
|
services.nginx.virtualHosts.${cfg.fileHost.host} = {
|
|
enableACME = true;
|
|
forceSSL = true;
|
|
locations.${cfg.fileHost.path} = {
|
|
proxyPass = "http://localhost:${toString config.services.thelounge.port}/uploads";
|
|
};
|
|
};
|
|
};
|
|
}
|