2021-07-18 08:27:19 +01:00
|
|
|
{ config, pkgs, ... }:
|
|
|
|
|
|
|
|
let
|
|
|
|
mount-vault = pkgs.writeTextFile {
|
|
|
|
name = "mount-vault";
|
|
|
|
executable = true;
|
|
|
|
destination = "/bin/mount-vault";
|
|
|
|
text = ''
|
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
set -e
|
|
|
|
set -o pipefail
|
|
|
|
|
|
|
|
VERACRYPT="veracrypt"
|
|
|
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
|
|
VERACRYPT="/Applications/VeraCrypt.app/Contents/MacOS/VeraCrypt"
|
|
|
|
fi
|
|
|
|
|
|
|
|
MOUNT_TARGET=$2
|
|
|
|
if [[ -z "$MOUNT_TARGET" ]]; then
|
|
|
|
MOUNT_TARGET=$HOME/.vault
|
|
|
|
fi
|
|
|
|
|
|
|
|
sudo chown $USER "$MOUNT_TARGET"
|
|
|
|
mkdir -p "$MOUNT_TARGET"
|
|
|
|
|
|
|
|
MOUNT_SOURCE=$1
|
|
|
|
if [[ -z "$MOUNT_SOURCE" ]]; then
|
|
|
|
MOUNT_SOURCE="$HOME/vaults/vault.vera"
|
|
|
|
fi
|
|
|
|
|
|
|
|
chmod a+x "$MOUNT_SOURCE"
|
|
|
|
|
|
|
|
if [[ -z "$VAULT_PASSWORD" ]]; then
|
|
|
|
echo "interactive mount"
|
|
|
|
$VERACRYPT -t --mount "$MOUNT_SOURCE" "$MOUNT_TARGET"
|
|
|
|
else
|
|
|
|
echo "non-interactive mount of '$MOUNT_SOURCE' to '$MOUNT_TARGET'"
|
|
|
|
sudo $VERACRYPT -t --non-interactive -p $VAULT_PASSWORD --mount "$MOUNT_SOURCE" "$MOUNT_TARGET"
|
|
|
|
fi
|
|
|
|
echo "mounted"
|
|
|
|
sudo chown $USER "$MOUNT_TARGET"
|
|
|
|
echo "chowned"
|
|
|
|
|
|
|
|
echo "$MOUNT_SOURCE -> $MOUNT_TARGET"
|
|
|
|
|
|
|
|
if [[ -z $NO_INSTALL_VAULT ]]; then
|
|
|
|
"$MOUNT_TARGET/install"
|
|
|
|
fi
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
|
|
|
in
|
2021-11-22 19:32:26 +00:00
|
|
|
{
|
2021-07-18 08:27:19 +01:00
|
|
|
|
2021-11-22 19:32:26 +00:00
|
|
|
home.packages = with pkgs; [ mount-vault ];
|
|
|
|
}
|