This commit is contained in:
2025-09-13 23:16:22 +02:00
commit 5057e1effa
179 changed files with 20524 additions and 0 deletions

View File

@@ -0,0 +1,22 @@
{ ... }: {
wayland.windowManager.hyprland.settings = {
animations = {
enabled = true;
bezier = [
"wind, -1.05, 0.9, 0.1, 1.05"
"winIn, -1.1, 1.1, 0.1, 1.1"
"winOut, -1.3, -0.3, 0, 1"
"liner, 0, 1, 1, 1"
];
animation = [
"windows, 0, 6, wind, slide"
"windowsIn, 0, 6, winIn, slide"
"windowsOut, 0, 5, winOut, slide"
"windowsMove, 0, 5, wind, slide"
"border, 0, 1, liner"
"fade, 0, 10, default"
"workspaces, 0, 5, wind"
];
};
};
}

View File

@@ -0,0 +1,25 @@
{ ... }: {
wayland.windowManager.hyprland.settings = {
# name "Dynamic"
# credit https://github.com/mylinuxforwork/dotfiles
animations = {
enabled = true;
bezier = [
"wind, 0.05, 0.9, 0.1, 1.05"
"winIn, 0.1, 1.1, 0.1, 1.1"
"winOut, 0.3, -0.3, 0, 1"
"liner, 1, 1, 1, 1"
];
animation = [
"windows, 1, 6, wind, slide"
"windowsIn, 1, 6, winIn, slide"
"windowsOut, 1, 5, winOut, slide"
"windowsMove, 1, 5, wind, slide"
"border, 1, 1, liner"
"borderangle, 1, 30, liner, loop"
"fade, 1, 10, default"
"workspaces, 1, 5, wind"
];
};
};
}

View File

@@ -0,0 +1,37 @@
{ ... }: {
wayland.windowManager.hyprland.settings = {
# Name: END-4
# Credit: END-4 project https://github.com/end-4/dots-hyprland
animations = {
enabled = true;
bezier = [
"linear, 0, 0, 1, 1"
"md3_standard, 0.2, 0, 0, 1"
"md3_decel, 0.05, 0.7, 0.1, 1"
"md3_accel, 0.3, 0, 0.8, 0.15"
"overshot, 0.05, 0.9, 0.1, 1.1"
"crazyshot, 0.1, 1.5, 0.76, 0.92 "
"hyprnostretch, 0.05, 0.9, 0.1, 1.0"
"menu_decel, 0.1, 1, 0, 1"
"menu_accel, 0.38, 0.04, 1, 0.07"
"easeInOutCirc, 0.85, 0, 0.15, 1"
"easeOutCirc, 0, 0.55, 0.45, 1"
"easeOutExpo, 0.16, 1, 0.3, 1"
"softAcDecel, 0.26, 0.26, 0.15, 1"
"md2, 0.4, 0, 0.2, 1 # use with .2s duration"
];
animation = [
"windows, 1, 3, md3_decel, popin 60%"
"windowsIn, 1, 3, md3_decel, popin 60%"
"windowsOut, 1, 3, md3_accel, popin 60%"
"border, 1, 10, default"
"fade, 1, 3, md3_decel"
"layersIn, 1, 3, menu_decel, slide"
"layersOut, 1, 1.6, menu_accel"
"fadeLayersIn, 1, 2, menu_decel"
"fadeLayersOut, 1, 4.5, menu_accel"
"workspaces, 1, 7, menu_decel, slide"
];
};
};
}

View File

@@ -0,0 +1,24 @@
{ ... }: {
wayland.windowManager.hyprland.settings = {
# name "moving"
# credit https://github.com/mylinuxforwork/dotfiles
animations = {
enabled = true;
bezier = [
"overshot, 0.05, 0.9, 0.1, 1.05"
"smoothOut, 0.5, 0, 0.99, 0.99"
"smoothIn, 0.5, -0.5, 0.68, 1.5"
];
animation = [
"windows, 1, 5, overshot, slide"
"windowsOut, 1, 3, smoothOut"
"windowsIn, 1, 3, smoothOut"
"windowsMove, 1, 4, smoothIn, slide"
"border, 1, 5, default"
"fade, 1, 5, smoothIn"
"fadeDim, 1, 5, smoothIn"
"workspaces, 1, 6, default"
];
};
};
}

View File

