{pkgs, ...}: let inputrc = pkgs.writeText "inputrc" '' set completion-ignore-case on ''; in { home-manager.users.buffet = { home.sessionVariables = { INPUTRC = inputrc; }; programs.direnv.enableBashIntegration = true; programs.bash = { enable = true; historyControl = ["erasedups" "ignorespace"]; shellAliases = { mkdir = "mkdir -p"; rg = "rg -S"; update = let change-message = pkgs.writeScript "change-commit-message" '' #!/bin/sh sed -i '1s/.*/chore: update/' "$1" ''; in "nix flake update --commit-lock-file && EDITOR=${change-message} git commit --amend"; }; shellOptions = [ "cdspell" "checkjobs" "extglob" "globstar" "histappend" "nocaseglob" ]; initExtra = '' __prompt() { local status="$?" local row local col IFS=';' read -rs -dR -p $'\e[6n' row col >/dev/tty if [[ $col != 1 ]]; then printf '%s' $'\e[0;7m%\n\e[0m' fi PS1='\[\e[0;1m\][' case $status in 0) PS1+='\[\e[32m\]' ;; *) PS1+='\[\e[31m\]' ;; esac if [[ "$PWD" == "$HOME" ]]; then PS1+="~" elif [[ "$PWD" == / ]]; then PS1+=/ else PS1+="''${PWD##*/}" fi PS1+='\[\e[0;1m\]]\[\e[0m\]' [[ $CONTAINER_ID ]] && PS1+="'" PS1+=' ' } PROMPT_COMMAND=__prompt bind '"\C-o": "\C-a\C-k fg; if [[ $? == 1 ]]; then nvim; fi\n"' bind '"\e\C-m": "\C-e | nvim\C-m"' ''; }; }; }