nix-configs

Personal NixOS and home-manager configuration files
Log | Files | Refs

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 }