{ config, lib, pkgs, ... }: { options = { window_manager = { hyprland= { enable = lib.mkEnableOption "enable hyprland"; monitors = lib.mkOption { default = [ ",preferred,auto,1" ]; description = ''declare monitors''; }; numlock = lib.mkEnableOption "numlock by default"; }; }; }; config = lib.mkIf config.window_manager.hyprland.enable { xdg.portal = { enable = true; configPackages = [ pkgs.xdg-desktop-portal-hyprland ]; extraPortals = [ pkgs.xdg-desktop-portal-hyprland ]; }; programs = { hyprlock = { enable = true; }; }; wayland.windowManager.hyprland = { enable = true; settings = { monitor = config.window_manager.hyprland.monitors; exec-once = [ (lib.mkIf (config.window_manager.walker.enable) "elephant") (lib.mkIf (config.window_manager.waybar.enable) "waybar") (lib.mkIf (config.window_manager.wallpaper.enable) "waypaper --restore --random") ]; "$mod" = "SUPER"; "$shiftmod" = "SUPER_SHIFT"; bind = [ (lib.mkIf (config.window_manager.walker.enable) "$mod, D, exec, walker") (lib.mkIf (config.terminal.kitty.enable) "$mod, return, exec, kitty") "$shiftmod, Q, killactive," ]; input = { kb_layout = "de"; numlock_by_default = config.window_manager.hyprland.numlock; follow_mouse = 2; mouse_refocus = false; accel_profile = "flat"; sensitivity = 0.2; touchpad = { natural_scroll = "no"; disable_while_typing = true; }; }; cursor = { inactive_timeout = 0; no_warps = true; }; decoration = { rounding = 20; blur = { enabled = true; size = 3; passes = 1; }; shadow = { range = 4; render_power = 3; color = "rgba(1a1a1aee)"; }; }; }; }; home.sessionVariables.NIXOS_OZONE_WL = "1"; }; }