From 76354e605ba312d00db52568d63a0d4bd705e415 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kier=C3=A1n=20Meinhardt?= Date: Mon, 13 Apr 2020 10:52:17 +0200 Subject: [PATCH] feat(fzf): configure and integrate into shells --- configs/default.nix | 8 ++++---- configs/fzf.nix | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 4 deletions(-) create mode 100644 configs/fzf.nix diff --git a/configs/default.nix b/configs/default.nix index 504f551..6df96c5 100644 --- a/configs/default.nix +++ b/configs/default.nix @@ -19,6 +19,7 @@ in ./docker.nix ./dunst.nix ./fonts.nix + ./fzf.nix ./git.nix ./hledger.nix ./htop.nix @@ -180,9 +181,6 @@ in take = pkgs.writers.writeDash "take" '' mkdir "$1" && cd "$1" ''; - cf = pkgs.writers.writeDash "cf" '' - cd $HOME && cd "$(${pkgs.fd}/bin/fd -t d | ${pkgs.fzf}/bin/fzf --preview="${pkgs.tree}/bin/tree -L 1 {}" --bind="space:toggle-preview" --preview-window=hidden)" - ''; in { cat = "${pkgs.bat}/bin/bat --style=plain"; chromium-incognito = "chromium --user-data-dir=$(mktemp -d /tmp/chr.XXXXXX) --no-first-run --incognito"; @@ -198,12 +196,14 @@ in mv = "mv -i"; nixi = "nix repl ''"; ns = "nix-shell --run zsh"; + s = "${pkgs.systemd}/bin/systemctl"; o = "${pkgs.xdg_utils}/bin/xdg-open"; rm = "rm -i"; take = "source ${take}"; tmux = "${pkgs.tmux}/bin/tmux -2"; + yt = "${pkgs.youtube-dl}/bin/youtube-dl --add-metadata -ic"; # Download video link + yta = "${pkgs.youtube-dl}/bin/youtube-dl --add-metadata -xic"; # Download with audio tree = "${pkgs.exa}/bin/exa --tree"; - cf = "source ${cf}"; wcd = "source ${wcd}"; weechat = "${pkgs.openssh}/bin/ssh kmein@prism.r -t tmux attach"; where = "source ${where}"; diff --git a/configs/fzf.nix b/configs/fzf.nix new file mode 100644 index 0000000..99bcfcf --- /dev/null +++ b/configs/fzf.nix @@ -0,0 +1,36 @@ +{ pkgs, lib, ... }: +{ + environment = { + systemPackages = [ pkgs.fzf ]; + variables = { + FZF_DEFAULT_OPTS = lib.escapeShellArgs [ + "--height 40%" + "--layout=reverse" + ]; + FZF_ALT_C_COMMAND = "${pkgs.fd}/bin/fd --type d"; + FZF_ALT_C_OPTS = lib.escapeShellArgs [ + "--preview '${pkgs.tree}/bin/tree -L 1 {}'" + "--bind='space:toggle-preview'" + "--preview-window=hidden" + ]; + FZF_CTRL_T_COMMAND = "${pkgs.fd}/bin/fd --type f"; + FZF_CTRL_T_OPTS = lib.escapeShellArgs [ + "--preview '${pkgs.bat}/bin/bat {}'" + ]; + }; + }; + + programs.zsh.interactiveShellInit = '' + if [[ $options[zle] = on ]]; then + . ${pkgs.fzf}/share/fzf/completion.zsh + . ${pkgs.fzf}/share/fzf/key-bindings.zsh + fi + ''; + + programs.bash.interactiveShellInit = '' + if [[ :$SHELLOPTS: =~ :(vi|emacs): ]]; then + . ${pkgs.fzf}/share/fzf/completion.bash + . ${pkgs.fzf}/share/fzf/key-bindings.bash + fi + ''; +}