{ config, lib, pkgs, inputs, osConfig, ... }: { options = { desktop = { hyprland = { monitors = lib.mkOption { default = [ ",preferred,auto,1" ]; description = "declare monitors"; }; workspaces = { workspaces = lib.mkOption { default = ( builtins.concatLists ( builtins.genList ( i: let ws = i + 1; in [ "${toString i},persistent:true" ] ) config.desktop.hyprland.workspaces.amount ) ); description = "declare workspace"; }; amount = lib.mkOption { default = 9; description = "declare workspace amount"; }; }; numlock = lib.mkEnableOption "numlock by default"; }; }; }; config = lib.mkIf osConfig.desktop.window-managers.hyprland.enable { xdg.portal = { enable = true; configPackages = [ inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland ]; extraPortals = [ inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland pkgs.xdg-desktop-portal-xapp pkgs.xdg-desktop-portal-gtk ]; config.common = { "org.freedesktop.portal.OpenURI" = [ "*" "hyprland" ]; }; }; wayland.windowManager.hyprland = { enable = true; xwayland.enable = true; configType = "lua"; systemd = { enable = false; variables = [ "--all" ]; }; package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland; # settings = { # monitor = config.desktop.hyprland.monitors; # workspace = config.desktop.hyprland.workspaces.workspaces; # env = [ # "XDG_CURRENT_DESKTOP,Hyprland" # "XDG_SESSION_TYPE,wayland" # "XDG_SESSION_DESKTOP,Hyprland" # ]; # exec-once = [ # (lib.mkIf (osConfig.desktop.shell.walker.enable) "elephant") # (lib.mkIf (osConfig.desktop.shell.walker.enable) "walker --gapplication-service") # (lib.mkIf (osConfig.desktop.shell.waybar.enable) "waybar") # (lib.mkIf (osConfig.desktop.shell.noctalia.enable) "noctalia-shell") # (lib.mkIf (osConfig.desktop.shell.noctalia.enable) "noctalia-shell ipc call wallpaper random") # (lib.mkIf (osConfig.desktop.shell.swww.enable) "waypaper --restore --random") # (lib.mkIf (osConfig.apps.gaming.steam.enable) "adwaita-steam-gtk -u; steam -silent") # (lib.mkIf (osConfig.apps.internet.mail.providers.protonmail.enable) "protonmail-bridge -n") # "echo $HYPRLAND_INSTANCE_SIGNATURE > ~/.config/hypr/instance_signature" # ]; # "$mod" = "SUPER"; # bind = [ # (lib.mkIf (osConfig.desktop.shell.walker.enable) "$mod, D, exec, noctalia-shell ipc call launcher toggle || walker") # (lib.mkIf (osConfig.desktop.shell.rofi.enable) "$mod, D, exec, noctalia-shell ipc call launcher toggle || rofi -show drun") # "$mod, return, exec, ${osConfig.apps.terminal.binary}" # (lib.mkIf (osConfig.desktop.utilities.grimblast.enable) ", print, exec, GRIMBLAST_EDITOR=gradia grimblast edit area") # (lib.mkIf (osConfig.desktop.shell.walker.enable && osConfig.apps.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\"); sleep 30; rbw lock" # ) # "$mod, F, fullscreen, 1" # "$mod SHIFT, F, fullscreen, 0" # "$mod SHIFT, Q, killactive," # "$mod, S, togglespecialworkspace, magic" # "$mod, O, exec, zen" # "$mod SHIFT, S, movetoworkspace, special:magic" # "$mod CTRL, right, workspace, m+1" # "$mod CTRL, left, workspace, m-1" # "$mod, mouse_down, workspace, m-1" # "$mod, mouse_up, workspace, m+1" # "$mod, left, movefocus, l" # "$mod, right, movefocus, r" # "$mod, up, movefocus, u" # "$mod, down, movefocus, d" # "$mod, J, exec, playerctl previous" # "$mod, K, exec, playerctl play-pause" # "$mod, L, exec, playerctl next" # "$mod, G, togglefloating," # "$mod, F1, exec, hyprlock" # "$mod SHIFT, E, exec, codium" # "$mod CTRL, up, exec, light -A 10" # "$mod CTRL, down, exec, light -U 10" # "$mod CTRL, Q, exec, hyprctl kill" # ] # ++ (builtins.concatLists ( # builtins.genList ( # i: # let # ws = i + 1; # in # [ # "$mod, code:1${toString i}, workspace, ${toString ws}" # "$mod SHIFT, code:1${toString i}, movetoworkspacesilent, ${toString ws}" # ] # ) config.desktop.hyprland.workspaces.amount # )); # bindm = [ # "$mod, mouse:272, movewindow" # "$mod, mouse:273, resizewindow" # ]; # bindel = [ # ",XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+" # ",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" # ]; # 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"; }; }