diff --git a/home/fish/fish.nix b/home/fish/fish.nix index 837f18e..37a5f57 100644 --- a/home/fish/fish.nix +++ b/home/fish/fish.nix @@ -1,73 +1,87 @@ { config, pkgs, ... }: { - programs.fish = { - enable = true; - package = pkgs.unstable.fish; - functions = { - }; + imports = [ + ./tide/nix-shell.nix + ]; - shellAliases = { - cat = "bat --theme=GitHub "; - l = "exa -l --color=always "; - htop = "btm --color nord-light -b --tree"; - Htop = "btm --color nord-light --tree"; + programs.fish = { + enable = true; + package = pkgs.unstable.fish; + functions = { }; - # My own commands for easy access - thisterm = "cd ~/Projects/uw/$CURRENT_TERM"; - today = "date +%F"; - }; - - interactiveShellInit = '' - set fish_greeting - - # Set up an editor alias - if test -n "$EDITOR" - alias e="$EDITOR" - else - alias e="kak" - end - - # Source iTerm2 integration - test -e ~/.iterm2_shell_integration.fish && source ~/.iterm2_shell_integration.fish - - # Enable vi keybindings - fish_vi_key_bindings - ## Set some kak-focused keybindings - bind -M default gi beginning-of-line - bind -M default gl end-of-line - ''; - plugins = [ - { - name = "tide"; - src = pkgs.fetchFromGitHub { - owner = "IlanCosman"; - repo = "tide"; - rev = "3787c725f7f6a0253f59a2c0e9fde03202689c6c"; - sha256 = "00zsib1q21bgxffjlyxf5rgcyq3h1ixwznwvid9k6mkkmwixv9lj"; - }; - } - { - name = "fzf"; - src = pkgs.fetchFromGitHub { - owner = "jethrokuan"; - repo = "fzf"; - rev = "479fa67d7439b23095e01b64987ae79a91a4e283"; - sha256 = "0k6l21j192hrhy95092dm8029p52aakvzis7jiw48wnbckyidi6v"; - }; - } - ]; + tide = { + nix-shell.enable = true; }; - # Source files - home.file = { - "fish/change_cmd.fish" = { - source = ./. + "/change_cmd.fish"; - target = ".config/fish/conf.d/change_cmd.fish"; - }; - "fish/pls.fish" = { - source = ./. + "/pls.fish"; - target = ".config/fish/conf.d/pls.fish"; - }; + shellAliases = { + cat = "bat --theme=GitHub "; + l = "exa -l --color=always "; + htop = "btm --color nord-light -b --tree"; + Htop = "btm --color nord-light --tree"; + + # My own commands for easy access + thisterm = "cd ~/Projects/uw/$CURRENT_TERM"; + today = "date +%F"; }; + + shellInit = '' + # Source brew integration + if test -e /opt/homebrew/bin/brew + /opt/homebrew/bin/brew shellenv | source + end + ''; + + interactiveShellInit = '' + set fish_greeting + + # Set up an editor alias + if test -n "$EDITOR" + alias e="$EDITOR" + else + alias e="kak" + end + + # Source iTerm2 integration + test -e ~/.iterm2_shell_integration.fish && source ~/.iterm2_shell_integration.fish + + # Enable vi keybindings + fish_vi_key_bindings + ## Set some kak-focused keybindings + bind -M default gi beginning-of-line + bind -M default gl end-of-line + ''; + plugins = [ + { + name = "tide"; + src = pkgs.fetchFromGitHub { + owner = "IlanCosman"; + repo = "tide"; + rev = "3787c725f7f6a0253f59a2c0e9fde03202689c6c"; + sha256 = "00zsib1q21bgxffjlyxf5rgcyq3h1ixwznwvid9k6mkkmwixv9lj"; + }; + } + { + name = "fzf"; + src = pkgs.fetchFromGitHub { + owner = "jethrokuan"; + repo = "fzf"; + rev = "479fa67d7439b23095e01b64987ae79a91a4e283"; + sha256 = "0k6l21j192hrhy95092dm8029p52aakvzis7jiw48wnbckyidi6v"; + }; + } + ]; + }; + + # Source files + home.file = { + "fish/change_cmd.fish" = { + source = ./. + "/change_cmd.fish"; + target = ".config/fish/conf.d/change_cmd.fish"; + }; + "fish/pls.fish" = { + source = ./. + "/pls.fish"; + target = ".config/fish/conf.d/pls.fish"; + }; + }; } diff --git a/home/fish/tide/nix-shell.nix b/home/fish/tide/nix-shell.nix new file mode 100644 index 0000000..eeddd3d --- /dev/null +++ b/home/fish/tide/nix-shell.nix @@ -0,0 +1,21 @@ +{ config, pkgs, lib, ... }: + +with lib; +let + cfg = config.programs.fish.tide.nix-shell; +in +{ + options.programs.fish.tide.nix-shell = { + enable = mkEnableOption "An indicator of having a `nix shell` environment"; + }; + + config.programs.fish = mkIf cfg.enable { + functions._tide_item_nix_shell = '' + if string match -q "/nix/store/*" $PATH + set -U tide_nix_shell_color blue + set -U tide_nix_shell_bg_color normal + _tide_print_item nix_shell "❄" + end + ''; + }; +}