dotfiles

My PC Dotfiles & Website
commit 1decb77647e652b79d3f99073387a08e47d9b5af
parent d0605f53e13db539db41e02e210f2b2bbaaa014d
Author: maydayv7 <maydayv7@gmail.com>
Date:   Tue, 11 Mar 2025 02:36:33 +0530

feat: Update Hyprland to v0.47.1

+ Revert to using `inputs.hyprland` for package
+ Drop `hycov` and `hyprspace` for `hyprtasking`

Diffstat:

MREADME.md | 9+++++++++
Mfiles/flake.nix | 3---
Dfiles/hyprland/greeter.conf | 15---------------
Mfiles/hyprland/kebihelp.json | 24++++++++++++++++--------
Mflake.lock | 570++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Mflake.nix | 39+++++++++++++++++++++++++++++++++++++--
Mmodules/gui/desktop/hyprland/apps/security.nix | 4++--
Mmodules/gui/desktop/hyprland/apps/settings.nix | 1+
Mmodules/gui/desktop/hyprland/apps/utilities.nix | 2+-
Mmodules/gui/desktop/hyprland/default.nix | 27++++++++-------------------
Mmodules/gui/desktop/hyprland/settings/default.nix | 65++++++++++++++++++++++++++++++++++++++---------------------------
Mmodules/gui/desktop/hyprland/settings/keybindings.nix | 8+++++++-
Mmodules/gui/desktop/hyprland/settings/plugins.nix | 93++++++++++++++++++++++++-------------------------------------------------------
Mpackages/firefox-elementary/metadata.nix | 4++--
Mpackages/flake.nix | 7+++++++
Dpackages/hycov/default.nix | 29-----------------------------
Dpackages/hycov/metadata.nix | 6------
Dpackages/hyprdark/default.nix | 33---------------------------------
Dpackages/hyprdark/metadata.nix | 6------
Mpackages/hyprshellevents/default.nix | 2+-
Mpackages/hyprshellevents/metadata.nix | 4++--
21 files changed, 723 insertions(+), 228 deletions(-)

