{ lib, pkgs, ... }: let isLinux = pkgs.stdenv.isLinux; in { home.packages = with pkgs; [ # encryption age # shell shellcheck # shell utils coreutils direnv dust just procs ripgrep tree wget # network bandwhich # data manipulation jless jq yq ] ++ (lib.optionals (isLinux) [ htop ]); # https://github.com/nix-community/home-manager/blob/master/modules/programs/fish.nix programs.fish = { enable = true; interactiveShellInit = '' set fish_greeting "" fish_add_path -p ~/.cargo/bin/ ''; shellAbbrs = { ncg = "nix-collect-garbage -7d"; c = "clear"; j = "just"; g = "git"; gap = "git add --patch"; }; shellAliases = { 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"; }; }; # 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; config = { global.disable_stdin = true; global.strict_env = true; }; }; programs.bat = { enable = true; config = { theme = "ansi"; pager = "less -FR"; }; }; programs.starship = { enable = true; settings = { add_newline = false; directory = { fish_style_pwd_dir_length = 3; }; git_branch = { symbol = "🌱 "; }; git_commit = { commit_hash_length = 4; tag_symbol = "🔖 "; }; git_state = { format = "[($state($progress_current of $progress_total))]($style) "; cherry_pick = "[🍒 PICKING](bold red)"; }; git_status = { conflicted = "💢"; ahead = "💨"; behind = "😰"; diverged = "😵"; untracked = "🤷‍"; stashed = "📦"; modified = "📝"; staged = "[++($count)](green)"; renamed = "👅"; deleted = "🗑️"; }; "$schema" = "https://starship.rs/config-schema.json"; hostname = { disabled = true; }; username = { disabled = true; }; kubernetes = { disabled = false; style = "bold blue"; }; nix_shell.disabled = false; }; }; home.sessionVariables = { EDITOR = "code --wait"; LESS = "-FRSXM"; LESSCHARSET = "utf-8"; PAGER = "less"; SHELL = "${pkgs.fish}/bin/fish"; VISUAL = "code --wait"; }; }