nixpkgs/nixos/modules/services/monitoring/tuptime.nix
stuebinm 6afb255d97 nixos: remove all uses of lib.mdDoc
these changes were generated with nixq 0.0.2, by running

  nixq ">> lib.mdDoc[remove] Argument[keep]" --batchmode nixos/**.nix
  nixq ">> mdDoc[remove] Argument[keep]" --batchmode nixos/**.nix
  nixq ">> Inherit >> mdDoc[remove]" --batchmode nixos/**.nix

two mentions of the mdDoc function remain in nixos/, both of which
are inside of comments.

Since lib.mdDoc is already defined as just id, this commit is a no-op as
far as Nix (and the built manual) is concerned.
2024-04-13 10:07:35 -07:00

91 lines
2.2 KiB
Nix

{ 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 = {
groups._tuptime.members = [ "_tuptime" ];
users._tuptime = {
isSystemUser = true;
group = "_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 -q";
ExecStop = "${pkgs.tuptime}/bin/tuptime -qg";
};
};
tuptime-sync = mkIf cfg.timer.enable {
description = "Tuptime scheduled sync service";
serviceConfig = {
Type = "oneshot";
User = "_tuptime";
ExecStart = "${pkgs.tuptime}/bin/tuptime -q";
};
};
};
timers.tuptime-sync = mkIf cfg.timer.enable {
description = "Tuptime scheduled sync 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-sync.service";
};
};
};
};
meta.maintainers = [ maintainers.evils ];
}