old
  1{config, ...}: let
  2  RuleSet_classical = {
  3    type = "http";
  4    behavior = "classical";
  5    interval = 43200;
  6    format = "text";
  7    proxy = "🎯 ";
  8  };
  9  RuleSet_domain = {
 10    type = "http";
 11    behavior = "domain";
 12    interval = 43200;
 13    format = "text";
 14    proxy = "🎯 ";
 15  };
 16  RuleSet_ipcidr = {
 17    type = "http";
 18    behavior = "ipcidr";
 19    interval = 43200;
 20    format = "text";
 21    proxy = "🎯 ";
 22  };
 23in {
 24  services.mihomo.config = {
 25    rules = [
 26      # 自订类规则
 27      "AND,((DOMAIN-SUFFIX,glacier.mxrouting.net),(DST-PORT,465/993)),DIRECT" # My Domain Email
 28      "AND,((RULE-SET,my_hosts),(NOT,((DST-PORT,80/443)))),DIRECT" # My VPS
 29
 30      # 非 IP 类规则
 31      "RULE-SET,reject_non_ip,REJECT"
 32      "RULE-SET,reject_domainset,REJECT"
 33      "RULE-SET,reject_non_ip_drop,REJECT-DROP"
 34      "RULE-SET,reject_non_ip_no_drop,REJECT"
 35      "RULE-SET,cdn_domainset,🎯 "
 36      "RULE-SET,cdn_non_ip,🎯 "
 37      "RULE-SET,stream_non_ip,🇺🇸 - "
 38      "RULE-SET,telegram_non_ip, "
 39      "RULE-SET,apple_cdn,DIRECT"
 40      "RULE-SET,download_domainset,🎯 "
 41      "RULE-SET,download_non_ip,🎯 "
 42      "RULE-SET,microsoft_cdn_non_ip,DIRECT"
 43      "RULE-SET,apple_cn_non_ip,DIRECT"
 44      "RULE-SET,apple_services,🍎 "
 45      "RULE-SET,microsoft_non_ip, "
 46      "RULE-SET,ai_non_ip,🤖 AIGC"
 47      "RULE-SET,global_non_ip,🎯 "
 48      "RULE-SET,domestic_non_ip,DIRECT"
 49      "RULE-SET,direct_non_ip,DIRECT"
 50      "RULE-SET,lan_non_ip,DIRECT"
 51
 52      # IP 类规则
 53      "RULE-SET,reject_ip,REJECT"
 54      "RULE-SET,telegram_ip, "
 55      "RULE-SET,stream_ip,🇺🇸 - "
 56      "RULE-SET,lan_ip,DIRECT"
 57      "RULE-SET,domestic_ip,DIRECT"
 58      "RULE-SET,china_ip,DIRECT"
 59      "MATCH,🎯 "
 60    ];
 61    rule-providers = {
 62      reject_non_ip_no_drop =
 63        RuleSet_classical
 64        // {
 65          url = "https://ruleset.skk.moe/Clash/non_ip/reject-no-drop.txt";
 66          path = "./rule_set/sukkaw_ruleset/reject_non_ip_no_drop.txt";
 67        };
 68      reject_non_ip_drop =
 69        RuleSet_classical
 70        // {
 71          url = "https://ruleset.skk.moe/Clash/non_ip/reject-drop.txt";
 72          path = "./rule_set/sukkaw_ruleset/reject_non_ip_drop.txt";
 73        };
 74      reject_non_ip =
 75        RuleSet_classical
 76        // {
 77          url = "https://ruleset.skk.moe/Clash/non_ip/reject.txt";
 78          path = "./rule_set/sukkaw_ruleset/reject_non_ip.txt";
 79        };
 80      reject_domainset =
 81        RuleSet_domain
 82        // {
 83          url = "https://ruleset.skk.moe/Clash/domainset/reject.txt";
 84          path = "./rule_set/sukkaw_ruleset/reject_domainset.txt";
 85        };
 86      reject_ip =
 87        RuleSet_classical
 88        // {
 89          url = "https://ruleset.skk.moe/Clash/ip/reject.txt";
 90          path = "./rule_set/sukkaw_ruleset/reject_ip.txt";
 91        };
 92      cdn_domainset =
 93        RuleSet_domain
 94        // {
 95          url = "https://ruleset.skk.moe/Clash/domainset/cdn.txt";
 96          path = "./rule_set/sukkaw_ruleset/cdn_domainset.txt";
 97        };
 98      cdn_non_ip =
 99        RuleSet_domain
