diff options
Diffstat (limited to 'user/settings/fish.nix')
-rw-r--r-- | user/settings/fish.nix | 73 |
1 files changed, 42 insertions, 31 deletions
diff --git a/user/settings/fish.nix b/user/settings/fish.nix index 8ed80e3e..a487418c 100644 --- a/user/settings/fish.nix +++ b/user/settings/fish.nix @@ -4,38 +4,32 @@ }: { programs.fish = { enable = true; - plugins = [ - { - name = "tide"; - src = pkgs.fetchFromGitHub { - # https://github.com/IlanCosman/tide - owner = "IlanCosman"; - repo = "tide"; - rev = "a3426e157f94b8a9cb5bcf96946b1e55625a1948"; - sha256 = "1fwqmsrd6bpf67rgj6f362abjmpk6q8yynyskc4niwg3g15diqq5"; - }; - } - { - name = "fzf"; - src = pkgs.fetchFromGitHub { - owner = "PatrickF1"; - repo = "fzf.fish"; - rev = "6d00ecc6e5b2b1313cfcb25515941ecfd5342b30"; - sha256 = "1sd5f6707hys6dibs1zb6f1imlkspqad5i24j4gf7lk9cby0zh6i"; - }; - } - { - name = "ghq"; - src = pkgs.fetchFromGitHub { - owner = "decors"; - repo = "fish-ghq"; - rev = "cafaaabe63c124bf0714f89ec715cfe9ece87fa2"; - sha256 = "0cv7jpvdfdha4hrnjr887jv1pc6vcrxv2ahy7z6x562y7fd77gg9"; - }; - } - ]; + plugins = + let + fromNixpkgs = pkg: { name = pkg.name; src = pkg.src; }; + in + with pkgs.fishPlugins; [ + (fromNixpkgs tide) + (fromNixpkgs fzf-fish) + (fromNixpkgs autopair) + { + name = "ghq"; + src = pkgs.fetchFromGitHub { + owner = "decors"; + repo = "fish-ghq"; + sha256 = "0cv7jpvdfdha4hrnjr887jv1pc6vcrxv2ahy7z6x562y7fd77gg9"; + # date = "2021-07-16T13:17:09+09:00"; + rev = "cafaaabe63c124bf0714f89ec715cfe9ece87fa2"; + }; + } + ]; + # TODO: pre-generate nix-your-shell interactiveShellInit = '' + ${pkgs.nix-your-shell}/bin/nix-your-shell --nom fish env | source bind \es __ghq_repository_search + # don't bind ctrl-t, it does nice things on macOS/BSD + set FZF_CTRL_T_COMMAND + set --export FZF_DEFAULT_OPTS '--cycle --layout=reverse --border --height=90% --preview-window=wrap --marker="*"' fzf_configure_bindings --directory=\cx\cf ''; shellAliases = { @@ -51,7 +45,24 @@ functions = { ds = "du -hd1 $argv[1] | sort -h"; last_history_item = "echo $history[1]"; - }; + } // (lib.attrsets.optionalAttrs pkgs.stdenv.isLinux { + open = '' + argparse h/help a/application -- $argv + or return + + if set -ql _flag_help + echo "open [-h|--help] [-a application] [arguments...]" + return 1 + end + + if set -ql _flag_application + # TODO: support reverse-domain- named files (e.g. org.kde.kate.desktop) + ${pkgs.gtk3}/bin/gtk-launch $argv[1] + else + xdg-open $argv + end + ''; + }); }; xdg.configFile."fish/completions" = { recursive = true; |