{ config, lib, pkgs, ... }: { options = { desktop = { 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.desktop.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.desktop.hyprland.monitors; exec-once = [ (lib.mkIf (config.desktop.walker.enable) "elephant") (lib.mkIf (config.desktop.waybar.enable) "waybar") (lib.mkIf (config.desktop.wallpaper.enable) "waypaper --restore --random") ]; "$mod" = "SUPER"; "$shiftmod" = "SUPER_SHIFT"; bind = [ (lib.mkIf (config.desktop.walker.enable) "$mod, D, exec, walker") (lib.mkIf (config.desktop.rofi.enable) "$mod, D, exec, rofi -show drun") (lib.mkIf (config.terminal.kitty.enable) "$mod, return, exec, kitty") (lib.mkIf (config.desktop.grimblast.enable) ", print, exec, GRIMBLAST_EDITOR=gradia grimblast edit area") (lib.mkIf (config.desktop.rofi.enable) (lib.mkIf (config.misc.bitwarden.enable) "$mod, B, exec, rbw unlocked || kitty --class kitty-floating -e rbw unlock; rofi-rbw")) (lib.mkIf (config.desktop.walker.enable) ( lib.mkIf (config.misc.bitwarden.enable) "$mod, B, exec, rbw unlocked || kitty --class kitty-floating -e rbw unlock; selected=$(rbw list | walker -d); wl-copy $(rbw get $selected)")) "$mod, F, fullscreen, 1" "$shiftmod, F, fullscreen, 0" "$shiftmod, Q, killactive," ]; input = { kb_layout = "de"; numlock_by_default = config.desktop.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"; }; }