feat: Dump of updates

This commit is contained in:
Glen Goodwin 2023-06-19 02:58:07 -04:00
parent 81504a006e
commit e6c53843b4
12 changed files with 274 additions and 35 deletions

View file

@ -16,6 +16,7 @@
environment.systemPackages = with pkgs; [
docker-compose
distrobox
kind
];
}

View file

@ -26,7 +26,7 @@
nvim-lspconfig
nvim-tree-lua
nvim-ts-rainbow
(nvim-treesitter.withPlugins (_: pkgs.tree-sitter.allGrammars))
nvim-treesitter.withAllGrammars
plenary-nvim
telescope-fzy-native-nvim
telescope-nvim

View file

@ -26,8 +26,7 @@
background-color: rgba(80,100,100,0.4);
}
window#waybar {
background-color: rgba(0,0,0,0.5);
background: transparent;
background-color: rgba(0,0,0,0.8);
transition-property: background-color;
transition-duration: .5s;
border-bottom: none;

View file

@ -11,6 +11,15 @@
};
};
programs.zsh = {
shellAliases = {
trackme = "git branch --set-upstream-to=origin/$(git symbolic-ref --short HEAD)";
rebasemain = "git pull origin main --rebase";
};
};
home.packages = with pkgs; [
cocogitto
lazygit

141
modules/shell/tmux/home.nix Normal file
View file

@ -0,0 +1,141 @@
{ pkgs, config, ... }:
{
programs.tmux = {
enable = true;
clock24 = true;
plugins = with pkgs.tmuxPlugins; [
sensible
yank
{
plugin = power-theme;
extraConfig = ''
set -g @tmux_power_theme 'sky'
'';
}
resurrect
continuum
];
extraConfig = ''
bind -n M-r source-file ~/.config/tmux/tmux.conf
set -g mouse on
set-option -g status-position top
bind-key g display-popup -h 95% -w 95% -E 'lazygit'
bind-key t display-popup -h 95% -w 95% -E "${pkgs.htop}/bin/htop"
bind C-g display-popup -E "tat ~/gallery"
bind -n M-g display-popup -E "tmux new-session -A -s scratch"
bind -n M-b switch-client -l
bind -n M-p previous-window
bind -n M-n next-window
bind -n M-P switch-client -p
bind -n M-N switch-client -n
unbind f
bind f resize-pane -Z
# create session
bind C-c new-session
# split current window horizontally
bind - split-window -v
# split current window vertically
bind _ split-window -h
# Select Layouts
#―――――――――――――――――
bind -n M-a select-layout main-vertical
bind -n M-A select-layout main-horizontal
bind -n M-E select-layout even-vertical
bind -n M-V select-layout even-horizontal
# pane navigation
bind -r h select-pane -L # move left
bind -r j select-pane -D # move down
bind -r k select-pane -U # move up
bind -r l select-pane -R # move right
bind > swap-pane -D # swap current pane with the next one
bind < swap-pane -U # swap current pane with the previous one
# pane resizing
bind -r H resize-pane -L 2
bind -r J resize-pane -D 2
bind -r K resize-pane -U 2
bind -r L resize-pane -R 2
bind -r c-f resize-pane -Z
# window navigation
unbind n
unbind p
setw -g mode-keys vi
bind Enter copy-mode # enter copy mode
bind -T copy-mode-vi v send -X begin-selection
bind -T copy-mode-vi C-v send -X rectangle-toggle
bind -T copy-mode-vi y send -X copy-selection-and-cancel
bind -T copy-mode-vi Escape send -X cancel
bind -T copy-mode-vi H send -X start-of-line
bind -T copy-mode-vi L send -X end-of-line
# -- buffers -------------------------------------------------------------------
bind b list-buffers # list paste buffers
bind p paste-buffer -p # paste from the top paste buffer
bind P choose-buffer # choose which buffer to paste from
# -- display -------------------------------------------------------------------
set -g base-index 1 # start windows numbering at 1
setw -g pane-base-index 1 # make pane numbering consistent with windows
set -g renumber-windows on # renumber windows when a window is closed
bind k display-popup -E "\
tmux list-sessions -F '#{?session_attached,,#{session_name}}' |\
fzf --reverse -m --header=kill-session |\
xargs -I {} tmux kill-session -t {}"
bind C-j display-popup -E "\
tmux list-sessions -F '#{?session_attached,,#{session_name}}' |\
sed '/^$/d' |\
fzf --reverse --header jump-to-session --preview 'tmux capture-pane -pt {}' |\
xargs tmux switch-client -t"
'';
};
programs.tmate = {
enable = true;
};
home.packages = [
# Open tmux for current project.
(pkgs.writeShellApplication {
name = "tat";
runtimeInputs = [ pkgs.tmux pkgs.fzf ];
text = builtins.readFile ./ta.sh;
})
pkgs.fzf
];
programs.zsh = {
shellAliases = {
tx = "tmux new -s default";
ta = "tmux attach -t";
tad = "tmux attach -d -t";
ts = "tmux new-session -s";
tl = "tmux list-sessions";
tksv = "tmux kill-server";
tkss = "tmux kill-session -t";
};
};
}

77
modules/shell/tmux/ta.sh Normal file
View file

@ -0,0 +1,77 @@
#!/bin/bash
not_in_tmux() {
[ -z "$TMUX" ]
}
DIR="$1"
# If no arguments are passed in, try to immediately attach or start without further input
echo "$DIR"
if [ -z "$DIR" ]; then
if not_in_tmux; then
tmux attach && exit 1 || DIR="--start"
else
exit 1
fi
fi
# If --start was passed in, immediately start a new session based on the current directory
if [ "$DIR" = "--start" ]; then
echo "Starting"
path_name="$(basename "$PWD" | tr . -)"
session_name="${path_name//./_}"
else
# Ask the user which directory to start in
_session_name=$(cd "$DIR" && find -L . -maxdepth 1 -type d -printf "%f\n" | sed "s|/||g" | fzf --reverse --header="Select project from $(basename "$DIR") >")
session_name="${_session_name//./_}"
path_name="$DIR/$_session_name"
fi
echo "Session name is \"$session_name\""
echo "Path name is \"$path_name\""
if [ -z "$session_name" ]; then
# Operation cancelled by user
exit 1
fi
session_exists() {
# Check if the $session_name exists
tmux has-session -t "=$session_name"
}
create_detached_session() {
if [ "$DIR" = "--start" ]; then
(TMUX=''
tmux new-session -Ad -s "$session_name" -c "$path_name"
)
else
(TMUX=''
tmux new-session -Ad -s "$session_name" -c "$path_name"
tmux split-window -vb -t "$session_name" -c "$path_name" -p 70
tmux send-keys -t "$session_name" "nvim '+Telescope find_files'" Enter
)
fi
}
create_if_needed_and_attach() {
if not_in_tmux; then
tmux new-session -As "$session_name" -c "$path_name"
else
if ! session_exists; then
create_detached_session
fi
tmux switch-client -t "$session_name"
fi
}
attach_to_first_session() {
first_session_name=$(tmux list-sessions -F "#{session_name}" | head -n 1)
if [ -n "$first_session_name" ]; then
tmux attach -t "$first_session_name"
tmux choose-tree -Za
fi
}
create_if_needed_and_attach || attach_to_first_session

View file

@ -22,7 +22,7 @@
# Hook direnv
#emulate zsh -c "$(direnv hook zsh)"
# Swag
${pkgs.nitch}/bin/nitch
#${pkgs.nitch}/bin/nitch
#eval "$(direnv hook zsh)"
eval "$(atuin init zsh)"

View file

@ -4,6 +4,7 @@
enable = true;
shellAliases = {
update = "sudo nixos-rebuild switch";
clean = "nix-collect-garbage -d";
reload = "source ~/.zshrc";
"." = "cd ../";