diff --git a/README.md b/README.md @@ -511,6 +511,10 @@ You can navigate to the `README`s present in the various directories to know mor <details> <summary><b>Changelog</b></summary> +### NEXT + +- Update Hyprland to v0.47.1 + ### v25 - Upgrade to NixOS v24.11 (Vicuna)! @@ -810,6 +814,11 @@ You can navigate to the `README`s present in the various directories to know mor - ULauncher Plugins have to be manually updated - Logseq Plugins have to be manually installed - GNOME [Pano](https://github.com/oae/gnome-shell-pano) has to be manually updated until upstream stabilises +- Cannot automatically hibernate on NVIDIA due to upstream [issue](https://forums.developer.nvidia.com/t/systemds-suspend-then-hibernate-not-working-in-nvidia-optimus-laptop/213690) + +### To Do + +- VFIO Support via GPU Hotplug instead of restart </details> diff --git a/files/flake.nix b/files/flake.nix @@ -81,9 +81,6 @@ # Application Drawer drawer = readFile ./hyprland/drawer.css; - # Greeter Configuration - greeter = readFile ./hyprland/greeter.conf; - # Minimize Workspace minimize = ""; diff --git a/files/hyprland/greeter.conf b/files/hyprland/greeter.conf @@ -1,15 +0,0 @@ -env = LIBVA_DRIVER_NAME, nvidia -env = __GLX_VENDOR_LIBRARY_NAME, nvidia -exec-once = @greeter; hyprctl dispatch exit -windowrule = fullscreen, .* -windowrule = stayfocused, .* -monitor = , preferred, auto, 1 -animations:enabled = false -misc { - background_color = rgb(@base00) - disable_autoreload = true - force_default_wallpaper = 0 - disable_hyprland_logo = true - disable_splash_rendering = true - disable_hyprland_qtutils_check = true -} diff --git a/files/hyprland/kebihelp.json b/files/hyprland/kebihelp.json @@ -86,6 +86,10 @@ "label": "Quit application" }, { + "value": "$mod SHIFT Q", + "label": "Force Quit application" + }, + { "value": "ALT A", "label": "Activate urgent/last window" }, @@ -139,10 +143,6 @@ "_hidden": false, "keybindings": [ { - "value": "$mod `", - "label": "Show workspace expose view" - }, - { "value": "$mod Tab", "label": "Show workspace overview for current monitor" }, @@ -151,10 +151,6 @@ "label": "Show workspace overview for all monitors" }, { - "value": "ALT <ARROW>", - "label": "Switch to window in desired direction (in overview)" - }, - { "value": "ALT [SHIFT] Tab", "label": "Cycle [backwards] through open windows" }, @@ -313,6 +309,18 @@ { "value": "$mod SHIFT L'", "label": "Move window into application group" + }, + { + "value": "", + "label": "" + }, + { + "value": "R' (in overview)", + "label": "Move windows across workspaces" + }, + { + "value": "L' (in overview)", + "label": "Switch workspaces" } ] }, diff --git 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": 1737636397, + "narHash": "sha256-F5MbBj3QVorycVSFE9qjuOTLtIQBqt2VWbXa0uwzm98=", + "owner": "hyprwm", + "repo": "aquamarine", + "rev": "7fe006981fae53e931f513026fc754e322f13145", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "aquamarine", + "type": "github" + } + }, "base16": { "inputs": { "fromYaml": "fromYaml" @@ -169,6 +202,22 @@ "flake-compat_2": { "flake": false, "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_3": { + "flake": false, + "locked": { "lastModified": 1733328505, "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", "owner": "edolstra", @@ -182,7 +231,7 @@ "type": "github" } }, - "flake-compat_3": { + "flake-compat_4": { "flake": false, "locked": { "lastModified": 1696426674, @@ -198,7 +247,7 @@ "type": "github" } }, - "flake-compat_4": { + "flake-compat_5": { "flake": false, "locked": { "lastModified": 1673956053, @@ -336,7 +385,7 @@ "stylix", "flake-compat" ], - "gitignore": "gitignore_2", + "gitignore": "gitignore_3", "nixpkgs": [ "stylix", "nixpkgs" @@ -381,6 +430,28 @@ "gitignore_2": { "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" + } + }, + "gitignore_3": { + "inputs": { + "nixpkgs": [ "stylix", "git-hooks", "nixpkgs" @@ -453,6 +524,424 @@ "type": "github" } }, + "hyprcursor": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1737634937, + "narHash": "sha256-Ffw4ujFpi++6pPHe+gCBOfDgAoNlzVPZN6MReC1beu8=", + "owner": "hyprwm", + "repo": "hyprcursor", + "rev": "9c5dd1f7c825ee47f72727ad0a4e16ca46a2688e", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprcursor", + "type": "github" + } + }, + "hyprdark": { + "inputs": { + "hyprland": [ + "hyprland" + ], + "nix-filter": [ + "filters" + ] + }, + "locked": { + "lastModified": 1739382478, + "narHash": "sha256-3wnGd/nCrxrjQmvU3GOBBjZl2Ot80P885yjxpPiv/zw=", + "owner": "micha4w", + "repo": "Hypr-DarkWindow", + "rev": "ae5725442267ae7ae417ca2b27840b0f84edcf78", + "type": "github" + }, + "original": { + "owner": "micha4w", + "ref": "v0.47.1", + "repo": "Hypr-DarkWindow", + "type": "github" + } + }, + "hyprgraphics": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1737634889, + "narHash": "sha256-9JZE3KxcXOqZH9zs3UeadngDiK/yIACTiAR8HSA/TNI=", + "owner": "hyprwm", + "repo": "hyprgraphics", + "rev": "0d77b4895ad5f1bb3b0ee43103a5246c58b65591", + "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_2", + "hyprutils": "hyprutils_2", + "hyprwayland-scanner": "hyprwayland-scanner", + "nixpkgs": [ + "stable" + ], + "pre-commit-hooks": "pre-commit-hooks", + "systems": [ + "systems" + ], + "xdph": "xdph" + }, + "locked": { + "lastModified": 1738192779, + "narHash": "sha256-NBOE/3axYuIDLPF0rI+yd006kKBQl+ItcK/4aBGw1Og=", + "owner": "hyprwm", + "repo": "Hyprland", + "rev": "75dff7205f6d2bd437abfb4196f700abee92581a", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "ref": "v0.47.1", + "repo": "Hyprland", + "type": "github" + } + }, + "hyprland-plugins": { + "inputs": { + "hyprland": [ + "hyprland" + ], + "nixpkgs": [ + "hyprland-plugins", + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland-plugins", + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1738966025, + "narHash": "sha256-MzgrF0jKlTNnNS33D8PwI5z2MJ1Tzf5MQVf/oms2pdw=", + "owner": "hyprwm", + "repo": "hyprland-plugins", + "rev": "4f48dbe12f3cbbeb4d31c91c67b21edbc5b4b451", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-plugins", + "type": "github" + } + }, + "hyprland-protocols": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1737556638, + "narHash": "sha256-laKgI3mr2qz6tas/q3tuGPxMdsGhBi/w+HO+hO2f1AY=", + "owner": "hyprwm", + "repo": "hyprland-protocols", + "rev": "4c75dd5c015c8a0e5a34c6d02a018a650f57feb5", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-protocols", + "type": "github" + } + }, + "hyprland-qt-support": { + "inputs": { + "hyprlang": "hyprlang", + "nixpkgs": [ + "hyprland", + "hyprland-qtutils", + "nixpkgs" + ], + "systems": [ + "hyprland", + "hyprland-qtutils", + "systems" + ] + }, + "locked": { + "lastModified": 1737634706, + "narHash": "sha256-nGCibkfsXz7ARx5R+SnisRtMq21IQIhazp6viBU8I/A=", + "owner": "hyprwm", + "repo": "hyprland-qt-support", + "rev": "8810df502cdee755993cb803eba7b23f189db795", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-qt-support", + "type": "github" + } + }, + "hyprland-qtutils": { + "inputs": { + "hyprland-qt-support": "hyprland-qt-support", + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1737811848, + "narHash": "sha256-WZ7LeiKHk5Y94MU5gHIWn0r8asWxYOvie4LqfCjVIZU=", + "owner": "hyprwm", + "repo": "hyprland-qtutils", + "rev": "9c0831ff98856c0f312fcb8b57553fbe3dd34d5b", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-qtutils", + "type": "github" + } + }, + "hyprlang": { + "inputs": { + "hyprutils": "hyprutils", + "nixpkgs": [ + "hyprland", + "hyprland-qtutils", + "hyprland-qt-support", + "nixpkgs" + ], + "systems": [ + "hyprland", + "hyprland-qtutils", + "hyprland-qt-support", + "systems" + ] + }, + "locked": { + "lastModified": 1737634606, + "narHash": "sha256-W7W87Cv6wqZ9PHegI6rH1+ve3zJPiyevMFf0/HwdbCQ=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "f41271d35cc0f370d300413d756c2677f386af9d", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprlang_2": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1737634606, + "narHash": "sha256-W7W87Cv6wqZ9PHegI6rH1+ve3zJPiyevMFf0/HwdbCQ=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "f41271d35cc0f370d300413d756c2677f386af9d", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprsplit": { + "inputs": { + "hyprland": [ + "hyprland" + ] + }, + "locked": { + "lastModified": 1738615843, + "narHash": "sha256-g3yq1TNLc3HIMXqs2wY9kUgDYsN8GHhc77wIOXjyn6E=", + "owner": "shezdy", + "repo": "hyprsplit", + "rev": "622fbb49e4caeec8c4196e9f8be8489b00263a83", + "type": "github" + }, + "original": { + "owner": "shezdy", + "ref": "v0.47.1", + "repo": "hyprsplit", + "type": "github" + } + }, + "hyprtasking": { + "inputs": { + "hyprland": [ + "hyprland" + ], + "nixpkgs": [ + "hyprtasking", + "hyprland", + "nixpkgs" + ], + "systems": [ + "systems" + ] + }, + "locked": { + "lastModified": 1741076329, + "narHash": "sha256-EiL/2wfTjUBuoUZ4TOat/dU2fCKbK3t/q6lTKdeZc20=", + "owner": "raybbian", + "repo": "hyprtasking", + "rev": "866abe4d617187ddbeba805467c85605f0fcf2d2", + "type": "github" + }, + "original": { + "owner": "raybbian", + "repo": "hyprtasking", + "type": "github" + } + }, + "hyprutils": { + "inputs": { + "nixpkgs": [ + "hyprland", + "hyprland-qtutils", + "hyprland-qt-support", + "hyprlang", + "nixpkgs" + ], + "systems": [ + "hyprland", + "hyprland-qtutils", + "hyprland-qt-support", + "hyprlang", + "systems" + ] + }, + "locked": { + "lastModified": 1737632363, + "narHash": "sha256-X9I8POSlHxBVjD0fiX1O2j7U9Zi1+4rIkrsyHP0uHXY=", + "owner": "hyprwm", + "repo": "hyprutils", + "rev": "006620eb29d54ea9086538891404c78563d1bae1", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprutils", + "type": "github" + } + }, + "hyprutils_2": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1737725508, + "narHash": "sha256-jGmcPc6y/prg/4A8KGYqJ27nSPaProCMiFadaxNAKvA=", + "owner": "hyprwm", + "repo": "hyprutils", + "rev": "fb0c2d1de3d1ef7396d19c18ac09e12bd956929e", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprutils", + "type": "github" + } + }, + "hyprwayland-scanner": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1735493474, + "narHash": "sha256-fktzv4NaqKm94VAkAoVqO/nqQlw+X0/tJJNAeCSfzK4=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "de913476b59ee88685fdc018e77b8f6637a2ae0b", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, "impermanence": { "locked": { "lastModified": 1737831083, @@ -536,6 +1025,29 @@ "type": "github" } }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat_2", + "gitignore": "gitignore_2", + "nixpkgs": [ + "hyprland", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1737465171, + "narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, "pre-commit-hooks-nix": { "inputs": { "flake-compat": [ @@ -595,6 +1107,11 @@ "generators": "generators", "hardware": "hardware", "home-manager": "home-manager", + "hyprdark": "hyprdark", + "hyprland": "hyprland", + "hyprland-plugins": "hyprland-plugins", + "hyprsplit": "hyprsplit", + "hyprtasking": "hyprtasking", "impermanence": "impermanence", "index": "index", "nixpkgs": [ @@ -704,7 +1221,7 @@ "base16-helix": "base16-helix", "base16-vim": "base16-vim", "firefox-gnome-theme": "firefox-gnome-theme", - "flake-compat": "flake-compat_2", + "flake-compat": "flake-compat_3", "flake-utils": [ "utils" ], @@ -876,7 +1393,7 @@ }, "vscode": { "inputs": { - "flake-compat": "flake-compat_3", + "flake-compat": "flake-compat_4", "flake-utils": [ "utils" ], @@ -918,7 +1435,7 @@ }, "windows": { "inputs": { - "flake-compat": "flake-compat_4", + "flake-compat": "flake-compat_5", "nixpkgs": [ "unstable" ] @@ -936,6 +1453,47 @@ "repo": "erosanix", "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": 1737634991, + "narHash": "sha256-dBAnb7Kbnier30cA7AgxVSxxARmxKZ1vHZT33THSIr8=", + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "rev": "e09dfe2726c8008f983e45a0aa1a3b7416aaeb8a", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix @@ -23,10 +23,10 @@ # Author -> V 7 <maydayv7@gmail.com> # # License -> MIT # # URL -> github:maydayv7/dotfiles # -# Version -> v25 # +# Version -> NEXT # # --------------------------------------- # # Welcome to Ground Zero! # -# The Very Heart of my 'dotfiles' # +# The very heart of my 'dotfiles' # ############################################### { description = '' @@ -140,6 +140,41 @@ }; }; + # Hyprland + hyprland = { + url = "github:hyprwm/Hyprland?ref=v0.47.1"; + inputs = { + nixpkgs.follows = "stable"; + systems.follows = "systems"; + }; + }; + + hyprland-plugins = { + url = "github:hyprwm/hyprland-plugins"; + inputs.hyprland.follows = "hyprland"; + }; + + hyprdark = { + url = "github:micha4w/Hypr-DarkWindow?ref=v0.47.1"; + inputs = { + hyprland.follows = "hyprland"; + nix-filter.follows = "filters"; + }; + }; + + hyprsplit = { + url = "github:shezdy/hyprsplit?ref=v0.47.1"; + inputs.hyprland.follows = "hyprland"; + }; + + hyprtasking = { + url = "github:raybbian/hyprtasking"; + inputs = { + hyprland.follows = "hyprland"; + systems.follows = "systems"; + }; + }; + # Declarative Flatpak Wrapper flatpak.url = "github:gmodena/nix-flatpak?ref=latest"; diff --git a/modules/gui/desktop/hyprland/apps/security.nix b/modules/gui/desktop/hyprland/apps/security.nix @@ -71,8 +71,8 @@ in { resumeCommand = "${dpms} on"; } { - timeout = 500; # Suspend then Hibernate device - command = audio "${dpms} on && ${lock "" ""} && ${getExe' pkgs.systemd "systemctl"} suspend-then-hibernate"; + timeout = 500; # Suspend device + command = audio "${dpms} on && ${lock "" ""} && ${getExe' pkgs.systemd "systemctl"} suspend"; } ]; }; diff --git a/modules/gui/desktop/hyprland/apps/settings.nix b/modules/gui/desktop/hyprland/apps/settings.nix @@ -133,6 +133,7 @@ ]) [ "pinentry-" "gay.vaskel.Soteria" + "gcr-prompter" ]) ++ (builtins.map (title: [ # Dialogs diff --git a/modules/gui/desktop/hyprland/apps/utilities.nix b/modules/gui/desktop/hyprland/apps/utilities.nix @@ -31,7 +31,7 @@ in { hyprkeys hyprshade pavucontrol - pyprland + unstable.pyprland slurp wev wl-clipboard diff --git a/modules/gui/desktop/hyprland/default.nix b/modules/gui/desktop/hyprland/default.nix @@ -3,11 +3,10 @@ lib, util, pkgs, - files, ... } @ args: let inherit (config.gui) desktop; - inherit (lib) getExe mkForce mkIf mkMerge replaceStrings; + inherit (lib) mkForce mkIf mkMerge; theme = import ./theme.nix pkgs; in { ## Hyprland Configuration ## @@ -18,7 +17,7 @@ in { (util.map.modules.list ./apps)) ++ [ ## Environment Setup - rec { + { gui = { xorg.enable = false; wayland.enable = true; @@ -34,13 +33,15 @@ in { enable = true; withUWSM = true; xwayland.enable = true; - package = pkgs.hyprland; + package = pkgs.hyprworld.hyprland; + portalPackage = pkgs.hyprworld.xdg-desktop-portal-hyprland; }; # Login regreet = { enable = true; package = pkgs.greetd.regreet; + cageArgs = ["-s" "-m" "last"]; settings.commands = { reboot = ["systemctl" "reboot"]; poweroff = ["systemctl" "poweroff"]; @@ -48,23 +49,11 @@ in { }; }; - services = { - # Session - xserver.desktopManager.runXdgAutostartIfNone = true; - - # Greeter - greetd.settings.default_session.command = with programs; - mkForce "${getExe hyprland.package} --config ${ - pkgs.writeText "greeter.conf" - (replaceStrings ["@greeter"] [(getExe regreet.package)] - (util.build.theme { - inherit (config.lib.stylix) colors; - file = files.hyprland.greeter; - })) - } &> /dev/null"; - }; + # Session + services.xserver.desktopManager.runXdgAutostartIfNone = true; } { + # Greeter environment.persist.directories = ["/var/cache/regreet"]; stylix.targets.regreet.enable = true; programs.regreet = { diff --git a/modules/gui/desktop/hyprland/settings/default.nix b/modules/gui/desktop/hyprland/settings/default.nix @@ -4,7 +4,7 @@ util, ... }: let - inherit (lib) mkForce mkIf; + inherit (lib) mkForce mkIf optionals; inherit (sys.gui) display fancy; inherit (sys.lib.stylix.colors) base03 base0A base0D; in { @@ -21,10 +21,13 @@ in { ''; settings = { - debug = { - disable_logs = false; - error_position = 1; - }; + # GPU Support + env = + ["AQ_DRM_DEVICES, /dev/dri/card1:/dev/dri/card0"] + ++ optionals (builtins.elem "nvidia" sys.services.xserver.videoDrivers) [ + "LIBVA_DRIVER_NAME, nvidia" + "__GLX_VENDOR_LIBRARY_NAME, nvidia" + ]; # Display monitor = ", preferred, auto, 1"; @@ -83,11 +86,12 @@ in { }; misc = { + disable_autoreload = false; # Enable configuration Polling enable_swallow = true; # Window Swallowing - focus_on_activate = true; - disable_autoreload = false; # Enable configuration Polling + focus_on_activate = true; initial_workspace_tracking = 1; + middle_click_paste = false; new_window_takes_over_fullscreen = 2; # Interfere with wallpaper daemons @@ -103,28 +107,25 @@ in { explicit_sync = 2; }; - general = - { - allow_tearing = !fancy; - resize_on_border = true; - - # Floating Layout - snap = { - enabled = true; - window_gap = 15; - monitor_gap = 10; - border_overlap = true; - }; - } - // - # Visuals - { - gaps_in = 5; - gaps_out = 5; - border_size = 2; - "col.active_border" = mkForce "rgb(${base0D}) rgb(${base0A}) 90deg"; + general = { + allow_tearing = !fancy; + resize_on_border = true; + + # Floating Layout + snap = { + enabled = true; + window_gap = 15; + monitor_gap = 10; + border_overlap = true; }; + # Visuals + gaps_in = 5; + gaps_out = 5; + border_size = 2; + "col.active_border" = mkForce "rgb(${base0D}) rgb(${base0A}) 90deg"; + }; + group = let active = "rgb(${base0A}) rgb(${base0D}) 90deg"; inactive = "rgb(${base03}) rgb(${base0D}) 90deg"; @@ -198,6 +199,16 @@ in { passes = 2; }; }; + + debug = { + disable_logs = false; + error_position = 1; + }; + + ecosystem = { + no_update_news = true; + no_donation_nag = true; + }; }; }; } diff --git a/modules/gui/desktop/hyprland/settings/keybindings.nix b/modules/gui/desktop/hyprland/settings/keybindings.nix @@ -11,8 +11,8 @@ bind = [ # Compositor Commands - "$mod, Q, killactive," "ALT, F4, killactive," + "$mod SHIFT, Q, forcekillactive," "$mod, P, pin" "$mod, E, fullscreen, 1" "$mod SHIFT, E, fullscreen," @@ -27,6 +27,12 @@ "ALT, A, focusurgentorlast" "ALT, A, alterzorder, top" + # Window Switcher + "ALT, Tab, cyclenext," + "ALT, Tab, bringactivetotop," + "ALT SHIFT, Tab, cyclenext, prev" + "ALT SHIFT, Tab, bringactivetotop," + # Window Swap "$mod SHIFT, left, swapwindow, l" "$mod SHIFT, right, swapwindow, r" diff --git a/modules/gui/desktop/hyprland/settings/plugins.nix b/modules/gui/desktop/hyprland/settings/plugins.nix @@ -6,60 +6,33 @@ }: { ## Plugin Settings wayland.windowManager.hyprland = { - plugins = with pkgs.hyprlandPlugins; - [hyprexpo hyprspace hyprsplit] - ++ (with pkgs.custom; [ - hycov - hyprdark - ]); + plugins = with pkgs.hyprworld; [ + Hypr-DarkWindow + hyprsplit + hyprtasking + ]; settings = { - plugin = with sys.lib.stylix.colors; let - gaps = - builtins.toString - config.wayland.windowManager.hyprland.settings.general.gaps_in; + plugin = let + inherit (config.wayland.windowManager.hyprland.settings) general; in { - # Expose - hyprexpo = { - columns = 3; - gap_size = gaps; - bg_col = "rgb(${base00})"; - workspace_method = "first 1"; - enable_gesture = true; - gesture_positive = false; - gesture_fingers = 4; - }; - - # Application Overview - hycov = { - enable_hotarea = 0; - hotarea_pos = 3; - only_active_workspace = 1; - overview_gappi = 24; - overview_gappo = 60; - enable_gesture = 0; - enable_alt_release_exit = 1; - alt_replace_key = "Alt_L"; - alt_toggle_auto_next = 1; - enable_click_action = 1; - }; - - # Workspace Overview - overview = { - autoDrag = true; - dragAlpha = 0.4; - exitOnClick = true; - centerAligned = true; - hideTopLayers = true; - hideOverlayLayers = false; - showNewWorkspace = false; - showEmptyWorkspace = true; - overrideGaps = true; - gapsIn = gaps; - gapsOut = gaps; - panelBorderWidth = 0; - panelBorderColor = "rgb(${base0A})"; - workspaceActiveBorder = "rgb(${base0D})"; + # Overview + hyprtasking = { + layout = "grid"; + inherit (general) border_size; + gap_size = general.gaps_in; + exit_behavior = "interacted"; + bg_color = "0x${sys.lib.stylix.colors.base00-hex}"; + gestures = { + enabled = true; + open_fingers = 3; + open_positive = true; + }; + + grid = { + rows = 3; + cols = 3; + }; }; # Split Monitor Workspaces @@ -67,24 +40,14 @@ }; bind = [ - # Expose - "$mod, grave, hyprexpo:expo, toggle" + # Overview + "$mod, Tab, hyprtasking:toggle, cursor" + "$mod SHIFT, Tab, hyprtasking:toggle, all" + "$mod, Q, hyprtasking:killhovered" # Compositor Shaders "$mod, S, exec, hyprutils toggle shader" "$mod SHIFT, S, invertactivewindow" - - # Application Overview - "ALT, Tab, hycov:toggleoverview" - "ALT SHIFT, Tab, hycov:toggleoverview, forceall" - "ALT, left, hycov:movefocus, l" - "ALT, right, hycov:movefocus, r" - "ALT, up, hycov:movefocus, u" - "ALT, down, hycov:movefocus, d" - - # Workspace Overview - "$mod, Tab, overview:toggle" - "$mod SHIFT, Tab, overview:toggle, all" ]; }; }; diff --git a/packages/firefox-elementary/metadata.nix b/packages/firefox-elementary/metadata.nix @@ -1,6 +1,6 @@ { repo = "https://github.com/Zonnev/elementaryos-firefox-theme"; branch = "elementaryos-firefox-theme"; - rev = "3ba928be661d6005640debd5ea6101f1110cb716"; - sha256 = "sha256-HHe78taspqIpHJcvRyEYxh22Lj8NYVMyfx/wQZMIS+g="; + rev = "2efc46c00a474f2db5ca9b2c18e32839aff7664d"; + sha256 = "sha256-2g2kAVD1nlACFofXZpNFK4T/odl901GjtKMVyLQ/NGQ="; } diff --git a/packages/flake.nix b/packages/flake.nix @@ -37,6 +37,13 @@ in { code = vscode.extensions."${system}"; gaming = gaming.packages."${system}"; wine = windows.packages."${system}"; + hyprworld = + hyprland.packages."${system}" + // hyprland-plugins.packages."${system}" + // hyprdark.packages."${system}" + // hyprsplit.packages."${system}" + // hyprtasking.packages."${system}" + // {inherit (hyprland.inputs.nixpkgs.legacyPackages."${system}") mesa;}; }) ]; in { diff --git a/packages/hycov/default.nix b/packages/hycov/default.nix @@ -1,29 +0,0 @@ -{ - lib, - pkgs, - ... -}: -with pkgs; let - metadata = import ./metadata.nix; -in - gcc13Stdenv.mkDerivation rec { - pname = "hycov"; - version = metadata.rev; - - src = fetchFromGitHub { - owner = "bighu630"; - repo = pname; - inherit (metadata) rev sha256; - }; - - inherit (hyprland) nativeBuildInputs; - buildInputs = [hyprland.dev] ++ hyprland.buildInputs; - - meta = with lib; { - homepage = metadata.repo; - description = "Hyprland Plugin for application overview"; - license = licenses.mit; - platforms = platforms.linux; - maintainers = ["maydayv7"]; - }; - } diff --git a/packages/hycov/metadata.nix b/packages/hycov/metadata.nix @@ -1,6 +0,0 @@ -{ - repo = "https://github.com/bighu630/hycov"; - release = true; - rev = "v0.45.0"; - sha256 = "sha256-X5D8oqCnZBrDTmseUGYYQq6vfPeyyksdG4Mj7XYYNpg="; -} diff --git a/packages/hyprdark/default.nix b/packages/hyprdark/default.nix @@ -1,33 +0,0 @@ -{ - lib, - pkgs, - ... -}: -with pkgs; let - metadata = import ./metadata.nix; -in - gcc13Stdenv.mkDerivation rec { - pname = "Hypr-DarkWindow"; - version = metadata.rev; - - src = fetchFromGitHub { - owner = "micha4w"; - repo = pname; - inherit (metadata) rev sha256; - }; - - nativeBuildInputs = [pkg-config]; - buildInputs = [hyprland.dev] ++ hyprland.buildInputs; - installPhase = '' - mkdir -p $out/lib - install ./out/hypr-darkwindow.so $out/lib/libHypr-DarkWindow.so - ''; - - meta = with lib; { - homepage = metadata.repo; - description = "Hyprland Plugin to invert the colors of specific windows"; - license = licenses.mit; - platforms = platforms.linux; - maintainers = ["maydayv7"]; - }; - } diff --git a/packages/hyprdark/metadata.nix b/packages/hyprdark/metadata.nix @@ -1,6 +0,0 @@ -{ - repo = "https://github.com/micha4w/Hypr-DarkWindow"; - release = true; - rev = "v0.45.0"; - sha256 = "sha256-jmtwH8t1GRsNpkKFu1WJR1rZ15ejmcdDe+zwenjzo7U="; -} diff --git a/packages/hyprshellevents/default.nix b/packages/hyprshellevents/default.nix @@ -22,7 +22,7 @@ in nativeBuildInputs = [makeWrapper]; postInstall = '' wrapProgram $out/bin/shellevents --prefix PATH ':' \ - "${lib.makeBinPath [coreutils hyprland]}" + "${lib.makeBinPath [coreutils hyprworld.hyprland]}" ''; meta = with lib; { diff --git a/packages/hyprshellevents/metadata.nix b/packages/hyprshellevents/metadata.nix @@ -1,5 +1,5 @@ { repo = "https://github.com/hyprwm/contrib"; - rev = "d449f6e1fc31084437ebc0c45057ee656f593efd"; - sha256 = "sha256-8ytokHHcKusbspRaiGP38s7fHU105JRvO9GRTzcRklg="; + rev = "0e40ccfc2d6772f9b7d5e1b50c56fb5e468a18fb"; + sha256 = "sha256-inSG4OUSdCHXSJZhLNcCUA1s0Ebomr5+v4x3FE/XQ3M="; }