{ config, lib, pkgs, ... }: let cfg = config.hm.shell.cli; in { options.hm.shell.cli.enable = lib.mkEnableOption "modern cli tools"; config = lib.mkIf cfg.enable { programs.yazi = { # TODO enable = true; shellWrapperName = "y"; }; # TODO programs.fzf = { enable = true; enableFishIntegration = true; }; programs.zoxide = { enable = true; enableFishIntegration = true; options = [ "--cmd cd" ]; }; programs.bat = { enable = true; config = { theme = "gruvbox-dark"; style = "numbers"; pager = "less -RSFK"; wrap = "never"; tabs = "2"; }; extraPackages = [ pkgs.bat-extras.core ]; }; programs.fd = { enable = true; hidden = true; ignores = [ ".git/" "*.bak" ]; }; programs.ripgrep-all.enable = true; programs.btop = { enable = true; package = pkgs.btop.override { rocmSupport = true; }; settings = { presets = "cpu:1:default,proc:0:default cpu:0:default,gpu0:0:default,mem:0:default"; vim_keys = true; update_ms = 1000; proc_gradient = false; proc_filter_kernel = true; show_uptime = false; freq_mode = "average"; mem_graphs = false; show_disks = false; proc_gpu_summary = true; }; }; programs.fastfetch = { enable = true; settings = { display = { separator = "  "; color = { keys = "blue"; title = "cyan"; }; }; multithreading = true; modules = [ "title" { type = "separator"; string = "━"; } "os" { type = "command"; key = "Generation"; text = "readlink /nix/var/nix/profiles/system | cut -d- -f2"; } "kernel" "uptime" "processes" "shell" "display" "wm" "terminal" "cpu" "gpu" "memory" "swap" "disk" "localip" "break" "colors" ]; }; }; programs.direnv = { enable = true; enableFishIntegration = true; nix-direnv.enable = true; config = { global = { load_dotenv = true; strict_env = true; hide_env_diff = true; }; whitelist = { prefix = [ "~/proj" ]; }; }; }; programs.nix-your-shell = { enable = true; enableFishIntegration = true; nix-output-monitor.enable = true; }; programs.bottom = { enable = true; settings = { flags = { basic = true; current_usage = true; unnormalized_cpu = false; hide_k_threads = true; process_memory_as_value = true; enable_cache_memory = true; network_use_bytes = true; network_use_binary_prefix = true; battery = true; show_table_scroll_position = true; hide_table_gap = true; theme = "gruvbox"; }; processes.columns = [ "PID" "Name" "CPU%" "Mem%" "GPU%" "GMem%" "User" ]; disk.columns = [ "Disk" "Mount" "Free" "Total" "R/s" "W/s" ]; }; }; programs.tealdeer = { enable = true; settings = { updates.auto_update = true; style = { description.foreground = "white"; example_text.foreground = "cyan"; command_name.foreground = "yellow"; example_variable.foreground = "green"; example_code.foreground = "blue"; }; }; }; # TODO: set up lsd programs.lsd = { enable = true; enableFishIntegration = true; }; programs.nix-index = { enable = true; enableFishIntegration = true; }; home.packages = with pkgs; [ sd choose doggo gping comma dust nix-search-cli srm file hexyl procs chafa ffmpeg ]; }; }