{ config, lib, pkgs, inputs, ... }: { # Move needed files home.file.".config/hypr/mocha.conf".text = builtins.readFile ./mocha.conf; home.file.".config/hypr/gamemode.sh".text = builtins.readFile ./gamemode.sh; home.file.".config/hypr/power.sh".text = builtins.readFile ./power.sh; home.file.".config/hypr/xdph.conf".text = builtins.readFile ./xdph.conf; home.file.".config/hypr/wallpapers" = { source = ./wallpapers; }; home.file.".themes/Catppuccin-B-LB-Dark-Macchiato" = { source = ./Catppuccin-B-LB-Dark-Macchiato; }; home.file.".themes/Catppuccin-B-LB-Dark-Macchiato-hdpi" = { source = ./Catppuccin-B-LB-Dark-Macchiato-hdpi; }; home.file.".themes/Catppuccin-B-LB-Dark-Macchiato-xhdpi" = { source = ./Catppuccin-B-LB-Dark-Macchiato-xhdpi; }; home.packages = with pkgs; [ aquamarine xdg-desktop-portal-hyprland xdg-desktop-portal-gtk polkit_gnome qt5.qtwayland qt6.qtwayland qt5.qtbase qt6.qtbase hyprland-qt-support hyprlang hyprwayland-scanner hyprgraphics hyprutils hyprtoolkit hyprshutdown hypridle hyprpicker hyprshade hyprsysteminfo hyprcursor pwvucontrol overskride udiskie pfetch lavat audacious cmatrix nwg-look hyprpwcenter brightnessctl gtk-engine-murrine sassc gnome-themes-extra playerctl eog gnome-text-editor ]; # Catppuccin! catppuccin = { enable = true; flavor = "mocha"; accent = "blue"; cursors = { enable = true; flavor = "mocha"; accent = "dark"; }; gtk.icon = { enable = true; flavor = "mocha"; accent = "lavender"; }; hyprland = { enable = true; flavor = "mocha"; accent = "lavender"; }; }; # Dark color scheme gtk = { enable = true; colorScheme = "dark"; gtk3.extraConfig.Settings = ''gtk-application-prefer-dark-themes=1''; gtk4.extraConfig.Settings = ''gtk-application-prefer-dark-themes=1''; }; home.sessionVariables.NIXOS_OZONE_WL = "1"; # Hint for Electron apps wayland.windowManager.hyprland = { enable = true; xwayland.enable = true; systemd.enable = false; settings = { "$mainMod" = "SUPER"; source = [ "mocha.conf" ]; monitor = [ "eDP-1, 1920x1080@60.02, 0x0, 1, bitdepth, 10" ]; exec-once = [ "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" "systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1" "dconf write /org/gnome/desktop/interface/cursor-theme Catppuccin Mocha Dark" "udiskie" "dunst" "hyprpaper" "hypridle" "hyprsunset" "wl-paste --type text --watch cliphist store # Stores only text data" # Stores only text data "wl-paste --type image --watch cliphist store" # Stores only image data "waybar" ]; env = [ "XCURSOR_THEME,Adwaita" "XCURSOR_SIZE,24" "HYPRCURSOR_THEME,Catppuccin Mocha Dark" "HYPRCURSOR_SIZE,22" "GTK_THEME,Catppuccin-B-LB-Dark-Macchiato" "HYPRLAND_TRACE=1" "GDK_BACKEND,wayland,x11,*" "QT_QPA_PLATFORM,wayland;xcb" "SDL_VIDEODRIVER,wayland" "CLUTTER_BACKEND,wayland" "XDG_CURRENT_DESKTOP,Hyprland" "XDG_SESSION_TYPE,wayland" "XDG_SESSION_DESKTOP,Hyprland" "QT_AUTO_SCREEN_SCALE_FACTOR,1" "QT_QPA_PLATFORM,wayland;xcb" "QT_WAYLAND_DISABLE_WINDOWDECORATION,1" "QT_QPA_PLATFORMTHEME,qt5ct" "QT_QPA_PLATFORMTHEME=hyprqt6engine" ]; ecosystem = { enforce_permissions = true; }; permision = [ "/nix/store/[a-z0-9]{32}-grim-[0-9.]*/bin/grim, screencopy, allow" "/nix/store/[a-z0-9]{32}-xdg-desktop-portal-hyprland-[0-9.]*/libexec/.xdg-desktop-portal-hyprland-wrapped, screencopy, allow" # /usr/(bin|local/bin)/hyprpm, plugin, allow; # Uncomment For Plugins ]; general = { gaps_in = 4; gaps_out = 8; border_size = 1; "col.active_border" = "$overlay1"; "col.inactive_border" = "$overlay0"; resize_on_border = true; allow_tearing = true; layout = "dwindle"; }; decoration = { rounding = 12; rounding_power = 4; active_opacity = 1.0; inactive_opacity = 1.0; shadow = { enabled = true; range = 3; render_power = 2; color = "rgba(1a1a1aee)"; }; blur = { enabled = true; size = 4; passes = 1; vibrancy = 0.2; }; }; animations = { enabled = true; # Curves bezier = [ "expressiveFastSpatial, 0.42, 1.67, 0.21, 0.90" "expressiveSlowSpatial, 0.39, 1.29, 0.35, 0.98" "expressiveDefaultSpatial, 0.38, 1.21, 0.22, 1.00" "emphasizedDecel, 0.05, 0.7, 0.1, 1" "emphasizedAccel, 0.3, 0, 0.8, 0.15" "standardDecel, 0, 0, 0, 1" "menu_decel, 0.1, 1, 0, 1" "menu_accel, 0.52, 0.03, 0.72, 0.08" "stall, 1, -0.1, 0.7, 0.85" ]; animation = [ # windows "windowsIn, 1, 3, emphasizedDecel, popin 80%" "fadeIn, 1, 3, emphasizedDecel" "windowsOut, 1, 2, emphasizedDecel, popin 90%" "fadeOut, 1, 2, emphasizedDecel" "windowsMove, 1, 3, emphasizedDecel, slide" "border, 1, 10, emphasizedDecel" # layers "layersIn, 1, 2.7, emphasizedDecel, popin 93%" "layersOut, 1, 2.4, menu_accel, popin 94%" # fade "fadeLayersIn, 1, 0.5, menu_decel" "fadeLayersOut, 1, 2.7, stall" # workspaces "workspaces, 1, 7, menu_decel, slide" # specialWorkspace "specialWorkspaceIn, 1, 2.8, emphasizedDecel, slidevert" "specialWorkspaceOut, 1, 1.2, emphasizedAccel, slidevert" # zoom "zoomFactor, 1, 3, standardDecel" ]; }; dwindle = { pseudotile = true; preserve_split = true; }; master = { new_status = "master"; }; misc = { force_default_wallpaper = -1; disable_hyprland_logo = false; vfr = true; }; input = { kb_layout = "pl"; follow_mouse = 1; sensitivity = 0; touchpad = { natural_scroll = true; }; }; gesture = [ "3, horizontal, workspace" ]; device = { name = "epic-mouse-v1"; sensitivity = -0.5; }; bind = [ "$mainMod, RETURN, exec, kitty" "$mainMod, Q, exec, kitty" "$mainMod SHIFT, Q, killactive" "$mainMod, M, exec, command -v hyprshutdown >/dev/null 2>&1 && hyprshutdown || hyprctl dispatch exit" "$mainMod, E, exec, nautilus" "$mainMod, V, togglefloating" "$mainMod, D, exec, rofi -show drun" "$mainMod, O, pseudo" # dwindle "$mainMod, J, layoutmsg, togglesplit" # dwindle "$mainMod, F1, exec, sh $HOME/.config/hypr/gamemode.sh" # Game Mode "$mainMod SHIFT, F, exec, librewolf" # You can replace with your desired browser "$mainMod SHIFT, D, exec, mullvad-browser" "$mainMod, H, exec, cliphist list | rofi -dmenu -display-columns 2 | cliphist decode | wl-copy" # Clipboard History "$mainMod SHIFT, P, exec, sh $HOME/.config/hypr/power.sh" # Power Menu "$mainMod, B, exec, overskride" # Bluetooth control "$mainMod, P, exec, pwvucontrol" # Volume control # Move focus with mainMod + arrow keys "$mainMod, left, movefocus, l" "$mainMod, right, movefocus, r" "$mainMod, up, movefocus, u" "$mainMod, down, movefocus, d" # Switch workspaces with mainMod + [0-9] "$mainMod, 1, workspace, 1" "$mainMod, 2, workspace, 2" "$mainMod, 3, workspace, 3" "$mainMod, 4, workspace, 4" "$mainMod, 5, workspace, 5" "$mainMod, 6, workspace, 6" "$mainMod, 7, workspace, 7" "$mainMod, 8, workspace, 8" "$mainMod, 9, workspace, 9" "$mainMod, 0, workspace, 10" # Move active window to a workspace with mainMod + SHIFT + [0-9] "$mainMod SHIFT, 1, movetoworkspace, 1" "$mainMod SHIFT, 2, movetoworkspace, 2" "$mainMod SHIFT, 3, movetoworkspace, 3" "$mainMod SHIFT, 4, movetoworkspace, 4" "$mainMod SHIFT, 5, movetoworkspace, 5" "$mainMod SHIFT, 6, movetoworkspace, 6" "$mainMod SHIFT, 7, movetoworkspace, 7" "$mainMod SHIFT, 8, movetoworkspace, 8" "$mainMod SHIFT, 9, movetoworkspace, 9" "$mainMod SHIFT, 0, movetoworkspace, 10" # Example special workspace (scratchpad) "$mainMod, S, togglespecialworkspace, magic" "$mainMod SHIFT, S, movetoworkspace, special:magic" # Scroll through existing workspaces with mainMod + scroll "$mainMod, mouse_down, workspace, e+1" "$mainMod, mouse_up, workspace, e-1" ]; bindm = [ # Move/resize windows with mainMod + LMB/RMB and dragging "$mainMod, mouse:272, movewindow" "$mainMod, mouse:273, resizewindow" ]; bindel = [ # Laptop multimedia keys for volume and LCD brightness ",XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+" ",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" ",XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" ",XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" ",XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+" ",XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-" # Requires playerctl ", XF86AudioNext, exec, playerctl next" ", XF86AudioPause, exec, playerctl play-pause" ", XF86AudioPlay, exec, playerctl play-pause" ", XF86AudioPrev, exec, playerctl previous" ]; workspace = [ "1, monitor:eDP-1, persistent:true" "10, monitor:eDP-1, persistent:true" ]; windowrule = [ { name = "floating size"; match = { class = ".*"; }; float = false; size = "800x500"; # This shit wont work no matter what i give up } { name = "tearing"; match = { class = "cs2"; }; immediate = true; } { # Ignore maximizing requests from apps name = "suppress-maximize-events"; match = { class = ".*"; }; suppress_event = "maximize"; } { # Dragging issue fixes for XWayland name = "fix-xwayland-drags"; match = { class = "^$"; title = "^$"; xwayland = true; float = true; fullscreen = false; pin = false; }; no_focus = true; } { name = "move-hyprland-run"; match = { class = "hyprland-run"; }; move = "20 monitor_h-120"; float = "yes"; } { name = "xwayland-video-bridge-fixes"; match = { class = "xwaylandvideobridge"; }; no_initial_focus = true; no_focus = true; no_anim = true; no_blur = true; max_size = 1; opacity = 0.0; } ]; }; }; }