amnezia-vpn: fix openvpn; refactor install and fixup

sund3RRR b4fc0f82 dc52ceb7

Changed files
+33 -27
nixos
modules
programs
pkgs
by-name
am
amnezia-vpn
+12 -4
nixos/modules/programs/amnezia-vpn.nix
···
{
options.programs.amnezia-vpn = {
enable = lib.mkEnableOption "The AmneziaVPN client";
};
config = lib.mkIf cfg.enable {
-
environment.systemPackages = [ pkgs.amnezia-vpn ];
-
services.dbus.packages = [ pkgs.amnezia-vpn ];
services.resolved.enable = true;
systemd = {
-
packages = [ pkgs.amnezia-vpn ];
-
services."AmneziaVPN".wantedBy = [ "multi-user.target" ];
};
};
···
{
options.programs.amnezia-vpn = {
enable = lib.mkEnableOption "The AmneziaVPN client";
+
package = lib.mkPackageOption pkgs "amnezia-vpn" { };
};
config = lib.mkIf cfg.enable {
+
environment.systemPackages = [ cfg.package ];
+
services.dbus.packages = [ cfg.package ];
services.resolved.enable = true;
systemd = {
+
packages = [ cfg.package ];
+
services."AmneziaVPN" = {
+
wantedBy = [ "multi-user.target" ];
+
path = with pkgs; [
+
procps
+
iproute2
+
sudo
+
];
+
};
};
};
+21 -23
pkgs/by-name/am/amnezia-vpn/package.nix
···
shadowsocks-rust,
cloak-pt,
wireguard-tools,
-
procps,
-
iproute2,
-
sudo,
libssh,
zlib,
tun2socks,
xray,
nix-update-script,
}:
let
amnezia-tun2socks = tun2socks.overrideAttrs (
···
substituteInPlace client/configurators/openvpn_configurator.cpp \
--replace-fail ".arg(qApp->applicationDirPath());" ".arg(\"$out/libexec\");"
substituteInPlace client/ui/qautostart.cpp \
-
--replace-fail "/usr/share/pixmaps/AmneziaVPN.png" "$out/share/pixmaps/AmneziaVPN.png"
substituteInPlace deploy/installer/config/AmneziaVPN.desktop.in \
--replace-fail "/usr/share/pixmaps/AmneziaVPN.png" "$out/share/pixmaps/AmneziaVPN.png"
substituteInPlace deploy/data/linux/AmneziaVPN.service \
···
];
buildInputs = [
libsecret
qt6.qtbase
qt6.qttools
-
kdePackages.qtremoteobjects
-
kdePackages.qtsvg
-
kdePackages.qt5compat
];
-
qtWrapperArgs = [
-
''--prefix PATH : ${
-
lib.makeBinPath [
-
procps
-
iproute2
-
sudo
-
]
-
}''
-
];
-
postInstall = ''
mkdir -p $out/bin $out/libexec $out/share/applications $out/share/pixmaps $out/lib/systemd/system
-
cp client/AmneziaVPN service/server/AmneziaVPN-service $out/bin/
-
cp ../deploy/data/linux/client/bin/update-resolv-conf.sh $out/libexec/
-
cp ../AppDir/AmneziaVPN.desktop $out/share/applications/
-
cp ../deploy/data/linux/AmneziaVPN.png $out/share/pixmaps/
-
cp ../deploy/data/linux/AmneziaVPN.service $out/lib/systemd/system/
'';
passthru = {
···
meta = with lib; {
description = "Amnezia VPN Client";
downloadPage = "https://amnezia.org/en/downloads";
-
homepage = "https://amnezia.org/en";
license = licenses.gpl3;
mainProgram = "AmneziaVPN";
maintainers = with maintainers; [ sund3RRR ];
···
shadowsocks-rust,
cloak-pt,
wireguard-tools,
libssh,
zlib,
tun2socks,
xray,
nix-update-script,
+
bash,
}:
let
amnezia-tun2socks = tun2socks.overrideAttrs (
···
substituteInPlace client/configurators/openvpn_configurator.cpp \
--replace-fail ".arg(qApp->applicationDirPath());" ".arg(\"$out/libexec\");"
substituteInPlace client/ui/qautostart.cpp \
+
--replace-fail "/usr/share/pixmaps/AmneziaVPN.png" "AmneziaVPN"
substituteInPlace deploy/installer/config/AmneziaVPN.desktop.in \
--replace-fail "/usr/share/pixmaps/AmneziaVPN.png" "$out/share/pixmaps/AmneziaVPN.png"
substituteInPlace deploy/data/linux/AmneziaVPN.service \
···
];
buildInputs = [
+
bash
+
kdePackages.qt5compat
+
kdePackages.qtremoteobjects
+
kdePackages.qtsvg
libsecret
qt6.qtbase
qt6.qttools
];
+
installPhase = ''
+
runHook preInstall
mkdir -p $out/bin $out/libexec $out/share/applications $out/share/pixmaps $out/lib/systemd/system
+
install -m555 client/AmneziaVPN service/server/AmneziaVPN-service $out/bin/
+
install -m555 ../deploy/data/linux/client/bin/update-resolv-conf.sh $out/libexec/
+
install -m444 ../AppDir/AmneziaVPN.desktop $out/share/applications/
+
install -m444 ../deploy/data/linux/AmneziaVPN.png $out/share/pixmaps/
+
install -m444 ../deploy/data/linux/AmneziaVPN.service $out/lib/systemd/system/
+
+
runHook postInstall
+
'';
+
+
postFixup = ''
+
# Temporary unwrap non-binary executable until qt6.wrapQtAppsHook is fixed
+
mv $out/libexec/.update-resolv-conf.sh-wrapped $out/libexec/update-resolv-conf.sh
'';
passthru = {
···
meta = with lib; {
description = "Amnezia VPN Client";
downloadPage = "https://amnezia.org/en/downloads";
+
homepage = "https://github.com/amnezia-vpn/amnezia-client";
license = licenses.gpl3;
mainProgram = "AmneziaVPN";
maintainers = with maintainers; [ sund3RRR ];