diff --git a/flake.nix b/flake.nix index d3c03f4..d55d477 100644 --- a/flake.nix +++ b/flake.nix @@ -32,7 +32,11 @@ }; rust-overlay.url = "github:oxalica/rust-overlay"; nix-vscode-extensions.url = "github:nix-community/nix-vscode-extensions"; - ags.url = "github:Aylur/ags"; + hyprpanel = { + url = "github:jas-singhfsu/hyprpanel"; + inputs.nixpkgs.follows = "unstable"; + }; + agenix = { url = "github:ryantm/agenix"; inputs.nixpkgs.follows = "nixpkgs"; diff --git a/nixos/ags/home.nix b/nixos/ags/home.nix deleted file mode 100644 index bf11c30..0000000 --- a/nixos/ags/home.nix +++ /dev/null @@ -1,43 +0,0 @@ -{ - inputs, - pkgs, - lib, - config, - ... -}: let - inherit (lib) mkEnableOption mkIf; - cfg = config.my.ags; -in { - imports = [inputs.ags.homeManagerModules.default]; - - options.my.ags = { - enable = mkEnableOption "ags"; - }; - - config = mkIf cfg.enable { - programs.ags = { - enable = true; - - extraPackages = - (with pkgs; [ - fzf - ]) - ++ (with inputs.ags.packages.${pkgs.system}; [ - battery - hyprland - mpris - network - tray - wireplumber - ]); - }; - - home.packages = with pkgs; [ - brightnessctl - fd - dart-sass - hyprpicker - swww - ]; - }; -} diff --git a/nixos/hyprland/default.nix b/nixos/hyprland/default.nix index 444aff2..f00b515 100644 --- a/nixos/hyprland/default.nix +++ b/nixos/hyprland/default.nix @@ -44,6 +44,7 @@ in { gnome-font-viewer gnome-system-monitor monophony # music player + zen-browser # Nvim clipboard wl-clipboard diff --git a/nixos/hyprland/home.nix b/nixos/hyprland/home.nix index 659fe4b..5b47c7c 100644 --- a/nixos/hyprland/home.nix +++ b/nixos/hyprland/home.nix @@ -1,4 +1,5 @@ { + inputs, pkgs, lib, config, @@ -7,13 +8,13 @@ inherit (lib) mkEnableOption mkIf; cfg = config.my.hyprland; in { + imports = [inputs.hyprpanel.homeManagerModules.hyprpanel]; + options.my.hyprland = { enable = mkEnableOption "hyprland"; }; config = mkIf cfg.enable { - my.ags.enable = true; - programs.fuzzel.enable = true; home.packages = with pkgs; [ @@ -23,16 +24,25 @@ in { wayland.windowManager.hyprland = { enable = true; + plugins = with pkgs.hyprlandPlugins; [ + hy3 + ]; settings = { + # debug.disable_logs = false; "$mod" = "SUPER"; general = { gaps_in = 5; - gaps_out = 10; + # No top gap since the bar is there + gaps_out = "0,10,10,10"; + layout = "hy3"; }; input = { follow_mouse = 2; sensitivity = -0.2; }; + plugin.hy3 = { + autotile.enable = true; + }; exec-once = [ "hyprctl setcursor Adwaita 24" "ags" @@ -49,15 +59,19 @@ in { "$mod, T, exec, foot" ", Print, exec, grimblast copy area" # Windows - "$mod, H, movefocus, l" - "$mod, J, movefocus, d" - "$mod, K, movefocus, u" - "$mod, L, movefocus, r" + "$mod, H, hy3:movefocus, l" + "$mod, J, hy3:movefocus, d" + "$mod, K, hy3:movefocus, u" + "$mod, L, hy3:movefocus, r" # Moving windows - "$mod SHIFT, H, movewindow, l" - "$mod SHIFT, J, movewindow, d" - "$mod SHIFT, K, movewindow, u" - "$mod SHIFT, L, movewindow, r" + "$mod SHIFT, H, hy3:movewindow, l" + "$mod SHIFT, J, hy3:movewindow, d" + "$mod SHIFT, K, hy3:movewindow, u" + "$mod SHIFT, L, hy3:movewindow, r" + # Groups + "$mod, E, hy3:makegroup, opposite" + "$mod SHIFT, E, hy3:changegroup, opposite" + "$mod, W, hy3:changegroup, toggletab" ] ++ ( # workspaces @@ -103,6 +117,8 @@ in { # mouse bindings bindm=ALT,mouse:272,movewindow bindm=ALT,mouse:273,resizewindow + bindn = , mouse_down, hy3:focustab, l, require_hovered + bindn = , mouse_up, hy3:focustab, r, require_hovered # no gaps when only window workspace = w[t1], gapsout:0, gapsin:0 @@ -234,5 +250,54 @@ in { ]; }; }; + + # https://hyprpanel.com/configuration/settings.html#home-manager-module + programs.hyprpanel = { + enable = true; + systemd.enable = true; + hyprland.enable = true; + + settings = { + layout."bar.layouts"."0" = { + left = ["dashboard" "workspaces"]; + middle = ["clock" "notifications"]; + right = ["media" "hypridle" "volume" "network" "bluetooth" "systray"]; + }; + theme = { + name = "gruvbox"; + font = { + name = "Inter"; + size = "1rem"; + weight = 600; + }; + bar = { + transparent = true; + outer_spacing = "0.5em"; + margin_top = "0.5em"; + margin_bottom = "0.5em"; + + buttons.clock.spacing = "0"; + }; + }; + bar = { + launcher.icon = ""; + clock = { + format = "%b %d %l:%M %p"; + showIcon = false; + }; + systray.ignore = ["spotify-client"]; + customModules.hypridle = { + label = false; + offIcon = "󰛊"; + onIcon = "󰅶"; + }; + }; + }; + + override = { + "theme.bar.buttons.workspaces.active" = "#ebdbb2"; + "theme.bar.buttons.workspaces.occupied" = "#665c54"; + }; + }; }; } diff --git a/overlays/default.nix b/overlays/default.nix index 1ab29ed..4c02252 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -33,6 +33,7 @@ # External overlays # Included after the above to ensure modifications are applied + hyprpanel = inputs.hyprpanel.overlay; rust-overlay = inputs.rust-overlay.overlays.default; vscode-extensions = inputs.nix-vscode-extensions.overlays.default;