@@ -0,0 +1,106 @@
{ host, ... }:
let
inherit
(import ../../../hosts/${host}/variables.nix)
browser
terminal
;
in
{
wayland.windowManager.hyprland.settings = {
bind = [
"$modifier,Return,exec,${terminal}"
"$modifier,K,exec,list-keybinds"
"$modifier SHIFT,Return,exec,rofi-launcher"
"$modifier ,R,exec,rofi-launcher"
"$modifier SHIFT,W,exec,web-search"
"$modifier ALT,W,exec,wallsetter"
"$modifier SHIFT,N,exec,swaync-client -rs"
"$modifier,W,exec,${browser}"
"$modifier,Y,exec,kitty -e yazi"
"$modifier,E,exec,emopicker9000"
"$modifier,S,exec,screenshootin"
"$modifier,D,exec,discord"
"$modifier,O,exec,obs"
"$modifier,C,exec,hyprpicker -a"
"$modifier,G,exec,gimp"
"$modifier shift,T,exec,pypr toggle term"
"$modifier,T,exec, thunar"
"$modifier,M,exec,pavucontrol"
"$modifier,Q,killactive,"
"$modifier,P,pseudo,"
"$modifier,V,exec, cliphist list | rofi -dmenu | cliphist decode | wl-copy"
"$modifier SHIFT,I,togglesplit,"
"$modifier,F,fullscreen,"
"$modifier SHIFT,F,togglefloating,"
"$modifier ALT,F,workspaceopt, allfloat"
"$modifier SHIFT,C,exit,"
"$modifier SHIFT,left,movewindow,l"
"$modifier SHIFT,right,movewindow,r"
"$modifier SHIFT,up,movewindow,u"
"$modifier SHIFT,down,movewindow,d"
"$modifier SHIFT,h,movewindow,l"
"$modifier SHIFT,l,movewindow,r"
"$modifier SHIFT,k,movewindow,u"
"$modifier SHIFT,j,movewindow,d"
"$modifier ALT, left, swapwindow,l"
"$modifier ALT, right, swapwindow,r"
"$modifier ALT, up, swapwindow,u"
"$modifier ALT, down, swapwindow,d"
"$modifier ALT, 43, swapwindow,l"
"$modifier ALT, 46, swapwindow,r"
"$modifier ALT, 45, swapwindow,u"
"$modifier ALT, 44, swapwindow,d"
"$modifier,left,movefocus,l"
"$modifier,right,movefocus,r"
"$modifier,up,movefocus,u"
"$modifier,down,movefocus,d"
"$modifier,h,movefocus,l"
"$modifier,l,movefocus,r"
"$modifier,k,movefocus,u"
"$modifier,j,movefocus,d"
"$modifier,1,workspace,1"
"$modifier,2,workspace,2"
"$modifier,3,workspace,3"
"$modifier,4,workspace,4"
"$modifier,5,workspace,5"
"$modifier,6,workspace,6"
"$modifier,7,workspace,7"
"$modifier,8,workspace,8"
"$modifier,9,workspace,9"
"$modifier,0,workspace,10"
"$modifier SHIFT,SPACE,movetoworkspace,special"
"$modifier,SPACE,togglespecialworkspace"
"$modifier SHIFT,1,movetoworkspace,1"
"$modifier SHIFT,2,movetoworkspace,2"
"$modifier SHIFT,3,movetoworkspace,3"
"$modifier SHIFT,4,movetoworkspace,4"
"$modifier SHIFT,5,movetoworkspace,5"
"$modifier SHIFT,6,movetoworkspace,6"
"$modifier SHIFT,7,movetoworkspace,7"
"$modifier SHIFT,8,movetoworkspace,8"
"$modifier SHIFT,9,movetoworkspace,9"
"$modifier SHIFT,0,movetoworkspace,10"
"$modifier CONTROL,right,workspace,e+1"
"$modifier CONTROL,left,workspace,e-1"
"$modifier,mouse_down,workspace, e+1"
"$modifier,mouse_up,workspace, e-1"
"ALT,Tab,cyclenext"
"ALT,Tab,bringactivetotop"
",XF86AudioRaiseVolume,exec,wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
",XF86AudioLowerVolume,exec,wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
" ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
",XF86AudioPlay, exec, playerctl play-pause"
",XF86AudioPause, exec, playerctl play-pause"
",XF86AudioNext, exec, playerctl next"
",XF86AudioPrev, exec, playerctl previous"
",XF86MonBrightnessDown,exec,brightnessctl set 5%-"
",XF86MonBrightnessUp,exec,brightnessctl set +5%"
];
bindm = [
"$modifier, mouse:272, movewindow"
"$modifier, mouse:273, resizewindow"
];
};
}

View File

