dotfiles

My PC Dotfiles & Website
commit 8811237b16fafde0f8351f1a327635ede5ce9542
parent c70668edbd1de76f3ec320a652e37c35b6e7c664
Author: maydayv7 <maydayv7@gmail.com>
Date:   Sun, 18 Jan 2026 16:21:19 +0530

feat: Update Hyprland to v0.53

Diffstat:

MCHANGELOG.md | 1+
MREADME.md | 4+---
Mdevices/valkyrie/default.nix | 2+-
Mfiles/hyprland/greeter.conf | 3+--
Mfiles/hyprland/theme/hyprshell.css | 1+
Mfiles/vscode/settings.json | 1+
Mflake.lock | 600+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Mflake.nix | 42+++++++++++++++++++++++++++++++++++++++++-
Mmodules/apps/firefox.nix | 2+-
Mmodules/gui/desktop/hyprland/apps/launcher.nix | 102++++++++++++++++++++++++++++++++++++++++++++-----------------------------------
Mmodules/gui/desktop/hyprland/apps/utilities.nix | 2+-
Mmodules/gui/desktop/hyprland/default.nix | 7++++---
Mmodules/gui/desktop/hyprland/settings/apps.nix | 118+++++++++++++++++++++++++++++--------------------------------------------------
Mmodules/gui/desktop/hyprland/settings/default.nix | 11+++++------
Mmodules/gui/desktop/hyprland/settings/plugins.nix | 4++--
Mmodules/gui/desktop/install.nix | 2+-
Mmodules/shell/default.nix | 68+++++++++++++++++++++++++++++++++-----------------------------------
Mpackages/flake.nix | 5+++++
Apackages/patches/pyprland.patch | 39+++++++++++++++++++++++++++++++++++++++
Mscripts/hyprutils.nix | 5+++--
Msite/default.nix | 8++++++++
Msite/flake.nix | 4++--
Msite/git/default.nix | 149+++++++++++++++++++++++++++++++++++++++++++------------------------------------
23 files changed, 924 insertions(+), 256 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md @@ -2,6 +2,7 @@ ### January +- Update Hyprland to v0.53 - Update mimetypes - Refactor `apps` - Add `internet`, `tools`, `stream` diff --git a/README.md b/README.md @@ -462,9 +462,7 @@ The system `config` can be accessed using the `sys` parameter in `home-manager` - Remove `pkgs.custom.copyous` after [merge](https://github.com/NixOS/nixpkgs/pull/469919) - Update Niri Configuration after [merge](https://github.com/sodiboo/niri-flake/pull/1548) -- Inputs: - - Update `minecraft` after [merge](https://github.com/Infinidoge/nix-minecraft/pull/161) - - Update `catppuccin` after release branch-off +- Update `minecraft` after [merge](https://github.com/Infinidoge/nix-minecraft/pull/161) </details> diff --git a/devices/valkyrie/default.nix b/devices/valkyrie/default.nix @@ -84,7 +84,7 @@ }; gui = { - desktop = "niri"; + desktop = "hyprland"; display = "eDP-1"; wallpaper = "Quasar"; fancy = true; diff --git a/files/hyprland/greeter.conf b/files/hyprland/greeter.conf @@ -1,7 +1,6 @@ exec-once = @greeter; hyprctl dispatch exit -windowrule = fullscreen, class:^(.*)$ -windowrule = stayfocused, class:^(.*)$ +windowrule = fullscreen on, stay_focused on, match:class ^(.*)$ monitor = , preferred, auto, 1 animations:enabled = false diff --git a/files/hyprland/theme/hyprshell.css b/files/hyprland/theme/hyprshell.css @@ -1,6 +1,7 @@ :root { --text-color: #@white; --bg-color: alpha(#@base00, 0.5); + --bg-window-color: alpha(#@base00, 0.7); --bg-color-active: rgba(255, 255, 255, 0.2); --bg-color-hover: rgba(255, 255, 255, 0.4); --border-radius: 10px; diff --git a/files/vscode/settings.json b/files/vscode/settings.json @@ -1,4 +1,5 @@ { + "chat.disableAIFeatures": true, "editor.cursorBlinking": "expand", "editor.cursorSmoothCaretAnimation": "on", "editor.cursorStyle": "line-thin", 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": 1765900596, + "narHash": "sha256-+hn8v9jkkLP9m+o0Nm5SiEq10W0iWDSotH2XfjU45fA=", + "owner": "hyprwm", + "repo": "aquamarine", + "rev": "d83c97f8f5c0aae553c1489c7d9eff3eadcadace", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "aquamarine", + "type": "github" + } + }, "base16": { "inputs": { "fromYaml": "fromYaml" @@ -103,15 +136,16 @@ ] }, "locked": { - "lastModified": 1765990358, - "narHash": "sha256-l8x0gU8mnYaGMl+gWrsSHKBJlZWD8KXJfHTkRlFiPI0=", + "lastModified": 1768256610, + "narHash": "sha256-IyL6nZo242nDLoLQVwkqAZXp8FO5kBfjL6Fuh+gZO10=", "owner": "catppuccin", "repo": "nix", - "rev": "de1b60ca45a578f59f7d84c8d338b346017b2161", + "rev": "0734ad8c91342df34f1a1e5c183d053d70ba87c7", "type": "github" }, "original": { "owner": "catppuccin", + "ref": "release-25.11", "repo": "nix", "type": "github" } @@ -131,6 +165,21 @@ "type": "github" } }, + "crane_2": { + "locked": { + "lastModified": 1767461147, + "narHash": "sha256-TH/xTeq/RI+DOzo+c+4F431eVuBpYVwQwBxzURe7kcI=", + "owner": "ipetkov", + "repo": "crane", + "rev": "7d59256814085fd9666a2ae3e774dc5ee216b630", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, "filters": { "locked": { "lastModified": 1757882181, @@ -181,6 +230,22 @@ "flake-compat_2": { "flake": false, "locked": { + "lastModified": 1761588595, + "narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_3": { + "flake": false, + "locked": { "lastModified": 1747046372, "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", "owner": "edolstra", @@ -194,7 +259,7 @@ "type": "github" } }, - "flake-compat_3": { + "flake-compat_4": { "locked": { "lastModified": 1733328505, "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", @@ -208,7 +273,7 @@ "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" } }, - "flake-compat_4": { + "flake-compat_5": { "flake": false, "locked": { "lastModified": 1673956053, @@ -339,6 +404,28 @@ "type": "github" } }, + "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" + } + }, "gnome-shell": { "flake": false, "locked": { @@ -394,6 +481,434 @@ "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" + } + }, + "hyprcursors": { + "inputs": { + "hyprland": [ + "hyprland" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1766947518, + "narHash": "sha256-DbwPyVo9zoMMg0F3KkPalcLaGi5xyUsbc7Xg1kYHYxA=", + "owner": "VirtCode", + "repo": "hypr-dynamic-cursors", + "rev": "7e9b7bc9fbcbb2f7f8985ec1f435b43021609639", + "type": "github" + }, + "original": { + "owner": "VirtCode", + "repo": "hypr-dynamic-cursors", + "type": "github" + } + }, + "hyprgraphics": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1763733840, + "narHash": "sha256-JnET78yl5RvpGuDQy3rCycOCkiKoLr5DN1fPhRNNMco=", + "owner": "hyprwm", + "repo": "hyprgraphics", + "rev": "8f1bec691b2d198c60cccabca7a94add2df4ed1a", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprgraphics", + "type": "github" + } + }, + "hyprland": { + "inputs": { + "aquamarine": "aquamarine", + "hyprcursor": "hyprcursor", + "hyprgraphics": "hyprgraphics", + "hyprland-guiutils": "hyprland-guiutils", + "hyprland-protocols": "hyprland-protocols", + "hyprlang": "hyprlang", + "hyprutils": "hyprutils", + "hyprwayland-scanner": "hyprwayland-scanner", + "hyprwire": "hyprwire", + "nixpkgs": [ + "nixpkgs" + ], + "pre-commit-hooks": "pre-commit-hooks", + "systems": [ + "systems" + ], + "xdph": "xdph" + }, + "locked": { + "lastModified": 1767388857, + "narHash": "sha256-h70Tlpce8NEkwWqw/DDpeOKPzPyfq7P2t0HtGM5Z3Cw=", + "owner": "hyprwm", + "repo": "Hyprland", + "rev": "ab1d80f3d6aebd57a0971b53a1993b1c1dfe0b09", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "ref": "v0.53.1", + "repo": "Hyprland", + "type": "github" + } + }, + "hyprland-guiutils": { + "inputs": { + "aquamarine": [ + "hyprland", + "aquamarine" + ], + "hyprgraphics": [ + "hyprland", + "hyprgraphics" + ], + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprtoolkit": "hyprtoolkit", + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1765643131, + "narHash": "sha256-CCGohW5EBIRy4B7vTyBMqPgsNcaNenVad/wszfddET0=", + "owner": "hyprwm", + "repo": "hyprland-guiutils", + "rev": "e50ae912813bdfa8372d62daf454f48d6df02297", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-guiutils", + "type": "github" + } + }, + "hyprland-protocols": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1765214753, + "narHash": "sha256-P9zdGXOzToJJgu5sVjv7oeOGPIIwrd9hAUAP3PsmBBs=", + "owner": "hyprwm", + "repo": "hyprland-protocols", + "rev": "3f3860b869014c00e8b9e0528c7b4ddc335c21ab", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-protocols", + "type": "github" + } + }, + "hyprlang": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1764612430, + "narHash": "sha256-54ltTSbI6W+qYGMchAgCR6QnC1kOdKXN6X6pJhOWxFg=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "0d00dc118981531aa731150b6ea551ef037acddd", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprplugins": { + "inputs": { + "hyprland": [ + "hyprland" + ], + "nixpkgs": [ + "hyprplugins", + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprplugins", + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1767020608, + "narHash": "sha256-BSRT1Uu1ot4WfMfZc6KW0nwpmt2xl9wpUqmH/JoMTfk=", + "owner": "hyprwm", + "repo": "hyprland-plugins", + "rev": "d7b67e8f4ba8ebeee4ce899348fcee6291512169", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "ref": "v0.53.0", + "repo": "hyprland-plugins", + "type": "github" + } + }, + "hyprshell": { + "inputs": { + "crane": "crane_2", + "flake-parts": [ + "framework" + ], + "home-manager": [ + "home" + ], + "hyprland": [ + "hyprland" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1767665436, + "narHash": "sha256-1nt+/cAtIsS/3O790W2aMUuPiMV6JEjC334Sw0SD804=", + "owner": "H3rmt", + "repo": "hyprshell", + "rev": "281fbc13fd7f0954863d92ab3396ca46829698a1", + "type": "github" + }, + "original": { + "owner": "H3rmt", + "repo": "hyprshell", + "type": "github" + } + }, + "hyprsplit": { + "inputs": { + "hyprland": [ + "hyprland" + ] + }, + "locked": { + "lastModified": 1768396925, + "narHash": "sha256-epENXiSirFXGqmPvLTy/hGSZp3DeB7OFKlEAlMI9uTE=", + "owner": "maydayv7", + "repo": "hyprsplit", + "rev": "ce791d57182c1cfa1651f7070beec4f346efff4f", + "type": "github" + }, + "original": { + "owner": "maydayv7", + "repo": "hyprsplit", + "type": "github" + } + }, + "hyprtoolkit": { + "inputs": { + "aquamarine": [ + "hyprland", + "hyprland-guiutils", + "aquamarine" + ], + "hyprgraphics": [ + "hyprland", + "hyprland-guiutils", + "hyprgraphics" + ], + "hyprlang": [ + "hyprland", + "hyprland-guiutils", + "hyprlang" + ], + "hyprutils": [ + "hyprland", + "hyprland-guiutils", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprland-guiutils", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "hyprland-guiutils", + "nixpkgs" + ], + "systems": [ + "hyprland", + "hyprland-guiutils", + "systems" + ] + }, + "locked": { + "lastModified": 1764592794, + "narHash": "sha256-7CcO+wbTJ1L1NBQHierHzheQGPWwkIQug/w+fhTAVuU=", + "owner": "hyprwm", + "repo": "hyprtoolkit", + "rev": "5cfe0743f0e608e1462972303778d8a0859ee63e", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprtoolkit", + "type": "github" + } + }, + "hyprutils": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1766160771, + "narHash": "sha256-roINUGikWRqqgKrD4iotKbGj3ZKJl3hjMz5l/SyKrHw=", + "owner": "hyprwm", + "repo": "hyprutils", + "rev": "5ac060bfcf2f12b3a6381156ebbc13826a05b09f", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprutils", + "type": "github" + } + }, + "hyprwayland-scanner": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1763640274, + "narHash": "sha256-Uan1Nl9i4TF/kyFoHnTq1bd/rsWh4GAK/9/jDqLbY5A=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "f6cf414ca0e16a4d30198fd670ec86df3c89f671", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, + "hyprwire": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1766253200, + "narHash": "sha256-26qPwrd3od+xoYVywSB7hC2cz9ivN46VPLlrsXyGxvE=", + "owner": "hyprwm", + "repo": "hyprwire", + "rev": "1079777525b30a947c8d657fac158e00ae85de9d", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwire", + "type": "github" + } + }, "impermanence": { "locked": { "lastModified": 1737831083, @@ -431,7 +946,7 @@ }, "minecraft": { "inputs": { - "flake-compat": "flake-compat_2", + "flake-compat": "flake-compat_3", "flake-utils": [ "utils" ], @@ -515,7 +1030,7 @@ }, "nixcord": { "inputs": { - "flake-compat": "flake-compat_3", + "flake-compat": "flake-compat_4", "flake-parts": [ "framework" ], @@ -578,6 +1093,29 @@ "type": "github" } }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat_2", + "gitignore": "gitignore_2", + "nixpkgs": [ + "hyprland", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1765911976, + "narHash": "sha256-t3T/xm8zstHRLx+pIHxVpQTiySbKqcQbK+r+01XVKc0=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "b68b780b69702a090c8bb1b973bab13756cc7a27", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, "pre-commit-hooks-nix": { "inputs": { "flake-compat": [ @@ -636,6 +1174,11 @@ "gaming": "gaming", "hardware": "hardware", "home": "home", + "hyprcursors": "hyprcursors", + "hyprland": "hyprland", + "hyprplugins": "hyprplugins", + "hyprshell": "hyprshell", + "hyprsplit": "hyprsplit", "impermanence": "impermanence", "index": "index", "minecraft": "minecraft", @@ -988,7 +1531,7 @@ }, "windows": { "inputs": { - "flake-compat": "flake-compat_4", + "flake-compat": "flake-compat_5", "nixpkgs": [ "unstable" ] @@ -1007,6 +1550,47 @@ "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" + } + }, "xwayland-satellite-stable": { "flake": false, "locked": { diff --git a/flake.nix b/flake.nix @@ -180,7 +180,7 @@ # Catppuccin Theme catppuccin = { - url = "github:catppuccin/nix"; + url = "github:catppuccin/nix?ref=release-25.11"; inputs.nixpkgs.follows = "nixpkgs"; }; @@ -192,6 +192,46 @@ nixpkgs-stable.follows = "stable"; }; }; + + ## Hyprland + # Core + hyprland = { + url = "github:hyprwm/Hyprland?ref=v0.53.1"; + inputs = { + nixpkgs.follows = "nixpkgs"; + systems.follows = "systems"; + }; + }; + + # Plugins + hyprplugins = { + url = "github:hyprwm/hyprland-plugins?ref=v0.53.0"; + inputs.hyprland.follows = "hyprland"; + }; + + hyprsplit = { + url = "github:maydayv7/hyprsplit"; + inputs.hyprland.follows = "hyprland"; + }; + + hyprcursors = { + url = "github:VirtCode/hypr-dynamic-cursors"; + inputs = { + nixpkgs.follows = "nixpkgs"; + hyprland.follows = "hyprland"; + }; + }; + + # Launcher + hyprshell = { + url = "github:H3rmt/hyprshell"; + inputs = { + nixpkgs.follows = "nixpkgs"; + hyprland.follows = "hyprland"; + home-manager.follows = "home"; + flake-parts.follows = "framework"; + }; + }; }; ## Configuration ## diff --git a/modules/apps/firefox.nix b/modules/apps/firefox.nix @@ -14,7 +14,7 @@ in config = lib.mkIf enable { environment = { systemPackages = [ package ]; - sessionVariables.MOZ_USE_XINPUT2 = "1"; + sessionVariables."MOZ_USE_XINPUT2" = "1"; }; user = { diff --git a/modules/gui/desktop/hyprland/apps/launcher.nix b/modules/gui/desktop/hyprland/apps/launcher.nix @@ -1,7 +1,7 @@ { config, util, - pkgs, + inputs, files, ... }: @@ -13,57 +13,69 @@ ".cache/hyprshell" ]; - homeConfig.services.hyprshell = { - enable = true; - systemd.enable = true; - package = pkgs.unstable.hyprshell.override { hyprland = config.programs.hyprland.package; }; - style = util.build.theme { - inherit (config.lib.stylix) colors; - file = files.hyprland.hyprshell; - }; + homeConfig = { + imports = [ inputs.hyprshell.homeModules.default ]; + programs.hyprshell = { + enable = true; + systemd.enable = true; + styleFile = util.build.theme { + inherit (config.lib.stylix) colors; + file = files.hyprland.hyprshell; + }; - settings.windows = { - scale = 9.0; - items_per_row = 3; + settings.windows = { + enable = true; + scale = 9.0; + items_per_row = 3; - overview = { - modifier = "super"; - key = "tab"; + overview = { + enable = true; + modifier = "super"; + key = "tab"; - launcher = { - launch_modifier = "alt"; - default_terminal = "kitty"; - width = 700; - max_items = 4; - show_when_empty = true; - plugins = { - applications = { - run_cache_weeks = 4; - show_execs = true; - show_actions_submenu = true; + launcher = { + launch_modifier = "alt"; + default_terminal = "kitty"; + width = 700; + max_items = 4; + show_when_empty = true; + plugins = { + applications = { + run_cache_weeks = 4; + show_execs = true; + show_actions_submenu = true; + }; + calc.enable = true; + path.enable = true; + terminal.enable = true; + websearch.engines = [ + { + url = "https://www.google.com/search?q={}"; + name = "Google"; + key = "g"; + } + { + url = "https://en.wikipedia.org/wiki/Special:Search?search={}"; + name = "Wikipedia"; + key = "w"; + } + ]; }; - calc = { }; - path = { }; - terminal = { }; - websearch.engines = [ - { - url = "https://www.google.com/search?q={}"; - name = "Google"; - key = "g"; - } - { - url = "https://en.wikipedia.org/wiki/Special:Search?search={}"; - name = "Wikipedia"; - key = "w"; - } - ]; }; }; - }; - switch = { - modifier = "alt"; - filter_by = [ "current_workspace" ]; + switch = { + enable = true; + modifier = "alt"; + filter_by = [ "current_workspace" ]; + }; + + switch_2 = { + enable = true; + modifier = "alt"; + key = "grave"; + filter_by = [ "same_class" ]; + }; }; }; }; diff --git a/modules/gui/desktop/hyprland/apps/utilities.nix b/modules/gui/desktop/hyprland/apps/utilities.nix @@ -52,7 +52,7 @@ in } { time = "19:00"; - temperature = 4000; + temperature = 4500; } ]; }; diff --git a/modules/gui/desktop/hyprland/default.nix b/modules/gui/desktop/hyprland/default.nix @@ -9,6 +9,7 @@ let inherit (lib) getExe + getExe' mkForce mkIf mkMerge @@ -30,13 +31,13 @@ in enable = true; withUWSM = true; xwayland.enable = true; - package = pkgs.hyprland; - portalPackage = pkgs.xdg-desktop-portal-hyprland; + package = pkgs.hyprworld.hyprland; + portalPackage = pkgs.hyprworld.xdg-desktop-portal-hyprland; }; # Greeter services.greetd.settings.default_session.command = - mkForce "${getExe programs.hyprland.package} --config ${ + mkForce "${getExe' programs.hyprland.package "start-hyprland"} -- --config ${ pkgs.writeText "greeter.conf" ( replaceStrings [ "@greeter" ] [ (getExe config.programs.regreet.package) ] ( util.build.theme { diff --git a/modules/gui/desktop/hyprland/settings/apps.nix b/modules/gui/desktop/hyprland/settings/apps.nix @@ -92,100 +92,68 @@ in ## Layer Rules layerrule = [ - "noanim, ^(hyprpicker)$" - "dimaround, ^(hyprshell_overview)$" + "no_anim on, match:namespace ^(hyprpicker)$" + "dim_around on, match:namespace ^(hyprshell_overview)$" - "blur, ^(logout_dialog)$" - "animation fade, ^(logout_dialog)$" + "blur on, animation fade, match:namespace ^(logout_dialog)$" + "blur on, dim_around on, animation popin, match:namespace ^(nwg-drawer)$" - "blur, ^(nwg-drawer)$" - "dimaround, ^(nwg-drawer)$" - "animation popin, ^(nwg-drawer)$" + "blur on, ignore_alpha 0, animation slide right, match:namespace ^(swaync-control-center)$" + "blur on, ignore_alpha 0, animation slide right, match:namespace ^(swaync-notification-window)$" - "blur, ^(swaync-control-center)$" - "ignorealpha, ^(swaync-control-center)$" - "animation slide right, ^(swaync-control-center)$" - "blur, ^(swaync-notification-window)$" - "ignorealpha, ^(swaync-notification-window)$" - "animation slide right, ^(swaync-notification-window)$" - - "blur, ^(waybar)$" - "ignorealpha, ^(waybar)$" - - "blur, ^(wlclock)$" - "ignorealpha, ^(wlclock)$" + "blur on, ignore_alpha 0, match:namespace ^(waybar)$" + "blur on, ignore_alpha 0, match:namespace ^(wlclock)$" ]; ## Window Rules - windowrulev2 = flatten ( + windowrule = flatten ( [ # Settings - "stayfocused, class:^(gnome-control-center)$" + "stay_focused on, match:class ^(gnome-control-center)$" # Keybinds Viewer - "pin, title:^(Kebihelp)$" - "stayfocused, title:^(Kebihelp)$" - "opacity 0.9 override, title:^(Kebihelp)" + "pin on, stay_focused on, opacity 0.9 override, match:title ^(Kebihelp)$" # Browser Windows - "float, title:^(Picture-in-[P|p]icture)$" - "workspace special silent, title:^(Sharing Indicator)$" - "workspace special silent, title:^(.*is sharing (your screen|a window)\.)$" + "float on, match:title ^(Picture-in-[P|p]icture)$" + "workspace special silent, match:title ^(Sharing Indicator)$" + "workspace special silent, match:title ^(.*is sharing (your screen|a window).)$" # Media Consumption - "idleinhibit focus, class:^(mpv|.*celluloid.*|.+exe)$" - "idleinhibit focus, class:^(firefox|brave-browser)$, title:^(.*YouTube.*)$" - "idleinhibit fullscreen, class:^(firefox|brave-browser)$" + "idle_inhibit focus, match:class ^(mpv|.*celluloid.*|.+exe)$" + "idle_inhibit focus, match:class ^(firefox|brave-browser)$, match:title ^(.*YouTube.*)$" + "idle_inhibit fullscreen, match:class ^(firefox|brave-browser)$" # Screen Tearing - "immediate, class:^(.+exe)$" + "immediate on, match:class ^(.+exe)$" # Prompt Windows - "float, class:^(xdg-desktop-portal-gtk)" - "dimaround, class:^(xdg-desktop-portal-gtk)" + "float on, dim_around on, match:class ^(xdg-desktop-portal-gtk)$" ] - ++ (map - (class: [ - "pin, class:^(${class})" - "dimaround, class:^(${class})" - "stayfocused, class:^(${class})" - ]) - [ - "pinentry-" - "gay.vaskel.Soteria" - "gcr-prompter" - ] - ) - ++ (map - (class: [ - # Utilities - "float, class:^(${class})" - "pin, class:^(${class})" - "persistentsize, class:^(${class})" - ]) - [ - "com.saivert.pwvucontrol" - "io.github.kaii_lb.Overskride" - "nwg-displays" - "gnome-control-center" - "org.gnome.Settings" - ] - ) - ++ (map - (title: [ - # Dialogs - "float, title:^(${title})(.*)$" - ]) - [ - "Library" - "Open File" - "Open Folder" - "Save As" - "Save File" - "Select a File" - ".*Properties" - ] - ) + ++ (map (class: [ "pin on, dim_around on, stay_focused on, match:class ^(${class})$" ]) [ + # Authentication + "pinentry-" + "gay.vaskel.Soteria" + "gcr-prompter" + ]) + ++ (map (class: [ "float on, pin on, persistent_size on, match:class ^(${class})$" ]) [ + # Utilities + "com.saivert.pwvucontrol" + "io.github.kaii_lb.Overskride" + "nwg-displays" + "gnome-control-center" + "org.gnome.Settings" + ]) + ++ (map (title: [ "float on, match:title ^(${title})(.*)$" ]) [ + # Dialogs + "Library" + "Open File" + "Open Folder" + "Save As" + "Save File" + "Select a File" + ".*Properties" + ]) ); }; } diff --git a/modules/gui/desktop/hyprland/settings/default.nix b/modules/gui/desktop/hyprland/settings/default.nix @@ -62,7 +62,7 @@ in # Touchpad Gestures gestures = { workspace_swipe_use_r = false; - workspace_swipe_create_new = false; + workspace_swipe_create_new = true; }; # Cursor Settings @@ -86,10 +86,8 @@ in "f[1]s[false], gapsout:0, gapsin:0" ]; windowrule = [ - "bordersize 0, floating:0, onworkspace:w[tv1]s[false]" - "rounding 0, floating:0, onworkspace:w[tv1]s[false]" - "bordersize 0, floating:0, onworkspace:f[1]s[false]" - "rounding 0, floating:0, onworkspace:f[1]s[false]" + "border_size 0, rounding 0, match:float 0, match:workspace w[tv1]s[false]" + "border_size 0, rounding 0, match:float 0, match:workspace f[1]s[false]" ]; misc = { @@ -99,7 +97,7 @@ in focus_on_activate = true; initial_workspace_tracking = 1; middle_click_paste = false; - new_window_takes_over_fullscreen = 2; + on_focus_under_fullscreen = 2; # Interfere with wallpaper daemons force_default_wallpaper = 0; @@ -146,6 +144,7 @@ in enabled = true; scrolling = true; gradients = true; + blur = true; height = 15; render_titles = true; font_size = 10; diff --git a/modules/gui/desktop/hyprland/settings/plugins.nix b/modules/gui/desktop/hyprland/settings/plugins.nix @@ -7,10 +7,10 @@ { ## Plugin Settings wayland.windowManager.hyprland = { - plugins = with pkgs.hyprlandPlugins; [ - hyprsplit + plugins = with pkgs.hyprworld; [ hypr-dynamic-cursors hyprexpo + hyprsplit ]; settings = { diff --git a/modules/gui/desktop/install.nix b/modules/gui/desktop/install.nix @@ -13,7 +13,7 @@ let in { ## GNOME Configuration ## - config = mkIf (config.gui.desktop == "iso") (mkMerge [ + config = mkIf (config.gui.desktop == "install") (mkMerge [ (import ./gnome/common.nix args) { diff --git a/modules/shell/default.nix b/modules/shell/default.nix @@ -134,42 +134,40 @@ in ]; }; - homeConfig = { - programs = { - btop.enable = true; # Resource Monitor - hstr.enable = true; # Command History Browser - - # Eza Configuration - eza = { - enable = true; - colors = "auto"; - icons = "auto"; - git = true; - extraOptions = [ "--group-directories-first" ]; - }; + homeConfig.programs = { + btop.enable = true; # Resource Monitor + hstr.enable = true; # Command History Browser + + # File Lister + eza = { + enable = true; + colors = "auto"; + icons = "auto"; + git = true; + extraOptions = [ "--group-directories-first" ]; + }; - # Micro Configuration - micro = { - enable = true; - settings = { - autoindent = true; - backup = true; - clipboard = "external"; - cursorline = true; - eofnewline = false; - helpsplit = "vsplit"; - hltrailingws = true; - infobar = true; - matchbrace = true; - keymenu = true; - mouse = true; - reload = "prompt"; - ruler = true; - saveundo = true; - smartpaste = true; - statusline = true; - syntax = true; - }; + # Text Editor + micro = { + enable = true; + settings = { + autoindent = true; + backup = true; + clipboard = "external"; + cursorline = true; + eofnewline = false; + helpsplit = "vsplit"; + hltrailingws = true; + infobar = true; + matchbrace = true; + keymenu = true; + mouse = true; + reload = "prompt"; + ruler = true; + saveundo = true; + smartpaste = true; + statusline = true; + syntax = true; }; }; }; diff --git a/packages/flake.nix b/packages/flake.nix @@ -42,6 +42,11 @@ in wine = windows.packages."${system}"; winelib = windows.lib."${system}"; spicetify = spotify.legacyPackages."${system}"; + hyprworld = + hyprland.packages."${system}" + // hyprplugins.packages."${system}" + // hyprsplit.packages."${system}" + // hyprcursors.packages."${system}"; }) minecraft.overlay niri.overlays.niri diff --git a/packages/patches/pyprland.patch b/packages/patches/pyprland.patch @@ -0,0 +1,39 @@ +--- a/pkgs/by-name/py/pyprland/package.nix ++++ b/pkgs/by-name/py/pyprland/package.nix +@@ -1,14 +1,13 @@ + { + lib, + fetchFromGitHub, +- fetchpatch, + python3Packages, + nix-update-script, + }: + + python3Packages.buildPythonApplication rec { + pname = "pyprland"; +- version = "2.4.7"; ++ version = "2.6.1"; + format = "pyproject"; + + disabled = python3Packages.pythonOlder "3.10"; +@@ -17,19 +16,9 @@ python3Packages.buildPythonApplication rec { + owner = "hyprland-community"; + repo = "pyprland"; + tag = version; +- hash = "sha256-rtAw6tdZY0BKb6Qjk/LHYYMB9nCPzkmw95wdjhJ191s="; ++ hash = "sha256-GyAQ0RZOD+rYTaKJX9eYFb8zVBz/5fMyftrWTbH8fVE="; + }; + +- patches = [ +- # Remove this patch from versions higher than 2.4.7-17. +- # Fixes integration with pyprland 0.52.0+. +- (fetchpatch { +- url = "https://github.com/hyprland-community/pyprland/commit/21c0479a52df41f15bb798e28f67daab8b1ad0e3.patch"; +- hash = "sha256-QwEGdraSZmz9goCBTKQLArqQse1TP8b188uiIISshWc="; +- includes = [ "pyprland/plugins/pyprland.py" ]; +- }) +- ]; +- + nativeBuildInputs = with python3Packages; [ poetry-core ]; + + propagatedBuildInputs = with python3Packages; [ aiofiles ]; diff --git a/scripts/hyprutils.nix b/scripts/hyprutils.nix @@ -107,7 +107,7 @@ recursiveUpdate temperature_notification ;; "reset") - hyprctl hyprsunset reset temperature + hyprctl hyprsunset identity notify temperature -i "display" "🌡 Reset" ;; "") fail "Expected an Option" ;; @@ -154,7 +154,8 @@ recursiveUpdate keyword general:gaps_in 0;\ keyword general:gaps_out 0;\ keyword general:border_size 1;\ - keyword decoration:rounding 0" + keyword decoration:rounding 0;\ + keyword plugin:dynamic-cursors:enabled 0" exit fi hyprnotify 1 "Compositor Effects Enabled" diff --git a/site/default.nix b/site/default.nix @@ -1,12 +1,20 @@ { site ? null, + lib, pkgs, }: pkgs.stdenvNoCC.mkDerivation { pname = "website"; version = "stable"; src = ./.; + buildInputs = [ pkgs.zola ]; installPhase = "cp -r public $out"; buildPhase = "zola build ${if (site != null) then "--base-url " + site else ""}"; + + meta = with lib; { + description = "My Personal Website"; + license = licenses.gpl3Only; + maintainers = [ "maydayv7" ]; + }; } diff --git a/site/flake.nix b/site/flake.nix @@ -4,12 +4,12 @@ _: { { lib, pkgs, ... }: { # Website - packages.website = pkgs.callPackage ./. { inherit pkgs; }; + packages.website = pkgs.callPackage ./. { inherit lib pkgs; }; # 'git' Frontend apps.build-stagit = { type = "app"; - program = "${pkgs.callPackage ./git { inherit lib pkgs; }}/bin/build-stagit"; + program = lib.getExe (pkgs.callPackage ./git { inherit lib pkgs; }); }; # Development Shell diff --git a/site/git/default.nix b/site/git/default.nix @@ -6,93 +6,106 @@ test ? false, }: let + inherit (lib) concatMapStrings licenses recursiveUpdate; theme = import ./theme.nix pkgs; + buildCommands = if test then ''build_repo test "A long description just for testing" Me "$(pwd)"'' else - lib.concatMapStrings (repo: '' + concatMapStrings (repo: '' build_repo "${repo.name}" "${repo.description}" "${repo.owner}" "${repo.url}" '') (import ./repos.nix); in -pkgs.writeShellApplication { - name = "build-stagit"; - runtimeInputs = with pkgs; [ - coreutils - git - stagit-fork - ]; +recursiveUpdate + { + meta = { + mainProgram = "build-stagit"; + description = "Build 'git' frontend site"; + license = licenses.gpl3Only; + maintainers = [ "maydayv7" ]; + }; + } + ( + pkgs.writeShellApplication { + name = "build-stagit"; + runtimeInputs = with pkgs; [ + coreutils + git + stagit-fork + ]; - text = '' - set -e - echo "Building Site..." + text = '' + set -e + echo "Building Site..." - BASE_URL=${site} - OUTPUT_DIR="./public" - FONTS_SRC="./site/static/fonts" - FAVICON_SRC="./site/static/desktop.ico" + BASE_URL=${site} + OUTPUT_DIR="./public" + FONTS_SRC="./site/static/fonts" + FAVICON_SRC="./site/static/desktop.ico" - mkdir -p "$OUTPUT_DIR" - mkdir -p "$OUTPUT_DIR/fonts" + mkdir -p "$OUTPUT_DIR" + mkdir -p "$OUTPUT_DIR/fonts" - # 1. Global Assets - echo "Copying Global Assets..." + # 1. Global Assets + echo "Copying Global Assets..." - # Fonts - if [ -d "$FONTS_SRC" ] - then - cp "$FONTS_SRC"/* "$OUTPUT_DIR/fonts/" - else - echo "Warning: Fonts directory $FONTS_SRC not found." - fi + # Fonts + if [ -d "$FONTS_SRC" ] + then + cp "$FONTS_SRC"/* "$OUTPUT_DIR/fonts/" + else + echo "Warning: Fonts directory $FONTS_SRC not found." + fi - # Theme - cp "${theme.red}" "$OUTPUT_DIR/style-red.css" - cp "${theme.blue}" "$OUTPUT_DIR/style-blue.css" - cp "${theme.black}" "$OUTPUT_DIR/style-black.css" - ln -sf style-red.css "$OUTPUT_DIR/style.css" + # Theme + cp "${theme.red}" "$OUTPUT_DIR/style-red.css" + cp "${theme.blue}" "$OUTPUT_DIR/style-blue.css" + cp "${theme.black}" "$OUTPUT_DIR/style-black.css" + ln -sf style-red.css "$OUTPUT_DIR/style.css" - # Favicon - if [ -f "$FAVICON_SRC" ] - then - cp "$FAVICON_SRC" "$OUTPUT_DIR/favicon.png" - else - echo "Warning: Global favicon not found at $FAVICON_SRC" - fi + # Favicon + if [ -f "$FAVICON_SRC" ] + then + cp "$FAVICON_SRC" "$OUTPUT_DIR/favicon.png" + else + echo "Warning: Global favicon not found at $FAVICON_SRC" + fi - # 2. Build Setup - BUILD_ROOT=$(mktemp -d) - trap 'rm -rf "$BUILD_ROOT"' EXIT - build_repo() { - NAME=$1 - DESC=$2 - OWNER=$3 - URL=$4 + # 2. Build Setup + BUILD_ROOT=$(mktemp -d) + trap 'rm -rf "$BUILD_ROOT"' EXIT + build_repo() { + NAME=$1 + DESC=$2 + OWNER=$3 + URL=$4 - echo "---------------------------------------" - echo "Processing $NAME..." - REPO_DIR="$BUILD_ROOT/$NAME.git" - git clone --bare --filter=blob:limit=2m "$URL" "$REPO_DIR" + echo "---------------------------------------" + echo "Processing $NAME..." + REPO_DIR="$BUILD_ROOT/$NAME.git" + git clone --bare --filter=blob:limit=2m "$URL" "$REPO_DIR" - # Metadata - echo "$DESC" > "$REPO_DIR/description" - echo "$OWNER" > "$REPO_DIR/owner" - echo "$URL" > "$REPO_DIR/url" - mkdir -p "$OUTPUT_DIR/$NAME" - ln -sf ../favicon.png "$OUTPUT_DIR/$NAME/favicon.png" + # Metadata + echo "$DESC" > "$REPO_DIR/description" + echo "$OWNER" > "$REPO_DIR/owner" + echo "$URL" > "$REPO_DIR/url" + mkdir -p "$OUTPUT_DIR/$NAME" + ln -sf ../favicon.png "$OUTPUT_DIR/$NAME/favicon.png" - # Run Stagit - (cd "$OUTPUT_DIR/$NAME" && stagit -l 50 -n ${sitename} -u "$BASE_URL/$NAME" "$REPO_DIR") - echo "---------------------------------------" - } + # Run Stagit + (cd "$OUTPUT_DIR/$NAME" && stagit -l 50 -n ${sitename} -u "$BASE_URL/$NAME" "$REPO_DIR") + echo "---------------------------------------" + } - # 3. Execute Builds - ${buildCommands} + # 3. Execute Builds + ${buildCommands} - # 4. Generate Index - echo "Generating Index..." - stagit-index -n ${sitename} "$BUILD_ROOT"/*.git > "$OUTPUT_DIR/index.html" + # 4. Generate Index + echo "Generating Index..." + stagit-index -n ${sitename} "$BUILD_ROOT"/*.git > "$OUTPUT_DIR/index.html" - echo "Successfully built to $OUTPUT_DIR!" - ''; -} + echo "Successfully built to $OUTPUT_DIR!" + ''; + } + )