Add build script, add ly, fix hypr

This commit is contained in:
Alexander
2025-08-03 18:24:21 +02:00
parent 4a2ba48482
commit 6dc0c4af4c
16 changed files with 903 additions and 256 deletions
+1
View File
@@ -11,5 +11,6 @@
./auth
./development
./window-manager
./display-manager
];
}
+7
View File
@@ -0,0 +1,7 @@
{ config, lib, pkgs, ... }:
{
imports = [
./ly
];
}
+17
View File
@@ -0,0 +1,17 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.dov.display-manager.ly;
in {
options.dov.display-manager.ly.enable = mkEnableOption "ly config";
config = mkIf cfg.enable {
services.displayManager.ly = {
enable = true;
};
};
}
+239 -5
View File
@@ -1,10 +1,11 @@
{ inputs, config, lib, pkgs, ... }:
{ inputs, config, lib, pkgs, username, ... }:
with lib;
let
colors = config.lib.stylix.colors;
cfg = config.dov.window-manager.hypr;
hm-cfg = config.home-manager.users.${username}.dov;
in {
options.dov.window-manager.hypr.enable = mkEnableOption "hypr configuration";
config = mkIf cfg.enable {
@@ -14,10 +15,7 @@ in {
};
environment = {
systemPackages = with pkgs; [
wlr-randr
wdisplays
];
systemPackages = with pkgs; [ wlr-randr wdisplays ];
sessionVariables = {
WLR_NO_HARWARE_CURSORS = "1";
@@ -43,5 +41,241 @@ in {
];
};
};
home-manager.users.fujin.config = {
home.packages = with pkgs; [
swww
mako
pipewire
wireplumber
libnotify
kitty
jq # used in lock to get language
wayland-protocols
#hyprland extensions
hyprlock
hypridle
];
wayland.windowManager.hyprland = {
enable = true;
xwayland.enable = true;
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
plugins = [
inputs.split-monitor-workspaces.packages.${pkgs.system}.split-monitor-workspaces
];
settings = {
monitor = ",highres,auto,1";
source = "~/.config/hypr/colors";
env = [
"LIBVA_DRIVER_NAME,nvidia"
"XDG_SESSION_TYPE,wayland"
"WLR_NO_HARDWARE_CURSORS,1"
];
#Autostart
exec = [
# Fix slow startup
"systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
"dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
];
exec-once = [
"mako"
"polkit-kde-agent"
"emacs --fg-daemon"
"hypridle"
"kanshi"
"virsh net-start default"
#"thunderbird"
#"element-desktop"
"keepassxc"
"dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
] ++ lib.optionals hm-cfg.bar.waybar.enable [ "waybar" ];
"$mainMod" = "SUPER";
bind = [
"$mainMod, G, fullscreen,"
"$mainMod, t, togglegroup"
"$mainMod, v, togglefloating"
"$mainMod, s, togglesplit"
#bind = $mainMod, RETURN, exec, kitty
"$mainMod, RETURN, exec, alacritty"
"$mainMod, o, exec, emacsclient -c"
"SUPER_SHIFT, RETURN, exec, thunar"
"SUPER_SHIFT, l, exec, hyprctl switchxkblayout at-translated-set-2-keyboard 0 && hyprlock"
#bind = $mainMod, M, exit,
"SUPER_SHIFT, q, killactive,"
# Switch Keyboard Layouts
"$mainMod, SPACE, exec, hyprctl switchxkblayout teclado-gamer-husky-blizzard next"
'', Print, exec, grim -g "$(slurp)" - | wl-copy''
''
SHIFT, Print, exec, IMG=~/Pictures/$(date +%Y-%m-%d_%H-%m-%s).png && grim -g "$(slurp)" $IMG''
# Functional keybinds
",XF86AudioMicMute,exec,pamixer --default-source -t"
",XF86MonBrightnessDown,exec,brightnessctl s 20-"
",XF86MonBrightnessUp,exec,brightnessctl s 20+"
",XF86AudioMute,exec,amixer -q sset Master toggle"
",XF86AudioLowerVolume,exec,amixer -q sset Master 5%-"
",XF86AudioRaiseVolume,exec,amixer -q sset Master 5%+"
",XF86AudioPlay,exec,playerctl play-pause"
",XF86AudioPause,exec,playerctl play-pause"
# to switch between windows in a floating workspace
"SUPER,Tab,changegroupactive, f"
"SUPER_SHIFT,Tab,changegroupactive, b"
# Move focus with mainMod + arrow keys
"$mainMod, h, movefocus, l"
"$mainMod, l, movefocus, r"
"$mainMod, k, movefocus, u"
"$mainMod, j, movefocus, d"
# Switch workspaces with mainMod + [0-9]
"$mainMod, 1, split-workspace, 1"
"$mainMod, 2, split-workspace, 2"
"$mainMod, 3, split-workspace, 3"
"$mainMod, 4, split-workspace, 4"
"$mainMod, 5, split-workspace, 5"
"$mainMod, 6, split-workspace, 6"
"$mainMod, 7, split-workspace, 7"
"$mainMod, 8, split-workspace, 8"
"$mainMod, 9, split-workspace, 9"
"$mainMod, 0, split-workspace, 10"
# Move active window to a workspace with mainMod + SHIFT + [0-9]
"$mainMod SHIFT, 1, split-movetoworkspace, 1"
"$mainMod SHIFT, 2, split-movetoworkspace, 2"
"$mainMod SHIFT, 3, split-movetoworkspace, 3"
"$mainMod SHIFT, 4, split-movetoworkspace, 4"
"$mainMod SHIFT, 5, split-movetoworkspace, 5"
"$mainMod SHIFT, 6, split-movetoworkspace, 6"
"$mainMod SHIFT, 7, split-movetoworkspace, 7"
"$mainMod SHIFT, 8, split-movetoworkspace, 8"
"$mainMod SHIFT, 9, split-movetoworkspace, 9"
"$mainMod SHIFT, 0, split-movetoworkspace, 10"
# Scroll through existing workspaces with mainMod + scroll
"$mainMod, mouse_down, split-workspace, e+1"
"$mainMod, mouse_up, split-workspace, e-1"
"$mainMod,SPACE, exec, hyprctl switchxkblayout at-translated-set-2-keyboard next"
] ++ lib.optionals hm-cfg.launcher.wofi.enable
[ "$mainMod, p, exec, wofi --show drun" ];
bindm = [
"$mainMod, mouse:272, movewindow"
"$mainMod, mouse:273, resizewindow"
"ALT, mouse:272, resizewindow"
];
input = {
kb_layout = "us,ru,ua";
kb_options = "grp:win_space_toggle";
follow_mouse = 1;
touchpad = { natural_scroll = false; };
sensitivity = 0;
};
general = {
gaps_in = 5;
gaps_out = 20;
border_size = 2;
"col.active_border" =
lib.mkForce "rgba(33ccffee) rgba(00ff99ee) 45deg";
"col.inactive_border" = lib.mkForce "rgba(595959aa)";
layout = "dwindle";
};
decoration = {
rounding = 10;
shadow = {
enabled = true;
range = 4;
render_power = 3;
};
};
animations = {
enabled = "yes";
bezier = "ease,0.4,0.02,0.21,1";
animation = [
"windows, 1, 3.5, ease, slide"
"windowsOut, 1, 3.5, ease, slide"
"border, 1, 6, default"
"fade, 1, 3, ease"
"workspaces, 1, 3.5, ease"
];
};
dwindle = {
pseudotile = "yes";
preserve_split = "yes";
};
master = { new_status = "master"; };
gestures = { workspace_swipe = false; };
workspace = [
#"0, monitor:DP-1"
"8, monitor:e-DP-1"
"9, monitor:e-DP-1"
#"9, on-created-empty:[tiled] thunderbird"
];
windowrulev2 = [
"workspace 9, class:^(.*thunderbird.*)$"
"group, class:^(.*thunderbird.*)$"
"workspace 9, class:^(.*Element.*)$"
"group, class:^(.*Element.*)$"
"workspace 8, title:^(.*KeePassXC.*)$"
"float, class:^(.*steam.*)$"
"noinitialfocus,class:(jetbrains-)(.*),title:^win(.*), initialTitle:win.*, floating:1"
];
};
};
home.file.".config/hypr/colors".text = ''
$background = ${colors.base00}
$foreground = ${colors.base05}
$color0 = ${colors.base00}
$color1 = ${colors.base01}
$color2 = ${colors.base02}
$color3 = ${colors.base03}
$color4 = ${colors.base04}
$color5 = ${colors.base05}
$color6 = ${colors.base06}
$color7 = ${colors.base07}
$color8 = ${colors.base08}
$color9 = ${colors.base09}
$color10 = ${colors.base0A}
$color11 = ${colors.base0B}
$color12 = ${colors.base0C}
$color13 = ${colors.base0D}
$color14 = ${colors.base0E}
$color15 = ${colors.base0F}
'';
xdg.configFile."hypr/hyprlock.conf".source = ./hyprlock.conf;
xdg.configFile."hypr/hypridle.conf".source = ./hypridle.conf;
};
};
}
+28
View File
@@ -0,0 +1,28 @@
general {
lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances.
#before_sleep_cmd = loginctl lock-session # lock before suspend.
#after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display.
}
listener {
timeout = 150 # 2.5min.
on-timeout = brightnessctl -s set 10 # set monitor backlight to minimum, avoid 0 on OLED monitor.
on-resume = brightnessctl -r # monitor backlight restor.
}
# change language to US before locking
listener {
timeout = 150 # 2.5min.
on-timeout = hyprctl switchxkblayout at-translated-set-2-keyboard 0 # switch to us layout
}
listener {
timeout = 300 # 5min
on-timeout = loginctl lock-session # lock screen when timeout has passed
}
# listener {
# timeout = 380 # 5.5min
# on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed
# on-resume = hyprctl dispatch dpms on # screen on when activity is detected after timeout has fired.
# }
+65
View File
@@ -0,0 +1,65 @@
source = ~/.cache/wal/colors-hyprland.conf
# BACKGROUND
background {
monitor =
path = screenshot
blur_passes = 3
contrast = 0.8916
brightness = 0.8172
vibrancy = 0.1696
vibrancy_darkness = 0.0
}
# GENERAL
general {
no_fade_in = false
grace = 0
disable_loading_bar = true
}
# INPUT FIELD
input-field {
monitor =
size = 250, 60
outline_thickness = 2
dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8
dots_spacing = 0.2 # Scale of dots' absolute size, 0.0 - 1.0
dots_center = true
outer_color = rgba(0, 0, 0, 0)
inner_color = rgba(0, 0, 0, 0.5)
font_color = rgb(200, 200, 200)
fade_on_empty = false
font_family = JetBrains Mono Nerd Font Mono
placeholder_text = <i><span foreground="##cdd6f4">Input Password...</span></i>
hide_input = false
position = 0, -120
halign = center
valign = center
}
# TIME
label {
monitor =
text = cmd[update:1000] echo "$(date +"%-I:%M%p")"
color = $foreground
#color = rgba(255, 255, 255, 0.6)
font_size = 120
font_family = JetBrains Mono Nerd Font Mono ExtraBold
position = 0, -300
halign = center
valign = top
}
# USER
label {
monitor =
text = Hi there, $USER
color = $foreground
#color = rgba(255, 255, 255, 0.6)
font_size = 25
font_family = JetBrains Mono Nerd Font Mono
position = 0, -40
halign = center
valign = center
}