summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--_sources/generated.json43
-rw-r--r--_sources/generated.nix28
-rw-r--r--hosts/vidhar/prometheus/default.nix8
-rw-r--r--modules/prometheus-lvm-exporter.nix57
-rw-r--r--nvfetcher.toml11
-rw-r--r--overlays/etesync-dav.nix61
-rw-r--r--overlays/prometheus-lvm-exporter.nix18
7 files changed, 217 insertions, 9 deletions
diff --git a/_sources/generated.json b/_sources/generated.json
index d7a62e6b..d3b81268 100644
--- a/_sources/generated.json
+++ b/_sources/generated.json
@@ -39,6 +39,26 @@
39 }, 39 },
40 "version": "0077334cc299aa7885f804d88f52cdb1b35caf71" 40 "version": "0077334cc299aa7885f804d88f52cdb1b35caf71"
41 }, 41 },
42 "etebase-py": {
43 "cargoLocks": null,
44 "date": "2022-07-06",
45 "extract": null,
46 "name": "etebase-py",
47 "passthru": null,
48 "pinned": false,
49 "src": {
50 "deepClone": false,
51 "fetchSubmodules": false,
52 "leaveDotGit": false,
53 "name": null,
54 "owner": "etesync",
55 "repo": "etebase-py",
56 "rev": "ac3e5138a2e18dc11f77d9a75f07d4b8dd8c4445",
57 "sha256": "sha256-OSzOoL7o4rWYOK1OyxfpslOnNfnK5CKhdhiFEXz/WvY=",
58 "type": "github"
59 },
60 "version": "ac3e5138a2e18dc11f77d9a75f07d4b8dd8c4445"
61 },
42 "lesspipe": { 62 "lesspipe": {
43 "cargoLocks": null, 63 "cargoLocks": null,
44 "date": null, 64 "date": null,
@@ -202,6 +222,21 @@
202 }, 222 },
203 "version": "2.03" 223 "version": "2.03"
204 }, 224 },
225 "prometheus-lvm-exporter": {
226 "cargoLocks": null,
227 "date": null,
228 "extract": null,
229 "name": "prometheus-lvm-exporter",
230 "passthru": null,
231 "pinned": false,
232 "src": {
233 "name": null,
234 "sha256": "sha256-bytPqK2kvDrskbvmyybejUr1+RU6YdOgzmtqbKyfSNA=",
235 "type": "url",
236 "url": "https://github.com/hansmi/prometheus-lvm-exporter/archive/refs/tags/v0.3.1.tar.gz"
237 },
238 "version": "0.3.1"
239 },
205 "psql-versioning": { 240 "psql-versioning": {
206 "cargoLocks": null, 241 "cargoLocks": null,
207 "date": "2020-02-18", 242 "date": "2020-02-18",
@@ -253,7 +288,7 @@
253 }, 288 },
254 "v4l2loopback": { 289 "v4l2loopback": {
255 "cargoLocks": null, 290 "cargoLocks": null,
256 "date": "2022-08-05", 291 "date": "2022-11-09",
257 "extract": null, 292 "extract": null,
258 "name": "v4l2loopback", 293 "name": "v4l2loopback",
259 "passthru": null, 294 "passthru": null,
@@ -265,11 +300,11 @@
265 "name": null, 300 "name": null,
266 "owner": "umlaeute", 301 "owner": "umlaeute",
267 "repo": "v4l2loopback", 302 "repo": "v4l2loopback",
268 "rev": "76434ab6f71d5ecbff8a218ff6bed91ea2bf73b8", 303 "rev": "8902b3f11413166e7823c377dbf876bae1fab137",
269 "sha256": "sha256-c6g63jW+a+v/TxLD9NnQGn/aUgivwVkxzP+hZ65w2/o=", 304 "sha256": "sha256-p/tGXO2+EogR4BdZ+KxonyBnYHznJrqKM6cRg1G37xA=",
270 "type": "github" 305 "type": "github"
271 }, 306 },
272 "version": "76434ab6f71d5ecbff8a218ff6bed91ea2bf73b8" 307 "version": "8902b3f11413166e7823c377dbf876bae1fab137"
273 }, 308 },
274 "xcompose": { 309 "xcompose": {
275 "cargoLocks": null, 310 "cargoLocks": null,
diff --git a/_sources/generated.nix b/_sources/generated.nix
index 72e6367c..89857492 100644
--- a/_sources/generated.nix
+++ b/_sources/generated.nix
@@ -27,6 +27,18 @@
27 }); 27 });
28 date = "2015-09-10"; 28 date = "2015-09-10";
29 }; 29 };
30 etebase-py = {
31 pname = "etebase-py";
32 version = "ac3e5138a2e18dc11f77d9a75f07d4b8dd8c4445";
33 src = fetchFromGitHub ({
34 owner = "etesync";
35 repo = "etebase-py";
36 rev = "ac3e5138a2e18dc11f77d9a75f07d4b8dd8c4445";
37 fetchSubmodules = false;
38 sha256 = "sha256-OSzOoL7o4rWYOK1OyxfpslOnNfnK5CKhdhiFEXz/WvY=";
39 });
40 date = "2022-07-06";
41 };
30 lesspipe = { 42 lesspipe = {
31 pname = "lesspipe"; 43 pname = "lesspipe";
32 version = "2.06"; 44 version = "2.06";
@@ -124,6 +136,14 @@
124 sha256 = "sha256-mMKXzeqg2PfXkvGL7qugOelm/I2fZnUidq6/ugXDHa0="; 136 sha256 = "sha256-mMKXzeqg2PfXkvGL7qugOelm/I2fZnUidq6/ugXDHa0=";
125 }; 137 };
126 }; 138 };
139 prometheus-lvm-exporter = {
140 pname = "prometheus-lvm-exporter";
141 version = "0.3.1";
142 src = fetchurl {
143 url = "https://github.com/hansmi/prometheus-lvm-exporter/archive/refs/tags/v0.3.1.tar.gz";
144 sha256 = "sha256-bytPqK2kvDrskbvmyybejUr1+RU6YdOgzmtqbKyfSNA=";
145 };
146 };
127 psql-versioning = { 147 psql-versioning = {
128 pname = "psql-versioning"; 148 pname = "psql-versioning";
129 version = "3e578ff5e5aa6c7e5459dbfa842a64a1b2674b2e"; 149 version = "3e578ff5e5aa6c7e5459dbfa842a64a1b2674b2e";
@@ -155,15 +175,15 @@
155 }; 175 };
156 v4l2loopback = { 176 v4l2loopback = {
157 pname = "v4l2loopback"; 177 pname = "v4l2loopback";
158 version = "76434ab6f71d5ecbff8a218ff6bed91ea2bf73b8"; 178 version = "8902b3f11413166e7823c377dbf876bae1fab137";
159 src = fetchFromGitHub ({ 179 src = fetchFromGitHub ({
160 owner = "umlaeute"; 180 owner = "umlaeute";
161 repo = "v4l2loopback"; 181 repo = "v4l2loopback";
162 rev = "76434ab6f71d5ecbff8a218ff6bed91ea2bf73b8"; 182 rev = "8902b3f11413166e7823c377dbf876bae1fab137";
163 fetchSubmodules = true; 183 fetchSubmodules = true;
164 sha256 = "sha256-c6g63jW+a+v/TxLD9NnQGn/aUgivwVkxzP+hZ65w2/o="; 184 sha256 = "sha256-p/tGXO2+EogR4BdZ+KxonyBnYHznJrqKM6cRg1G37xA=";
165 }); 185 });
166 date = "2022-08-05"; 186 date = "2022-11-09";
167 }; 187 };
168 xcompose = { 188 xcompose = {
169 pname = "xcompose"; 189 pname = "xcompose";
diff --git a/hosts/vidhar/prometheus/default.nix b/hosts/vidhar/prometheus/default.nix
index 8e5ff0ea..e6de6806 100644
--- a/hosts/vidhar/prometheus/default.nix
+++ b/hosts/vidhar/prometheus/default.nix
@@ -69,6 +69,7 @@ in {
69 "--systemd.collector.enable-ip-accounting" 69 "--systemd.collector.enable-ip-accounting"
70 ]; 70 ];
71 }; 71 };
72 lvm.enable = true;
72 blackbox = { 73 blackbox = {
73 enable = true; 74 enable = true;
74 configFile = pkgs.writeText "blackbox-config.yaml" (builtins.toJSON { 75 configFile = pkgs.writeText "blackbox-config.yaml" (builtins.toJSON {
@@ -104,6 +105,13 @@ in {
104 relabel_configs = relabelHosts; 105 relabel_configs = relabelHosts;
105 scrape_interval = "1s"; 106 scrape_interval = "1s";
106 } 107 }
108 { job_name = "lvm";
109 static_configs = [
110 { targets = ["localhost:${toString config.services.prometheus.exporters.lvm.port}"]; }
111 ];
112 relabel_configs = relabelHosts;
113 scrape_interval = "5s";
114 }
107 { job_name = "systemd"; 115 { job_name = "systemd";
108 static_configs = [ 116 static_configs = [
109 { targets = ["localhost:${toString config.services.prometheus.exporters.systemd.port}"]; } 117 { targets = ["localhost:${toString config.services.prometheus.exporters.systemd.port}"]; }
diff --git a/modules/prometheus-lvm-exporter.nix b/modules/prometheus-lvm-exporter.nix
new file mode 100644
index 00000000..f0951d46
--- /dev/null
+++ b/modules/prometheus-lvm-exporter.nix
@@ -0,0 +1,57 @@
1{ lib, config, pkgs, utils, ... }:
2
3with lib;
4
5let
6 cfg = config.services.prometheus.exporters.lvm;
7in {
8 options = {
9 services.prometheus.exporters.lvm = {
10 enable = mkEnableOption "Prometheus LVM exporter";
11
12 listenAddress = mkOption {
13 type = types.str;
14 default = "localhost";
15 };
16 port = mkOption {
17 type = types.port;
18 default = 9845;
19 };
20
21 openFirewall = mkOption {
22 type = types.bool;
23 default = false;
24 description = lib.mdDoc ''
25 Open port in firewall for incoming connections.
26 '';
27 };
28 firewallFilter = mkOption {
29 type = types.nullOr types.str;
30 default = null;
31 example = literalExpression ''
32 "-i eth0 -p tcp -m tcp --dport ${toString cfg.port}"
33 '';
34 description = lib.mdDoc ''
35 Specify a filter for iptables to use when
36 {option}`services.prometheus.exporters.lvm.openFirewall`
37 is true. It is used as `ip46tables -I nixos-fw firewallFilter -j nixos-fw-accept`.
38 '';
39 };
40 };
41 };
42
43 config = mkIf cfg.enable {
44 systemd.services."prometheus-lvm-exporter" = {
45 wantedBy = [ "multi-user.target" ];
46 after = [ "network.target" ];
47
48 serviceConfig = {
49 ExecStart = "${pkgs.prometheus-lvm-exporter}/bin/prometheus-lvm-exporter ${utils.escapeSystemdExecArgs [
50 "-web.listen-address" "${cfg.listenAddress}:${toString cfg.port}"
51 ]}";
52
53 Restart = "always";
54 };
55 };
56 };
57}
diff --git a/nvfetcher.toml b/nvfetcher.toml
index 7cd52c29..5e075ae4 100644
--- a/nvfetcher.toml
+++ b/nvfetcher.toml
@@ -68,4 +68,13 @@ fetch.url = "https://github.com/matusnovak/prometheus-smartctl/archive/refs/tags
68[postfwd] 68[postfwd]
69src.github_tag = "postfwd/postfwd" 69src.github_tag = "postfwd/postfwd"
70src.prefix = "v" 70src.prefix = "v"
71fetch.url = "https://github.com/postfwd/postfwd/archive/refs/tags/v$ver.tar.gz" \ No newline at end of file 71fetch.url = "https://github.com/postfwd/postfwd/archive/refs/tags/v$ver.tar.gz"
72
73[etebase-py]
74src.git = "https://github.com/etesync/etebase-py"
75fetch.github = "etesync/etebase-py"
76
77[prometheus-lvm-exporter]
78src.github = "hansmi/prometheus-lvm-exporter"
79src.prefix = "v"
80fetch.url = "https://github.com/hansmi/prometheus-lvm-exporter/archive/refs/tags/v$ver.tar.gz" \ No newline at end of file
diff --git a/overlays/etesync-dav.nix b/overlays/etesync-dav.nix
new file mode 100644
index 00000000..49c77352
--- /dev/null
+++ b/overlays/etesync-dav.nix
@@ -0,0 +1,61 @@
1{ final, prev, sources, ... }: {
2 etesync-dav = let
3 python = final.python3.override {
4 packageOverrides = self: super: {
5 # flask-wtf = super.flask-wtf.overridePythonAttrs (old: rec {
6 # patches = [];
7 # version = "0.15.1";
8 # src = old.src.override {
9 # inherit version;
10 # sha256 = "ff177185f891302dc253437fe63081e7a46a4e99aca61dfe086fb23e54fff2dc";
11 # };
12 # disabledTests = [
13 # "test_outside_request"
14 # ];
15 # });
16 # wtforms = super.wtforms.overridePythonAttrs (old: rec {
17 # version = "2.3.3";
18 # src = old.src.override {
19 # inherit version;
20 # sha256 = "81195de0ac94fbc8368abbaf9197b88c4f3ffd6c2719b5bf5fc9da744f3d829c";
21 # };
22 # checkPhase = ''
23 # ${self.python.interpreter} tests/runtests.py
24 # '';
25 # });
26 etebase = super.wtforms.overridePythonAttrs (old: rec {
27 inherit (sources.etebase-py) version src;
28 });
29 };
30 };
31 in python.pkgs.buildPythonApplication rec {
32 pname = "etesync-dav";
33 version = "0.32.1";
34
35 src = python.pkgs.fetchPypi {
36 inherit pname version;
37 sha256 = "a4e2ee83932755d29ac39c1e74005ec289880fd2d4d2164f09fe2464a294d720";
38 };
39
40 propagatedBuildInputs = with python.pkgs; [
41 appdirs
42 etebase
43 etesync
44 flask
45 flask-wtf
46 msgpack
47 pysocks
48 (python.pkgs.toPythonModule (final.radicale3.override { python3 = python; }))
49 requests
50 ] ++ requests.optional-dependencies.socks;
51
52 doCheck = false;
53
54 meta = with final.lib; {
55 homepage = "https://www.etesync.com/";
56 description = "Secure, end-to-end encrypted, and privacy respecting sync for contacts, calendars and tasks";
57 license = licenses.gpl3;
58 broken = final.stdenv.isDarwin; # pyobjc-framework-Cocoa is missing
59 };
60 };
61}
diff --git a/overlays/prometheus-lvm-exporter.nix b/overlays/prometheus-lvm-exporter.nix
new file mode 100644
index 00000000..ead1e820
--- /dev/null
+++ b/overlays/prometheus-lvm-exporter.nix
@@ -0,0 +1,18 @@
1{ final, prev, sources, ... }: {
2 prometheus-lvm-exporter = final.buildGoModule {
3 pname = "prometheus-lvm-exporter";
4 inherit (sources.prometheus-lvm-exporter) version src;
5
6 vendorHash = "sha256-DyvUM3pP2P1IGfXKpkR5Y4CVcnSBsnNy0kd3WTjbWpg=";
7
8 doCheck = false;
9
10 nativeBuildInputs = with final; [ makeWrapper ];
11
12 postInstall = ''
13 wrapProgram $out/bin/prometheus-lvm-exporter \
14 --set LC_ALL C \
15 --add-flags -command --add-flags ${final.lvm2.bin}/bin/lvm
16 '';
17 };
18}