{ 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 bitwarden-desktop bitwarden-cli ]; # -------------------------- # | 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 = '' 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 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"; }; }