{
  stdenv,
  bash,
  parted,
  cryptsetup,
  e2fsprogs,
}: let
  usb_data = import ../data/usb_data.nix {};
in
  stdenv.mkDerivation {
    name = "mk-enc-usb";
    src = ./mk-enc-usb.sh;
    unpackPhase = ''
      for srcFile in $src; do
        cp $srcFile $(stripHash $srcFile)
      done
    '';

    inherit bash parted cryptsetup e2fsprogs;

    patchPhase = ''
      substituteAllInPlace mk-enc-usb.sh
      substituteInPlace mk-enc-usb.sh \
        --replace "@USB_ENCRYPTED_PARTLABEL@" "${usb_data.encrypted_partlabel}" \
        --replace "@USB_UNENCRYPTED_LABEL@" "${usb_data.unencrypted_label}"
    '';

    installPhase = ''
      mkdir -p $out/bin
      cp mk-enc-usb.sh $out/bin/mk-enc-usb
      chmod +x $out/bin/mk-enc-usb
    '';
  }