175 lines
4.3 KiB
Nix
175 lines
4.3 KiB
Nix
# Hyprland is a dynamic tiling Wayland compositor that is highly customizable and performant.
|
|
{
|
|
pkgs,
|
|
config,
|
|
lib,
|
|
...
|
|
}:
|
|
let
|
|
border-size = config.theme.border-size;
|
|
gaps-in = config.theme.gaps-in;
|
|
gaps-out = config.theme.gaps-out;
|
|
active-opacity = config.theme.active-opacity;
|
|
inactive-opacity = config.theme.inactive-opacity;
|
|
rounding = config.theme.rounding;
|
|
blur = config.theme.blur;
|
|
keyboardLayout = config.var.keyboardLayout;
|
|
background = "rgb(" + config.lib.stylix.colors.base00 + ")";
|
|
in
|
|
{
|
|
imports = [
|
|
./animations.nix
|
|
./bindings.nix
|
|
./polkitagent.nix
|
|
];
|
|
|
|
home.packages = with pkgs; [
|
|
qt5.qtwayland
|
|
qt6.qtwayland
|
|
libsForQt5.qt5ct
|
|
qt6Packages.qt6ct
|
|
hyprshot
|
|
hyprpicker
|
|
swappy
|
|
imv
|
|
wf-recorder
|
|
wlr-randr
|
|
wl-clipboard
|
|
brightnessctl
|
|
gnome-themes-extra
|
|
libva
|
|
dconf
|
|
wayland-utils
|
|
wayland-protocols
|
|
glib
|
|
direnv
|
|
meson
|
|
];
|
|
|
|
wayland.windowManager.hyprland = {
|
|
enable = true;
|
|
xwayland.enable = true;
|
|
systemd = {
|
|
enable = false;
|
|
variables = [
|
|
"--all"
|
|
]; # https://wiki.hyprland.org/Nix/Hyprland-on-Home-Manager/#programs-dont-work-in-systemd-services-but-do-on-the-terminal
|
|
};
|
|
package = null;
|
|
portalPackage = null;
|
|
|
|
settings = {
|
|
"$mod" = "SUPER";
|
|
"$shiftMod" = "SUPER_SHIFT";
|
|
"$altMod" = "SUPER_ALT";
|
|
|
|
exec-once = [
|
|
"systemctl --user enable --now hyprpaper.service &"
|
|
];
|
|
|
|
monitor = config.var.hyprland.monitor;
|
|
|
|
env = [
|
|
"XDG_CURRENT_DESKTOP,Hyprland"
|
|
"MOZ_ENABLE_WAYLAND,1"
|
|
"ANKI_WAYLAND,1"
|
|
"DISABLE_QT5_COMPAT,0"
|
|
"NIXOS_OZONE_WL,1"
|
|
"XDG_SESSION_TYPE,wayland"
|
|
"XDG_SESSION_DESKTOP,Hyprland"
|
|
"QT_AUTO_SCREEN_SCALE_FACTOR,1"
|
|
"QT_QPA_PLATFORM=wayland,xcb"
|
|
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
|
|
"ELECTRON_OZONE_PLATFORM_HINT,auto"
|
|
"__GL_GSYNC_ALLOWED,0"
|
|
"__GL_VRR_ALLOWED,0"
|
|
"DISABLE_QT5_COMPAT,0"
|
|
"DIRENV_LOG_FORMAT,"
|
|
"WLR_DRM_NO_ATOMIC,1"
|
|
"WLR_BACKEND,vulkan"
|
|
"WLR_RENDERER,vulkan"
|
|
"WLR_NO_HARDWARE_CURSORS,1"
|
|
"SDL_VIDEODRIVER,wayland"
|
|
"CLUTTER_BACKEND,wayland"
|
|
];
|
|
|
|
workspace = config.var.hyprland.workspace ++ [
|
|
"special:scratchpad, on-created-empty:[float; size monitor_w/1.5 monitor_h/1.5; center] $TERMINAL"
|
|
];
|
|
|
|
cursor = {
|
|
no_hardware_cursors = true;
|
|
default_monitor = "0";
|
|
};
|
|
|
|
general = {
|
|
resize_on_border = true;
|
|
gaps_in = gaps-in;
|
|
gaps_out = gaps-out;
|
|
border_size = border-size;
|
|
layout = "master";
|
|
"col.inactive_border" = lib.mkForce background;
|
|
};
|
|
|
|
decoration = {
|
|
dim_special = 0.3;
|
|
active_opacity = active-opacity;
|
|
inactive_opacity = inactive-opacity;
|
|
rounding = rounding;
|
|
shadow = {
|
|
enabled = true;
|
|
range = 20;
|
|
render_power = 3;
|
|
};
|
|
blur = {
|
|
enabled = if blur then "true" else "false";
|
|
size = 18;
|
|
};
|
|
};
|
|
|
|
master = {
|
|
new_status = true;
|
|
allow_small_split = true;
|
|
mfact = 0.65;
|
|
};
|
|
|
|
misc = {
|
|
vfr = true;
|
|
disable_hyprland_logo = true;
|
|
disable_splash_rendering = true;
|
|
disable_autoreload = false;
|
|
focus_on_activate = true;
|
|
on_focus_under_fullscreen = 2;
|
|
};
|
|
|
|
windowrule = [
|
|
"match:title hyprpanel-settings, float on"
|
|
"match:class xdg-desktop-portal-gtk, float on, center on, size (monitor_w * 0.5) (monitor_h * 0.5)"
|
|
# Match on bitwarden chrome extension id
|
|
"match:class .*nngceckbapebfimnlniiiahkandclblb.*, float on, center on, size (monitor_w * 0.5) (monitor_h * 0.5)"
|
|
"match:class imv, float on, center on, max_size (monitor_w * 0.8) (monitor_h * 0.8)"
|
|
];
|
|
|
|
layerrule = [
|
|
"match:namespace vicinae, no_anim on, blur on, ignore_alpha 0"
|
|
];
|
|
|
|
input = {
|
|
kb_layout = keyboardLayout;
|
|
|
|
kb_options = "caps:escape";
|
|
follow_mouse = 1;
|
|
sensitivity = 0.5;
|
|
repeat_delay = 300;
|
|
repeat_rate = 50;
|
|
numlock_by_default = true;
|
|
|
|
touchpad = {
|
|
natural_scroll = true;
|
|
clickfinger_behavior = true;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|