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