From a8822d758117e86d368846206c97e88efab13568 Mon Sep 17 00:00:00 2001 From: Alexander Khodyrev Date: Thu, 12 Sep 2024 20:39:17 +0300 Subject: [PATCH] module v2 --- module.nix | 95 +++++++++++++++++++++++++++--------------------------- 1 file changed, 48 insertions(+), 47 deletions(-) diff --git a/module.nix b/module.nix index 5cbd33c..d933e4b 100644 --- a/module.nix +++ b/module.nix @@ -7,58 +7,59 @@ let package = inputs.self.packages."${system}".birdtown-visit-counter; in { options.services.birdtown-visit-counter = { - enable = mkOption { - type = types.bool; - default = false; - }; - listenPort = mkOption { - type = types.int; - default = 11567; + enable = mkOption { + type = types.bool; + default = false; + }; + listenPort = mkOption { + type = types.int; + default = 11568; + }; + }; + config = mkIf cfg.enable { + users.users.birdtown-visit-counter = { + group = "birdtown-visit-counter"; + home = "/var/lib/birdtown-visit-counter"; + isSystemUser = true; + createHome = true; + }; + users.groups.birdtown-visit-counter = { }; + + systemd.services.birdtown-visit-counter = { + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + ExecStart = + "${package}/bin/birdtown-visit-counter -addr :${cfg.listenPort} -file visits.json"; + User = "birdtown-visit-counter"; + Group = "birdtown-visit-counter"; + WorkingDirectory = "/var/lib/birdtown-visit-counter"; }; }; - config = { - users.users.birdtown-visit-counter = { - group = "birdtown-visit-counter"; - home = "/var/lib/birdtown-visit-counter"; - isSystemUser = true; - createHome = true; - }; - users.groups.birdtown-visit-counter = { }; - systemd.services.birdtown-visit-counter = { - after = [ "network.target" ]; - wantedBy = [ "multi-user.target" ]; - serviceConfig = { - ExecStart = "${package}/bin/birdtown-visit-counter -addr :${cfg.listenPort} -file visits.json"; - User = "birdtown-visit-counter"; - Group = "birdtown-visit-counter"; - WorkingDirectory = "/var/lib/birdtown-visit-counter"; - }; + systemd.timers.birdtown-visits-saver = { + wantedBy = [ "timers.target" ]; + timerConfig = { + OnBootSec = "10m"; + OnUnitActiveSec = "10m"; + Unit = "birdtown-visits-saver.service"; }; + }; - systemd.timers.birdtown-visits-saver = { - wantedBy = [ "timers.target" ]; - timerConfig = { - OnBootSec = "10m"; - OnUnitActiveSec = "10m"; - Unit = "birdtown-visits-saver.service"; - }; - }; - - systemd.services.birdtown-visits-saver = { - script = '' - set -eu - if ${pkgs.curl}/bin/curl http://localhost:${cfg.listenPort}/visits > visits-new.json; then - cp visits-new.json "$(date +"%Y-%m-%d-%H-%M").json" - mv visits-new.json visits.json - fi - ''; - serviceConfig = { - Type = "oneshot"; - User = "birdtown-visit-counter"; - Group = "birdtown-visit-counter"; - WorkingDirectory = "/var/lib/birdtown-visit-counter"; - }; + systemd.services.birdtown-visits-saver = { + script = '' + set -eu + if ${pkgs.curl}/bin/curl http://localhost:${cfg.listenPort}/visits > visits-new.json; then + cp visits-new.json "$(date +"%Y-%m-%d-%H-%M").json" + mv visits-new.json visits.json + fi + ''; + serviceConfig = { + Type = "oneshot"; + User = "birdtown-visit-counter"; + Group = "birdtown-visit-counter"; + WorkingDirectory = "/var/lib/birdtown-visit-counter"; }; + }; }; }