nix-configs/modules/zsh.nix
2023-09-09 01:10:22 +02:00

90 lines
2.7 KiB
Nix

{ config, lib, pkgs, ... }:
let cfg = config.jade.zsh;
in with lib; {
options.jade.zsh = {
enable = mkEnableOption "Enable zsh";
};
config = mkIf cfg.enable {
home-manager.users.jade = { pkgs,... } : {
home.packages = with pkgs; [
thefuck
];
home.sessionVariables = {
"NEOVIDE_MULTIGRID" = "true";
};
programs.direnv = {
enable = true;
enableZshIntegration = true;
};
programs.zsh = {
enable = true;
enableAutosuggestions = true;
enableSyntaxHighlighting = true;
autocd = true;
defaultKeymap = "viins";
dotDir = ".config/zsh";
history = {
extended = true;
save = 100000;
size = 100000;
};
shellAliases = {
sudo = "sudo ";
v = "nvim";
s = "kitty +kitten ssh";
termsize = "echo \"width: $(tput cols)\nheight: $(tput lines)\"";
batstate = "echo \"Charge state: $(cat /sys/class/power_supply/BAT0/capacity)%\"";
clear = "clear;neofetch";
bdin = "betterdiscordctl install && killall Discord && Discord & disown";
upg = "paru -Syu --skipreview --noconfirm && flatpak upgrade && rustup upgrade";
grepo = "cd $HOME/Documents/repos && ls";
gnix = "cd $HOME/nix-configs";
slol = "while true;do \\clear;sl --help | lolcat;done;";
# localhost.run
lhr = "ssh -R 80:localhost:8080 nokey@localhost.run";
sshrpi = "ssh jade@192.168.178.111";
# cargo
cr = "cargo run";
cb = "cargo build";
cf = "cargo fmt";
cfx = "cargo fix";
cl = "cargo clippy";
cbr = "cargo build --release";
# fucking around
"" = "nvim";
"grammar" = "polymc";
"minecraft" = "polymc";
};
oh-my-zsh = {
enable = true;
plugins = [
"git" "sudo" "colored-man-pages" "zsh-interactive-cd" "branch"
"colorize" "command-not-found" "common-aliases" "rsync" "rust"
"thefuck"
];
theme = "fox";
};
initExtra = ''
# file endings
alias -s {pdf,PDF}="evince"
alias -s {jpg,JPG,png,PNG}="kitty +kitten icat"
alias -s {ods,ODS,odt,ODT,odp,ODP,doc,DOC,docx,DOCX,xls,XLS,xlsx,XLSX,xlsm,XLSM,ppt,PPT,pptx,PPTX,csv,CSV}='libreoffice'
alias -s {html,HTML}="librewolf"
alias -s {mp4,MP4,mov,MOV,mkv,MKV}='vlc'
alias -s {zip,ZIP,war,WAR}="unzip -l"
alias -s {jar,JAR}="java -jar"
alias -s gz="tar -tf"
alias -s {tgz,TGZ}="tar -tf"
'';
};
};
};
}