From 50a1d7924b6b6cc299d7c04618339f263af7d49d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Pluta?= Date: Tue, 21 Jan 2025 11:33:30 +0100 Subject: [PATCH] Fix module --- flake.nix | 12 ++++++++---- module.nix | 50 ++++++++++++++++++++++++++++++++++---------------- 2 files changed, 42 insertions(+), 20 deletions(-) diff --git a/flake.nix b/flake.nix index a766c10..53fd90a 100644 --- a/flake.nix +++ b/flake.nix @@ -13,13 +13,17 @@ flake-utils, }: flake-utils.lib.eachDefaultSystem (system: let - pkgs = nixpkgs.legacyPackages.${system}; + pkgs = import nixpkgs {inherit system;}; in { packages = rec { tauron-scrapper = pkgs.callPackage ./package.nix {}; default = tauron-scrapper; }; - - nixosModules.tauron-scrapper = pkgs.callPackage ./module.nix {inherit self;}; - }); + }) + // { + nixosModules = rec { + tauron-scrapper = import ./module.nix self; + default = tauron-scrapper; + }; + }; } diff --git a/module.nix b/module.nix index 981cade..70c6294 100644 --- a/module.nix +++ b/module.nix @@ -1,23 +1,42 @@ -{ +self: { config, - coreutils-full, - formats, + pkgs, system, - utils, lib, - self, ... }: with lib; let - inherit (utils.systemdUtils.unitOptions) unitOption; + inherit (pkgs) coreutils-full formats; cfg = config.services.tauron-scrapper; yamlConfig = (formats.yaml {}).generate "tauron-scrapper-config.yaml" cfg.config; + app = pkgs.writeShellApplication { + name = "tauron-scrapper"; + runtimeInputs = [self.packages.${system}.tauron-scrapper]; + text = '' + tauron-scrapper -c "${yamlConfig}" "$@"; + ''; + }; in { options.services.tauron-scrapper = { enable = mkEnableOption "tauron-scrapper"; + cliArgs = mkOption { + type = types.listOf types.str; + description = "List of CLI arguments. Do not put '-c' argument here as it will be automatically appended basing on the 'config' option."; + + example = [ + ''--date "$(date -d '5 days ago' '+%Y-%m-%d')"'' + ''--to "$(date -d 'yesterday' '+%Y-%m-%d')"'' + ]; + + default = [ + ''--date "$(date -d '5 days ago' '+%Y-%m-%d')"'' + ''--to "$(date -d 'yesterday' '+%Y-%m-%d')"'' + ]; + }; + config = mkOption { - type = types.attr; + type = types.attrs; description = "The configuration of tauron-scrapper command"; example = { timezone = "Europe/Warsaw"; @@ -26,6 +45,7 @@ in { username = "$_file:/run/tauron.username.key"; password = "$_file:/run/tauron.password.key"; point = "123456"; + cookiesJarPath = "/tmp/tauron-scrapper.cookies.json"; }; consumers = { @@ -54,12 +74,7 @@ in { }; timerConfig = mkOption { - type = types.nullOr (types.attrsOf unitOption); - - default = { - OnCalendar = "*-*-* 03:00"; - Persistent = true; - }; + type = types.attrs; description = lib.mdDoc '' When to run the scrapping. See {manpage}`systemd.timer(5)` for @@ -68,13 +83,16 @@ in { ''; example = { - OnCalendar = "00:05"; + OnCalendar = "*-*-* 15:15"; + RandomizedDelaySec = "2h"; Persistent = true; }; }; }; config = mkIf cfg.enable { + environment.systemPackages = [app]; + systemd.timers.tauron-scrapper = { description = "Tauron Scapper"; wantedBy = ["timers.target"]; @@ -90,10 +108,10 @@ in { description = "Tauron Scrapper"; serviceConfig.Type = "oneshot"; - path = [self.packages.${system}.tauron-scrapper coreutils-full]; + path = [app coreutils-full]; script = '' - tauron-scrapper -c ${yamlConfig} -d "$(date -d "yesterday" '+%Y-%m-%d')" + tauron-scrapper ${lib.concatStringsSep " " cfg.cliArgs}; ''; }; };