{ pkgs, lib, exclude_packages ? [ ], }: let # Essential Hyprland packages - cannot be excluded hyprlandPackages = with pkgs; [ hyprshot hyprpicker hyprsunset brightnessctl pamixer playerctl gnome-themes-extra wiremix pyprland jolt wl-clipboard wl-clip-persist wf-recorder ffmpeg impala bluetui jocalsend rose-pine-hyprcursor bibata-cursors ]; # Essential system packages - cannot be excluded systemPackages = with pkgs; [ git vim libnotify nautilus alejandra clipse fzf zoxide ripgrep eza fd curl unzip wget gnumake jq swayimg wob killall ]; # Discretionary packages - can be excluded by user discretionaryPackages = with pkgs; [ # TUIs lazygit lazydocker btop powertop fastfetch # GUIs vlc signal-desktop ]; # Only allow excluding discretionary packages to prevent breaking the system filteredDiscretionaryPackages = lib.lists.subtractLists exclude_packages discretionaryPackages; allSystemPackages = hyprlandPackages ++ systemPackages ++ filteredDiscretionaryPackages; in { # Regular packages systemPackages = allSystemPackages; homePackages = with pkgs; [ ]; }