diff --git a/flake.lock b/flake.lock index 92120bc..d75a3f3 100644 --- a/flake.lock +++ b/flake.lock @@ -23,6 +23,39 @@ "type": "github" } }, + "aquamarine": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1761420899, + "narHash": "sha256-kxGCip6GNbcbNWKu4J2iKbNYfFTS8Zbjg9CWp0zmFoM=", + "owner": "hyprwm", + "repo": "aquamarine", + "rev": "62479232aae42c1ef09c2c027c8cfd91df060897", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "aquamarine", + "type": "github" + } + }, "base16": { "inputs": { "fromYaml": "fromYaml" @@ -130,6 +163,22 @@ } }, "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1747046372, + "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_2": { "flake": false, "locked": { "lastModified": 1751685974, @@ -242,6 +291,28 @@ "type": "github" } }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "hyprland", + "pre-commit-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, "gnome-shell": { "flake": false, "locked": { @@ -300,6 +371,265 @@ "type": "github" } }, + "hyprcursor": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1753964049, + "narHash": "sha256-lIqabfBY7z/OANxHoPeIrDJrFyYy9jAM4GQLzZ2feCM=", + "owner": "hyprwm", + "repo": "hyprcursor", + "rev": "44e91d467bdad8dcf8bbd2ac7cf49972540980a5", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprcursor", + "type": "github" + } + }, + "hyprgraphics": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1760445448, + "narHash": "sha256-fXGjL6dw31FPFRrmIemzGiNSlfvEJTJNsmadZi+qNhI=", + "owner": "hyprwm", + "repo": "hyprgraphics", + "rev": "50fb9f069219f338a11cf0bcccb9e58357d67757", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprgraphics", + "type": "github" + } + }, + "hyprland": { + "inputs": { + "aquamarine": "aquamarine", + "hyprcursor": "hyprcursor", + "hyprgraphics": "hyprgraphics", + "hyprland-protocols": "hyprland-protocols", + "hyprland-qtutils": "hyprland-qtutils", + "hyprlang": "hyprlang", + "hyprutils": "hyprutils", + "hyprwayland-scanner": "hyprwayland-scanner", + "nixpkgs": "nixpkgs", + "pre-commit-hooks": "pre-commit-hooks", + "systems": "systems_2", + "xdph": "xdph" + }, + "locked": { + "lastModified": 1762461128, + "narHash": "sha256-k3cAVyUq/c5trwfQIlrz9PHhUk8fOp27F6dIxQPOXvo=", + "owner": "hyprwm", + "repo": "Hyprland", + "rev": "1ca6058bda89291241b5ed4b1d8784094a21a556", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "Hyprland", + "type": "github" + } + }, + "hyprland-protocols": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1759610243, + "narHash": "sha256-+KEVnKBe8wz+a6dTLq8YDcF3UrhQElwsYJaVaHXJtoI=", + "owner": "hyprwm", + "repo": "hyprland-protocols", + "rev": "bd153e76f751f150a09328dbdeb5e4fab9d23622", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-protocols", + "type": "github" + } + }, + "hyprland-qt-support": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprland-qtutils", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "hyprland-qtutils", + "nixpkgs" + ], + "systems": [ + "hyprland", + "hyprland-qtutils", + "systems" + ] + }, + "locked": { + "lastModified": 1749154592, + "narHash": "sha256-DO7z5CeT/ddSGDEnK9mAXm1qlGL47L3VAHLlLXoCjhE=", + "owner": "hyprwm", + "repo": "hyprland-qt-support", + "rev": "4c8053c3c888138a30c3a6c45c2e45f5484f2074", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-qt-support", + "type": "github" + } + }, + "hyprland-qtutils": { + "inputs": { + "hyprland-qt-support": "hyprland-qt-support", + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprutils": [ + "hyprland", + "hyprland-qtutils", + "hyprlang", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1759080228, + "narHash": "sha256-RgDoAja0T1hnF0pTc56xPfLfFOO8Utol2iITwYbUhTk=", + "owner": "hyprwm", + "repo": "hyprland-qtutils", + "rev": "629b15c19fa4082e4ce6be09fdb89e8c3312aed7", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-qtutils", + "type": "github" + } + }, + "hyprlang": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1758927902, + "narHash": "sha256-LZgMds7M94+vuMql2bERQ6LiFFdhgsEFezE4Vn+Ys3A=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "4dafa28d4f79877d67a7d1a654cddccf8ebf15da", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprutils": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1762208756, + "narHash": "sha256-hC1jb4tdjFfEuU18KQiMgz5XPAO+d5SfbjAUS7haLl4=", + "owner": "hyprwm", + "repo": "hyprutils", + "rev": "164a30b3d8b3174a32ac7326782476f1188e6118", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprutils", + "type": "github" + } + }, + "hyprwayland-scanner": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1755184602, + "narHash": "sha256-RCBQN8xuADB0LEgaKbfRqwm6CdyopE1xIEhNc67FAbw=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "b3b0f1f40ae09d4447c20608e5a4faf8bf3c492d", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, "mango": { "inputs": { "flake-parts": "flake-parts", @@ -354,11 +684,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1761672384, - "narHash": "sha256-o9KF3DJL7g7iYMZq9SWgfS1BFlNbsm6xplRjVlOCkXI=", + "lastModified": 1762111121, + "narHash": "sha256-4vhDuZ7OZaZmKKrnDpxLZZpGIJvAeMtK6FKLJYUtAdw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "08dacfca559e1d7da38f3cf05f1f45ee9bfd213c", + "rev": "b3d51a0365f6695e7dd5cdf3e180604530ed33b4", "type": "github" }, "original": { @@ -383,6 +713,22 @@ "type": "github" } }, + "nixpkgs_2": { + "locked": { + "lastModified": 1761672384, + "narHash": "sha256-o9KF3DJL7g7iYMZq9SWgfS1BFlNbsm6xplRjVlOCkXI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "08dacfca559e1d7da38f3cf05f1f45ee9bfd213c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nur": { "inputs": { "flake-parts": "flake-parts_2", @@ -431,13 +777,13 @@ }, "nvf": { "inputs": { - "flake-compat": "flake-compat", + "flake-compat": "flake-compat_2", "flake-parts": "flake-parts_3", "mnw": "mnw", "nixpkgs": [ "nixpkgs" ], - "systems": "systems_2" + "systems": "systems_3" }, "locked": { "lastModified": 1761486540, @@ -476,13 +822,37 @@ "type": "github" } }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat", + "gitignore": "gitignore", + "nixpkgs": [ + "hyprland", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1760663237, + "narHash": "sha256-BflA6U4AM1bzuRMR8QqzPXqh8sWVCNDzOdsxXEguJIc=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "ca5b894d3e3e151ffc1db040b6ce4dcc75d31c37", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, "root": { "inputs": { "agenix": "agenix", "home-manager": "home-manager_2", + "hyprland": "hyprland", "mango": "mango", "nixos-hardware": "nixos-hardware", - "nixpkgs": "nixpkgs", + "nixpkgs": "nixpkgs_2", "nur": "nur", "nvf": "nvf", "plasma-manager": "plasma-manager", @@ -544,7 +914,7 @@ "nixpkgs" ], "nur": "nur_2", - "systems": "systems_3", + "systems": "systems_4", "tinted-foot": "tinted-foot", "tinted-kitty": "tinted-kitty", "tinted-schemes": "tinted-schemes", @@ -581,6 +951,21 @@ } }, "systems_2": { + "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" + } + }, + "systems_3": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -595,7 +980,7 @@ "type": "github" } }, - "systems_3": { + "systems_4": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -690,6 +1075,47 @@ "repo": "base16-zed", "type": "github" } + }, + "xdph": { + "inputs": { + "hyprland-protocols": [ + "hyprland", + "hyprland-protocols" + ], + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1761431178, + "narHash": "sha256-xzjC1CV3+wpUQKNF+GnadnkeGUCJX+vgaWIZsnz9tzI=", + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "rev": "4b8801228ff958d028f588f0c2b911dbf32297f9", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 5027709..f403fe1 100644 --- a/flake.nix +++ b/flake.nix @@ -42,6 +42,8 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + hyprland.url = "github:hyprwm/Hyprland"; + silentSDDM = { url = "github:uiriansan/SilentSDDM"; inputs.nixpkgs.follows = "nixpkgs"; diff --git a/modules/home/default.nix b/modules/home/default.nix index 781873d..c71b1c8 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -6,7 +6,7 @@ ./alacritty.nix ./firefox.nix ./git.nix - ./hyprland.nix + ./hypr ./mango.nix ./nvf.nix ./packages.nix @@ -14,6 +14,7 @@ ./ssh.nix ./stylix.nix ./vscode.nix + ./wallpaper.nix ./xdg.nix ./zsh.nix ]; diff --git a/modules/home/hypr/default.nix b/modules/home/hypr/default.nix new file mode 100644 index 0000000..d479140 --- /dev/null +++ b/modules/home/hypr/default.nix @@ -0,0 +1,9 @@ +{ + ... +}: +{ + imports = [ + ./hyprland.nix + ./keybinds.nix + ]; +} diff --git a/modules/home/hypr/hyprland.nix b/modules/home/hypr/hyprland.nix new file mode 100644 index 0000000..33dcebb --- /dev/null +++ b/modules/home/hypr/hyprland.nix @@ -0,0 +1,47 @@ +{ + pkgs, + ... +}: +{ + home.packages = with pkgs; [ + waybar + hyprpolkitagent + ]; + + wayland.windowManager.hyprland = { + enable = true; + package = null; + portalPackage = null; + + settings = { + monitor = [ + "eDP-1, 2256x1504@60, 0x0, 1" + ]; + + decoration = { + rounding = 10; + + active_opacity = 0.95; + inactive_opacity = 0.85; + fullscreen_opacity = 1.0; + + blur = { + enabled = true; + size = 8; + passes = 3; + new_optimizations = true; + }; + }; + + exec-once = [ + "systemctl --user enable --now waybar.service" + "systemctl --user enable --now hyprpolkitagent.service" + "wpaperd -d" + ]; + + env = [ + "NIXOS_OZONE_WL, 1" + ]; + }; + }; +} diff --git a/modules/home/hypr/keybinds.nix b/modules/home/hypr/keybinds.nix new file mode 100644 index 0000000..edf85ec --- /dev/null +++ b/modules/home/hypr/keybinds.nix @@ -0,0 +1,69 @@ +{ + ... +}: +{ + wayland.windowManager.hyprland.settings = { + exec = "hyprctl dispatch submap global"; + submap = "global"; + + # MY STUFF + "$mod" = "SUPER"; + + bind = [ + "$mod, Q, killactive" + "$mod, W, exec, alacritty" + "$mod, S, exec, rofi -show drun -show-icons" + + # Window Movement + "$mod, left, movefocus, l" + "$mod, right, movefocus, r" + "$mod, up, movefocus, u" + "$mod, down, movefocus, d" + "$mod SHIFT, left, movewindow, l" + "$mod SHIFT, right, movewindow, r" + "$mod SHIFT, up, movewindow, u" + "$mod SHIFT, down, movewindow, d" + "$mod CTRL, left, workspace, r-1" + "$mod CTRL, right, workspace, r+1" + "$mod CTRL SHIFT, left, movetoworkspace, r-1" + "$mod CTRL SHIFT, right, movetoworkspace, r+1" + + # Brightness keys + ", XF86MonBrightnessUp, exec, brightnessctl set 10%+" + ", XF86MonBrightnessDown, exec, brightnessctl set 10%-" + + # Media Control Keys + ", XF86AudioPrev, exec, playerctl previous" + ", XF86AudioPlay, exec, playerctl play-pause" + ", XF86AudioNext, exec, playerctl next" + ", XF86AudioMute, exec, pamixer -t" + ", XF86AudioRaiseVolume, exec, pamixer -i 5" + ", XF86AudioLowerVolume, exec, pamixer -d 5" + "ALT, XF86AudioMute, exec, pamixer --default-source -t" + "ALT, XF86AudioRaiseVolume, exec, pamixer --default-source -i 5" + "ALT, XF86AudioLowerVolume, exec, pamixer --default-source -d 5" + ] + ++ ( + # workspaces + # binds $mod + [shift +] {1..9} to [move to] workspace {1..9} + builtins.concatLists ( + builtins.genList ( + i: + let + ws = i + 1; + in + [ + "$mod, code:1${toString i}, workspace, ${toString ws}" + "$mod SHIFT, code:1${toString i}, movetoworkspace, ${toString ws}" + ] + ) 9 + ) + ); + + bindm = [ + "$mod, mouse:272, movewindow" + "$mod, mouse:273, resizewindow" + "$mod ALT, mouse:272, resizewindow" + ]; + }; +} diff --git a/modules/home/hyprland.nix b/modules/home/hyprland.nix deleted file mode 100644 index 2d3bc79..0000000 --- a/modules/home/hyprland.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ - ... -}: -{ - wayland.windowManager.hyprland = { - enable = true; - package = null; - portalPackage = null; - }; -} diff --git a/modules/home/packages.nix b/modules/home/packages.nix index 9024c90..745a20b 100644 --- a/modules/home/packages.nix +++ b/modules/home/packages.nix @@ -15,12 +15,14 @@ hunspell hunspellDicts.en_US - # KDE - kdePackages.kate - # CD Stuff picard heybrochecklog rsgain + + rofi + playerctl + pamixer + brightnessctl ]; } diff --git a/modules/home/wallpaper.nix b/modules/home/wallpaper.nix new file mode 100644 index 0000000..affd902 --- /dev/null +++ b/modules/home/wallpaper.nix @@ -0,0 +1,25 @@ +{ + config, + ... +}: +let + wallpapers = config.xdg.userDirs.extraConfig.XDG_WALLPAPERS_DIR; +in +{ + home.file."${wallpapers}" = { + source = ../../wallpapers; + recursive = true; + }; + + services.wpaperd = { + enable = true; + settings = { + default = { + mode = "center"; + }; + any = { + path = "${wallpapers}/lanterns_of_twilight.png"; + }; + }; + }; +} diff --git a/modules/home/xdg.nix b/modules/home/xdg.nix index 7ecad6c..b2d8ee3 100644 --- a/modules/home/xdg.nix +++ b/modules/home/xdg.nix @@ -10,6 +10,8 @@ createDirectories = true; extraConfig = { XDG_DEV_DIR = "${config.home.homeDirectory}/Dev"; + XDG_WALLPAPERS_DIR = "${config.xdg.userDirs.pictures}/Wallpapers"; + XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots"; }; }; }; diff --git a/modules/system/desktop.nix b/modules/system/desktop.nix index c2eea3a..9dad700 100644 --- a/modules/system/desktop.nix +++ b/modules/system/desktop.nix @@ -14,25 +14,17 @@ in programs = { hyprland = { enable = true; - withUWSM = true; + package = inputs.hyprland.packages.${pkgs.system}.hyprland; + portalPackage = inputs.hyprland.packages.${pkgs.system}.xdg-desktop-portal-hyprland; }; mango.enable = true; - # uwsm = { - # enable = true; - # waylandCompositors = { - # mango = { - # prettyName = "Mango"; - # comment = "Lightweight compositor based on dwl"; - # binPath = "/run/current-system/sw/bin/mango"; - # }; - # }; - # }; }; environment.systemPackages = [ sddm-theme sddm-theme.test ]; + services.displayManager = { defaultSession = "mango"; sddm = { diff --git a/modules/system/system.nix b/modules/system/system.nix index 720b214..c7b4fe5 100644 --- a/modules/system/system.nix +++ b/modules/system/system.nix @@ -14,11 +14,13 @@ "https://cache.nixos.org" "https://nix-community.cachix.org" "https://devenv.cachix.org" + "https://hyprland.cachix.org" ]; trusted-public-keys = [ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" "devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw=" + "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" ]; }; };