{ config, lib, pkgs, ... }: with lib; let cfg = config.modules.hyprland; rofi-emoji = import ../scripts/rofi-emoji.nix {inherit pkgs;}; in { imports = [ ./swaync.nix ./waybar.nix ./wlsunset.nix ]; options.modules.hyprland = { enable = mkEnableOption "Enables Hyprland"; swaync = mkEnableOption "Enables swaync"; emacsPkg = mkOption { type = types.package; default = pkgs.emacs; }; host = mkOption { type = types.enum ["tilo" "gampo"]; default = "tilo"; description = '' Which host is Hyprland running on. This helps determine the monitors layout. ''; }; waybar = { enable = mkEnableOption "Enables waybar."; battery = mkEnableOption "Enables battery support."; style = mkOption { type = types.path; example = ./style.css; }; }; }; config = mkIf cfg.enable { wayland.windowManager.hyprland = { enable = true; xwayland.enable = true; systemd.enable = false; importantPrefixes = ["$left" "$right" "$up" "$down" "$menu"]; settings = { input = { kb_layout = "fr"; kb_variant = "bepo_afnor"; kb_options = "caps:ctrl_modifier"; numlock_by_default = true; follow_mouse = 1; touchpad.natural_scroll = false; sensitivity = "0"; }; monitor = { "tilo" = [ "DP-1, 3440x1440@144, 0x725, 1" "DP-3, 2560x1080@60, 3440x0, 1, transform, 3" ]; "gampo" = []; }."${cfg.host}"; general = { gaps_in = 5; gaps_out = 20; border_size = 2; "col.active_border" = "rgb(81a1c1) rgb(a3be8c) 45deg"; "col.inactive_border" = "rgb(4c566a)"; layout = "master"; }; master = { orientation = "center"; new_status = "inherit"; }; workspace = [ "2, layoutopt:orientation:bottom" ]; decoration = { rounding = 5; # blur = { # enable = true; # size = 9; # passes = 1; # }; # shadow = { # enable = true; # color = "rgba(2e3440aa)"; # range = 4; # render_power = 3; # }; }; animations = { enabled = true; animation = [ # "windows, 1, 7, myBezier" "windowsOut, 1, 7, default, popin 80%" "border, 1, 10, default" "borderangle, 1, 8, default" "fade, 1, 7, default" "workspaces, 1, 6, default" ]; }; dwindle = { pseudotile = true; preserve_split = true; }; exec-once = [ "pactl load-module module-switch-on-connect" "${pkgs.mpc}/bin/mpc stop" "${pkgs.networkmanagerapplet}/bin/nm-applet" ]; }; extraConfig = '' $left = c $right = r $up = s $down = t $menu = ${pkgs.wofi}/bin/wofi --show drun bind = SUPER, Return, exec, kitty bind = SUPER, Space, submap, leader bind = , Print, submap, screenshot submap = leader bind = , l, exec, plock bind = , l, submap, reset bind = , a, submap, apps bind = , b, submap, buffers bind = , w, submap, windows bind = , escape, submap, reset bind = CTRL, g, submap, reset submap = apps bind = , b, exec, zen bind = , b, submap, reset bind = SHIFT, b, exec, qutebrowser bind = SHIFT, b, submap, reset bind = , d, exec, vesktop bind = , d, submap, reset bind = , e, exec, ${cfg.emacsPkg}/bin/emacsclient -c -n bind = , e, submap, reset bind = , g, exec, ${pkgs.gimp}/bin/gimp bind = , g, submap, reset bind = , n, exec, ${pkgs.nemo}/bin/nemo bind = , n, submap, reset bind = , r, submap, rofi bind = , u, exec, $menu bind = , u, submap, reset bind = , escape, submap, reset bind = CTRL, g, submap, reset submap = buffers bind = , d, killactive, bind = , d, submap, reset bind = , escape, submap, reset bind = CTRL, g, submap, reset submap = resize binde = , $left, resizeactive, -10 0 binde = , $right, resizeactive, 10 0 binde = , $up, resizeactive, 0 -10 binde = , $down, resizeactive, 0 10 bind = , q, submap, reset bind = , escape, submap, reset bind = CTRL, g, submap, reset submap = rofi bind = , e, exec, ${rofi-emoji}/bin/rofi-emoji bind = , e, submap, reset bind = , r, exec, $menu bind = , r, submap, reset bind = , y, exec, ytplay bind = , y, submap, reset bind = , escape, submap, reset bind = CTRL, g, submap, reset submap = screenshot bind = , Print, exec, screenshot bind = , Print, submap, reset bind = , d, exec, screenshot -d 3 bind = , d, submap, reset bind = Shift, d, exec, screenshot -sced 3 bind = Shift, d, submap, reset bind = , e, exec, screenshot -sec bind = , e, submap, reset bind = , s, exec, screenshot -s bind = , s, submap, reset bind = Shift, s, exec, screenshot -sc bind = Shift, s, submap, reset bind = , escape, submap, reset bind = CTRL, g, submap, reset submap = windows bind = , period, submap, resize bind = , $left, movefocus, l bind = , $left, submap, reset bind = , $right, movefocus, r bind = , $right, submap, reset bind = , $up, movefocus, u bind = , $up, submap, reset bind = , $down, movefocus, d bind = , $down, submap, reset bind = SHIFT, $left, movewindow, l bind = SHIFT, $left, submap, reset bind = SHIFT, $right, movewindow, r bind = SHIFT, $right, submap, reset bind = SHIFT, $up, movewindow, u bind = SHIFT, $up, submap, reset bind = SHIFT, $down, movewindow, d bind = SHIFT, $down, submap, reset bind = CTRL_SHIFT, $left, moveworkspacetomonitor, e+0 +1 bind = CTRL_SHIFT, $left, submap, reset bind = CTRL_SHIFT, $right, moveworkspacetomonitor, e+0 -1 bind = CTRL_SHIFT, $right, submap, reset bind = , d, killactive, bind = , d, submap, reset bind = , f, fullscreen, bind = , f, submap, reset bind = SHIFT, f, togglefloating, bind = SHIFT, f, submap, reset bind = , escape, submap, reset bind = CTRL, g, submap, reset submap = reset bindl = , XF86AudioPlay, exec, playerctl play-pause bindl = , XF86AudioPause, exec, playerctl pause bindl = , XF86AudioStop, exec, playerctl stop bindl = , XF86AudioPrev, exec, playerctl previous bindl = , XF86AudioNext, exec, playerctl next bindl = , XF86AudioForward, exec, playerctl position +1 bindl = , XF86AudioRewind, exec, playerctl position -1 bindl = , XF86AudioRaiseVolume, exec, pamixer -i 2 bindl = , XF86AudioLowerVolume, exec, pamixer -d 2 bindl = , XF86MonBrightnessUp, exec, xbacklight -perceived -inc 2 bindl = , XF86MonBrightnessDown, exec, xbacklight -perceived -dec 2 bindl = , XF86KbdBrightnessUp, exec, xbacklight -perceived -inc 2 bindl = , XF86KbdBrightnessDown, exec, xbacklight -perceived -dec 2 bind = SUPER, $left, movefocus, l bind = SUPER, $right, movefocus, r bind = SUPER, $up, movefocus, u bind = SUPER, $down, movefocus, d bind = SUPER_SHIFT, $left, movewindow, l bind = SUPER_SHIFT, $left, submap, reset bind = SUPER_SHIFT, $right, movewindow, r bind = SUPER_SHIFT, $right, submap, reset bind = SUPER_SHIFT, $up, movewindow, u bind = SUPER_SHIFT, $up, submap, reset bind = SUPER_SHIFT, $down, movewindow, d bind = SUPER_SHIFT, $down, submap, reset bind = SUPER_CTRL_SHIFT, $left, moveworkspacetomonitor, e+0 +1 bind = SUPER_CTRL_SHIFT, $left, submap, reset bind = SUPER_CTRL_SHIFT, $right, moveworkspacetomonitor, e+0 -1 bind = SUPER_CTRL_SHIFT, $right, submap, reset bind = SUPER, Tab, cyclenext, bind = SUPER_SHIFT, Tab, cyclenext, prev bindm = SUPER, mouse:272, movewindow bindm = SUPER, mouse:273, resizewindow bind = SUPER, quotedbl, workspace, 1 bind = SUPER, guillemotleft, workspace, 2 bind = SUPER, guillemotright, workspace, 3 bind = SUPER, parenleft, workspace, 4 bind = SUPER, parenright, workspace, 5 bind = SUPER, at, workspace, 6 bind = SUPER, plus, workspace, 7 bind = SUPER, minus, workspace, 8 bind = SUPER, slash, workspace, 9 bind = SUPER, asterisk, workspace, 10 bind = SUPER, mouse_down, workspace, e+1 bind = SUPER, mouse_up, workspace, e-1 bind = SUPER_SHIFT, quotedbl, movetoworkspace, 1 bind = SUPER_SHIFT, guillemotleft, movetoworkspace, 2 bind = SUPER_SHIFT, guillemotright, movetoworkspace, 3 bind = SUPER_SHIFT, parenleft, movetoworkspace, 4 bind = SUPER_SHIFT, parenright, movetoworkspace, 5 bind = SUPER_SHIFT, at, movetoworkspace, 6 bind = SUPER_SHIFT, plus, movetoworkspace, 7 bind = SUPER_SHIFT, minus, movetoworkspace, 8 bind = SUPER_SHIFT, slash, movetoworkspace, 9 bind = SUPER_SHIFT, asterisk, movetoworkspace, 10 ''; }; services = { blueman-applet.enable = true; wpaperd = { enable = true; settings = { default = { path = "/home/phundrak/Pictures/Wallpapers/nord"; duration = "5m"; sorting = "random"; mode = "center"; recursive = true; }; DP-3 = { mode = "fit-border-color"; }; }; }; }; modules = { swaync.enable = cfg.swaync; waybar = mkIf cfg.waybar.enable { inherit (cfg.waybar) enable battery style; }; wlsunset.enable = true; }; }; }