diff --git a/home/scripts/default.nix b/home/scripts/default.nix index f8b36f7..c7d4e35 100644 --- a/home/scripts/default.nix +++ b/home/scripts/default.nix @@ -11,5 +11,6 @@ ./nerdfont-fzf ./notification ./system + ./openvpn ]; } diff --git a/home/scripts/openvpn/default.nix b/home/scripts/openvpn/default.nix new file mode 100644 index 0000000..5e75740 --- /dev/null +++ b/home/scripts/openvpn/default.nix @@ -0,0 +1,37 @@ +# - ## OpenVPN +#- +#- OpenVPN allows you to connect/disconnect quickly to a openVPN server +#- +#- - `openvpn-up` turn on the vpn +#- - `openvpn-down` turn down the vpn +#- - `openvpn-toggle` toggle the vpn +{ pkgs, ... }: +let + id = "home"; # ID of the connection + password-file = "/home/hadi/.config/vpn-password"; + + openvpn-up = pkgs.writeShellScriptBin "openvpn-up" + # bash + '' + nmcli con up id ${id} passwd-file ${password-file} + notif "VPN" "VPN activated" "The OpenVPN connection to ${id} has been activated" + ''; + + openvpn-down = pkgs.writeShellScriptBin "openvpn-down" + # bash + '' + nmcli con down id ${id} + notif "VPN" "VPN deactivated" "The OpenVPN connection to ${id} has been deactivated" + ''; + + openvpn-toggle = pkgs.writeShellScriptBin "openvpn-toggle" + # bash + '' + if nmcli connection show --active | grep -q "${id}"; then + openvpn-down + else + openvpn-up + fi + ''; + +in { home.packages = [ openvpn-up openvpn-down openvpn-toggle ]; } diff --git a/home/scripts/system/default.nix b/home/scripts/system/default.nix index 7474689..a1f5f76 100644 --- a/home/scripts/system/default.nix +++ b/home/scripts/system/default.nix @@ -76,6 +76,7 @@ let "󰖔 Night-shift" " Nixy" "󰈊 Hyprpicker" + "󰖂 Toggle VPN" ) selected=$(printf '%s\n' "''${options[@]}" | wofi -p " Quickmenu" --dmenu) @@ -95,6 +96,9 @@ let "Hyprpicker") sleep 0.2 && ${pkgs.hyprpicker}/bin/hyprpicker -a ;; + "Toggle VPN") + openvpn-toggle + ;; esac fi '';