{ pkgs, lib, config, download, ... }: { imports = [ ./base.nix ]; options.my.units = { download.enable = lib.mkEnableOption "enable"; downloadManga.enable = lib.mkEnableOption "enable"; }; config = { home-manager.users.jawz = { xdg.configFile."gallery-dl/config.json".source = ../dotfiles/gallery-dl/config.json; services.lorri.enable = true; programs.bash = { shellAliases = { dl = "download -u jawz -i"; comic = ''dl "$(cat "$LC" | fzf --multi --exact -i)"''; gallery = ''dl "$(cat "$LW" | fzf --multi --exact -i)"''; }; initExtra = '' 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 download ]; 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/'' ); "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 "*-*-* 08:12: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 "Mon,Fri *-*-* 03:08:00" 30 // { } ); # "download@kemono" = downloadTimer # "*-*-1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31 18:06:00" 60 // { }; 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; }; }; }