diff --git a/home/default.nix b/home/default.nix index e88beb1..85b10af 100644 --- a/home/default.nix +++ b/home/default.nix @@ -197,7 +197,7 @@ in m = "make"; nix-install = "nix-env -iA"; ps = "procs"; - t = "tms"; + t = "cd-fzf"; ts = "tms switch"; tf = "terraform"; tree = "eza --tree"; diff --git a/overlays/cd-fzf/cd-fzf b/overlays/cd-fzf/cd-fzf new file mode 100755 index 0000000..c437f24 --- /dev/null +++ b/overlays/cd-fzf/cd-fzf @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +set -euo pipefail + +readarray -t directories < ~/.config/cd-fzf + +if [[ $# -eq 1 ]]; then + selected=$1 +else + selected=$(find "${directories[@]}" -mindepth 1 -maxdepth 1 -type d | fzf --exact) +fi +if [[ -z $selected ]]; then + exit 0 +fi + +cd "$selected" +$SHELL diff --git a/overlays/cd-fzf/default.nix b/overlays/cd-fzf/default.nix new file mode 100644 index 0000000..7f8fe80 --- /dev/null +++ b/overlays/cd-fzf/default.nix @@ -0,0 +1,16 @@ +{ stdenv, lib, fetchurl, }: +stdenv.mkDerivation rec { + pname = "cd-fzf"; + version = "0.0.1"; + executable = ./cd-fzf; + phases = [ "unpackPhase" ]; # Remove all other phases + unpackPhase = '' + mkdir -p $out/bin + cp ${executable} $out/bin/cd-fzf + ''; + meta = with lib; { + description = + "\n Fuzzy find change directory"; + platforms = platforms.unix; + }; +} diff --git a/overlays/default.nix b/overlays/default.nix index f633440..7a539db 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -1,4 +1,5 @@ final: prev: { + cd-fzf = prev.callPackage ./cd-fzf { }; sbx-h6-rgb = prev.callPackage ./sbx-h6-rgb { }; vpngate = prev.callPackage ./vpngate { }; } diff --git a/packages.nix b/packages.nix index f2419c2..dc1ac77 100644 --- a/packages.nix +++ b/packages.nix @@ -22,6 +22,7 @@ in # modern cli bat + cd-fzf doggo eza fd