{ pkgs, ... }:

let
  cb-mount = pkgs.writeScriptBin "cb-mount" ''
  #!${pkgs.bash}/bin/bash

  DEVICE=/dev/disk/by-path/pci-0000:00:12.0-ata-2-part1

  cryptsetup luksOpen ''${DEVICE} external-drive
  mkdir -p /mnt/external-drive
  mount /dev/mapper/external-drive /mnt/external-drive
  '';

  cb-sync = pkgs.writeScriptBin "cb-sync" ''
  #!${pkgs.bash}/bin/bash
  set -e

  # Check, if the something is mounted in our sycdir
  if grep -qs '/mnt/external-drive' /proc/mounts
  then
    echo "fine"
  else
    echo "Please plug in a backup drive and mount it using cb-mount"
    exit 1
  fi

  SNAPSHOT_NAME=$(${pkgs.borgbackup}/bin/borg list --last 1 --short /mnt/palladium/clerie-backup)
  ${pkgs.borgbackup}/bin/borg mount /mnt/palladium/clerie-backup::$SNAPSHOT_NAME /mnt/clerie-backup-mount
  ${pkgs.bindfs}/bin/bindfs /mnt/clerie-backup-mount/mnt/clerie-backup /mnt/clerie-backup
  ${pkgs.borgbackup}/bin/borg create /mnt/external-drive/clerie-backup::$SNAPSHOT_NAME /mnt/clerie-backup
  umount /mnt/clerie-backup
  ${pkgs.borgbackup}/bin/borg unmoumt /mnt/clerie-backup-mount
  '';

  cb-unmount = pkgs.writeScriptBin "cb-unmount" ''
  #!${pkgs.bash}/bin/bash

  umount /mnt/external-drive
  cryptsetup luksClose external-drive
  '';

in {
  environment.systemPackages = with pkgs; [ pkgs.cryptsetup cb-mount cb-sync cb-unmount ];
}