{ 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 # ''; }; }