{ 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 ghostty 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 ''; }; # Configure cursor theme home.pointerCursor = { gtk.enable = true; x11.enable = true; name = "Adwaita"; package = pkgs.adwaita-icon-theme; size = 24; }; # Set Ghostty as default terminal dconf.settings = { "org/gnome/desktop/default-applications/terminal" = { exec = "ghostty"; exec-arg = ""; }; }; # 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; # Optional: customize tmux settings extraConfig = '' # Enable mouse support set -g mouse on # Start window numbering at 1 set -g base-index 1 # Set terminal colors set -g default-terminal "screen-256color" ''; }; # Neovim management - using kickstart.nvim via flake # Basic fallback config (uncomment if not using the flake) #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 # ]; #}; # Use kickstart.nvim configuration from flake programs.neovim-kickstart.enable = true; # Claude Code configuration home.file.".claude/settings.json" = { text = builtins.toJSON { permissions = { allow = [ "Edit" "Write" "Bash(git *)" ]; }; customInstructions = "When working in a git repository, always use conventional commits format (e.g., feat:, fix:, docs:, style:, refactor:, test:, chore:) for commit messages."; }; }; 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.1.10"; port = 22; user = "git"; }; }; # extraConfig = '' # Host * # ControlMaster auto # ControlPersist 1m # ControlPath /tmp/cm-%r@%h:%p # ''; }; }