From 6291136770ecda143f3ce92ce0654d1d01e26c8e Mon Sep 17 00:00:00 2001 From: William Date: Mon, 3 Feb 2025 18:08:06 -0300 Subject: [PATCH] this will eventually be the hyprland config. once hyprpanel has a vertical layout, imma bounce from plasma --- flake.lock | 66 ++++++++++ flake.nix | 6 + hosts/desktops/common/home-manager.nix | 4 +- hosts/desktops/common/packages.nix | 6 +- users/desktops/common/programs.nix | 165 +++++++++++++++++++++++++ 5 files changed, 244 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 1541b54..598fb4c 100644 --- a/flake.lock +++ b/flake.lock @@ -23,6 +23,50 @@ "type": "github" } }, + "ags": { + "inputs": { + "astal": "astal", + "nixpkgs": [ + "hyprpanel", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1736090999, + "narHash": "sha256-B5CJuHqfJrzPa7tObK0H9669/EClSHpa/P7B9EuvElU=", + "owner": "aylur", + "repo": "ags", + "rev": "5527c3c07d92c11e04e7fd99d58429493dba7e3c", + "type": "github" + }, + "original": { + "owner": "aylur", + "repo": "ags", + "type": "github" + } + }, + "astal": { + "inputs": { + "nixpkgs": [ + "hyprpanel", + "ags", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1735172721, + "narHash": "sha256-rtEAwGsHSppnkR3Qg3eRJ6Xh/F84IY9CrBBLzYabalY=", + "owner": "aylur", + "repo": "astal", + "rev": "6c84b64efc736e039a8a10774a4a1bf772c37aa2", + "type": "github" + }, + "original": { + "owner": "aylur", + "repo": "astal", + "type": "github" + } + }, "base16": { "inputs": { "fromYaml": "fromYaml" @@ -418,6 +462,27 @@ "type": "github" } }, + "hyprpanel": { + "inputs": { + "ags": "ags", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1737793455, + "narHash": "sha256-sVy0QU4fpZsUWj5B8t6jUNZHzVLC22+HYqcFG9pKPik=", + "owner": "Jas-SinghFSU", + "repo": "HyprPanel", + "rev": "74065af3d2aa576e8b183d720033c3eece3deb70", + "type": "github" + }, + "original": { + "owner": "Jas-SinghFSU", + "repo": "HyprPanel", + "type": "github" + } + }, "impermanence": { "locked": { "lastModified": 1737831083, @@ -582,6 +647,7 @@ "home-manager": "home-manager_2", "home-manager-stable": "home-manager-stable", "homepage": "homepage", + "hyprpanel": "hyprpanel", "impermanence": "impermanence", "nix-flatpak": "nix-flatpak", "nix-index-db": "nix-index-db", diff --git a/flake.nix b/flake.nix index 81e961a..1d1e861 100644 --- a/flake.nix +++ b/flake.nix @@ -50,6 +50,10 @@ stylix.url = "github:danth/stylix"; + hyprpanel = { + url = "github:Jas-SinghFSU/HyprPanel"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; outputs = @@ -68,6 +72,7 @@ nix-minecraft, nixos-generators, stylix, + hyprpanel, ... }: { @@ -89,6 +94,7 @@ nixpkgs.overlays = [ agenix.overlays.default self.overlays.custom + hyprpanel.overlay ]; } ]; diff --git a/hosts/desktops/common/home-manager.nix b/hosts/desktops/common/home-manager.nix index 6e88ad7..f605806 100644 --- a/hosts/desktops/common/home-manager.nix +++ b/hosts/desktops/common/home-manager.nix @@ -5,6 +5,8 @@ useGlobalPkgs = true; useUserPackages = true; backupFileExtension = "bkp"; - users.user = import ../../../users/desktops/user.nix; + users.user = { + imports = [ ../../../users/desktops/user.nix ]; + }; }; } diff --git a/hosts/desktops/common/packages.nix b/hosts/desktops/common/packages.nix index 842e9a1..0a59658 100644 --- a/hosts/desktops/common/packages.nix +++ b/hosts/desktops/common/packages.nix @@ -1,4 +1,4 @@ -{ inputs, pkgs, ... }: +{ pkgs, ... }: let kdepkgs = with pkgs.kdePackages; [ ark @@ -30,7 +30,6 @@ in aspellDicts.en-computers aspellDicts.pt_BR bat - bitwarden-desktop clonehero deploy-rs distrobox @@ -38,6 +37,7 @@ in firefox freecad-wayland fzf + ghostty gimp heroic inkscape @@ -73,6 +73,7 @@ in steam-run tor-browser ungoogled-chromium + ulauncher unrar ventoy vesktop @@ -103,6 +104,7 @@ in kdeconnect.enable = true; partition-manager.enable = true; gamemode.enable = true; + hyprland.enable = true; nix-index-database.comma.enable = true; appimage = { enable = true; diff --git a/users/desktops/common/programs.nix b/users/desktops/common/programs.nix index f1e4665..80ea317 100644 --- a/users/desktops/common/programs.nix +++ b/users/desktops/common/programs.nix @@ -25,4 +25,169 @@ }; }; }; + + wayland.windowManager.hyprland = { + enable = true; + plugins = with pkgs.hyprlandPlugins; [ hyprscroller ]; + extraConfig = '' + ################ + ### MONITORS ### + ################ + monitor=,preferred,auto,auto + + ################# + ### AUTOSTART ### + ################# + exec-once = ulauncher --hide-window + exec-once = ${pkgs.hyprpanel}/bin/hyprpanel + env = XCURSOR_SIZE,24 + env = HYPRCURSOR_SIZE,24 + + ##################### + ### LOOK AND FEEL ### + ##################### + general { + gaps_in = 5 + gaps_out = 20 + border_size = 2 + col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg + col.inactive_border = rgba(595959aa) + resize_on_border = true + allow_tearing = false + layout = scroller + } + plugin { + scroller { + column_default_width = onethird + focuswrap = false + column_widths = onethird onehalf twothirds + center_row_if_space_available = true + } + } + decoration { + rounding = 10 + rounding_power = 2 + dim_inactive = true + dim_strength = 0.3 + shadow { + enabled = true + range = 4 + render_power = 3 + } + blur { + enabled = true + size = 8 + passes = 1 + vibrancy = 0.1696 + } + } + animations { + enabled = yes, please :) + bezier = easeOutQuint,0.23,1,0.32,1 + bezier = easeInOutCubic,0.65,0.05,0.36,1 + bezier = linear,0,0,1,1 + bezier = almostLinear,0.5,0.5,0.75,1.0 + bezier = quick,0.15,0,0.1,1 + animation = global, 1, 10, default + animation = border, 1, 5.39, easeOutQuint + animation = windows, 1, 4.79, easeOutQuint + animation = windowsIn, 1, 4.1, easeOutQuint, popin 87% + animation = windowsOut, 1, 1.49, linear, popin 87% + animation = fadeIn, 1, 1.73, almostLinear + animation = fadeOut, 1, 1.46, almostLinear + animation = fade, 1, 3.03, quick + animation = layers, 1, 3.81, easeOutQuint + animation = layersIn, 1, 4, easeOutQuint, fade + animation = layersOut, 1, 1.5, linear, fade + animation = fadeLayersIn, 1, 1.79, almostLinear + animation = fadeLayersOut, 1, 1.39, almostLinear + animation = workspaces, 1, 1.94, almostLinear, fade + animation = workspacesIn, 1, 1.21, almostLinear, fade + animation = workspacesOut, 1, 1.94, almostLinear, fade + } + misc { + force_default_wallpaper = 0 + disable_hyprland_logo = true + } + + ############# + ### INPUT ### + ############# + input { + kb_layout = us + kb_variant = altgr-intl + follow_mouse = 1 + sensitivity = 0 + accel_profile = flat + natural_scroll = true + touchpad { + natural_scroll = true + clickfinger_behavior = true + } + } + + ################### + ### KEYBINDINGS ### + ################### + $mainMod = SUPER + $terminal = ghostty + $menu = ulauncher-toggle + # APP SHORTCUTS + bind = ALT, SPACE, exec, $menu + bind = $mainMod, RETURN, exec, $terminal + # SESSION MANAGEMENT + bind = CTRL ALT, DELETE, exit, + bind = $mainMod CTRL, mouse_down, workspace, e+1 + bind = $mainMod CTRL, mouse_up, workspace, e-1 + bind = $mainMod CTRL, j, workspace, e+1 + bind = $mainMod CTRL, k, workspace, e-1 + bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ + bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- + bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle + bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle + bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+ + bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%- + bindl = , XF86AudioNext, exec, ${pkgs.playerctl}/bin/playerctl next + bindl = , XF86AudioPause, exec, ${pkgs.playerctl}/bin/playerctl play-pause + bindl = , XF86AudioPlay, exec, ${pkgs.playerctl}/bin/playerctl play-pause + bindl = , XF86AudioPrev, exec, ${pkgs.playerctl}/bin/playerctl previous + # WINDOW MANAGEMENT + bind = ALT, F4, killactive, + bind = $mainMod, space, togglefloating, + bind = $mainMod, f, fullscreen + bindm = $mainMod, mouse:272, movewindow + bindm = $mainMod, mouse:273, resizewindow + bind = SUPER, h, movefocus, l + bind = SUPER, l, movefocus, r + bind = SUPER, k, movefocus, u + bind = SUPER, j, movefocus, d + bind = $mainMod CTRL, h, movewindow, l + bind = $mainMod CTRL, l, movewindow, r + bind = $mainMod CTRL, k, movewindow, u + bind = $mainMod CTRL, j, movewindow, d + bind = $mainMod, bracketleft, scroller:setmode, row + bind = $mainMod, bracketright, scroller:setmode, col + bind = $mainMod, slash, scroller:jump, + bind = $mainMod, r, scroller:cyclewidth, next + bind = $mainMod CTRL, r, scroller:cyclewidth, prev + bind = $mainMod, p, scroller:pin, + bind = $mainMod, c, scroller:alignwindow, center + + #################### + ### WINDOW RULES ### + #################### + windowrulev2 = suppressevent maximize, class:.* + windowrulev2 = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0 + # ulauncher + windowrule = float, ulauncher + windowrule = pin, ulancher + windowrule = noborder, ulauncher + windowrule = noshadow, ulauncher + windowrule = nomaxsize, ulauncher + windowrule = noblur, ulauncher + windowrulev2 = animation slide top, class:^(ulauncher)$ + # firefox + windowrulev2 = plugin:scroller:columnwidth onehalf, class:(firefox) + ''; + }; }