acr-cli: init at 0.14 (#359508)
[NixPkgs.git] / pkgs / by-name / op / openvpn3 / package.nix
blobb1c18f5fe011a4b40a3f27c0af9e941baa716aee
2   lib,
3   stdenv,
4   fetchFromGitHub,
5   asio,
6   glib,
7   jsoncpp,
8   libcap_ng,
9   libnl,
10   libuuid,
11   lz4,
12   openssl,
13   pkg-config,
14   protobuf,
15   python3,
16   systemd,
17   tinyxml-2,
18   wrapGAppsHook3,
19   gobject-introspection,
20   meson,
21   ninja,
22   gdbuspp,
23   cmake,
24   git,
25   enableSystemdResolved ? true,
28 stdenv.mkDerivation rec {
29   pname = "openvpn3";
30   # also update openvpn3-core
31   version = "23";
33   src = fetchFromGitHub {
34     owner = "OpenVPN";
35     repo = "openvpn3-linux";
36     rev = "refs/tags/v${version}";
37     hash = "sha256-5gkutqyUPZDwRPzSFdUXg2G5mtQKbdhZu8xnNAdXoF0=";
38     # `openvpn3-core` is a submodule.
39     # TODO: make it into a separate package
40     fetchSubmodules = true;
41   };
43   patches = [
44     # Merged in upstream, will land in v24
45     # https://github.com/OpenVPN/openvpn3-linux/commit/75abb7dc9366ba85fb1a144d88f02a1e8a62f538
46     ./0001-build-reduce-hardcode-in-asio_path.patch
47     ./0002-build-allow-installation-directories-customization.patch
48   ];
50   postPatch = ''
51     echo '#define OPENVPN_VERSION "3.git:unknown:unknown"
52     #define PACKAGE_GUIVERSION "v${builtins.replaceStrings [ "_" ] [ ":" ] version}"
53     #define PACKAGE_NAME "openvpn3-linux"
54     ' > ./src/build-version.h
56     patchShebangs \
57       ./scripts \
58       ./src/python/{openvpn2,openvpn3-as,openvpn3-autoload} \
59       ./distro/systemd/openvpn3-systemd \
60       ./src/tests/dbus/netcfg-subscription-test \
61       ./src/shell/bash-completion/gen-openvpn2-completion.py
62   '';
64   pythonPath = python3.withPackages (ps: [
65     ps.dbus-python
66     ps.pygobject3
67     ps.systemd
68   ]);
70   nativeBuildInputs = [
71     meson
72     ninja
73     pkg-config
74     cmake
75     git
77     python3.pkgs.wrapPython
78     python3.pkgs.docutils
79     python3.pkgs.jinja2
80     python3.pkgs.dbus-python
81     wrapGAppsHook3
82     gobject-introspection
83   ];
85   buildInputs = [
86     asio
87     glib
88     jsoncpp
89     libcap_ng
90     libnl
91     libuuid
92     lz4
93     openssl
94     protobuf
95     tinyxml-2
96     gdbuspp
97   ] ++ lib.optionals enableSystemdResolved [ systemd.dev ];
99   mesonFlags = [
100     (lib.mesonOption "selinux" "disabled")
101     (lib.mesonOption "selinux_policy" "disabled")
102     (lib.mesonOption "bash-completion" "enabled")
103     (lib.mesonOption "test_programs" "disabled")
104     (lib.mesonOption "unit_tests" "disabled")
105     (lib.mesonOption "asio_path" "${asio}")
106     (lib.mesonOption "dbus_policy_dir" "${placeholder "out"}/share/dbus-1/system.d")
107     (lib.mesonOption "dbus_system_service_dir" "${placeholder "out"}/share/dbus-1/system-services")
108     (lib.mesonOption "systemd_system_unit_dir" "${placeholder "out"}/lib/systemd/system")
109     (lib.mesonOption "create_statedir" "disabled")
110     (lib.mesonOption "sharedstatedir" "/etc")
111   ];
113   dontWrapGApps = true;
114   preFixup = ''
115     makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
116   '';
117   postFixup = ''
118     wrapPythonPrograms
119     wrapPythonProgramsIn "$out/libexec/openvpn3-linux" "$out ${pythonPath}"
120   '';
122   NIX_LDFLAGS = "-lpthread";
124   meta = {
125     description = "OpenVPN 3 Linux client";
126     license = lib.licenses.agpl3Plus;
127     homepage = "https://github.com/OpenVPN/openvpn3-linux/";
128     changelog = "https://github.com/OpenVPN/openvpn3-linux/releases/tag/v${version}";
129     maintainers = with lib.maintainers; [
130       shamilton
131       progrm_jarvis
132     ];
133     platforms = lib.platforms.linux;
134   };