@@ -0,0 +1,17 @@
{ host, ... }:
let
inherit (import ../../../hosts/${host}/variables.nix) animChoice;
in
{
imports = [
animChoice
./binds.nix
./env.nix
./exec-once.nix
./hypridle.nix
./hyprland.nix
./hyprlock.nix
./pyprland.nix
./windowrules.nix
];
}

View File

@@ -0,0 +1,36 @@
{ ... }: {
wayland.windowManager.hyprland = {
settings = {
env = [
"NIXOS_OZONE_WL, 1"
"NIXPKGS_ALLOW_UNFREE, 1"
"XDG_CURRENT_DESKTOP, Hyprland"
"XDG_SESSION_TYPE, wayland"
"XDG_SESSION_DESKTOP, Hyprland"
"GDK_BACKEND, wayland, x11"
"CLUTTER_BACKEND, wayland"
"QT_QPA_PLATFORM=wayland;xcb"
"QT_WAYLAND_DISABLE_WINDOWDECORATION, 1"
"QT_AUTO_SCREEN_SCALE_FACTOR, 1"
"SDL_VIDEODRIVER, x11"
"MOZ_ENABLE_WAYLAND, 1"
# This is to make electron apps start in wayland
"ELECTRON_OZONE_PLATFORM_HINT,wayland"
# Disabling this by default as it can result in inop cfg
# Added card2 in case this gets enabled. For better coverage
# This is mostly needed by Hybrid laptops.
# but if you have multiple discrete GPUs this will set order
#"AQ_DRM_DEVICES,/dev/dri/card0:/dev/dri/card1:/dev/card2"
"GDK_SCALE,1"
"QT_SCALE_FACTOR,1"
"EDITOR,nvim"
# Set terminal and xdg_terminal_emulator to kitty
# To provent yazi from starting xterm when run from rofi menu
# You can set to your preferred terminal if you you like
# ToDo: Pull default terminal from config
"TERMINAL,kitty"
"XDG_TERMINAL_EMULATOR,kitty"
];
};
};
}

View File

