vuls: init at 0.27.0 (#348530)
[NixPkgs.git] / nixos / modules / services / web-apps / guacamole-client.nix
blob98a6cac34f3de61251e3b922b2a16f6ce3b5c4ee
1 { config
2 , lib
3 , pkgs
4 , ...
5 }:
6 let
7   cfg = config.services.guacamole-client;
8   settingsFormat = pkgs.formats.javaProperties { };
9 in
11   options = {
12     services.guacamole-client = {
13       enable = lib.mkEnableOption "Apache Guacamole Client (Tomcat)";
14       package = lib.mkPackageOption pkgs "guacamole-client" { };
16       settings = lib.mkOption {
17         type = lib.types.submodule {
18           freeformType = settingsFormat.type;
19         };
20         default = {
21           guacd-hostname = "localhost";
22           guacd-port = 4822;
23         };
24         description = ''
25           Configuration written to `guacamole.properties`.
27           ::: {.note}
28           The Guacamole web application uses one main configuration file called
29           `guacamole.properties`. This file is the common location for all
30           configuration properties read by Guacamole or any extension of
31           Guacamole, including authentication providers.
32           :::
33         '';
34       };
36       enableWebserver = lib.mkOption {
37         type = lib.types.bool;
38         default = true;
39         description = ''
40           Enable the Guacamole web application in a Tomcat webserver.
41         '';
42       };
43     };
44   };
46   config = lib.mkIf cfg.enable {
47     environment.etc."guacamole/guacamole.properties" = lib.mkIf
48       (cfg.settings != {})
49       { source = (settingsFormat.generate "guacamole.properties" cfg.settings); };
51     services = lib.mkIf cfg.enableWebserver {
52       tomcat = {
53         enable = true;
54         webapps = [
55           cfg.package
56         ];
57       };
58     };
59   };