main
  1{
  2  den.aspects.services.mihomo.proxy-groups = {
  3    nixos = {
  4      services.mihomo = {
  5        config = {
  6          proxy-groups = let
  7            nonsenseKeywords = "||||||||||||||";
  8
  9            filterHK = "^(?=.*((?i)🇭🇰||\\b(HK|Hong)(\\d+)?\\b))(?!.*((?i)${nonsenseKeywords})).*$";
 10            filterTW = "^(?=.*((?i)🇹🇼||\\b(TW|Tai|Taiwan)(\\d+)?\\b))(?!.*((?i)${nonsenseKeywords})).*$";
 11            filterJP = "^(?=.*((?i)🇯🇵|||||||\\b(JP|Japan)(\\d+)?\\b))(?!.*((?i)${nonsenseKeywords})).*$";
 12            filterKR = "^(?=.*((?i)🇰🇷||||\\b(KR|Korea)(\\d+)?\\b))(?!.*((?i)${nonsenseKeywords})).*$";
 13            filterSG = "^(?=.*((?i)🇸🇬|||\\b(SG|Singapore)(\\d+)?\\b))(?!.*((?i)${nonsenseKeywords})).*$";
 14            filterUS = "^(?=.*((?i)🇺🇸||||||||||||西||\\b(US|United States)(\\d+)?\\b))(?!.*((?i)${nonsenseKeywords})).*$";
 15            filterUK = "^(?=.*((?i)🇬🇧|||\\b(UK|United Kingdom)(\\d+)?\\b))(?!.*((?i)${nonsenseKeywords})).*$";
 16            filterFR = "^(?=.*((?i)🇫🇷||\\b(FR|France)(\\d+)?\\b))(?!.*((?i)${nonsenseKeywords})).*$";
 17            filterDE = "^(?=.*((?i)🇩🇪||\\b(DE|Germany)(\\d+)?\\b))(?!.*((?i)${nonsenseKeywords})).*$";
 18            filterOthers = "^(?!.*(🇭🇰|HK|Hong||🇹🇼|TW|Taiwan|Wan|🇯🇵|JP|Japan||🇸🇬|SG|Singapore||🇺🇸|US|United States|America||🇩🇪|DE|Germany||🇬🇧|UK|United Kingdom||🇰🇷|KR|Korea|||🇫🇷|FR|France|)).*$";
 19            filterAll = "^(?=.*(.))(?!.*((?i)|||||||||||||||||||||||||||||||使|||访|||||||(\\b(USE|USED|TOTAL|EXPIRE|EMAIL|Panel|Channel|Author)\\b|(\\d{4}-\\d{2}-\\d{2}|\\d+G)))).*$";
 20
 21            select = {
 22              type = "select";
 23              url = "https://connectivitycheck.platform.hicloud.com/generate_204";
 24              disable-udp = false;
 25              hidden = false;
 26              include-all = true;
 27            };
 28            urlTest = {
 29              type = "url-test";
 30              url = "https://connectivitycheck.platform.hicloud.com/generate_204";
 31              interval = 300;
 32              tolerance = 50;
 33              disable-udp = false;
 34              hidden = true;
 35              include-all = true;
 36            };
 37
 38            regions = {
 39              HK = {
 40                flag = "🇭🇰";
 41                filter = filterHK;
 42              };
 43              TW = {
 44                flag = "🇹🇼";
 45                filter = filterTW;
 46              };
 47              JP = {
 48                flag = "🇯🇵";
 49                filter = filterJP;
 50              };
 51              KR = {
 52                flag = "🇰🇷";
 53                filter = filterKR;
 54              };
 55              SG = {
 56                flag = "🇸🇬";
 57                filter = filterSG;
 58              };
 59              US = {
 60                flag = "🇺🇸";
 61                filter = filterUS;
 62              };
 63              UK = {
 64                flag = "🇬🇧";
 65                filter = filterUK;
 66              };
 67              FR = {
 68                flag = "🇫🇷";
 69                filter = filterFR;
 70              };
 71              DE = {
 72                flag = "🇩🇪";
 73                filter = filterDE;
 74              };
 75            };
 76          in
 77            [
 78              {
 79                name = "SELECT";
 80                type = "select";
 81                proxies = ["AUTO" "MANUAL" "DIRECT"];
 82                url = "http://connectivitycheck.platform.hicloud.com/generate_204";
 83                icon = "https://raw.githubusercontent.com/Orz-3/mini/master/Color/Static.png";
 84              }
 85              {
 86                name = "MANUAL";
 87                type = "select";
 88                proxies = ["Others - MANUAL"] ++ (map (x: "${regions.${x}.flag} - MANUAL") (builtins.attrNames regions));
 89                url = "http://connectivitycheck.platform.hicloud.com/generate_204";
 90                icon = "https://raw.githubusercontent.com/Orz-3/mini/master/Color/Cylink.png";
 91              }
 92              {
 93                name = "AUTO";
 94                type = "select";
 95                proxies = map (x: "${regions.${x}.flag} - AUTO") (builtins.attrNames regions);
 96                url = "http://connectivitycheck.platform.hicloud.com/generate_204";
 97                icon = "https://raw.githubusercontent.com/Orz-3/mini/master/Color/Urltest.png";
 98              }
 99            ]
100            ++ (map (x:
101              urlTest
102              // {
103                name = "${regions.${x}.flag} - AUTO";
104                filter = regions.${x}.filter;
105              }) (builtins.attrNames regions))
106            ++ (map (x:
107              select
108              // {
109                name = "${regions.${x}.flag} - MANUAL";
110                filter = regions.${x}.filter;
111              }) (builtins.attrNames regions))
112            ++ [
113              (select
114                // {
115                  name = "Others - MANUAL";
116                  filter = filterOthers;
117                })
118              (urlTest
119                // {
120                  name = "AllIn - AUTO";
121                  filter = filterAll;
122                })
123              (select
124                // {
125                  name = "AllIn - MANUAL";
126                  filter = filterAll;
127                })
128            ];
129        };
130      };
131    };
132  };
133}