Files
nixos-configurations/home.nix
T
0xWheatyz 02c3366bff feat: replace zellij with tmux for terminal multiplexing
Switch from zellij to tmux with vi keybindings, mouse support, and custom prefix (Ctrl-a). Updates auto-start logic in zsh to launch tmux instead of zellij.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-12 21:34:28 -04:00

203 lines
4.3 KiB
Nix

{ config, pkgs, ... }:
{
home.username = "l-wyatt";
home.homeDirectory = "/home/l-wyatt";
home.stateVersion = "25.11"; # Don't change after first setup
# Packages for this user
home.packages = with pkgs; [
kdePackages.kate
# nvim
firefox
git
zsh
python3
nmap
file
freerdp
bitwarden-desktop
bitwarden-cli
lunarvim
minicom
kicad
gnomeExtensions.blur-my-shell
gnomeExtensions.just-perfection
gnomeExtensions.arc-menu
];
# --------------------------
# | Hyprland Configuration |
# --------------------------
# Set keybinds
wayland.windowManager.hyprland = {
enable = true;
settings = {
exec-once = [
"hyprpaper"
];
"$mod" = "SUPER";
bind = [
"$mod, Q, exec, konsole"
"$mod, C, killactive"
"$mod, M, exit"
"$mod, F, exec, firefox"
];
decoration = {
rounding = 10;
blur.enabled = true;
};
};
};
# Create hyprpaper config
home.file.".config/hypr/hyprpaper.conf" = {
text = ''
preload = ~/Pictures/background.jpg
wallpaper = eDP-1,~/Pictures/background.jpg
splash = false
'';
force = true;
};
# Enable Zsh and configure it
programs.zsh = {
enable = true;
oh-my-zsh.enable = true;
oh-my-zsh.theme = "agnoster";
initContent = ''
export SHELL=$(which zsh)
alias nix-shell='nix-shell --run $SHELL'
nix() {
if [[ $1 == "develop" ]]; then
shift
command nix develop "$@" -c $SHELL
else
command nix "$@"
fi
}
if [ -n "$NIX_PROJECT_SHELL" ]; then
PROMPT="($NIX_PROJECT_SHELL)$PROMPT"
fi
# Only start tmux if we're in an interactive terminal
if [ -z "$TMUX" ] && [ "$TERM" != "linux" ]; then
exec tmux
fi
'';
};
# Manage your git configuration declaratively
programs.git = {
enable = true;
settings = {
user = {
name = "0xWheatyz";
email = "wyatt@leeworks.dev";
};
init.defaultBranch = "master";
push.autoSetupRemote = "true";
alias.lg = "log --graph --pretty=format:'%C(yellow)%h%Creset -%C(red)%d%Creset %s %Cgreen(%cr)%Creset %C(bold blue)<%an>%Creset' --abbrev-commit";
};
};
# Enable tmux (terminal multiplexing)
programs.tmux = {
enable = true;
# Basic tmux configuration
terminal = "screen-256color";
historyLimit = 10000;
keyMode = "vi";
mouse = true;
extraConfig = ''
# Set prefix to Ctrl-a instead of Ctrl-b
unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix
# Split panes using | and -
bind | split-window -h
bind - split-window -v
unbind '"'
unbind %
# Reload config file
bind r source-file ~/.config/tmux/tmux.conf
'';
};
# Neovim management
programs.neovim = {
enable = true;
defaultEditor = true;
# Load Lua config inline
extraLuaConfig = ''
vim.opt.number = true
vim.opt.tabstop = 2
vim.opt.shiftwidth = 2
vim.opt.expandtab = true
vim.opt.relativenumber = true
require("telescope").setup {}
require("nvim-treesitter.configs").setup { highlight = { enable = true } }
'';
plugins = with pkgs.vimPlugins; [
telescope-nvim
nvim-treesitter
nvim-lspconfig
gruvbox
];
};
programs.ssh = {
enable = true;
enableDefaultConfig = false;
matchBlocks = {
"*" = {
controlMaster = "auto";
controlPersist = "1m";
controlPath = "~/.ssh/cm-%r@%h:%p";
};
"vps" = {
hostname = "45.79.198.105";
user = "wyatt";
port = 22;
};
# No terminal access to this machine
"_JumpHost" = {
hostname = "localhost";
port = 2222;
user = "wyatt";
proxyJump = "vps";
};
"home" = {
hostname = "10.0.0.20";
port = 22;
user = "l-wyatt";
proxyJump = "_JumpHost";
};
"git" = {
hostname = "10.0.0.9";
port = 122;
user = "git";
};
};
# extraConfig = ''
# Host *
# ControlMaster auto
# ControlPersist 1m
# ControlPath /tmp/cm-%r@%h:%p
# '';
};
}