{ config, pkgs, ... }: let bash-seafly-prompt = pkgs.fetchFromGitHub { owner = "bluz71"; repo = "bash-seafly-prompt"; rev = "4970ba54e5e9d932d94f5e6be32ecf277a68f596"; hash = "sha256-3q0s1eg6iEdZ0GyQuYpzWIUqggcZ9Kr/UL9pHr+PqN8="; }; in { home.packages = [ pkgs.blesh ]; programs.direnv = { enable = true; enableBashIntegration = true; nix-direnv.enable = true; }; programs.bash = { enable = true; historySize = 999999; historyFileSize = 999962; historyControl = [ "ignoredups" "ignorespace" "erasedups" ]; shellOptions = [ "histappend" "checkwinsize" "extglob" "globstar" "checkjobs" "cdspell" ]; shellAliases = { drag = "ripdrag"; #Adding output colors ls = "ls --color=always"; grep = "grep --color=auto"; less = "less -R"; ping = "ping -O"; # fix typos ckear = "clear"; sl = "ls"; ks = "ls"; dc = "cd"; sudo = "doas"; claude = "docker run --rm -it" + " -v ${config.home.homeDirectory}/.claude:/root/.claude" + " -v ${config.home.homeDirectory}/.claude.json:/root/.claude.json" + " -v $PWD:$PWD -w $PWD git.shihaam.dev/dockerfiles/ccc"; }; initExtra = '' # ---- ble.sh -------------------------------------------------------- source "$(blesh-share)/ble.sh" # ---- prompt -------------------------------------------------------- source ${bash-seafly-prompt}/command_prompt.bash # ---- machine-local non-public env -------------------------------------- [ -r "$HOME/.config/private-env" ] && source "$HOME/.config/private-env" # needed for gpg-sign export GPG_TTY=$(tty) # ---- always reopen the last directory ------------------------------ cd() { builtin cd "$@" && pwd > ~/.cache/whereami; } cdl() { local d d=$(cat ~/.cache/whereami 2>/dev/null) [ -d "$d" ] && cd "$d" } cdl # ---- wrappers ------------------------------------------------------ ip() { if [[ $1 == "info" ]]; then curl -s https://ipinfo.io/$2 | jq else command ip "$@" fi } # ---- helpers ------------------------------------------------------- math() { echo $1 | bc; } extract() { if [ -f "$1" ] ; then local folder_name=$(basename "$1" | sed -e 's/\..*$//') mkdir -p "$folder_name" case "$1" in *.tar.bz2) tar xvjf "$1" -C "$folder_name" ;; *.tar.gz) tar xvzf "$1" -C "$folder_name" ;; *.bz2) bunzip2 -k "$1" && mv "''${1%.*}" "$folder_name" ;; *.rar) unrar x "$1" "$folder_name" ;; *.gz) gunzip -k "$1" && mv "''${1%.*}" "$folder_name" ;; *.tar) tar xvf "$1" -C "$folder_name" ;; *.tbz2) tar xvjf "$1" -C "$folder_name" ;; *.tgz) tar xvzf "$1" -C "$folder_name" ;; *.zip) unzip "$1" -d "$folder_name" ;; *.Z) uncompress "$1" && mv "''${1%.*}" "$folder_name" ;; *.7z) 7z x "$1" -o"$folder_name" ;; *.xz) xz --decompress --keep "$1" && mv "''${1%.*}" "$folder_name" ;; *) echo "'$1' cannot be extracted via extract()" ;; esac else echo "'$1' is not a valid file" fi } # ---- throwaway arch container -------------------------------------- arch() { local user_flag="" if [[ "$1" == "root" ]]; then user_flag="-u root" shift fi local cmd=("bash") [[ $# -gt 0 ]] && cmd=("$@") podman run --rm -it \ --name "archlinux-$$" \ --network host \ --workdir "$PWD" \ $user_flag \ -e USER="$USER" \ -e HOME="$HOME" \ -e TERM="''${TERM:-xterm-256color}" \ -v "$HOME:$HOME" \ -v "$PWD:$PWD" \ -v /tmp:/tmp \ -v arch-usr:/usr \ -v arch-bin:/bin \ -v arch-lib:/lib \ -v arch-lib64:/lib64 \ -v arch-etc:/etc \ -v arch-var:/var \ -v arch-opt:/opt \ archlinux-local "''${cmd[@]}" } ''; }; }