diff --git a/flake.lock b/flake.lock index e12e181..6a3cc04 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,38 @@ { "nodes": { + "aquamarine": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1724273991, + "narHash": "sha256-+aUSOXKGpS5CRm1oTitgNAr05ThQNbKIXalZHl3nC6Y=", + "owner": "hyprwm", + "repo": "aquamarine", + "rev": "9a3161ad4c78dc420d1cbb3aae638222608c7de4", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "aquamarine", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -20,7 +53,206 @@ "type": "github" } }, + "hy3": { + "inputs": { + "hyprland": [ + "hyprland" + ] + }, + "locked": { + "lastModified": 1723267004, + "narHash": "sha256-gyhpW3Mv9RgWsB8jAMoA7yoMSb01ol0jyPFNsghaZ0w=", + "owner": "outfoxxed", + "repo": "hy3", + "rev": "6af5f6004180664d883bd428f1da117bb6b1b6dc", + "type": "github" + }, + "original": { + "owner": "outfoxxed", + "ref": "hl0.42.0", + "repo": "hy3", + "type": "github" + } + }, + "hyprcursor": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1722623071, + "narHash": "sha256-sLADpVgebpCBFXkA1FlCXtvEPu1tdEsTfqK1hfeHySE=", + "owner": "hyprwm", + "repo": "hyprcursor", + "rev": "912d56025f03d41b1ad29510c423757b4379eb1c", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprcursor", + "type": "github" + } + }, + "hyprland": { + "inputs": { + "aquamarine": "aquamarine", + "hyprcursor": "hyprcursor", + "hyprlang": "hyprlang", + "hyprutils": "hyprutils", + "hyprwayland-scanner": "hyprwayland-scanner", + "nixpkgs": "nixpkgs", + "systems": "systems", + "xdph": "xdph" + }, + "locked": { + "lastModified": 1723058230, + "narHash": "sha256-deu8zvgseDg2gQEnZiCda4TrbA6pleE9iItoZlsoMtE=", + "rev": "9a09eac79b85c846e3a865a9078a3f8ff65a9259", + "revCount": 5069, + "submodules": true, + "type": "git", + "url": "https://github.com/hyprwm/Hyprland" + }, + "original": { + "rev": "9a09eac79b85c846e3a865a9078a3f8ff65a9259", + "submodules": true, + "type": "git", + "url": "https://github.com/hyprwm/Hyprland" + } + }, + "hyprland-protocols": { + "inputs": { + "nixpkgs": [ + "hyprland", + "xdph", + "nixpkgs" + ], + "systems": [ + "hyprland", + "xdph", + "systems" + ] + }, + "locked": { + "lastModified": 1721326555, + "narHash": "sha256-zCu4R0CSHEactW9JqYki26gy8h9f6rHmSwj4XJmlHgg=", + "owner": "hyprwm", + "repo": "hyprland-protocols", + "rev": "5a11232266bf1a1f5952d5b179c3f4b2facaaa84", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-protocols", + "type": "github" + } + }, + "hyprlang": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1724174162, + "narHash": "sha256-fOOBLwil6M9QWMCiSULwjMQzrXhHXUnEqmjHX5ZHeVI=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "16e5c9465f04477d8a3dd48a0a26bf437986336c", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprutils": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1722869141, + "narHash": "sha256-0KU4qhyMp441qfwbirNg3+wbm489KnEjXOz2I/RbeFs=", + "owner": "hyprwm", + "repo": "hyprutils", + "rev": "0252fd13e78e60fb0da512a212e56007515a49f7", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprutils", + "type": "github" + } + }, + "hyprwayland-scanner": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1721324119, + "narHash": "sha256-SOOqIT27/X792+vsLSeFdrNTF+OSRp5qXv6Te+fb2Qg=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "a048a6cb015340bd82f97c1f40a4b595ca85cc30", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, "nixpkgs": { + "locked": { + "lastModified": 1724224976, + "narHash": "sha256-Z/ELQhrSd7bMzTO8r7NZgi9g5emh+aRKoCdaAv5fiO0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c374d94f1536013ca8e92341b540eba4c22f9c62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { "locked": { "lastModified": 1723637854, "narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=", @@ -39,7 +271,54 @@ "root": { "inputs": { "home-manager": "home-manager", - "nixpkgs": "nixpkgs" + "hy3": "hy3", + "hyprland": "hyprland", + "nixpkgs": "nixpkgs_2" + } + }, + "systems": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "xdph": { + "inputs": { + "hyprland-protocols": "hyprland-protocols", + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1724073926, + "narHash": "sha256-nWlUL43jOFHf+KW6Hqrx+W/r1XdXuDyb0wC/SrHsOu4=", + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "rev": "a08ecbbf33598924e93542f737fc6169a26b481e", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "type": "github" } } }, diff --git a/flake.nix b/flake.nix index 334b381..5a9ab61 100644 --- a/flake.nix +++ b/flake.nix @@ -1,16 +1,28 @@ { description = "Home Manager configuration of johno"; - inputs = { + inputs = + { # Specify the source of Home Manager and Nixpkgs. nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; + + hyprland = { + type = "git"; + url = "https://github.com/hyprwm/Hyprland"; + submodules = true; + rev = "9a09eac79b85c846e3a865a9078a3f8ff65a9259"; + }; + hy3 = { + url = "github:outfoxxed/hy3?ref=hl0.42.0"; + inputs.hyprland.follows = "hyprland"; + }; }; - outputs = { nixpkgs, home-manager, ... }: + outputs = { nixpkgs, home-manager, hyprland, hy3, ... }: let system = "x86_64-linux"; pkgs = nixpkgs.legacyPackages.${system}; @@ -20,10 +32,15 @@ # Specify your home configuration modules here, for example, # the path to your home.nix. - modules = [ ./home.nix ]; + modules = [ + hyprland.homeManagerModules.default + + ./home.nix + ]; # Optionally use extraSpecialArgs # to pass through arguments to home.nix + extraSpecialArgs = { inherit hy3; inherit hyprland; }; }; }; } diff --git a/modules/window_managers/hyprland/default.nix b/modules/window_managers/hyprland/default.nix index f32169d..c492315 100644 --- a/modules/window_managers/hyprland/default.nix +++ b/modules/window_managers/hyprland/default.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ hyprland, hy3, ... }: { imports = [ @@ -8,6 +8,8 @@ wayland.windowManager.hyprland = { enable = true; + package = hyprland.packages.x86_64-linux.hyprland; + plugins = [ hy3.packages.x86_64-linux.hy3 ]; settings = { "$mod" = "SUPER"; "$terminal" = "kitty"; @@ -40,21 +42,37 @@ "suppressevent maximize, class:.*" ]; + general.layout = "hy3"; + bind = [ "SHIFT_$mod, Q, killactive" - "SHIFT_$mod, E, exit" + "SHIFT_$mod, M, exit" + "$mod, D, exec, $menu" "$mod, Return, exec, $terminal" - "$mod, H, movefocus, l" - "$mod, L, movefocus, r" - "$mod, K, movefocus, u" - "$mod, J, movefocus, d" - "SHIFT_$mod, H, swapwindow, l" - "SHIFT_$mod, L, swapwindow, r" - "SHIFT_$mod, K, swapwindow, u" - "SHIFT_$mod, J, swapwindow, d" + + "$mod, H, hy3:movefocus, l" + "$mod, L, hy3:movefocus, r" + "$mod, K, hy3:movefocus, u" + "$mod, J, hy3:movefocus, d" + + "SHIFT_$mod, H, hy3:movewindow, l" + "SHIFT_$mod, L, hy3:movewindow, r" + "SHIFT_$mod, K, hy3:movewindow, u" + "SHIFT_$mod, J, hy3:movewindow, d" + + "$mod, V, hy3:makegroup, opposite" + "$mod, W, hy3:changegroup, toggletab" + + "$mod, A, hy3:changefocus, raise" + "SHIFT_$mod, A, hy3:changefocus, lower" + "$mod, M, fullscreen, 0" + "$mod, E, hy3:expand, expand" + "SHIFT_$mod, E, hy3:expand, base" + + "$mod, Q, hy3:warpcursor" ] ++ ( # workspaces @@ -67,11 +85,17 @@ builtins.toString (x + 1 - (c * 10)); in [ "$mod, ${ws}, workspace, ${toString (x + 1)}" - "$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}" + "$mod SHIFT, ${ws}, hy3:movetoworkspace, ${toString (x + 1)}" ] ) 10) ); + + bindm = + [ + "$mod, mouse:272, movewindow" + "$mod, mouse:273, resizewindow" + ]; }; }; }