61 lines
1.6 KiB
Nix
61 lines
1.6 KiB
Nix
|
{ config
|
||
|
, lib
|
||
|
, pkgs
|
||
|
, ...
|
||
|
}:
|
||
|
let
|
||
|
cfg = config.services.guacamole-client;
|
||
|
settingsFormat = pkgs.formats.javaProperties { };
|
||
|
in
|
||
|
{
|
||
|
options = {
|
||
|
services.guacamole-client = {
|
||
|
enable = lib.mkEnableOption (lib.mdDoc "Apache Guacamole Client (Tomcat)");
|
||
|
package = lib.mkPackageOptionMD pkgs "guacamole-client" { };
|
||
|
|
||
|
settings = lib.mkOption {
|
||
|
type = lib.types.submodule {
|
||
|
freeformType = settingsFormat.type;
|
||
|
};
|
||
|
default = {
|
||
|
guacd-hostname = "localhost";
|
||
|
guacd-port = 4822;
|
||
|
};
|
||
|
description = lib.mdDoc ''
|
||
|
Configuration written to `guacamole.properties`.
|
||
|
|
||
|
::: {.note}
|
||
|
The Guacamole web application uses one main configuration file called
|
||
|
`guacamole.properties`. This file is the common location for all
|
||
|
configuration properties read by Guacamole or any extension of
|
||
|
Guacamole, including authentication providers.
|
||
|
:::
|
||
|
'';
|
||
|
};
|
||
|
|
||
|
enableWebserver = lib.mkOption {
|
||
|
type = lib.types.bool;
|
||
|
default = true;
|
||
|
description = lib.mdDoc ''
|
||
|
Enable the Guacamole web application in a Tomcat webserver.
|
||
|
'';
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
config = lib.mkIf cfg.enable {
|
||
|
environment.etc."guacamole/guacamole.properties" = lib.mkIf
|
||
|
(cfg.settings != {})
|
||
|
{ source = (settingsFormat.generate "guacamole.properties" cfg.settings); };
|
||
|
|
||
|
services = lib.mkIf cfg.enableWebserver {
|
||
|
tomcat = {
|
||
|
enable = true;
|
||
|
webapps = [
|
||
|
cfg.package
|
||
|
];
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
}
|