{ inputs, pkgs, lib, config, ... }: { imports = [ ../factories/mkscript.nix ]; options.my.units = { download.enable = lib.mkEnableOption "media download automation scripts"; downloadManga.enable = lib.mkEnableOption "manga download automation"; }; config = let inherit (inputs.jawz-scripts.packages.x86_64-linux) download; in { home-manager.users.jawz.programs.${config.my.shell.type} = { shellAliases = inputs.self.lib.mergeAliases inputs.self.lib.commonAliases { dl = "${download}/bin/download -u jawz -i"; comic = ''dl "$(cat "$LC" | fzf --multi --exact -i)"''; gallery = ''dl "$(cat "$LW" | fzf --multi --exact -i)"''; }; } // inputs.self.lib.shellConditional config.my.shell.type '' list_root=$XDG_CONFIG_HOME/jawz/lists/jawz export LW=$list_root/watch.txt export LI=$list_root/instant.txt export LC=$list_root/comic.txt '' '' list_root=$XDG_CONFIG_HOME/jawz/lists/jawz export LW=$list_root/watch.txt export LI=$list_root/instant.txt export LC=$list_root/comic.txt ''; systemd.user = { services = let mkDownloadService = desc: execStartCmd: { restartIfChanged = true; description = "Downloads ${desc}"; wantedBy = [ "default.target" ]; path = [ pkgs.bash ]; serviceConfig = { TimeoutStartSec = 2000; TimeoutStopSec = 2000; Restart = "on-failure"; RestartSec = 30; ExecStart = "${download}/bin/download ${execStartCmd}"; }; }; in { tuhmayto = lib.mkIf config.my.units.download.enable ( mkDownloadService "tuhmayto stuff" '' -u jawz -i https://x.com/tuhmayto/media \ https://www.furaffinity.net/user/tuhmayto/ \ https://bsky.app/profile/tumayto.bsky.social'' ); "download@" = lib.mkIf (config.my.units.download.enable || config.my.units.downloadManga.enable) ( mkDownloadService "post from multiple sources" "%I" ); "instagram@" = lib.mkIf config.my.units.download.enable ( mkDownloadService "post types from instagram" "instagram -u jawz -t %I" ); }; timers = let downloadTimer = time: delay: { enable = true; description = "Downloads post types from different sites"; wantedBy = [ "timers.target" ]; timerConfig = { OnCalendar = time; RandomizedDelaySec = delay; Persistent = true; }; }; in { # "instagram@stories" = lib.mkIf config.my.units.download.enable ( # downloadTimer "*-*-* 12:34:00" 120 // { } # ); "download@main" = lib.mkIf config.my.units.download.enable ( downloadTimer "*-*-* 06,18:02:00" 30 // { } ); "download@push" = lib.mkIf config.my.units.download.enable (downloadTimer "*:0/5" 30 // { }); "download@manga" = lib.mkIf config.my.units.downloadManga.enable ( downloadTimer "*-*-* 03:08:00" 30 // { } ); tuhmayto = lib.mkIf config.my.units.download.enable { enable = true; description = "Downloads tuhmayto stuff"; wantedBy = [ "timers.target" ]; timerConfig = { OnCalendar = "*:0/10"; }; }; }; }; my.scripts.download = { enable = lib.mkDefault false; install = true; service = false; name = "download"; package = download; }; }; }