diff options
author | Florian Klink <flokli@flokli.de> | 2020-04-19 23:38:53 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-19 23:38:53 +0200 |
commit | a88d17bc693402f118b795c9a85e7878a4337704 (patch) | |
tree | f0fa8233901c610717cd037f5db28859cd1af619 /nixos/modules | |
parent | 45948bd56bdbbeb57dbfa76b8a25e5081c564736 (diff) | |
parent | b7b99c93f5a56aca8c726045c36f32bc3b3ed544 (diff) | |
download | nixlib-a88d17bc693402f118b795c9a85e7878a4337704.tar nixlib-a88d17bc693402f118b795c9a85e7878a4337704.tar.gz nixlib-a88d17bc693402f118b795c9a85e7878a4337704.tar.bz2 nixlib-a88d17bc693402f118b795c9a85e7878a4337704.tar.lz nixlib-a88d17bc693402f118b795c9a85e7878a4337704.tar.xz nixlib-a88d17bc693402f118b795c9a85e7878a4337704.tar.zst nixlib-a88d17bc693402f118b795c9a85e7878a4337704.zip |
Merge pull request #83301 from evils/tuptime
Tuptime: Init Package, Module and Test
Diffstat (limited to 'nixos/modules')
-rw-r--r-- | nixos/modules/module-list.nix | 1 | ||||
-rw-r--r-- | nixos/modules/services/monitoring/tuptime.nix | 84 |
2 files changed, 85 insertions, 0 deletions
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 41304988a596..df08ac2959ed 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -546,6 +546,7 @@ ./services/monitoring/teamviewer.nix ./services/monitoring/telegraf.nix ./services/monitoring/thanos.nix + ./services/monitoring/tuptime.nix ./services/monitoring/ups.nix ./services/monitoring/uptime.nix ./services/monitoring/vnstat.nix diff --git a/nixos/modules/services/monitoring/tuptime.nix b/nixos/modules/services/monitoring/tuptime.nix new file mode 100644 index 000000000000..731260a5c20a --- /dev/null +++ b/nixos/modules/services/monitoring/tuptime.nix @@ -0,0 +1,84 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + + cfg = config.services.tuptime; + +in { + + options.services.tuptime = { + + enable = mkEnableOption "the total uptime service"; + + timer = { + enable = mkOption { + type = types.bool; + default = true; + description = "Whether to regularly log uptime to detect bad shutdowns."; + }; + + period = mkOption { + type = types.str; + default = "*:0/5"; + description = "systemd calendar event"; + }; + }; + }; + + + config = mkIf cfg.enable { + + environment.systemPackages = [ pkgs.tuptime ]; + + users.users.tuptime.description = "tuptime database owner"; + + systemd = { + services = { + + tuptime = { + description = "the total uptime service"; + documentation = [ "man:tuptime(1)" ]; + after = [ "time-sync.target" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + StateDirectory = "tuptime"; + Type = "oneshot"; + User = "tuptime"; + RemainAfterExit = true; + ExecStart = "${pkgs.tuptime}/bin/tuptime -x"; + ExecStop = "${pkgs.tuptime}/bin/tuptime -xg"; + }; + }; + + tuptime-oneshot = mkIf cfg.timer.enable { + description = "the tuptime scheduled execution unit"; + serviceConfig = { + StateDirectory = "tuptime"; + Type = "oneshot"; + User = "tuptime"; + ExecStart = "${pkgs.tuptime}/bin/tuptime -x"; + }; + }; + }; + + timers.tuptime = mkIf cfg.timer.enable { + description = "the tuptime scheduled execution timer"; + # this timer should be started if the service is started + # even if the timer was previously stopped + wantedBy = [ "tuptime.service" "timers.target" ]; + # this timer should be stopped if the service is stopped + partOf = [ "tuptime.service" ]; + timerConfig = { + OnBootSec = "1min"; + OnCalendar = cfg.timer.period; + Unit = "tuptime-oneshot.service"; + }; + }; + }; + }; + + meta.maintainers = [ maintainers.evils ]; + +} |