at 25.11-pre 1.4 kB view raw
1{ 2 config, 3 lib, 4 pkgs, 5 ... 6}: 7let 8 cfg = config.services.uptimed; 9 stateDir = "/var/lib/uptimed"; 10in 11{ 12 options = { 13 services.uptimed = { 14 enable = lib.mkOption { 15 type = lib.types.bool; 16 default = false; 17 description = '' 18 Enable `uptimed`, allowing you to track 19 your highest uptimes. 20 ''; 21 }; 22 }; 23 }; 24 25 config = lib.mkIf cfg.enable { 26 27 environment.systemPackages = [ pkgs.uptimed ]; 28 29 users.users.uptimed = { 30 description = "Uptimed daemon user"; 31 home = stateDir; 32 uid = config.ids.uids.uptimed; 33 group = "uptimed"; 34 }; 35 users.groups.uptimed = { }; 36 37 systemd.services.uptimed = { 38 unitConfig.Documentation = "man:uptimed(8) man:uprecords(1)"; 39 description = "uptimed service"; 40 wantedBy = [ "multi-user.target" ]; 41 42 serviceConfig = { 43 Restart = "on-failure"; 44 User = "uptimed"; 45 Nice = 19; 46 IOSchedulingClass = "idle"; 47 PrivateTmp = "yes"; 48 PrivateNetwork = "yes"; 49 NoNewPrivileges = "yes"; 50 StateDirectory = [ "uptimed" ]; 51 InaccessibleDirectories = "/home"; 52 ExecStart = "${pkgs.uptimed}/sbin/uptimed -f -p ${stateDir}/pid"; 53 }; 54 55 preStart = '' 56 if ! test -f ${stateDir}/bootid ; then 57 ${pkgs.uptimed}/sbin/uptimed -b 58 fi 59 ''; 60 }; 61 }; 62}