Commit 907bd492 authored by zendo's avatar zendo
Browse files

nixos/clash-verge: init module

parent 49079a13
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -36,6 +36,8 @@ In addition to numerous new and upgraded packages, this release has the followin

- [cups-pdf-to-pdf](https://github.com/alexivkin/CUPS-PDF-to-PDF), a pdf-generating cups backend based on [cups-pdf](https://www.cups-pdf.de/). Available as [services.printing.cups-pdf](#opt-services.printing.cups-pdf.enable).

- [clash-verge](https://github.com/zzzgydi/clash-verge), A Clash GUI based on tauri. Available as [programs.clash-verge](#opt-programs.clash-verge.enable).

- [Cloudlog](https://www.magicbug.co.uk/cloudlog/), a web-based Amateur Radio logging application. Available as [services.cloudlog](#opt-services.cloudlog.enable).

- [fzf](https://github.com/junegunn/fzf), a command line fuzzyfinder. Available as [programs.fzf](#opt-programs.fzf.fuzzyCompletion).
+1 −0
Original line number Diff line number Diff line
@@ -148,6 +148,7 @@
  ./programs/cdemu.nix
  ./programs/cfs-zen-tweaks.nix
  ./programs/chromium.nix
  ./programs/clash-verge.nix
  ./programs/cnping.nix
  ./programs/command-not-found/command-not-found.nix
  ./programs/criu.nix
+41 −0
Original line number Diff line number Diff line
{ 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 ];
}