1{ config, lib, pkgs, ... }:
2
3with lib;
4
5let
6 cfg = config.programs.openvpn3;
7in
8{
9 options.programs.openvpn3 = {
10 enable = mkEnableOption (lib.mdDoc "the openvpn3 client");
11 package = mkOption {
12 type = types.package;
13 default = pkgs.openvpn3.override {
14 enableSystemdResolved = config.services.resolved.enable;
15 };
16 defaultText = literalExpression ''pkgs.openvpn3.override {
17 enableSystemdResolved = config.services.resolved.enable;
18 }'';
19 description = lib.mdDoc ''
20 Which package to use for `openvpn3`.
21 '';
22 };
23 };
24
25 config = mkIf cfg.enable {
26 services.dbus.packages = [
27 cfg.package
28 ];
29
30 users.users.openvpn = {
31 isSystemUser = true;
32 uid = config.ids.uids.openvpn;
33 group = "openvpn";
34 };
35
36 users.groups.openvpn = {
37 gid = config.ids.gids.openvpn;
38 };
39
40 environment.systemPackages = [
41 cfg.package
42 ];
43 };
44
45}