summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Fischer <martin@push-f.com>2025-08-27 21:19:14 +0200
committerMartin Fischer <martin@push-f.com>2025-08-27 23:54:48 +0200
commita1ec6b1a0d53c2a01ed283e49ef35fb81760a48a (patch)
tree45c4484955aef30bc6985f76211aba2ba58ec029
parent613346ff97f9c3ac2e9026613aa4b183a06917a2 (diff)
tente: replace gotify with grafana-matrix-forwarder
-rw-r--r--nixos/hosts/tente/default.nix5
-rw-r--r--nixos/hosts/tente/monitoring.nix15
-rw-r--r--nixos/npins/sources.json15
-rw-r--r--nixos/secrets/grafana-matrix-forwarder-env.agebin0 -> 449 bytes
-rw-r--r--nixos/secrets/secrets.nix2
-rw-r--r--nixos/shared/grafana-matrix-forwarder/default.nix10
-rw-r--r--nixos/shared/grafana-matrix-forwarder/service.nix31
7 files changed, 77 insertions, 1 deletions
diff --git a/nixos/hosts/tente/default.nix b/nixos/hosts/tente/default.nix
index 6063b2c..f03156b 100644
--- a/nixos/hosts/tente/default.nix
+++ b/nixos/hosts/tente/default.nix
@@ -11,7 +11,7 @@ let
helpers = import <top/helpers.nix> { inherit config lib pkgs; };
pkgs-unstable = import sources.nixpkgs-unstable {};
in
-{
+rec {
_module.args = { inherit pkgs-unstable; };
imports = [
./hardware-configuration.nix
@@ -118,6 +118,7 @@ in
monitoring.grafanaUiPort = 3000;
monitoring.alloyUiPort = 3001;
+ monitoring.grafanaMatrixForwarderPort = 3002;
monitoring.lokiPort = 3030;
gotify.port = 4000;
monitoring.prometheusNodeExporterPort = 9002;
@@ -125,6 +126,8 @@ in
headscale.port = 8080;
matrix.port = 8008;
+ monitoring.matrixServerUrl = "http://localhost:${toString matrix.port}";
+
# Use the GRUB 2 boot loader.
boot.loader.grub.enable = true;
# boot.loader.grub.efiSupport = true;
diff --git a/nixos/hosts/tente/monitoring.nix b/nixos/hosts/tente/monitoring.nix
index a999c8a..f6ed7cf 100644
--- a/nixos/hosts/tente/monitoring.nix
+++ b/nixos/hosts/tente/monitoring.nix
@@ -9,6 +9,9 @@ in
grafanaUiPort = lib.mkOption {
type = lib.types.int;
};
+ grafanaMatrixForwarderPort = lib.mkOption {
+ type = lib.types.int;
+ };
lokiPort = lib.mkOption {
type = lib.types.int;
};
@@ -21,13 +24,19 @@ in
prometheusSqlExporterPort = lib.mkOption {
type = lib.types.int;
};
+ matrixServerUrl = lib.mkOption {
+ type = lib.types.str;
+ };
};
imports = [
<top/shared/prometheus-sql-exporter/service.nix>
+ <top/shared/grafana-matrix-forwarder/service.nix>
];
config = {
+ age.secrets.grafana-matrix-forwarder-env.file = <top/secrets/grafana-matrix-forwarder-env.age>;
+
services.grafana = {
enable = true;
settings = {
@@ -54,6 +63,12 @@ in
];
};
};
+ services.grafana-matrix-forwarder = {
+ enable = true;
+ port = cfg.grafanaMatrixForwarderPort;
+ homeserver = cfg.matrixServerUrl;
+ environmentFile = config.age.secrets.grafana-matrix-forwarder-env.path;
+ };
services.prometheus = {
enable = true;
diff --git a/nixos/npins/sources.json b/nixos/npins/sources.json
index be3b136..6f86eaa 100644
--- a/nixos/npins/sources.json
+++ b/nixos/npins/sources.json
@@ -16,6 +16,21 @@
"url": "https://api.github.com/repos/ryantm/agenix/tarball/0.15.0",
"hash": "01dhrghwa7zw93cybvx4gnrskqk97b004nfxgsys0736823956la"
},
+ "grafana-matrix-forwarder": {
+ "type": "GitRelease",
+ "repository": {
+ "type": "Git",
+ "url": "https://gitlab.com/hctrdev/grafana-matrix-forwarder.git"
+ },
+ "pre_releases": false,
+ "version_upper_bound": null,
+ "release_prefix": null,
+ "submodules": false,
+ "version": "v0.8.3",
+ "revision": "a77a360503ea12c8244646753a3bf271428ddd02",
+ "url": null,
+ "hash": "1mdgv6jfbjs3xsqk9dxli6w345jws8j5qgzqf6wljmxlvibbic6y"
+ },
"my-geopos-link": {
"type": "Git",
"repository": {
diff --git a/nixos/secrets/grafana-matrix-forwarder-env.age b/nixos/secrets/grafana-matrix-forwarder-env.age
new file mode 100644
index 0000000..84cab14
--- /dev/null
+++ b/nixos/secrets/grafana-matrix-forwarder-env.age
Binary files differ
diff --git a/nixos/secrets/secrets.nix b/nixos/secrets/secrets.nix
index 6021803..282ee6c 100644
--- a/nixos/secrets/secrets.nix
+++ b/nixos/secrets/secrets.nix
@@ -3,7 +3,9 @@ let
hamac = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJmjbC0gk2s/qDQ+QR//GJH0ZPld99L0EtX7dPP5h2RN";
ev = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINCSypbTOnAYBO32vUUieOsb6ws32gCsDg8nB8JhuFuI";
+ tente = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGTyZdGXxkAjzRulRFB23AX0T/lVLZOaSaFJi+thsjgx";
in
{
"vpn-se-privKey.age".publicKeys = [ martin hamac ev ];
+ "grafana-matrix-forwarder-env.age".publicKeys = [ martin tente ];
}
diff --git a/nixos/shared/grafana-matrix-forwarder/default.nix b/nixos/shared/grafana-matrix-forwarder/default.nix
new file mode 100644
index 0000000..7a04dcb
--- /dev/null
+++ b/nixos/shared/grafana-matrix-forwarder/default.nix
@@ -0,0 +1,10 @@
+{ buildGoModule }:
+let
+ sources = import <top/npins>;
+in
+buildGoModule {
+ pname = "grafana-matrix-forwarder";
+ version = sources.grafana-matrix-forwarder.version;
+ src = sources.grafana-matrix-forwarder;
+ vendorHash = "sha256-ifkeakyRkIF2Y/4otUWhTvUzsPwRb1Wxx6gqN0806c4=";
+}
diff --git a/nixos/shared/grafana-matrix-forwarder/service.nix b/nixos/shared/grafana-matrix-forwarder/service.nix
new file mode 100644
index 0000000..5ad511c
--- /dev/null
+++ b/nixos/shared/grafana-matrix-forwarder/service.nix
@@ -0,0 +1,31 @@
+{ config, lib, pkgs, ... }:
+
+let
+ grafanaMatrixForwarder = pkgs.callPackage ./default.nix {};
+ cfg = config.services.grafana-matrix-forwarder;
+in
+{
+ options.services.grafana-matrix-forwarder = {
+ enable = lib.mkEnableOption "grafana-matrix-forwarder";
+ port = lib.mkOption {
+ type = lib.types.int;
+ };
+ homeserver = lib.mkOption {
+ type = lib.types.str;
+ };
+ environmentFile = lib.mkOption {
+ type = lib.types.path;
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ systemd.services.grafana-matrix-forwarder = {
+ serviceConfig = {
+ ExecStart = "${grafanaMatrixForwarder}/bin/grafana-matrix-forwarder --port=${toString cfg.port} --homeserver ${cfg.homeserver}";
+ EnvironmentFile = cfg.environmentFile;
+ DynamicUser = "true";
+ };
+ wantedBy = ["multi-user.target"];
+ };
+ };
+}