2023-12-01 08:42:03 +04:00
|
|
|
{ config, lib, ... }:
|
|
|
|
let
|
|
|
|
domain = config.selfprivacy.domain;
|
2023-12-22 19:57:48 +04:00
|
|
|
cert = "${config.security.acme.certs.${domain}.directory}/fullchain.pem";
|
|
|
|
key = "${config.security.acme.certs.${domain}.directory}/key.pem";
|
2024-02-15 13:56:12 +04:00
|
|
|
cfg = config.selfprivacy.modules.ocserv;
|
2023-12-01 08:42:03 +04:00
|
|
|
in
|
|
|
|
{
|
|
|
|
options.selfprivacy.modules.ocserv = {
|
2025-06-18 19:53:44 +03:00
|
|
|
enable =
|
|
|
|
(lib.mkOption {
|
|
|
|
default = false;
|
|
|
|
type = lib.types.bool;
|
|
|
|
description = "Enable";
|
|
|
|
})
|
|
|
|
// {
|
|
|
|
meta = {
|
|
|
|
type = "enable";
|
|
|
|
};
|
2024-12-18 15:40:15 +03:00
|
|
|
};
|
2023-12-01 08:42:03 +04:00
|
|
|
};
|
|
|
|
|
2024-02-15 13:56:12 +04:00
|
|
|
config = lib.mkIf cfg.enable {
|
2023-12-01 08:42:03 +04:00
|
|
|
users.groups.ocserv.members = [ "ocserv" ];
|
|
|
|
users.users.ocserv = {
|
|
|
|
isNormalUser = false;
|
|
|
|
isSystemUser = true;
|
|
|
|
extraGroups = [ "acmereceivers" ];
|
|
|
|
group = "ocserv";
|
|
|
|
};
|
|
|
|
services.ocserv = {
|
|
|
|
enable = true;
|
|
|
|
config = ''
|
|
|
|
socket-file = /var/run/ocserv-socket
|
|
|
|
|
|
|
|
auth = "pam"
|
|
|
|
|
|
|
|
tcp-port = 8443
|
|
|
|
udp-port = 8443
|
|
|
|
|
2023-12-22 19:57:48 +04:00
|
|
|
server-cert = ${cert}
|
|
|
|
server-key = ${key}
|
2023-12-01 08:42:03 +04:00
|
|
|
|
|
|
|
compression = true
|
|
|
|
|
|
|
|
max-clients = 0
|
|
|
|
max-same-clients = 6
|
|
|
|
|
|
|
|
try-mtu-discovery = true
|
|
|
|
|
|
|
|
idle-timeout=1200
|
|
|
|
mobile-idle-timeout=2400
|
|
|
|
|
2025-03-28 17:19:36 +03:00
|
|
|
default-domain = ${domain}
|
2023-12-01 08:42:03 +04:00
|
|
|
|
|
|
|
device = vpn0
|
|
|
|
|
|
|
|
ipv4-network = 10.10.10.0
|
|
|
|
ipv4-netmask = 255.255.255.0
|
|
|
|
|
|
|
|
tunnel-all-dns = true
|
|
|
|
dns = 1.1.1.1
|
|
|
|
dns = 1.0.0.1
|
|
|
|
|
|
|
|
route = default
|
|
|
|
'';
|
|
|
|
};
|
2024-07-30 19:19:06 +03:00
|
|
|
systemd = {
|
|
|
|
services = {
|
|
|
|
ocserv = {
|
2025-06-18 19:53:44 +03:00
|
|
|
unitConfig.ConditionPathExists = [
|
|
|
|
cert
|
|
|
|
key
|
|
|
|
];
|
2024-07-30 19:19:06 +03:00
|
|
|
serviceConfig.Slice = "ocserv.slice";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
slices.ocserv = {
|
|
|
|
description = "ocserv service slice";
|
|
|
|
};
|
|
|
|
};
|
2023-12-01 08:42:03 +04:00
|
|
|
};
|
|
|
|
}
|