From acc2d647f73b05be7e29b148988944b5bda02736 Mon Sep 17 00:00:00 2001 From: matt1432 Date: Fri, 24 Nov 2023 18:25:59 -0500 Subject: [PATCH] refactor(hyprland): make global hyprland module --- devices/binto/config/hypr/main.conf | 107 +------------- devices/binto/default.nix | 5 +- devices/binto/home/hyprland.nix | 78 ---------- devices/wim/config/hypr/main.conf | 222 +++++----------------------- devices/wim/default.nix | 6 +- devices/wim/home/ags.nix | 48 ++++++ devices/wim/home/hyprland.nix | 103 ------------- home/hyprland/default.nix | 212 ++++++++++++++++++++++++++ home/{ => hyprland}/theme.nix | 0 modules/sddm-wayland.nix | 30 ---- 10 files changed, 311 insertions(+), 500 deletions(-) delete mode 100644 devices/binto/home/hyprland.nix create mode 100644 devices/wim/home/ags.nix delete mode 100644 devices/wim/home/hyprland.nix create mode 100644 home/hyprland/default.nix rename home/{ => hyprland}/theme.nix (100%) delete mode 100644 modules/sddm-wayland.nix diff --git a/devices/binto/config/hypr/main.conf b/devices/binto/config/hypr/main.conf index 100c6ae..27d1482 100644 --- a/devices/binto/config/hypr/main.conf +++ b/devices/binto/config/hypr/main.conf @@ -1,32 +1,12 @@ -# Hypr vars -$mainMod = SUPER +# Autostart programs +exec-once = sleep 6; nextcloud --background +exec-once = sleep 10; tmux new-session -s gsr -d 'bash -c $HOME/.config/gsr.sh' +# TODO: add gpu-save-replay bind - -# Monitors -monitor=desc:Acer Technologies Acer K212HQL T3EAA0014201, 1920x1080@60, 840x1000, 1, transform, 3 -monitor=desc:BOE 0x0964, 1920x1200@60, 0x2920, 1 -monitor=desc:Samsung Electric Company C27JG5x HTOM100586, 2560x1440@60, 1920x120, 1 -# Desc of monitor has comma, so force its default on everything and specify everything else -monitor=, 2560x1440@165, 1920x1560, 1 - - -# Important stuff at launch -exec-once = gnome-keyring-daemon --start --components=secrets -exec-once = wl-paste --watch cliphist store ## fix fullscreen game resolution exec-once = xrandr --output DP-5 --primary -env = XCURSOR_SIZE,24 -exec-once = hyprctl setcursor Dracula-cursors 24 - - -# Autostart programs -exec-once = bash -c "sleep 10; tmux new-session -s gsr -d 'bash -c $HOME/.config/gsr.sh'" -# TODO: add gpu-save-replay bind -exec-once = bash -c "sleep 5; kdeconnect-indicator" -exec-once = bash -c "sleep 6; nextcloud --background" - -# Special window apps +## Special window apps exec-once = [workspace special:thunder silent] thunderbird windowrule = workspace special:thunder silent,^(thunderbird)$ bind = $mainMod, T, togglespecialworkspace, thunder @@ -37,22 +17,6 @@ bind = $mainMod, S, togglespecialworkspace, spot # Input settings -input { - kb_layout = ca - kb_variant = multix - kb_model = - kb_options = - kb_rules = - - follow_mouse = 1 - - touchpad { - natural_scroll = yes - } - - sensitivity = 0 # -1.0 - 1.0, 0 means no modification. -} - device:razer-razer-naga-pro { sensitivity = -0.5 accel_profile = "flat" @@ -60,70 +24,15 @@ device:razer-razer-naga-pro { # Binds -bind = $mainMod, Q, exec, alacritty -bind = $mainMod, C, killactive, -bind = $mainMod SHIFT, SPACE, togglefloating, -bind = $mainMod, J, togglesplit, -bind = SUPER, F, fullscreen bind = Alt Shift, Tab, cyclenext - bind = $mainMod, D, exec, killall -r wofi || wofi --show drun -bind = $mainMod, V, exec, killall -r wofi || cliphist list | wofi --dmenu | cliphist decode | wl-copy -bind =, Print, exec, bash -c 'grim -g "$(slurp)" - | swappy -f -' -bind = $mainMod SHIFT, C, exec, wl-color-picker - -# Volume control -binde =, XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+ -binde =, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- - -bind =, XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle -bind =, XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle - -# Switch workspaces with mainMod + [0-9] -bind = $mainMod, 1, workspace, 1 -bind = $mainMod, 2, workspace, 2 -bind = $mainMod, 3, workspace, 3 -bind = $mainMod, 4, workspace, 4 -bind = $mainMod, 5, workspace, 5 -bind = $mainMod, 6, workspace, 6 -bind = $mainMod, 7, workspace, 7 -bind = $mainMod, 8, workspace, 8 -bind = $mainMod, 9, workspace, 9 -bind = $mainMod, 0, workspace, 10 - -# Move active window to a workspace with mainMod + SHIFT + [0-9] -bind = $mainMod SHIFT, 1, movetoworkspace, 1 -bind = $mainMod SHIFT, 2, movetoworkspace, 2 -bind = $mainMod SHIFT, 3, movetoworkspace, 3 -bind = $mainMod SHIFT, 4, movetoworkspace, 4 -bind = $mainMod SHIFT, 5, movetoworkspace, 5 -bind = $mainMod SHIFT, 6, movetoworkspace, 6 -bind = $mainMod SHIFT, 7, movetoworkspace, 7 -bind = $mainMod SHIFT, 8, movetoworkspace, 8 -bind = $mainMod SHIFT, 9, movetoworkspace, 9 -bind = $mainMod SHIFT, 0, movetoworkspace, 10 - -# Scroll through existing workspaces with mainMod + scroll -bind = $mainMod, mouse_down, workspace, e+1 -bind = $mainMod, mouse_up, workspace, e-1 - -# Move/resize windows with mainMod + LMB/RMB and dragging -bindm = $mainMod, mouse:272, movewindow -bindm = $mainMod, mouse:273, resizewindow # Rules windowrule = tile,^(firefox)$ -windowrule = noborder,^(wofi)$ -# Misc -misc { - disable_hyprland_logo = true - disable_splash_rendering = true - vfr = true -} - -xwayland { - force_zero_scaling = true +# Cosmetic +general { + border_size = 0 } diff --git a/devices/binto/default.nix b/devices/binto/default.nix index 49ea314..ff7b066 100644 --- a/devices/binto/default.nix +++ b/devices/binto/default.nix @@ -36,13 +36,10 @@ home-manager.users = { matt = { imports = [ - ../../home/alacritty.nix ../../home/dconf.nix ../../home/firefox - ../../home/theme.nix - ../../home/wofi + ../../home/hyprland - ./home/hyprland.nix ./home/packages.nix ]; diff --git a/devices/binto/home/hyprland.nix b/devices/binto/home/hyprland.nix deleted file mode 100644 index 38755ac..0000000 --- a/devices/binto/home/hyprland.nix +++ /dev/null @@ -1,78 +0,0 @@ -{ - pkgs, - config, - hyprland, - osConfig, - ... -}: let - configDir = config.services.device-vars.configDir; - symlink = config.lib.file.mkOutOfStoreSymlink; - - polkit = pkgs.plasma5Packages.polkit-kde-agent; -in { - wayland.windowManager.hyprland = { - enable = true; - enableNvidiaPatches = true; - package = hyprland.packages.x86_64-linux.default; - - settings = { - # Nvidia stuff - env = [ - "LIBVA_DRIVER_NAME, nvidia" - "XDG_SESSION_TYPE, wayland" - "GBM_BACKEND, nvidia-drm" - "__GLX_VENDOR_LIBRARY_NAME, nvidia" - "WLR_NO_HARDWARE_CURSORS, 1" - ]; - - exec-once = [ - "${polkit}/libexec/polkit-kde-authentication-agent-1" - "${osConfig.programs.kdeconnect.package}/libexec/kdeconnectd" - "swww init --no-cache && swww img -t none ${pkgs.dracula-theme}/wallpapers/waves.png" - ]; - - source = ["~/.config/hypr/main.conf"]; - }; - }; - - xdg.configFile = { - "hypr/main.conf".source = symlink "${configDir}/hypr/main.conf"; - }; - - home.packages = with pkgs; [ - libnotify - playerctl - bluez-tools - brightnessctl - pulseaudio - libinput - - ## gui - pavucontrol # TODO: replace with ags widget - networkmanagerapplet # TODO: replace with ags widget - blueberry # TODO: replace with ags widget - - # Hyprland - swww - xclip - wl-clipboard - cliphist - - ## gui - gtklock - wl-color-picker - grim - slurp - swappy - - ## libs - qt5.qtwayland - qt6.qtwayland - xorg.xrandr - nvidia-vaapi-driver - libayatana-appindicator - xdg-utils - evtest - glib - ]; -} diff --git a/devices/wim/config/hypr/main.conf b/devices/wim/config/hypr/main.conf index 63d7e41..f488864 100644 --- a/devices/wim/config/hypr/main.conf +++ b/devices/wim/config/hypr/main.conf @@ -1,95 +1,62 @@ -# Plugins -plugin { - touch_gestures { - # default sensitivity is probably too low on tablet screens, - # I recommend turning it up to 4.0 - sensitivity = 20.0 - } -} - -xwayland { - force_zero_scaling = true -} - -# See https://wiki.hyprland.org/Configuring/Monitors/ x y -monitor=desc:Acer Technologies Acer K212HQL T3EAA0014201, 1920x1080@60, 840x1000, 1, transform, 3 -monitor=desc:BOE 0x0964, 1920x1200@60, 0x2920, 1 -monitor=desc:Samsung Electric Company C27JG5x HTOM100586, 2560x1440@60, 1920x120, 1 -# Desc of monitor has comma, so force its default on everything and specify everything else -monitor=, 2560x1440@165, 1920x1560, 1 - -# Execute your favorite apps at launch -exec-once = bash -c "sleep 3; nm-applet" -exec-once = bash -c "sleep 4; blueberry-tray" -exec-once = bash -c "sleep 5; kdeconnect-indicator" -exec-once = bash -c "sleep 6; nextcloud --background" - -exec-once = ags - -exec-once = gnome-keyring-daemon --start --components=secrets +# Autostart programs +exec-once = sleep 3; nm-applet +exec-once = sleep 4; blueberry-tray +exec-once = sleep 6; nextcloud --background exec-once = squeekboard +exec-once = ags +exec-once = sleep 3; ags -t applauncher -exec-once = bash -c "sleep 3; ags -t applauncher" - -layerrule = blur, overview -layerrule = ignorealpha[0.97], overview ## don't blur corners - -exec-once = wl-paste --watch cliphist store - -# Change HandleLidSwitch to lock in logind.conf +## Change HandleLidSwitch to lock in logind.conf exec-once = swayidle -w lock $LOCK_PATH/lock.sh -# Special window apps +## Special window apps exec-once = [workspace special:thunder silent] thunderbird +windowrule = workspace special:thunder silent,^(thunderbird)$ +bind = $mainMod, T, togglespecialworkspace, thunder + exec-once = [workspace special:spot silent] spotify +windowrule = workspace special:spot silent,^(Spotify)$ +bind = $mainMod, S, togglespecialworkspace, spot -# Some default env vars. -env = XCURSOR_SIZE,24 -exec-once=hyprctl setcursor Dracula-cursors 24 - -# For all categories, see https://wiki.hyprland.org/Configuring/Variables/ -input { - kb_layout = ca - kb_variant = multix - kb_model = - kb_options = - kb_rules = - - follow_mouse = 1 - - touchpad { - natural_scroll = yes - } - - sensitivity = 0 # -1.0 - 1.0, 0 means no modification. -} +# Input settings device:razer-razer-naga-pro-1 { - sensitivity = -0.5 + sensitivity = -0.5 + accel_profile = "flat" } -general { - # See https://wiki.hyprland.org/Configuring/Variables/ for more +gestures { + workspace_swipe = yes + workspace_swipe_fingers = 3 + workspace_swipe_cancel_ratio = 0.15 +} + +# Binds + +## Brightness control +binde =, XF86MonBrightnessUp, exec, ags -r 'Brightness.screen += 0.05' +binde =, XF86MonBrightnessDown, exec, ags -r 'Brightness.screen -= 0.05' +bindr = CAPS, Caps_Lock, exec, ags -r 'Brightness.fetchCapsState()' + +## Ags & co +bind = $mainMod , L , exec, $LOCK_PATH/lock.sh +bindn = , Escape, exec, ags run-js 'closeAll()' +bind = $mainMod SHIFT, E , exec, ags -t powermenu +bind = $mainMod , D , exec, ags -t applauncher +bind = ALT , Tab , exec, ags -t overview + + +# Cosmetic +general { gaps_in = 5 gaps_out = 5 border_size = 2 col.active_border = rgb(411C6C) - #col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg col.inactive_border = rgba(595959aa) - - layout = dwindle -} - -misc { - disable_hyprland_logo = true - disable_splash_rendering = true - vfr = true } decoration { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - rounding = 20 blur { @@ -99,9 +66,6 @@ decoration { } drop_shadow = false - #shadow_range = 4 - #shadow_render_power = 3 - #col.shadow = rgba(1a1a1aee) } animations { @@ -129,35 +93,7 @@ animations { animation = borderangle, 1, 8, default } -dwindle { - # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more - pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below - preserve_split = yes # you probably want this -} - -master { - # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more - new_is_master = true -} - -gestures { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - workspace_swipe = yes - workspace_swipe_fingers = 3 - workspace_swipe_cancel_ratio = 0.15 - #workspace_swipe_forever = yes -} - -# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more - -windowrule = noborder,^(wofi)$ -windowrule = workspace special:spot silent,^(Spotify)$ -windowrule = workspace special:thunder silent,^(thunderbird)$ - -windowrule = float,^(org.kde.polkit-kde-authentication-agent-1)$ -windowrule = size 741 288,^(org.kde.polkit-kde-authentication-agent-1)$ -windowrule = center,^(org.kde.polkit-kde-authentication-agent-1)$ - +# For GParted auth windowrule = size 741 288,^(org.kde.ksshaskpass)$ windowrule = move cursor -370 -144,^(org.kde.ksshaskpass)$ @@ -176,81 +112,3 @@ windowrule = size 400 581,^(com.nextcloud.desktopclient.nextcloud)$ windowrule = tile,^(photoshop.exe)$ windowrule = tile,^(libreoffice)$ - -# See https://wiki.hyprland.org/Configuring/Keywords/ for more -$mainMod = SUPER - -bind = SUPER, F, fullscreen - -bind = $mainMod, V, exec, killall -r wofi || cliphist list | wofi --dmenu | cliphist decode | wl-copy - -# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more -bind = $mainMod, Q, exec, alacritty -bind = $mainMod, S, togglespecialworkspace, spot -bind = $mainMod, T, togglespecialworkspace, thunder -bind = $mainMod, C, killactive, - -bind = $mainMod, L, exec, $LOCK_PATH/lock.sh -bind = $mainMod SHIFT, E, exec, ags -t powermenu -bindn =, Escape, exec, ags run-js 'closeAll()' -bind = $mainMod SHIFT, SPACE, togglefloating, -bind = $mainMod, D, exec, ags -t applauncher -bind = $mainMod, P, pseudo, # dwindle -bind = $mainMod, J, togglesplit, # dwindle - -# Move focus with mainMod + arrow keys -bind = $mainMod, left, movefocus, l -bind = $mainMod, right, movefocus, r -bind = $mainMod, up, movefocus, u -bind = $mainMod, down, movefocus, d - -bind = ALT, Tab, exec, ags -t overview - -# Switch workspaces with mainMod + [0-9] -bind = $mainMod, 1, workspace, 1 -bind = $mainMod, 2, workspace, 2 -bind = $mainMod, 3, workspace, 3 -bind = $mainMod, 4, workspace, 4 -bind = $mainMod, 5, workspace, 5 -bind = $mainMod, 6, workspace, 6 -bind = $mainMod, 7, workspace, 7 -bind = $mainMod, 8, workspace, 8 -bind = $mainMod, 9, workspace, 9 -bind = $mainMod, 0, workspace, 10 - -# Move active window to a workspace with mainMod + SHIFT + [0-9] -bind = $mainMod SHIFT, 1, movetoworkspace, 1 -bind = $mainMod SHIFT, 2, movetoworkspace, 2 -bind = $mainMod SHIFT, 3, movetoworkspace, 3 -bind = $mainMod SHIFT, 4, movetoworkspace, 4 -bind = $mainMod SHIFT, 5, movetoworkspace, 5 -bind = $mainMod SHIFT, 6, movetoworkspace, 6 -bind = $mainMod SHIFT, 7, movetoworkspace, 7 -bind = $mainMod SHIFT, 8, movetoworkspace, 8 -bind = $mainMod SHIFT, 9, movetoworkspace, 9 -bind = $mainMod SHIFT, 0, movetoworkspace, 10 - -# Scroll through existing workspaces with mainMod + scroll -bind = $mainMod, mouse_down, workspace, e+1 -bind = $mainMod, mouse_up, workspace, e-1 - -# Move/resize windows with mainMod + LMB/RMB and dragging -bindm = $mainMod, mouse:272, movewindow -bindm = $mainMod, mouse:273, resizewindow - -# Take a screenshot -bind =, Print, exec, bash -c 'grim -g "$(slurp)" - | swappy -f -' -bind = $mainMod SHIFT, C, exec, wl-color-picker - -# Volume control -binde =, XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+ -binde =, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- - -bind =, XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle -bind =, XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle - -bindr = CAPS, Caps_Lock, exec, ags -r 'Brightness.fetchCapsState()' - -# Brightness control -binde =, XF86MonBrightnessUp, exec, ags -r 'Brightness.screen += 0.05' -binde =, XF86MonBrightnessDown, exec, ags -r 'Brightness.screen -= 0.05' diff --git a/devices/wim/default.nix b/devices/wim/default.nix index 7d29eab..88caca6 100644 --- a/devices/wim/default.nix +++ b/devices/wim/default.nix @@ -35,15 +35,13 @@ home-manager.users = { matt = { imports = [ - ../../home/alacritty.nix ../../home/dconf.nix ../../home/firefox - ../../home/theme.nix - ../../home/wofi + ../../home/hyprland ./home/dotfiles.nix ./home/packages.nix - ./home/hyprland.nix + ./home/ags.nix ]; # No touchy diff --git a/devices/wim/home/ags.nix b/devices/wim/home/ags.nix new file mode 100644 index 0000000..fb0e4e8 --- /dev/null +++ b/devices/wim/home/ags.nix @@ -0,0 +1,48 @@ +{ + pkgs, + config, + ags, + ... +}: let + configDir = config.services.device-vars.configDir; + symlink = config.lib.file.mkOutOfStoreSymlink; +in { + imports = [ + ags.homeManagerModules.default + ]; + + programs.ags = { + enable = true; + configDir = symlink "${configDir}/ags"; + package = ags.packages.x86_64-linux.default; + extraPackages = [pkgs.libgudev]; + }; + + wayland.windowManager.hyprland = { + settings = { + env = [ + "AGS_PATH, ${configDir}/ags/bin" + "HYPR_PATH, ${configDir}/hypr/scripts" + "LOCK_PATH, ${configDir}/gtklock/scripts" + ]; + }; + }; + + home.packages = with pkgs; [ + # ags + ydotool + sassc + coloryou + libnotify + playerctl + + ## gui + pavucontrol # TODO: replace with ags widget + networkmanagerapplet # TODO: replace with ags widget + blueberry # TODO: replace with ags widget + + # touchscreen + lisgd + squeekboard + ]; +} diff --git a/devices/wim/home/hyprland.nix b/devices/wim/home/hyprland.nix deleted file mode 100644 index 37e64db..0000000 --- a/devices/wim/home/hyprland.nix +++ /dev/null @@ -1,103 +0,0 @@ -{ - pkgs, - config, - hyprland, - hyprgrass, - ags, - osConfig, - ... -}: let - configDir = config.services.device-vars.configDir; - symlink = config.lib.file.mkOutOfStoreSymlink; - - gset = pkgs.gsettings-desktop-schemas; - polkit = pkgs.plasma5Packages.polkit-kde-agent; -in { - imports = [ - ags.homeManagerModules.default - ]; - - programs.ags = { - enable = true; - configDir = symlink "${configDir}/ags"; - package = ags.packages.x86_64-linux.default; - extraPackages = [pkgs.libgudev]; - }; - - wayland.windowManager.hyprland = { - enable = true; - package = hyprland.packages.x86_64-linux.default; - - plugins = [ - "${hyprgrass.packages.x86_64-linux.default}/lib/libhyprgrass.so" - ]; - - settings = { - env = [ - "XDG_DATA_DIRS, ${builtins.concatStringsSep ":" [ - "${gset}/share/gsettings-schemas/${gset.name}" - "${pkgs.gtk3}/share/gsettings-schemas/${pkgs.gtk3.name}" - "$XDG_DATA_DIRS" - ]}" - - "AGS_PATH, ${configDir}/ags/bin" - "HYPR_PATH, ${configDir}/hypr/scripts" - "LOCK_PATH, ${configDir}/gtklock/scripts" - ]; - - exec-once = [ - "${polkit}/libexec/polkit-kde-authentication-agent-1" - "${osConfig.programs.kdeconnect.package}/libexec/kdeconnectd" - "swww init --no-cache && swww img -t none ${pkgs.dracula-theme}/wallpapers/waves.png" - ]; - - source = ["~/.config/hypr/main.conf"]; - }; - }; - - xdg.configFile = { - "hypr/main.conf".source = symlink "${configDir}/hypr/main.conf"; - }; - - home.packages = with pkgs; [ - # ags - ydotool - sassc - coloryou - libnotify - playerctl - bluez-tools - brightnessctl - pulseaudio - libinput - - ## gui - pavucontrol # TODO: replace with ags widget - networkmanagerapplet # TODO: replace with ags widget - blueberry # TODO: replace with ags widget - - # Hyprland - swww - swayidle - lisgd - squeekboard - xclip - wl-clipboard - cliphist - - ## gui - gtklock - wl-color-picker # TODO: add bind for this in hyprland - grim - slurp - swappy - - ## libs - qt5.qtwayland - qt6.qtwayland - libayatana-appindicator - xdg-utils - evtest - glib - ]; -} diff --git a/home/hyprland/default.nix b/home/hyprland/default.nix new file mode 100644 index 0000000..c71f163 --- /dev/null +++ b/home/hyprland/default.nix @@ -0,0 +1,212 @@ +{ + config, + osConfig, + hyprland, + hyprgrass, + pkgs, + lib, + ... +}: let + configDir = config.services.device-vars.configDir; + symlink = config.lib.file.mkOutOfStoreSymlink; + + gset = pkgs.gsettings-desktop-schemas; + polkit = pkgs.plasma5Packages.polkit-kde-agent; +in { + imports = [ + ./theme.nix + ../alacritty.nix + ../wofi + ]; + + xdg.configFile = lib.mkIf (configDir != null) { + "hypr/main.conf".source = symlink "${configDir}/hypr/main.conf"; + }; + + wayland.windowManager.hyprland = { + enable = true; + package = hyprland.packages.x86_64-linux.default; + enableNvidiaPatches = osConfig.hardware.nvidia.modesetting.enable; + + plugins = + [] + ++ (lib.lists.optionals (osConfig.hardware.sensor.iio.enable) [ + "${hyprgrass.packages.x86_64-linux.default}/lib/libhyprgrass.so" + ]); + + settings = { + env = + [ + "XCURSOR_SIZE, 24" + "XDG_DATA_DIRS, ${builtins.concatStringsSep ":" [ + "${gset}/share/gsettings-schemas/${gset.name}" + "${pkgs.gtk3}/share/gsettings-schemas/${pkgs.gtk3.name}" + "$XDG_DATA_DIRS" + ]}" + ] + ++ (lib.lists.optionals (osConfig.hardware.nvidia.modesetting.enable) [ + "LIBVA_DRIVER_NAME, nvidia" + "XDG_SESSION_TYPE, wayland" + "GBM_BACKEND, nvidia-drm" + "__GLX_VENDOR_LIBRARY_NAME, nvidia" + "WLR_NO_HARDWARE_CURSORS, 1" + ]); + + xwayland.force_zero_scaling = true; + monitor = [ + (builtins.concatStringsSep "," [ + "desc:Acer Technologies Acer K212HQL T3EAA0014201" + "1920x1080@60" + "840x1000, 1, transform, 3" + ]) + (builtins.concatStringsSep "," [ + "desc:BOE 0x0964" + "1920x1200@60" + "0x2920, 1" + ]) + (builtins.concatStringsSep "," [ + "desc:Samsung Electric Company C27JG5x HTOM100586" + "2560x1440@60" + "1920x120, 1" + ]) + + # Desc of main monitor has comma, so force its default + # on everything and specify everything else + ",2560x1440@165, 1920x1560, 1" + ]; + + input = { + kb_layout = osConfig.services.xserver.layout; + kb_variant = osConfig.services.xserver.xkbVariant; + follow_mouse = true; + + touchpad.natural_scroll = true; + }; + + exec-once = + [ + "hyprctl setcursor Dracula-cursors 24" + "${polkit}/libexec/polkit-kde-authentication-agent-1" + "swww init --no-cache && swww img -t none ${pkgs.dracula-theme}/wallpapers/waves.png" + "wl-paste --watch cliphist store" + ] + ++ (lib.lists.optionals (osConfig.programs.kdeconnect.enable) [ + "${osConfig.programs.kdeconnect.package}/libexec/kdeconnectd" + "kdeconnect-indicator" + ]) + ++ (lib.lists.optionals (osConfig.services.gnome.gnome-keyring.enable) [ + "gnome-keyring-daemon --start --components=secrets" + ]); + + windowrule = [ + "noborder,^(wofi)$" + + # Polkit + "float,^(org.kde.polkit-kde-authentication-agent-1)$" + "size 741 288,^(org.kde.polkit-kde-authentication-agent-1)$" + "center,^(org.kde.polkit-kde-authentication-agent-1)$" + ]; + + "$mainMod" = "SUPER"; + + bind = [ + # Defaults + "$mainMod, Q, exec, alacritty" + "$mainMod, F, fullscreen" + "$mainMod, C, killactive," + "$mainMod SHIFT, SPACE, togglefloating," + "$mainMod, J, togglesplit," + + ## Move focus with arrow keys + "$mainMod, left, movefocus, l" + "$mainMod, right, movefocus, r" + "$mainMod, up, movefocus, u" + "$mainMod, down, movefocus, d" + + ## Move to specific workspaces + "$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 + "$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" + + # Clipboard History + "$mainMod, V, exec, killall -r wofi || cliphist list | wofi --dmenu | cliphist decode | wl-copy" + + ",Print, exec, grim -g \"$(slurp)\" - | swappy -f -" + "$mainMod SHIFT, C, exec, wl-color-picker" + + ",XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle" + ",XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle" + ]; + + binde = [ + ",XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+" + ",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" + ]; + + # Mouse Binds + bindm = [ + "$mainMod, mouse:272, movewindow" + "$mainMod, mouse:273, resizewindow" + ]; + + misc = { + disable_hyprland_logo = true; + disable_splash_rendering = true; + vfr = true; + }; + + source = + [] + ++ lib.lists.optionals (configDir != null) [ + "~/.config/hypr/main.conf" + ]; + }; + }; + + home.packages = with pkgs; [ + # tools + gtklock + wl-color-picker + grim + slurp + swappy + + bluez-tools + brightnessctl + pulseaudio + libinput + xclip + wl-clipboard + cliphist + swww + swayidle + + ## libs + qt5.qtwayland + qt6.qtwayland + libayatana-appindicator + xdg-utils + evtest + glib + xorg.xrandr + ]; +} diff --git a/home/theme.nix b/home/hyprland/theme.nix similarity index 100% rename from home/theme.nix rename to home/hyprland/theme.nix diff --git a/modules/sddm-wayland.nix b/modules/sddm-wayland.nix deleted file mode 100644 index 51e4c08..0000000 --- a/modules/sddm-wayland.nix +++ /dev/null @@ -1,30 +0,0 @@ -{pkgs, ...}: { - environment.systemPackages = with pkgs; [ - dracula-theme - ]; - - services = { - xserver = { - enable = true; - layout = "ca"; - displayManager = { - sddm = { - enable = true; - settings = { - General = { - DisplayServer = "wayland"; - InputMethod = ""; - }; - Wayland.CompositorCommand = "${pkgs.weston}/bin/weston --shell=fullscreen-shell.so"; - Theme = { - Current = "Dracula"; - CursorTheme = "Dracula-cursors"; - CursorSize = 24; - }; - }; - }; - }; - }; - gnome.gnome-keyring.enable = true; - }; -}