{ config, inputs, ... }: let modulesHomeManager = config.flake.modules.homeManager; in { flake.modules.nixos.hyprland = {...}: { imports = with config.flake.modules.nixos; [ hyprlock ] ++ [config.flake.modules.nixos.groupCompositor]; programs.hyprland.enable = true; }; flake.modules.homeManager.hyprland = { config, lib, pkgs, ... }: let cfg = config.arta.hyprland; in { imports = with modulesHomeManager; [ hyprlock hypridle ] ++ [ modulesHomeManager.groupCompositor inputs.hyprcursor-phinger.homeManagerModules.hyprcursor-phinger ]; options.arta.hyprland = { extraConfig = lib.mkOption { type = lib.types.lazyAttrsOf lib.types.unspecified; default = {}; }; }; config = { programs.hyprcursor-phinger.enable = true; home.pointerCursor = { package = pkgs.phinger-cursors; name = "phinger-cursors-light"; size = 24; gtk.enable = true; }; wayland.windowManager.hyprland = { enable = true; package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland; plugins = [ inputs.hy3.packages.${pkgs.stdenv.hostPlatform.system}.hy3 ]; settings = lib.mkMerge [ { input = { kb_layout = "us,fi,no"; kb_options = "grp:win_space_toggle,ctrl:nocaps"; touchpad = { disable_while_typing = false; }; }; misc = { middle_click_paste = false; }; ecosystem = { no_update_news = true; no_donation_nag = true; }; general.layout = "hy3"; plugin = { hy3 = { tabs = { height = 8; padding = 4; radius = 0; border_width = 4; render_text = false; "col.active" = "0xff7298bf"; "col.active.border" = "0xff7298bf"; "col.inactive" = "0xff3f546a"; "col.inactive.border" = "0xff3f546a"; blur = false; }; }; }; # Style general = { border_size = 4; gaps_in = 4; gaps_out = 8; "col.active_border" = "0xff7298bf"; "col.inactive_border" = "0xff3f546a"; }; decoration = { shadow.enabled = false; blur.enabled = false; }; animations.enabled = false; misc = { disable_hyprland_logo = true; disable_splash_rendering = true; }; # Binds "$mod" = "SUPER"; bind = [ "$mod, Return, exec, foot" "$mod, d, exec, rofi -show run" "$mod SHIFT, x, exec, hyprlock" "$mod SHIFT, w, exec, wpaperctl next" "$mod SHIFT, q, killactive" "$mod, f, fullscreen, 0" "$mod SHIFT, space, togglefloating" "$mod, b, hy3:makegroup, h, toggle" "$mod, v, hy3:makegroup, v, toggle" "$mod, w, hy3:makegroup, tab" "$mod, h, hy3:movefocus, l" "$mod, j, hy3:movefocus, d" "$mod, k, hy3:movefocus, u" "$mod, l, hy3:movefocus, r" "$mod SHIFT, h, hy3:movewindow, l" "$mod SHIFT, j, hy3:movewindow, d" "$mod SHIFT, k, hy3:movewindow, u" "$mod SHIFT, l, hy3:movewindow, r" "$mod, 1, workspace, 1" "$mod, 2, workspace, 2" "$mod, 3, workspace, 3" "$mod, 4, workspace, 4" "$mod, 5, workspace, 5" "$mod, 6, workspace, 6" "$mod, 7, workspace, 7" "$mod, 8, workspace, 8" "$mod, 9, workspace, 9" "$mod SHIFT, 1, movetoworkspace, 1" "$mod SHIFT, 2, movetoworkspace, 2" "$mod SHIFT, 3, movetoworkspace, 3" "$mod SHIFT, 4, movetoworkspace, 4" "$mod SHIFT, 5, movetoworkspace, 5" "$mod SHIFT, 6, movetoworkspace, 6" "$mod SHIFT, 7, movetoworkspace, 7" "$mod SHIFT, 8, movetoworkspace, 8" "$mod SHIFT, 9, movetoworkspace, 9" ] ++ [ # TODO: maybe make a separate module "hyprlandPassmenu" that adds this "$mod, p, exec, passmenu" ]; binde = [ "$mod CTRL, h, resizeactive, -10 0" "$mod CTRL, j, resizeactive, 0 -10" "$mod CTRL, k, resizeactive, 0 10" "$mod CTRL, l, resizeactive, 10 0" ]; bindm = [ "$mod, mouse:272, movewindow" "$mod, mouse:273, resizewindow" ]; } cfg.extraConfig ]; }; }; }; }