73 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { lib, config, pkgs, ... }: 
 | |
| let
 | |
|   cfg = config.homeModules.desktop.wayland.windowManager.hyprland;
 | |
| in
 | |
| {
 | |
|     imports = [
 | |
|       ./binds.nix #hyprland keybindings
 | |
|       ./appearance.nix
 | |
|       ./rules.nix
 | |
|       ./exec.nix
 | |
|       ];
 | |
| 
 | |
|   config = lib.mkIf cfg.enable {
 | |
|     xdg.portal = {
 | |
|       extraPortals = [ pkgs.inputs.hyprland.xdg-desktop-portal-hyprland ];
 | |
|       configPackages = [ pkgs.inputs.hyprland.hyprland ];
 | |
|     };
 | |
| 
 | |
|     home.packages = with pkgs; [
 | |
|       inputs.hyprwm-contrib.grimblast
 | |
|       hyprpicker
 | |
|       light
 | |
|       hyprshade
 | |
|       ];
 | |
|     
 | |
|     wayland.windowManager.hyprland = {
 | |
|       enable = true;
 | |
|       package = pkgs.inputs.hyprland.hyprland;
 | |
|       systemd = {
 | |
|         enable = true;
 | |
|         extraCommands = lib.mkBefore [
 | |
|           "systemctl --user stop graphical-session.target"
 | |
|           "systemctl --user start hyprland-session.target"
 | |
|         ];
 | |
|       };
 | |
|       settings = {
 | |
|         input = {
 | |
|           kb_layout = "us";
 | |
|           touchpad = {
 | |
|             disable_while_typing = false;
 | |
|           };
 | |
|         };
 | |
|         
 | |
|         misc = {
 | |
|           vrr = true;
 | |
|           disable_hyprland_logo = true;
 | |
|           force_default_wallpaper = 0;
 | |
|         };
 | |
| 
 | |
|         env = lib.mkIf cfg.nvidia [
 | |
|           "LIBVA_DRIVER_NAME,nvidia"
 | |
|           "XDG_SESSION_TYPE,wayland"
 | |
|           "GBM_BACKEND,nvidia-drm"
 | |
|           "__GLX_VENDEOR_LIBRARY_NAME,nvidia"
 | |
|           "WLR_NO_HARDWARE_CURSORS,1"
 | |
|         ];
 | |
|         
 | |
|         gestures = {
 | |
|           workspace_swipe = true;
 | |
|           workspace_swipe_forever = true;
 | |
|         };
 | |
|         
 | |
|         monitor = lib.concatMap (m: let
 | |
|           resolution = "${toString m.width}x${toString m.height}@${toString m.refreshRate}";
 | |
|           position = "${toString m.x}x${toString m.y}";
 | |
|           basicConfig = "${m.name},${if m.enabled then "${resolution},${position},1" else "disable"}";
 | |
|         in
 | |
|           [ basicConfig ] ++ (if m.transform != 0 then ["${m.name},transform,${toString m.transform}"] else [])
 | |
|         ) (config.monitors);
 | |
|       };
 | |
|     };
 | |
|   };
 | |
| }
 |