1{
2 config,
3 lib,
4 pkgs,
5 ...
6}:
7let
8 cfg = config.services.go-shadowsocks2.server;
9in
10{
11 options.services.go-shadowsocks2.server = {
12 enable = lib.mkEnableOption "go-shadowsocks2 server";
13
14 listenAddress = lib.mkOption {
15 type = lib.types.str;
16 description = "Server listen address or URL";
17 example = "ss://AEAD_CHACHA20_POLY1305:your-password@:8488";
18 };
19 };
20
21 config = lib.mkIf cfg.enable {
22 systemd.services.go-shadowsocks2-server = {
23 description = "go-shadowsocks2 server";
24
25 after = [ "network.target" ];
26 wantedBy = [ "multi-user.target" ];
27
28 serviceConfig = {
29 ExecStart = "${pkgs.go-shadowsocks2}/bin/go-shadowsocks2 -s '${cfg.listenAddress}'";
30 DynamicUser = true;
31 };
32 };
33 };
34}