{ config, pkgs, lib, ... }: { # TODO ADD THIS ADDON # next one only works if your alias is only a command, e.g. if you `alias='cat some_file.txt &2> /dev/null'`, running `cat some_file.txt` won't trigger it. # TODO find something better for this use case # zsh-you-should-use # ZSH plugin that reminds you to use existing aliases for commands you just typed home.sessionPath = [ "/home/dt/.local/bin" "/home/dt/.local/share/cargo/bin" ]; programs.zsh = { enable = true; enableAutosuggestions = true; enableCompletion = true; enableSyntaxHighlighting = true; autocd = true; dotDir = ".config/zsh"; history = { extended = true; ignoreDups = false; expireDuplicatesFirst = false; ignoreSpace = false; # TODO I might change that path = "${config.xdg.dataHome}/zsh/history"; save = 9000000; # number of lines to save size = 9000000; # number of lines to keep share = false; # share between sessions }; historySubstringSearch = { enable = true; searchDownKey = "^[[B"; # DOWN Arrow key searchUpKey = "^[[A"; # UP Arrow key }; loginExtra = '' eval $(ssh-agent -s) > /dev/null # start ssh agent '' + lib.concatStringsSep "\nsetopt " [ "setopt AUTO_CD" # This is needed as first item "AUTO_PUSHD" "CHASE_DOTS" "ALWAYS_TO_END" "EXTENDED_HISTORY" "HIST_ALLOW_CLOBBER" "HIST_VERIFY" "HIST_FCNTL_LOCK" "APPEND_HISTORY" "DVORAK" "CORRECT" "PROMPT_SUBST" "TRANSIENT_RPROMPT" # maybe? "COMBINING_CHARS" "VI" ]; initExtraFirst = builtins.readFile ./config/zsh-init.sh + builtins.readFile ./config/zsh-prompt.sh + builtins.readFile ./config/custom_cursor.sh + builtins.readFile "${pkgs.fzf}/share/fzf/key-bindings.zsh"; shellAliases = { ls = "ls -a --color=auto"; ll = ". ll"; pip = "pip --require-virtualenv"; hisea = "history info | grep"; mocp = "mocp -M ${config.xdg.configHome}/moc"; yarn = "yarn --use-yarnrc ${config.xdg.configHome}/yarn/config"; }; sessionVariables = { # HISTSIZE = "9000000"; # This Should already be set by the shell TIMEFMT = "'$fg[green]%J$reset_color' time: $fg[blue]%*Es$reset_color, cpu: $fg[blue]%P$reset_color"; # no idea what this does or why it is needed REPORTTIME = "10"; EDITOR = "nvim"; IVIEWER = "imv"; READER = "zathura"; VISUAL = "nvim"; CODEEDITOR = "nvim"; TERMINAL = "alacritty"; BROWSER = "firefox"; COLORTERM = "truecolor"; PAGER = "less -R"; WM = "river"; WALLPAPER = "${config.home.homeDirectory}/media/pictures/wallpaper"; # FUNCNEST for more functions in functions FUNCNEST = "2000"; WALLPAPERDIR = "$HOME/media/pictures/wallpapers/"; LESS = "R"; MANPAGER = "less -R --use-color -Dd+r -Du+b"; LIBVIRT_DEFAULT_URI = "qemu:///system"; BEMENU_SCALE = "1.5"; BEMENU_BACKEND = "wayland"; BEMENU_OPTS = "--fn 'Source Code Pro 10' -c -l 30 -B 1 -W 0.9 --hf #ffffff"; # Clean the home dir {{{ _JAVA_OPTIONS = lib.concatStringsSep " " [ ''-Djava.util.prefs.userRoot="${config.xdg.configHome}/java"'' ''-Djavafx.cachedir="${config.xdg.cacheHome}/openjfx"'' ]; GRADLE_USER_HOME = "${config.xdg.dataHome}/gradle"; CARGO_HOME = "${config.xdg.dataHome}/cargo"; GNUPGHOME = "${config.xdg.dataHome}/gnupg"; GOPATH = "${config.xdg.dataHome}/go"; GTK2_RC_FILES = "${config.xdg.configHome}/gtk-2.0/gtkrc"; LESSHISFILE = "${config.xdg.cacheHome}/less/history"; # LESSKEYIN = "${config.xdg.configHome}/less/lesskey"; RUSTUP_HOME = "${config.xdg.dataHome}/rustup"; NPM_CONFIG_USERCONFIG = "${config.xdg.configHome}/npm/npmrc"; NUGET_PACKAGES = "${config.xdg.cacheHome}/NuGetPackages"; PYTHONSTARTUP = "${config.xdg.configHome}/python/pythonrc"; XAUTHORITY = "${config.xdg.stateHome}/Xauthority"; COMPDUMPFILE = "${config.xdg.dataHome}/zsh/.zcompdump}"; IPYTHONDIR = "${config.xdg.configHome}/ipython"; PARALLEL_HOME = "${config.xdg.configHome}/parallel"; STACK_XDG = "1"; # }}} # Export Wayland env Vars {{{ QT_QPA_PLATFORM = "wayland"; QT_QPA_PLATFORMTHEME = "qt5ct"; # needs qt5ct CLUTTER_BACKEND = "wayland"; SDL_VIDEODRIVER = "wayland"; # might brake some things MOZ_ENABLE_WAYLAND = "1"; # }}} }; }; } # vim: ts=2