···
1
-
{pkgs, config, lib, ...}:
1
+
{ config, lib, pkgs, ... }:
5
-
inherit (lib) mkOption mkIf singleton;
7
-
inherit (pkgs) uptimed;
6
+
cfg = config.services.uptimed;
stateDir = "/var/spool/uptimed";
11
-
uptimedUser = "uptimed";
26
-
Uptimed allows you to track your highest uptimes.
15
+
Enable <literal>uptimed</literal>, allowing you to track
16
+
your highest uptimes.
22
+
config = mkIf cfg.enable {
23
+
users.extraUsers.uptimed = {
24
+
description = "Uptimed daemon user";
27
+
uid = config.ids.uids.uptimed;
35
-
###### implementation
30
+
systemd.services.uptimed = {
31
+
unitConfig.Documentation = "man:uptimed(8) man:uprecords(1)";
32
+
description = "uptimed service";
33
+
wantedBy = [ "multi-user.target" ];
37
-
config = mkIf config.services.uptimed.enable {
39
-
environment.systemPackages = [ uptimed ];
41
-
users.extraUsers = singleton
42
-
{ name = uptimedUser;
43
-
uid = config.ids.uids.uptimed;
44
-
description = "Uptimed daemon user";
36
+
Restart = "on-failure";
39
+
IOSchedulingClass = "idle";
41
+
PrivateNetwork = "yes";
42
+
NoNewPrivileges = "yes";
43
+
ReadWriteDirectories = stateDir;
44
+
InaccessibleDirectories = "/home";
45
+
ExecStart = "${pkgs.uptimed}/sbin/uptimed -f -p ${stateDir}/pid";
48
-
systemd.services.uptimed = {
49
-
description = "Uptimed daemon";
50
-
wantedBy = [ "multi-user.target" ];
53
-
mkdir -m 0755 -p ${stateDir}
54
-
chown ${uptimedUser} ${stateDir}
if ! test -f ${stateDir}/bootid ; then
57
-
${uptimed}/sbin/uptimed -b
50
+
${pkgs.uptimed}/sbin/uptimed -b
61
-
script = "${uptimed}/sbin/uptimed";