Piotr Dobrowolski | a01905a | 2021-10-16 18:22:46 +0200 | [diff] [blame] | 1 | { pkgs, ... }: |
| 2 | |
| 3 | let |
| 4 | unstable = import (fetchTarball { |
| 5 | sha256 = "0ww70kl08rpcsxb9xdx8m48vz41dpss4hh3vvsmswll35l158x0v"; |
| 6 | url = "https://api.github.com/repos/NixOS/nixpkgs-channels/tarball/84d74ae9c9cbed73274b8e4e00be14688ffc93fe"; |
| 7 | }) {config = pkgs.config; }; |
| 8 | |
| 9 | name = "mikrotik-exporter"; |
| 10 | user = name; |
| 11 | group = name; |
| 12 | |
| 13 | prepare-secrets = pkgs.writeShellScript "${name}-secrets" '' |
| 14 | ${pkgs.coreutils}/bin/install --owner=${user} --mode=500 --directory /mnt/secrets/${name} |
| 15 | ${pkgs.coreutils}/bin/install --owner=${user} --mode=400 -t /mnt/secrets/${name} \ |
| 16 | /etc/nixos/secrets/${name}/ap.yml |
| 17 | ''; |
| 18 | in { |
| 19 | users.users."${user}" = { |
| 20 | group = "${group}"; |
Piotr Dobrowolski | b6bc3e6 | 2021-10-16 21:56:59 +0200 | [diff] [blame^] | 21 | isSystemUser = true; |
| 22 | uid = 1003; |
Piotr Dobrowolski | a01905a | 2021-10-16 18:22:46 +0200 | [diff] [blame] | 23 | }; |
| 24 | users.groups."${group}" = {}; |
| 25 | |
| 26 | systemd.services."${name}" = { |
| 27 | description = "Mikrotik prometheus exporter"; |
| 28 | wantedBy = [ "multi-user.target" ]; |
| 29 | serviceConfig.Type = "simple"; |
| 30 | serviceConfig.ExecStartPre = [ "!${prepare-secrets}" ]; |
| 31 | serviceConfig.ExecStart = "${unstable.prometheus-mikrotik-exporter}/bin/mikrotik-exporter -config-file /mnt/secrets/${name}/ap.yml -port 127.0.0.1:9436"; |
| 32 | }; |
| 33 | } |