## ALIASES ##
aliases["tsla-fan"] = "ipmitool -H 10.30.0.3 -U ADMIN -P ADMIN raw 0x30 0x70 0x66 0x01 0x0"
aliases["nixoss"] = "sudo nixos-rebuild switch --flake @('.#' + $(hostname))"
aliases["nixost"] = "sudo nixos-rebuild test --flake @('.#' + $(hostname))"
aliases["nixosb"] = "sudo nixos-rebuild build --flake @('.#' + $(hostname))"
aliases["nixos-dry"] = "sudo nixos-rebuild dry-build --flake @('.#' + $(hostname))"
aliases["init-python"] = "nix flake update --flake templates && nix flake init -t 'templates#python' && direnv allow"
aliases["weboot"] = "bash -c 'nix shell nixpkgs#efibootmgr -c sudo efibootmgr -n 0000 && reboot'"
aliases["ls"] = "exa"
aliases["ll"] = "exa -lah"
aliases["grep"] = "rg"
aliases["theo"] = "python ~/.config/xonsh/theo.py"
aliases["kittycatsay"] = "python ~/.config/xonsh/kittycatsay.py"

## INTERACTIVE CONFIGURATION ##
if $XONSH_INTERACTIVE:
    from datetime import datetime
    import importlib.util
    t0 = datetime.now()
    ## ENV ##
    $XONSH_COLOR_STYLE = 'native'
    $PROMPT = '{YELLOW}{env_name}{RESET}{BOLD_GREEN}{user}@{hostname} {cwd}{branch_color}{curr_branch: {}}{RESET} {RED}{last_return_code_if_nonzero:[{BOLD_INTENSE_RED}{}{RED}] }{RESET}{BOLD_BLUE}{prompt_end}{RESET} '

    # Coloured man page support using 'less' env vars
    $LESS_TERMCAP_mb = "\033[01;31m"
    $LESS_TERMCAP_md = "\033[01;31m"
    $LESS_TERMCAP_me = "\033[0m"
    $LESS_TERMCAP_so = "\033[01;44;36m"
    $LESS_TERMCAP_se = "\033[0m"
    $LESS_TERMCAP_us = "\033[00;36m"
    $LESS_TERMCAP_ue = "\033[0m"

    ## XONTRIB ##
    if importlib.util.find_spec("xontrib.coreutils") is not None:
        xontrib load coreutils
    if importlib.util.find_spec("xontrib.fish_completer") is not None:
        xontrib load fish_completer
    if importlib.util.find_spec("xontrib.direnv") is not None:
        xontrib load direnv
    if importlib.util.find_spec("xontrib.clp") is not None:
        xontrib load clp
    if importlib.util.find_spec("xontrib.bashisms") is not None:
        xontrib load bashisms
    if importlib.util.find_spec("xontrib.fzf_completions") is not None:
        xontrib load fzf-completions
        from xonsh.built_ins import XSH
        XSH.env['fzf_history_binding'] = "c-r"  # Ctrl+R
        XSH.env['fzf_ssh_binding'] = "c-s"  # Ctrl+S
        XSH.env['fzf_file_binding'] = "c-t"  # Ctrl+T
        XSH.env['fzf_dir_binding'] = "c-g"  # Ctrl+G
    if $SHELL_TYPE == "THICC":
        import os
        import sys
        import subprocess
        import platform
        import socket
        import getpass
        import pathlib
        import re
        import json
        import scapy.all
        import yaml
        import requests
        print_color("{BOLD_GREEN}THICC SHELL LOADED!{RESET}")


    hour = t0.hour
    theo | kittycatsay
    dt = round((datetime.now() - t0).microseconds/1000000, 2)
    print("Load time:", dt, "seconds")