{ config, lib, pkgs, inputs, ... }: with lib; { config = mkMerge [ (mkIf config.nathan.programs.util.core { home.packages = with pkgs; [ # Rust rewrites of common shell utilites exa bat fd sd du-dust ripgrep ripgrep-all hyperfine dogdns duf xcp # User friendly cut choose # Man but terse tealdeer # rsync for _The Cloud_ :tm: rclone # File file ]; # Configure tmux programs.tmux = { enable = true; aggressiveResize = true; keyMode = "vi"; shortcut = "x"; terminal = if pkgs.stdenv.isLinux then "tmux-256color" else "screen-256color"; escapeTime = 100; plugins = with pkgs; [ tmuxPlugins.cpu tmuxPlugins.jump ]; extraConfig = '' set -ag terminal-overrides ",xterm-256color:RGB" set-option -g status-interval 1 set-option -g automatic-rename on set-option -g automatic-rename-format '#{b:pane_current_path}: #{pane_current_command}' ''; }; # Configure btop programs.btop = { enable = true; }; }) (mkIf config.nathan.programs.util.productivity { home.packages = with pkgs; [ tokei # Spell check hunspell hunspellDicts.en-us # CLI Markdown renderer glow # Command line file manager broot # Much better curl httpie # CLI spreadsheets visidata # Cheatsheet manager cheat # Ping with a graph gping # Pandoc for documentation pandoc # Tmate for pair programming tmate ]; }) (mkIf config.nathan.programs.util.json { ######################### ## JSON Utilities ######################### programs.jq = { enable = true; }; home.packages = with pkgs; [ jc fx ]; }) ]; }