nix: Finish shell

This commit is contained in:
Geoffrey Frogeye 2023-11-10 23:31:11 +01:00
parent 87f5b30995
commit b9974a790a
Signed by: geoffrey
GPG key ID: C72403E7F82E6AD8
12 changed files with 68 additions and 149 deletions

View file

@ -1,2 +0,0 @@
clear
reset

View file

@ -1,7 +0,0 @@
#!/usr/bin/env bash
source ~/.config/shell/shenv
source ~/.config/shell/commonenv
source ~/.config/shell/shrc
source ~/.config/shell/commonrc
source ~/.config/shell/bashrc

5
bashrc
View file

@ -1,5 +0,0 @@
#!/usr/bin/env bash
source ~/.config/shell/shrc
source ~/.config/shell/commonrc
source ~/.config/shell/bashrc

View file

@ -63,16 +63,80 @@ in
# Fzf
FZF_COMPLETION_OPTS = "${lib.strings.concatStringsSep " " config.programs.fzf.fileWidgetOptions}";
};
treatsHomeAsJunk = [
# Programs that think $HOME is a reasonable place to put their junk
# and don't allow the user to change those questionable choices
"adb"
"audacity"
"binwalk" # Should use .config according to the GitHub code though
"cabal" # TODO May have options but last time I tried it it crashed
"cmake"
"ddd"
"ghidra"
"itch"
"simplescreenrecorder" # Easy fix https://github.com/MaartenBaert/ssr/blob/1556ae456e833992fb6d39d40f7c7d7c337a4160/src/Main.cpp#L252
"vd"
"wpa_cli"
# TODO Maybe we can do something about node-gyp
];
commonShellAliases = {
# Completion for existing commands
ls = "ls -h --color=auto";
mkdir = "mkdir -v";
# cp = "cp -i"; # Disabled because conflicts with the ZSH/Bash one. This separation is confusing I swear.
mv = "mv -iv";
free = "free -h";
df = "df -h";
ffmpeg = "ffmpeg -hide_banner";
ffprobe = "ffprobe -hide_banner";
ffplay = "ffplay -hide_banner";
# TODO Add ipython --no-confirm-exit --pdb
# Frequent mistakes
sl = "ls";
al = "la";
mdkir = "mkdir";
systemclt = "systemctl";
please = "sudo";
# Shortcuts for commonly used commands
# ll = "ls -l"; # Disabled because would overwrite the colored one
# la = "ls -la"; # Eh maybe it's not that bad, but for now let's keep compatibility
s = "sudo -s -E";
# n = "$HOME/.config/i3/terminal & disown"; # Not used anymore since alacritty daemon mode doesn't preserve environment variables
x = "startx ${config.xdg.configHome}/xinitrc; logout";
nx = "nvidia-xrun ${config.xdg.configHome}/xinitrc; sudo systemctl start nvidia-xrun-pm; logout";
# TODO Put in display.nix
# Was also thinking of not storing the config in .config and use nix-store instead,
# but maybe it's a bad idea as home-manager switch doesn't replace aliases in running shells
# FIXME Is it still relevant with NixOS?
# Give additional config to those programs, and not have them in my path
bower = "bower --config.storage.packages=${config.xdg.cacheHome}/bower/packages --config.storage.registry=${config.xdg.cacheHome}/bower/registry --config.storage.links=${config.xdg.cacheHome}/bower/links";
gdb = "gdb -x ${config.xdg.configHome}/gdbinit";
iftop = "iftop -c ${config.xdg.configHome}/iftoprc";
lmms = "lmms --config ${config.xdg.configHome}/lmmsrc.xml";
tmux = "tmux -f ${config.xdg.configHome}/tmux/tmux.conf";
# Preference
vi = "nvim";
vim = "nvim";
wol = "wakeonlan"; # TODO Really, isn't wol better? Also wtf Arch aliases to pass because neither is installed anyways x)
mutt = "neomutt";
# Bash/Zsh only
cp = "cp -i --reflink=auto";
grep = "grep --color=auto";
dd = "dd status=progress";
rm = "rm -v --one-file-system";
free = "free -m";
# free = "free -m"; # Disabled because... no? Why?
diff = "diff --color=auto";
dmesg = "dmesg --ctime";
wget = "wget --hsts-file ${config.xdg.cacheHome}/wget-hsts";
};
} // lib.attrsets.mergeAttrsList (map (p: {"${p}" = "HOME=${config.xdg.cacheHome}/junkhome ${p}";}) treatsHomeAsJunk);
# TODO Maybe make nixpkg wrapper instead? So it also works from dmenu
# Could also accept my fate... Home-manager doesn't necessarily make it easy to put things out of the home directory
historySize = 100000;
historyFile = "${config.xdg.cacheHome}/shell_history";
in

