From 957e95b11ef066694b266edb4e4ed4db698547d7 Mon Sep 17 00:00:00 2001 From: Seth Flynn Date: Mon, 3 Feb 2025 21:28:29 -0500 Subject: seth/fish: use hydro for prompt --- users/seth/programs/default.nix | 2 +- users/seth/programs/fish.nix | 66 +++++++++++++++++++++++++++++++ users/seth/programs/fish/default.nix | 48 ---------------------- users/seth/programs/fish/fish_prompt.fish | 44 --------------------- 4 files changed, 67 insertions(+), 93 deletions(-) create mode 100644 users/seth/programs/fish.nix delete mode 100644 users/seth/programs/fish/default.nix delete mode 100644 users/seth/programs/fish/fish_prompt.fish (limited to 'users/seth') diff --git a/users/seth/programs/default.nix b/users/seth/programs/default.nix index cb27960..6b1c337 100644 --- a/users/seth/programs/default.nix +++ b/users/seth/programs/default.nix @@ -12,7 +12,7 @@ ./bash.nix ./chromium.nix ./firefox - ./fish + ./fish.nix ./gh.nix ./git.nix ./gpg.nix diff --git a/users/seth/programs/fish.nix b/users/seth/programs/fish.nix new file mode 100644 index 0000000..e5f7a23 --- /dev/null +++ b/users/seth/programs/fish.nix @@ -0,0 +1,66 @@ +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.seth.programs.fish; +in +{ + options.seth.programs.fish = { + enable = lib.mkEnableOption "Fish configuration"; + hydro.enable = lib.mkEnableOption "Hydra prompt" // { + default = true; + }; + }; + + config = lib.mkIf cfg.enable ( + lib.mkMerge [ + { + programs.fish = { + enable = true; + + functions = { + last_history_item.body = "echo $history[1]"; + }; + + shellAbbrs = { + nixgc = "sudo nix-collect-garbage -d && nix-collect-garbage -d"; + "!!" = { + position = "anywhere"; + function = "last_history_item"; + }; + }; + }; + } + + (lib.mkIf cfg.hydro.enable { + programs.fish = { + interactiveShellInit = '' + set --global hydro_symbol_prompt ">" + ''; + + plugins = [ + { + name = "hydro"; + inherit (pkgs.fishPlugins.hydro) src; + } + ]; + }; + }) + + # TODO: do i still need this weird sourcing? + (lib.mkIf config.seth.standalone.enable { + programs.fish = { + interactiveShellInit = '' + set -l nixfile ${config.home.homeDirectory}/.nix-profile/etc/profile.d/nix.fish + if test -e $nixfile + source $nixfile + end + ''; + }; + }) + ] + ); +} diff --git a/users/seth/programs/fish/default.nix b/users/seth/programs/fish/default.nix deleted file mode 100644 index 84b9370..0000000 --- a/users/seth/programs/fish/default.nix +++ /dev/null @@ -1,48 +0,0 @@ -{ - config, - lib, - ... -}: -let - cfg = config.seth.programs.fish; -in -{ - options.seth.programs.fish = { - enable = lib.mkEnableOption "Fish configuration"; - }; - - config = lib.mkIf cfg.enable ( - lib.mkMerge [ - { - programs.fish = { - enable = true; - - functions = { - last_history_item.body = "echo $history[1]"; - fish_prompt = lib.readFile ./fish_prompt.fish; - }; - - shellAbbrs = { - nixgc = "sudo nix-collect-garbage -d && nix-collect-garbage -d"; - "!!" = { - position = "anywhere"; - function = "last_history_item"; - }; - }; - }; - } - - # TODO: do i still need this weird sourcing? - (lib.mkIf config.seth.standalone.enable { - programs.fish = { - interactiveShellInit = '' - set -l nixfile ${config.home.homeDirectory}/.nix-profile/etc/profile.d/nix.fish - if test -e $nixfile - source $nixfile - end - ''; - }; - }) - ] - ); -} diff --git a/users/seth/programs/fish/fish_prompt.fish b/users/seth/programs/fish/fish_prompt.fish deleted file mode 100644 index 5bee872..0000000 --- a/users/seth/programs/fish/fish_prompt.fish +++ /dev/null @@ -1,44 +0,0 @@ -# SPDX-SnippetCopyrightText: Lily Ballard -# -# SPDX-License-Identifier: GPL-2.0-only -# -# https://github.com/fish-shell/fish-shell/blob/b570c7f6a6a6b9c5c6638d5bc86943342f7d5b5a/share/functions/fish_prompt.fish - -function fish_prompt --description 'Write out the prompt' - set -l last_pipestatus $pipestatus - set -lx __fish_last_status $status # Export for __fish_print_pipestatus. - set -l normal (set_color normal) - set -q fish_color_status - or set -g fish_color_status red - - # Color the prompt differently when we're root - set -l color_cwd $fish_color_cwd - set -l suffix '>' - if functions -q fish_is_root_user; and fish_is_root_user - if set -q fish_color_cwd_root - set color_cwd $fish_color_cwd_root - end - set suffix '#' - end - - # Write pipestatus - # If the status was carried over (if no command is issued or if `set` leaves the status untouched), don't bold it. - set -l bold_flag --bold - set -q __fish_prompt_status_generation; or set -g __fish_prompt_status_generation $status_generation - if test $__fish_prompt_status_generation = $status_generation - set bold_flag - end - set __fish_prompt_status_generation $status_generation - set -l status_color (set_color $fish_color_status) - set -l statusb_color (set_color $bold_flag $fish_color_status) - set -l prompt_status (__fish_print_pipestatus "[" "]" "|" "$status_color" "$statusb_color" $last_pipestatus) - - set -l snowflake '❄️' - set -l nix_shell_info ( - if test -n "$IN_NIX_SHELL" - echo -n -s $snowflake" " - end - ) - - echo -n -s (prompt_login)' ' (set_color $color_cwd) (prompt_pwd) $normal (fish_vcs_prompt) $normal " " $nix_shell_info $prompt_status $suffix " " -end -- cgit v1.2.3