summary refs log blame commit diff
path: root/nixos/modules/programs/clash-verge.nix
blob: 57a1c0377edbf25a984c2710546d0e4b410e076f (plain) (tree)
1
2
3
4
5
6
7



                                  


                                                                         

























                                                                
{ config, lib, pkgs, ... }:

{
  options.programs.clash-verge = {
    enable = lib.mkEnableOption (lib.mdDoc "Clash Verge");
    autoStart = lib.mkEnableOption (lib.mdDoc "Clash Verge auto launch");
    tunMode = lib.mkEnableOption (lib.mdDoc "Clash Verge TUN mode");
  };

  config =
    let
      cfg = config.programs.clash-verge;
    in
    lib.mkIf cfg.enable {

      environment.systemPackages = [
        pkgs.clash-verge
        (lib.mkIf cfg.autoStart (pkgs.makeAutostartItem {
          name = "clash-verge";
          package = pkgs.clash-verge;
        }))
      ];

      security.wrappers.clash-verge = lib.mkIf cfg.tunMode {
        owner = "root";
        group = "root";
        capabilities = "cap_net_bind_service,cap_net_admin=+ep";
        source = "${lib.getExe pkgs.clash-verge}";
      };
    };

  meta.maintainers = with lib.maintainers; [ zendo ];
}