{ lib, config, pkgs, inputs, ... }: let cfg = config.snowhawk.hyprland; in { options.snowhawk.hyprland = { enable = lib.mkEnableOption "hyprland"; }; config = lib.mkIf cfg.enable (lib.mkMerge [ # Core Module { services.graphical-desktop.enable = lib.mkDefault true; services.displayManager = { enable = true; sddm = { enable = lib.mkDefault true; wayland.enable = lib.mkDefault true; }; }; security = { polkit.enable = lib.mkDefault true; }; programs = { dconf.enable = lib.mkDefault true; xwayland.enable = lib.mkDefault true; }; xdg.portal = { enable = true; extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; }; programs.waybar.enable = true; programs.hyprland = { enable = true; withUWSM = true; xwayland.enable = true; }; services.hypridle.enable = true; systemd.user.services.hypridle.path = [ pkgs.brightnessctl ]; # programs.hyprlock.enable = true; # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1050913 xdg.portal.config.hyprland.default = lib.mkDefault [ "wlr" "gtk" ]; services.xserver.desktopManager.runXdgAutostartIfNone = lib.mkDefault true; environment.variables = { QT_QPA_PLATFORM = "wayland;xcb"; MOZ_ENABLE_WAYLAND = 1; SDL_VIDEODRIVEWR = "wayland,x11"; _JAVA_AWT_WM_NONREPARENTING = 1; }; environment.systemPackages = with pkgs; [ # Screenshotting grim slurp satty # Hardware Control brightnessctl # Desktop wofi kitty pipewire-controller # Wayland Utilities wdisplays xorg.xlsclients wl-clipboard ]; home-manager.sharedModules = [ ./home/hyprland.nix ]; } # SDDM Theme ( let sddmPkg = (pkgs.sddm-astronaut.override { embeddedTheme = "purple_leaves"; }); in { services.displayManager = { enable = lib.mkDefault true; sddm = { enable = lib.mkDefault true; wayland.enable = lib.mkDefault true; theme = "sddm-astronaut-theme"; package = pkgs.kdePackages.sddm; extraPackages = with pkgs; [ sddmPkg kdePackages.qtsvg kdePackages.qtvirtualkeyboard kdePackages.qtmultimedia ]; }; }; environment.systemPackages = [ sddmPkg ]; } ) # Anyrun { home-manager.sharedModules = [{ imports = [ inputs.anyrun.homeManagerModules.default ]; programs.anyrun = { enable = true; config = { x = { fraction = 0.5; }; y = { fraction = 0.3; }; width = { fraction = 0.3; }; layer = "overlay"; showResultsImmediately = true; hidePluginInfo = true; plugins = [ inputs.anyrun.packages.${pkgs.system}.applications ]; }; extraCss = /* css */ '' window { background: transparent; } ''; }; }]; } ]); }