{ config, lib, pkgs, ... }: let cfg = config.services.tldr-update; in { meta.maintainers = [ lib.maintainers.perchun ]; options.services.tldr-update = { enable = lib.mkEnableOption '' Automatic updates for the tldr CLI ''; package = lib.mkPackageOption pkgs "tldr" { example = "tlrc"; }; period = lib.mkOption { type = lib.types.str; default = "weekly"; description = '' Systemd timer period to create for scheduled {command}`tldr --update`. The format is described in {manpage}`systemd.time(7)`. ''; }; }; config = lib.mkIf cfg.enable { systemd.user.services.tldr-update = { Unit = { Description = "Update tldr CLI cache"; Documentation = "https://tldr.sh/"; }; Service = { Type = "oneshot"; ExecStart = '' ${lib.getExe cfg.package} --update ''; }; }; systemd.user.timers.tldr-update = { Unit.Description = "Update tldr CLI cache"; Timer = { OnCalendar = cfg.period; Persistent = true; }; Install.WantedBy = [ "timers.target" ]; }; }; }