From f7c6df838dceb0b9277b7d496439b91a7783ee67 Mon Sep 17 00:00:00 2001 From: Dave Gallant Date: Wed, 15 Dec 2021 23:52:00 -0500 Subject: [PATCH] Package up tmux-sessionizer --- common/packages.nix | 1 + home/default.nix | 2 ++ modules/overlays/default.nix | 1 + modules/overlays/tmux-sessionizer/default.nix | 22 +++++++++++++++ .../tmux-sessionizer/tmux-sessionizer | 28 +++++++++++++++++++ 5 files changed, 54 insertions(+) create mode 100644 modules/overlays/tmux-sessionizer/default.nix create mode 100755 modules/overlays/tmux-sessionizer/tmux-sessionizer diff --git a/common/packages.nix b/common/packages.nix index d899fb9..b9dc286 100644 --- a/common/packages.nix +++ b/common/packages.nix @@ -56,6 +56,7 @@ in jq ripgrep tldr + tmux-sessionizer xclip # blog diff --git a/home/default.nix b/home/default.nix index 85070d2..20f94a8 100644 --- a/home/default.nix +++ b/home/default.nix @@ -154,6 +154,7 @@ in ls = "exa -la --git"; ps = "procs"; tree = "exa --tree"; + t = "tmux-sessionizer"; }; "oh-my-zsh" = { @@ -190,6 +191,7 @@ in shell = { program = "zsh"; + args = [ "-l" "-c" "tmux" "u" ]; }; colors = { diff --git a/modules/overlays/default.nix b/modules/overlays/default.nix index 6c1eb8b..3c71f15 100644 --- a/modules/overlays/default.nix +++ b/modules/overlays/default.nix @@ -6,6 +6,7 @@ final: prev: { lpass = prev.callPackage ./lastpass { }; rfd = prev.callPackage ./rfd { }; srv = prev.callPackage ./srv { }; + tmux-sessionizer = prev.callPackage ./tmux-sessionizer { }; vpngate = prev.callPackage ./vpngate { }; yar = prev.callPackage ./yar { }; diff --git a/modules/overlays/tmux-sessionizer/default.nix b/modules/overlays/tmux-sessionizer/default.nix new file mode 100644 index 0000000..3a69d11 --- /dev/null +++ b/modules/overlays/tmux-sessionizer/default.nix @@ -0,0 +1,22 @@ +{ stdenv, lib, fetchurl }: + +stdenv.mkDerivation rec { + pname = "tmux-sessionizer"; + version = "0.0.0"; + + executable = ./tmux-sessionizer; + + phases = [ "unpackPhase" ]; # Remove all other phases + + unpackPhase = '' + mkdir -p $out/bin + cp ${executable} $out/bin/tmux-sessionizer + ''; + + meta = with lib; { + description = " + Tmux sessionizer adapted from https://sourcegraph.com/github.com/ThePrimeagen/.dotfiles@5cd09f06d6683b91c26822a73b40e3d7fb9af57a/-/blob/bin/.local/bin/tmux-sessionizer"; + platforms = platforms.unix; + }; +} + diff --git a/modules/overlays/tmux-sessionizer/tmux-sessionizer b/modules/overlays/tmux-sessionizer/tmux-sessionizer new file mode 100755 index 0000000..d8bacb0 --- /dev/null +++ b/modules/overlays/tmux-sessionizer/tmux-sessionizer @@ -0,0 +1,28 @@ +#!/usr/bin/env bash + +# Credit to ThePrimeagen for this: +# https://sourcegraph.com/github.com/ThePrimeagen/.dotfiles@5cd09f06d6683b91c26822a73b40e3d7fb9af57a/-/blob/bin/.local/bin/tmux-sessionizer + +if [[ $# -eq 1 ]]; then + selected=$1 +else + selected=$(find ~/src/github.com/davegallant ~/src/github.com/rewindio -mindepth 1 -maxdepth 1 -type d | fzf) +fi + +if [[ -z $selected ]]; then + exit 0 +fi + +selected_name=$(basename "$selected" | tr . _) +tmux_running=$(pgrep tmux) + +if [[ -z $TMUX ]] && [[ -z $tmux_running ]]; then + tmux new-session -s "$selected_name" -c "$selected" + exit 0 +fi + +if ! tmux has-session -t "$selected_name" 2> /dev/null; then + tmux new-session -ds "$selected_name" -c "$selected" +fi + +tmux switch-client -t "$selected_name"