nix-config/modules/home-manager/programs/protonvpn.nix

55 lines
1.5 KiB
Nix

{...}: {
flake.homeModules.home-manager-protonvpn = {
lib,
pkgs,
config,
...
}: let
cfg = config.programs.protonvpn-gui;
package =
if builtins.compareVersions pkgs.protonvpn-gui.version cfg.minVersion < 0
then
pkgs.protonvpn-gui.overrideAttrs (old: {
version = cfg.minVersion;
src = pkgs.fetchFromGitHub {
owner = "ProtonVPN";
repo = "proton-vpn-gtk-app";
tag = "v${cfg.minVersion}";
hash = cfg.minVersionHash;
};
})
else pkgs.protonvpn-gui;
in {
options.programs.protonvpn-gui = {
enable = lib.mkEnableOption "enable protonvpn";
minVersion = lib.mkOption {
type = lib.types.str;
default = "4.15.1";
description = "Minimum version of protonvpn-gui to use. If nixpkgs has a lower version, it will be overridden.";
};
minVersionHash = lib.mkOption {
type = lib.types.str;
default = "sha256-mWQW/KR2zQxSMkcu5k79H3TNATmFB6J2vgFhgXNpM2s=";
description = "Source hash for the minimum version override.";
};
};
config = lib.mkIf cfg.enable (lib.mkMerge [
{
home.packages = [
package
];
}
(
lib.mkIf config.impermanence.enable {
home.persistence."${config.impermanence.persistencePath}" = {
directories = [
"${config.xdg.configHome}/protonvpn"
"${config.xdg.configHome}/Proton"
];
};
}
)
]);
};
}