{ 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,... } : { programs.zsh = { enable = true; enableAutosuggestions = true; enableSyntaxHighlighting = true; autocd = true; defaultKeymap = "viins"; dotDir = ".config/zsh"; dirHashes = { repos = "$HOME/Documents/repos"; nixc = "$HOME/nix-configs"; }; history = { extended = true; save = 100000; size = 100000; }; shellAliases = { sudo = "sudo "; v = "nvim"; 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"; 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"; }; 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" ''; }; }; }; }