From 1be09af058424219de2aad4b9cc27ccf760d23f6 Mon Sep 17 00:00:00 2001 From: adikro Date: Sun, 1 Mar 2026 19:57:16 +0100 Subject: ... --- hm/shell/cli.nix | 146 ++++++++++++++++++++++++++++++++++++++++++++++-------- hm/shell/fish.nix | 39 +++++++++++---- hm/shell/foot.nix | 20 ++++++-- 3 files changed, 170 insertions(+), 35 deletions(-) (limited to 'hm/shell') diff --git a/hm/shell/cli.nix b/hm/shell/cli.nix index da9c64e..a9e8397 100644 --- a/hm/shell/cli.nix +++ b/hm/shell/cli.nix @@ -10,33 +10,75 @@ 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"; + 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; - programs.fzf.enable = true; - programs.fd.enable = true; - programs.ripgrep.enable = true; - programs.yazi.enable = true; - programs.btop.enable = true; + proc_gpu_summary = true; + }; + }; programs.fastfetch = { enable = true; settings = { display = { - size = { - binaryPrefix = "iec"; - }; separator = "  "; + color = { + keys = "blue"; + title = "cyan"; + }; }; multithreading = true; modules = [ "title" - "separator" + { + type = "separator"; + string = "━"; + } "os" { type = "command"; @@ -61,10 +103,23 @@ in ]; }; }; - # programs.direnv = { - # enable = true; - # nix-direnv.enable = true; - # }; + 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; @@ -72,18 +127,65 @@ in }; 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; - enableAutoUpdates = 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"; + }; + }; + }; + programs.pls = { + enable = true; + enableFishIntegration = true; + }; + programs.nix-index = { + enable = true; + enableFishIntegration = true; }; - # programs.lazygit = { - # enable = true; - # enableFishIntegration = true; - # }; - programs.riff.enable = true; - programs.pls.enable = true; - programs.nix-index.enable = true; home.packages = with pkgs; [ sd diff --git a/hm/shell/fish.nix b/hm/shell/fish.nix index d7f7248..20b9a95 100644 --- a/hm/shell/fish.nix +++ b/hm/shell/fish.nix @@ -13,14 +13,33 @@ in programs.fish = { enable = true; + functions = { + rga-fzf = { + body = '' + set -l RG_PREFIX "rga --files-with-matches --smart-case" + set -l file ( + FZF_DEFAULT_COMMAND="$RG_PREFIX '$argv[1]'" \ + fzf --sort \ + --preview='test -n {}; and rga --pretty --context 5 {q} {}' \ + --phony -q "$argv[1]" \ + --bind "change:reload:$RG_PREFIX {q}" \ + --preview-window="70%:wrap" + ) + + if test -n "$file" + echo "Opening $file..." + xdg-open "$file" + end + ''; + }; + }; + interactiveShellInit = '' set fish_greeting fastfetch ''; shellAliases = { - update = "git add . && git commit -m \"$1\" && nix flake update && nh os switch ."; - ns = "nix-search -p"; nd = "nix develop ."; nos = "nh os switch ."; @@ -60,10 +79,10 @@ in name = "pisces"; src = pkgs.fishPlugins.pisces.src; } - { - name = "fzf-fish"; - src = pkgs.fishPlugins.fzf-fish.src; - } + # { + # name = "fzf-fish"; + # src = pkgs.fishPlugins.fzf-fish.src; + # } { name = "fish-you-should-use"; src = pkgs.fishPlugins.fish-you-should-use.src; @@ -72,10 +91,10 @@ in name = "colored-man-pages"; src = pkgs.fishPlugins.colored-man-pages.src; } - { - name = "fifc"; - src = pkgs.fishPlugins.fifc.src; - } + # { + # name = "fifc"; + # src = pkgs.fishPlugins.fifc.src; + # } ]; }; }; diff --git a/hm/shell/foot.nix b/hm/shell/foot.nix index 3143d12..91dbfa0 100644 --- a/hm/shell/foot.nix +++ b/hm/shell/foot.nix @@ -9,7 +9,7 @@ let cfg = config.hm.shell.foot; footTheme = pkgs.runCommand "gruvbox-dark" { } '' - sed 's/\[colors-dark\]/\[colors\]/g' ${ + sed -e 's/\[colors-dark\]/\[colors\]/g' ${ pkgs.fetchurl { url = "https://codeberg.org/dnkl/foot/raw/branch/master/themes/gruvbox-dark"; sha256 = "sha256-hlmLklG/vAEDy8I+k13+o4ZR6Cq6lTxOconjf9M75eo="; @@ -22,7 +22,7 @@ in enable = lib.mkEnableOption "foot terminal emulator"; fontSize = lib.mkOption { type = lib.types.int; - default = 14; + default = 13; description = "Font size for the foot terminal"; }; }; @@ -34,12 +34,26 @@ in settings = { main = { font = "JetBrainsMonoNFM-Regular:size=${toString cfg.fontSize}"; - box-drawings-uses-font-glyphs = true; include = "${footTheme}"; + word-delimiters = ",│`|:\"'()[]{}<>./"; + selection-target = "both"; + dpi-aware = "yes"; }; + + search-bindings = { + find-prev = "Control+p"; + find-next = "Control+n"; + commit = "Return"; + }; + scrollback = { lines = 10000; + multiplier = 3.0; + indicator-position = "none"; }; + + security.osc52 = "enabled"; + url.osc8-underline = "always"; }; }; }; -- cgit v1.3