From 354be79f0ebdd6357ee54e07846c4e595db743e2 Mon Sep 17 00:00:00 2001 From: Felix Buehler Date: Tue, 11 Apr 2023 20:44:29 +0200 Subject: [PATCH] pkgs/grafana-dashboards: modularize --- modules/services/prometheus/default.nix | 2 +- pkgs/default.nix | 2 +- pkgs/grafana-dashboards/default.nix | 36 ++++++++++++++++++++++++ pkgs/node-exporter-dashboard/default.nix | 28 ------------------ 4 files changed, 38 insertions(+), 30 deletions(-) create mode 100644 pkgs/grafana-dashboards/default.nix delete mode 100644 pkgs/node-exporter-dashboard/default.nix diff --git a/modules/services/prometheus/default.nix b/modules/services/prometheus/default.nix index 67b92e6..9889566 100644 --- a/modules/services/prometheus/default.nix +++ b/modules/services/prometheus/default.nix @@ -75,7 +75,7 @@ in dashboards.settings.providers = [ { name = "Node Exporter"; - options.path = pkgs.node-exporter-dashboard; + options.path = pkgs.grafana-dashboards.node-exporter; disableDeletion = true; } ]; diff --git a/pkgs/default.nix b/pkgs/default.nix index 6fb0605..8f61f97 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -1,5 +1,5 @@ final: prev: { homer = final.callPackage ./homer { }; - node-exporter-dashboard = final.callPackage ./node-exporter-dashboard { }; + grafana-dashboards = final.callPackage ./grafana-dashboards { }; } diff --git a/pkgs/grafana-dashboards/default.nix b/pkgs/grafana-dashboards/default.nix new file mode 100644 index 0000000..cd678c1 --- /dev/null +++ b/pkgs/grafana-dashboards/default.nix @@ -0,0 +1,36 @@ +{ pkgs }: + +with pkgs; + +let + inherit (pkgs) stdenv fetchurl; +in + +lib.makeScope pkgs.newScope (self: +let + buildGrafanaDashboard = args: stdenv.mkDerivation (args // { + pname = "grafana-dashboard-${args.pname}-${toString args.id}"; + inherit (args) version; + src = fetchurl { + url = "https://grafana.com/api/dashboards/${toString args.id}/revisions/${args.version}/download"; + hash = args.hash; + }; + dontUnpack = true; + installPhase = '' + runHook preInstall + mkdir -p $out + cp $src $out/${args.pname}-${toString args.id}.json + runHook postInstall + ''; + }); +in +{ + inherit buildGrafanaDashboard; + + node-exporter = buildGrafanaDashboard { + id = 1860; + pname = "node-exporter-full"; + version = "31"; + hash = "sha256-QsRHsnayYRRGc+2MfhaKGYpNdH02PesnR5b50MDzHIg="; + }; +}) diff --git a/pkgs/node-exporter-dashboard/default.nix b/pkgs/node-exporter-dashboard/default.nix deleted file mode 100644 index b27c37a..0000000 --- a/pkgs/node-exporter-dashboard/default.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ stdenv -, fetchFromGitHub -, lib -}: -stdenv.mkDerivation { - version = "unstable-2023-03-30"; - pname = "grafana-dashboard-node-exporter"; - - dontBuild = true; - - src = fetchFromGitHub { - owner = "rfrail3"; - repo = "grafana-dashboards"; - rev = "1e67d6fc6adf18c721d2eb85a39fd270cfcb7b10"; - hash = "sha256-S3+RtUId+f7MdoakcZkhw069Q8IupEWJLSwlNPzxZvM="; - }; - - installPhase = '' - mkdir -p $out - cp prometheus/node-exporter-full.json $out/node-exporter-full.json - ''; - - meta = { - description = "grafana dashboard for node exporter"; - homepage = "https://github.com/rfrail3/grafana-dashboards"; - license = lib.licenses.lgpl3Only; - }; -}