magnets.nix (3752B)
1 { pkgs, username, ... }: 2 3 let 4 magnets = pkgs.writeShellScriptBin "magnets" '' 5 # variables 6 working_directory="$HOME/vault/" 7 # trackers 8 trackers_list=( 9 "http://0123456789nonexistent.com:80/announce" 10 "http://bt.okmp3.ru:2710/announce" 11 "http://ipv4.rer.lol:2710/announce" 12 "http://open.trackerlist.xyz:80/announce" 13 "http://shubt.net:2710/announce" 14 "http://taciturn-shadow.spb.ru:6969/announce" 15 "http://torrent.hificode.in:6969/announce" 16 "http://tracker.bt4g.com:2095/announce" 17 "http://tracker.mywaifu.best:6969/announce" 18 "http://tracker.netmap.top:6969/announce" 19 "http://tracker.privateseedbox.xyz:2710/announce" 20 "http://tracker.renfei.net:8080/announce" 21 "https://pybittrack.retiolus.net:443/announce" 22 "https://t.213891.xyz:443/announce" 23 "https://tr.nyacat.pw:443/announce" 24 "https://tracker.aburaya.live:443/announce" 25 "https://tracker.expli.top:443/announce" 26 "https://tracker.ghostchu-services.top:443/announce" 27 "https://tracker.jdx3.org:443/announce" 28 "https://tracker.leechshield.link:443/announce" 29 "https://tracker.moeblog.cn:443/announce" 30 "https://tracker.yemekyedim.com:443/announce" 31 "https://tracker.zhuqiy.top:443/announce" 32 "udp://1c.premierzal.ru:6969/announce" 33 "udp://bandito.byterunner.io:6969/announce" 34 "udp://d40969.acod.regrucolo.ru:6969/announce" 35 "udp://evan.im:6969/announce" 36 "udp://extracker.dahrkael.net:6969/announce" 37 "udp://martin-gebhardt.eu:25/announce" 38 "udp://open.demonii.com:1337/announce" 39 "udp://open.dstud.io:6969/announce" 40 "udp://open.stealth.si:80/announce" 41 "udp://p4p.arenabg.com:1337/announce" 42 "udp://retracker.lanta.me:2710/announce" 43 "udp://retracker01-msk-virt.corbina.net:80/announce" 44 "udp://tracker.bitcoinindia.space:6969/announce" 45 "udp://tracker.dler.com:6969/announce" 46 "udp://tracker.fnix.net:6969/announce" 47 "udp://tracker.gigantino.net:6969/announce" 48 "udp://tracker.gmi.gd:6969/announce" 49 "udp://tracker.hifimarket.in:2710/announce" 50 "udp://tracker.hifitechindia.com:6969/announce" 51 "udp://tracker.kmzs123.cn:17272/announce" 52 "udp://tracker.opentrackr.org:1337/announce" 53 "udp://tracker.plx.im:6969/announce" 54 "udp://tracker.qu.ax:6969/announce" 55 "udp://tracker.rescuecrew7.com:1337/announce" 56 "udp://tracker.skillindia.site:6969/announce" 57 "udp://tracker.srv00.com:6969/announce" 58 "udp://tracker.therarbg.to:6969/announce" 59 "udp://tracker.torrent.eu.org:451/announce" 60 "udp://tracker.torrust-demo.com:6969/announce" 61 "udp://tracker.tryhackx.org:6969/announce" 62 "udp://tracker.tvunderground.org.ru:3218/announce" 63 "udp://tracker.valete.tf:9999/announce" 64 "udp://tracker.yume-hatsuyuki.moe:6969/announce" 65 "udp://tracker-udp.gbitt.info:80/announce" 66 "udp://ttk2.nbaonlineservice.com:6969/announce" 67 "udp://udp.tracker.projectk.org:23333/announce" 68 "udp://www.torrent.eu.org:451/announce" 69 ) 70 for i in "''${trackers_list[@]}"; do trackers="$i,$trackers"; done 71 # process 72 cd "$working_directory" || exit 1 73 # magnet loop 74 for j in *.magnet; do 75 timeout 3m ${pkgs.aria2}/bin/aria2c --bt-tracker="$trackers" --bt-metadata-only=true --bt-save-metadata=true "$(cat "$j")" && rm "$j" 76 # wait for files to be picked up 77 sleep 30s 78 done 79 # removed added files 80 rm -- *.added 81 ''; 82 in { 83 environment.systemPackages = [ magnets ]; 84 85 systemd.timers.magnet-watcher = { 86 wantedBy = [ "timers.target" ]; 87 timerConfig = { 88 OnCalendar = "*:0/10"; 89 Persistent = true; 90 }; 91 }; 92 93 systemd.services.magnet-watcher = { 94 script = "magnets"; 95 path = [ "/run/current-system/sw" ]; 96 serviceConfig = { 97 Type = "oneshot"; 98 User = "${username}"; 99 }; 100 }; 101 }