aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArpit Chakladar <arpitchakladar@proton.me>2026-04-13 15:50:39 +0530
committerArpit Chakladar <arpitchakladar@proton.me>2026-04-13 15:50:39 +0530
commite871cd49cca8843b1408be2e7999dba44a370eaf (patch)
tree10d48f797141dbc9e1f8fefba48cedb8fdee6aeb
parent93f59b9fffd4cdd7b29813b6eb06f4d1e6475156 (diff)
downloadhome-manager-config-e871cd49cca8843b1408be2e7999dba44a370eaf.tar.gz
home-manager-config-e871cd49cca8843b1408be2e7999dba44a370eaf.zip
added convenience script to connect to a vpn server with openvpn
-rw-r--r--modules/scripts/default.nix57
-rw-r--r--modules/scripts/vpn-connect.sh20
2 files changed, 50 insertions, 27 deletions
diff --git a/modules/scripts/default.nix b/modules/scripts/default.nix
index 3fea3df..68b4000 100644
--- a/modules/scripts/default.nix
+++ b/modules/scripts/default.nix
@@ -1,39 +1,42 @@
{
config,
lib,
+ pkgs,
...
}:
# Scripts - Home directory shell scripts (deep-clean, screen-recording, system-monitor)
+let
+ mkScript =
+ name: path:
+ pkgs.writeShellScriptBin name ''
+ #!${
+ if config.tools.zsh.enable then (lib.getExe config.programs.zsh.package) else "#!/usr/bin/env sh"
+ }
+ ${builtins.readFile path}
+ '';
+in
{
config = {
- home.sessionPath = [
- "${config.home.homeDirectory}/scripts"
- ];
+ home.packages = [
+ # Always included
+ (mkScript "deep-clean" ./deep-clean.sh)
+
+ # Conditional scripts (requies some tools)
+ (lib.mkIf (config.tools.ffmpeg.enable && config.tools.slop.enable) (
+ mkScript "screen-recording" ./screen-recording.sh
+ ))
- home.file =
- let
- shellScript = path: {
- text = ''
- #!${
- if config.tools.zsh.enable then (lib.getExe config.programs.zsh.package) else "#!/usr/bin/env sh"
- }
- ${builtins.readFile path}
- '';
- executable = true;
- };
- in
- {
- "scripts/deep-clean" = shellScript ./deep-clean.sh;
- "scripts/screen-recording" = lib.mkIf (config.tools.ffmpeg.enable && config.tools.slop.enable) (
- shellScript ./screen-recording.sh
- );
- "scripts/system-monitor" = lib.mkIf (
- config.tools.bottom.enable
- && config.tools.nvtop.enable
- && config.tools.tmux.enable
- && config.tools.kitty.enable
- ) (shellScript ./system-monitor.sh);
- };
+ (lib.mkIf (
+ config.tools.bottom.enable
+ && config.tools.nvtop.enable
+ && config.tools.tmux.enable
+ && config.tools.kitty.enable
+ ) (mkScript "system-monitor" ./system-monitor.sh))
+
+ (lib.mkIf (config.tools.openvpn.enable && config.tools.fzf.enable) (
+ mkScript "vpn-connect" ./vpn-connect.sh
+ ))
+ ];
};
}
diff --git a/modules/scripts/vpn-connect.sh b/modules/scripts/vpn-connect.sh
new file mode 100644
index 0000000..f325e17
--- /dev/null
+++ b/modules/scripts/vpn-connect.sh
@@ -0,0 +1,20 @@
+# Define directories
+CONF_DIR="$HOME/.config/openvpn"
+CREDS_DIR="$CONF_DIR/credentials"
+SERVERS_DIR="$CONF_DIR/servers"
+
+# Create directories if they don't exist
+mkdir -p "$CREDS_DIR" "$SERVERS_DIR"
+
+# Select the credential file
+CRED=$(find "$CREDS_DIR" -type f | fzf --prompt="Select Credentials > ")
+[ -z "$CRED" ] && exit 1
+
+# Select the VPN server config
+SERVER=$(find "$SERVERS_DIR" -type f \( -name "*.conf" -o -name "*.ovpn" \) | fzf --prompt="Select VPN Server > ")
+[ -z "$SERVER" ] && exit 1
+
+echo "Connecting to $SERVER using $CRED..."
+
+# Execute openvpn
+sudo openvpn --config "$SERVER" --auth-user-pass "$CRED"