{ config, pkgs, username, inputs, ...}: { imports = [ inputs.nixvim.homeModules.nixvim inputs.catppuccin.homeModules.catppuccin ]; #NOTE: MUST be kept up to date with nixpkgs! home.stateVersion = "25.11"; home.username = username; home.homeDirectory = "/home/${username}"; home.packages = with pkgs; [ mpv bitwarden-desktop feh grim slurp xdg-user-dirs libqalculate ]; programs.wofi.enable = true; catppuccin.enable = true; wayland.windowManager.hyprland = { enable = true; settings = import ./hyprland/settings.nix; }; #TODO: decide on waybar programs.nixvim = { enable = true; clipboard.register = "unnamedplus"; colorschemes.catppuccin = { enable = true; settings.flavour = "mocha"; }; plugins.lualine.enable = true; plugins.telescope = { enable = true; extensions.file-browser = { enable = true; settings = { git_status = true; hijack_netrw = true; respect_gitignore = true; fzf-native.enable = true; fzf-native.settings.case_mode = "ignore_case"; }; }; }; plugins.web-devicons.enable = true; plugins.treesitter = { enable = true; folding = true; }; lsp = { inlayHints.enable = true; #TODO: keymaps servers = { "*" = { config.capabilities.textDocument.semanticTokens.multilineTokenSupport = true; config.root_markers = [ ".git" ]; }; clangd. enable = true; rust-analzyer.enable = true; rnix.enable = true; }; }; }; programs.zsh = { enable = true; # For automatic login profileExtra = '' if [ -z "$WAYLAND_DISPLAY" ] && [ "$XDG_VTNR" = 1 ]; then exec hyprland > /var/log/hypr.log fi ''; autocd = true; enableCompletion = true; autosuggestion.enable = true; syntaxHighlighting.enable = true; initContent = pkgs.lib.mkBefore '' # Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc. # Initialization code that may require console input (password prompts, [y/n] # confirmations, etc.) must go above this block; everything else may go below. if [[ -r "''${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-''${(%):-%n}.zsh" ]]; then source "''${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-''${(%):-%n}.zsh" fi ''; plugins = [ { name = "powerlevel10k"; src = "${pkgs.zsh-powerlevel10k}/share/zsh-powerlevel10k/"; file = "powerlevel10k.zsh-theme"; } { name = "p10k-config"; src = ./p10k; file = "p10k.zsh"; } ]; oh-my-zsh = { enable = true; plugins = [ "git" ]; theme = "robbyrussell"; }; }; programs.fzf = { enable = true; enableZshIntegration = true; }; programs.kitty = { enable = true; enableGitIntegration = true; #TODO: kitty config }; programs.git = { enable = true; settings.user = { email = "weckyy702@gmail.com"; name = "Weckyy702"; }; #TODO: signing }; services.hyprpaper = { enable = true; settings = let # TODO: this should be done more cleanly wallpaper_path = "/home/weckyy702/Pictures/wallpapers/horizontal_16x9.png"; in { preload = wallpaper_path; wallpaper = [ #TODO: this should be dynamic "DP-1,${wallpaper_path}" "HDMI-A-1,${wallpaper_path}" ]; }; }; services.hyprpolkitagent.enable = true; #TODO: hyprsunset? }