68 lines
1.7 KiB
Nix
68 lines
1.7 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
with lib;
|
|
let
|
|
common = config.selfhosted.common;
|
|
cfg = config.selfhosted.zapret2;
|
|
in
|
|
{
|
|
options.selfhosted.zapret2 = {
|
|
name = mkOption {
|
|
type = types.str;
|
|
};
|
|
socksPort = mkOption {
|
|
type = types.port;
|
|
};
|
|
ssPort = mkOption {
|
|
type = types.port;
|
|
};
|
|
};
|
|
|
|
config =
|
|
let
|
|
socksPort = "${toString cfg.socksPort}";
|
|
ssPort = "${toString cfg.ssPort}";
|
|
configFiles = import ./config.nix { inherit pkgs; };
|
|
in
|
|
{
|
|
virtualisation.oci-containers.containers.${cfg.name} = {
|
|
image = "vernette/ss-zapret2:latest";
|
|
volumes = [
|
|
"${configFiles.config}:/opt/zapret2/config"
|
|
];
|
|
environment = {
|
|
SOCKS_PORT = socksPort;
|
|
SS_PORT = ssPort;
|
|
SS_PASSWORD = "test";
|
|
SS_ENCRYPT_METHOD = "chacha20-ietf-poly1305";
|
|
SS_TIMEOUT = "300";
|
|
};
|
|
ports = [
|
|
"127.0.0.1:${socksPort}:${socksPort}"
|
|
"127.0.0.1:${ssPort}:${ssPort}"
|
|
];
|
|
extraOptions = [
|
|
"--cap-add=NET_ADMIN"
|
|
"--network=host"
|
|
];
|
|
};
|
|
|
|
systemd.services."${common.backend}-${cfg.name}" = {
|
|
serviceConfig = {
|
|
Restart = lib.mkOverride 90 "always";
|
|
};
|
|
postStart = ''
|
|
mv /opt/zapret2/lua.dist /opt/zapret2/lua || true
|
|
'';
|
|
after = [ "${common.backend}-network-${common.network.name}.service" ];
|
|
requires = [ "${common.backend}-network-${common.network.name}.service" ];
|
|
partOf = [ "${common.backend}-${common.rootTarget.name}.target" ];
|
|
wantedBy = [ "${common.backend}-${common.rootTarget.name}.target" ];
|
|
};
|
|
};
|
|
}
|