diff --git a/applications/grafana.nix b/applications/grafana.nix new file mode 100644 index 0000000..e3057d1 --- /dev/null +++ b/applications/grafana.nix @@ -0,0 +1,60 @@ +{ + lib, + config, + ... +}: +with lib; let + name = "grafana"; + cfg = config.services.skynet."${name}"; + port = 4444; +in { + imports = [ + ./acme.nix + ./dns.nix + ]; + + options.services.skynet."${name}" = { + enable = mkEnableOption "Grafana Server"; + + host = { + ip = mkOption { + type = types.str; + }; + name = mkOption { + type = types.str; + }; + }; + }; + + config = mkIf cfg.enable { + skynet_dns.records = [ + { + record = "${name}"; + r_type = "CNAME"; + value = cfg.host.name; + } + ]; + + skynet_acme.domains = [ + "${name}.skynet.ie" + ]; + + services.grafana = { + enable = true; + domain = "${name}.skynet.ie"; + port = port; + addr = cfg.host.ip; + }; + + services.nginx.virtualHosts = { + "${name}.skynet.ie" = { + forceSSL = true; + useACMEHost = "skynet"; + locations."/" = { + proxyPass = "http://localhost:${toString port}"; + proxyWebsockets = true; + }; + }; + }; + }; +} diff --git a/machines/marvin.nix b/machines/marvin.nix index 1c4f57b..fdf59b1 100644 --- a/machines/marvin.nix +++ b/machines/marvin.nix @@ -25,6 +25,7 @@ Notes: groups_trusted = map (x: "@${x}") groups; in { imports = [ + ../applications/grafana.nix ]; deployment = { @@ -49,6 +50,15 @@ in { sudo_groups = groups; }; + services.skynet.grafana = { + enable = true; + + host = { + ip = ip_pub; + name = name; + }; + }; + skynet_dns.records = [ { record = name;