diff --git a/defaults/user-configuration/fhauser/applications/scripts.nix b/defaults/user-configuration/fhauser/applications/scripts.nix index 3e94af9..0b4cfe4 100644 --- a/defaults/user-configuration/fhauser/applications/scripts.nix +++ b/defaults/user-configuration/fhauser/applications/scripts.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ pkgs, config, ... }: let passbemenu = pkgs.writeScriptBin "passbemenu" '' @@ -29,24 +29,34 @@ let #!${pkgs.stdenv.shell} set -eo pipefail - SERVICE=openvpn-threema.service + SERVICE=openvpn-threema + SERVICE_EXEC="${config.systemd.services.openvpn-threema.serviceConfig.ExecStart}" - if [[ "$1" == "restart" ]]; then - ACTION=restart - elif [[ "$1" == "start" ]]; then - ACTION=start - elif [[ "$1" == "stop" ]]; then - ACTION=stop - elif [[ "$1" == "status" ]]; then - ACTION=status - elif [[ "$1" == "tail" ]]; then - sudo journalctl -f -u $SERVICE - exit 0 - else - echo "Usage: vpn (start|stop|restart|status|tail)" - exit 254 + exec sudo ${pkgs.openvpn}/sbin/openvpn''${SERVICE_EXEC#@* openvpn} + + ''; + threema-env = pkgs.writeScriptBin "threema-env" '' + #!/usr/bin/env bash + set -eo pipefail + + # Nix shell might fail on some PWDs, so go to home + cd $HOME + + ENV_NAME="$1" + ENV_FILE="$HOME/shares/cloud.threema.ch/envs/''${ENV_NAME}.nix" + COMMAND="$2" + + if [ -z "$ENV_NAME" ]; then + echo "Error: No env name provided" >&2 + exit 2 fi - sudo systemctl $ACTION $SERVICE + if [ ! -f "$ENV_FILE" ]; then + echo "Error: Env file does not exist" >&2 + exit 3 + fi + + echo "Starting '$COMMAND' in env '$ENV_FILE'" + ${pkgs.nix}/bin/nix-shell ''${ENV_FILE} --run "$COMMAND" ''; -in { home-manager.users.fhauser.home.packages = [ passbemenu threema-vpn ]; } +in { home-manager.users.fhauser.home.packages = [ passbemenu threema-vpn threema-env ]; }