From dc916322845dc22be8255e51feec79b485ba775d Mon Sep 17 00:00:00 2001 From: DerGrumpf Date: Thu, 27 Mar 2025 12:54:14 +0100 Subject: [PATCH] Changed: Folder Structure Hyprland --- home/hyprland/default.nix | 278 +----------------- home/hyprland/hypridle.nix | 12 + home/hyprland/hyprland.nix | 234 +++++++++++++++ home/hyprland/hyprlock.nix | 12 + home/hyprland/hyprpaper.nix | 23 ++ .../waybar/configs/config.jsonc | 0 home/{ => hyprland}/waybar/configs/style.css | 0 home/{ => hyprland}/waybar/configs/weather.py | 0 home/{ => hyprland}/waybar/default.nix | 0 9 files changed, 289 insertions(+), 270 deletions(-) create mode 100644 home/hyprland/hypridle.nix create mode 100644 home/hyprland/hyprland.nix create mode 100644 home/hyprland/hyprlock.nix create mode 100644 home/hyprland/hyprpaper.nix rename home/{ => hyprland}/waybar/configs/config.jsonc (100%) rename home/{ => hyprland}/waybar/configs/style.css (100%) rename home/{ => hyprland}/waybar/configs/weather.py (100%) rename home/{ => hyprland}/waybar/default.nix (100%) diff --git a/home/hyprland/default.nix b/home/hyprland/default.nix index 1bfbfe5..bddaabf 100644 --- a/home/hyprland/default.nix +++ b/home/hyprland/default.nix @@ -1,275 +1,13 @@ -{ inputs, pkgs, ...}: -let - package = pkgs.hyprland; - super = "SUPER"; - terminal = "kitty"; - fileManager = "thunar"; - menu = "~/.config/rofi/launchers/type-3/launcher.sh"; - power = "~/.config/rofi/powermenu/type-6/powermenu.sh"; -in -{ +{ pkgs, ...}: { imports = [ ./kitty.nix # Terminal - ../waybar # Status Bar + ./hypridle.nix + ./hyprlock.nix + ./hyprpaper.nix + ./waybar # Status Bar ../rofi # App Launcher ]; - - home.packages = with pkgs; [ - slurp - wl-clipboard - mako - - webcord - obsidian - ]; - - home.file = { - "Pictures/Wallpapers" = { - source = ./wallpapers; - recursive = true; - }; - }; - - home.pointerCursor = { - gtk.enable = true; - package = pkgs.bibata-cursors; - name = "Bibata-Modern-Classic"; - size = 16; - }; - - gtk = { - enable = true; - - theme = { - package = pkgs.flat-remix-gtk; - name = "Flat-Remix-GTK-Grey-Darkest"; - }; - - iconTheme = { - package = pkgs.gnome.adwaita-icon-theme; - name = "Adwaita"; - }; - - font = { - name = "Sans"; - size = 12; - }; - }; - - systemd.user.targets.hyprland-sessionn.Unit.Wants = [ - "xdg-desktop-autostart.target" - ]; - - wayland.windowManager.hyprland = { - inherit package; - enable = true; - - xwayland = { enable = true; }; - - systemd = { - enable = true; - variables = [ "--all" ]; - enableXdgAutostart = true; - }; - - plugins = [ - #inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}.hyprbars - ]; - }; - - wayland.windowManager.hyprland.settings = { - env = [ - "NIXOS_OZONE_WL,1" - "MOZ_ENABLE_WAYLAND,1" - "MOZ_WEBRENDER,1" - "_JAVA_AWT_WM_NONREPARENTING,1" - "QT_WAYLAND_DISABLE_WINDOWDECORATION,1" - "QT_QPA_PLATFORM,wayland" - "SDL_VIDEODRIVER,wayland" - "GDK_BACKEND,wayland" - "XCURSOR_SIZE,24" - "EDITOR,nvim" - ]; - - monitor = [ - "DP-1, 1920x1080@60, 1920x0, 1" - "HDMI-A-2, 1920x1080@60, 0x0, 1" - ]; - - input = { - kb_layout = "de"; - repeat_rate = 50; - repeat_delay = 300; - - accel_profile = "flat"; - follow_mouse = 1; - mouse_refocus = false; - sensitivity = 0; # -1.0 to 1.0, 0 means no modification. - - numlock_by_default = 1; - touchpad = { - natural_scroll = true; - }; - - }; - - general = { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - gaps_in = 5; - gaps_out = 0; - border_size = 2; - - /*col = { - active_border = "rgba(33ccffee) rgba(00ff99ee) 45deg"; - inactive_border = "rgba(595959aa)"; - };*/ - - layout = "dwindle"; - - # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on - allow_tearing = false; - }; - - 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 - }; - - gestures = { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - workspace_swipe = "off"; - }; - - misc = { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - force_default_wallpaper = -1; # Set to 0 or 1 to disable the anime mascot wallpapers - }; - - # Example per-device config - # See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more - device = { - name = "epic-mouse-v1"; - sensitivity = -0.5; - }; - - windowrulev2 = "suppressevent maximize, class:.*"; - - exec-once = [ - "waybar &" - "hyprpaper &" - "firefox" - ]; - - # Keybindings - bind = [ - - "${super}, Q, exec, ${terminal}" - "${super}, C, killactive, " - "${super}, M, exit, " - "${super}, E, exec, ${fileManager}" - "${super}, V, togglefloating, " - "${super}, R, exec, ${menu}" - "${super}, S, exec, ${power}" - "${super}, P, pseudo, " # dwindle - "${super}, J, togglesplit, "# dwindle - - # Move focus with mainMod + arrow keys - "${super}, left, movefocus, l" - "${super}, right, movefocus, r" - "${super}, up, movefocus, u" - "${super}, down, movefocus, d" - - # Switch workspaces with mainMod + [0-9] - "${super}, 1, workspace, 1" - "${super}, 2, workspace, 2" - "${super}, 3, workspace, 3" - "${super}, 4, workspace, 4" - "${super}, 5, workspace, 5" - "${super}, 6, workspace, 6" - "${super}, 7, workspace, 7" - "${super}, 8, workspace, 8" - "${super}, 9, workspace, 9" - "${super}, 0, workspace, 10" - - # Move active window to a workspace with mainMod + SHIFT + [0-9] - "${super} SHIFT, 1, movetoworkspace, 1" - "${super} SHIFT, 2, movetoworkspace, 2" - "${super} SHIFT, 3, movetoworkspace, 3" - "${super} SHIFT, 4, movetoworkspace, 4" - "${super} SHIFT, 5, movetoworkspace, 5" - "${super} SHIFT, 6, movetoworkspace, 6" - "${super} SHIFT, 7, movetoworkspace, 7" - "${super} SHIFT, 8, movetoworkspace, 8" - "${super} SHIFT, 9, movetoworkspace, 9" - "${super} SHIFT, 0, movetoworkspace, 10" - - # Example special workspace (scratchpad) - #"${super}, S, togglespecialworkspace, magic" - "${super} SHIFT, S, movetoworkspace, special:magic" - - # Scroll through existing workspaces with mainMod + scroll - "${super}, mouse_down, workspace, e+1" - "${super}, mouse_up, workspace, e-1" - - # Screenshot - ''${super}, Z, exec, grim -g "$(slurp)" $HOME/Pictures/Screenshots/$(date +'%s_grim.png')'' - ]; - - bindl = [ - #", XF86AudioMute, exec, amixer set Master toggle - ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" - ", XF86AudioPlay, exec, playerctl play-pause" # the stupid key is called play , but it toggles - ", XF86AudioNext, exec, playerctl next" - ", XF86AudioPrev, exec, playerctl previous" - ]; - - bindle = [ - # Multi Media Control - ", XF86AudioRaiseVolume, exec, vol --up" - ", XF86AudioLowerVolume, exec, vol --down" - ", XF86MonBrightnessUp, exec, bri --up" - ", XF86MonBrightnessDown, exec, bri --down" - ", XF86Search, exec, ${menu}" - - ]; - - bindm = [ - "${super}, mouse:272, movewindow" - "${super}, mouse:273, resizewindow" - ]; - }; - - # NOTE: this executable is used by greetd to start a wayland session when system boot up - # with such a vendor-no-locking script, we can switch to another wayland compositor without modifying greetd's config in NixOS module - home.file.".wayland-session" = { - source = "${package}/bin/Hyprland"; - executable = true; - }; - - # hyprland configs, based on https://github.com/notwidow/hyprland - /*xdg.configFile = { - "hypr/mako" = { - source = ../conf/mako; - recursive = true; - }; - "hypr/scripts" = { - source = ../conf/scripts; - recursive = true; - }; - "hypr/waybar" = { - source = ../conf/waybar; - recursive = true; - }; - "hypr/wlogout" = { - source = ../conf/wlogout; - recursive = true; - }; - - # music player - mpd - "mpd" = { - source = ../conf/mpd; - recursive = true; - }; - };*/ + + # You might want to set environment variables for Wayland + wayland.displayProtocols = [ "wayland" "x11" ]; } diff --git a/home/hyprland/hypridle.nix b/home/hyprland/hypridle.nix new file mode 100644 index 0000000..dd87a59 --- /dev/null +++ b/home/hyprland/hypridle.nix @@ -0,0 +1,12 @@ +{ pkgs, ... }: + +{ + # Hyprland and related packages + home.packages = with pkgs; [ + hypridle + ]; + + # Hypridle configuration + services.hypridle.enable = true; + +} diff --git a/home/hyprland/hyprland.nix b/home/hyprland/hyprland.nix new file mode 100644 index 0000000..1dc8141 --- /dev/null +++ b/home/hyprland/hyprland.nix @@ -0,0 +1,234 @@ +{ inputs, pkgs, ...}: +let + package = pkgs.hyprland; + super = "SUPER"; + terminal = "kitty"; + fileManager = "thunar"; + menu = "~/.config/rofi/launchers/type-3/launcher.sh"; + power = "~/.config/rofi/powermenu/type-6/powermenu.sh"; +in +{ + home.packages = with pkgs; [ + hyprland + slurp + wl-clipboard + mako + ]; + + home.pointerCursor = { + gtk.enable = true; + package = pkgs.bibata-cursors; + name = "Bibata-Modern-Classic"; + size = 16; + }; + + gtk = { + enable = true; + + theme = { + package = pkgs.flat-remix-gtk; + name = "Flat-Remix-GTK-Grey-Darkest"; + }; + + iconTheme = { + package = pkgs.gnome.adwaita-icon-theme; + name = "Adwaita"; + }; + + font = { + name = "Sans"; + size = 12; + }; + }; + + systemd.user.targets.hyprland-sessionn.Unit.Wants = [ + "xdg-desktop-autostart.target" + ]; + + wayland.windowManager.hyprland = { + inherit package; + enable = true; + + xwayland = { enable = true; }; + + systemd = { + enable = true; + variables = [ "--all" ]; + enableXdgAutostart = true; + }; + + plugins = [ + #inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}.hyprbars + ]; + }; + + wayland.windowManager.hyprland.settings = { + env = [ + "NIXOS_OZONE_WL,1" + "MOZ_ENABLE_WAYLAND,1" + "MOZ_WEBRENDER,1" + "_JAVA_AWT_WM_NONREPARENTING,1" + "QT_WAYLAND_DISABLE_WINDOWDECORATION,1" + "QT_QPA_PLATFORM,wayland" + "SDL_VIDEODRIVER,wayland" + "GDK_BACKEND,wayland" + "XCURSOR_SIZE,24" + "EDITOR,nvim" + ]; + + monitor = [ + "DP-1, 1920x1080@60, 1920x0, 1" + "HDMI-A-2, 1920x1080@60, 0x0, 1" + ]; + + input = { + kb_layout = "de"; + repeat_rate = 50; + repeat_delay = 300; + + accel_profile = "flat"; + follow_mouse = 1; + mouse_refocus = false; + sensitivity = 0; # -1.0 to 1.0, 0 means no modification. + + numlock_by_default = 1; + touchpad = { + natural_scroll = true; + }; + + }; + + general = { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + gaps_in = 5; + gaps_out = 0; + border_size = 2; + + /*col = { + active_border = "rgba(33ccffee) rgba(00ff99ee) 45deg"; + inactive_border = "rgba(595959aa)"; + };*/ + + layout = "dwindle"; + + # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on + allow_tearing = false; + }; + + 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 + }; + + gestures = { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + workspace_swipe = "off"; + }; + + misc = { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + force_default_wallpaper = -1; # Set to 0 or 1 to disable the anime mascot wallpapers + }; + + # Example per-device config + # See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more + device = { + name = "epic-mouse-v1"; + sensitivity = -0.5; + }; + + windowrulev2 = "suppressevent maximize, class:.*"; + + exec-once = [ + "waybar &" + "hyprpaper &" + "firefox" + ]; + + # Keybindings + bind = [ + + "${super}, Q, exec, ${terminal}" + "${super}, C, killactive, " + "${super}, M, exit, " + "${super}, E, exec, ${fileManager}" + "${super}, V, togglefloating, " + "${super}, R, exec, ${menu}" + "${super}, S, exec, ${power}" + "${super}, P, pseudo, " # dwindle + "${super}, J, togglesplit, "# dwindle + + # Move focus with mainMod + arrow keys + "${super}, left, movefocus, l" + "${super}, right, movefocus, r" + "${super}, up, movefocus, u" + "${super}, down, movefocus, d" + + # Switch workspaces with mainMod + [0-9] + "${super}, 1, workspace, 1" + "${super}, 2, workspace, 2" + "${super}, 3, workspace, 3" + "${super}, 4, workspace, 4" + "${super}, 5, workspace, 5" + "${super}, 6, workspace, 6" + "${super}, 7, workspace, 7" + "${super}, 8, workspace, 8" + "${super}, 9, workspace, 9" + "${super}, 0, workspace, 10" + + # Move active window to a workspace with mainMod + SHIFT + [0-9] + "${super} SHIFT, 1, movetoworkspace, 1" + "${super} SHIFT, 2, movetoworkspace, 2" + "${super} SHIFT, 3, movetoworkspace, 3" + "${super} SHIFT, 4, movetoworkspace, 4" + "${super} SHIFT, 5, movetoworkspace, 5" + "${super} SHIFT, 6, movetoworkspace, 6" + "${super} SHIFT, 7, movetoworkspace, 7" + "${super} SHIFT, 8, movetoworkspace, 8" + "${super} SHIFT, 9, movetoworkspace, 9" + "${super} SHIFT, 0, movetoworkspace, 10" + + # Example special workspace (scratchpad) + #"${super}, S, togglespecialworkspace, magic" + "${super} SHIFT, S, movetoworkspace, special:magic" + + # Scroll through existing workspaces with mainMod + scroll + "${super}, mouse_down, workspace, e+1" + "${super}, mouse_up, workspace, e-1" + + # Screenshot + ''${super}, Z, exec, grim -g "$(slurp)" $HOME/Pictures/Screenshots/$(date +'%s_grim.png')'' + ]; + + bindl = [ + #", XF86AudioMute, exec, amixer set Master toggle + ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + ", XF86AudioPlay, exec, playerctl play-pause" # the stupid key is called play , but it toggles + ", XF86AudioNext, exec, playerctl next" + ", XF86AudioPrev, exec, playerctl previous" + ]; + + bindle = [ + # Multi Media Control + ", XF86AudioRaiseVolume, exec, vol --up" + ", XF86AudioLowerVolume, exec, vol --down" + ", XF86MonBrightnessUp, exec, bri --up" + ", XF86MonBrightnessDown, exec, bri --down" + ", XF86Search, exec, ${menu}" + + ]; + + bindm = [ + "${super}, mouse:272, movewindow" + "${super}, mouse:273, resizewindow" + ]; + }; + + # NOTE: this executable is used by greetd to start a wayland session when system boot up + # with such a vendor-no-locking script, we can switch to another wayland compositor without modifying greetd's config in NixOS module + home.file.".wayland-session" = { + source = "${package}/bin/Hyprland"; + executable = true; + }; +} diff --git a/home/hyprland/hyprlock.nix b/home/hyprland/hyprlock.nix new file mode 100644 index 0000000..4a081c4 --- /dev/null +++ b/home/hyprland/hyprlock.nix @@ -0,0 +1,12 @@ +{ pkgs, ... }: + +{ + # Hyprland and related packages + home.packages = with pkgs; [ + hyprlock + ]; + + # Hyprlock configuration + services.hyprlock.enable = true; + +} diff --git a/home/hyprland/hyprpaper.nix b/home/hyprland/hyprpaper.nix new file mode 100644 index 0000000..c7503db --- /dev/null +++ b/home/hyprland/hyprpaper.nix @@ -0,0 +1,23 @@ +{ pkgs, ... }: + +{ + home.packages = with pkgs; [ + hyprpaper + ]; + + home.file = { + "Pictures/Wallpapers" = { + source = ./wallpapers; + recursive = true; + }; + }; + + # Hyprpaper configuration + services.hyprpaper.enable = true; + services.hyprpaper.settings = { + wallpaper = "Pictures/Wallpapers/girl.png"; + }; + +} + + diff --git a/home/waybar/configs/config.jsonc b/home/hyprland/waybar/configs/config.jsonc similarity index 100% rename from home/waybar/configs/config.jsonc rename to home/hyprland/waybar/configs/config.jsonc diff --git a/home/waybar/configs/style.css b/home/hyprland/waybar/configs/style.css similarity index 100% rename from home/waybar/configs/style.css rename to home/hyprland/waybar/configs/style.css diff --git a/home/waybar/configs/weather.py b/home/hyprland/waybar/configs/weather.py similarity index 100% rename from home/waybar/configs/weather.py rename to home/hyprland/waybar/configs/weather.py diff --git a/home/waybar/default.nix b/home/hyprland/waybar/default.nix similarity index 100% rename from home/waybar/default.nix rename to home/hyprland/waybar/default.nix