diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf new file mode 100644 index 0000000..c3ca263 --- /dev/null +++ b/.config/hypr/hyprland.conf @@ -0,0 +1,166 @@ +# +# Please note not all available settings / options are set here. +# For a full list, see the wiki +# + +# See https://wiki.hyprland.org/Configuring/Monitors/ +monitor=,preferred,auto,auto + + + +# See https://wiki.hyprland.org/Configuring/Keywords/ for more + +# Execute your favorite apps at launch +# exec-once = waybar & hyprpaper & firefox + +# Source a file (multi-file configs) +# source = ~/.config/hypr/myColors.conf + +# Some default env vars. +env = XCURSOR_SIZE,24 + +# For all categories, see https://wiki.hyprland.org/Configuring/Variables/ +input { + kb_layout = de + kb_variant = + kb_model = + kb_options = + kb_rules = + + follow_mouse = 1 + + touchpad { + natural_scroll = yes + } + + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. +} + +general { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + + gaps_in = 5 + gaps_out = 20 + border_size = 2 + col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg + col.inactive_border = rgba(595959aa) + + layout = dwindle +} + +decoration { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + + rounding = 10 + #blur = yes + #blur_size = 3 + #blur_passes = 1 + #blur_new_optimizations = on + + drop_shadow = yes + shadow_range = 4 + shadow_render_power = 3 + col.shadow = rgba(1a1a1aee) +} + +animations { + enabled = no + + # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more + + 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 +} + +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 = on +} + +# Example per-device config +# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more +device:epic-mouse-v1 { + sensitivity = -0.5 +} + +# Example windowrule v1 +# windowrule = float, ^(kitty)$ +# Example windowrule v2 +# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ +# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more + + +# See https://wiki.hyprland.org/Configuring/Keywords/ for more +$mainMod = SUPER + +# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more +bind = $mainMod, Q, exec, kitty +bind = $mainMod, C, killactive, +bind = $mainMod, M, exit, +bind = $mainMod, E, exec, thunar +bind = $mainMod, V, togglefloating, +bind = $mainMod, R, exec, wofi --show drun +bind = $mainMod, S, exec, rofi -show drun -show-icons +bind = ALT, SPACE, exec, rofi -show combi +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 + +# 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 + +bind = ALT, Tab, cyclenext, +bind = ALT, Tab, bringactivetotop, + +exec-once= bash ~/.config/hypr/start.sh diff --git a/.config/hypr/start.sh b/.config/hypr/start.sh new file mode 100755 index 0000000..6e19fbe --- /dev/null +++ b/.config/hypr/start.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +# wallpaper daemon +swww init & + +nm-applet --indicator & + +waybar & + +dunst & diff --git a/flake.nix b/flake.nix index 6214ed2..0fae6a3 100644 --- a/flake.nix +++ b/flake.nix @@ -130,7 +130,6 @@ ./users/kopatz.nix ({ config, pkgs, ... }: { nixpkgs.overlays = [ overlay-unstable ]; }) # Todo: refactor file layout - ./modules/graphical/gnome.nix ./modules/graphical/shared.nix ./laptop/configuration.nix ./modules/virt-manager.nix diff --git a/laptop/configuration.nix b/laptop/configuration.nix index 5ba5dd2..8eb3111 100644 --- a/laptop/configuration.nix +++ b/laptop/configuration.nix @@ -5,6 +5,8 @@ imports = [ ./main.nix + ./hyperland.nix + ./gnome.nix ]; services.xserver = { @@ -12,48 +14,5 @@ xkbVariant = ""; enable = true; displayManager.gdm.enable = true; - desktopManager.gnome.enable = true; }; - - environment.gnome.excludePackages = (with pkgs; [ - gnome-photos - gnome-tour - ]) ++ (with pkgs.gnome; [ - cheese # webcam tool - gnome-music - gnome-terminal - gedit # text editor - epiphany # web browser - #geary # email reader - evince # document viewer - gnome-characters - totem # video player - tali # poker game - iagno # go game - hitori # sudoku game - atomix # puzzle game - ]); - - environment.systemPackages = with pkgs; [ - wmctrl - gnome.mutter - gnome.adwaita-icon-theme - gnome.gnome-settings-daemon - gnome.gnome-tweaks - gnome.dconf-editor - gruvbox-gtk-theme - colloid-icon-theme - gnomeExtensions.appindicator - gnomeExtensions.just-perfection - gnomeExtensions.system-monitor - gnomeExtensions.dash2dock-lite - gnomeExtensions.dash-to-dock - gnomeExtensions.vitals - gnomeExtensions.rounded-window-corners - gnomeExtensions.wallpaper-switcher - gnomeExtensions.backslide - gnomeExtensions.nextcloud-folder - gnomeExtensions.tray-icons-reloaded - gnomeExtensions.blur-my-shell - ]; } diff --git a/laptop/gnome.nix b/laptop/gnome.nix index 5ba5dd2..d2feeb1 100644 --- a/laptop/gnome.nix +++ b/laptop/gnome.nix @@ -1,17 +1,10 @@ { config, pkgs, ... }: { - - imports = - [ - ./main.nix - ]; - services.xserver = { layout = "at"; xkbVariant = ""; enable = true; - displayManager.gdm.enable = true; desktopManager.gnome.enable = true; }; diff --git a/laptop/hyperland.nix b/laptop/hyperland.nix index 65d3221..754dd4c 100644 --- a/laptop/hyperland.nix +++ b/laptop/hyperland.nix @@ -7,22 +7,11 @@ let in { - imports = - [ # Include the results of the hardware scan. - ./main.nix - ]; services.xserver = { layout = "at"; xkbVariant = ""; enable = true; - displayManager.sddm.enable = true; - }; - - programs.hyprland = { - enable = true; - nvidiaPatches = true; - xwayland.enable = true; }; environment.sessionVariables = { @@ -43,6 +32,191 @@ in home-manager.users.kopatz = { #systemd.user.services.waybar.Service.ExecStart = lib.mkForce "${pkgs.waybar}/bin/waybar -b 0"; + wayland.windowManager.hyprland = { + enable = true; + enableNvidiaPatches = true; + xwayland.enable = true; + settings = { + # + # Please note not all available settings / options are set here. + # For a full list, see the wiki + # + + # See https://wiki.hyprland.org/Configuring/Monitors/ + monitor = [ ",preferred,auto,auto" ]; + + + + # See https://wiki.hyprland.org/Configuring/Keywords/ for more + + # Execute your favorite apps at launch + # exec-once = waybar & hyprpaper & firefox + + # Source a file (multi-file configs) + # source = ~/.config/hypr/myColors.conf + + # Some default env vars. + env = "XCURSOR_SIZE,24"; + + # For all categories, see https://wiki.hyprland.org/Configuring/Variables/ + input = { + kb_layout = "de"; + kb_variant = ""; + kb_model = ""; + kb_options = ""; + kb_rules = ""; + + follow_mouse = 1; + + touchpad = { + natural_scroll = true; + }; + + sensitivity = 0; # -1.0 - 1.0, 0 means no modification. + }; + + general = { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + + gaps_in = 5; + gaps_out = 20; + border_size = 2; + "col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg"; + "col.inactive_border" = "rgba(595959aa)"; + + layout = "dwindle"; + }; + + decoration = { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + + rounding = 10; + #blur = yes + #blur_size = 3 + #blur_passes = 1 + #blur_new_optimizations = on + + drop_shadow = true; + shadow_range = 4; + shadow_render_power = 3; + "col.shadow" = "rgba(1a1a1aee)"; + }; + + animations = { + enabled = false; + + # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more + + #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 + }; + + dwindle = { + # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more + pseudotile = true; # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = true; # 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 = true; + }; + + # Example per-device config + # See https://wiki.hyprland.org/Configuring/Keywords/#executing for more + #"device:epic-mouse-v1" = { + # sensitivity = -0.5; + #}; + + # Example windowrule v1 + # windowrule = float, ^(kitty)$ + # Example windowrule v2 + # windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ + # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more + + + # See https://wiki.hyprland.org/Configuring/Keywords/ for more + "$mainMod" = "SUPER"; + + # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more + bind = let + rofi = "${pkgs.rofi-wayland}/bin/rofi"; + kitty = "${pkgs.kitty}/bin/kitty"; + thunar = "${pkgs.xfce.thunar}/bin/thunar"; + in [ + "$mainMod, Q, exec, ${kitty}" + "$mainMod, C, killactive" + "$mainMod, M, exit," + "$mainMod, E, exec, ${thunar}" + "$mainMod, V, togglefloating" + "$mainMod, S, exec, ${rofi} -show drun -show-icons" + "ALT, SPACE, exec, ${rofi} -show combi" + "$mainMod, P, pseudo" # dwindle + "$mainMod, J, togglesplit" # dwindle + # Move focus with mainMod + arrow keys + "$mainMod, left, movefocus, l" + "$mainMod, right, movefocus, r" + "$mainMod, up, movefocus, u" + "$mainMod, down, movefocus, d" + + # Switch workspaces with mainMod + [0-9] + "$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 with mainMod + SHIFT + [0-9] + "$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" + + # Scroll through existing workspaces with mainMod + scroll + "$mainMod, mouse_down, workspace, e+1" + "$mainMod, mouse_up, workspace, e-1" + + "ALT, Tab, cyclenext," + "ALT, Tab, bringactivetotop," + ]; + + bindm = [ + # Move/resize windows with mainMod + LMB/RMB and dragging + "$mainMod, mouse:272, movewindow" + "$mainMod, mouse:273, resizewindow" + ]; + + + exec-once = [ + "${pkgs.swww}/bin/swww init; sleep 1;" + "${pkgs.networkmanagerapplet}/bin/nm-applet --indicator &" + "${pkgs.waybar}/bin/waybar &" + "${pkgs.dunst}/bin/dunst &" + ]; + }; + }; programs.waybar = { enable = true; #systemd.enable = true; @@ -110,7 +284,7 @@ in # XDG portal xdg.portal.enable = true; - xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; + xdg.portal.extraPortals = lib.mkDefault [ pkgs.xdg-desktop-portal-gtk ]; # List packages installed in system profile. To search, run: # $ nix search wget diff --git a/modules/graphical/shared.nix b/modules/graphical/shared.nix index 949a4e3..b8ded40 100644 --- a/modules/graphical/shared.nix +++ b/modules/graphical/shared.nix @@ -25,7 +25,7 @@ in ]; networking.firewall = { - enable = true; + enable = false; allowedTCPPortRanges = [ { from = 1714; to = 1764; } # KDE Connect ];