View file

@ -448,7 +448,7 @@
{ };
in
{
".xinitrc" = {
"${config.xdg.configHome}/xinitrc" = {
# TODO Configurable
source = pkgs.writeShellScript "xinitrc" ''
${pkgs.xorg.xrdb}/bin/xrdb ${config.xresources.path}

View file

@ -1,3 +0,0 @@
extrc
*.zwc
.zcompdump

View file

@ -1,4 +0,0 @@
#!/usr/bin/env zsh
source ~/.config/shell/shenv
source ~/.config/shell/commonenv

View file

@ -1,5 +0,0 @@
#!/usr/bin/env zsh
source ~/.config/shell/shrc
source ~/.config/shell/commonrc
source ~/.config/shell/zshrc

View file

@ -1,8 +0,0 @@
#!/usr/bin/env sh
#
# Shell common environment variables and functions (BusyBox compatible)
#
# And for the rest, see aliases
direnv JUNKHOME "$HOME/.cache/junkhome"

View file

@ -1,104 +0,0 @@
#!/usr/bin/env sh
#
# Shell common aliases and customizations (BusyBox compatible)
#
## COMMAND CONFIGURATION
# Completion for existing commands
alias ls='ls -h --color=auto'
alias mkdir='mkdir -v'
alias cp="cp -i"
alias mv="mv -iv"
alias free='free -h'
alias df='df -h'
alias ffmpeg='ffmpeg -hide_banner'
alias ffprobe='ffprobe -hide_banner'
alias ffplay='ffplay -hide_banner'
# ALIASES
# Frequent mistakes
alias sl=ls
alias al=la
alias mdkir=mkdir
alias systemclt=systemctl
alias please=sudo
# Shortcuts for commonly used commands
alias ll="ls -l"
alias la="ls -la"
alias s='sudo -s -E'
alias n='$HOME/.config/i3/terminal & disown'
alias x='startx $HOME/.config/xinitrc; logout'
alias nx='nvidia-xrun $HOME/.config/xinitrc; sudo systemctl start nvidia-xrun-pm; logout'
# For programs that think $HOME is a reasonable place to put their junk
# and don't allow the user to change those questionable choices
alias adb='HOME=$JUNKHOME adb'
alias audacity='HOME=$JUNKHOME audacity'
alias binwalk='HOME=$JUNKHOME binwalk' # Should use .config according to the GitHub code though
alias cabal='HOME=$JUNKHOME cabal' # TODO May have options but last time I tried it it crashed
alias cmake='HOME=$JUNKHOME cmake'
alias ddd='HOME=$JUNKHOME ddd'
alias ghidra='HOME=$JUNKHOME ghidra'
alias itch='HOME=$JUNKHOME itch'
alias simplescreenrecorder='HOME=$JUNKHOME simplescreenrecorder' # Easy fix https://github.com/MaartenBaert/ssr/blob/1556ae456e833992fb6d39d40f7c7d7c337a4160/src/Main.cpp#L252
alias vd='HOME=$JUNKHOME vd'
alias wpa_cli='HOME=$JUNKHOME wpa_cli'
# TODO Maybe we can do something about node-gyp
alias bower='bower --config.storage.packages=~/.cache/bower/packages --config.storage.registry=~/.cache/bower/registry --config.storage.links=~/.cache/bower/links'
alias gdb='gdb -x $HOME/.config/gdbinit'
alias iftop='iftop -c $HOME/.config/iftoprc'
alias lmms='lmms --config $HOME/.config/lmmsrc.xml'
alias tmux='tmux -f $HOME/.config/tmux/tmux.conf'
# TODO ruby's gem when I find a use for it
# FUNCTIONS
trysource() {
if [ -f "$1" ]
then
. "$1"
else
return 1
fi
}
_i_prefer() { # executables...
for candidate in "$@"
do
if [ -x "$(command -v "$candidate")" ]
then
choice="$candidate"
break
fi
done
if [ -z "$choice" ]
then
return
fi
for candidate in "$@"
do
if [ "$candidate" != "$choice" ]
then
alias "$candidate"="$choice"
fi
done
}
_i_prefer nvim vim vi
_i_prefer gopass pass
_i_prefer wakeonlan wol
_i_prefer neomutt mutt
unset _i_prefer
## COLORS
# trysource ~/.local/bin/colorSchemeApply
# Needed because xterm/urxvt won't use the last color, needed for vim
## EXTENSIONS
trysource ~/.config/shell/extrc

View file

@ -1,4 +0,0 @@
#!/usr/bin/env sh
. ~/.config/shell/shenv
. ~/.config/shell/shrc

3
zshenv
View file

@ -1,3 +0,0 @@
#!/usr/bin/env zsh
ZDOTDIR=~/.config/shell