summary refs log tree commit diff
path: root/nixos/modules/programs
diff options
context:
space:
mode:
authorNick Cao <nickcao@nichi.co>2023-04-15 22:00:55 +0800
committerGitHub <noreply@github.com>2023-04-15 22:00:55 +0800
commit7a2fcddf525081c6d3f4cfeb8c466c88409cc1dc (patch)
treeb645e18f0c4d0e3d025e0d1bf2843d597fe0bed2 /nixos/modules/programs
parentcb5037e55476c5fb3b9ee5f6c28da535cc390824 (diff)
parent907bd4927b7f11d715249729ea055dd64eb60f91 (diff)
downloadnixpkgs-7a2fcddf525081c6d3f4cfeb8c466c88409cc1dc.tar
nixpkgs-7a2fcddf525081c6d3f4cfeb8c466c88409cc1dc.tar.gz
nixpkgs-7a2fcddf525081c6d3f4cfeb8c466c88409cc1dc.tar.bz2
nixpkgs-7a2fcddf525081c6d3f4cfeb8c466c88409cc1dc.tar.lz
nixpkgs-7a2fcddf525081c6d3f4cfeb8c466c88409cc1dc.tar.xz
nixpkgs-7a2fcddf525081c6d3f4cfeb8c466c88409cc1dc.tar.zst
nixpkgs-7a2fcddf525081c6d3f4cfeb8c466c88409cc1dc.zip
Merge pull request #223730 from zendo/clash-verge-module
nixos/clash-verge: init module
Diffstat (limited to 'nixos/modules/programs')
-rw-r--r--nixos/modules/programs/clash-verge.nix41
1 files changed, 41 insertions, 0 deletions
diff --git a/nixos/modules/programs/clash-verge.nix b/nixos/modules/programs/clash-verge.nix
new file mode 100644
index 00000000000..29977be3858
--- /dev/null
+++ b/nixos/modules/programs/clash-verge.nix
@@ -0,0 +1,41 @@
+{ 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 ];
+}