@@ -0,0 +1,27 @@
{ host, ... }:
let
inherit
(import ../../../hosts/${host}/variables.nix)
stylixImage
;
in
{
wayland.windowManager.hyprland.settings = {
exec-once = [
"wl-paste --type text --watch cliphist store" # Saves text
"wl-paste --type image --watch cliphist store" # Saves images
"dbus-update-activation-environment --all --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
"
"systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
"systemctl --user start hyprpolkitagent"
"killall -q swww;sleep .5 && swww-daemon"
"killall -q waybar;sleep .5 && waybar"
"killall -q swaync;sleep .5 && swaync"
"#wallsetter &"
"pypr &"
"nm-applet --indicator"
"sleep 1.0 && swww img ${stylixImage}"
];
};
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

View File

@@ -0,0 +1,27 @@
{ ... }:
{
services = {
hypridle = {
enable = true;
settings = {
general = {
after_sleep_cmd = "hyprctl dispatch dpms on";
ignore_dbus_inhibit = false;
lock_cmd = "hyprlock";
};
listener = [
{
timeout = 900;
on-timeout = "hyprlock";
}
{
timeout = 1200;
on-timeout = "hyprctl dispatch dpms off";
on-resume = "hyprctl dispatch dpms on";
}
];
};
};
};
}

View File

@@ -0,0 +1,171 @@
{ host
, config
, pkgs
, ...
}:
let
inherit
(import ../../../hosts/${host}/variables.nix)
extraMonitorSettings
keyboardLayout
stylixImage
;
in
{
home.packages = with pkgs; [
swww
grim
slurp
wl-clipboard
swappy
ydotool
hyprpolkitagent
hyprland-qtutils # needed for banners and ANR messages
];
systemd.user.targets.hyprland-session.Unit.Wants = [
"xdg-desktop-autostart.target"
];
# Place Files Inside Home Directory
home.file = {
"Pictures/Wallpapers" = {
source = ../../../wallpapers;
recursive = true;
};
".face.icon".source = ./face.jpg;
".config/face.jpg".source = ./face.jpg;
};
wayland.windowManager.hyprland = {
enable = true;
package = pkgs.hyprland;
systemd = {
enable = true;
enableXdgAutostart = true;
variables = [ "--all" ];
};
xwayland = {
enable = true;
};
settings = {
input = {
kb_layout = "${keyboardLayout}";
kb_options = [
"grp:alt_caps_toggle"
"caps:super"
];
numlock_by_default = true;
repeat_delay = 300;
follow_mouse = 1;
float_switch_override_focus = 0;
sensitivity = 0;
touchpad = {
natural_scroll = true;
disable_while_typing = true;
scroll_factor = 0.8;
};
};
gestures = {
workspace_swipe = 1;
workspace_swipe_fingers = 3;
workspace_swipe_distance = 500;
workspace_swipe_invert = 1;
workspace_swipe_min_speed_to_force = 30;
workspace_swipe_cancel_ratio = 0.5;
workspace_swipe_create_new = 1;
workspace_swipe_forever = 1;
};
general = {
"$modifier" = "SUPER";
layout = "dwindle";
gaps_in = 6;
gaps_out = 8;
border_size = 2;
resize_on_border = true;
"col.active_border" = "rgb(${config.lib.stylix.colors.base08}) rgb(${config.lib.stylix.colors.base0C}) 45deg";
"col.inactive_border" = "rgb(${config.lib.stylix.colors.base01})";
};
misc = {
layers_hog_keyboard_focus = true;
initial_workspace_tracking = 0;
mouse_move_enables_dpms = true;
key_press_enables_dpms = false;
disable_hyprland_logo = true;
disable_splash_rendering = true;
enable_swallow = false;
vfr = true; # Variable Frame Rate
vrr = 2; #Variable Refresh Rate Might need to set to 0 for NVIDIA/AQ_DRM_DEVICES
# Screen flashing to black momentarily or going black when app is fullscreen
# Try setting vrr to 0
# Application not responding (ANR) settings
enable_anr_dialog = true;
anr_missed_pings = 15;
};
dwindle = {
pseudotile = true;
preserve_split = true;
force_split = 2;
};
decoration = {
rounding = 10;
blur = {
enabled = true;
size = 5;
passes = 3;
ignore_opacity = false;
new_optimizations = true;
};
shadow = {
enabled = true;
range = 4;
render_power = 3;
color = "rgba(1a1a1aee)";
};
};
ecosystem = {
no_donation_nag = true;
no_update_news = false;
};
cursor = {
sync_gsettings_theme = true;
no_hardware_cursors = 2; # change to 1 if want to disable
enable_hyprcursor = false;
warp_on_change_workspace = 2;
no_warps = true;
};
render = {
# Disabling as no longer supported
#explicit_sync = 1; # Change to 1 to disable
#explicit_sync_kms = 1;
direct_scanout = 0;
};
master = {
new_status = "master";
new_on_top = 1;
mfact = 0.5;
};
# Ensure Xwayland windows render at integer scale; compositor scales them
xwayland = {
force_zero_scaling = true;
};
};
extraConfig = "
monitor=,preferred,auto,auto
monitor=Virtual-1,1920x1080@60,auto,1
${extraMonitorSettings}
# To enable blur on waybar uncomment the line below
# Thanks to SchotjeChrisman
#layerrule = blur,waybar
";
};
}

View File

@@ -0,0 +1,47 @@
{ username, ... }: {
programs.hyprlock = {
enable = true;
settings = {
general = {
disable_loading_bar = true;
grace = 10;
hide_cursor = true;
no_fade_in = false;
};
background = [
{
path = "/home/${username}/Pictures/Wallpapers/beautifulmountainscape.jpg";
blur_passes = 3;
blur_size = 8;
}
];
image = [
{
path = "/home/${username}/.config/face.jpg";
size = 150;
border_size = 4;
border_color = "rgb(0C96F9)";
rounding = -1; # Negative means circle
position = "0, 200";
halign = "center";
valign = "center";
}
];
input-field = [
{
size = "200, 50";
position = "0, -80";
monitor = "";
dots_center = true;
fade_on_empty = false;
font_color = "rgb(CFE6F4)";
inner_color = "rgb(657DC2)";
outer_color = "rgb(0D0E15)";
outline_thickness = 5;
placeholder_text = "Password...";
shadow_passes = 2;
}
];
};
};
}

View File

@@ -0,0 +1,18 @@
{ pkgs, ... }: {
home.packages = with pkgs; [ pyprland ];
home.file.".config/hypr/pyprland.toml".text = ''
[pyprland]
plugins = [
"scratchpads",
]
[scratchpads.term]
animation = "fromTop"
command = "kitty --class kitty-dropterm"
class = "kitty-dropterm"
size = "70% 70%"
max_size = "1920px 100%"
position = "150px 150px"
'';
}

View File

@@ -0,0 +1,82 @@
{host, ...}: let
inherit
(import ../../../hosts/${host}/variables.nix)
extraMonitorSettings
;
in {
wayland.windowManager.hyprland = {
settings = {
windowrule = [
#"noblur, xwayland:1" # Helps prevent odd borders/shadows for xwayland apps
# downside it can impact other xwayland apps
# This rule is a template for a more targeted approach
"noblur, class:^(\bresolve\b)$, xwayland:1" # Window rule for just resolve
"tag +file-manager, class:^([Tt]hunar|org.gnome.Nautilus|[Pp]cmanfm-qt)$"
"tag +terminal, class:^(com.mitchellh.ghostty|org.wezfurlong.wezterm|Alacritty|kitty|kitty-dropterm)$"
"tag +browser, class:^(Brave-browser(-beta|-dev|-unstable)?)$"
"tag +browser, class:^([Ff]irefox|org.mozilla.firefox|[Ff]irefox-esr)$"
"tag +browser, class:^([Gg]oogle-chrome(-beta|-dev|-unstable)?)$"
"tag +browser, class:^([Tt]horium-browser|[Cc]achy-browser)$"
"tag +projects, class:^(codium|codium-url-handler|VSCodium)$"
"tag +projects, class:^(VSCode|code-url-handler)$"
"tag +im, class:^([Dd]iscord|[Ww]ebCord|[Vv]esktop)$"
"tag +im, class:^([Ff]erdium)$"
"tag +im, class:^([Ww]hatsapp-for-linux)$"
"tag +im, class:^(org.telegram.desktop|io.github.tdesktop_x64.TDesktop)$"
"tag +im, class:^(teams-for-linux)$"
"tag +games, class:^(gamescope)$"
"tag +games, class:^(steam_app_\d+)$"
"tag +gamestore, class:^([Ss]team)$"
"tag +gamestore, title:^([Ll]utris)$"
"tag +gamestore, class:^(com.heroicgameslauncher.hgl)$"
"tag +settings, class:^(gnome-disks|wihotspot(-gui)?)$"
"tag +settings, class:^([Rr]ofi)$"
"tag +settings, class:^(file-roller|org.gnome.FileRoller)$"
"tag +settings, class:^(nm-applet|nm-connection-editor|blueman-manager)$"
"tag +settings, class:^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$"
"tag +settings, class:^(nwg-look|qt5ct|qt6ct|[Yy]ad)$"
"tag +settings, class:(xdg-desktop-portal-gtk)"
"tag +settings, class:(.blueman-manager-wrapped)"
"tag +settings, class:(nwg-displays)"
"move 72% 7%,title:^(Picture-in-Picture)$"
"center, class:^([Ff]erdium)$"
"float, class:^([Ww]aypaper)$"
"center, class:^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$"
"center, class:([Tt]hunar), title:negative:(.*[Tt]hunar.*)"
"center, title:^(Authentication Required)$"
"idleinhibit fullscreen, class:^(*)$"
"idleinhibit fullscreen, title:^(*)$"
"idleinhibit fullscreen, fullscreen:1"
"float, tag:settings*"
"float, class:^([Ff]erdium)$"
"float, title:^(Picture-in-Picture)$"
"float, class:^(mpv|com.github.rafostar.Clapper)$"
"float, title:^(Authentication Required)$"
"float, class:(codium|codium-url-handler|VSCodium), title:negative:(.*codium.*|.*VSCodium.*)"
"float, class:^(com.heroicgameslauncher.hgl)$, title:negative:(Heroic Games Launcher)"
"float, class:^([Ss]team)$, title:negative:^([Ss]team)$"
"float, class:([Tt]hunar), title:negative:(.*[Tt]hunar.*)"
"float, initialTitle:(Add Folder to Workspace)"
"float, initialTitle:(Open Files)"
"float, initialTitle:(wants to save)"
"size 70% 60%, initialTitle:(Open Files)"
"size 70% 60%, initialTitle:(Add Folder to Workspace)"
"size 70% 70%, tag:settings*"
"size 60% 70%, class:^([Ff]erdium)$"
"opacity 1.0 1.0, tag:browser*"
"opacity 0.9 0.8, tag:projects*"
"opacity 0.94 0.86, tag:im*"
"opacity 0.9 0.8, tag:file-manager*"
"opacity 0.8 0.7, tag:terminal*"
"opacity 0.8 0.7, tag:settings*"
"opacity 0.8 0.7, class:^(gedit|org.gnome.TextEditor|mousepad)$"
"opacity 0.9 0.8, class:^(seahorse)$ # gnome-keyring gui"
"opacity 0.95 0.75, title:^(Picture-in-Picture)$"
"pin, title:^(Picture-in-Picture)$"
"keepaspectratio, title:^(Picture-in-Picture)$"
"noblur, tag:games*"
"fullscreen, tag:games*"
];
};
};
}