summary refs log tree commit diff
path: root/pkgs/servers/monitoring/prometheus/dmarc-exporter/default.nix
blob: e083df90b4135af4170af4e766ac454705e89a60 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
{ poetry2nix, pkgs, lib }:

let
  inherit (poetry2nix.mkPoetryPackages {
    projectDir = ./.;
    overrides = [
      poetry2nix.defaultPoetryOverrides
      (import ./poetry-git-overlay.nix { inherit pkgs; })
      (self: super: {
        dmarc-metrics-exporter = super.dmarc-metrics-exporter.overridePythonAttrs ({ nativeBuildInputs ? [ ], meta ? {}, ... }: {
          nativeBuildInputs = nativeBuildInputs ++ [ self.poetry ];
          meta = with lib; meta // {
            license = licenses.mit;
            homepage = "https://github.com/jgosmann/dmarc-metrics-exporter/";
            description = " Export Prometheus metrics from DMARC reports";
            maintainers = with maintainers; [ ma27 ];
          };
        });
        more-properties = super.more-properties.overridePythonAttrs (old: {
          src = pkgs.fetchFromGitHub {
            owner = "madman-bob";
            repo = "python-more-properties";
            rev = old.version;
            sha256 = "sha256-dKG97rw5IG19m7u3ZDBM2yGScL5cFaKBvGZxPVJaUTE=";
          };
          postPatch = ''
            sed -i -e '/dataclasses/d' requirements.txt
            cp ./pypi_upload/setup.py setup.py
            substituteInPlace setup.py \
              --replace "parents[1]" "parents[0]"
          '';
        });
        dataclasses-serialization = super.dataclasses-serialization.overridePythonAttrs (old: {
          src = pkgs.fetchFromGitHub {
            owner = "madman-bob";
            repo = "python-dataclasses-serialization";
            rev = old.version;
            sha256 = "sha256-jLMR2D01KgzHHRP0zduMBJt8xgBmIquWLCjZYLo2/AA=";
          };
          postPatch = ''
            sed -i -e '/dataclasses/d' requirements.txt
            cp ./pypi_upload/setup.py setup.py
            substituteInPlace setup.py \
              --replace "parents[1]" "parents[0]"
          '';
        });
        dataclasses = null;
        bite-parser = super.bite-parser.overridePythonAttrs (old: {
          nativeBuildInputs = old.nativeBuildInputs ++ [ self.poetry ];
        });
      })
    ];
  }) python;
  env = python.withPackages (p: [ p.dmarc-metrics-exporter ]);
in

(pkgs.writeShellScriptBin "prometheus-dmarc-exporter" ''
  export PYTHONPATH="${env}/lib/${env.libPrefix}/site-packages''${PYTHONPATH:+:}''${PYTHONPATH}"
  exec ${env}/bin/python3 -m dmarc_metrics_exporter "$@"
'') // {
  inherit (python.pkgs.dmarc-metrics-exporter) meta;
}