From 9587192c683149fbad1e7830a0e8a8458f512c82 Mon Sep 17 00:00:00 2001 From: Rob Vermaas Date: Wed, 16 Sep 2009 07:48:47 +0000 Subject: [PATCH] * added uptimed module svn path=/nixos/trunk/; revision=17173 --- modules/misc/ids.nix | 1 + modules/module-list.nix | 1 + modules/services/system/uptimed.nix | 81 +++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+) create mode 100644 modules/services/system/uptimed.nix diff --git a/modules/misc/ids.nix b/modules/misc/ids.nix index 87a73832a59..7ed3e110e5d 100644 --- a/modules/misc/ids.nix +++ b/modules/misc/ids.nix @@ -47,6 +47,7 @@ in gnunetd = 17; pulseaudio = 22; # must match `pulseaudio' GID gpsd = 23; + uptimed = 24; nixbld = 30000; # start of range of uids nobody = 65534; diff --git a/modules/module-list.nix b/modules/module-list.nix index d44d15c09e4..f8bae4a06d1 100644 --- a/modules/module-list.nix +++ b/modules/module-list.nix @@ -79,6 +79,7 @@ ./services/scheduling/fcron.nix ./services/system/dbus.nix ./services/system/nscd.nix + ./services/system/uptimed.nix ./services/ttys/gpm.nix ./services/ttys/mingetty.nix ./services/web-servers/apache-httpd/default.nix diff --git a/modules/services/system/uptimed.nix b/modules/services/system/uptimed.nix new file mode 100644 index 00000000000..7ffccdf1251 --- /dev/null +++ b/modules/services/system/uptimed.nix @@ -0,0 +1,81 @@ +{pkgs, config, ...}: + +let + + inherit (pkgs.lib) mkOption mkIf singleton; + + inherit (pkgs) uptimed; + + stateDir = "/var/spool/uptimed"; + + uptimedUser = "uptimed"; + + modprobe = config.system.sbin.modprobe; + + uptimedFlags = ""; + +in + +{ + + ###### interface + + options = { + + services.uptimed = { + + enable = mkOption { + default = true; + description = '' + Uptimed allows you to track your highest uptimes. + ''; + }; + + }; + + }; + + + ###### implementation + + config = mkIf config.services.uptimed.enable { + + users.extraUsers = singleton + { name = uptimedUser; + uid = config.ids.uids.uptimed; + description = "Uptimed daemon user"; + home = stateDir; + }; + + jobs = singleton { + + name = "uptimed"; + + job = '' + description "Uptimed daemon" + + start on startup + stop on shutdown + + start script + + mkdir -m 0755 -p ${stateDir} + chown ${uptimedUser} ${stateDir} + + # Needed to run uptimed as an unprivileged user. + ${modprobe}/sbin/modprobe capability || true + + if ! test -f ${stateDir}/bootid ; then + ${uptimed}/sbin/uptimed -b + fi + + end script + + respawn ${uptimed}/sbin/uptimed ${uptimedFlags} + ''; + + }; + + }; + +}