81 lines
1.8 KiB
Nix
81 lines
1.8 KiB
Nix
{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.fzf.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"
|
|
];
|
|
|
|
bashrcExtra = ''
|
|
[[ -f ~/.profile ]] && . ~/.profile
|
|
'';
|
|
|
|
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"'
|
|
'';
|
|
};
|
|
};
|
|
}
|