snowfield/home-manager-modules/hyprland/default.nix

170 lines
4.2 KiB
Nix

{
config,
pkgs,
lib,
...
}:
let
cfg = config.luj.programs.hyprland;
terminal = "${pkgs.kitty}/bin/kitty";
menu = "${pkgs.rofi-wayland}/bin/rofi -no-lazy-grab -show drun";
in
with lib;
{
options.luj.programs.hyprland = {
enable = mkEnableOption "Enable HyprLand";
};
config = mkIf cfg.enable {
wayland.windowManager.hyprland = {
enable = true;
package = pkgs.unstable.hyprland;
systemd = {
enable = true;
variables = [ "WLR_NO_HARDWARE_CURSORS=1" ];
};
settings = {
# Variables
"$mod" = "ALT_L";
"$term" = terminal;
"$launcher" = menu;
general = {
gaps_in = "6";
gaps_out = "10";
};
input = {
kb_layout = "fr";
follow_mouse = 1;
sensitivity = 0; # -1.0 - 1.0, 0 means no modification.
};
misc = {
disable_hyprland_logo = true;
disable_splash_rendering = true;
};
decoration = {
rounding = 6;
};
animations.enabled = true;
xwayland = {
force_zero_scaling = true;
};
workspace = [
"1,monitor:DP-3"
"2,monitor:HDM1-A-1"
];
exec = [ "hyprpaper" ];
env = [
"LIBVA_DRIVER_NAME, nvidia"
"WLR_NO_HARDWARE_CURSORS, 1"
"WLR_DRM_DEVICES,/home/julien/.config/hypr/card"
];
monitor = [
"DP-3, 2560x1440@60, 0x0, 1"
"HDM1-A-1, 2560x1440@60, 2560x0, 1"
];
bind = [
"$mod, RETURN, exec, kitty"
"$mod, SPACE, exec, $launcher"
"$mod, w, exec, swaylock"
# Window management
"$mod, Q, killactive"
"$mod, F, fullscreen"
# Focus
"$mod, left, movefocus, l"
"$mod, right, movefocus, r"
"$mod, up, movefocus, u"
"$mod, down, movefocus, d"
# Move
"$mod SHIFT, left, movewindow, l"
"$mod SHIFT, right, movewindow, r"
"$mod SHIFT, up, movewindow, u"
"$mod SHIFT, down, movewindow, d"
# Switch workspaces
"$mod, code:10, workspace, 1"
"$mod, code:11, workspace, 2"
"$mod, code:12, workspace, 3"
"$mod, code:13, workspace, 4"
"$mod, code:14, workspace, 5"
"$mod, code:15, workspace, 6"
"$mod, code:16, workspace, 7"
"$mod, code:17, workspace, 8"
"$mod, code:18, workspace, 9"
"$mod, code:19, workspace, 10"
"$mod SHIFT, code:10, movetoworkspace, 1"
"$mod SHIFT, code:11, movetoworkspace, 2"
"$mod SHIFT, code:12, movetoworkspace, 3"
"$mod SHIFT, code:13, movetoworkspace, 4"
"$mod SHIFT, code:14, movetoworkspace, 5"
"$mod SHIFT, code:15, movetoworkspace, 6"
"$mod SHIFT, code:16, movetoworkspace, 7"
"$mod SHIFT, code:17, movetoworkspace, 8"
"$mod SHIFT, code:18, movetoworkspace, 9"
"$mod SHIFT, code:19, movetoworkspace, 10"
];
};
};
xdg.configFile."hypr/hyprpaper.conf".text = ''
preload = ${../../machines/fischer/wallpaper.jpg}
wallpaper = ,${../../machines/fischer/wallpaper.jpg}
'';
services.swayidle = {
enable = true;
systemdTarget = "hyprland-session.target";
events = [
{
event = "before-sleep";
command = "${pkgs.swaylock-effects}/bin/swaylock --config /home/julien/.config/swaylock/config";
}
];
};
programs.swaylock = {
enable = true;
package = pkgs.swaylock-effects;
settings = {
screenshots = true;
clock = true;
indicator = true;
indicator-radius = 200;
indicator-thickness = 20;
grace = 0;
grace-no-mouse = true;
grace-no-touch = true;
line-uses-ring = false;
ignore-empty-password = true;
show-failed-attempts = false;
font = "Fira Code";
timestr = "%H:%M";
datestr = "";
effect-blur = "8x5";
effect-vignette = "0.5:0.5";
color = "00000000";
};
};
home.packages = with pkgs; [
qt6.qtwayland
libsForQt5.qt5.qtwayland
hyprpaper
];
};
}