From c5aca4a75587f270d84227ac5a05b4917914d9f0 Mon Sep 17 00:00:00 2001 From: Mohammad Rafiq Date: Wed, 14 May 2025 13:50:25 +0800 Subject: [PATCH] refactor(modules/hyprland): move hyprland module to its own file --- modules/hm/default.nix | 4 +- modules/hm/programs/de.nix | 169 ------------------------------- modules/hm/programs/default.nix | 5 + modules/hm/programs/hyprland.nix | 158 +++++++++++++++++++++++++++++ 4 files changed, 164 insertions(+), 172 deletions(-) delete mode 100644 modules/hm/programs/de.nix create mode 100644 modules/hm/programs/hyprland.nix diff --git a/modules/hm/default.nix b/modules/hm/default.nix index 10335a9..34e2df7 100644 --- a/modules/hm/default.nix +++ b/modules/hm/default.nix @@ -14,9 +14,7 @@ in imports = [ inputs.home-manager.nixosModules.home-manager ./hardware.nix - ./programs/default.nix - ./programs/editor.nix - ./programs/de.nix + ./programs ]; options = { diff --git a/modules/hm/programs/de.nix b/modules/hm/programs/de.nix deleted file mode 100644 index 7c26a52..0000000 --- a/modules/hm/programs/de.nix +++ /dev/null @@ -1,169 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -let - moduleName = "de"; - username = config.nixosModules.mainUser; -in -{ - imports = [ ]; - - options.${moduleName} = { - }; - - config = lib.mkMerge [ - (lib.mkIf (config.de.type == "hyprland") { - home-manager.users."${username}" = { - xdg.configFile."uwsm/env".text = # sh - '' - export XCURSOR_SIZE=32 - - # Nvidia Settings - export LIBVA_DRIVER_NAME=nvidia - export __GLX_VENDOR_LIBRARY_NAME=nvidia - export NVD_BACKEND=direct # needed for running vaapi-driver on later drivers" - export NIXOS_OZONE_WL=1 - ''; - wayland.windowManager.hyprland = { - enable = true; - package = null; - portalPackage = null; - systemd.enable = false; - settings = { - "$mainMonitor" = "desc:OOO AN-270W04K"; - "$vertMonitor" = "desc:Philips Consumer Electronics Company PHL 246V5 AU11330000086"; - "$mainMod" = "SUPER"; - "$hyper" = "CONTROL_SHIFT_ALT_SUPER"; - "$meh" = "CONTROL_SHIFT_ALT"; - - "$terminal" = "uwsm app -- kitty -1"; - "$browser" = "uwsm app -- firefox"; - "$launcher" = "uwsm app -- fuzzel"; - "$lockscreen" = "uwsm app -- hyprlock"; - - "$clipboard" = "$terminal --class clipse -e clipse"; - "$multiplexer" = "$terminal -e zellij"; - - exec-once = [ - "uwsm app -- hyprlock" - "uwsm app -- clipse -listen" - "uwsm app -- hyprcloser" - "uwsm app -- waybar" - ]; - - # Programs to run at startup - exec = [ - "uwsm app -- hyprshade auto" - ]; - - # Monitors - monitor = [ - "$mainMonitor, 3840x2160@60, auto, 2" - "$vertMonitor, 1920x1080@60, auto-left, auto, transform, 3" - ", preferred, auto, 1" - ]; - - xwayland.force_zero_scaling = true; - - env = [ - "GDK_SCALE,2" - "XCURSOR_SIZE,32" - ]; - - # Switching to the current workspace will switch to the previous - binds.workspace_back_and_forth = true; - cursor.default_monitor = "$mainMonitor"; - - # Windows - general = { - # Make there be no gaps in between windows or edges - border_size = 0; - no_border_on_floating = true; - gaps_in = 0; - gaps_out = 0; - resize_on_border = true; - }; - - decoration = { - active_opacity = 1; - inactive_opacity = 0.9; - }; - - windowrulev2 = [ - "float, class:firefox, title:Picture-in-Picture" - "float, class:(clipse)" - "move cursor 0 0, class:(clipse)" - "size 622 652, class:(clipse)" - "noanim, class:(clipse)" - ]; - - animation = [ - "workspaces, 0, , " - ]; - - # Keybinds - bind = [ - "$mainMod, W, killactive" - "$mainMod, M, exec, uwsm stop" - "$mainMod, Up, fullscreen" - - # Launch utilities - "$mainMod, return, exec, $multiplexer" - "$mainMod, O, exec, $browser" - "$mainMod, Escape, exec, $lockscreen" - "$mainMod, Space, exec, $launcher" - "$mainMod, V, exec, $clipboard" - "$mainMod_SHIFT, A, exec, hyprpicker -a" - - # Window Settings - "$mainMod, H, cyclenext, visible" - "$mainMod, L, cyclenext, visible prev" - "$mainMod_ALT, H, movewindow, l" - "$mainMod_ALT, J, movewindow, d" - "$mainMod_ALT, K, movewindow, u" - "$mainMod_ALT, L, movewindow, r" - "ALT_SHIFT, H, resizeactive, -10% 0" - "ALT_SHIFT, J, resizeactive, 0 -10%" - "ALT_SHIFT, K, resizeactive, 0 10%" - "ALT_SHIFT, L, resizeactive, 10% 0" - - # Workspace Settings - "$mainMod_CTRL, H, workspace, r-1" - "$mainMod_CTRL, L, workspace, r+1" - "$hyper, H, movetoworkspace, r-1" - "$hyper, L, movetoworkspace, r+1" - ]; - - # Repeat when held - bindle = [ - "SUPER, 6, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+" - "SUPER, 7, exec, ${pkgs.playerctl}/bin/playerctl previous" - "SUPER, 8, exec, ${pkgs.playerctl}/bin/playerctl play-pause" - "SUPER, 9, exec, ${pkgs.playerctl}/bin/playerctl next" - "SUPER, 0, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%-" - "$meh, mouse_up, resizeactive, 10% 10%" - "$meh, mouse_down, resizeactive, -10% -10%" - ]; - - bindm = [ - "$meh, mouse:272, movewindow" - "$meh, mouse:273, resizewindow" - ]; - - input = { - numlock_by_default = true; - follow_mouse = 2; # Click on a window to change focus - }; - - debug = { - damage_tracking = 0; - }; - }; - }; - }; - }) - ]; -} diff --git a/modules/hm/programs/default.nix b/modules/hm/programs/default.nix index a27f03d..5498549 100644 --- a/modules/hm/programs/default.nix +++ b/modules/hm/programs/default.nix @@ -8,6 +8,11 @@ let username = config.nixosModules.mainUser; in { + imports = [ + ./hyprland.nix + ./editor.nix + ]; + config = lib.mkMerge [ { home-manager.users."${username}".home.packages = with pkgs; [ diff --git a/modules/hm/programs/hyprland.nix b/modules/hm/programs/hyprland.nix new file mode 100644 index 0000000..7437ed7 --- /dev/null +++ b/modules/hm/programs/hyprland.nix @@ -0,0 +1,158 @@ +{ + config, + lib, + pkgs, + ... +}: +{ + config.home-manager.users."${config.nixosModules.mainUser}" = lib.mkMerge [ + (lib.mkIf (config.de.type == "hyprland") { + xdg.configFile."uwsm/env".text = # sh + '' + export XCURSOR_SIZE=32 + + # Nvidia Settings + export LIBVA_DRIVER_NAME=nvidia + export __GLX_VENDOR_LIBRARY_NAME=nvidia + export NVD_BACKEND=direct # needed for running vaapi-driver on later drivers" + export NIXOS_OZONE_WL=1 + ''; + wayland.windowManager.hyprland = { + enable = true; + package = null; + portalPackage = null; + systemd.enable = false; + settings = { + "$mainMonitor" = "desc:OOO AN-270W04K"; + "$vertMonitor" = "desc:Philips Consumer Electronics Company PHL 246V5 AU11330000086"; + "$mainMod" = "SUPER"; + "$hyper" = "CONTROL_SHIFT_ALT_SUPER"; + "$meh" = "CONTROL_SHIFT_ALT"; + + "$terminal" = "uwsm app -- kitty -1"; + "$browser" = "uwsm app -- firefox"; + "$launcher" = "uwsm app -- fuzzel"; + "$lockscreen" = "uwsm app -- hyprlock"; + + "$clipboard" = "$terminal --class clipse -e clipse"; + "$multiplexer" = "$terminal -e zellij"; + + exec-once = [ + "uwsm app -- hyprlock" + "uwsm app -- clipse -listen" + "uwsm app -- hyprcloser" + "uwsm app -- waybar" + ]; + + # Programs to run at startup + exec = [ + "uwsm app -- hyprshade auto" + ]; + + # Monitors + monitor = [ + "$mainMonitor, 3840x2160@60, auto, 2" + "$vertMonitor, 1920x1080@60, auto-left, auto, transform, 3" + ", preferred, auto, 1" + ]; + + xwayland.force_zero_scaling = true; + + env = [ + "GDK_SCALE,2" + "XCURSOR_SIZE,32" + ]; + + # Switching to the current workspace will switch to the previous + binds.workspace_back_and_forth = true; + cursor.default_monitor = "$mainMonitor"; + + # Windows + general = { + # Make there be no gaps in between windows or edges + border_size = 0; + no_border_on_floating = true; + gaps_in = 0; + gaps_out = 0; + resize_on_border = true; + }; + + decoration = { + active_opacity = 1; + inactive_opacity = 0.9; + }; + + windowrulev2 = [ + "float, class:firefox, title:Picture-in-Picture" + "float, class:(clipse)" + "move cursor 0 0, class:(clipse)" + "size 622 652, class:(clipse)" + "noanim, class:(clipse)" + ]; + + animation = [ + "workspaces, 0, , " + ]; + + # Keybinds + bind = [ + "$mainMod, W, killactive" + "$mainMod, M, exec, uwsm stop" + "$mainMod, Up, fullscreen" + + # Launch utilities + "$mainMod, return, exec, $multiplexer" + "$mainMod, O, exec, $browser" + "$mainMod, Escape, exec, $lockscreen" + "$mainMod, Space, exec, $launcher" + "$mainMod, V, exec, $clipboard" + "$mainMod_SHIFT, A, exec, hyprpicker -a" + + # Window Settings + "$mainMod, H, cyclenext, visible" + "$mainMod, L, cyclenext, visible prev" + "$mainMod_ALT, H, movewindow, l" + "$mainMod_ALT, J, movewindow, d" + "$mainMod_ALT, K, movewindow, u" + "$mainMod_ALT, L, movewindow, r" + "ALT_SHIFT, H, resizeactive, -10% 0" + "ALT_SHIFT, J, resizeactive, 0 -10%" + "ALT_SHIFT, K, resizeactive, 0 10%" + "ALT_SHIFT, L, resizeactive, 10% 0" + + # Workspace Settings + "$mainMod_CTRL, H, workspace, r-1" + "$mainMod_CTRL, L, workspace, r+1" + "$hyper, H, movetoworkspace, r-1" + "$hyper, L, movetoworkspace, r+1" + ]; + + # Repeat when held + bindle = [ + "SUPER, 6, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+" + "SUPER, 7, exec, ${pkgs.playerctl}/bin/playerctl previous" + "SUPER, 8, exec, ${pkgs.playerctl}/bin/playerctl play-pause" + "SUPER, 9, exec, ${pkgs.playerctl}/bin/playerctl next" + "SUPER, 0, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%-" + "$meh, mouse_up, resizeactive, 10% 10%" + "$meh, mouse_down, resizeactive, -10% -10%" + ]; + + bindm = [ + "$meh, mouse:272, movewindow" + "$meh, mouse:273, resizewindow" + ]; + + input = { + numlock_by_default = true; + follow_mouse = 2; # Click on a window to change focus + }; + + debug = { + damage_tracking = 0; + }; + }; + }; + }) + ]; +}