{pkgs, ...}: with pkgs; { imports = [ ./rofi.nix ./services.nix ./waybar.nix ]; home.packages = [ wl-clipboard ]; wayland.windowManager.hyprland = { enable = true; systemd.variables = ["--all"]; settings = let rofi-clipboard = pkgs.writeScriptBin "rofi-clipboard" '' tmp_dir="/tmp/cliphist" rm -rf "$tmp_dir" if [[ -n "$1" ]]; then cliphist decode <<<"$1" | wl-copy exit fi mkdir -p "$tmp_dir" read -r -d "" prog <$tmp_dir/"grp[1]"."grp[3]) print \$0"\0icon\x1f$tmp_dir/"grp[1]"."grp[3] next } 1 EOF cliphist list | gawk "$prog" ''; scratchpad = pkgs.writeScriptBin "hyprscratchpad" '' COMMAND=$1 CLASS=$2 WORKSPACE=$3 if [[ $(hyprctl clients | grep -v '"title":' | grep "class: $CLASS") ]];then hyprctl dispatch togglespecialworkspace $WORKSPACE else hyprctl dispatch togglespecialworkspace $WORKSPACE && hyprctl dispatch exec "$COMMAND" fi ''; mod = "SUPER"; modC = "SUPER CTRL"; modS = "SUPER SHIFT"; browser = "firefox-nightly"; colorPicker = "notify-send -i gtk-color-picker $(${hyprpicker}/bin/hyprpicker -a) 'Copied to clipboard.'"; fileManager = "nautilus"; launcher = "rofi -show drun"; clipboard = "rofi -modi '   ':${rofi-clipboard}/bin/rofi-clipboard -show '   ' -show-icons"; terminal = "wezterm"; screenshot = mode: "${ hyprshot.overrideAttrs { # Fixes cursors showing in region shots src = pkgs.fetchFromGitHub { owner = "BenCarmichael01"; repo = "Hyprshot"; rev = "84e2adcd5dd9060178d0d028ad032734797fba23"; hash = "sha256-XDKwBiUMWvxoWpkdJ0EK4kEqPSTZLcF6axHjom3c5Jk="; }; } }/bin/hyprshot --clipboard-only -m ${mode}"; in { decoration.rounding = 10; dwindle.preserve_split = true; gestures.workspace_swipe = true; input.touchpad = { clickfinger_behavior = true; natural_scroll = true; }; device = [ { name = "logitech-usb-receiver"; sensitivity = -0.5; } ]; windowrule = [ "float, ^(vesktop)$" "float, ^(org.telegram.desktop)$" ]; layerrule = [ "dimaround, rofi" ]; animations = { enabled = true; bezier = [ "overshot,0.7,0.6,0.1,1.1" "bounce,1,1.6,0.1,0.85" ]; animation = [ "windows,1,5,bounce,popin" "border,1,20,default" "fade,1,5,default" "workspaces,1,5,overshot,slide" ]; }; general = { border_size = 2; gaps_in = 10; resize_on_border = true; "col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg"; "col.inactive_border" = "rgba(595959aa)"; }; exec-once = [ "${mpvpaper.overrideAttrs { version = "unstable-2024-07-05"; src = fetchFromGitHub { owner = "GhostNaN"; repo = "mpvpaper"; rev = "a445391ff7491053fef78e3645eeed934f0c8fae"; sha256 = "sha256-3wHsUtIkh765EiMnx3BPzztvffIDf1NCqF0I/OATTZ4="; }; }}/bin/mpvpaper -vp -o 'no-audio loop' DP-1 ${builtins.toString ./wall.mp4}" "waybar" ]; misc = { force_default_wallpaper = 0; disable_hyprland_logo = true; }; monitor = [ "eDP-1, disable" "DP-1, 2560x1440@165, auto, auto" ]; env = [ # Nvidia stuff "GBM_BACKEND, nvidia-drm" "__GLX_VENDOR_LIBRARY_NAME, nvidia" "LIBVA_DRIVER_NAME, nvidia" "WLR_DRM_DEVICES, $HOME/.config/hypr/card" # Cursors "HYPRCURSOR_SIZE, 24" "XCURSOR_SIZE, 24" ]; bindm = [ "${mod}, mouse:272, movewindow" "${mod}, mouse:273, resizewindow" ]; bind = [ # Apps "${mod}, v, exec, ${clipboard}" "${mod}, c, exec, ${colorPicker}" "${mod}, w, exec, ${browser}" "${mod}, e, exec, ${fileManager}" "${mod}, r, exec, ${launcher}" "${mod}, Return, exec, ${terminal}" # Scratchpads "${mod}, d, exec, ${scratchpad}/bin/hyprscratchpad vesktop vesktop vesktop" "${mod}, t, exec, ${scratchpad}/bin/hyprscratchpad telegram-desktop org.telegram.desktop telegram" # Screenshots "${modS}, s, exec, ${screenshot "window"}" "${modC}, 3, exec, ${screenshot "output -c"}" "${modC}, 4, exec, ${screenshot "region -C 0,0"}" # Mouse controls "${mod}, mouse_down, workspace, e-1" "${mod}, mouse_up, workspace, e+1" # Quitting "${mod}, q, killactive" "${modS}, q, exit" # Toggles "${mod}, j, togglesplit" "${mod}, Space, togglefloating" # Focus movements "${mod}, h, movefocus, l" "${mod}, j, movefocus, d" "${mod}, k, movefocus, u" "${mod}, l, movefocus, r" # Window movements "${modS}, h, movewindow, l" "${modS}, j, movewindow, d" "${modS}, k, movewindow, u" "${modS}, l, movewindow, r" # Window resizing "${modC}, h, resizeactive, -30 0" "${modC}, j, resizeactive, 0 30" "${modC}, k, resizeactive, 0 -30" "${modC}, l, resizeactive, 30 0" # Volume controls ", 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" # Media controls ", XF86AudioPlay, exec, playerctl play-pause" ", XF86AudioNext, exec, playerctl next" ", XF86AudioPrev, exec, playerctl previous" ] ++ ( builtins.concatLists (builtins.genList ( x: let ws = let c = (x + 1) / 10; in builtins.toString (x + 1 - (c * 10)); in [ # Workspaces "${mod}, ${ws}, workspace, ${builtins.toString (x + 1)}" "${modS}, ${ws}, movetoworkspace, ${builtins.toString (x + 1)}" ] ) 10) ); }; }; }