{
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;
arta.greetd.command = "hyprland";
};
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
];
};
};
};
}