From 9132b537fd93160f28819fd809f49b02b6df7c8f Mon Sep 17 00:00:00 2001 From: h7x4 Date: Thu, 8 May 2025 16:19:50 +0200 Subject: [PATCH] common/uptimed: add settings, sd_notify --- hosts/common/services/uptimed.nix | 59 +++++++++++++++++++++++++++++-- 1 file changed, 57 insertions(+), 2 deletions(-) diff --git a/hosts/common/services/uptimed.nix b/hosts/common/services/uptimed.nix index 2f4982f..9bc192c 100644 --- a/hosts/common/services/uptimed.nix +++ b/hosts/common/services/uptimed.nix @@ -1,4 +1,59 @@ -{ ... }: +{ config, pkgs, lib, ... }: +let + cfg = config.services.uptimed; +in { - services.uptimed.enable = true; + options.services.uptimed.settings = lib.mkOption { + description = ""; + default = { }; + type = lib.types.submodule { + freeformType = with lib.types; attrsOf (either str (listOf str)); + }; + }; + + config = { + services.uptimed = { + enable = true; + + settings = let + stateDir = "/var/lib/uptimed"; + in { + PIDFILE = "${stateDir}/pid"; + SENDMAIL = lib.mkDefault "${pkgs.system-sendmail}/bin/sendmail -t"; + }; + }; + + systemd.services.uptimed = lib.mkIf (cfg.enable) { + serviceConfig = let + uptimed = pkgs.uptimed.overrideAttrs (prev: { + postPatch = '' + substituteInPlace Makefile.am \ + --replace-fail '$(sysconfdir)/uptimed.conf' '/var/lib/uptimed/uptimed.conf' + substituteInPlace src/Makefile.am \ + --replace-fail '$(sysconfdir)/uptimed.conf' '/var/lib/uptimed/uptimed.conf' + ''; + }); + + in { + Type = "notify"; + + ExecStart = lib.mkForce "${uptimed}/sbin/uptimed -f"; + + BindReadOnlyPaths = let + configFile = lib.pipe cfg.settings [ + (lib.mapAttrsToList + (k: v: + if builtins.isList v + then lib.mapConcatStringsSep "\n" (v': "${k}=${v'}") v + else "${k}=${v}") + ) + (lib.concatStringsSep "\n") + (pkgs.writeText "uptimed.conf") + ]; + in [ + "${configFile}:/var/lib/uptimed/uptimed.conf" + ]; + }; + }; + }; }