2021-07-22 06:01:13 +00:00
|
|
|
{ stdenv
|
|
|
|
, lib
|
|
|
|
, go
|
2021-10-13 18:26:26 +00:00
|
|
|
, pkgs
|
2021-12-26 11:03:07 +00:00
|
|
|
, nodejs-14_x
|
2021-10-13 18:26:26 +00:00
|
|
|
, nodePackages
|
2021-07-22 06:01:13 +00:00
|
|
|
, buildGoModule
|
|
|
|
, fetchFromGitHub
|
|
|
|
, mkYarnPackage
|
|
|
|
, nixosTests
|
2020-12-23 12:09:41 +00:00
|
|
|
, fetchpatch
|
|
|
|
}:
|
2016-06-05 11:34:18 +00:00
|
|
|
|
2019-12-04 14:42:07 +00:00
|
|
|
let
|
2021-10-13 18:26:26 +00:00
|
|
|
version = "2.30.3";
|
2018-03-11 00:08:34 +00:00
|
|
|
|
2019-09-06 19:33:32 +00:00
|
|
|
src = fetchFromGitHub {
|
|
|
|
rev = "v${version}";
|
|
|
|
owner = "prometheus";
|
|
|
|
repo = "prometheus";
|
2021-10-13 18:26:26 +00:00
|
|
|
sha256 = "1as6x5bsp7mxa4rp7jhyjlpcvzqm1zngnwvp73rc4rwhz8w8vm3k";
|
2016-06-05 11:34:18 +00:00
|
|
|
};
|
|
|
|
|
2021-05-11 03:22:39 +00:00
|
|
|
goPackagePath = "github.com/prometheus/prometheus";
|
|
|
|
|
2021-10-13 18:26:26 +00:00
|
|
|
codemirrorNode = import ./webui/codemirror-promql {
|
2021-12-26 11:03:07 +00:00
|
|
|
inherit pkgs;
|
|
|
|
nodejs = nodejs-14_x;
|
2021-10-13 18:26:26 +00:00
|
|
|
inherit (stdenv.hostPlatform) system;
|
|
|
|
};
|
|
|
|
webuiNode = import ./webui/webui {
|
2021-12-26 11:03:07 +00:00
|
|
|
inherit pkgs;
|
|
|
|
nodejs = nodejs-14_x;
|
2021-10-13 18:26:26 +00:00
|
|
|
inherit (stdenv.hostPlatform) system;
|
|
|
|
};
|
|
|
|
|
|
|
|
codemirror = stdenv.mkDerivation {
|
|
|
|
name = "prometheus-webui-codemirror-promql";
|
|
|
|
src = "${src}/web/ui/module/codemirror-promql";
|
|
|
|
|
2021-12-26 11:03:07 +00:00
|
|
|
buildInputs = [ nodejs-14_x nodePackages.typescript codemirrorNode.nodeDependencies ];
|
2021-10-13 18:26:26 +00:00
|
|
|
|
|
|
|
configurePhase = ''
|
|
|
|
ln -s ${codemirrorNode.nodeDependencies}/lib/node_modules node_modules
|
|
|
|
'';
|
|
|
|
buildPhase = ''
|
|
|
|
PUBLIC_URL=. npm run build
|
|
|
|
'';
|
|
|
|
installPhase = ''
|
|
|
|
mkdir -p $out
|
|
|
|
mv lib dist $out
|
|
|
|
'';
|
|
|
|
distPhase = ":";
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
webui = stdenv.mkDerivation {
|
|
|
|
name = "prometheus-webui";
|
2019-12-04 14:42:07 +00:00
|
|
|
src = "${src}/web/ui/react-app";
|
2021-10-13 18:26:26 +00:00
|
|
|
|
2021-12-26 11:03:07 +00:00
|
|
|
buildInputs = [ nodejs-14_x webuiNode.nodeDependencies ];
|
2021-10-13 18:26:26 +00:00
|
|
|
|
|
|
|
# create `node_modules/.cache` dir (we need writeable .cache)
|
|
|
|
# and then copy the rest over.
|
|
|
|
configurePhase = ''
|
|
|
|
mkdir -p node_modules/{.cache,.bin}
|
|
|
|
cp -a ${webuiNode.nodeDependencies}/lib/node_modules/. node_modules
|
|
|
|
'';
|
|
|
|
buildPhase = "PUBLIC_URL=. npm run build";
|
2019-12-04 14:42:07 +00:00
|
|
|
installPhase = "mv build $out";
|
|
|
|
distPhase = "true";
|
|
|
|
};
|
2021-07-22 06:01:13 +00:00
|
|
|
in
|
|
|
|
buildGoModule rec {
|
2019-12-04 14:42:07 +00:00
|
|
|
pname = "prometheus";
|
|
|
|
inherit src version;
|
|
|
|
|
2021-10-13 18:26:26 +00:00
|
|
|
vendorSha256 = "0qyv8vybx5wg8k8hwvrpp4hz9wv6g4kf9sq5v5qc2bxx6apc0s9r";
|
2019-12-04 14:42:07 +00:00
|
|
|
|
2021-05-11 03:22:39 +00:00
|
|
|
excludedPackages = [ "documentation/prometheus-mixin" ];
|
2020-12-23 12:09:41 +00:00
|
|
|
|
2021-12-26 11:03:07 +00:00
|
|
|
nativeBuildInputs = [ nodejs-14_x ];
|
2021-10-13 18:26:26 +00:00
|
|
|
|
2019-12-04 14:42:07 +00:00
|
|
|
postPatch = ''
|
2021-10-13 18:26:26 +00:00
|
|
|
# we don't want this anyways, as we
|
|
|
|
# build modules for them
|
|
|
|
echo "exit 0" > web/ui/module/build.sh
|
|
|
|
|
|
|
|
ln -s ${webuiNode.nodeDependencies}/lib/node_modules web/ui/react-app/node_modules
|
2019-12-04 14:42:07 +00:00
|
|
|
ln -s ${webui} web/ui/static/react
|
2021-10-13 18:26:26 +00:00
|
|
|
|
|
|
|
# webui-codemirror
|
|
|
|
ln -s ${codemirror}/dist web/ui/module/codemirror-promql/dist
|
|
|
|
ln -s ${codemirror}/lib web/ui/module/codemirror-promql/lib
|
2019-12-04 14:42:07 +00:00
|
|
|
'';
|
|
|
|
|
2021-08-08 00:11:16 +00:00
|
|
|
tags = [ "builtinassets" ];
|
|
|
|
|
|
|
|
ldflags =
|
2021-07-22 06:01:13 +00:00
|
|
|
let
|
|
|
|
t = "${goPackagePath}/vendor/github.com/prometheus/common/version";
|
|
|
|
in
|
|
|
|
[
|
2021-08-08 00:11:16 +00:00
|
|
|
"-X ${t}.Version=${version}"
|
|
|
|
"-X ${t}.Revision=unknown"
|
|
|
|
"-X ${t}.Branch=unknown"
|
|
|
|
"-X ${t}.BuildUser=nix@nixpkgs"
|
|
|
|
"-X ${t}.BuildDate=unknown"
|
|
|
|
"-X ${t}.GoVersion=${lib.getVersion go}"
|
2021-07-22 06:01:13 +00:00
|
|
|
];
|
2019-12-04 14:42:07 +00:00
|
|
|
|
2021-05-11 03:22:39 +00:00
|
|
|
# only run this in the real build, not during the vendor build
|
|
|
|
# this should probably be fixed in buildGoModule
|
2019-12-04 14:42:07 +00:00
|
|
|
preBuild = ''
|
2021-05-11 03:22:39 +00:00
|
|
|
if [ -d vendor ]; then make assets; fi
|
2019-09-06 19:33:32 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
preInstall = ''
|
2020-04-28 01:50:57 +00:00
|
|
|
mkdir -p "$out/share/doc/prometheus" "$out/etc/prometheus"
|
|
|
|
cp -a $src/documentation/* $out/share/doc/prometheus
|
|
|
|
cp -a $src/console_libraries $src/consoles $out/etc/prometheus
|
2019-09-06 19:33:32 +00:00
|
|
|
'';
|
|
|
|
|
2021-07-22 06:01:46 +00:00
|
|
|
# doCheck = !stdenv.isDarwin; # https://hydra.nixos.org/build/130673870/nixlog/1
|
|
|
|
doCheck = false;
|
2019-09-06 19:33:32 +00:00
|
|
|
|
2020-08-20 09:14:02 +00:00
|
|
|
passthru.tests = { inherit (nixosTests) prometheus; };
|
|
|
|
|
2019-09-06 19:33:32 +00:00
|
|
|
meta = with lib; {
|
|
|
|
description = "Service monitoring system and time series database";
|
|
|
|
homepage = "https://prometheus.io";
|
|
|
|
license = licenses.asl20;
|
2020-02-14 19:45:21 +00:00
|
|
|
maintainers = with maintainers; [ benley fpletz globin willibutz Frostman ];
|
2019-09-06 19:33:32 +00:00
|
|
|
platforms = platforms.unix;
|
2016-06-05 11:34:18 +00:00
|
|
|
};
|
|
|
|
}
|