Piotr Dobrowolski | a01905a | 2021-10-16 18:22:46 +0200 | [diff] [blame] | 1 | { pkgs, ... }: |
| 2 | |
| 3 | let |
Piotr Dobrowolski | a01905a | 2021-10-16 18:22:46 +0200 | [diff] [blame] | 4 | name = "mikrotik-exporter"; |
| 5 | user = name; |
| 6 | group = name; |
| 7 | |
| 8 | prepare-secrets = pkgs.writeShellScript "${name}-secrets" '' |
| 9 | ${pkgs.coreutils}/bin/install --owner=${user} --mode=500 --directory /mnt/secrets/${name} |
| 10 | ${pkgs.coreutils}/bin/install --owner=${user} --mode=400 -t /mnt/secrets/${name} \ |
| 11 | /etc/nixos/secrets/${name}/ap.yml |
| 12 | ''; |
| 13 | in { |
| 14 | users.users."${user}" = { |
| 15 | group = "${group}"; |
Piotr Dobrowolski | b6bc3e6 | 2021-10-16 21:56:59 +0200 | [diff] [blame] | 16 | isSystemUser = true; |
| 17 | uid = 1003; |
Piotr Dobrowolski | a01905a | 2021-10-16 18:22:46 +0200 | [diff] [blame] | 18 | }; |
| 19 | users.groups."${group}" = {}; |
| 20 | |
| 21 | systemd.services."${name}" = { |
| 22 | description = "Mikrotik prometheus exporter"; |
| 23 | wantedBy = [ "multi-user.target" ]; |
| 24 | serviceConfig.Type = "simple"; |
| 25 | serviceConfig.ExecStartPre = [ "!${prepare-secrets}" ]; |
Piotr Dobrowolski | 6f6187c | 2021-10-16 23:22:22 +0200 | [diff] [blame] | 26 | serviceConfig.ExecStart = "${pkgs.prometheus-mikrotik-exporter}/bin/mikrotik-exporter -config-file /mnt/secrets/${name}/ap.yml -port 127.0.0.1:9436"; |
Piotr Dobrowolski | a01905a | 2021-10-16 18:22:46 +0200 | [diff] [blame] | 27 | }; |
| 28 | } |