1{ config, lib, pkgs, ... }:
2
3{
4 options.programs.clash-verge = {
5 enable = lib.mkEnableOption "Clash Verge";
6 package = lib.mkPackageOption pkgs "clash-verge" {};
7 autoStart = lib.mkEnableOption "Clash Verge auto launch";
8 tunMode = lib.mkEnableOption "Clash Verge TUN mode";
9 };
10
11 config =
12 let
13 cfg = config.programs.clash-verge;
14 in
15 lib.mkIf cfg.enable {
16
17 environment.systemPackages = [
18 cfg.package
19 (lib.mkIf cfg.autoStart (pkgs.makeAutostartItem {
20 name = "clash-verge";
21 package = cfg.package;
22 }))
23 ];
24
25 security.wrappers.clash-verge = lib.mkIf cfg.tunMode {
26 owner = "root";
27 group = "root";
28 capabilities = "cap_net_bind_service,cap_net_admin=+ep";
29 source = "${lib.getExe cfg.package}";
30 };
31 };
32
33 meta.maintainers = with lib.maintainers; [ zendo ];
34}