55 lines
1.5 KiB
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"
|
|
];
|
|
};
|
|
}
|
|
)
|
|
]);
|
|
};
|
|
}
|