dotfiles/modules/darwin/utilities.nix
2022-06-14 07:43:59 -04:00

130 lines
3.3 KiB
Nix

{ pkgs, ... }: {
home-manager.users.${config.user} = {
programs.tmux = {
enable = true;
baseIndex = 1; # Start windows and panes at 1
escapeTime = 0; # Wait time after escape is input
historyLimit = 100000;
keyMode = "vi";
newSession = true; # Automatically spawn new session
plugins = [ ];
resizeAmount = 10;
shell = "${pkgs.fish}/bin/fish";
terminal = "screen-256color";
extraConfig = ''
# Horizontal and vertical splits
bind \\ split-window -h -c '#{pane_current_path}'
bind - split-window -v -c '#{pane_current_path}'
# Move between panes with vi keys
bind h select-pane -L
bind j select-pane -D
bind K select-pane -U
bind l select-pane -R
# Split out pane
bind b break-pane
# Synchronize panes
bind S set-window-option synchronize-panes
# Copy mode works as Vim
bind Escape copy-mode
bind k copy-mode
bind C-[ copy-mode
# Use v to trigger selection
bind-key -T copy-mode-vi v send-keys -X begin-selection
# Use y to yank current selection
bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel
# Enable mouse mode
set -g mouse on
# Status bar
set -g status-interval 60 # Seconds between refreshes
set -g renumber-windows on
set-option -g status-position bottom
'';
};
home.packages = [
visidata # CSV inspector
dos2unix # Convert Windows text files
inetutils # Includes telnet
youtube-dl # Convert web videos
pandoc # Convert text documents
mpd # TUI slideshows
awscli2
awslogs
kubectl
k9s
noti # Create notifications programmatically
];
programs.alacritty.settings = {
shell = {
program = "${pkgs.fish}/bin/fish";
args = [
"--login"
"--init-command"
"tmux attach-session -t noah || tmux new-session -s noah"
];
};
keybindings = [
{
key = "F";
mods = "Super";
action = "ToggleSimpleFullscreen";
}
{
key = "L";
mods = "Super";
chars = "\\x1F";
}
{
key = "H";
mods = "Super|Shift";
action = "x02p"; # Previous tmux window
}
{
key = "L";
mods = "Super|Shift";
action = "x02n"; # Next tmux window
}
];
};
fonts.fonts = with pkgs;
[ (nerdfonts.override { fonts = [ "fira-mono" ]; }) ];
home.file.hammerspoon = { source = ./hammerspoon; };
};
homebrew = {
enable = true;
autoUpdate = false; # Don't update during rebuild
cleanup = "zap"; # Uninstall all programs not declared
taps = [
"homebrew/cask-drivers" # Used for Logitech G-Hub
];
brews = [
"trash" # Delete to trash instead of rm
];
casks = [
"scroll-reverser" # Different scroll style for mouse vs. trackpad
"meetingbar" # Show meetings in menu bar
"gitify" # Git notifications in menu bar
"hammerspoon" # MacOS custom automation scripting
"logitech-g-hub" # Mouse and keyboard management
];
global.brewfile = true;
global.nolock = true;
};
}