{ pkgs, config, ... }: { home.packages = with pkgs; [ # shell utils coreutils direnv dust procs ripgrep tree wget # network bandwhich # data manipulation jless jq yq # encryption age # media # mpv - TODO: this is currently broken ffmpeg # dicts aspell aspellDicts.en aspellDicts.en-computers aspellDicts.en-science # nix related nil nix-direnv nixd nixfmt-classic nixpkgs-fmt nil # nix lsp ]; xdg = { configFile = { "aspell/config".text = '' local-data-dir ${pkgs.aspell}/lib/aspell data-dir ${pkgs.aspellDicts.en}/lib/aspell personal ${config.xdg.configHome}/aspell/en_US.personal repl ${config.xdg.configHome}/aspell/en_US.repl ''; }; }; home.sessionVariables = { EDITOR = "emacsclient -a="; VISUAL = "emacsclient -a="; LESS = "-FRSXM"; LESSCHARSET = "utf-8"; PAGER = "less"; ASPELL_CONF = "conf ${config.xdg.configHome}/aspell/config;"; # for some reason, if I don't set this, zsh is picked up and mess up stuff. SHELL = "${pkgs.fish}/bin/fish"; # stop bothering me with brew messages HOMEBREW_NO_AUTO_UPDATE = 1; }; # 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/" ]; }; programs.direnv = { enable = true; nix-direnv.enable = true; enableZshIntegration = true; config = { global.disable_stdin = true; global.strict_env = true; }; }; programs.fish = { enable = true; interactiveShellInit = '' 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"; }; }; }