diff --git a/config/hosts/aspects/doloro-desktop/home.nix b/config/hosts/aspects/doloro-desktop/home.nix index 3e74caf..33073c3 100644 --- a/config/hosts/aspects/doloro-desktop/home.nix +++ b/config/hosts/aspects/doloro-desktop/home.nix @@ -10,7 +10,8 @@ den.aspects.doloro-shared modules.sops - modules.fish + modules.hyprland + ]; nixos = { config, pkgs, ... }: diff --git a/config/hosts/aspects/doloro-desktop/host.nix b/config/hosts/aspects/doloro-desktop/host.nix index 2a93a19..8c5a6dd 100644 --- a/config/hosts/aspects/doloro-desktop/host.nix +++ b/config/hosts/aspects/doloro-desktop/host.nix @@ -9,7 +9,6 @@ den.aspects.desktop = { includes = [ modules.nix - modules.hyprland ]; nixos = { pkgs, config, ... }: diff --git a/config/hosts/aspects/doloro-laptop/home.nix b/config/hosts/aspects/doloro-laptop/home.nix index 748b5b6..99ae6d4 100644 --- a/config/hosts/aspects/doloro-laptop/home.nix +++ b/config/hosts/aspects/doloro-laptop/home.nix @@ -10,6 +10,8 @@ den.aspects.doloro-shared modules.user.doloro + modules.hyprland + modules.sops modules.fish ]; diff --git a/config/modules/hyprland/settings.nix b/config/modules/hyprland/settings.nix index ea5691f..bce0d7c 100644 --- a/config/modules/hyprland/settings.nix +++ b/config/modules/hyprland/settings.nix @@ -1,4 +1,165 @@ { modules, ... }: { + modules.hyprland = { + provides = { + doloro-settings = { + homeManager = + { pkgs, home, ... }: + { + home.packages = [ + pkgs.hyprcursor + ]; + home.pointerCursor = { + enable = true; + name = "rose-pine-hyprcursor"; + package = pkgs.rose-pine-hyprcursor; + hyprcursor.enable = true; + }; + wayland.windowManager.hyprland.settings = { + env = [ + "XCURSOR_THEME,BreezeX-RosePine-Linux" + "XCURSOR_SIZE,24" + "HYPRCURSOR_SIZE,24" + "LIBVA_DRIVER_NAME,nvidia" + "__GLX_VENDOR_LIBRARY_NAME,nvidia" + "WEBKIT_DISABLE_DMABUF_RENDERER,1" # maybe disable if nixos fixes alcom + ]; + general = { + gaps_in = 1; + gaps_out = 1; + border_size = 1; + # "col.active_border" = + # "rgb(${toString base16.rgb."base06".r},${toString base16.rgb."base06".g},${toString base16.rgb."base06".b})"; + # "col.inactive_border" = + # "rgb(${toString base16.rgb."base03".r},${toString base16.rgb."base03".g},${toString base16.rgb."base03".b})"; + resize_on_border = false; + allow_tearing = true; + layout = "dwindle"; + }; + decoration = { + rounding = 4; + rounding_power = 1; + active_opacity = 1.0; + inactive_opacity = 1.0; + shadow = { + enabled = false; + }; + + blur = { + enabled = true; + passes = 1; + new_optimizations = true; + ignore_opacity = false; + }; + }; + animations = { + enabled = true; + bezier = [ + "easeOutQuint,0.23,1,0.32,1" + "easeInOutCubic,0.65,0.05,0.36,1" + "linear,0,0,1,1" + "almostLinear,0.5,0.5,0.75,1.0" + "quick,0.15,0,0.1,1" + ]; + animation = [ + "global, 1, 10, default" + "border, 1, 5.39, easeOutQuint" + "windows, 1, 2.79, easeOutQuint" + "windowsIn, 1, 1, easeOutQuint, popin 87%" + "windowsOut, 1, 1, linear, popin 87%" + "windowsMove, 1, 1, easeInOutCubic" + "fadeIn, 1, 0.5, almostLinear" + "fadeOut, 1, 0.5, almostLinear" + "fade, 1, 1, quick" + "layers, 1, 3.81, easeOutQuint" + "layersIn, 1, 4, easeOutQuint, fade" + "layersOut, 1, 1.5, linear, fade" + "fadeLayersIn, 1, 1.79, almostLinear" + "fadeLayersOut, 1, 1.39, almostLinear" + "workspaces, 1, 1, almostLinear, slide" + "workspacesIn, 1, 1, easeInOutCubic, slide" + "workspacesOut, 1, 1, easeInOutCubic, slide" + "zoomFactor, 1, 7, quick" + ]; + }; + dwindle = { + pseudotile = true; + preserve_split = true; + }; + # master = { + # new_status = master; + # }; + misc = { + force_default_wallpaper = -1; + disable_hyprland_logo = false; + enable_anr_dialog = false; + vfr = true; + }; + "$mainMod" = "SUPER"; + bind = [ + "$mainMod, C, killactive" + "$mainMod, M, exec, uwsm stop" + "$mainMod, E, exec, $fileManager" + "$mainMod, V, togglefloating," + "$mainMod, P, pseudo, # dwindle" + "$mainMod, J, togglesplit, # dwindle" + "$mainMod, left, movefocus, l" + "$mainMod, right, movefocus, r" + "$mainMod, up, movefocus, u" + "$mainMod, down, movefocus, d" + "$mainMod, L, exec, wlogout" + ( + "$mainMod, S, exec, " + + ''wayfreeze --after-freeze-cmd 'grim -g "$(slurp -d)" - | wl-copy -t image/png;killall wayfreeze' --hide-cursor'' + ) + "$mainMod, F, fullscreen" + "$mainMod, mouse_down, workspace, e+1" + "$mainMod, mouse_up, workspace, e-1" + ", home, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + ", end, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" + ", F8, pass, class:^(com\.obsproject\.Studio)$" + "$mainMod, 0, workspace, 10" + "$mainMod SHIFT, 0, movetoworkspace, 10" + ] + ++ (builtins.concatLists ( + builtins.genList ( + i: + let + ws = i + 1; + in + [ + "$mainMod, ${toString ws}, workspace, ${toString ws}" + "$mainMod SHIFT, ${toString ws}, movetoworkspace, ${toString ws}" + ] + ) 9 + )); + bindm = [ + "$mainMod, mouse:272, movewindow" + "$mainMod, mouse:273, resizewindow" + ]; + windowrule = [ + "match:class .*, suppress_event maximize" + "match:class ^(gamescope)$, workspace 5" + "match:class ^(gamescope)$, fullscreen true" + "match:class ^(gamescope)$, immediate true" + "match:class ^(steam)$, workspace 6 silent" + "match:class ^(vesktop)$, workspace 8 silent" + "match:class ^(org.telegram.desktop)$, workspace 8 silent" + "match:class ^(com.obsproject.Studio)$, workspace 10 silent" + "match:initial_title ^(OBS Studio Crash Detected)$, pin true" + "match:initial_title ^(Discord Popout)$, workspace 1 silent" + ]; + layerrule = [ + "match:namespace ^(notifications)$, no_screen_share true" + # "match:namespace ^(quickshell)$, blur true" + ]; + # exec-once = [ + # ]; + # we need to auto launch: quickshell, steam, ar_rpc (maybe), vesktop, telegram, qbit, and obs + }; + }; + }; + }; + }; }