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.filter = filterHK;
40 TW.filter = filterTW;
41 JP.filter = filterJP;
42 KR.filter = filterKR;
43 SG.filter = filterSG;
44 US.filter = filterUS;
45 UK.filter = filterUK;
46 FR.filter = filterFR;
47 DE.filter = filterDE;
48 };
49 in
50 [
51 {
52 name = "SELECT";
53 type = "select";
54 proxies = ["AUTO" "MANUAL" "DIRECT"];
55 url = "http://connectivitycheck.platform.hicloud.com/generate_204";
56 icon = "https://raw.githubusercontent.com/Orz-3/mini/master/Color/Static.png";
57 }
58 {
59 name = "MANUAL";
60 type = "select";
61 proxies =
62 ["AllIn - MANUAL"]
63 ++ (map (x: "${x} - MANUAL") (builtins.attrNames regions))
64 ++ ["Others - MANUAL"];
65 url = "http://connectivitycheck.platform.hicloud.com/generate_204";
66 icon = "https://raw.githubusercontent.com/Orz-3/mini/master/Color/Cylink.png";
67 }
68 {
69 name = "AUTO";
70 type = "select";
71 proxies = ["AllIn - AUTO"] ++ (map (x: "${x} - AUTO") (builtins.attrNames regions));
72 url = "http://connectivitycheck.platform.hicloud.com/generate_204";
73 icon = "https://raw.githubusercontent.com/Orz-3/mini/master/Color/Urltest.png";
74 }
75 ]
76 ++ (map (x:
77 urlTest
78 // {
79 name = "${x} - AUTO";
80 filter = regions.${x}.filter;
81 }) (builtins.attrNames regions))
82 ++ (map (x:
83 select
84 // {
85 name = "${x} - MANUAL";
86 filter = regions.${x}.filter;
87 }) (builtins.attrNames regions))
88 ++ [
89 (select
90 // {
91 name = "Others - MANUAL";
92 filter = filterOthers;
93 })
94 (urlTest
95 // {
96 name = "AllIn - AUTO";
97 filter = filterAll;
98 })
99 (select
100 // {
101 name = "AllIn - MANUAL";
102 filter = filterAll;
103 })
104 ];
105 };
106 };
107 };
108 };
109}