100        // {
101          url = "https://ruleset.skk.moe/Clash/non_ip/cdn.txt";
102          path = "./rule_set/sukkaw_ruleset/cdn_non_ip.txt";
103        };
104      stream_non_ip =
105        RuleSet_classical
106        // {
107          url = "https://ruleset.skk.moe/Clash/non_ip/stream.txt";
108          path = "./rule_set/sukkaw_ruleset/stream_non_ip.txt";
109        };
110      stream_ip =
111        RuleSet_classical
112        // {
113          url = "https://ruleset.skk.moe/Clash/ip/stream.txt";
114          path = "./rule_set/sukkaw_ruleset/stream_ip.txt";
115        };
116      ai_non_ip =
117        RuleSet_classical
118        // {
119          url = "https://ruleset.skk.moe/Clash/non_ip/ai.txt";
120          path = "./rule_set/sukkaw_ruleset/ai_non_ip.txt";
121        };
122      telegram_non_ip =
123        RuleSet_classical
124        // {
125          url = "https://ruleset.skk.moe/Clash/non_ip/telegram.txt";
126          path = "./rule_set/sukkaw_ruleset/telegram_non_ip.txt";
127        };
128      telegram_ip =
129        RuleSet_classical
130        // {
131          url = "https://ruleset.skk.moe/Clash/ip/telegram.txt";
132          path = "./rule_set/sukkaw_ruleset/telegram_ip.txt";
133        };
134      apple_cdn =
135        RuleSet_domain
136        // {
137          url = "https://ruleset.skk.moe/Clash/domainset/apple_cdn.txt";
138          path = "./rule_set/sukkaw_ruleset/apple_cdn.txt";
139        };
140      apple_services =
141        RuleSet_classical
142        // {
143          url = "https://ruleset.skk.moe/Clash/non_ip/apple_services.txt";
144          path = "./rule_set/sukkaw_ruleset/apple_services.txt";
145        };
146      apple_cn_non_ip =
147        RuleSet_classical
148        // {
149          url = "https://ruleset.skk.moe/Clash/non_ip/apple_cn.txt";
150          path = "./rule_set/sukkaw_ruleset/apple_cn_non_ip.txt";
151        };
152      microsoft_cdn_non_ip =
153        RuleSet_classical
154        // {
155          url = "https://ruleset.skk.moe/Clash/non_ip/microsoft_cdn.txt";
156          path = "./rule_set/sukkaw_ruleset/microsoft_cdn_non_ip.txt";
157        };
158      microsoft_non_ip =
159        RuleSet_classical
160        // {
161          url = "https://ruleset.skk.moe/Clash/non_ip/microsoft.txt";
162          path = "./rule_set/sukkaw_ruleset/microsoft_non_ip.txt";
163        };
164      download_domainset =
165        RuleSet_domain
166        // {
167          url = "https://ruleset.skk.moe/Clash/domainset/download.txt";
168          path = "./rule_set/sukkaw_ruleset/download_domainset.txt";
169        };
170      download_non_ip =
171        RuleSet_domain
172        // {
173          url = "https://ruleset.skk.moe/Clash/non_ip/download.txt";
174          path = "./rule_set/sukkaw_ruleset/download_non_ip.txt";
175        };
176      lan_non_ip =
177        RuleSet_classical
178        // {
179          url = "https://ruleset.skk.moe/Clash/non_ip/lan.txt";
180          path = "./rule_set/sukkaw_ruleset/lan_non_ip.txt";
181        };
182      lan_ip =
183        RuleSet_classical
184        // {
185          url = "https://ruleset.skk.moe/Clash/ip/lan.txt";
186          path = "./rule_set/sukkaw_ruleset/lan_ip.txt";
187        };
188      domestic_non_ip =
189        RuleSet_classical
190        // {
191          url = "https://ruleset.skk.moe/Clash/non_ip/domestic.txt";
192          path = "./rule_set/sukkaw_ruleset/domestic_non_ip.txt";
193        };
194      direct_non_ip =
195        RuleSet_classical
196        // {
197          url = "https://ruleset.skk.moe/Clash/non_ip/direct.txt";
198          path = "./rule_set/sukkaw_ruleset/direct_non_ip.txt";
199        };
200      global_non_ip =
201        RuleSet_classical
202        // {
203          url = "https://ruleset.skk.moe/Clash/non_ip/global.txt";
204          path = "./rule_set/sukkaw_ruleset/global_non_ip.txt";
205        };
206      domestic_ip =
207        RuleSet_classical
208        // {
209          url = "https://ruleset.skk.moe/Clash/ip/domestic.txt";
210          path = "./rule_set/sukkaw_ruleset/domestic_ip.txt";
211        };
212      china_ip =
213        RuleSet_ipcidr
214        // {
215          url = "https://ruleset.skk.moe/Clash/ip/china_ip.txt";
216          path = "./rule_set/sukkaw_ruleset/china_ip.txt";
217        };
218      my_hosts = {
219        type = "inline";
220        behavior = "classical";
221        payload = [
222          "IP-CIDR,${config.sops.placeholder.pardofelis-ipv4}/32"
223        ];
224      };
225    };
226  };
227}