{ pkgs, lib, ... }: let flake-compat = builtins.fetchTarball "https://github.com/edolstra/flake-compat/archive/master.tar.gz"; hyprland = (import flake-compat { src = builtins.fetchTarball "https://github.com/hyprwm/Hyprland/archive/2df0d034bc4a18fafb3524401eeeceaa6b23e753.tar.gz"; }) .defaultNix; in { imports = [ hyprland.homeManagerModules.default ./swaylock.nix ./eww.nix ./waybar.nix ./gtk.nix ./dunst.nix ./rofi.nix ]; home.packages = with pkgs; [ pipewire wireplumber wl-clipboard swayimg hyprpaper ]; programs.rofi.package = pkgs.rofi-wayland; wayland.windowManager.hyprland = { enable = true; xwayland = { enable = true; hidpi = true; }; extraConfig = lib.mkDefault ''source=./common.conf ''; }; xdg.configFile."hypr/common.conf".text = '' monitor=,preferred,auto,auto exec-once = waybar & hyprpaper & dunst & eww daemon source = ./macchiato.conf env = XCURSOR_SIZE,24 input { kb_layout = gb follow_mouse = 1 touchpad { natural_scroll = no } } general { gaps_in = 5 gaps_out = 20 border_size = 2 col.active_border = $mauve col.group_border_active = $mauve col.inactive_border = $surface2 col.group_border = $surface2 layout = master } decoration { rounding = 10 blur = yes blur_size = 5 blur_passes = 3 blur_new_optimizations = on blur_xray = off drop_shadow = yes shadow_range = 4 shadow_render_power = 3 col.shadow = $base } animations { enabled = yes bezier = myBezier, 0.05, 0.9, 0.1, 1.05 animation = windows, 1, 7, myBezier animation = windowsOut, 1, 7, default, popin 80% animation = border, 1, 10, default animation = borderangle, 1, 8, default animation = fade, 1, 7, default animation = workspaces, 1, 6, default } master { new_is_master = false } # See https://wiki.hyprland.org/Configuring/Keywords/ for more # bind = SUPER, Return, exec, wezterm bind = SUPER, Return, exec, kitty bind = SUPER, Q, killactive, bind = SUPER, E, exec, power-profiles bind = SUPER, P, exec, powermenu bind = SUPER, V, togglefloating, bind = SUPER, Space, exec, rofi -show drun bind = SUPER, S, exec, grim -g "$(slurp)" bind = SUPER, F1, exec, swaylock bind = SUPER, W, exec, chromium bind = SUPER, F, exec, thunar bind = SUPER, M, fullscreen, 1 bind = SUPER, A, bringactivetotop bind = , XF86AudioMute, exec, pamixer -t bind = , XF86AudioRaiseVolume, exec, pamixer -i 2 bind = , XF86AudioLowerVolume, exec, pamixer -d 2 # Move focus with mainMod + arrow keys bind = SUPER, left, movefocus, l bind = SUPER, H, movefocus, l bind = SUPER, right, movefocus, r bind = SUPER, L, movefocus, r bind = SUPER, up, movefocus, u bind = SUPER, K, movefocus, u bind = SUPER, down, movefocus, d bind = SUPER, J, movefocus, d bind = SUPER SHIFT, left, movewindow, l bind = SUPER SHIFT, H, movewindow, l bind = SUPER SHIFT, right, movewindow, r bind = SUPER SHIFT, L, movewindow, r bind = SUPER SHIFT, up, movewindow, u bind = SUPER SHIFT, K, movewindow, u bind = SUPER SHIFT, down, movewindow, d bind = SUPER SHIFT, J, movewindow, d # Switch workspaces with mainMod + [0-9] bind = SUPER, 1, workspace, 1 bind = SUPER, 2, workspace, 2 bind = SUPER, 3, workspace, 3 bind = SUPER, 4, workspace, 4 bind = SUPER, 5, workspace, 5 bind = SUPER, 6, workspace, 6 bind = SUPER, 7, workspace, 7 bind = SUPER, 8, workspace, 8 bind = SUPER, 9, workspace, 9 bind = SUPER, 0, workspace, 10 # Move active window to a workspace with mainMod + SHIFT + [0-9] bind = SUPER SHIFT, 1, movetoworkspace, 1 bind = SUPER SHIFT, 2, movetoworkspace, 2 bind = SUPER SHIFT, 3, movetoworkspace, 3 bind = SUPER SHIFT, 4, movetoworkspace, 4 bind = SUPER SHIFT, 5, movetoworkspace, 5 bind = SUPER SHIFT, 6, movetoworkspace, 6 bind = SUPER SHIFT, 7, movetoworkspace, 7 bind = SUPER SHIFT, 8, movetoworkspace, 8 bind = SUPER SHIFT, 9, movetoworkspace, 9 bind = SUPER, period, workspace, m+1 bind = SUPER, comma, workspace, m-1 bind = SUPER SHIFT, period, movetoworkspace, m+1 bind = SUPER SHIFT, comma, movetoworkspace, m-1 bind = SUPER, bracketright, focusmonitor, +1 bind = SUPER, bracketleft, focusmonitor, +1 bind = SUPER SHIFT, bracketright, movecurrentworkspacetomonitor, +1 bind = SUPER SHIFT, bracketleft, movecurrentworkspacetomonitor, +1 bind = SUPER, N, workspace, empty bind = SUPER SHIFT, N, movetoworkspace, empty bind = SUPER, C, togglespecialworkspace bind = SUPER SHIFT, C, movetoworkspace, special bind = SUPER, tab, workspace, previous bind = SUPER SHIFT, tab, movetoworkspace, previous # Move/resize windows with mainMod + LMB/RMB and dragging bindm = SUPER, mouse:272, movewindow bindm = SUPER, mouse:273, resizewindow # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more windowrule = float, ^(foot)$ windowrule = float, ^(pavucontrol)$ windowrule = float, ^(.blueman-manager-wrapped)$ windowrule = float, ^(otpclient)$ windowrule = center, ^(foot)$ windowrule = center, ^(pavucontrol)$ windowrule = center, ^(.blueman-manager-wrapped)$ windowrule = move 2% 6%, ^(otpclient)$ windowrule = workspace 2, ^(chromium-browser)$ windowrule = workspace 3, ^(thunar|libreoffice).*$ windowrule = workspace 4 silent, ^(Element|Signal|discord)$ ''; xdg.configFile."hypr/macchiato.conf".text = '' $rosewaterAlpha = f4dbd6 $flamingoAlpha = f0c6c6 $pinkAlpha = f5bde6 $mauveAlpha = c6a0f6 $redAlpha = ed8796 $maroonAlpha = ee99a0 $peachAlpha = f5a97f $yellowAlpha = eed49f $greenAlpha = a6da95 $tealAlpha = 8bd5ca $skyAlpha = 91d7e3 $sapphireAlpha = 7dc4e4 $blueAlpha = 8aadf4 $lavenderAlpha = b7bdf8 $textAlpha = cad3f5 $subtext1Alpha = b8c0e0 $subtext0Alpha = a5adcb $overlay2Alpha = 939ab7 $overlay1Alpha = 8087a2 $overlay0Alpha = 6e738d $surface2Alpha = 5b6078 $surface1Alpha = 494d64 $surface0Alpha = 363a4f $baseAlpha = 24273a $mantleAlpha = 1e2030 $crustAlpha = 181926 $rosewater = 0xfff5e0dc $flamingo = 0xfff2cdcd $pink = 0xfff5c2e7 $mauve = 0xffcba6f7 $red = 0xfff38ba8 $maroon = 0xffeba0ac $peach = 0xfffab387 $yellow = 0xfff9e2af $green = 0xffa6e3a1 $teal = 0xff94e2d5 $sky = 0xff89dceb $sapphire = 0xff74c7ec $blue = 0xff89b4fa $lavender = 0xffb4befe $text = 0xffcdd6f4 $subtext1 = 0xffbac2de $subtext0 = 0xffa6adc8 $overlay2 = 0xff9399b2 $overlay1 = 0xff7f849c $overlay0 = 0xff6c7086 $surface2 = 0xff585b70 $surface1 = 0xff45475a $surface0 = 0xff313244 $base = 0xff1e1e2e $mantle = 0xff181825 $crust = 0xff11111b ''; xdg.configFile."hypr/hyprpaper.conf".text = lib.mkDefault '' preload = ~/nixos/wallpaper.jpg wallpaper = ,~/nixos/wallpaper.jpg ''; }