diff --git a/flake.lock b/flake.lock index 3643c52..3eb22f7 100644 --- a/flake.lock +++ b/flake.lock @@ -65,11 +65,11 @@ ] }, "locked": { - "lastModified": 1755632680, - "narHash": "sha256-EjaD8+d7AiAV2fGRN4NTMboWDwk8szDfwbzZ8DL1PhQ=", + "lastModified": 1755946532, + "narHash": "sha256-POePremlUY5GyA1zfbtic6XLxDaQcqHN6l+bIxdT5gc=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "50637ed23e962f0db294d6b0ef534f37b144644b", + "rev": "81584dae2df6ac79f6b6dae0ecb7705e95129ada", "type": "github" }, "original": { @@ -139,11 +139,11 @@ "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1756028045, - "narHash": "sha256-j6ehEdta7YnXtk42cdYQEElCKfnbe24yfeHJwszgyes=", + "lastModified": 1756741629, + "narHash": "sha256-n+mgH3NoQf8d1jd8cDp/9Mt++hhyuE3LO3ZAxzjWRZw=", "owner": "catppuccin", "repo": "nix", - "rev": "ad015344f592b6ebb82de853b747dd577926ec77", + "rev": "cd22197da06df1eb6fabdaa2fc22c170c4f67382", "type": "github" }, "original": { @@ -161,11 +161,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1756202691, - "narHash": "sha256-/TlUDQtCDCUtT3ipDLYFBUKf9XrWhgsYPOAyUowmwgI=", + "lastModified": 1756606761, + "narHash": "sha256-lcHMwq0LVcS1mP9o0pq00Von8PsXMsFPPo3ZXGWa7DU=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "9f9193761b28fc36e3d1ec9cff46227da69ea5b5", + "rev": "9e9e58125b4ba190658235106858f9733b25a1b4", "type": "github" }, "original": { @@ -290,11 +290,11 @@ ] }, "locked": { - "lastModified": 1756115622, - "narHash": "sha256-iv8xVtmLMNLWFcDM/HcAPLRGONyTRpzL9NS09RnryRM=", + "lastModified": 1756733629, + "narHash": "sha256-dwWGlDhcO5SMIvMSTB4mjQ5Pvo2vtxvpIknhVnSz2I8=", "owner": "nix-community", "repo": "disko", - "rev": "bafad29f89e83b2d861b493aa23034ea16595560", + "rev": "a5c4f2ab72e3d1ab43e3e65aa421c6f2bd2e12a1", "type": "github" }, "original": { @@ -309,11 +309,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1756201896, - "narHash": "sha256-e2KacadZeySNwACB6v+7vr/Usw07Db5+OzGDL6fQ1qI=", + "lastModified": 1756832996, + "narHash": "sha256-pW+QqeXIIKzo4GkX+WM86t7vai++RHaDE32aMDAIUJs=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "cf7aaac09acc0fad9b15d8fe76745396125c0e3e", + "rev": "73c17b083cd9383d9dd0c98ca33c5d7cdabfec6c", "type": "github" }, "original": { @@ -330,11 +330,11 @@ }, "locked": { "dir": "pkgs/firefox-addons", - "lastModified": 1756181002, - "narHash": "sha256-bPChgpfVqZQxkX0sqFVypO4CFu+swVqqgWySHWK+1wc=", + "lastModified": 1756785812, + "narHash": "sha256-B3cR5keCkTTaI7hCI1YIopLWT3CviWf/uwOjC9AQ27Y=", "owner": "rycee", "repo": "nur-expressions", - "rev": "3cb5445c6a575cf7ece61678449bee89eec864d7", + "rev": "eeb9ccaba785ca13fc2dcf9d83613633a0605feb", "type": "gitlab" }, "original": { @@ -569,11 +569,11 @@ ] }, "locked": { - "lastModified": 1754487366, - "narHash": "sha256-pHYj8gUBapuUzKV/kN/tR3Zvqc7o6gdFB9XKXIp1SQ8=", + "lastModified": 1756770412, + "narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "af66ad14b28a127c5c0f3bbb298218fc63528a18", + "rev": "4524271976b625a4a605beefd893f270620fd751", "type": "github" }, "original": { @@ -859,11 +859,11 @@ "zon2nix": "zon2nix" }, "locked": { - "lastModified": 1756197898, - "narHash": "sha256-0X6qBT9lbKlQPZH5PRopNyJcdsgh6NU8rxQf2DK47EM=", + "lastModified": 1756850146, + "narHash": "sha256-6bHIDP99bxK4H3PsEQjKaGG3RhxZY3HrMzL/soqXzfk=", "owner": "ghostty-org", "repo": "ghostty", - "rev": "4630369f874fe8fab0607c7e4f2b375d7ab78741", + "rev": "8d11c08db3263e0507bfe010e4c423a61b323ac0", "type": "github" }, "original": { @@ -1060,11 +1060,11 @@ ] }, "locked": { - "lastModified": 1756022458, - "narHash": "sha256-J1i35r4HfNDdPpwL0vOBaZopQudAUVtartEerc1Jryc=", + "lastModified": 1756261190, + "narHash": "sha256-eiy0klFK5EVJLNilutR7grsZN/7Itj9DyD75eyOf83k=", "owner": "nix-community", "repo": "home-manager", - "rev": "9e3a33c0bcbc25619e540b9dfea372282f8a9740", + "rev": "77f348da3176dc68b20a73dab94852a417daf361", "type": "github" }, "original": { @@ -1080,11 +1080,11 @@ ] }, "locked": { - "lastModified": 1756022458, - "narHash": "sha256-J1i35r4HfNDdPpwL0vOBaZopQudAUVtartEerc1Jryc=", + "lastModified": 1756842514, + "narHash": "sha256-XbtRMewPGJwTNhBC4pnBu3w/xT1XejvB0HfohC2Kga8=", "owner": "nix-community", "repo": "home-manager", - "rev": "9e3a33c0bcbc25619e540b9dfea372282f8a9740", + "rev": "30fc1b532645a21e157b6e33e3f8b4c154f86382", "type": "github" }, "original": { @@ -1159,11 +1159,11 @@ ] }, "locked": { - "lastModified": 1754305013, - "narHash": "sha256-u+M2f0Xf1lVHzIPQ7DsNCDkM1NYxykOSsRr4t3TbSM4=", + "lastModified": 1755678602, + "narHash": "sha256-uEC5O/NIUNs1zmc1aH1+G3GRACbODjk2iS0ET5hXtuk=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "4c1d63a0f22135db123fc789f174b89544c6ec2d", + "rev": "157cc52065a104fc3b8fa542ae648b992421d1c7", "type": "github" }, "original": { @@ -1184,11 +1184,11 @@ "systems": "systems_7" }, "locked": { - "lastModified": 1752164251, - "narHash": "sha256-v/FnmgSkOypGkpDHQW8KK0uVIyh2njVgEa7hOpWW9ZM=", + "lastModified": 1756291201, + "narHash": "sha256-YzRWE3rCnsY0WDRJcn4KvyWUoe+5zdkUYNIaHGP9BZ4=", "owner": "hyprwm", "repo": "hypridle", - "rev": "dda793b66a79e5602675fa370dd9a93f1d70a60e", + "rev": "5430b73ddf148651bcf35fa39ed4d757c7534028", "type": "github" }, "original": { @@ -1213,11 +1213,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1756069181, - "narHash": "sha256-FPur4yuDwzM9uHhPFJW6KD3Xys5fz0xmRmZqFfWQD3Y=", + "lastModified": 1756811803, + "narHash": "sha256-MuR2EcPnJ7VOhK1ipdOcyRvGgRFZbRWA1fl27Gzrie0=", "ref": "refs/heads/main", - "rev": "0ed880f3f7dc2c746bf3590eee266c010d737558", - "revCount": 6393, + "rev": "127aab815908ecbd3db4d23f127d2e96b79855f9", + "revCount": 6408, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -1441,11 +1441,11 @@ ] }, "locked": { - "lastModified": 1755416120, - "narHash": "sha256-PosTxeL39YrLvCX5MqqPA6NNWQ4T5ea5K55nmN7ju9Q=", + "lastModified": 1756117388, + "narHash": "sha256-oRDel6pNl/T2tI+nc/USU9ZP9w08dxtl7hiZxa0C/Wc=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "e631ea36ddba721eceda69bfee6dd01068416489", + "rev": "b2ae3204845f5f2f79b4703b441252d8ad2ecfd0", "type": "github" }, "original": { @@ -1513,11 +1513,11 @@ ] }, "locked": { - "lastModified": 1755931229, - "narHash": "sha256-j8ghatY34DbEnHe42r8VtAe05WyMUK+d66uGKsfLbbk=", + "lastModified": 1756201372, + "narHash": "sha256-bK5j5cwJgO5AZXlDl5AgISzpOv9YV1Fcv2nDr9RW/5o=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "bcad5af8eb475df936f6cf2d04b076dc6784af95", + "rev": "9f6745bd704ab7f2617d41c2b02f4fd5f9ed0e89", "type": "github" }, "original": { @@ -1665,11 +1665,11 @@ "treefmt-nix": "treefmt-nix_3" }, "locked": { - "lastModified": 1756193366, - "narHash": "sha256-QpWwQwb8PkyAw2kY0ni4/GGhIlGVxXZifhxH5dP2gII=", + "lastModified": 1756857991, + "narHash": "sha256-RCdKAApSgXHhwt7236TygtgV04qlIojySDAJXVNM1Nc=", "owner": "nix-community", "repo": "neovim-nightly-overlay", - "rev": "fe523067daca6e8dd050d07bdca0b4bddec89694", + "rev": "d18b36e17f51d0e5ff51d4e74f573c6683e496ab", "type": "github" }, "original": { @@ -1681,11 +1681,11 @@ "neovim-src": { "flake": false, "locked": { - "lastModified": 1756164261, - "narHash": "sha256-VOjIxnuuOGxglYA91ra5dZkUTP12kWWuGJK13JLSB3g=", + "lastModified": 1756837279, + "narHash": "sha256-exFuBMScGX9vjLGQ4p/uZKyDCot5xF5Ta864Dv0ys/0=", "owner": "neovim", "repo": "neovim", - "rev": "821bfc02fbae7f1cf984037cf479c9cbc0eb1418", + "rev": "431004dda2bbfe1565afcaa5117a0287317b0215", "type": "github" }, "original": { @@ -1704,11 +1704,11 @@ "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1756188424, - "narHash": "sha256-LvfwTK+Ngf+hRrfjCziQL9XEjqmFJUMqmE7bU8JujK4=", + "lastModified": 1756801989, + "narHash": "sha256-eOIQ1CUMHwU4zsBGaCj9jCgNTxzyq2aeHuwgx0xLFwo=", "owner": "sodiboo", "repo": "niri-flake", - "rev": "c7341b5b3b1b7deb164bcaa54cc240a809352470", + "rev": "d6a98b86d86b512c6167601ea646ab785137bada", "type": "github" }, "original": { @@ -1725,15 +1725,16 @@ "rust-overlay": "rust-overlay_5" }, "locked": { - "lastModified": 1756121001, - "narHash": "sha256-qAS8KtQSInO80zmTwTxmlOZzD9tTl8tc1hY0CYRSr78=", - "owner": "YaLTeR", + "lastModified": 1756761382, + "narHash": "sha256-1XIhLlAc/x9K6LXRK8yMD8G3RiHPOiVRHmWNgIFGVi0=", + "owner": "visualglitch91", "repo": "niri", - "rev": "9b622b1c8cee332b0dd5a92ba07242b3d0dc2198", + "rev": "ceda5689ce260339ba5cb6d1da5d776f830d7c96", "type": "github" }, "original": { - "owner": "YaLTeR", + "owner": "visualglitch91", + "ref": "feat/blur", "repo": "niri", "type": "github" } @@ -1741,16 +1742,16 @@ "niri-stable": { "flake": false, "locked": { - "lastModified": 1748151941, - "narHash": "sha256-z4viQZLgC2bIJ3VrzQnR+q2F3gAOEQpU1H5xHtX/2fs=", + "lastModified": 1756556321, + "narHash": "sha256-RLD89dfjN0RVO86C/Mot0T7aduCygPGaYbog566F0Qo=", "owner": "YaLTeR", "repo": "niri", - "rev": "8ba57fcf25d2fc9565131684a839d58703f1dae7", + "rev": "01be0e65f4eb91a9cd624ac0b76aaeab765c7294", "type": "github" }, "original": { "owner": "YaLTeR", - "ref": "v25.05.1", + "ref": "v25.08", "repo": "niri", "type": "github" } @@ -1758,11 +1759,11 @@ "niri-unstable": { "flake": false, "locked": { - "lastModified": 1756121001, - "narHash": "sha256-qAS8KtQSInO80zmTwTxmlOZzD9tTl8tc1hY0CYRSr78=", + "lastModified": 1756728273, + "narHash": "sha256-7tYNlNO/qVRA6shdWxNuBMYOE+pGgxqE0f54S4Wr9PE=", "owner": "YaLTeR", "repo": "niri", - "rev": "9b622b1c8cee332b0dd5a92ba07242b3d0dc2198", + "rev": "77465e11fe36fdd9bc0a304b96bb2558116568af", "type": "github" }, "original": { @@ -1851,11 +1852,11 @@ }, "nixos-stable": { "locked": { - "lastModified": 1755922037, - "narHash": "sha256-wY1+2JPH0ZZC4BQefoZw/k+3+DowFyfOxv17CN/idKs=", + "lastModified": 1756754095, + "narHash": "sha256-9Rsn9XEWINExosFkKEqdp8EI6Mujr1gmQiyrEcts2ls=", "owner": "nixos", "repo": "nixpkgs", - "rev": "b1b3291469652d5a2edb0becc4ef0246fff97a7c", + "rev": "7c815e513adbf03c9098b2bd230c1e0525c8a7f9", "type": "github" }, "original": { @@ -1867,11 +1868,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1756125398, - "narHash": "sha256-XexyKZpf46cMiO5Vbj+dWSAXOnr285GHsMch8FBoHbc=", + "lastModified": 1756542300, + "narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=", "owner": "nixos", "repo": "nixpkgs", - "rev": "3b9f00d7a7bf68acd4c4abb9d43695afb04e03a5", + "rev": "d7600c775f877cd87b4f5a831c28aa94137377aa", "type": "github" }, "original": { @@ -1997,11 +1998,11 @@ }, "nixpkgs-stable_3": { "locked": { - "lastModified": 1755922037, - "narHash": "sha256-wY1+2JPH0ZZC4BQefoZw/k+3+DowFyfOxv17CN/idKs=", + "lastModified": 1756754095, + "narHash": "sha256-9Rsn9XEWINExosFkKEqdp8EI6Mujr1gmQiyrEcts2ls=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b1b3291469652d5a2edb0becc4ef0246fff97a7c", + "rev": "7c815e513adbf03c9098b2bd230c1e0525c8a7f9", "type": "github" }, "original": { @@ -2039,11 +2040,11 @@ }, "nixpkgs_12": { "locked": { - "lastModified": 1755186698, - "narHash": "sha256-wNO3+Ks2jZJ4nTHMuks+cxAiVBGNuEBXsT29Bz6HASo=", + "lastModified": 1756266583, + "narHash": "sha256-cr748nSmpfvnhqSXPiCfUPxRz2FJnvf/RjJGvFfaCsM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "fbcf476f790d8a217c3eab4e12033dc4a0f6d23c", + "rev": "8a6d5427d99ec71c64f0b93d45778c889005d9c2", "type": "github" }, "original": { @@ -2103,11 +2104,11 @@ }, "nixpkgs_16": { "locked": { - "lastModified": 1756128520, - "narHash": "sha256-R94HxJBi+RK1iCm8Y4Q9pdrHZl0GZoDPIaYwjxRNPh4=", + "lastModified": 1756819007, + "narHash": "sha256-12V64nKG/O/guxSYnr5/nq1EfqwJCdD2+cIGmhz3nrE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c53baa6685261e5253a1c355a1b322f82674a824", + "rev": "aaff8c16d7fc04991cac6245bee1baa31f72b1e1", "type": "github" }, "original": { @@ -2119,11 +2120,11 @@ }, "nixpkgs_17": { "locked": { - "lastModified": 1756125398, - "narHash": "sha256-XexyKZpf46cMiO5Vbj+dWSAXOnr285GHsMch8FBoHbc=", + "lastModified": 1756542300, + "narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3b9f00d7a7bf68acd4c4abb9d43695afb04e03a5", + "rev": "d7600c775f877cd87b4f5a831c28aa94137377aa", "type": "github" }, "original": { @@ -2135,11 +2136,11 @@ }, "nixpkgs_18": { "locked": { - "lastModified": 1756125398, - "narHash": "sha256-XexyKZpf46cMiO5Vbj+dWSAXOnr285GHsMch8FBoHbc=", + "lastModified": 1756542300, + "narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=", "owner": "nixos", "repo": "nixpkgs", - "rev": "3b9f00d7a7bf68acd4c4abb9d43695afb04e03a5", + "rev": "d7600c775f877cd87b4f5a831c28aa94137377aa", "type": "github" }, "original": { @@ -2309,11 +2310,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1755615617, - "narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=", + "lastModified": 1756266583, + "narHash": "sha256-cr748nSmpfvnhqSXPiCfUPxRz2FJnvf/RjJGvFfaCsM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "20075955deac2583bb12f07151c2df830ef346b4", + "rev": "8a6d5427d99ec71c64f0b93d45778c889005d9c2", "type": "github" }, "original": { @@ -2325,11 +2326,11 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1756125398, - "narHash": "sha256-XexyKZpf46cMiO5Vbj+dWSAXOnr285GHsMch8FBoHbc=", + "lastModified": 1756542300, + "narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3b9f00d7a7bf68acd4c4abb9d43695afb04e03a5", + "rev": "d7600c775f877cd87b4f5a831c28aa94137377aa", "type": "github" }, "original": { @@ -2389,11 +2390,11 @@ }, "nixpkgs_9": { "locked": { - "lastModified": 1756125398, - "narHash": "sha256-XexyKZpf46cMiO5Vbj+dWSAXOnr285GHsMch8FBoHbc=", + "lastModified": 1756542300, + "narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3b9f00d7a7bf68acd4c4abb9d43695afb04e03a5", + "rev": "d7600c775f877cd87b4f5a831c28aa94137377aa", "type": "github" }, "original": { @@ -2470,11 +2471,11 @@ ] }, "locked": { - "lastModified": 1755446520, - "narHash": "sha256-I0Ok1OGDwc1jPd8cs2VvAYZsHriUVFGIUqW+7uSsOUM=", + "lastModified": 1755960406, + "narHash": "sha256-RF7j6C1TmSTK9tYWO6CdEMtg6XZaUKcvZwOCD2SICZs=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "4b04db83821b819bbbe32ed0a025b31e7971f22e", + "rev": "e891a93b193fcaf2fc8012d890dc7f0befe86ec2", "type": "github" }, "original": { @@ -2532,11 +2533,11 @@ ] }, "locked": { - "lastModified": 1753595452, - "narHash": "sha256-vqkSDvh7hWhPvNjMjEDV4KbSCv2jyl2Arh73ZXe274k=", + "lastModified": 1756352679, + "narHash": "sha256-UkKaPXTPzT7HAcBOV4NlWx2GAEJaTf0eb5OX6Q6jPqg=", "ref": "refs/heads/master", - "rev": "a5431dd02dc23d9ef1680e67777fed00fe5f7cda", - "revCount": 665, + "rev": "f7597cdae2d537c5b12843599955856090dc49d5", + "revCount": 668, "type": "git", "url": "https://git.outfoxxed.me/outfoxxed/quickshell" }, @@ -2574,11 +2575,11 @@ "systems": "systems_14" }, "locked": { - "lastModified": 1756146752, - "narHash": "sha256-by4nWLsk81FOAli4jLb5sTSrMcv20HBU1wQa+x4SMqA=", + "lastModified": 1756660474, + "narHash": "sha256-1bNQXQGTfBvzbY13r+dCE5CXsvdLVpKYCnegm5TrzRc=", "owner": "raphamorim", "repo": "rio", - "rev": "7f387a9d71a6e0cdd7845533fd97e14ce387e49d", + "rev": "1b5c90a33841214cefce281ed117ac11653f5213", "type": "github" }, "original": { @@ -2641,11 +2642,11 @@ ] }, "locked": { - "lastModified": 1756003222, - "narHash": "sha256-lmEMhIIbjt8Wp1EYbNqCojuU9ygyDFv8Tu0X1k8qIMc=", + "lastModified": 1756434910, + "narHash": "sha256-5UJRyxZ8QCm+pgh5pNHXFJMmopMqHVraUhRA1g2AmA0=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "88ceedecde53e809b4bf8b5fd10d181889d9bac7", + "rev": "86e5140961c91a9ee1dde1c17d18a787d44ceef8", "type": "github" }, "original": { @@ -2737,11 +2738,11 @@ "nixpkgs": "nixpkgs_22" }, "locked": { - "lastModified": 1755916474, - "narHash": "sha256-r0WnHKwA8DQNSHDmN3LNaqu41GbWDYqLS7IQAGR+6Wg=", + "lastModified": 1756521112, + "narHash": "sha256-/YW9DI+vZ2lbTvYAek6BsudUXdpWr0FybTDod4P42L4=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "897ecf2b25be05e6ccb7661703f9f2fdec155f42", + "rev": "2243e3f251ea18486f83133cf8e325d2b9b71e89", "type": "github" }, "original": { @@ -2757,11 +2758,11 @@ ] }, "locked": { - "lastModified": 1756197489, - "narHash": "sha256-S16rPaBH1TnMbDyL5NlGSJcYd7wPlOEWTStdBDL7BHw=", + "lastModified": 1756780571, + "narHash": "sha256-xX0B7Sgx3OQvf6anaNW0vXyYDXbchSx2mnT8rqAPbWA=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "8ec04f46f1edeeed3f870da62191745b93975da7", + "rev": "2c18db2acc837a71146ed2d6dae27bf03e3b7a4b", "type": "github" }, "original": { @@ -2865,11 +2866,11 @@ "systems": "systems_17" }, "locked": { - "lastModified": 1756009939, - "narHash": "sha256-lD4Zn37DWEx0X1DqM3npH68b7oh81H8BaaO3c6Ol/DQ=", + "lastModified": 1756614537, + "narHash": "sha256-qyszmZO9CEKAlj5NBQo1AIIADm5Fgqs5ZggW1sU1TVo=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "2bedaf52261ef2adbe71af70820aeb41dfe9a5ef", + "rev": "374eb5d97092b97f7aaafd58a2012943b388c0df", "type": "github" }, "original": { @@ -3223,11 +3224,11 @@ ] }, "locked": { - "lastModified": 1755934250, - "narHash": "sha256-CsDojnMgYsfshQw3t4zjRUkmMmUdZGthl16bXVWgRYU=", + "lastModified": 1756662192, + "narHash": "sha256-F1oFfV51AE259I85av+MAia221XwMHCOtZCMcZLK2Jk=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "74e1a52d5bd9430312f8d1b8b0354c92c17453e5", + "rev": "1aabc6c05ccbcbf4a635fb7a90400e44282f61c4", "type": "github" }, "original": { @@ -3371,11 +3372,11 @@ "xwayland-satellite-unstable": { "flake": false, "locked": { - "lastModified": 1755963545, - "narHash": "sha256-hGXzVhlk+gelqagKAgOHbilNYasM+jM3T8JPshDl2/M=", + "lastModified": 1756679414, + "narHash": "sha256-yQGJ/n6mRwoIQnaL5oV2TGOHg4SEHpINTaoHrvkjr1Q=", "owner": "Supreeeme", "repo": "xwayland-satellite", - "rev": "d759c64681bab7cd34f48122037d7420d42f3024", + "rev": "c0497c990d46fcc012d9deff885bbe533e91e044", "type": "github" }, "original": { @@ -3390,11 +3391,11 @@ "nixpkgs": "nixpkgs_25" }, "locked": { - "lastModified": 1756182225, - "narHash": "sha256-LDYO3FTzt3ZDn5l3ke5dI55j/tRW9MmfWhHOeO6dlco=", + "lastModified": 1756840469, + "narHash": "sha256-TtOazKYiRtYEEKnLmeBihr/E+PN1xdT/to1NPNsoxQQ=", "owner": "0xc000022070", "repo": "zen-browser-flake", - "rev": "3ac45e49f9a8e0edd956b43d587d34adcaa2a007", + "rev": "0532bd5938efddca7d9462778ba7989b3734f965", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 5a5f13d..df8bc1b 100644 --- a/flake.nix +++ b/flake.nix @@ -141,7 +141,10 @@ disko.url = "github:nix-community/disko"; disko.inputs.nixpkgs.follows = "nixpkgs"; - niri-src.url = "github:YaLTeR/niri"; + # niri-src.url = "github:YaLTeR/niri"; + # niri-src.inputs.nixpkgs.follows = "nixpkgs"; + + niri-src.url = "github:visualglitch91/niri/feat/blur"; niri-src.inputs.nixpkgs.follows = "nixpkgs"; quickshell = { diff --git a/homes/x86_64-linux/zoey@earth/default.nix b/homes/x86_64-linux/zoey@earth/default.nix index 097347e..651bab9 100644 --- a/homes/x86_64-linux/zoey@earth/default.nix +++ b/homes/x86_64-linux/zoey@earth/default.nix @@ -274,8 +274,6 @@ options = ["--cmd cd"]; }; - services.quickshell.enable = false; - home.file.".mozilla/native-messaging-hosts/gpgmejson.json".text = builtins.toJSON { name = "gpgmejson"; description = "JavaScript binding for GnuPG"; diff --git a/modules/home/apps/term/ghostty/default.nix b/modules/home/apps/term/ghostty/default.nix index a129c36..3ce39f1 100644 --- a/modules/home/apps/term/ghostty/default.nix +++ b/modules/home/apps/term/ghostty/default.nix @@ -29,8 +29,6 @@ in { gtk-single-instance = true; gtk-titlebar = false; - background = colors.crust.hex; - alpha-blending = "linear-corrected"; window-padding-x = 20; diff --git a/modules/home/apps/term/kitty/default.nix b/modules/home/apps/term/kitty/default.nix index a6603c2..5850db6 100644 --- a/modules/home/apps/term/kitty/default.nix +++ b/modules/home/apps/term/kitty/default.nix @@ -27,35 +27,13 @@ in { settings = { window_padding_width = 20; - # background_opacity = "0.9"; - background = colors.crust.hex; - foreground = colors.text.hex; + background_opacity = "0.9"; font_hinting = "slight"; cursor_trail = 3; text_composition_strategy = "1.2 10"; - - # Normal colors - color0 = colors.surface1.hex; # black - color1 = colors.red.hex; # red - color2 = colors.green.hex; # green - color3 = colors.yellow.hex; # yellow - color4 = colors.blue.hex; # blue - color5 = colors.mauve.hex; # magenta - color6 = colors.teal.hex; # cyan - color7 = colors.text.hex; # white - - # Bright colors - color8 = colors.surface2.hex; # bright black - color9 = colors.red.hex; # bright red - color10 = colors.green.hex; # bright green - color11 = colors.yellow.hex; # bright yellow - color12 = colors.blue.hex; # bright blue - color13 = colors.mauve.hex; # bright magenta - color14 = colors.teal.hex; # bright cyan - color15 = colors.text.hex; # bright white }; }; }; diff --git a/modules/home/apps/tools/neovim/config/lua/config/options.lua b/modules/home/apps/tools/neovim/config/lua/config/options.lua index ac34dc9..2dbae62 100644 --- a/modules/home/apps/tools/neovim/config/lua/config/options.lua +++ b/modules/home/apps/tools/neovim/config/lua/config/options.lua @@ -12,4 +12,16 @@ vim.g.lazyvim_blink_main = true vim.g.snacks_animate = false vim.o.termguicolors = true +-- Minimal UI borders for floats +vim.diagnostic.config({ + virtual_text = false, + float = { border = "none" }, +}) + +-- Use crisp single-line borders in LSP handlers +local border = "none" +local handlers = vim.lsp.handlers +handlers["textDocument/hover"] = vim.lsp.with(handlers.hover, { border = border }) +handlers["textDocument/signatureHelp"] = vim.lsp.with(handlers.signature_help, { border = border }) + vim.g.lazyvim_prettier_needs_config = true diff --git a/modules/home/apps/tools/neovim/config/lua/plugins/core.lua b/modules/home/apps/tools/neovim/config/lua/plugins/core.lua index 04c7607..e9e6514 100644 --- a/modules/home/apps/tools/neovim/config/lua/plugins/core.lua +++ b/modules/home/apps/tools/neovim/config/lua/plugins/core.lua @@ -8,9 +8,90 @@ return { }, { "catppuccin", - opts = { - transparent_background = true, - }, + opts = function(_, opts) + local module = require("catppuccin.groups.integrations.bufferline") + if module then + module.get = module.get_theme + end + opts.transparent_background = true + opts.flavour = "mocha" + opts.no_bold = true + opts.no_italic = true + opts.dim_inactive = { + enabled = true, + percentage = 0.75, + } + opts.integrations = vim.tbl_deep_extend("force", opts.integrations or {}, { + noice = true, + blink_cmp = true, + notify = true, + treesitter = true, + lsp_trouble = true, + telescope = true, + which_key = true, + native_lsp = { + enabled = true, + inlay_hints = { + background = false, + }, + }, + indent_blankline = { + enabled = true, + scope_color = "overlay0", + colored_indent_levels = false, + }, + }) + opts.custom_highlights = function(colors) + return { + Normal = { bg = "NONE" }, + NormalNC = { bg = "NONE" }, + NormalFloat = { bg = "NONE" }, + FloatBorder = { fg = "NONE", bg = "NONE" }, + FloatTitle = { fg = colors.subtext0, bg = "NONE" }, + -- WinSeparator = { fg = colors.surface1 }, + -- CursorLine = { bg = colors.mantle }, + -- Visual = { bg = colors.surface0 }, + -- Pmenu = { bg = colors.bg, fg = colors.text }, + -- PmenuSel = { bg = colors.surface0, fg = colors.text }, + -- PmenuSbar = { bg = colors.bg }, + -- PmenuThumb = { bg = colors.surface1 }, + -- StatusLine = { bg = colors.bg, fg = colors.subtext0 }, + -- StatusLineNC = { bg = colors.bg, fg = colors.overlay0 }, + -- TabLine = { bg = colors.bg, fg = colors.overlay1 }, + -- TabLineSel = { bg = colors.bg, fg = colors.text }, + -- TabLineFill = { bg = colors.bg }, + -- SignColumn = { bg = colors.bg }, + -- LineNr = { fg = colors.overlay1 }, + DiagnosticUnderlineError = { sp = colors.red, undercurl = true }, + DiagnosticUnderlineWarn = { sp = colors.yellow, undercurl = true }, + DiagnosticUnderlineInfo = { sp = colors.teal, undercurl = true }, + DiagnosticUnderlineHint = { sp = colors.sky, undercurl = true }, + -- Noice popup and cmdline transparent, borderless + NoiceCmdlinePopup = { bg = "NONE", fg = colors.text }, + NoiceCmdlinePopupBorder = { fg = "NONE", bg = "NONE" }, + NoiceCmdlinePopupTitle = { bg = "NONE", fg = colors.subtext0 }, + NoicePopup = { bg = "NONE", fg = colors.text }, + NoicePopupBorder = { fg = "NONE", bg = "NONE" }, + -- Blink.cmp: flat boxes with padding and pop colors + BlinkCmpMenu = { bg = "NONE", fg = colors.text }, + BlinkCmpMenuBorder = { fg = "NONE", bg = "NONE" }, + BlinkCmpMenuSelection = { bg = colors.surface0, fg = colors.text }, + BlinkCmpMenuMatch = { fg = colors.mauve }, + BlinkCmpDoc = { bg = "NONE" }, + BlinkCmpDocBorder = { fg = "NONE", bg = "NONE" }, + BlinkCmpDocSelection = { bg = colors.surface0 }, + BlinkCmpKind = { fg = colors.sky }, + BlinkCmpSource = { fg = colors.subtext0 }, + -- Reduce scope highlighting prominence + IlluminatedWordText = { bg = colors.mantle }, + IlluminatedWordRead = { bg = colors.mantle }, + IlluminatedWordWrite = { bg = colors.mantle }, + TreesitterContext = { bg = colors.mantle }, + TreesitterContextLineNumber = { fg = colors.subtext0, bg = colors.mantle }, + } + end + return opts + end, -- config = function() -- require("catppuccin").setup({ -- transparent_background = true, @@ -45,7 +126,7 @@ return { -- end, -- color_overrides = { -- mocha = { - -- base = "#11111b", + -- bg = "#11111b", -- mantle = "#11111b", -- crust = "#11111b", -- }, @@ -133,8 +214,80 @@ return { }, }, }, + --- minimal crisp single-line borders for LSP windows + inlay_hints = { enabled = true }, + diagnostics = { virtual_text = false }, }, }, + -- Minimal Noice styling + { + "folke/noice.nvim", + opts = function(_, opts) + opts = opts or {} + opts.presets = vim.tbl_deep_extend("force", opts.presets or {}, { + bottom_search = false, + command_palette = false, + long_message_to_split = true, + inc_rename = false, + lsp_doc_border = false, + }) + opts.cmdline = vim.tbl_deep_extend("force", opts.cmdline or {}, { + view = "cmdline_popup", + }) + opts.views = vim.tbl_deep_extend("force", opts.views or {}, { + cmdline_popup = { + border = { style = "none", padding = { 1, 2 } }, + win_options = { + -- winhighlight = { "Normal:NoiceCmdlinePopup,FloatBorder:NoiceCmdlinePopupBorder,FloatTitle:NoiceCmdlinePopupTitle" }, + winhighlight = { + Normal = "NoiceCmdlinePopup", + FloatBorder = "NoiceCmdlinePopupBorder", + FloatTitle = "NoiceCmdlinePopupTitle", + }, + winblend = 0, + }, + position = { row = "40%", col = "50%" }, + size = { width = 60 }, + }, + popupmenu = { + border = { style = "none", padding = { 1, 2 } }, + win_options = { winblend = 0, winhighlight = "Normal:NoicePopup,FloatBorder:NoicePopupBorder" }, + }, + mini = { + border = { style = "none", padding = { 1, 2 } }, + win_options = { winblend = 0, winhighlight = "Normal:NoicePopup,FloatBorder:NoicePopupBorder" }, + }, + }) + return opts + end, + }, + -- Minimal bufferline (if present in LazyVim) + { + "akinsho/bufferline.nvim", + opts = function(_, opts) + opts = opts or {} + opts.options = vim.tbl_deep_extend("force", opts.options or {}, { + separator_style = "none", + show_buffer_close_icons = false, + show_close_icon = false, + always_show_bufferline = false, + indicator = { style = "underline" }, + }) + return opts + end, + }, + -- Minimal indent guides + { + "lukas-reineke/indent-blankline.nvim", + main = "ibl", + opts = function(_, opts) + opts = opts or {} + opts.indent = { char = "│" } + opts.scope = { enabled = false } + opts.whitespace = { remove_blankline_trail = true } + return opts + end, + }, "pimalaya/himalaya-vim", { "rachartier/tiny-inline-diagnostic.nvim", diff --git a/modules/home/apps/tools/neovim/config/lua/plugins/lualine.lua b/modules/home/apps/tools/neovim/config/lua/plugins/lualine.lua index e3cd4ba..d248658 100644 --- a/modules/home/apps/tools/neovim/config/lua/plugins/lualine.lua +++ b/modules/home/apps/tools/neovim/config/lua/plugins/lualine.lua @@ -5,7 +5,24 @@ return { -- Author: shadmansaleh -- Credit: glepnir local lualine = require("lualine") - local ctp = require("catppuccin.palettes").get_palette("mocha") + local ctp = require("catppuccin.palettes").get_palette("macchiato") + + -- Utility to blend two hex colors: result = (1 - alpha) * a + alpha * b + local function blend_hex(hex_a, hex_b, alpha) + local function hex_to_rgb(h) + h = h:gsub("#", "") + return tonumber(h:sub(1, 2), 16), tonumber(h:sub(3, 4), 16), tonumber(h:sub(5, 6), 16) + end + local function rgb_to_hex(r, g, b) + return string.format("#%02x%02x%02x", math.floor(r + 0.5), math.floor(g + 0.5), math.floor(b + 0.5)) + end + local ar, ag, ab = hex_to_rgb(hex_a) + local br, bg, bb = hex_to_rgb(hex_b) + local r = ar * (1 - alpha) + br * alpha + local g = ag * (1 - alpha) + bg * alpha + local b = ab * (1 - alpha) + bb * alpha + return rgb_to_hex(r, g, b) + end local conditions = { buffer_not_empty = function() @@ -24,15 +41,11 @@ return { -- Config local config = { options = { - -- Disable sections and component separators component_separators = "", section_separators = "", theme = { - -- We are going to use lualine_c an lualine_x as left and - -- right section. Both are highlighted by c theme . So we - -- are just setting default looks o statusline - normal = { c = { fg = ctp.text, bg = ctp.base } }, - inactive = { c = { fg = ctp.overlay0, bg = ctp.base } }, + normal = { c = { fg = ctp.text, bg = "NONE" } }, + inactive = { c = { fg = ctp.overlay0, bg = "NONE" } }, }, }, sections = { @@ -164,6 +177,41 @@ return { return mode_colors[current_mode] or ctp.subtext0 -- Default to a neutral color if mode not found end + -- Human-readable mode labels + local function get_mode_label() + local m = vim.api.nvim_get_mode().mode + local normal = { + n = true, + no = true, + nov = true, + ["noV"] = true, + ["no\22"] = true, + niI = true, + niR = true, + niV = true, + nt = true, + } + if normal[m] then + return "NORM" + end + if m == "i" or m == "ic" or m == "ix" then + return "INS" + end + if m == "v" or m == "V" or m == "\22" or m == "vs" or m == "Vs" or m == "\22s" then + return "VIS" + end + if m == "R" or m == "Rc" or m == "Rx" or m == "Rv" or m == "Rvc" or m == "Rvx" then + return "REPL" + end + if m == "c" or m == "cv" or m == "ce" then + return "CMD" + end + if m == "t" or m == "!" then + return "TERM" + end + return "?" + end + -- Inserts a component in lualine_c at left section local function ins_left(component) table.insert(config.sections.lualine_c, component) @@ -176,13 +224,14 @@ return { ins_left({ function() - return get_mode_abbr() + return get_mode_label() end, color = function() - local color = get_mode_color() - return { fg = ctp.base, bg = color, gui = "bold" } - end, -- Sets highlighting of component - padding = { left = 1, right = 1 }, -- We don't need space before this + local mode_color = get_mode_color() + local mode_bg = blend_hex(ctp.base, mode_color, 0.254) + return { fg = mode_color, bg = mode_bg, gui = "bold" } + end, + padding = { left = 1, right = 1 }, }) ins_left({ @@ -191,19 +240,13 @@ return { color = { fg = ctp.subtext0 }, }) - ins_left({ - -- filesize component - "filesize", - cond = conditions.buffer_not_empty, - color = { fg = ctp.subtext1 }, - }) - - ins_left({ "location", color = { fg = ctp.subtext1 } }) + -- visual separation using color only, no ASCII separators + ins_left({ "location", color = { fg = ctp.overlay1 } }) ins_left({ "diagnostics", sources = { "nvim_diagnostic" }, - symbols = { error = " ", warn = " ", info = " " }, + symbols = { error = "", warn = "", info = "" }, diagnostics_color = { error = { fg = ctp.red }, warn = { fg = ctp.yellow }, @@ -219,14 +262,13 @@ return { end, }) + -- LSP client indicator (badge) ins_right({ - -- Lsp server name . function() - local msg = "none" local buf_ft = vim.api.nvim_get_option_value("filetype", { buf = 0 }) local clients = vim.lsp.get_clients() if next(clients) == nil then - return msg + return "" end for _, client in ipairs(clients) do local filetypes = client.config.filetypes @@ -234,42 +276,41 @@ return { return client.name end end - return msg - end, - icon = "", - color = { fg = ctp.overlay1, gui = "bold" }, - }) - - -- Add components to right sections - ins_right({ - "branch", - icon = "", - color = { fg = ctp.mauve, gui = "bold" }, - }) - - ins_right({ - "diff", - -- Is it me or the symbol for modified us really weird - symbols = { added = " ", modified = "󰝤 ", removed = " " }, - diff_color = { - added = { fg = ctp.green }, - modified = { fg = ctp.peach }, - removed = { fg = ctp.red }, - }, - cond = conditions.hide_in_width, - }) - - ins_right({ - function() - return "▊" + return "" end, color = function() - local color = get_mode_color() - return { fg = color } - end, -- Sets highlighting of component - padding = { left = 1 }, + return { fg = ctp.sapphire, bg = blend_hex(ctp.base, ctp.sapphire, 0.254), gui = "bold" } + end, + padding = { left = 1, right = 1 }, }) + -- CMP badge (visible in insert mode) + ins_right({ + function() + return "CMP" + end, + cond = function() + local mode = vim.api.nvim_get_mode().mode + return mode == "i" or mode == "ic" or mode == "ix" + end, + color = { fg = ctp.base, bg = ctp.teal }, + padding = { left = 1, right = 1 }, + }) + + -- Language/filetype badge + ins_right({ + "filetype", + colored = false, + icon_only = false, + color = function() + return { fg = ctp.text, ctp.surface0, gui = "bold" } + end, + padding = { left = 1, right = 1 }, + }) + + -- Minimal right side + ins_right({ "progress", color = { fg = ctp.overlay1 } }) + -- Now don't forget to initialize lualine lualine.setup(config) end, diff --git a/modules/home/apps/tools/neovim/default.nix b/modules/home/apps/tools/neovim/default.nix index 941b8f9..474ee97 100644 --- a/modules/home/apps/tools/neovim/default.nix +++ b/modules/home/apps/tools/neovim/default.nix @@ -38,7 +38,7 @@ in { catppuccin.enable = false; enable = true; defaultEditor = true; - # package = inputs.neovim-nightly-overlay.packages.${pkgs.system}.default; + package = inputs.neovim-nightly-overlay.packages.${pkgs.system}.default; extraLuaPackages = ps: [ps.magick]; extraPackages = with pkgs; [ # Formatters diff --git a/modules/home/apps/tools/tmux/default.nix b/modules/home/apps/tools/tmux/default.nix index 1325924..4ba5bcb 100644 --- a/modules/home/apps/tools/tmux/default.nix +++ b/modules/home/apps/tools/tmux/default.nix @@ -18,7 +18,6 @@ in { enable = true; extraConfig = '' set -g @catppuccin_window_status_style "basic" - set -g @catppuccin_status_background "#11111b" ''; }; diff --git a/modules/home/wms/hyprland/default.nix b/modules/home/wms/hyprland/default.nix index 9546e70..87a008f 100644 --- a/modules/home/wms/hyprland/default.nix +++ b/modules/home/wms/hyprland/default.nix @@ -246,7 +246,6 @@ in { # }; # }; - services.quickshell.enable = true; services.wallpaper.enable = true; }; } diff --git a/modules/home/wms/niri/default.nix b/modules/home/wms/niri/default.nix index 99fafcb..a5d4f27 100644 --- a/modules/home/wms/niri/default.nix +++ b/modules/home/wms/niri/default.nix @@ -45,485 +45,752 @@ with lib.custom; { patches = prev.patches ++ [../../../../fix-niri-nvidia.patch]; }); - settings = { - # Input device configuration - input = { - keyboard = { - # xkb settings are empty in KDL, using defaults/empty strings - xkb = { - rules = ""; - model = ""; - layout = ""; - variant = ""; - options = null; # Or "" if you prefer explicit empty - }; - }; + config = '' + input { + keyboard { + xkb { + layout "" + model "" + rules "" + variant "" + } + repeat-delay 600 + repeat-rate 40 + track-layout "global" + } + touchpad { + tap + disabled-on-external-mouse + natural-scroll + } + mouse { + accel-speed 0.200000 + accel-profile "flat" + } + warp-mouse-to-focus + } + output "DP-1" { + scale 1 + transform "normal" + position x=2560 y=0 + mode "2560x1440@239.972000" + variable-refresh-rate on-demand=true + } + output "DP-3" { + scale 1.500000 + focus-at-startup + transform "normal" + position x=0 y=0 + mode "3840x2160@240.000000" + variable-refresh-rate on-demand=true + } + screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png" + prefer-no-csd + layout { + gaps 16 + struts { + left 0 + right 0 + top 0 + bottom 0 + } + focus-ring { + width 4 + active-gradient angle=45 from="#89b4fa" relative-to="window" to="#89dceb" + inactive-gradient angle=45 from="#45475a" relative-to="workspace-view" to="#585b70" + } + blur { + on + passes 4 + radius 4.0 + noise 0.1 + } + border { + width 0 + active-color "#89b4fa" + inactive-color "#1e1e2e" + } + default-column-width { proportion 0.500000; } + preset-column-widths { + proportion 0.333330 + proportion 0.500000 + proportion 0.666670 + } + center-focused-column "never" + } + cursor { + xcursor-theme "default" + xcursor-size 24 + } + hotkey-overlay { skip-at-startup; } + environment { DISPLAY ":0"; } + binds { + Ctrl+Alt+Delete { quit; } + Mod+1 { focus-workspace 1; } + Mod+2 { focus-workspace 2; } + Mod+3 { focus-workspace 3; } + Mod+4 { focus-workspace 4; } + Mod+5 { focus-workspace 5; } + Mod+6 { focus-workspace 6; } + Mod+7 { focus-workspace 7; } + Mod+8 { focus-workspace 8; } + Mod+9 { focus-workspace 9; } + Mod+BracketLeft { consume-or-expel-window-left; } + Mod+BracketRight { consume-or-expel-window-right; } + Mod+C { center-column; } + Mod+Comma { consume-window-into-column; } + Mod+Ctrl+Down { move-window-down; } + Mod+Ctrl+End { move-column-to-last; } + Mod+Ctrl+F { expand-column-to-available-width; } + Mod+Ctrl+H { move-column-left; } + Mod+Ctrl+Home { move-column-to-first; } + Mod+Ctrl+I { move-column-to-workspace-up; } + Mod+Ctrl+J { move-window-down; } + Mod+Ctrl+K { move-window-up; } + Mod+Ctrl+L { move-column-right; } + Mod+Ctrl+Left { move-column-left; } + "Mod+Ctrl+Page_Down" { move-column-to-workspace-down; } + "Mod+Ctrl+Page_Up" { move-column-to-workspace-up; } + Mod+Ctrl+R { reset-window-height; } + Mod+Ctrl+Right { move-column-right; } + Mod+Ctrl+Shift+F { toggle-windowed-fullscreen; } + Mod+Ctrl+Shift+WheelScrollDown { move-column-right; } + Mod+Ctrl+Shift+WheelScrollUp { move-column-left; } + Mod+Ctrl+U { move-column-to-workspace-down; } + Mod+Ctrl+Up { move-window-up; } + Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; } + Mod+Ctrl+WheelScrollLeft { move-column-left; } + Mod+Ctrl+WheelScrollRight { move-column-right; } + Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; } + Mod+D { spawn "fuzzel"; } + Mod+Down { focus-window-down; } + Mod+End { focus-column-last; } + Mod+Equal { set-column-width "+10%"; } + Mod+F { maximize-column; } + Mod+H { focus-column-left; } + Mod+Home { focus-column-first; } + Mod+I { focus-workspace-up; } + Mod+J { focus-window-down; } + Mod+K { focus-window-up; } + Mod+L { focus-column-right; } + Mod+Left { focus-column-left; } + Mod+Minus { set-column-width "-10%"; } + "Mod+Page_Down" { focus-workspace-down; } + "Mod+Page_Up" { focus-workspace-up; } + Mod+Period { expel-window-from-column; } + Mod+Q { close-window; } + Mod+R { switch-preset-column-width; } + Mod+Return { spawn "kitty"; } + Mod+Right { focus-column-right; } + Mod+Shift+1 { spawn "/nix/store/kqk80x8bbv05c8rxfvjiyy96jvqng3p2-niri-082d058/bin/niri" "msg" "action" "move-column-to-workspace" "1"; } + Mod+Shift+2 { spawn "/nix/store/kqk80x8bbv05c8rxfvjiyy96jvqng3p2-niri-082d058/bin/niri" "msg" "action" "move-column-to-workspace" "2"; } + Mod+Shift+3 { spawn "/nix/store/kqk80x8bbv05c8rxfvjiyy96jvqng3p2-niri-082d058/bin/niri" "msg" "action" "move-column-to-workspace" "3"; } + Mod+Shift+4 { spawn "/nix/store/kqk80x8bbv05c8rxfvjiyy96jvqng3p2-niri-082d058/bin/niri" "msg" "action" "move-column-to-workspace" "4"; } + Mod+Shift+5 { spawn "/nix/store/kqk80x8bbv05c8rxfvjiyy96jvqng3p2-niri-082d058/bin/niri" "msg" "action" "move-column-to-workspace" "5"; } + Mod+Shift+6 { spawn "/nix/store/kqk80x8bbv05c8rxfvjiyy96jvqng3p2-niri-082d058/bin/niri" "msg" "action" "move-column-to-workspace" "6"; } + Mod+Shift+7 { spawn "/nix/store/kqk80x8bbv05c8rxfvjiyy96jvqng3p2-niri-082d058/bin/niri" "msg" "action" "move-column-to-workspace" "7"; } + Mod+Shift+8 { spawn "/nix/store/kqk80x8bbv05c8rxfvjiyy96jvqng3p2-niri-082d058/bin/niri" "msg" "action" "move-column-to-workspace" "8"; } + Mod+Shift+9 { spawn "/nix/store/kqk80x8bbv05c8rxfvjiyy96jvqng3p2-niri-082d058/bin/niri" "msg" "action" "move-column-to-workspace" "9"; } + Mod+Shift+Ctrl+Down { move-column-to-monitor-down; } + Mod+Shift+Ctrl+H { move-column-to-monitor-left; } + Mod+Shift+Ctrl+J { move-column-to-monitor-down; } + Mod+Shift+Ctrl+K { move-column-to-monitor-up; } + Mod+Shift+Ctrl+L { move-column-to-monitor-right; } + Mod+Shift+Ctrl+Left { move-column-to-monitor-left; } + Mod+Shift+Ctrl+Right { move-column-to-monitor-right; } + Mod+Shift+Ctrl+Up { move-column-to-monitor-up; } + Mod+Shift+Down { focus-monitor-down; } + Mod+Shift+E { quit; } + Mod+Shift+Equal { set-window-height "+10%"; } + Mod+Shift+F { fullscreen-window; } + Mod+Shift+H { focus-monitor-left; } + Mod+Shift+I { move-workspace-up; } + Mod+Shift+J { focus-workspace-down; } + Mod+Shift+K { focus-workspace-up; } + Mod+Shift+L { focus-monitor-right; } + Mod+Shift+Left { focus-monitor-left; } + Mod+Shift+Minus { set-window-height "-10%"; } + Mod+Shift+P { power-off-monitors; } + "Mod+Shift+Page_Down" { move-workspace-down; } + "Mod+Shift+Page_Up" { move-workspace-up; } + Mod+Shift+R { switch-preset-window-height; } + Mod+Shift+Right { focus-monitor-right; } + Mod+Shift+Slash { show-hotkey-overlay; } + Mod+Shift+U { move-workspace-down; } + Mod+Shift+Up { focus-monitor-up; } + Mod+Shift+WheelScrollDown { focus-column-right; } + Mod+Shift+WheelScrollUp { focus-column-left; } + Mod+U { focus-workspace-down; } + Mod+Up { focus-window-up; } + Mod+V { toggle-window-floating; } + Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; } + Mod+WheelScrollLeft { focus-column-left; } + Mod+WheelScrollRight { focus-column-right; } + Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; } + Print { screenshot; } + Super+Alt+L { spawn "swaylock"; } + XF86AudioLowerVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-"; } + XF86AudioMicMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; } + XF86AudioMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; } + XF86AudioRaiseVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+"; } + } + workspace "browser" + workspace "code" + workspace "chat" + workspace "work" + spawn-at-startup "xwayland-satellite" + spawn-at-startup "thunderbird" + spawn-at-startup "zen" + spawn-at-startup "vesktop" + spawn-at-startup "cider-2" + spawn-at-startup "${spawnSlackOnWeekday}/bin/spawn-slack-on-weekday" + window-rule { + match app-id="^org\\.keepassxc\\.KeePassXC$" + match app-id="^org\\.gnome\\.World\\.Secrets$" + match app-id="^1Password$" + match app-id="^thunderbird$" + match app-id="^signal$" + match app-id="^vesktop$" + match app-id="^slack$" + block-out-from "screen-capture" + } + window-rule { + geometry-corner-radius 12.000000 12.000000 12.000000 12.000000 + clip-to-geometry true + } + window-rule { + match is-window-cast-target=true + focus-ring { + active-color "#f38ba8" + inactive-color "#89556B" + } + shadow { color "#7d0d2d70"; } + tab-indicator { + active-color "#f38ba8" + inactive-color "#89556B" + } + } + window-rule { + match app-id="^steam$" + exclude title="^Steam$" + open-floating true + open-focused false + default-floating-position relative-to="bottom-right" x=16 y=16 + } + window-rule { + match app-id="^cyberpunk2077.exe$" + match app-id="^Overwatch2.exe$" + variable-refresh-rate true + } + window-rule { + match app-id="^zen$" at-startup=true + open-on-workspace "browser" + open-maximized true + } + window-rule { + match app-id="^spotify$" at-startup=true + match app-id="^vesktop$" at-startup=true + open-on-workspace "chat" + } + window-rule { + match app-id="^Slack$" at-startup=true + match app-id="^thunderbird$" at-startup=true + open-on-workspace "work" + } + layer-rule { + match namespace="notifications$" + block-out-from "screen-capture" + } + ''; - touchpad = { - enable = true; # Not explicitly 'off' in KDL - tap = true; - dwt = false; # Commented out in KDL - dwtp = false; # Commented out in KDL - natural-scroll = true; - # accel-speed = 0.2; # Commented out - # accel-profile = "flat"; # Commented out - # scroll-method = "two-finger"; # Commented out - disabled-on-external-mouse = true; - }; - - mouse = { - enable = true; # Not explicitly 'off' in KDL - natural-scroll = false; # Commented out in KDL - accel-speed = 0.2; - accel-profile = "flat"; - # scroll-method = "no-scroll"; # Commented out - }; - - trackpoint = { - enable = true; # Not explicitly 'off' in KDL - natural-scroll = false; # Commented out - # accel-speed = 0.2; # Commented out - # accel-profile = "flat"; # Commented out - # scroll-method = "on-button-down"; # Commented out - # scroll-button = 273; # Commented out - middle-emulation = false; # Commented out - }; - - warp-mouse-to-focus = true; - - focus-follows-mouse = { - enable = false; # Commented out in KDL - # max-scroll-amount = "0%"; # Only relevant if enabled - }; - }; - - # Output configuration - outputs."DP-1" = { - enable = true; # Not explicitly 'off' - mode = { - width = 2560; - height = 1440; - refresh = 239.972; - }; - variable-refresh-rate = "on-demand"; - scale = 1; - transform = { - # "normal" - rotation = 0; - flipped = false; - }; - position = { - x = 2560; - y = 0; - }; - }; - - outputs."DP-3" = { - enable = true; # Not explicitly 'off' - mode = { - width = 3840; - height = 2160; - refresh = 240.0; - }; - variable-refresh-rate = "on-demand"; - focus-at-startup = true; - scale = 1.5; - transform = { - # "normal" - rotation = 0; - flipped = false; - }; - position = { - x = 0; - y = 0; - }; - }; - - # Environment variables - environment = { - DISPLAY = ":0"; # for applications using xwayland-satillite - }; - - hotkey-overlay = { - skip-at-startup = true; - }; - - # Layout settings - layout = { - gaps = 16; - center-focused-column = "never"; - - preset-column-widths = [ - {proportion = 0.33333;} - {proportion = 0.5;} - {proportion = 0.66667;} - # { fixed = 1920; } # Example if needed - ]; - - # preset-window-heights = []; # Empty in KDL - - default-column-width = {proportion = 0.5;}; - # default-column-width = {}; # Alternative from KDL comments - - focus-ring = { - enable = true; # Not explicitly 'off' - width = 4; - active = mkGradient colors.blue.hex colors.sky.hex {angle = 45;}; - # active = mkColor "#7fc8ff"; # Alternative solid color from KDL - inactive = mkGradient colors.surface1.hex colors.surface2.hex { - angle = 45; - relative-to = "workspace-view"; - }; - # inactive = mkColor "#505050"; # Alternative solid color from KDL - }; - - border = { - enable = true; # Explicitly 'off' in KDL - width = 0; - active = mkColor colors.blue.hex; - inactive = mkColor colors.base.hex; - # active-gradient = ... # Commented out in KDL - # inactive-gradient = ... # Commented out in KDL - }; - - struts = { - # left = 64; # Commented out - # right = 64; # Commented out - # top = 64; # Commented out - # bottom = 64; # Commented out - }; - }; - - # Spawn processes at startup - spawn-at-startup = [ - {command = ["xwayland-satellite"];} - {command = ["${pkgs.writeShellScriptBin "thunderbird-delayed" ''sleep 5; thunderbird''}/bin/thunderbird-delayed"];} - {command = ["${pkgs.writeShellScriptBin "zen-delayed" ''sleep 5; zen''}/bin/zen-delayed"];} - {command = ["vesktop"];} - {command = ["cider-2"];} - - {command = ["${spawnSlackOnWeekday}/bin/spawn-slack-on-weekday"];} - ]; - - # Prefer server-side decorations - prefer-no-csd = true; - - # Screenshot path - screenshot-path = "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"; - # screenshot-path = null; # Alternative from KDL comments - - # Animation settings - animations = { - enable = true; # Not explicitly 'off' - # slowdown = 3.0; # Commented out - # Individual animation settings can be added here if needed - }; - - layer-rules = [ - { - matches = [ - {namespace = "notifications$";} - ]; - - block-out-from = "screen-capture"; - } - ]; - - # Window rules - window-rules = [ - # Password manager rule (example from KDL comments) - { - matches = [ - {app-id = "^org\\.keepassxc\\.KeePassXC$";} - {app-id = "^org\\.gnome\\.World\\.Secrets$";} - {app-id = "^1Password$";} - {app-id = "^thunderbird$";} - {app-id = "^signal$";} - {app-id = "^vesktop$";} - {app-id = "^slack$";} - ]; - block-out-from = "screen-capture"; - } - # Rounded corners rule (example from KDL comments) - { - # No matches means apply to all windows - geometry-corner-radius = { - top-left = 12.0; - top-right = 12.0; - bottom-left = 12.0; - bottom-right = 12.0; - }; - clip-to-geometry = true; - } - # Window cast target rule - { - matches = [{is-window-cast-target = true;}]; - focus-ring = { - active = mkColor colors.red.hex; - inactive = mkColor (lerpColor colors.red.hex colors.base.hex 0.5); - }; - shadow = { - # Only color is specified in KDL rule - color = "#7d0d2d70"; - }; - tab-indicator = { - active = mkColor colors.red.hex; - inactive = mkColor (lerpColor colors.red.hex colors.base.hex 0.5); - }; - } - - # fix steam popups holy fuck they're annoying - { - matches = [ - {app-id = "^steam$";} - ]; - - excludes = [{title = "^Steam$";}]; - - open-floating = true; - - open-focused = false; - - default-floating-position = { - relative-to = "bottom-right"; - x = 16; - y = 16; - }; - } - { - matches = [ - { - app-id = "^cyberpunk2077.exe$"; - } - { - app-id = "^Overwatch2.exe$"; - } - ]; - - variable-refresh-rate = true; - } - { - matches = [ - { - at-startup = true; - app-id = "^zen$"; - } - ]; - - open-maximized = true; - - open-on-workspace = "browser"; - } - { - matches = [ - { - at-startup = true; - app-id = "^spotify$"; - } - { - at-startup = true; - app-id = "^vesktop$"; - } - ]; - - open-on-workspace = "chat"; - } - { - matches = [ - { - at-startup = true; - app-id = "^Slack$"; - } - { - at-startup = true; - app-id = "^thunderbird$"; - } - ]; - - open-on-workspace = "work"; - } - ]; - - workspaces."01-browser" = { - name = "browser"; - }; - workspaces."02-code" = { - name = "code"; - }; - workspaces."03-chat" = { - name = "chat"; - }; - workspaces."04-work" = { - name = "work"; - }; - - # Keybindings - binds = - { - "Mod+Shift+Slash" = {action = actions.show-hotkey-overlay;}; - - "Mod+Return" = {action = actions.spawn "kitty";}; - "Mod+D" = {action = actions.spawn "fuzzel";}; - "Super+Alt+L" = {action = actions.spawn "swaylock";}; - # "Mod+T" = { action = actions.spawn "bash" "-c" "notify-send hello && exec alacritty"; }; - - # "Mod+S" = {action = actions.set-dynamic-cast-window;}; - # - # "Mod+Shift+S" = {action = actions.set-dynamic-cast-monitor;}; - # - # "Mod+Z" = {action = actions.clear-dynamic-cast-target;}; - - "XF86AudioRaiseVolume" = { - allow-when-locked = true; - action = actions.spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+"; - }; - "XF86AudioLowerVolume" = { - allow-when-locked = true; - action = actions.spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-"; - }; - "XF86AudioMute" = { - allow-when-locked = true; - action = actions.spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; - }; - "XF86AudioMicMute" = { - allow-when-locked = true; - action = - actions.spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; - }; - - "Mod+Q" = {action = actions.close-window;}; - - "Mod+Left" = {action = actions.focus-column-left;}; - "Mod+Down" = {action = actions.focus-window-down;}; - "Mod+Up" = {action = actions.focus-window-up;}; - "Mod+Right" = {action = actions.focus-column-right;}; - "Mod+H" = {action = actions.focus-column-left;}; - "Mod+J" = {action = actions.focus-window-down;}; - "Mod+K" = {action = actions.focus-window-up;}; - "Mod+L" = {action = actions.focus-column-right;}; - - "Mod+Ctrl+Left" = {action = actions.move-column-left;}; - "Mod+Ctrl+Down" = {action = actions.move-window-down;}; - "Mod+Ctrl+Up" = {action = actions.move-window-up;}; - "Mod+Ctrl+Right" = {action = actions.move-column-right;}; - "Mod+Ctrl+H" = {action = actions.move-column-left;}; - "Mod+Ctrl+J" = {action = actions.move-window-down;}; - "Mod+Ctrl+K" = {action = actions.move-window-up;}; - "Mod+Ctrl+L" = {action = actions.move-column-right;}; - - # Alternative commands (commented out in KDL) - # "Mod+J" = { action = actions.focus-window-or-workspace-down; }; - # "Mod+K" = { action = actions.focus-window-or-workspace-up; }; - # "Mod+Ctrl+J" = { action = actions.move-window-down-or-to-workspace-down; }; - # "Mod+Ctrl+K" = { action = actions.move-window-up-or-to-workspace-up; }; - - "Mod+Home" = {action = actions.focus-column-first;}; - "Mod+End" = {action = actions.focus-column-last;}; - "Mod+Ctrl+Home" = {action = actions.move-column-to-first;}; - "Mod+Ctrl+End" = {action = actions.move-column-to-last;}; - - "Mod+Shift+Left" = {action = actions.focus-monitor-left;}; - "Mod+Shift+Down" = {action = actions.focus-monitor-down;}; - "Mod+Shift+Up" = {action = actions.focus-monitor-up;}; - "Mod+Shift+Right" = {action = actions.focus-monitor-right;}; - "Mod+Shift+H" = {action = actions.focus-monitor-left;}; - "Mod+Shift+J" = {action = actions.focus-workspace-down;}; - "Mod+Shift+K" = {action = actions.focus-workspace-up;}; - "Mod+Shift+L" = {action = actions.focus-monitor-right;}; - - "Mod+Ctrl+Shift+F" = {action = actions.toggle-windowed-fullscreen;}; - - "Mod+Shift+Ctrl+Left" = {action = actions.move-column-to-monitor-left;}; - "Mod+Shift+Ctrl+Down" = {action = actions.move-column-to-monitor-down;}; - "Mod+Shift+Ctrl+Up" = {action = actions.move-column-to-monitor-up;}; - "Mod+Shift+Ctrl+Right" = {action = actions.move-column-to-monitor-right;}; - "Mod+Shift+Ctrl+H" = {action = actions.move-column-to-monitor-left;}; - "Mod+Shift+Ctrl+J" = {action = actions.move-column-to-monitor-down;}; - "Mod+Shift+Ctrl+K" = {action = actions.move-column-to-monitor-up;}; - "Mod+Shift+Ctrl+L" = {action = actions.move-column-to-monitor-right;}; - - "Mod+Page_Down" = {action = actions.focus-workspace-down;}; - "Mod+Page_Up" = {action = actions.focus-workspace-up;}; - "Mod+U" = {action = actions.focus-workspace-down;}; - "Mod+I" = {action = actions.focus-workspace-up;}; - "Mod+Ctrl+Page_Down" = {action = actions.move-column-to-workspace-down;}; - "Mod+Ctrl+Page_Up" = {action = actions.move-column-to-workspace-up;}; - "Mod+Ctrl+U" = {action = actions.move-column-to-workspace-down;}; - "Mod+Ctrl+I" = {action = actions.move-column-to-workspace-up;}; - - "Mod+Shift+Page_Down" = {action = actions.move-workspace-down;}; - "Mod+Shift+Page_Up" = {action = actions.move-workspace-up;}; - "Mod+Shift+U" = {action = actions.move-workspace-down;}; - "Mod+Shift+I" = {action = actions.move-workspace-up;}; - - "Mod+WheelScrollDown" = { - cooldown-ms = 150; - action = actions.focus-workspace-down; - }; - "Mod+WheelScrollUp" = { - cooldown-ms = 150; - action = actions.focus-workspace-up; - }; - "Mod+Ctrl+WheelScrollDown" = { - cooldown-ms = 150; - action = actions.move-column-to-workspace-down; - }; - "Mod+Ctrl+WheelScrollUp" = { - cooldown-ms = 150; - action = actions.move-column-to-workspace-up; - }; - - "Mod+WheelScrollRight" = {action = actions.focus-column-right;}; - "Mod+WheelScrollLeft" = {action = actions.focus-column-left;}; - "Mod+Ctrl+WheelScrollRight" = {action = actions.move-column-right;}; - "Mod+Ctrl+WheelScrollLeft" = {action = actions.move-column-left;}; - - "Mod+Shift+WheelScrollDown" = {action = actions.focus-column-right;}; - "Mod+Shift+WheelScrollUp" = {action = actions.focus-column-left;}; - "Mod+Ctrl+Shift+WheelScrollDown" = {action = actions.move-column-right;}; - "Mod+Ctrl+Shift+WheelScrollUp" = {action = actions.move-column-left;}; - - "Mod+Comma" = {action = actions.consume-window-into-column;}; - "Mod+Period" = {action = actions.expel-window-from-column;}; - - "Mod+BracketLeft" = {action = actions.consume-or-expel-window-left;}; - "Mod+BracketRight" = {action = actions.consume-or-expel-window-right;}; - - "Mod+R" = {action = actions.switch-preset-column-width;}; - "Mod+Shift+R" = {action = actions.switch-preset-window-height;}; - "Mod+Ctrl+R" = {action = actions.reset-window-height;}; - "Mod+F" = {action = actions.maximize-column;}; - "Mod+Shift+F" = {action = actions.fullscreen-window;}; - "Mod+C" = {action = actions.center-column;}; - "Mod+Ctrl+F" = {action = actions.expand-column-to-available-width;}; - - "Mod+V" = {action = actions.toggle-window-floating;}; - - "Mod+Minus" = {action = actions.set-column-width "-10%";}; - "Mod+Equal" = {action = actions.set-column-width "+10%";}; - - "Mod+Shift+Minus" = {action = actions.set-window-height "-10%";}; - "Mod+Shift+Equal" = {action = actions.set-window-height "+10%";}; - - "Print" = {action = actions.screenshot {};}; # Empty attrset for default args - "Mod+Shift+E" = {action = actions.quit {};}; # Default: no skip-confirmation - "Ctrl+Alt+Delete" = {action = actions.quit {};}; - - "Mod+Shift+P" = {action = actions.power-off-monitors;}; - } - // lib.attrsets.listToAttrs (builtins.concatMap (i: - with actions; [ - { - name = "Mod+${toString i}"; - value.action = focus-workspace i; - } - # FIXME: use this action directly untril sodiboo/niri-flake#1018 is fixed. - { - name = "Mod+Shift+${toString i}"; - value.action = spawn [niri "msg" "action" "move-column-to-workspace" (toString i)]; - } - ]) (lib.range 1 9)); - }; + # settings = { + # # Input device configuration + # input = { + # keyboard = { + # # xkb settings are empty in KDL, using defaults/empty strings + # xkb = { + # rules = ""; + # model = ""; + # layout = ""; + # variant = ""; + # options = null; # Or "" if you prefer explicit empty + # }; + # + # repeat-rate = 40; + # }; + # + # touchpad = { + # enable = true; # Not explicitly 'off' in KDL + # tap = true; + # dwt = false; # Commented out in KDL + # dwtp = false; # Commented out in KDL + # natural-scroll = true; + # # accel-speed = 0.2; # Commented out + # # accel-profile = "flat"; # Commented out + # # scroll-method = "two-finger"; # Commented out + # disabled-on-external-mouse = true; + # }; + # + # mouse = { + # enable = true; # Not explicitly 'off' in KDL + # natural-scroll = false; # Commented out in KDL + # accel-speed = 0.2; + # accel-profile = "flat"; + # # scroll-method = "no-scroll"; # Commented out + # }; + # + # trackpoint = { + # enable = true; # Not explicitly 'off' in KDL + # natural-scroll = false; # Commented out + # # accel-speed = 0.2; # Commented out + # # accel-profile = "flat"; # Commented out + # # scroll-method = "on-button-down"; # Commented out + # # scroll-button = 273; # Commented out + # middle-emulation = false; # Commented out + # }; + # + # warp-mouse-to-focus = true; + # + # focus-follows-mouse = { + # enable = false; # Commented out in KDL + # # max-scroll-amount = "0%"; # Only relevant if enabled + # }; + # }; + # + # # Output configuration + # outputs."DP-1" = { + # enable = true; # Not explicitly 'off' + # mode = { + # width = 2560; + # height = 1440; + # refresh = 239.972; + # }; + # variable-refresh-rate = "on-demand"; + # scale = 1; + # transform = { + # # "normal" + # rotation = 0; + # flipped = false; + # }; + # position = { + # x = 2560; + # y = 0; + # }; + # }; + # + # outputs."DP-3" = { + # enable = true; # Not explicitly 'off' + # mode = { + # width = 3840; + # height = 2160; + # refresh = 240.0; + # }; + # variable-refresh-rate = "on-demand"; + # focus-at-startup = true; + # scale = 1.5; + # transform = { + # # "normal" + # rotation = 0; + # flipped = false; + # }; + # position = { + # x = 0; + # y = 0; + # }; + # }; + # + # # Environment variables + # environment = { + # DISPLAY = ":0"; # for applications using xwayland-satillite + # }; + # + # hotkey-overlay = { + # skip-at-startup = true; + # }; + # + # # Layout settings + # layout = { + # gaps = 16; + # center-focused-column = "never"; + # + # preset-column-widths = [ + # {proportion = 0.33333;} + # {proportion = 0.5;} + # {proportion = 0.66667;} + # # { fixed = 1920; } # Example if needed + # ]; + # + # # preset-window-heights = []; # Empty in KDL + # + # default-column-width = {proportion = 0.5;}; + # # default-column-width = {}; # Alternative from KDL comments + # + # blur = { + # enable = true; + # passes = 4; + # radius = 4.0; + # noise = 0.1; + # }; + # + # focus-ring = { + # enable = true; # Not explicitly 'off' + # width = 4; + # active = mkGradient colors.blue.hex colors.sky.hex {angle = 45;}; + # # active = mkColor "#7fc8ff"; # Alternative solid color from KDL + # inactive = mkGradient colors.surface1.hex colors.surface2.hex { + # angle = 45; + # relative-to = "workspace-view"; + # }; + # # inactive = mkColor "#505050"; # Alternative solid color from KDL + # }; + # + # border = { + # enable = true; # Explicitly 'off' in KDL + # width = 0; + # active = mkColor colors.blue.hex; + # inactive = mkColor colors.base.hex; + # # active-gradient = ... # Commented out in KDL + # # inactive-gradient = ... # Commented out in KDL + # }; + # + # struts = { + # # left = 64; # Commented out + # # right = 64; # Commented out + # # top = 64; # Commented out + # # bottom = 64; # Commented out + # }; + # }; + # + # # Spawn processes at startup + # spawn-at-startup = [ + # {command = ["xwayland-satellite"];} + # {command = ["${pkgs.writeShellScriptBin "thunderbird-delayed" ''sleep 5; thunderbird''}/bin/thunderbird-delayed"];} + # {command = ["${pkgs.writeShellScriptBin "zen-delayed" ''sleep 5; zen''}/bin/zen-delayed"];} + # {command = ["vesktop"];} + # {command = ["cider-2"];} + # + # {command = ["${spawnSlackOnWeekday}/bin/spawn-slack-on-weekday"];} + # ]; + # + # # Prefer server-side decorations + # prefer-no-csd = true; + # + # # Screenshot path + # screenshot-path = "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"; + # # screenshot-path = null; # Alternative from KDL comments + # + # # Animation settings + # animations = { + # enable = true; # Not explicitly 'off' + # # slowdown = 3.0; # Commented out + # # Individual animation settings can be added here if needed + # }; + # + # layer-rules = [ + # { + # matches = [ + # {namespace = "notifications$";} + # ]; + # + # block-out-from = "screen-capture"; + # } + # ]; + # + # # Window rules + # window-rules = [ + # # Password manager rule (example from KDL comments) + # { + # matches = [ + # {app-id = "^org\\.keepassxc\\.KeePassXC$";} + # {app-id = "^org\\.gnome\\.World\\.Secrets$";} + # {app-id = "^1Password$";} + # {app-id = "^thunderbird$";} + # {app-id = "^signal$";} + # {app-id = "^vesktop$";} + # {app-id = "^slack$";} + # ]; + # block-out-from = "screen-capture"; + # } + # # Rounded corners rule (example from KDL comments) + # { + # # No matches means apply to all windows + # geometry-corner-radius = { + # top-left = 12.0; + # top-right = 12.0; + # bottom-left = 12.0; + # bottom-right = 12.0; + # }; + # clip-to-geometry = true; + # } + # # Window cast target rule + # { + # matches = [{is-window-cast-target = true;}]; + # focus-ring = { + # active = mkColor colors.red.hex; + # inactive = mkColor (lerpColor colors.red.hex colors.base.hex 0.5); + # }; + # shadow = { + # # Only color is specified in KDL rule + # color = "#7d0d2d70"; + # }; + # tab-indicator = { + # active = mkColor colors.red.hex; + # inactive = mkColor (lerpColor colors.red.hex colors.base.hex 0.5); + # }; + # } + # + # # fix steam popups holy fuck they're annoying + # { + # matches = [ + # {app-id = "^steam$";} + # ]; + # + # excludes = [{title = "^Steam$";}]; + # + # open-floating = true; + # + # open-focused = false; + # + # default-floating-position = { + # relative-to = "bottom-right"; + # x = 16; + # y = 16; + # }; + # } + # { + # matches = [ + # { + # app-id = "^cyberpunk2077.exe$"; + # } + # { + # app-id = "^Overwatch2.exe$"; + # } + # ]; + # + # variable-refresh-rate = true; + # } + # { + # matches = [ + # { + # at-startup = true; + # app-id = "^zen$"; + # } + # ]; + # + # open-maximized = true; + # + # open-on-workspace = "browser"; + # } + # { + # matches = [ + # { + # at-startup = true; + # app-id = "^spotify$"; + # } + # { + # at-startup = true; + # app-id = "^vesktop$"; + # } + # ]; + # + # open-on-workspace = "chat"; + # } + # { + # matches = [ + # { + # at-startup = true; + # app-id = "^Slack$"; + # } + # { + # at-startup = true; + # app-id = "^thunderbird$"; + # } + # ]; + # + # open-on-workspace = "work"; + # } + # ]; + # + # workspaces."01-browser" = { + # name = "browser"; + # }; + # workspaces."02-code" = { + # name = "code"; + # }; + # workspaces."03-chat" = { + # name = "chat"; + # }; + # workspaces."04-work" = { + # name = "work"; + # }; + # + # # Keybindings + # binds = + # { + # "Mod+Shift+Slash" = {action = actions.show-hotkey-overlay;}; + # + # "Mod+Return" = {action = actions.spawn "kitty";}; + # "Mod+D" = {action = actions.spawn "fuzzel";}; + # "Super+Alt+L" = {action = actions.spawn "swaylock";}; + # # "Mod+T" = { action = actions.spawn "bash" "-c" "notify-send hello && exec alacritty"; }; + # + # # "Mod+S" = {action = actions.set-dynamic-cast-window;}; + # # + # # "Mod+Shift+S" = {action = actions.set-dynamic-cast-monitor;}; + # # + # # "Mod+Z" = {action = actions.clear-dynamic-cast-target;}; + # + # "XF86AudioRaiseVolume" = { + # allow-when-locked = true; + # action = actions.spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+"; + # }; + # "XF86AudioLowerVolume" = { + # allow-when-locked = true; + # action = actions.spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-"; + # }; + # "XF86AudioMute" = { + # allow-when-locked = true; + # action = actions.spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; + # }; + # "XF86AudioMicMute" = { + # allow-when-locked = true; + # action = + # actions.spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; + # }; + # + # "Mod+Q" = {action = actions.close-window;}; + # + # "Mod+Left" = {action = actions.focus-column-left;}; + # "Mod+Down" = {action = actions.focus-window-down;}; + # "Mod+Up" = {action = actions.focus-window-up;}; + # "Mod+Right" = {action = actions.focus-column-right;}; + # "Mod+H" = {action = actions.focus-column-left;}; + # "Mod+J" = {action = actions.focus-window-down;}; + # "Mod+K" = {action = actions.focus-window-up;}; + # "Mod+L" = {action = actions.focus-column-right;}; + # + # "Mod+Ctrl+Left" = {action = actions.move-column-left;}; + # "Mod+Ctrl+Down" = {action = actions.move-window-down;}; + # "Mod+Ctrl+Up" = {action = actions.move-window-up;}; + # "Mod+Ctrl+Right" = {action = actions.move-column-right;}; + # "Mod+Ctrl+H" = {action = actions.move-column-left;}; + # "Mod+Ctrl+J" = {action = actions.move-window-down;}; + # "Mod+Ctrl+K" = {action = actions.move-window-up;}; + # "Mod+Ctrl+L" = {action = actions.move-column-right;}; + # + # # Alternative commands (commented out in KDL) + # # "Mod+J" = { action = actions.focus-window-or-workspace-down; }; + # # "Mod+K" = { action = actions.focus-window-or-workspace-up; }; + # # "Mod+Ctrl+J" = { action = actions.move-window-down-or-to-workspace-down; }; + # # "Mod+Ctrl+K" = { action = actions.move-window-up-or-to-workspace-up; }; + # + # "Mod+Home" = {action = actions.focus-column-first;}; + # "Mod+End" = {action = actions.focus-column-last;}; + # "Mod+Ctrl+Home" = {action = actions.move-column-to-first;}; + # "Mod+Ctrl+End" = {action = actions.move-column-to-last;}; + # + # "Mod+Shift+Left" = {action = actions.focus-monitor-left;}; + # "Mod+Shift+Down" = {action = actions.focus-monitor-down;}; + # "Mod+Shift+Up" = {action = actions.focus-monitor-up;}; + # "Mod+Shift+Right" = {action = actions.focus-monitor-right;}; + # "Mod+Shift+H" = {action = actions.focus-monitor-left;}; + # "Mod+Shift+J" = {action = actions.focus-workspace-down;}; + # "Mod+Shift+K" = {action = actions.focus-workspace-up;}; + # "Mod+Shift+L" = {action = actions.focus-monitor-right;}; + # + # "Mod+Ctrl+Shift+F" = {action = actions.toggle-windowed-fullscreen;}; + # + # "Mod+Shift+Ctrl+Left" = {action = actions.move-column-to-monitor-left;}; + # "Mod+Shift+Ctrl+Down" = {action = actions.move-column-to-monitor-down;}; + # "Mod+Shift+Ctrl+Up" = {action = actions.move-column-to-monitor-up;}; + # "Mod+Shift+Ctrl+Right" = {action = actions.move-column-to-monitor-right;}; + # "Mod+Shift+Ctrl+H" = {action = actions.move-column-to-monitor-left;}; + # "Mod+Shift+Ctrl+J" = {action = actions.move-column-to-monitor-down;}; + # "Mod+Shift+Ctrl+K" = {action = actions.move-column-to-monitor-up;}; + # "Mod+Shift+Ctrl+L" = {action = actions.move-column-to-monitor-right;}; + # + # "Mod+Page_Down" = {action = actions.focus-workspace-down;}; + # "Mod+Page_Up" = {action = actions.focus-workspace-up;}; + # "Mod+U" = {action = actions.focus-workspace-down;}; + # "Mod+I" = {action = actions.focus-workspace-up;}; + # "Mod+Ctrl+Page_Down" = {action = actions.move-column-to-workspace-down;}; + # "Mod+Ctrl+Page_Up" = {action = actions.move-column-to-workspace-up;}; + # "Mod+Ctrl+U" = {action = actions.move-column-to-workspace-down;}; + # "Mod+Ctrl+I" = {action = actions.move-column-to-workspace-up;}; + # + # "Mod+Shift+Page_Down" = {action = actions.move-workspace-down;}; + # "Mod+Shift+Page_Up" = {action = actions.move-workspace-up;}; + # "Mod+Shift+U" = {action = actions.move-workspace-down;}; + # "Mod+Shift+I" = {action = actions.move-workspace-up;}; + # + # "Mod+WheelScrollDown" = { + # cooldown-ms = 150; + # action = actions.focus-workspace-down; + # }; + # "Mod+WheelScrollUp" = { + # cooldown-ms = 150; + # action = actions.focus-workspace-up; + # }; + # "Mod+Ctrl+WheelScrollDown" = { + # cooldown-ms = 150; + # action = actions.move-column-to-workspace-down; + # }; + # "Mod+Ctrl+WheelScrollUp" = { + # cooldown-ms = 150; + # action = actions.move-column-to-workspace-up; + # }; + # + # "Mod+WheelScrollRight" = {action = actions.focus-column-right;}; + # "Mod+WheelScrollLeft" = {action = actions.focus-column-left;}; + # "Mod+Ctrl+WheelScrollRight" = {action = actions.move-column-right;}; + # "Mod+Ctrl+WheelScrollLeft" = {action = actions.move-column-left;}; + # + # "Mod+Shift+WheelScrollDown" = {action = actions.focus-column-right;}; + # "Mod+Shift+WheelScrollUp" = {action = actions.focus-column-left;}; + # "Mod+Ctrl+Shift+WheelScrollDown" = {action = actions.move-column-right;}; + # "Mod+Ctrl+Shift+WheelScrollUp" = {action = actions.move-column-left;}; + # + # "Mod+Comma" = {action = actions.consume-window-into-column;}; + # "Mod+Period" = {action = actions.expel-window-from-column;}; + # + # "Mod+BracketLeft" = {action = actions.consume-or-expel-window-left;}; + # "Mod+BracketRight" = {action = actions.consume-or-expel-window-right;}; + # + # "Mod+R" = {action = actions.switch-preset-column-width;}; + # "Mod+Shift+R" = {action = actions.switch-preset-window-height;}; + # "Mod+Ctrl+R" = {action = actions.reset-window-height;}; + # "Mod+F" = {action = actions.maximize-column;}; + # "Mod+Shift+F" = {action = actions.fullscreen-window;}; + # "Mod+C" = {action = actions.center-column;}; + # "Mod+Ctrl+F" = {action = actions.expand-column-to-available-width;}; + # + # "Mod+V" = {action = actions.toggle-window-floating;}; + # + # "Mod+Minus" = {action = actions.set-column-width "-10%";}; + # "Mod+Equal" = {action = actions.set-column-width "+10%";}; + # + # "Mod+Shift+Minus" = {action = actions.set-window-height "-10%";}; + # "Mod+Shift+Equal" = {action = actions.set-window-height "+10%";}; + # + # "Print" = {action = actions.screenshot {};}; # Empty attrset for default args + # "Mod+Shift+E" = {action = actions.quit {};}; # Default: no skip-confirmation + # "Ctrl+Alt+Delete" = {action = actions.quit {};}; + # + # "Mod+Shift+P" = {action = actions.power-off-monitors;}; + # } + # // lib.attrsets.listToAttrs (builtins.concatMap (i: + # with actions; [ + # { + # name = "Mod+${toString i}"; + # value.action = focus-workspace i; + # } + # # FIXME: use this action directly untril sodiboo/niri-flake#1018 is fixed. + # { + # name = "Mod+Shift+${toString i}"; + # value.action = spawn [niri "msg" "action" "move-column-to-workspace" (toString i)]; + # } + # ]) (lib.range 1 9)); + # }; }; services.wallpaper.enable = true; diff --git a/modules/nixos/hardware/nvidia/default.nix b/modules/nixos/hardware/nvidia/default.nix index ecb5651..3b362b5 100644 --- a/modules/nixos/hardware/nvidia/default.nix +++ b/modules/nixos/hardware/nvidia/default.nix @@ -43,7 +43,14 @@ in { nvidiaSettings = false; # Optionally, you may need to select the appropriate driver version for your specific GPU. - package = config.boot.kernelPackages.nvidiaPackages.stable; + package = config.boot.kernelPackages.nvidiaPackages.mkDriver { + version = "580.82.07"; + sha256_64bit = "sha256-Bh5I4R/lUiMglYEdCxzqm3GLolQNYFB0/yJ/zgYoeYw="; + sha256_aarch64 = "sha256-or3//aV4TQcPDgcLxFB75H/kB8n+3RzwTO1C2ZbJAJI="; + openSha256 = "sha256-8/7ZrcwBMgrBtxebYtCcH5A51u3lAxXTCY00LElZz08="; + settingsSha256 = "sha256-lx1WZHsW7eKFXvi03dAML6BoC5glEn63Tuiz3T867nY="; + persistencedSha256 = "sha256-1JCk2T3H5NNFQum0gA9cnio31jc0pGvfGIn2KkAz9kA="; + }; }; boot.initrd.kernelModules = ["nvidia"]; diff --git a/modules/nixos/protocols/wayland/default.nix b/modules/nixos/protocols/wayland/default.nix index 380f6e8..f98739c 100644 --- a/modules/nixos/protocols/wayland/default.nix +++ b/modules/nixos/protocols/wayland/default.nix @@ -61,9 +61,7 @@ in { }; programs.niri.enable = true; - programs.niri.package = inputs.niri-src.packages.${pkgs.system}.niri.overrideAttrs (final: prev: { - patches = prev.patches ++ [../../../../fix-niri-nvidia.patch]; - }); + programs.niri.package = inputs.niri-src.packages.${pkgs.system}.niri; environment = { variables = { diff --git a/systems/x86_64-linux/earth/default.nix b/systems/x86_64-linux/earth/default.nix index 9fdccbf..f7b262b 100644 --- a/systems/x86_64-linux/earth/default.nix +++ b/systems/x86_64-linux/earth/default.nix @@ -153,7 +153,7 @@ # services.scx.scheduler = "scx_rusty"; # services.scx.package = pkgs.scx_git.full; - boot.kernelPackages = pkgs.linuxPackages_cachyos-lto; + boot.kernelPackages = pkgs.linuxPackages_zen; # CachyOS-inspired kernel parameters for better desktop responsiveness and gaming boot.kernelParams = [ "nowatchdog"