diff options
| author | scouckel <james.krinsky@gmail.com> | 2025-11-26 03:08:28 -0600 |
|---|---|---|
| committer | scouckel <james.krinsky@gmail.com> | 2025-11-26 03:08:28 -0600 |
| commit | 94f99ad3d4bb375d0d1296e4b2755057bd812fd9 (patch) | |
| tree | 84e784de30cdb8d818e388fd49db67246e5340d6 /modules/home-manager/hypr | |
rebase
Diffstat (limited to 'modules/home-manager/hypr')
| -rw-r--r-- | modules/home-manager/hypr/autostart.nix | 14 | ||||
| -rw-r--r-- | modules/home-manager/hypr/binds.nix | 93 | ||||
| -rw-r--r-- | modules/home-manager/hypr/camdenyards.jpg | bin | 0 -> 2850041 bytes | |||
| -rw-r--r-- | modules/home-manager/hypr/decoration.nix | 28 | ||||
| -rw-r--r-- | modules/home-manager/hypr/default.nix | 140 | ||||
| -rw-r--r-- | modules/home-manager/hypr/hypridle.nix | 26 | ||||
| -rw-r--r-- | modules/home-manager/hypr/hyprlock.nix | 46 | ||||
| -rw-r--r-- | modules/home-manager/hypr/hyprpaper.nix | 22 | ||||
| -rw-r--r-- | modules/home-manager/hypr/input.nix | 38 | ||||
| -rw-r--r-- | modules/home-manager/hypr/pyprland.toml | 12 | ||||
| -rw-r--r-- | modules/home-manager/hypr/rofi-hyprland.nix | 23 | ||||
| -rw-r--r-- | modules/home-manager/hypr/swaync.nix | 13 | ||||
| -rw-r--r-- | modules/home-manager/hypr/waybar-hyprland.nix | 44 |
13 files changed, 499 insertions, 0 deletions
diff --git a/modules/home-manager/hypr/autostart.nix b/modules/home-manager/hypr/autostart.nix new file mode 100644 index 0000000..048afcc --- /dev/null +++ b/modules/home-manager/hypr/autostart.nix @@ -0,0 +1,14 @@ +{ config, lib, inputs, ... }: + +# very broken, fix later + +{ + config = lib.mkIf config.hyprland.enable { + wayland.windowManager.hyprland.settings = { + exec-once = [ + "[workspace 1 silent] zen-browser" + "[workspace 7 silent] equibop" + ]; + }; + }; +} diff --git a/modules/home-manager/hypr/binds.nix b/modules/home-manager/hypr/binds.nix new file mode 100644 index 0000000..8d2d772 --- /dev/null +++ b/modules/home-manager/hypr/binds.nix @@ -0,0 +1,93 @@ +{ config, lib, ... }: + +{ + config = lib.mkIf config.hyprland.enable { + wayland.windowManager.hyprland.settings.binds = { + "$mod" = "SUPER"; + "$term" = "kitty"; + "$filem" = "kitty yazi"; + + bind = [ + "$mod SHIFT, K, exec, hyprlock" + "$mod, P, exec, hyprpicker" + # "$mod, RETURN, exec, pypr toggle kitty" + + "$mod, F1, exec, rofi -show drun" + "$mod, F2, exec, $term" + "$mod, F3, exec, $filem" + "$mod, F4, killactive," + + "$mod, F, fullscreen" + "$mod, T, togglefloating" + + "$mod, 1, workspace, 1" + "$mod, 2, workspace, 2" + "$mod, 3, workspace, 3" + "$mod, 4, workspace, 4" + "$mod, 5, workspace, 5" + "$mod, 6, workspace, 6" + "$mod, 7, workspace, 7" + "$mod, 8, workspace, 8" + "$mod, 9, workspace, 9" + "$mod, 0, workspace, 10" + + "$mod SHIFT, 1, movetoworkspace, 1" + "$mod SHIFT, 2, movetoworkspace, 2" + "$mod SHIFT, 3, movetoworkspace, 3" + "$mod SHIFT, 4, movetoworkspace, 4" + "$mod SHIFT, 5, movetoworkspace, 5" + "$mod SHIFT, 6, movetoworkspace, 6" + "$mod SHIFT, 7, movetoworkspace, 7" + "$mod SHIFT, 8, movetoworkspace, 8" + "$mod SHIFT, 9, movetoworkspace, 9" + "$mod SHIFT, 0, movetoworkspace, 10" + + "$mod, H, movefocus, l" + "$mod, J, movefocus, d" + "$mod, K, movefocus, u" + "$mod, L, movefocus, r" + + "$mod SHIFT, c, exec, xsel -bc" + + "$mod, C, exec, rofi -show calc" + + ", PRINT, exec, hyprshot -m region -o ~/Documents/screenshots" + "SHIFT, PRINT, exec, hyprshot -m region --clipboard-only" + + "$mod SHIFT CTRL ALT, L, exec, xdg-open https://linkedin.com" # important bind + ]; + + bindm = [ + "$mod, mouse:272, movewindow" + "$mod, mouse:273, resizewindow" + "$mod SHIFT, mouse:272, resizewindow" + ]; + + bindl = [ + ", XF86AudioPrev, exec, playerctl --player=spotify_player,spotify previous" + ", XF86AudioNext, exec, playerctl --player=spotify_player,spotify next" + ", XF86AudioPause, exec, playerctl --player=spotify_player,spotify play-pause" + ", XF86AudioPlay, exec, playerctl --player=spotify_player,spotify play-pause" + "$mod, XF86AudioPrev, exec, playerctl --player=spotify_player,spotify loop none" + "$mod, XF86AudioPause, exec, playerctl --player=spotify_player,spotify loop playlist" + "$mod, XF86AudioPlay, exec, playerctl --player=spotify_player,spotify loop playlist" + "$mod, XF86AudioNext, exec, playerctl --player=spotify_player,spotify loop track" + "$mod, XF86AudioStop, exec, playerctl --player=spotify_player,spotify shuffle toggle" + ", XF86AudioStop, exec, playerctl -a stop" + + "$mod SHIFT, L, exec, hyprctl dispatch dpms toggle" + ",switch:Lid Switch, exec, pidof hyprlock || hyprlock" + + "$mod, M, exit," + ]; + + bindel = [ + "$mod,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+" + "$mod,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" + ",XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + ", XF86MonBrightnessUp, exec, brightnessctl set 10%+" + ", XF86MonBrightnessDown, exec, brightnessctl set 10%-" + ]; + }; + }; +} diff --git a/modules/home-manager/hypr/camdenyards.jpg b/modules/home-manager/hypr/camdenyards.jpg Binary files differnew file mode 100644 index 0000000..4601318 --- /dev/null +++ b/modules/home-manager/hypr/camdenyards.jpg diff --git a/modules/home-manager/hypr/decoration.nix b/modules/home-manager/hypr/decoration.nix new file mode 100644 index 0000000..e928a51 --- /dev/null +++ b/modules/home-manager/hypr/decoration.nix @@ -0,0 +1,28 @@ +{ config, lib, inputs, ... }: + +{ + config = lib.mkIf config.hyprland.enable { + wayland.windowManager.hyprland.settings = { + decoration = { + rounding = 0; + }; + + animations = { + enabled = false; + }; + + workspace = [ + "w[tv1], gapsout:0, gapsin:0" + "f[1], gapsout:0, gapsin:0" + ]; + + windowrulev2 = [ + "bordersize 0, floating:0, onworkspace:w[tv1]" + "rounding 0, floating:0, onworkspace:w[tv1]" + "bordersize 0, floating:0, onworkspace:f[1]" + "rounding 0, floating:0, onworkspace:f[1]" + ]; + + }; + }; +} diff --git a/modules/home-manager/hypr/default.nix b/modules/home-manager/hypr/default.nix new file mode 100644 index 0000000..2ec9301 --- /dev/null +++ b/modules/home-manager/hypr/default.nix @@ -0,0 +1,140 @@ +{ config, pkgs, lib, inputs, ... }: + +{ + options = { + hyprland.enable = lib.mkEnableOption "enables hyprland"; + }; + + imports = [ + ./decoration.nix + ./binds.nix + ./input.nix + ./waybar-hyprland.nix + ./hyprlock.nix + ./hypridle.nix + ./hyprpaper.nix + ./rofi-hyprland.nix + ]; + + config = lib.mkIf config.hyprland.enable { + #fixing issues + + xdg.portal = { + enable = true; + + config = { + common = { + default = [ "hyprland" ]; + }; + }; + + extraPortals = with pkgs; [ + xdg-desktop-portal-hyprland + ]; + }; + + home.packages = with pkgs; [ + # pyprland + ]; + + home.file.".config/hypr/pyprland.toml".source = ./pyprland.toml; + + home.sessionVariables.NIXOS_OZONE_WL = "1"; + + home.pointerCursor = { + gtk.enable = true; + # x11.enable = true; + package = pkgs.bibata-cursors; + name = "Bibata-Modern-Classic"; + size = 12; + }; + + gtk = { + enable = true; + + theme = { + package = pkgs.flat-remix-gtk; + name = "Flat-Remix-GTK-Grey-Darkest"; + }; + + iconTheme = { + package = pkgs.adwaita-icon-theme; + name = "Adwaita"; + }; + + font = { + name = "Sans"; + size = 11; + }; + + gtk3.extraConfig = { + gtk-application-prefer-dark-theme = true; + }; + + gtk4.extraConfig = { + gtk-application-prefer-dark-theme = true; + }; + }; + + wayland.windowManager.hyprland.systemd.variables = ["--all"]; + + # ok now actually hyprland + + wayland.windowManager.hyprland = { + enable = true; + xwayland.enable = true; + + settings = { + exec-once = [ + "lxqt-policykit-agent" + "waybar" + "hyprpaper" + "waypaper --restore" + # "pypr" + ]; + + # environment variables + env = [ + "XCURSOR_SIZE,24" + "HYPRCURSOR_SIZE,24" + ]; + + general = { + gaps_in = 0; + gaps_out = 0; + + border_size = 1; + + # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors + "col.active_border" = "rgba(7DAeA3ee) rgba(89B482ee) 45deg"; + "col.inactive_border" = "rgba(504945ee)"; + + # Set to true enable resizing windows by clicking and dragging on borders and gaps + resize_on_border = false; + + # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on + allow_tearing = false; + + layout = "dwindle"; + }; + + misc = { + force_default_wallpaper = 1; + disable_hyprland_logo = false; + vfr = true; + }; + + dwindle = { + pseudotile = true; + preserve_split = true; + }; + }; + + extraConfig = " + xwayland { + force_zero_scaling = true; + } + "; + }; + }; +} diff --git a/modules/home-manager/hypr/hypridle.nix b/modules/home-manager/hypr/hypridle.nix new file mode 100644 index 0000000..3f575a0 --- /dev/null +++ b/modules/home-manager/hypr/hypridle.nix @@ -0,0 +1,26 @@ +{ config, lib, ... }: + +{ + config = lib.mkIf config.hyprland.enable { + services.hypridle = { + enable = true; + + settings = { + general = { + lock_cmd = "pidof hyprlock || hyprlock"; + }; + + listener = [ + { + timeout = 300; + on-timeout = "hyprlock"; + } + { + timeout = 3600; + on-timeout = "hyprctl dispatch dpms off"; + } + ]; + }; + }; + }; +}
\ No newline at end of file diff --git a/modules/home-manager/hypr/hyprlock.nix b/modules/home-manager/hypr/hyprlock.nix new file mode 100644 index 0000000..dfaee43 --- /dev/null +++ b/modules/home-manager/hypr/hyprlock.nix @@ -0,0 +1,46 @@ +{ pkgs, lib, config, ... }: + +{ + config = lib.mkIf config.hyprland.enable { + programs.hyprlock = { + enable = true; + + settings = { + general = { + disable_loading_bar = true; + hide_cursor = false; + no_fade_in = true; + }; + + background = [ + { + path = "screenshot"; + # path = ~/.config/hypr/wallpaper_effects/.wallpaper_current; + blur_passes = 4; + blur_size = 7; + } + ]; + + input-field = [ + { + size = "200, 50"; + position = "0, 0"; + fade_on_empty = false; + font_color = "rgb(212, 190, 152)"; + inner_color = "rgb(29, 32, 33)"; + outer_color = "rgb(125, 174, 163)"; + outline_thickness = 2; + rounding = 0; + placeholder_text = "🔒🔒🔒"; + } + ]; + + animations = [ + { + enabled = false; + } + ]; + }; + }; + }; +} diff --git a/modules/home-manager/hypr/hyprpaper.nix b/modules/home-manager/hypr/hyprpaper.nix new file mode 100644 index 0000000..f24f4c8 --- /dev/null +++ b/modules/home-manager/hypr/hyprpaper.nix @@ -0,0 +1,22 @@ +{ pkgs, lib, config, ... }: + +{ + config = lib.mkIf config.hyprland.enable { + home.packages = [ + pkgs.hyprpaper + pkgs.waypaper + ]; + + services.hyprpaper = { + enable = true; + + settings = { + ipc = "on"; + splash = false; + + preload = [ "~/nixosconf/modules/home-manager/hypr/camdenyards.jpg" ]; + wallpaper = [ ", ~/nixosconf/modules/home-manager/hypr/camdenyards.jpg" ]; + }; + }; + }; +}
\ No newline at end of file diff --git a/modules/home-manager/hypr/input.nix b/modules/home-manager/hypr/input.nix new file mode 100644 index 0000000..09fdb3e --- /dev/null +++ b/modules/home-manager/hypr/input.nix @@ -0,0 +1,38 @@ +{ config, lib, ... }: + +{ + config = lib.mkIf config.hyprland.enable { + wayland.windowManager.hyprland = { + settings = { + input = { + touchpad = { + natural_scroll = true; + }; + accel_profile = "flat"; + }; + gesture = [ + "3, horizontal, workspace," + ]; + + device = [ + { # xanathar touchpad + name = "syna32ce:00-06cb:ce17-touchpad"; + sensitivity = 0; + } + { # vecna mouse + name = "razer-razer-deathadder-v2-x-hyperspeed-1"; + sensitivity = -0.35; + } + { # vecna mouse depending on how it's feeling + name = "razer-razer-deathadder-v2-x-hyperspeed"; + sensitivity = -0.35; + } + { # i can't believe its this finnicky + name = "razer-razer-deathadder-v2-x-hyperspeed-mouse"; + sensitivity = -0.35; + } + ]; + }; + }; + }; +}
\ No newline at end of file diff --git a/modules/home-manager/hypr/pyprland.toml b/modules/home-manager/hypr/pyprland.toml new file mode 100644 index 0000000..62227e9 --- /dev/null +++ b/modules/home-manager/hypr/pyprland.toml @@ -0,0 +1,12 @@ +[pyprland] +plugins = [ + "scratchpads" +] + +[scratchpads.kitty] +unfocus = "hide" +command = "kitty --class kitty-dropterm" +class = "kitty-dropterm" +size = "75% 60%" +max_size = "1920px 100%" +lazy = true
\ No newline at end of file diff --git a/modules/home-manager/hypr/rofi-hyprland.nix b/modules/home-manager/hypr/rofi-hyprland.nix new file mode 100644 index 0000000..e3644f9 --- /dev/null +++ b/modules/home-manager/hypr/rofi-hyprland.nix @@ -0,0 +1,23 @@ +{ pkgs, lib, ... }: + +{ + programs.rofi = { + enable = true; + package = pkgs.rofi; + theme = "gruvbox-dark-hard"; + font = "JetBrains Mono 13"; + + plugins = with pkgs; [ + rofi-calc + # rofi-vpn + ]; + modes = [ + "calc" + "window" + # { + # name = "vpn"; + # path = lib.getExe pkgs.rofi-vpn; + # } + ]; + }; +} diff --git a/modules/home-manager/hypr/swaync.nix b/modules/home-manager/hypr/swaync.nix new file mode 100644 index 0000000..dc857a7 --- /dev/null +++ b/modules/home-manager/hypr/swaync.nix @@ -0,0 +1,13 @@ +{ config, lib, ... }: + +{ + config = lib.mkIf config.hyprland.enable { + services.swaync = { + enable = true; + + settings = { + + }; + }; + }; +}
\ No newline at end of file diff --git a/modules/home-manager/hypr/waybar-hyprland.nix b/modules/home-manager/hypr/waybar-hyprland.nix new file mode 100644 index 0000000..bd0196b --- /dev/null +++ b/modules/home-manager/hypr/waybar-hyprland.nix @@ -0,0 +1,44 @@ +{ config, lib, ... }: + +{ + programs.waybar = { + enable = true; + + settings = { + mainBar = { + layer = "top"; + position = "top"; + height = 15; + + modules-left = [ "hyprland/workspaces" ]; + modules-center = [ "hyprland/window" ]; + modules-right = [ "pulseaudio" "battery" "clock" ]; + + "hyprland/window" = { + on-click = "rofi -show window"; + }; + }; + }; + + style = '' + *{ + border: none; + border-radius: 0; + font-family: "JetBrains Mono" + } + + window#waybar { + background: #141617; + color: #D4BE98; + } + + label.module { + padding: 0 10px; + } + + #workspaces button { + color: #D4BE98; + } + ''; + }; +} |
