{ config, pkgs, ... }: let isLinux = pkgs.stdenv.isLinux; in { home.packages = with pkgs; [ # shell shellcheck # shell utils coreutils direnv dust procs ripgrep tree wget # network bandwhich # data manipulation jless jq yq # dicts aspell aspellDicts.en aspellDicts.en-computers aspellDicts.en-science ] ++ (lib.optionals (isLinux) [ htop ]); programs.fish = { enable = true; interactiveShellInit = '' # Configure classic prompt set fish_color_user --bold blue set fish_color_cwd --bold white # Enable colour hints in VCS prompt: set __fish_git_prompt_showcolorhints yes set __fish_git_prompt_color_prefix purple set __fish_git_prompt_color_suffix purple set fish_greeting "" ''; shellAbbrs = { ncg = "nix-collect-garbage -d"; }; shellAliases = { c = "clear"; ls = "eza -l -L=1 --git --color=always --group-directories-first"; la = "eza -la --git --color=always --group-directories-first"; ll = "eza -la -L=1 --git --color=always --group-directories-first"; lt = "eza -aT -L=2 --git --color=always --group-directories-first"; k = "kubectl"; kctx = "kubie ctx"; }; }; # an alternative to ls programs.eza = { enable = true; icons = "never"; enableFishIntegration = false; extraOptions = [ "--group-directories-first" "--no-quotes" "--git-ignore" "--icons=never" ]; }; # an alternative to find programs.fd = { enable = true; hidden = true; ignores = [ ".git/" ".direnv/" ]; }; programs.direnv = { enable = true; nix-direnv.enable = true; enableZshIntegration = true; enableFishIntegration = true; config = { global.disable_stdin = true; global.strict_env = true; }; }; home.sessionVariables = { ASPELL_CONF = "conf ${config.xdg.configHome}/aspell/config;"; EDITOR = "emacsclient -a="; HOMEBREW_NO_AUTO_UPDATE = 1; LESS = "-FRSXM"; LESSCHARSET = "utf-8"; PAGER = "less"; SHELL = "${pkgs.fish}/bin/fish"; VISUAL = "emacsclient -a="; }; }