pkgs/grafana-dashboards: modularize

This commit is contained in:
Felix Buehler 2023-04-11 20:44:29 +02:00
parent 1760b2f1dc
commit 354be79f0e
4 changed files with 38 additions and 30 deletions

View file

@ -75,7 +75,7 @@ in
dashboards.settings.providers = [ dashboards.settings.providers = [
{ {
name = "Node Exporter"; name = "Node Exporter";
options.path = pkgs.node-exporter-dashboard; options.path = pkgs.grafana-dashboards.node-exporter;
disableDeletion = true; disableDeletion = true;
} }
]; ];

View file

@ -1,5 +1,5 @@
final: prev: final: prev:
{ {
homer = final.callPackage ./homer { }; homer = final.callPackage ./homer { };
node-exporter-dashboard = final.callPackage ./node-exporter-dashboard { }; grafana-dashboards = final.callPackage ./grafana-dashboards { };
} }

View file

@ -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=";
};
})

View file

@ -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;
};
}