Files
nixos-configurations/home.nix
T

162 lines
3.3 KiB
Nix

{ config, pkgs, ... }:
{
home.username = "l-wyatt";
home.homeDirectory = "/home/l-wyatt";
home.stateVersion = "25.05"; # Don't change after first setup
# Packages for this user
home.packages = with pkgs; [
kdePackages.kate
# nvim
firefox
git
zsh
python3
nmap
file
freerdp
];
# --------------------------
# | Hyprland Configuration |
# --------------------------
# Set keybinds
wayland.windowManager.hyprland = {
enable = true;
settings = {
"$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;
};
# Run hyprpaper to set wallpaper
wayland.windowManager.hyprland.settings = {
exec-once = [
"hyprpaper"
];
};
# Enable Zsh and configure it
home.file.".zshrc".force = true;
programs.zsh = {
enable = true;
oh-my-zsh.enable = true;
oh-my-zsh.theme = "agnoster";
initContent = ''
# Only start Zellij if we're in an interactive terminal
if [ -z "$ZELLIJ" ] && [ "$TERM" != "linux" ]; then
exec zellij
fi
'';
};
# Manage your git configuration declaratively
programs.git = {
enable = true;
userName = "0xWheatyz";
userEmail = "wyatt@leeworks.dev";
extraConfig = {
init.defaultBranch = "master";
push.autoSetupRemote = "true";
};
};
# Enable zellij (terminal multiplexing)
programs.zellij = {
enable = true;
# Optional: write your own config to ~/.config/zellij/config.kdl
settings = {
theme = "default";
pane_frames = true;
default_layout = "compact";
};
};
# 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;
matchBlocks = {
"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";
};
"git" = {
hostname = "10.0.0.9";
port = 122;
user = "git";
};
};
# extraConfig = ''
# Host *
# ControlMaster auto
# ControlPersist 1m
# ControlPath /tmp/cm-%r@%h:%p
# '';
controlMaster = "auto";
controlPersist = "1m";
controlPath = "~/.ssh/cm-%r@%h:%p";
};
}