diff --git a/.bashrc b/.bashrc
index 72719390ea24c9e680a3b7d8c8156f7bdea26974..246f517902dc5bf0f57849a765681e619f2fdd93 100644
--- a/.bashrc
+++ b/.bashrc
@@ -82,7 +82,6 @@ export PS1='\u@\h:\w\$ '
 export PYTHONSTARTUP=~/.config/pythonrc.py
 export PYTHON_GITLAB_CFG=~/.config/python-gitlab.cfg
 export REDISCLI_HISTFILE="$HOME/Documents/.rediscli_history"
-export TF_DEBUG=1
 export VAGRANT_DEFAULT_PROVIDER="virtualbox"
 
 alias 0-day-cleanup='ssh kodi.shore.co.il "sudo -u debian-transmission find /srv/library/Comics -name *.part -path *0-Day\ Week\ of* -delete"'
@@ -177,10 +176,6 @@ alias screenshot-cleanup='find "$HOME/Pictures" -name "Screenshot from *.png" -d
 alias smtp-server='python3 -m smtpd -ndc DebuggingServer'
 alias sudo="sudo "
 alias sudome="sudome "
-alias tfa='tf apply tfplan'
-alias tfaa='tf apply -auto-approve'
-alias tfp='tf init -backend=false && tf plan -out tfplan'
-alias tfvf='tf init -backend=false && tf validate && tf fmt -diff'
 alias todo="vim \$HOME/Documents/TODO.yml"
 # shellcheck disable=SC2142
 alias tolower='awk "{print tolower(\$0)}"'
diff --git a/.bashrc.d/terraform b/.bashrc.d/terraform
new file mode 100644
index 0000000000000000000000000000000000000000..96a0de78412ed5c841fef8854a25d09d74e60dcb
--- /dev/null
+++ b/.bashrc.d/terraform
@@ -0,0 +1,9 @@
+# shellcheck shell=bash
+# vim: ft=sh
+
+export TF_CLI=tofu
+export TF_DEBUG=1
+alias tfa='tf apply tfplan && tf -auto-approve -refresh-only'
+alias tfaa='tf apply -auto-approve'
+alias tfp='tf init -backend=false && tf plan -out tfplan'
+alias tfvf='tf init -backend=false && tf validate && tf fmt -diff'
diff --git a/Documents/bin/tf b/Documents/bin/tf
deleted file mode 100755
index 7812aedeedb303b23deee5f37be92b27f1b76396..0000000000000000000000000000000000000000
--- a/Documents/bin/tf
+++ /dev/null
@@ -1,66 +0,0 @@
-#!/usr/bin/env python3
-"""Terraform wrapper to include variable files if they match the workspace
-name."""
-
-import glob
-import os
-import pathlib
-import subprocess  # nosec
-import sys
-
-TF_COMMANDS_TO_MODIFY = ["plan", "console", "import", "refresh"]
-
-
-def get_workspace():
-    """Return the Terraform workspace."""
-    proc = subprocess.run(  # nosec
-        ["terraform", "workspace", "show"],
-        capture_output=True,
-        check=True,
-        text=True,
-    )
-    return proc.stdout.strip()
-
-
-def is_debug_set():
-    """Check if the debug environment variable is set."""
-    debug = os.getenv("TF_DEBUG", "").lower()
-    return debug in ["1", "true"]
-
-
-if __name__ == "__main__":
-    # In case tf was run with no arguments.
-    if len(sys.argv) == 1:
-        os.execlp("terraform", "terraform")  # nosec
-
-    # Build a new argument list.
-    args = sys.argv[:]
-    args[0] = "terraform"
-
-    # Check if the Terraform command is one that we need to modify (include
-    # tfvars files). If not, execute Terraform with the same arguments.
-    for command in TF_COMMANDS_TO_MODIFY:
-        if command in sys.argv:
-            break
-    else:
-        os.execvp("terraform", args)  # nosec
-
-    # We need to add the var files after the Terraform command (if we add it
-    # before Terraform doesn't accept them) but not at the end (not to modify
-    # other argument that accept optional values). So we add them right after
-    # the Terraform command.
-    command_index = args.index(command)
-    workspace = get_workspace()
-    var_file = pathlib.Path(f"{workspace}.tfvars")
-    var_dir = pathlib.Path(workspace)
-    if var_file.exists() and var_file.is_file():
-        args.insert(command_index + 1, f"-var-file={var_file}")
-    elif var_dir.exists() and var_dir.is_dir():
-        for var_file in glob.glob(f"{var_dir}/*.tfvars"):
-            args.insert(command_index + 1, f"-var-file={var_file}")
-
-    # Print the new argument list to stderr if debugging is enabled.
-    if is_debug_set():
-        print(args, file=sys.stderr)
-
-    os.execvp("terraform", args)  # nosec